LilyPond-Ruby 0.0.2.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1112) hide show
  1. checksums.yaml +4 -4
  2. data/etc/fonts/conf.d/10-hinting-slight.conf +15 -0
  3. data/etc/fonts/conf.d/10-scale-bitmap-fonts.conf +83 -0
  4. data/etc/fonts/conf.d/11-lcdfilter-default.conf +17 -0
  5. data/etc/fonts/conf.d/20-unhint-small-vera.conf +49 -0
  6. data/etc/fonts/conf.d/30-metric-aliases.conf +637 -0
  7. data/etc/fonts/conf.d/40-nonlatin.conf +332 -0
  8. data/etc/fonts/conf.d/45-generic.conf +136 -0
  9. data/etc/fonts/conf.d/45-latin.conf +301 -0
  10. data/etc/fonts/conf.d/48-spacing.conf +16 -0
  11. data/etc/fonts/conf.d/49-sansserif.conf +22 -0
  12. data/etc/fonts/conf.d/50-user.conf +16 -0
  13. data/etc/fonts/conf.d/51-local.conf +7 -0
  14. data/etc/fonts/conf.d/60-generic.conf +64 -0
  15. data/etc/fonts/conf.d/60-latin.conf +88 -0
  16. data/etc/fonts/conf.d/65-fonts-persian.conf +418 -0
  17. data/etc/fonts/conf.d/65-nonlatin.conf +228 -0
  18. data/etc/fonts/conf.d/69-unifont.conf +28 -0
  19. data/etc/fonts/conf.d/80-delicious.conf +19 -0
  20. data/etc/fonts/conf.d/90-synthetic.conf +64 -0
  21. data/etc/fonts/conf.d/README +23 -0
  22. data/etc/fonts/fonts.conf +101 -0
  23. data/etc/relocate/fontconfig.reloc +2 -0
  24. data/etc/relocate/guile.reloc +2 -0
  25. data/etc/relocate/libexec.reloc +1 -0
  26. data/lib/guile/2.2/ccache/ice-9/and-let-star.go +0 -0
  27. data/lib/guile/2.2/ccache/ice-9/arrays.go +0 -0
  28. data/lib/guile/2.2/ccache/ice-9/atomic.go +0 -0
  29. data/lib/guile/2.2/ccache/ice-9/binary-ports.go +0 -0
  30. data/lib/guile/2.2/ccache/ice-9/boot-9.go +0 -0
  31. data/lib/guile/2.2/ccache/ice-9/buffered-input.go +0 -0
  32. data/lib/guile/2.2/ccache/ice-9/calling.go +0 -0
  33. data/lib/guile/2.2/ccache/ice-9/channel.go +0 -0
  34. data/lib/guile/2.2/ccache/ice-9/command-line.go +0 -0
  35. data/lib/guile/2.2/ccache/ice-9/common-list.go +0 -0
  36. data/lib/guile/2.2/ccache/ice-9/control.go +0 -0
  37. data/lib/guile/2.2/ccache/ice-9/curried-definitions.go +0 -0
  38. data/lib/guile/2.2/ccache/ice-9/debug.go +0 -0
  39. data/lib/guile/2.2/ccache/ice-9/deprecated.go +0 -0
  40. data/lib/guile/2.2/ccache/ice-9/documentation.go +0 -0
  41. data/lib/guile/2.2/ccache/ice-9/eval-string.go +0 -0
  42. data/lib/guile/2.2/ccache/ice-9/eval.go +0 -0
  43. data/lib/guile/2.2/ccache/ice-9/expect.go +0 -0
  44. data/lib/guile/2.2/ccache/ice-9/fdes-finalizers.go +0 -0
  45. data/lib/guile/2.2/ccache/ice-9/format.go +0 -0
  46. data/lib/guile/2.2/ccache/ice-9/ftw.go +0 -0
  47. data/lib/guile/2.2/ccache/ice-9/futures.go +0 -0
  48. data/lib/guile/2.2/ccache/ice-9/gap-buffer.go +0 -0
  49. data/lib/guile/2.2/ccache/ice-9/getopt-long.go +0 -0
  50. data/lib/guile/2.2/ccache/ice-9/hash-table.go +0 -0
  51. data/lib/guile/2.2/ccache/ice-9/hcons.go +0 -0
  52. data/lib/guile/2.2/ccache/ice-9/history.go +0 -0
  53. data/lib/guile/2.2/ccache/ice-9/i18n.go +0 -0
  54. data/lib/guile/2.2/ccache/ice-9/iconv.go +0 -0
  55. data/lib/guile/2.2/ccache/ice-9/lineio.go +0 -0
  56. data/lib/guile/2.2/ccache/ice-9/list.go +0 -0
  57. data/lib/guile/2.2/ccache/ice-9/local-eval.go +0 -0
  58. data/lib/guile/2.2/ccache/ice-9/ls.go +0 -0
  59. data/lib/guile/2.2/ccache/ice-9/mapping.go +0 -0
  60. data/lib/guile/2.2/ccache/ice-9/match.go +0 -0
  61. data/lib/guile/2.2/ccache/ice-9/networking.go +0 -0
  62. data/lib/guile/2.2/ccache/ice-9/null.go +0 -0
  63. data/lib/guile/2.2/ccache/ice-9/occam-channel.go +0 -0
  64. data/lib/guile/2.2/ccache/ice-9/optargs.go +0 -0
  65. data/lib/guile/2.2/ccache/ice-9/peg/cache.go +0 -0
  66. data/lib/guile/2.2/ccache/ice-9/peg/codegen.go +0 -0
  67. data/lib/guile/2.2/ccache/ice-9/peg/simplify-tree.go +0 -0
  68. data/lib/guile/2.2/ccache/ice-9/peg/string-peg.go +0 -0
  69. data/lib/guile/2.2/ccache/ice-9/peg/using-parsers.go +0 -0
  70. data/lib/guile/2.2/ccache/ice-9/peg.go +0 -0
  71. data/lib/guile/2.2/ccache/ice-9/poe.go +0 -0
  72. data/lib/guile/2.2/ccache/ice-9/poll.go +0 -0
  73. data/lib/guile/2.2/ccache/ice-9/popen.go +0 -0
  74. data/lib/guile/2.2/ccache/ice-9/ports.go +0 -0
  75. data/lib/guile/2.2/ccache/ice-9/posix.go +0 -0
  76. data/lib/guile/2.2/ccache/ice-9/pretty-print.go +0 -0
  77. data/lib/guile/2.2/ccache/ice-9/psyntax-pp.go +0 -0
  78. data/lib/guile/2.2/ccache/ice-9/q.go +0 -0
  79. data/lib/guile/2.2/ccache/ice-9/r5rs.go +0 -0
  80. data/lib/guile/2.2/ccache/ice-9/rdelim.go +0 -0
  81. data/lib/guile/2.2/ccache/ice-9/receive.go +0 -0
  82. data/lib/guile/2.2/ccache/ice-9/regex.go +0 -0
  83. data/lib/guile/2.2/ccache/ice-9/runq.go +0 -0
  84. data/lib/guile/2.2/ccache/ice-9/rw.go +0 -0
  85. data/lib/guile/2.2/ccache/ice-9/safe-r5rs.go +0 -0
  86. data/lib/guile/2.2/ccache/ice-9/safe.go +0 -0
  87. data/lib/guile/2.2/ccache/ice-9/sandbox.go +0 -0
  88. data/lib/guile/2.2/ccache/ice-9/save-stack.go +0 -0
  89. data/lib/guile/2.2/ccache/ice-9/scm-style-repl.go +0 -0
  90. data/lib/guile/2.2/ccache/ice-9/serialize.go +0 -0
  91. data/lib/guile/2.2/ccache/ice-9/session.go +0 -0
  92. data/lib/guile/2.2/ccache/ice-9/slib.go +0 -0
  93. data/lib/guile/2.2/ccache/ice-9/stack-catch.go +0 -0
  94. data/lib/guile/2.2/ccache/ice-9/streams.go +0 -0
  95. data/lib/guile/2.2/ccache/ice-9/string-fun.go +0 -0
  96. data/lib/guile/2.2/ccache/ice-9/suspendable-ports.go +0 -0
  97. data/lib/guile/2.2/ccache/ice-9/syncase.go +0 -0
  98. data/lib/guile/2.2/ccache/ice-9/textual-ports.go +0 -0
  99. data/lib/guile/2.2/ccache/ice-9/threads.go +0 -0
  100. data/lib/guile/2.2/ccache/ice-9/time.go +0 -0
  101. data/lib/guile/2.2/ccache/ice-9/top-repl.go +0 -0
  102. data/lib/guile/2.2/ccache/ice-9/unicode.go +0 -0
  103. data/lib/guile/2.2/ccache/ice-9/vlist.go +0 -0
  104. data/lib/guile/2.2/ccache/ice-9/weak-vector.go +0 -0
  105. data/lib/guile/2.2/ccache/language/brainfuck/compile-scheme.go +0 -0
  106. data/lib/guile/2.2/ccache/language/brainfuck/compile-tree-il.go +0 -0
  107. data/lib/guile/2.2/ccache/language/brainfuck/parse.go +0 -0
  108. data/lib/guile/2.2/ccache/language/brainfuck/spec.go +0 -0
  109. data/lib/guile/2.2/ccache/language/bytecode/spec.go +0 -0
  110. data/lib/guile/2.2/ccache/language/bytecode.go +0 -0
  111. data/lib/guile/2.2/ccache/language/cps/closure-conversion.go +0 -0
  112. data/lib/guile/2.2/ccache/language/cps/compile-bytecode.go +0 -0
  113. data/lib/guile/2.2/ccache/language/cps/constructors.go +0 -0
  114. data/lib/guile/2.2/ccache/language/cps/contification.go +0 -0
  115. data/lib/guile/2.2/ccache/language/cps/cse.go +0 -0
  116. data/lib/guile/2.2/ccache/language/cps/dce.go +0 -0
  117. data/lib/guile/2.2/ccache/language/cps/effects-analysis.go +0 -0
  118. data/lib/guile/2.2/ccache/language/cps/elide-values.go +0 -0
  119. data/lib/guile/2.2/ccache/language/cps/handle-interrupts.go +0 -0
  120. data/lib/guile/2.2/ccache/language/cps/intmap.go +0 -0
  121. data/lib/guile/2.2/ccache/language/cps/intset.go +0 -0
  122. data/lib/guile/2.2/ccache/language/cps/licm.go +0 -0
  123. data/lib/guile/2.2/ccache/language/cps/optimize.go +0 -0
  124. data/lib/guile/2.2/ccache/language/cps/peel-loops.go +0 -0
  125. data/lib/guile/2.2/ccache/language/cps/primitives.go +0 -0
  126. data/lib/guile/2.2/ccache/language/cps/prune-bailouts.go +0 -0
  127. data/lib/guile/2.2/ccache/language/cps/prune-top-level-scopes.go +0 -0
  128. data/lib/guile/2.2/ccache/language/cps/reify-primitives.go +0 -0
  129. data/lib/guile/2.2/ccache/language/cps/renumber.go +0 -0
  130. data/lib/guile/2.2/ccache/language/cps/rotate-loops.go +0 -0
  131. data/lib/guile/2.2/ccache/language/cps/self-references.go +0 -0
  132. data/lib/guile/2.2/ccache/language/cps/simplify.go +0 -0
  133. data/lib/guile/2.2/ccache/language/cps/slot-allocation.go +0 -0
  134. data/lib/guile/2.2/ccache/language/cps/spec.go +0 -0
  135. data/lib/guile/2.2/ccache/language/cps/specialize-numbers.go +0 -0
  136. data/lib/guile/2.2/ccache/language/cps/specialize-primcalls.go +0 -0
  137. data/lib/guile/2.2/ccache/language/cps/split-rec.go +0 -0
  138. data/lib/guile/2.2/ccache/language/cps/type-checks.go +0 -0
  139. data/lib/guile/2.2/ccache/language/cps/type-fold.go +0 -0
  140. data/lib/guile/2.2/ccache/language/cps/types.go +0 -0
  141. data/lib/guile/2.2/ccache/language/cps/utils.go +0 -0
  142. data/lib/guile/2.2/ccache/language/cps/verify.go +0 -0
  143. data/lib/guile/2.2/ccache/language/cps/with-cps.go +0 -0
  144. data/lib/guile/2.2/ccache/language/cps.go +0 -0
  145. data/lib/guile/2.2/ccache/language/ecmascript/array.go +0 -0
  146. data/lib/guile/2.2/ccache/language/ecmascript/base.go +0 -0
  147. data/lib/guile/2.2/ccache/language/ecmascript/compile-tree-il.go +0 -0
  148. data/lib/guile/2.2/ccache/language/ecmascript/function.go +0 -0
  149. data/lib/guile/2.2/ccache/language/ecmascript/impl.go +0 -0
  150. data/lib/guile/2.2/ccache/language/ecmascript/parse.go +0 -0
  151. data/lib/guile/2.2/ccache/language/ecmascript/spec.go +0 -0
  152. data/lib/guile/2.2/ccache/language/ecmascript/tokenize.go +0 -0
  153. data/lib/guile/2.2/ccache/language/elisp/bindings.go +0 -0
  154. data/lib/guile/2.2/ccache/language/elisp/boot.go +0 -0
  155. data/lib/guile/2.2/ccache/language/elisp/compile-tree-il.go +0 -0
  156. data/lib/guile/2.2/ccache/language/elisp/falias.go +0 -0
  157. data/lib/guile/2.2/ccache/language/elisp/lexer.go +0 -0
  158. data/lib/guile/2.2/ccache/language/elisp/parser.go +0 -0
  159. data/lib/guile/2.2/ccache/language/elisp/runtime/function-slot.go +0 -0
  160. data/lib/guile/2.2/ccache/language/elisp/runtime/value-slot.go +0 -0
  161. data/lib/guile/2.2/ccache/language/elisp/runtime.go +0 -0
  162. data/lib/guile/2.2/ccache/language/elisp/spec.go +0 -0
  163. data/lib/guile/2.2/ccache/language/scheme/compile-tree-il.go +0 -0
  164. data/lib/guile/2.2/ccache/language/scheme/decompile-tree-il.go +0 -0
  165. data/lib/guile/2.2/ccache/language/scheme/spec.go +0 -0
  166. data/lib/guile/2.2/ccache/language/tree-il/analyze.go +0 -0
  167. data/lib/guile/2.2/ccache/language/tree-il/canonicalize.go +0 -0
  168. data/lib/guile/2.2/ccache/language/tree-il/compile-cps.go +0 -0
  169. data/lib/guile/2.2/ccache/language/tree-il/debug.go +0 -0
  170. data/lib/guile/2.2/ccache/language/tree-il/effects.go +0 -0
  171. data/lib/guile/2.2/ccache/language/tree-il/fix-letrec.go +0 -0
  172. data/lib/guile/2.2/ccache/language/tree-il/optimize.go +0 -0
  173. data/lib/guile/2.2/ccache/language/tree-il/peval.go +0 -0
  174. data/lib/guile/2.2/ccache/language/tree-il/primitives.go +0 -0
  175. data/lib/guile/2.2/ccache/language/tree-il/spec.go +0 -0
  176. data/lib/guile/2.2/ccache/language/tree-il.go +0 -0
  177. data/lib/guile/2.2/ccache/language/value/spec.go +0 -0
  178. data/lib/guile/2.2/ccache/oop/goops/accessors.go +0 -0
  179. data/lib/guile/2.2/ccache/oop/goops/active-slot.go +0 -0
  180. data/lib/guile/2.2/ccache/oop/goops/composite-slot.go +0 -0
  181. data/lib/guile/2.2/ccache/oop/goops/describe.go +0 -0
  182. data/lib/guile/2.2/ccache/oop/goops/internal.go +0 -0
  183. data/lib/guile/2.2/ccache/oop/goops/save.go +0 -0
  184. data/lib/guile/2.2/ccache/oop/goops/simple.go +0 -0
  185. data/lib/guile/2.2/ccache/oop/goops/stklos.go +0 -0
  186. data/lib/guile/2.2/ccache/oop/goops.go +0 -0
  187. data/lib/guile/2.2/ccache/rnrs/arithmetic/bitwise.go +0 -0
  188. data/lib/guile/2.2/ccache/rnrs/arithmetic/fixnums.go +0 -0
  189. data/lib/guile/2.2/ccache/rnrs/arithmetic/flonums.go +0 -0
  190. data/lib/guile/2.2/ccache/rnrs/base.go +0 -0
  191. data/lib/guile/2.2/ccache/rnrs/bytevectors.go +0 -0
  192. data/lib/guile/2.2/ccache/rnrs/conditions.go +0 -0
  193. data/lib/guile/2.2/ccache/rnrs/control.go +0 -0
  194. data/lib/guile/2.2/ccache/rnrs/enums.go +0 -0
  195. data/lib/guile/2.2/ccache/rnrs/eval.go +0 -0
  196. data/lib/guile/2.2/ccache/rnrs/exceptions.go +0 -0
  197. data/lib/guile/2.2/ccache/rnrs/files.go +0 -0
  198. data/lib/guile/2.2/ccache/rnrs/hashtables.go +0 -0
  199. data/lib/guile/2.2/ccache/rnrs/io/ports.go +0 -0
  200. data/lib/guile/2.2/ccache/rnrs/io/simple.go +0 -0
  201. data/lib/guile/2.2/ccache/rnrs/lists.go +0 -0
  202. data/lib/guile/2.2/ccache/rnrs/mutable-pairs.go +0 -0
  203. data/lib/guile/2.2/ccache/rnrs/mutable-strings.go +0 -0
  204. data/lib/guile/2.2/ccache/rnrs/programs.go +0 -0
  205. data/lib/guile/2.2/ccache/rnrs/r5rs.go +0 -0
  206. data/lib/guile/2.2/ccache/rnrs/records/inspection.go +0 -0
  207. data/lib/guile/2.2/ccache/rnrs/records/procedural.go +0 -0
  208. data/lib/guile/2.2/ccache/rnrs/records/syntactic.go +0 -0
  209. data/lib/guile/2.2/ccache/rnrs/sorting.go +0 -0
  210. data/lib/guile/2.2/ccache/rnrs/syntax-case.go +0 -0
  211. data/lib/guile/2.2/ccache/rnrs/unicode.go +0 -0
  212. data/lib/guile/2.2/ccache/rnrs.go +0 -0
  213. data/lib/guile/2.2/ccache/scripts/api-diff.go +0 -0
  214. data/lib/guile/2.2/ccache/scripts/autofrisk.go +0 -0
  215. data/lib/guile/2.2/ccache/scripts/compile.go +0 -0
  216. data/lib/guile/2.2/ccache/scripts/disassemble.go +0 -0
  217. data/lib/guile/2.2/ccache/scripts/display-commentary.go +0 -0
  218. data/lib/guile/2.2/ccache/scripts/doc-snarf.go +0 -0
  219. data/lib/guile/2.2/ccache/scripts/frisk.go +0 -0
  220. data/lib/guile/2.2/ccache/scripts/generate-autoload.go +0 -0
  221. data/lib/guile/2.2/ccache/scripts/help.go +0 -0
  222. data/lib/guile/2.2/ccache/scripts/lint.go +0 -0
  223. data/lib/guile/2.2/ccache/scripts/list.go +0 -0
  224. data/lib/guile/2.2/ccache/scripts/punify.go +0 -0
  225. data/lib/guile/2.2/ccache/scripts/read-rfc822.go +0 -0
  226. data/lib/guile/2.2/ccache/scripts/read-scheme-source.go +0 -0
  227. data/lib/guile/2.2/ccache/scripts/read-text-outline.go +0 -0
  228. data/lib/guile/2.2/ccache/scripts/scan-api.go +0 -0
  229. data/lib/guile/2.2/ccache/scripts/snarf-check-and-output-texi.go +0 -0
  230. data/lib/guile/2.2/ccache/scripts/snarf-guile-m4-docs.go +0 -0
  231. data/lib/guile/2.2/ccache/scripts/summarize-guile-TODO.go +0 -0
  232. data/lib/guile/2.2/ccache/scripts/use2dot.go +0 -0
  233. data/lib/guile/2.2/ccache/srfi/srfi-1.go +0 -0
  234. data/lib/guile/2.2/ccache/srfi/srfi-10.go +0 -0
  235. data/lib/guile/2.2/ccache/srfi/srfi-11.go +0 -0
  236. data/lib/guile/2.2/ccache/srfi/srfi-111.go +0 -0
  237. data/lib/guile/2.2/ccache/srfi/srfi-13.go +0 -0
  238. data/lib/guile/2.2/ccache/srfi/srfi-14.go +0 -0
  239. data/lib/guile/2.2/ccache/srfi/srfi-16.go +0 -0
  240. data/lib/guile/2.2/ccache/srfi/srfi-17.go +0 -0
  241. data/lib/guile/2.2/ccache/srfi/srfi-18.go +0 -0
  242. data/lib/guile/2.2/ccache/srfi/srfi-19.go +0 -0
  243. data/lib/guile/2.2/ccache/srfi/srfi-2.go +0 -0
  244. data/lib/guile/2.2/ccache/srfi/srfi-26.go +0 -0
  245. data/lib/guile/2.2/ccache/srfi/srfi-27.go +0 -0
  246. data/lib/guile/2.2/ccache/srfi/srfi-28.go +0 -0
  247. data/lib/guile/2.2/ccache/srfi/srfi-31.go +0 -0
  248. data/lib/guile/2.2/ccache/srfi/srfi-34.go +0 -0
  249. data/lib/guile/2.2/ccache/srfi/srfi-35.go +0 -0
  250. data/lib/guile/2.2/ccache/srfi/srfi-37.go +0 -0
  251. data/lib/guile/2.2/ccache/srfi/srfi-38.go +0 -0
  252. data/lib/guile/2.2/ccache/srfi/srfi-39.go +0 -0
  253. data/lib/guile/2.2/ccache/srfi/srfi-4/gnu.go +0 -0
  254. data/lib/guile/2.2/ccache/srfi/srfi-4.go +0 -0
  255. data/lib/guile/2.2/ccache/srfi/srfi-41.go +0 -0
  256. data/lib/guile/2.2/ccache/srfi/srfi-42.go +0 -0
  257. data/lib/guile/2.2/ccache/srfi/srfi-43.go +0 -0
  258. data/lib/guile/2.2/ccache/srfi/srfi-45.go +0 -0
  259. data/lib/guile/2.2/ccache/srfi/srfi-6.go +0 -0
  260. data/lib/guile/2.2/ccache/srfi/srfi-60.go +0 -0
  261. data/lib/guile/2.2/ccache/srfi/srfi-64.go +0 -0
  262. data/lib/guile/2.2/ccache/srfi/srfi-67.go +0 -0
  263. data/lib/guile/2.2/ccache/srfi/srfi-69.go +0 -0
  264. data/lib/guile/2.2/ccache/srfi/srfi-71.go +0 -0
  265. data/lib/guile/2.2/ccache/srfi/srfi-8.go +0 -0
  266. data/lib/guile/2.2/ccache/srfi/srfi-88.go +0 -0
  267. data/lib/guile/2.2/ccache/srfi/srfi-9/gnu.go +0 -0
  268. data/lib/guile/2.2/ccache/srfi/srfi-9.go +0 -0
  269. data/lib/guile/2.2/ccache/srfi/srfi-98.go +0 -0
  270. data/lib/guile/2.2/ccache/statprof.go +0 -0
  271. data/lib/guile/2.2/ccache/sxml/apply-templates.go +0 -0
  272. data/lib/guile/2.2/ccache/sxml/fold.go +0 -0
  273. data/lib/guile/2.2/ccache/sxml/match.go +0 -0
  274. data/lib/guile/2.2/ccache/sxml/simple.go +0 -0
  275. data/lib/guile/2.2/ccache/sxml/ssax/input-parse.go +0 -0
  276. data/lib/guile/2.2/ccache/sxml/ssax.go +0 -0
  277. data/lib/guile/2.2/ccache/sxml/transform.go +0 -0
  278. data/lib/guile/2.2/ccache/sxml/xpath.go +0 -0
  279. data/lib/guile/2.2/ccache/system/base/ck.go +0 -0
  280. data/lib/guile/2.2/ccache/system/base/compile.go +0 -0
  281. data/lib/guile/2.2/ccache/system/base/lalr.go +0 -0
  282. data/lib/guile/2.2/ccache/system/base/language.go +0 -0
  283. data/lib/guile/2.2/ccache/system/base/message.go +0 -0
  284. data/lib/guile/2.2/ccache/system/base/pmatch.go +0 -0
  285. data/lib/guile/2.2/ccache/system/base/syntax.go +0 -0
  286. data/lib/guile/2.2/ccache/system/base/target.go +0 -0
  287. data/lib/guile/2.2/ccache/system/base/types.go +0 -0
  288. data/lib/guile/2.2/ccache/system/foreign-object.go +0 -0
  289. data/lib/guile/2.2/ccache/system/foreign.go +0 -0
  290. data/lib/guile/2.2/ccache/system/repl/command.go +0 -0
  291. data/lib/guile/2.2/ccache/system/repl/common.go +0 -0
  292. data/lib/guile/2.2/ccache/system/repl/coop-server.go +0 -0
  293. data/lib/guile/2.2/ccache/system/repl/debug.go +0 -0
  294. data/lib/guile/2.2/ccache/system/repl/error-handling.go +0 -0
  295. data/lib/guile/2.2/ccache/system/repl/repl.go +0 -0
  296. data/lib/guile/2.2/ccache/system/repl/server.go +0 -0
  297. data/lib/guile/2.2/ccache/system/syntax.go +0 -0
  298. data/lib/guile/2.2/ccache/system/vm/assembler.go +0 -0
  299. data/lib/guile/2.2/ccache/system/vm/coverage.go +0 -0
  300. data/lib/guile/2.2/ccache/system/vm/debug.go +0 -0
  301. data/lib/guile/2.2/ccache/system/vm/disassembler.go +0 -0
  302. data/lib/guile/2.2/ccache/system/vm/dwarf.go +0 -0
  303. data/lib/guile/2.2/ccache/system/vm/elf.go +0 -0
  304. data/lib/guile/2.2/ccache/system/vm/frame.go +0 -0
  305. data/lib/guile/2.2/ccache/system/vm/inspect.go +0 -0
  306. data/lib/guile/2.2/ccache/system/vm/linker.go +0 -0
  307. data/lib/guile/2.2/ccache/system/vm/loader.go +0 -0
  308. data/lib/guile/2.2/ccache/system/vm/program.go +0 -0
  309. data/lib/guile/2.2/ccache/system/vm/trace.go +0 -0
  310. data/lib/guile/2.2/ccache/system/vm/trap-state.go +0 -0
  311. data/lib/guile/2.2/ccache/system/vm/traps.go +0 -0
  312. data/lib/guile/2.2/ccache/system/vm/vm.go +0 -0
  313. data/lib/guile/2.2/ccache/system/xref.go +0 -0
  314. data/lib/guile/2.2/ccache/texinfo/docbook.go +0 -0
  315. data/lib/guile/2.2/ccache/texinfo/html.go +0 -0
  316. data/lib/guile/2.2/ccache/texinfo/indexing.go +0 -0
  317. data/lib/guile/2.2/ccache/texinfo/plain-text.go +0 -0
  318. data/lib/guile/2.2/ccache/texinfo/reflection.go +0 -0
  319. data/lib/guile/2.2/ccache/texinfo/serialize.go +0 -0
  320. data/lib/guile/2.2/ccache/texinfo/string-utils.go +0 -0
  321. data/lib/guile/2.2/ccache/texinfo.go +0 -0
  322. data/lib/guile/2.2/ccache/web/client.go +0 -0
  323. data/lib/guile/2.2/ccache/web/http.go +0 -0
  324. data/lib/guile/2.2/ccache/web/request.go +0 -0
  325. data/lib/guile/2.2/ccache/web/response.go +0 -0
  326. data/lib/guile/2.2/ccache/web/server/http.go +0 -0
  327. data/lib/guile/2.2/ccache/web/server.go +0 -0
  328. data/lib/guile/2.2/ccache/web/uri.go +0 -0
  329. data/lib/guile.rb +19 -0
  330. data/lib/lilypond/2.24.1/ccache/lily/accreg.go +0 -0
  331. data/lib/lilypond/2.24.1/ccache/lily/auto-beam.go +0 -0
  332. data/lib/lilypond/2.24.1/ccache/lily/autochange.go +0 -0
  333. data/lib/lilypond/2.24.1/ccache/lily/backend-library.go +0 -0
  334. data/lib/lilypond/2.24.1/ccache/lily/bar-line.go +0 -0
  335. data/lib/lilypond/2.24.1/ccache/lily/breath.go +0 -0
  336. data/lib/lilypond/2.24.1/ccache/lily/c++.go +0 -0
  337. data/lib/lilypond/2.24.1/ccache/lily/chord-entry.go +0 -0
  338. data/lib/lilypond/2.24.1/ccache/lily/chord-ignatzek-names.go +0 -0
  339. data/lib/lilypond/2.24.1/ccache/lily/chord-name.go +0 -0
  340. data/lib/lilypond/2.24.1/ccache/lily/clip-region.go +0 -0
  341. data/lib/lilypond/2.24.1/ccache/lily/color.go +0 -0
  342. data/lib/lilypond/2.24.1/ccache/lily/curried-definitions.go +0 -0
  343. data/lib/lilypond/2.24.1/ccache/lily/define-context-properties.go +0 -0
  344. data/lib/lilypond/2.24.1/ccache/lily/define-event-classes.go +0 -0
  345. data/lib/lilypond/2.24.1/ccache/lily/define-grob-interfaces.go +0 -0
  346. data/lib/lilypond/2.24.1/ccache/lily/define-grob-properties.go +0 -0
  347. data/lib/lilypond/2.24.1/ccache/lily/define-grobs.go +0 -0
  348. data/lib/lilypond/2.24.1/ccache/lily/define-markup-commands.go +0 -0
  349. data/lib/lilypond/2.24.1/ccache/lily/define-music-callbacks.go +0 -0
  350. data/lib/lilypond/2.24.1/ccache/lily/define-music-display-methods.go +0 -0
  351. data/lib/lilypond/2.24.1/ccache/lily/define-music-properties.go +0 -0
  352. data/lib/lilypond/2.24.1/ccache/lily/define-music-types.go +0 -0
  353. data/lib/lilypond/2.24.1/ccache/lily/define-note-names.go +0 -0
  354. data/lib/lilypond/2.24.1/ccache/lily/define-stencil-commands.go +0 -0
  355. data/lib/lilypond/2.24.1/ccache/lily/define-woodwind-diagrams.go +0 -0
  356. data/lib/lilypond/2.24.1/ccache/lily/display-lily.go +0 -0
  357. data/lib/lilypond/2.24.1/ccache/lily/display-woodwind-diagrams.go +0 -0
  358. data/lib/lilypond/2.24.1/ccache/lily/file-cache.go +0 -0
  359. data/lib/lilypond/2.24.1/ccache/lily/flag-styles.go +0 -0
  360. data/lib/lilypond/2.24.1/ccache/lily/font-encodings.go +0 -0
  361. data/lib/lilypond/2.24.1/ccache/lily/font.go +0 -0
  362. data/lib/lilypond/2.24.1/ccache/lily/framework-cairo.go +0 -0
  363. data/lib/lilypond/2.24.1/ccache/lily/framework-ps.go +0 -0
  364. data/lib/lilypond/2.24.1/ccache/lily/framework-svg.go +0 -0
  365. data/lib/lilypond/2.24.1/ccache/lily/fret-diagrams.go +0 -0
  366. data/lib/lilypond/2.24.1/ccache/lily/graphviz.go +0 -0
  367. data/lib/lilypond/2.24.1/ccache/lily/harp-pedals.go +0 -0
  368. data/lib/lilypond/2.24.1/ccache/lily/layout-beam.go +0 -0
  369. data/lib/lilypond/2.24.1/ccache/lily/layout-slur.go +0 -0
  370. data/lib/lilypond/2.24.1/ccache/lily/lily-library.go +0 -0
  371. data/lib/lilypond/2.24.1/ccache/lily/lily.go +0 -0
  372. data/lib/lilypond/2.24.1/ccache/lily/ly-syntax-constructors.go +0 -0
  373. data/lib/lilypond/2.24.1/ccache/lily/markup-macros.go +0 -0
  374. data/lib/lilypond/2.24.1/ccache/lily/markup.go +0 -0
  375. data/lib/lilypond/2.24.1/ccache/lily/midi.go +0 -0
  376. data/lib/lilypond/2.24.1/ccache/lily/modal-transforms.go +0 -0
  377. data/lib/lilypond/2.24.1/ccache/lily/music-functions.go +0 -0
  378. data/lib/lilypond/2.24.1/ccache/lily/output-lib.go +0 -0
  379. data/lib/lilypond/2.24.1/ccache/lily/output-ps.go +0 -0
  380. data/lib/lilypond/2.24.1/ccache/lily/output-svg.go +0 -0
  381. data/lib/lilypond/2.24.1/ccache/lily/page.go +0 -0
  382. data/lib/lilypond/2.24.1/ccache/lily/paper-system.go +0 -0
  383. data/lib/lilypond/2.24.1/ccache/lily/paper.go +0 -0
  384. data/lib/lilypond/2.24.1/ccache/lily/parser-clef.go +0 -0
  385. data/lib/lilypond/2.24.1/ccache/lily/parser-ly-from-scheme.go +0 -0
  386. data/lib/lilypond/2.24.1/ccache/lily/part-combiner.go +0 -0
  387. data/lib/lilypond/2.24.1/ccache/lily/predefined-fretboards.go +0 -0
  388. data/lib/lilypond/2.24.1/ccache/lily/ps-to-png.go +0 -0
  389. data/lib/lilypond/2.24.1/ccache/lily/scheme-engravers.go +0 -0
  390. data/lib/lilypond/2.24.1/ccache/lily/scheme-performers.go +0 -0
  391. data/lib/lilypond/2.24.1/ccache/lily/script.go +0 -0
  392. data/lib/lilypond/2.24.1/ccache/lily/skyline.go +0 -0
  393. data/lib/lilypond/2.24.1/ccache/lily/song-util.go +0 -0
  394. data/lib/lilypond/2.24.1/ccache/lily/song.go +0 -0
  395. data/lib/lilypond/2.24.1/ccache/lily/stencil.go +0 -0
  396. data/lib/lilypond/2.24.1/ccache/lily/tablature.go +0 -0
  397. data/lib/lilypond/2.24.1/ccache/lily/time-signature-settings.go +0 -0
  398. data/lib/lilypond/2.24.1/ccache/lily/time-signature.go +0 -0
  399. data/lib/lilypond/2.24.1/ccache/lily/titling.go +0 -0
  400. data/lib/lilypond/2.24.1/ccache/lily/to-xml.go +0 -0
  401. data/lib/lilypond/2.24.1/ccache/lily/translation-functions.go +0 -0
  402. data/lib/lilypond/builder.rb +161 -0
  403. data/lib/lilypond-ruby.rb +18 -3
  404. data/share/emacs/site-lisp/lilypond-font-lock.el +208 -0
  405. data/share/emacs/site-lisp/lilypond-indent.el +605 -0
  406. data/share/emacs/site-lisp/lilypond-init.el +21 -0
  407. data/share/emacs/site-lisp/lilypond-mode.el +1204 -0
  408. data/share/emacs/site-lisp/lilypond-song.el +556 -0
  409. data/share/emacs/site-lisp/lilypond-what-beat.el +279 -0
  410. data/share/emacs/site-lisp/lilypond-words.el +1428 -0
  411. data/share/guile/2.2/guile-procedures.txt +8860 -0
  412. data/share/guile/2.2/ice-9/and-let-star.scm +73 -0
  413. data/share/guile/2.2/ice-9/arrays.scm +70 -0
  414. data/share/guile/2.2/ice-9/atomic.scm +38 -0
  415. data/share/guile/2.2/ice-9/binary-ports.scm +53 -0
  416. data/share/guile/2.2/ice-9/boot-9.scm +4131 -0
  417. data/share/guile/2.2/ice-9/buffered-input.scm +109 -0
  418. data/share/guile/2.2/ice-9/calling.scm +326 -0
  419. data/share/guile/2.2/ice-9/channel.scm +170 -0
  420. data/share/guile/2.2/ice-9/command-line.scm +477 -0
  421. data/share/guile/2.2/ice-9/common-list.scm +278 -0
  422. data/share/guile/2.2/ice-9/control.scm +110 -0
  423. data/share/guile/2.2/ice-9/curried-definitions.scm +57 -0
  424. data/share/guile/2.2/ice-9/debug.scm +25 -0
  425. data/share/guile/2.2/ice-9/deprecated.scm +93 -0
  426. data/share/guile/2.2/ice-9/documentation.scm +203 -0
  427. data/share/guile/2.2/ice-9/eval-string.scm +90 -0
  428. data/share/guile/2.2/ice-9/eval.scm +723 -0
  429. data/share/guile/2.2/ice-9/expect.scm +171 -0
  430. data/share/guile/2.2/ice-9/fdes-finalizers.scm +25 -0
  431. data/share/guile/2.2/ice-9/format.scm +1626 -0
  432. data/share/guile/2.2/ice-9/ftw.scm +564 -0
  433. data/share/guile/2.2/ice-9/futures.scm +308 -0
  434. data/share/guile/2.2/ice-9/gap-buffer.scm +283 -0
  435. data/share/guile/2.2/ice-9/getopt-long.scm +371 -0
  436. data/share/guile/2.2/ice-9/hash-table.scm +45 -0
  437. data/share/guile/2.2/ice-9/hcons.scm +80 -0
  438. data/share/guile/2.2/ice-9/history.scm +65 -0
  439. data/share/guile/2.2/ice-9/i18n.scm +531 -0
  440. data/share/guile/2.2/ice-9/iconv.scm +95 -0
  441. data/share/guile/2.2/ice-9/lineio.scm +115 -0
  442. data/share/guile/2.2/ice-9/list.scm +36 -0
  443. data/share/guile/2.2/ice-9/local-eval.scm +261 -0
  444. data/share/guile/2.2/ice-9/ls.scm +94 -0
  445. data/share/guile/2.2/ice-9/mapping.scm +118 -0
  446. data/share/guile/2.2/ice-9/match.scm +59 -0
  447. data/share/guile/2.2/ice-9/match.upstream.scm +917 -0
  448. data/share/guile/2.2/ice-9/networking.scm +94 -0
  449. data/share/guile/2.2/ice-9/null.scm +34 -0
  450. data/share/guile/2.2/ice-9/occam-channel.scm +261 -0
  451. data/share/guile/2.2/ice-9/optargs.scm +381 -0
  452. data/share/guile/2.2/ice-9/peg/cache.scm +45 -0
  453. data/share/guile/2.2/ice-9/peg/codegen.scm +359 -0
  454. data/share/guile/2.2/ice-9/peg/simplify-tree.scm +97 -0
  455. data/share/guile/2.2/ice-9/peg/string-peg.scm +273 -0
  456. data/share/guile/2.2/ice-9/peg/using-parsers.scm +116 -0
  457. data/share/guile/2.2/ice-9/peg.scm +42 -0
  458. data/share/guile/2.2/ice-9/poe.scm +116 -0
  459. data/share/guile/2.2/ice-9/poll.scm +172 -0
  460. data/share/guile/2.2/ice-9/popen.scm +178 -0
  461. data/share/guile/2.2/ice-9/ports.scm +566 -0
  462. data/share/guile/2.2/ice-9/posix.scm +75 -0
  463. data/share/guile/2.2/ice-9/pretty-print.scm +483 -0
  464. data/share/guile/2.2/ice-9/psyntax-pp.scm +3542 -0
  465. data/share/guile/2.2/ice-9/psyntax.scm +3326 -0
  466. data/share/guile/2.2/ice-9/q.scm +153 -0
  467. data/share/guile/2.2/ice-9/quasisyntax.scm +136 -0
  468. data/share/guile/2.2/ice-9/r5rs.scm +45 -0
  469. data/share/guile/2.2/ice-9/r6rs-libraries.scm +242 -0
  470. data/share/guile/2.2/ice-9/rdelim.scm +208 -0
  471. data/share/guile/2.2/ice-9/receive.scm +26 -0
  472. data/share/guile/2.2/ice-9/regex.scm +229 -0
  473. data/share/guile/2.2/ice-9/runq.scm +241 -0
  474. data/share/guile/2.2/ice-9/rw.scm +27 -0
  475. data/share/guile/2.2/ice-9/safe-r5rs.scm +145 -0
  476. data/share/guile/2.2/ice-9/safe.scm +34 -0
  477. data/share/guile/2.2/ice-9/sandbox.scm +1399 -0
  478. data/share/guile/2.2/ice-9/save-stack.scm +58 -0
  479. data/share/guile/2.2/ice-9/scm-style-repl.scm +279 -0
  480. data/share/guile/2.2/ice-9/serialize.scm +114 -0
  481. data/share/guile/2.2/ice-9/session.scm +530 -0
  482. data/share/guile/2.2/ice-9/slib.scm +33 -0
  483. data/share/guile/2.2/ice-9/stack-catch.scm +47 -0
  484. data/share/guile/2.2/ice-9/streams.scm +168 -0
  485. data/share/guile/2.2/ice-9/string-fun.scm +280 -0
  486. data/share/guile/2.2/ice-9/suspendable-ports.scm +788 -0
  487. data/share/guile/2.2/ice-9/syncase.scm +37 -0
  488. data/share/guile/2.2/ice-9/textual-ports.scm +70 -0
  489. data/share/guile/2.2/ice-9/threads.scm +392 -0
  490. data/share/guile/2.2/ice-9/time.scm +58 -0
  491. data/share/guile/2.2/ice-9/top-repl.scm +78 -0
  492. data/share/guile/2.2/ice-9/unicode.scm +26 -0
  493. data/share/guile/2.2/ice-9/vlist.scm +595 -0
  494. data/share/guile/2.2/ice-9/weak-vector.scm +31 -0
  495. data/share/guile/2.2/language/brainfuck/compile-scheme.scm +123 -0
  496. data/share/guile/2.2/language/brainfuck/compile-tree-il.scm +184 -0
  497. data/share/guile/2.2/language/brainfuck/parse.scm +95 -0
  498. data/share/guile/2.2/language/brainfuck/spec.scm +43 -0
  499. data/share/guile/2.2/language/bytecode/spec.scm +42 -0
  500. data/share/guile/2.2/language/bytecode.scm +104 -0
  501. data/share/guile/2.2/language/cps/closure-conversion.scm +848 -0
  502. data/share/guile/2.2/language/cps/compile-bytecode.scm +610 -0
  503. data/share/guile/2.2/language/cps/constructors.scm +106 -0
  504. data/share/guile/2.2/language/cps/contification.scm +448 -0
  505. data/share/guile/2.2/language/cps/cse.scm +414 -0
  506. data/share/guile/2.2/language/cps/dce.scm +363 -0
  507. data/share/guile/2.2/language/cps/effects-analysis.scm +597 -0
  508. data/share/guile/2.2/language/cps/elide-values.scm +88 -0
  509. data/share/guile/2.2/language/cps/handle-interrupts.scm +69 -0
  510. data/share/guile/2.2/language/cps/intmap.scm +765 -0
  511. data/share/guile/2.2/language/cps/intset.scm +830 -0
  512. data/share/guile/2.2/language/cps/licm.scm +308 -0
  513. data/share/guile/2.2/language/cps/optimize.scm +135 -0
  514. data/share/guile/2.2/language/cps/peel-loops.scm +287 -0
  515. data/share/guile/2.2/language/cps/primitives.scm +141 -0
  516. data/share/guile/2.2/language/cps/prune-bailouts.scm +86 -0
  517. data/share/guile/2.2/language/cps/prune-top-level-scopes.scm +63 -0
  518. data/share/guile/2.2/language/cps/reify-primitives.scm +179 -0
  519. data/share/guile/2.2/language/cps/renumber.scm +217 -0
  520. data/share/guile/2.2/language/cps/rotate-loops.scm +239 -0
  521. data/share/guile/2.2/language/cps/self-references.scm +79 -0
  522. data/share/guile/2.2/language/cps/simplify.scm +274 -0
  523. data/share/guile/2.2/language/cps/slot-allocation.scm +1058 -0
  524. data/share/guile/2.2/language/cps/spec.scm +51 -0
  525. data/share/guile/2.2/language/cps/specialize-numbers.scm +724 -0
  526. data/share/guile/2.2/language/cps/specialize-primcalls.scm +87 -0
  527. data/share/guile/2.2/language/cps/split-rec.scm +174 -0
  528. data/share/guile/2.2/language/cps/type-checks.scm +72 -0
  529. data/share/guile/2.2/language/cps/type-fold.scm +455 -0
  530. data/share/guile/2.2/language/cps/types.scm +1826 -0
  531. data/share/guile/2.2/language/cps/utils.scm +550 -0
  532. data/share/guile/2.2/language/cps/verify.scm +304 -0
  533. data/share/guile/2.2/language/cps/with-cps.scm +145 -0
  534. data/share/guile/2.2/language/cps.scm +358 -0
  535. data/share/guile/2.2/language/ecmascript/array.scm +121 -0
  536. data/share/guile/2.2/language/ecmascript/base.scm +251 -0
  537. data/share/guile/2.2/language/ecmascript/compile-tree-il.scm +576 -0
  538. data/share/guile/2.2/language/ecmascript/function.scm +78 -0
  539. data/share/guile/2.2/language/ecmascript/impl.scm +169 -0
  540. data/share/guile/2.2/language/ecmascript/parse.scm +352 -0
  541. data/share/guile/2.2/language/ecmascript/spec.scm +37 -0
  542. data/share/guile/2.2/language/ecmascript/tokenize.scm +513 -0
  543. data/share/guile/2.2/language/elisp/bindings.scm +107 -0
  544. data/share/guile/2.2/language/elisp/boot.el +617 -0
  545. data/share/guile/2.2/language/elisp/compile-tree-il.scm +812 -0
  546. data/share/guile/2.2/language/elisp/falias.scm +47 -0
  547. data/share/guile/2.2/language/elisp/lexer.scm +430 -0
  548. data/share/guile/2.2/language/elisp/parser.scm +222 -0
  549. data/share/guile/2.2/language/elisp/runtime/function-slot.scm +63 -0
  550. data/share/guile/2.2/language/elisp/runtime/value-slot.scm +24 -0
  551. data/share/guile/2.2/language/elisp/runtime.scm +153 -0
  552. data/share/guile/2.2/language/elisp/spec.scm +43 -0
  553. data/share/guile/2.2/language/scheme/compile-tree-il.scm +33 -0
  554. data/share/guile/2.2/language/scheme/decompile-tree-il.scm +796 -0
  555. data/share/guile/2.2/language/scheme/spec.scm +63 -0
  556. data/share/guile/2.2/language/tree-il/analyze.scm +1568 -0
  557. data/share/guile/2.2/language/tree-il/canonicalize.scm +82 -0
  558. data/share/guile/2.2/language/tree-il/compile-cps.scm +1149 -0
  559. data/share/guile/2.2/language/tree-il/debug.scm +246 -0
  560. data/share/guile/2.2/language/tree-il/effects.scm +591 -0
  561. data/share/guile/2.2/language/tree-il/fix-letrec.scm +314 -0
  562. data/share/guile/2.2/language/tree-il/optimize.scm +43 -0
  563. data/share/guile/2.2/language/tree-il/peval.scm +1669 -0
  564. data/share/guile/2.2/language/tree-il/primitives.scm +630 -0
  565. data/share/guile/2.2/language/tree-il/spec.scm +46 -0
  566. data/share/guile/2.2/language/tree-il.scm +630 -0
  567. data/share/guile/2.2/language/value/spec.scm +30 -0
  568. data/share/guile/2.2/oop/goops/accessors.scm +72 -0
  569. data/share/guile/2.2/oop/goops/active-slot.scm +63 -0
  570. data/share/guile/2.2/oop/goops/composite-slot.scm +83 -0
  571. data/share/guile/2.2/oop/goops/describe.scm +189 -0
  572. data/share/guile/2.2/oop/goops/internal.scm +30 -0
  573. data/share/guile/2.2/oop/goops/save.scm +874 -0
  574. data/share/guile/2.2/oop/goops/simple.scm +30 -0
  575. data/share/guile/2.2/oop/goops/stklos.scm +74 -0
  576. data/share/guile/2.2/oop/goops.scm +3176 -0
  577. data/share/guile/2.2/rnrs/arithmetic/bitwise.scm +92 -0
  578. data/share/guile/2.2/rnrs/arithmetic/fixnums.scm +291 -0
  579. data/share/guile/2.2/rnrs/arithmetic/flonums.scm +203 -0
  580. data/share/guile/2.2/rnrs/base.scm +291 -0
  581. data/share/guile/2.2/rnrs/bytevectors.scm +83 -0
  582. data/share/guile/2.2/rnrs/conditions.scm +225 -0
  583. data/share/guile/2.2/rnrs/control.scm +22 -0
  584. data/share/guile/2.2/rnrs/enums.scm +152 -0
  585. data/share/guile/2.2/rnrs/eval.scm +39 -0
  586. data/share/guile/2.2/rnrs/exceptions.scm +276 -0
  587. data/share/guile/2.2/rnrs/files.scm +96 -0
  588. data/share/guile/2.2/rnrs/hashtables.scm +190 -0
  589. data/share/guile/2.2/rnrs/io/ports.scm +554 -0
  590. data/share/guile/2.2/rnrs/io/simple.scm +167 -0
  591. data/share/guile/2.2/rnrs/lists.scm +55 -0
  592. data/share/guile/2.2/rnrs/mutable-pairs.scm +23 -0
  593. data/share/guile/2.2/rnrs/mutable-strings.scm +23 -0
  594. data/share/guile/2.2/rnrs/programs.scm +22 -0
  595. data/share/guile/2.2/rnrs/r5rs.scm +34 -0
  596. data/share/guile/2.2/rnrs/records/inspection.scm +81 -0
  597. data/share/guile/2.2/rnrs/records/procedural.scm +289 -0
  598. data/share/guile/2.2/rnrs/records/syntactic.scm +248 -0
  599. data/share/guile/2.2/rnrs/sorting.scm +27 -0
  600. data/share/guile/2.2/rnrs/syntax-case.scm +68 -0
  601. data/share/guile/2.2/rnrs/unicode.scm +104 -0
  602. data/share/guile/2.2/rnrs.scm +289 -0
  603. data/share/guile/2.2/scripts/api-diff.scm +179 -0
  604. data/share/guile/2.2/scripts/autofrisk.scm +218 -0
  605. data/share/guile/2.2/scripts/compile.scm +273 -0
  606. data/share/guile/2.2/scripts/disassemble.scm +38 -0
  607. data/share/guile/2.2/scripts/display-commentary.scm +67 -0
  608. data/share/guile/2.2/scripts/doc-snarf.scm +439 -0
  609. data/share/guile/2.2/scripts/frisk.scm +290 -0
  610. data/share/guile/2.2/scripts/generate-autoload.scm +144 -0
  611. data/share/guile/2.2/scripts/help.scm +188 -0
  612. data/share/guile/2.2/scripts/lint.scm +318 -0
  613. data/share/guile/2.2/scripts/list.scm +91 -0
  614. data/share/guile/2.2/scripts/punify.scm +87 -0
  615. data/share/guile/2.2/scripts/read-rfc822.scm +131 -0
  616. data/share/guile/2.2/scripts/read-scheme-source.scm +282 -0
  617. data/share/guile/2.2/scripts/read-text-outline.scm +253 -0
  618. data/share/guile/2.2/scripts/scan-api.scm +223 -0
  619. data/share/guile/2.2/scripts/snarf-check-and-output-texi.scm +303 -0
  620. data/share/guile/2.2/scripts/snarf-guile-m4-docs.scm +86 -0
  621. data/share/guile/2.2/scripts/summarize-guile-TODO.scm +213 -0
  622. data/share/guile/2.2/scripts/use2dot.scm +110 -0
  623. data/share/guile/2.2/srfi/srfi-1.scm +1061 -0
  624. data/share/guile/2.2/srfi/srfi-10.scm +89 -0
  625. data/share/guile/2.2/srfi/srfi-11.scm +146 -0
  626. data/share/guile/2.2/srfi/srfi-111.scm +37 -0
  627. data/share/guile/2.2/srfi/srfi-13.scm +132 -0
  628. data/share/guile/2.2/srfi/srfi-14.scm +99 -0
  629. data/share/guile/2.2/srfi/srfi-16.scm +51 -0
  630. data/share/guile/2.2/srfi/srfi-17.scm +174 -0
  631. data/share/guile/2.2/srfi/srfi-18.scm +382 -0
  632. data/share/guile/2.2/srfi/srfi-19.scm +1470 -0
  633. data/share/guile/2.2/srfi/srfi-2.scm +31 -0
  634. data/share/guile/2.2/srfi/srfi-26.scm +66 -0
  635. data/share/guile/2.2/srfi/srfi-27.scm +96 -0
  636. data/share/guile/2.2/srfi/srfi-28.scm +34 -0
  637. data/share/guile/2.2/srfi/srfi-31.scm +35 -0
  638. data/share/guile/2.2/srfi/srfi-34.scm +84 -0
  639. data/share/guile/2.2/srfi/srfi-35.scm +351 -0
  640. data/share/guile/2.2/srfi/srfi-37.scm +234 -0
  641. data/share/guile/2.2/srfi/srfi-38.scm +207 -0
  642. data/share/guile/2.2/srfi/srfi-39.scm +55 -0
  643. data/share/guile/2.2/srfi/srfi-4/gnu.scm +80 -0
  644. data/share/guile/2.2/srfi/srfi-4.scm +118 -0
  645. data/share/guile/2.2/srfi/srfi-41.scm +505 -0
  646. data/share/guile/2.2/srfi/srfi-42/ec.scm +1053 -0
  647. data/share/guile/2.2/srfi/srfi-42.scm +66 -0
  648. data/share/guile/2.2/srfi/srfi-43.scm +1077 -0
  649. data/share/guile/2.2/srfi/srfi-45.scm +93 -0
  650. data/share/guile/2.2/srfi/srfi-6.scm +29 -0
  651. data/share/guile/2.2/srfi/srfi-60.scm +73 -0
  652. data/share/guile/2.2/srfi/srfi-64/testing.scm +1040 -0
  653. data/share/guile/2.2/srfi/srfi-64.scm +55 -0
  654. data/share/guile/2.2/srfi/srfi-67/compare.scm +686 -0
  655. data/share/guile/2.2/srfi/srfi-67.scm +88 -0
  656. data/share/guile/2.2/srfi/srfi-69.scm +336 -0
  657. data/share/guile/2.2/srfi/srfi-71.scm +267 -0
  658. data/share/guile/2.2/srfi/srfi-8.scm +31 -0
  659. data/share/guile/2.2/srfi/srfi-88.scm +53 -0
  660. data/share/guile/2.2/srfi/srfi-9/gnu.scm +168 -0
  661. data/share/guile/2.2/srfi/srfi-9.scm +351 -0
  662. data/share/guile/2.2/srfi/srfi-98.scm +44 -0
  663. data/share/guile/2.2/statprof.scm +988 -0
  664. data/share/guile/2.2/sxml/apply-templates.scm +102 -0
  665. data/share/guile/2.2/sxml/fold.scm +250 -0
  666. data/share/guile/2.2/sxml/match.scm +75 -0
  667. data/share/guile/2.2/sxml/simple.scm +408 -0
  668. data/share/guile/2.2/sxml/ssax/input-parse.scm +180 -0
  669. data/share/guile/2.2/sxml/ssax.scm +265 -0
  670. data/share/guile/2.2/sxml/sxml-match.ss +1181 -0
  671. data/share/guile/2.2/sxml/transform.scm +298 -0
  672. data/share/guile/2.2/sxml/upstream/SSAX.scm +3235 -0
  673. data/share/guile/2.2/sxml/upstream/SXML-tree-trans.scm +249 -0
  674. data/share/guile/2.2/sxml/upstream/SXPath-old.scm +1216 -0
  675. data/share/guile/2.2/sxml/upstream/assert.scm +35 -0
  676. data/share/guile/2.2/sxml/upstream/input-parse.scm +326 -0
  677. data/share/guile/2.2/sxml/xpath.scm +493 -0
  678. data/share/guile/2.2/system/base/ck.scm +55 -0
  679. data/share/guile/2.2/system/base/compile.scm +282 -0
  680. data/share/guile/2.2/system/base/lalr.scm +51 -0
  681. data/share/guile/2.2/system/base/lalr.upstream.scm +2096 -0
  682. data/share/guile/2.2/system/base/language.scm +119 -0
  683. data/share/guile/2.2/system/base/message.scm +238 -0
  684. data/share/guile/2.2/system/base/pmatch.scm +68 -0
  685. data/share/guile/2.2/system/base/syntax.scm +299 -0
  686. data/share/guile/2.2/system/base/target.scm +152 -0
  687. data/share/guile/2.2/system/base/types.scm +561 -0
  688. data/share/guile/2.2/system/foreign-object.scm +91 -0
  689. data/share/guile/2.2/system/foreign.scm +200 -0
  690. data/share/guile/2.2/system/repl/command.scm +946 -0
  691. data/share/guile/2.2/system/repl/common.scm +263 -0
  692. data/share/guile/2.2/system/repl/coop-server.scm +200 -0
  693. data/share/guile/2.2/system/repl/debug.scm +210 -0
  694. data/share/guile/2.2/system/repl/describe.scm +347 -0
  695. data/share/guile/2.2/system/repl/error-handling.scm +183 -0
  696. data/share/guile/2.2/system/repl/repl.scm +233 -0
  697. data/share/guile/2.2/system/repl/server.scm +332 -0
  698. data/share/guile/2.2/system/syntax.scm +33 -0
  699. data/share/guile/2.2/system/vm/assembler.scm +2614 -0
  700. data/share/guile/2.2/system/vm/coverage.scm +351 -0
  701. data/share/guile/2.2/system/vm/debug.scm +766 -0
  702. data/share/guile/2.2/system/vm/disassembler.scm +658 -0
  703. data/share/guile/2.2/system/vm/dwarf.scm +1852 -0
  704. data/share/guile/2.2/system/vm/elf.scm +1042 -0
  705. data/share/guile/2.2/system/vm/frame.scm +485 -0
  706. data/share/guile/2.2/system/vm/inspect.scm +188 -0
  707. data/share/guile/2.2/system/vm/linker.scm +732 -0
  708. data/share/guile/2.2/system/vm/loader.scm +27 -0
  709. data/share/guile/2.2/system/vm/program.scm +312 -0
  710. data/share/guile/2.2/system/vm/trace.scm +121 -0
  711. data/share/guile/2.2/system/vm/trap-state.scm +302 -0
  712. data/share/guile/2.2/system/vm/traps.scm +608 -0
  713. data/share/guile/2.2/system/vm/vm.scm +32 -0
  714. data/share/guile/2.2/system/xref.scm +369 -0
  715. data/share/guile/2.2/texinfo/docbook.scm +240 -0
  716. data/share/guile/2.2/texinfo/html.scm +279 -0
  717. data/share/guile/2.2/texinfo/indexing.scm +75 -0
  718. data/share/guile/2.2/texinfo/plain-text.scm +322 -0
  719. data/share/guile/2.2/texinfo/reflection.scm +585 -0
  720. data/share/guile/2.2/texinfo/serialize.scm +300 -0
  721. data/share/guile/2.2/texinfo/string-utils.scm +410 -0
  722. data/share/guile/2.2/texinfo.scm +1263 -0
  723. data/share/guile/2.2/web/client.scm +513 -0
  724. data/share/guile/2.2/web/http.scm +2043 -0
  725. data/share/guile/2.2/web/request.scm +326 -0
  726. data/share/guile/2.2/web/response.scm +379 -0
  727. data/share/guile/2.2/web/server/http.scm +183 -0
  728. data/share/guile/2.2/web/server.scm +397 -0
  729. data/share/guile/2.2/web/uri.scm +552 -0
  730. data/share/lilypond/2.24.1/fontconfig/0bd3dc0958fa2205aaaa8ebb13e2872b-le64.cache-8 +0 -0
  731. data/share/lilypond/2.24.1/fontconfig/188ac73a183f12857f63bb60a4a6d603-le64.cache-8 +0 -0
  732. data/share/lilypond/2.24.1/fontconfig/32b6488e5b8292a2e95c79d947e009e8-le64.cache-8 +0 -0
  733. data/share/lilypond/2.24.1/fontconfig/3830d5c3ddfd5cd38a049b759396e72e-le64.cache-8 +0 -0
  734. data/share/lilypond/2.24.1/fontconfig/3f7329c5293ffd510edef78f73874cfd-le64.cache-8 +0 -0
  735. data/share/lilypond/2.24.1/fontconfig/4c599c202bc5c08e2d34565a40eac3b2-le64.cache-8 +0 -0
  736. data/share/lilypond/2.24.1/fontconfig/57e423e26b20ab21d0f2f29c145174c3-le64.cache-8 +0 -0
  737. data/share/lilypond/2.24.1/fontconfig/7ef2298fde41cc6eeb7af42e48b7d293-le64.cache-8 +0 -0
  738. data/share/lilypond/2.24.1/fontconfig/826f6b6ef79022e2eac8af26bf4b62f2-le64.cache-8 +0 -0
  739. data/share/lilypond/2.24.1/fontconfig/945677eb7aeaf62f1d50efc3fb3ec7d8-le64.cache-8 +0 -0
  740. data/share/lilypond/2.24.1/fontconfig/95530828ff6c81d309f8258d8d02a23e-le64.cache-8 +0 -0
  741. data/share/lilypond/2.24.1/fontconfig/CACHEDIR.TAG +4 -0
  742. data/share/lilypond/2.24.1/fontconfig/bf3b770c553c462765856025a94f1ce6-le64.cache-8 +0 -0
  743. data/share/lilypond/2.24.1/fontconfig/c855463f699352c367813e37f3f70ea7-le64.cache-8 +0 -0
  744. data/share/lilypond/2.24.1/fontconfig/d3e5c4ee2ceb1fc347f91d4cefc53bc0-le64.cache-8 +0 -0
  745. data/share/lilypond/2.24.1/fontconfig/d589a48862398ed80a3d6066f4f56f4c-le64.cache-8 +0 -0
  746. data/share/lilypond/2.24.1/fontconfig/d82eb4fd963d448e2fcb7d7b793b5df3-le64.cache-8 +0 -0
  747. data/share/lilypond/2.24.1/fontconfig/e13b20fdb08344e0e664864cc2ede53d-le64.cache-8 +0 -0
  748. data/share/lilypond/2.24.1/fontconfig/e52a45a1c8c8fe895fc0fc8c4e6999b8-le64.cache-8 +0 -0
  749. data/share/lilypond/2.24.1/fontconfig/f1f2465696798768e9653f19e17ccdc8-le64.cache-8 +0 -0
  750. data/share/lilypond/2.24.1/fonts/00-lilypond-fonts.conf +99 -0
  751. data/share/lilypond/2.24.1/fonts/99-lilypond-fonts.conf +28 -0
  752. data/share/lilypond/2.24.1/fonts/otf/C059-BdIta.otf +0 -0
  753. data/share/lilypond/2.24.1/fonts/otf/C059-Bold.otf +0 -0
  754. data/share/lilypond/2.24.1/fonts/otf/C059-Italic.otf +0 -0
  755. data/share/lilypond/2.24.1/fonts/otf/C059-Roman.otf +0 -0
  756. data/share/lilypond/2.24.1/fonts/otf/NimbusMonoPS-Bold.otf +0 -0
  757. data/share/lilypond/2.24.1/fonts/otf/NimbusMonoPS-BoldItalic.otf +0 -0
  758. data/share/lilypond/2.24.1/fonts/otf/NimbusMonoPS-Italic.otf +0 -0
  759. data/share/lilypond/2.24.1/fonts/otf/NimbusMonoPS-Regular.otf +0 -0
  760. data/share/lilypond/2.24.1/fonts/otf/NimbusSans-Bold.otf +0 -0
  761. data/share/lilypond/2.24.1/fonts/otf/NimbusSans-BoldItalic.otf +0 -0
  762. data/share/lilypond/2.24.1/fonts/otf/NimbusSans-Italic.otf +0 -0
  763. data/share/lilypond/2.24.1/fonts/otf/NimbusSans-Regular.otf +0 -0
  764. data/share/lilypond/2.24.1/fonts/otf/emmentaler-11.otf +0 -0
  765. data/share/lilypond/2.24.1/fonts/otf/emmentaler-13.otf +0 -0
  766. data/share/lilypond/2.24.1/fonts/otf/emmentaler-14.otf +0 -0
  767. data/share/lilypond/2.24.1/fonts/otf/emmentaler-16.otf +0 -0
  768. data/share/lilypond/2.24.1/fonts/otf/emmentaler-18.otf +0 -0
  769. data/share/lilypond/2.24.1/fonts/otf/emmentaler-20.otf +0 -0
  770. data/share/lilypond/2.24.1/fonts/otf/emmentaler-23.otf +0 -0
  771. data/share/lilypond/2.24.1/fonts/otf/emmentaler-26.otf +0 -0
  772. data/share/lilypond/2.24.1/fonts/otf/emmentaler-brace.otf +0 -0
  773. data/share/lilypond/2.24.1/fonts/otf/texgyrecursor-bold.otf +0 -0
  774. data/share/lilypond/2.24.1/fonts/otf/texgyrecursor-bolditalic.otf +0 -0
  775. data/share/lilypond/2.24.1/fonts/otf/texgyrecursor-italic.otf +0 -0
  776. data/share/lilypond/2.24.1/fonts/otf/texgyrecursor-regular.otf +0 -0
  777. data/share/lilypond/2.24.1/fonts/otf/texgyreheros-bold.otf +0 -0
  778. data/share/lilypond/2.24.1/fonts/otf/texgyreheros-bolditalic.otf +0 -0
  779. data/share/lilypond/2.24.1/fonts/otf/texgyreheros-italic.otf +0 -0
  780. data/share/lilypond/2.24.1/fonts/otf/texgyreheros-regular.otf +0 -0
  781. data/share/lilypond/2.24.1/fonts/otf/texgyreschola-bold.otf +0 -0
  782. data/share/lilypond/2.24.1/fonts/otf/texgyreschola-bolditalic.otf +0 -0
  783. data/share/lilypond/2.24.1/fonts/otf/texgyreschola-italic.otf +0 -0
  784. data/share/lilypond/2.24.1/fonts/otf/texgyreschola-regular.otf +0 -0
  785. data/share/lilypond/2.24.1/fonts/source/common-modules-and-initialization.mf +26 -0
  786. data/share/lilypond/2.24.1/fonts/source/debugging-settings.mf +14 -0
  787. data/share/lilypond/2.24.1/fonts/source/declare-autometric-parameters.mf +9 -0
  788. data/share/lilypond/2.24.1/fonts/source/feta-accidentals.mf +58 -0
  789. data/share/lilypond/2.24.1/fonts/source/feta-accordion.mf +575 -0
  790. data/share/lilypond/2.24.1/fonts/source/feta-alphabet-generic.mf +16 -0
  791. data/share/lilypond/2.24.1/fonts/source/feta-alphabet11.mf +6 -0
  792. data/share/lilypond/2.24.1/fonts/source/feta-alphabet13.mf +6 -0
  793. data/share/lilypond/2.24.1/fonts/source/feta-alphabet14.mf +6 -0
  794. data/share/lilypond/2.24.1/fonts/source/feta-alphabet16.mf +6 -0
  795. data/share/lilypond/2.24.1/fonts/source/feta-alphabet18.mf +6 -0
  796. data/share/lilypond/2.24.1/fonts/source/feta-alphabet20.mf +6 -0
  797. data/share/lilypond/2.24.1/fonts/source/feta-alphabet23.mf +6 -0
  798. data/share/lilypond/2.24.1/fonts/source/feta-alphabet26.mf +6 -0
  799. data/share/lilypond/2.24.1/fonts/source/feta-arrow.mf +114 -0
  800. data/share/lilypond/2.24.1/fonts/source/feta-arrowheads.mf +171 -0
  801. data/share/lilypond/2.24.1/fonts/source/feta-autometric.mf +303 -0
  802. data/share/lilypond/2.24.1/fonts/source/feta-braces-a.mf +6 -0
  803. data/share/lilypond/2.24.1/fonts/source/feta-braces-b.mf +6 -0
  804. data/share/lilypond/2.24.1/fonts/source/feta-braces-c.mf +6 -0
  805. data/share/lilypond/2.24.1/fonts/source/feta-braces-d.mf +6 -0
  806. data/share/lilypond/2.24.1/fonts/source/feta-braces-e.mf +6 -0
  807. data/share/lilypond/2.24.1/fonts/source/feta-braces-f.mf +6 -0
  808. data/share/lilypond/2.24.1/fonts/source/feta-braces-g.mf +6 -0
  809. data/share/lilypond/2.24.1/fonts/source/feta-braces-generic.mf +47 -0
  810. data/share/lilypond/2.24.1/fonts/source/feta-braces-h.mf +6 -0
  811. data/share/lilypond/2.24.1/fonts/source/feta-braces-i.mf +6 -0
  812. data/share/lilypond/2.24.1/fonts/source/feta-braces.mf +125 -0
  813. data/share/lilypond/2.24.1/fonts/source/feta-brackettips.mf +100 -0
  814. data/share/lilypond/2.24.1/fonts/source/feta-clefs.mf +963 -0
  815. data/share/lilypond/2.24.1/fonts/source/feta-dots.mf +37 -0
  816. data/share/lilypond/2.24.1/fonts/source/feta-dynamics.mf +891 -0
  817. data/share/lilypond/2.24.1/fonts/source/feta-flags-generic.mf +17 -0
  818. data/share/lilypond/2.24.1/fonts/source/feta-flags.mf +926 -0
  819. data/share/lilypond/2.24.1/fonts/source/feta-flags11.mf +6 -0
  820. data/share/lilypond/2.24.1/fonts/source/feta-flags13.mf +6 -0
  821. data/share/lilypond/2.24.1/fonts/source/feta-flags14.mf +6 -0
  822. data/share/lilypond/2.24.1/fonts/source/feta-flags16.mf +6 -0
  823. data/share/lilypond/2.24.1/fonts/source/feta-flags18.mf +6 -0
  824. data/share/lilypond/2.24.1/fonts/source/feta-flags20.mf +6 -0
  825. data/share/lilypond/2.24.1/fonts/source/feta-flags23.mf +6 -0
  826. data/share/lilypond/2.24.1/fonts/source/feta-flags26.mf +6 -0
  827. data/share/lilypond/2.24.1/fonts/source/feta-flats.mf +668 -0
  828. data/share/lilypond/2.24.1/fonts/source/feta-macros.mf +506 -0
  829. data/share/lilypond/2.24.1/fonts/source/feta-naturals.mf +223 -0
  830. data/share/lilypond/2.24.1/fonts/source/feta-noteheads-generic.mf +17 -0
  831. data/share/lilypond/2.24.1/fonts/source/feta-noteheads.mf +2642 -0
  832. data/share/lilypond/2.24.1/fonts/source/feta-noteheads11.mf +6 -0
  833. data/share/lilypond/2.24.1/fonts/source/feta-noteheads13.mf +6 -0
  834. data/share/lilypond/2.24.1/fonts/source/feta-noteheads14.mf +6 -0
  835. data/share/lilypond/2.24.1/fonts/source/feta-noteheads16.mf +6 -0
  836. data/share/lilypond/2.24.1/fonts/source/feta-noteheads18.mf +6 -0
  837. data/share/lilypond/2.24.1/fonts/source/feta-noteheads20.mf +6 -0
  838. data/share/lilypond/2.24.1/fonts/source/feta-noteheads23.mf +6 -0
  839. data/share/lilypond/2.24.1/fonts/source/feta-noteheads26.mf +6 -0
  840. data/share/lilypond/2.24.1/fonts/source/feta-numbers.mf +1677 -0
  841. data/share/lilypond/2.24.1/fonts/source/feta-other-generic.mf +27 -0
  842. data/share/lilypond/2.24.1/fonts/source/feta-params.mf +323 -0
  843. data/share/lilypond/2.24.1/fonts/source/feta-parenthesis.mf +63 -0
  844. data/share/lilypond/2.24.1/fonts/source/feta-pedals.mf +355 -0
  845. data/share/lilypond/2.24.1/fonts/source/feta-rests.mf +890 -0
  846. data/share/lilypond/2.24.1/fonts/source/feta-scripts.mf +2206 -0
  847. data/share/lilypond/2.24.1/fonts/source/feta-sharps.mf +524 -0
  848. data/share/lilypond/2.24.1/fonts/source/feta-sori-koron.mf +325 -0
  849. data/share/lilypond/2.24.1/fonts/source/feta-ties.mf +72 -0
  850. data/share/lilypond/2.24.1/fonts/source/feta-timesignatures.mf +119 -0
  851. data/share/lilypond/2.24.1/fonts/source/feta-trills.mf +321 -0
  852. data/share/lilypond/2.24.1/fonts/source/feta11.mf +6 -0
  853. data/share/lilypond/2.24.1/fonts/source/feta13.mf +6 -0
  854. data/share/lilypond/2.24.1/fonts/source/feta14.mf +6 -0
  855. data/share/lilypond/2.24.1/fonts/source/feta16.mf +6 -0
  856. data/share/lilypond/2.24.1/fonts/source/feta18.mf +6 -0
  857. data/share/lilypond/2.24.1/fonts/source/feta20.mf +7 -0
  858. data/share/lilypond/2.24.1/fonts/source/feta23.mf +6 -0
  859. data/share/lilypond/2.24.1/fonts/source/feta26.mf +6 -0
  860. data/share/lilypond/2.24.1/fonts/source/parmesan-accidentals.mf +483 -0
  861. data/share/lilypond/2.24.1/fonts/source/parmesan-clefs.mf +1636 -0
  862. data/share/lilypond/2.24.1/fonts/source/parmesan-custodes.mf +503 -0
  863. data/share/lilypond/2.24.1/fonts/source/parmesan-dots.mf +62 -0
  864. data/share/lilypond/2.24.1/fonts/source/parmesan-flags.mf +319 -0
  865. data/share/lilypond/2.24.1/fonts/source/parmesan-macros.mf +225 -0
  866. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads-generic.mf +16 -0
  867. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads.mf +2191 -0
  868. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads11.mf +6 -0
  869. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads13.mf +6 -0
  870. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads14.mf +6 -0
  871. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads16.mf +6 -0
  872. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads18.mf +6 -0
  873. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads20.mf +6 -0
  874. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads23.mf +6 -0
  875. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads26.mf +6 -0
  876. data/share/lilypond/2.24.1/fonts/source/parmesan-other-generic.mf +24 -0
  877. data/share/lilypond/2.24.1/fonts/source/parmesan-rests.mf +428 -0
  878. data/share/lilypond/2.24.1/fonts/source/parmesan-scripts.mf +284 -0
  879. data/share/lilypond/2.24.1/fonts/source/parmesan-timesignatures.mf +402 -0
  880. data/share/lilypond/2.24.1/fonts/source/parmesan11.mf +6 -0
  881. data/share/lilypond/2.24.1/fonts/source/parmesan13.mf +6 -0
  882. data/share/lilypond/2.24.1/fonts/source/parmesan14.mf +6 -0
  883. data/share/lilypond/2.24.1/fonts/source/parmesan16.mf +6 -0
  884. data/share/lilypond/2.24.1/fonts/source/parmesan18.mf +6 -0
  885. data/share/lilypond/2.24.1/fonts/source/parmesan20.mf +6 -0
  886. data/share/lilypond/2.24.1/fonts/source/parmesan23.mf +6 -0
  887. data/share/lilypond/2.24.1/fonts/source/parmesan26.mf +6 -0
  888. data/share/lilypond/2.24.1/fonts/svg/emmentaler-11.svg +2525 -0
  889. data/share/lilypond/2.24.1/fonts/svg/emmentaler-11.woff +0 -0
  890. data/share/lilypond/2.24.1/fonts/svg/emmentaler-13.svg +2530 -0
  891. data/share/lilypond/2.24.1/fonts/svg/emmentaler-13.woff +0 -0
  892. data/share/lilypond/2.24.1/fonts/svg/emmentaler-14.svg +2526 -0
  893. data/share/lilypond/2.24.1/fonts/svg/emmentaler-14.woff +0 -0
  894. data/share/lilypond/2.24.1/fonts/svg/emmentaler-16.svg +2523 -0
  895. data/share/lilypond/2.24.1/fonts/svg/emmentaler-16.woff +0 -0
  896. data/share/lilypond/2.24.1/fonts/svg/emmentaler-18.svg +2519 -0
  897. data/share/lilypond/2.24.1/fonts/svg/emmentaler-18.woff +0 -0
  898. data/share/lilypond/2.24.1/fonts/svg/emmentaler-20.svg +2512 -0
  899. data/share/lilypond/2.24.1/fonts/svg/emmentaler-20.woff +0 -0
  900. data/share/lilypond/2.24.1/fonts/svg/emmentaler-23.svg +2506 -0
  901. data/share/lilypond/2.24.1/fonts/svg/emmentaler-23.woff +0 -0
  902. data/share/lilypond/2.24.1/fonts/svg/emmentaler-26.svg +2510 -0
  903. data/share/lilypond/2.24.1/fonts/svg/emmentaler-26.woff +0 -0
  904. data/share/lilypond/2.24.1/fonts/svg/emmentaler-brace.svg +1757 -0
  905. data/share/lilypond/2.24.1/fonts/svg/emmentaler-brace.woff +0 -0
  906. data/share/lilypond/2.24.1/ly/Welcome_to_LilyPond.ly +45 -0
  907. data/share/lilypond/2.24.1/ly/arabic.ly +185 -0
  908. data/share/lilypond/2.24.1/ly/articulate.ly +1013 -0
  909. data/share/lilypond/2.24.1/ly/bagpipe.ly +368 -0
  910. data/share/lilypond/2.24.1/ly/base-tkit.ly +135 -0
  911. data/share/lilypond/2.24.1/ly/catalan.ly +23 -0
  912. data/share/lilypond/2.24.1/ly/chord-modifiers-init.ly +63 -0
  913. data/share/lilypond/2.24.1/ly/chord-repetition-init.ly +60 -0
  914. data/share/lilypond/2.24.1/ly/context-mods-init.ly +119 -0
  915. data/share/lilypond/2.24.1/ly/declarations-init.ly +167 -0
  916. data/share/lilypond/2.24.1/ly/deutsch.ly +23 -0
  917. data/share/lilypond/2.24.1/ly/drumpitch-init.ly +366 -0
  918. data/share/lilypond/2.24.1/ly/dynamic-scripts-init.ly +54 -0
  919. data/share/lilypond/2.24.1/ly/english.ly +23 -0
  920. data/share/lilypond/2.24.1/ly/engraver-init.ly +1619 -0
  921. data/share/lilypond/2.24.1/ly/espanol.ly +23 -0
  922. data/share/lilypond/2.24.1/ly/event-listener.ly +241 -0
  923. data/share/lilypond/2.24.1/ly/festival.ly +38 -0
  924. data/share/lilypond/2.24.1/ly/generate-documentation.ly +7 -0
  925. data/share/lilypond/2.24.1/ly/grace-init.ly +56 -0
  926. data/share/lilypond/2.24.1/ly/graphviz-init.ly +174 -0
  927. data/share/lilypond/2.24.1/ly/gregorian.ly +268 -0
  928. data/share/lilypond/2.24.1/ly/guile-debugger.ly +55 -0
  929. data/share/lilypond/2.24.1/ly/hel-arabic.ly +307 -0
  930. data/share/lilypond/2.24.1/ly/init.ly +96 -0
  931. data/share/lilypond/2.24.1/ly/italiano.ly +23 -0
  932. data/share/lilypond/2.24.1/ly/lilypond-book-preamble.ly +47 -0
  933. data/share/lilypond/2.24.1/ly/lyrics-tkit.ly +68 -0
  934. data/share/lilypond/2.24.1/ly/makam.ly +166 -0
  935. data/share/lilypond/2.24.1/ly/midi-init.ly +59 -0
  936. data/share/lilypond/2.24.1/ly/music-functions-init.ly +2254 -0
  937. data/share/lilypond/2.24.1/ly/nederlands.ly +23 -0
  938. data/share/lilypond/2.24.1/ly/norsk.ly +23 -0
  939. data/share/lilypond/2.24.1/ly/paper-defaults-init.ly +188 -0
  940. data/share/lilypond/2.24.1/ly/performer-init.ly +398 -0
  941. data/share/lilypond/2.24.1/ly/persian.ly +335 -0
  942. data/share/lilypond/2.24.1/ly/piano-tkit.ly +61 -0
  943. data/share/lilypond/2.24.1/ly/portugues.ly +23 -0
  944. data/share/lilypond/2.24.1/ly/predefined-fretboards-init.ly +78 -0
  945. data/share/lilypond/2.24.1/ly/predefined-guitar-fretboards.ly +506 -0
  946. data/share/lilypond/2.24.1/ly/predefined-guitar-ninth-fretboards.ly +75 -0
  947. data/share/lilypond/2.24.1/ly/predefined-mandolin-fretboards.ly +876 -0
  948. data/share/lilypond/2.24.1/ly/predefined-ukulele-fretboards.ly +1285 -0
  949. data/share/lilypond/2.24.1/ly/property-init.ly +858 -0
  950. data/share/lilypond/2.24.1/ly/satb.ly +214 -0
  951. data/share/lilypond/2.24.1/ly/scale-definitions-init.ly +117 -0
  952. data/share/lilypond/2.24.1/ly/scheme-sandbox.ly +39 -0
  953. data/share/lilypond/2.24.1/ly/script-init.ly +94 -0
  954. data/share/lilypond/2.24.1/ly/spanners-init.ly +146 -0
  955. data/share/lilypond/2.24.1/ly/ssaattbb.ly +335 -0
  956. data/share/lilypond/2.24.1/ly/staff-tkit.ly +182 -0
  957. data/share/lilypond/2.24.1/ly/string-tunings-init.ly +94 -0
  958. data/share/lilypond/2.24.1/ly/suomi.ly +23 -0
  959. data/share/lilypond/2.24.1/ly/svenska.ly +23 -0
  960. data/share/lilypond/2.24.1/ly/swing.ly +362 -0
  961. data/share/lilypond/2.24.1/ly/text-replacements.ly +150 -0
  962. data/share/lilypond/2.24.1/ly/titling-init.ly +150 -0
  963. data/share/lilypond/2.24.1/ly/toc-init.ly +182 -0
  964. data/share/lilypond/2.24.1/ly/turkish-makam.ly +609 -0
  965. data/share/lilypond/2.24.1/ly/vlaams.ly +23 -0
  966. data/share/lilypond/2.24.1/ly/vocal-tkit.ly +103 -0
  967. data/share/lilypond/2.24.1/ly/voice-tkit.ly +34 -0
  968. data/share/lilypond/2.24.1/ps/encodingdefs.ps +2611 -0
  969. data/share/lilypond/2.24.1/ps/lilyponddefs.ps +49 -0
  970. data/share/lilypond/2.24.1/ps/music-drawing-routines.ps +329 -0
  971. data/share/lilypond/2.24.1/python/__pycache__/book_base.cpython-310.pyc +0 -0
  972. data/share/lilypond/2.24.1/python/__pycache__/book_docbook.cpython-310.pyc +0 -0
  973. data/share/lilypond/2.24.1/python/__pycache__/book_html.cpython-310.pyc +0 -0
  974. data/share/lilypond/2.24.1/python/__pycache__/book_latex.cpython-310.pyc +0 -0
  975. data/share/lilypond/2.24.1/python/__pycache__/book_snippets.cpython-310.pyc +0 -0
  976. data/share/lilypond/2.24.1/python/__pycache__/book_texinfo.cpython-310.pyc +0 -0
  977. data/share/lilypond/2.24.1/python/__pycache__/convertrules.cpython-310.pyc +0 -0
  978. data/share/lilypond/2.24.1/python/__pycache__/langdefs.cpython-310.pyc +0 -0
  979. data/share/lilypond/2.24.1/python/__pycache__/lilylib.cpython-310.pyc +0 -0
  980. data/share/lilypond/2.24.1/python/__pycache__/midi.cpython-310.pyc +0 -0
  981. data/share/lilypond/2.24.1/python/__pycache__/musicexp.cpython-310.pyc +0 -0
  982. data/share/lilypond/2.24.1/python/__pycache__/musicxml.cpython-310.pyc +0 -0
  983. data/share/lilypond/2.24.1/python/__pycache__/musicxml2ly_conversion.cpython-310.pyc +0 -0
  984. data/share/lilypond/2.24.1/python/__pycache__/utilities.cpython-310.pyc +0 -0
  985. data/share/lilypond/2.24.1/python/book_base.py +331 -0
  986. data/share/lilypond/2.24.1/python/book_docbook.py +154 -0
  987. data/share/lilypond/2.24.1/python/book_html.py +178 -0
  988. data/share/lilypond/2.24.1/python/book_latex.py +373 -0
  989. data/share/lilypond/2.24.1/python/book_snippets.py +1052 -0
  990. data/share/lilypond/2.24.1/python/book_texinfo.py +437 -0
  991. data/share/lilypond/2.24.1/python/convertrules.py +4764 -0
  992. data/share/lilypond/2.24.1/python/langdefs.py +131 -0
  993. data/share/lilypond/2.24.1/python/lilylib.py +141 -0
  994. data/share/lilypond/2.24.1/python/midi.py +212 -0
  995. data/share/lilypond/2.24.1/python/musicexp.py +2781 -0
  996. data/share/lilypond/2.24.1/python/musicxml.py +1905 -0
  997. data/share/lilypond/2.24.1/python/musicxml2ly_conversion.py +80 -0
  998. data/share/lilypond/2.24.1/python/utilities.py +280 -0
  999. data/share/lilypond/2.24.1/scm/lily/accreg.scm +579 -0
  1000. data/share/lilypond/2.24.1/scm/lily/auto-beam.scm +163 -0
  1001. data/share/lilypond/2.24.1/scm/lily/autochange.scm +100 -0
  1002. data/share/lilypond/2.24.1/scm/lily/backend-library.scm +593 -0
  1003. data/share/lilypond/2.24.1/scm/lily/bar-line.scm +1281 -0
  1004. data/share/lilypond/2.24.1/scm/lily/breath.scm +74 -0
  1005. data/share/lilypond/2.24.1/scm/lily/c++.scm +174 -0
  1006. data/share/lilypond/2.24.1/scm/lily/chord-entry.scm +278 -0
  1007. data/share/lilypond/2.24.1/scm/lily/chord-ignatzek-names.scm +304 -0
  1008. data/share/lilypond/2.24.1/scm/lily/chord-name.scm +217 -0
  1009. data/share/lilypond/2.24.1/scm/lily/clip-region.scm +87 -0
  1010. data/share/lilypond/2.24.1/scm/lily/color.scm +757 -0
  1011. data/share/lilypond/2.24.1/scm/lily/curried-definitions.scm +68 -0
  1012. data/share/lilypond/2.24.1/scm/lily/define-context-properties.scm +939 -0
  1013. data/share/lilypond/2.24.1/scm/lily/define-event-classes.scm +142 -0
  1014. data/share/lilypond/2.24.1/scm/lily/define-grob-interfaces.scm +640 -0
  1015. data/share/lilypond/2.24.1/scm/lily/define-grob-properties.scm +1647 -0
  1016. data/share/lilypond/2.24.1/scm/lily/define-grobs.scm +4027 -0
  1017. data/share/lilypond/2.24.1/scm/lily/define-markup-commands.scm +5737 -0
  1018. data/share/lilypond/2.24.1/scm/lily/define-music-callbacks.scm +257 -0
  1019. data/share/lilypond/2.24.1/scm/lily/define-music-display-methods.scm +1350 -0
  1020. data/share/lilypond/2.24.1/scm/lily/define-music-properties.scm +242 -0
  1021. data/share/lilypond/2.24.1/scm/lily/define-music-types.scm +983 -0
  1022. data/share/lilypond/2.24.1/scm/lily/define-note-names.scm +1421 -0
  1023. data/share/lilypond/2.24.1/scm/lily/define-stencil-commands.scm +71 -0
  1024. data/share/lilypond/2.24.1/scm/lily/define-woodwind-diagrams.scm +1215 -0
  1025. data/share/lilypond/2.24.1/scm/lily/display-lily.scm +315 -0
  1026. data/share/lilypond/2.24.1/scm/lily/display-woodwind-diagrams.scm +1985 -0
  1027. data/share/lilypond/2.24.1/scm/lily/document-backend.scm +307 -0
  1028. data/share/lilypond/2.24.1/scm/lily/document-context-mods.scm +98 -0
  1029. data/share/lilypond/2.24.1/scm/lily/document-functions.scm +169 -0
  1030. data/share/lilypond/2.24.1/scm/lily/document-identifiers.scm +76 -0
  1031. data/share/lilypond/2.24.1/scm/lily/document-markup.scm +158 -0
  1032. data/share/lilypond/2.24.1/scm/lily/document-music.scm +146 -0
  1033. data/share/lilypond/2.24.1/scm/lily/document-outside-staff-priorities.scm +40 -0
  1034. data/share/lilypond/2.24.1/scm/lily/document-paper-sizes.scm +71 -0
  1035. data/share/lilypond/2.24.1/scm/lily/document-translation.scm +318 -0
  1036. data/share/lilypond/2.24.1/scm/lily/document-type-predicates.scm +85 -0
  1037. data/share/lilypond/2.24.1/scm/lily/documentation-generate.scm +259 -0
  1038. data/share/lilypond/2.24.1/scm/lily/documentation-lib.scm +207 -0
  1039. data/share/lilypond/2.24.1/scm/lily/file-cache.scm +28 -0
  1040. data/share/lilypond/2.24.1/scm/lily/flag-styles.scm +249 -0
  1041. data/share/lilypond/2.24.1/scm/lily/font-encodings.scm +1242 -0
  1042. data/share/lilypond/2.24.1/scm/lily/font.scm +303 -0
  1043. data/share/lilypond/2.24.1/scm/lily/framework-cairo.scm +26 -0
  1044. data/share/lilypond/2.24.1/scm/lily/framework-ps.scm +896 -0
  1045. data/share/lilypond/2.24.1/scm/lily/framework-svg.scm +172 -0
  1046. data/share/lilypond/2.24.1/scm/lily/fret-diagrams.scm +1261 -0
  1047. data/share/lilypond/2.24.1/scm/lily/graphviz.scm +78 -0
  1048. data/share/lilypond/2.24.1/scm/lily/guile-debugger.scm +90 -0
  1049. data/share/lilypond/2.24.1/scm/lily/harp-pedals.scm +172 -0
  1050. data/share/lilypond/2.24.1/scm/lily/hyphenate-internal-words.scm +51 -0
  1051. data/share/lilypond/2.24.1/scm/lily/layout-beam.scm +73 -0
  1052. data/share/lilypond/2.24.1/scm/lily/layout-slur.scm +45 -0
  1053. data/share/lilypond/2.24.1/scm/lily/lily-library.scm +1446 -0
  1054. data/share/lilypond/2.24.1/scm/lily/lily-sort.scm +116 -0
  1055. data/share/lilypond/2.24.1/scm/lily/lily.scm +929 -0
  1056. data/share/lilypond/2.24.1/scm/lily/ly-syntax-constructors.scm +374 -0
  1057. data/share/lilypond/2.24.1/scm/lily/markup-macros.scm +493 -0
  1058. data/share/lilypond/2.24.1/scm/lily/markup.scm +126 -0
  1059. data/share/lilypond/2.24.1/scm/lily/midi.scm +258 -0
  1060. data/share/lilypond/2.24.1/scm/lily/modal-transforms.scm +337 -0
  1061. data/share/lilypond/2.24.1/scm/lily/music-functions.scm +2878 -0
  1062. data/share/lilypond/2.24.1/scm/lily/output-lib.scm +3377 -0
  1063. data/share/lilypond/2.24.1/scm/lily/output-ps.scm +335 -0
  1064. data/share/lilypond/2.24.1/scm/lily/output-svg.scm +684 -0
  1065. data/share/lilypond/2.24.1/scm/lily/page.scm +321 -0
  1066. data/share/lilypond/2.24.1/scm/lily/paper-system.scm +271 -0
  1067. data/share/lilypond/2.24.1/scm/lily/paper.scm +376 -0
  1068. data/share/lilypond/2.24.1/scm/lily/parser-clef.scm +205 -0
  1069. data/share/lilypond/2.24.1/scm/lily/parser-ly-from-scheme.scm +170 -0
  1070. data/share/lilypond/2.24.1/scm/lily/part-combiner.scm +998 -0
  1071. data/share/lilypond/2.24.1/scm/lily/predefined-fretboards.scm +54 -0
  1072. data/share/lilypond/2.24.1/scm/lily/ps-to-png.scm +182 -0
  1073. data/share/lilypond/2.24.1/scm/lily/scheme-engravers.scm +1813 -0
  1074. data/share/lilypond/2.24.1/scm/lily/scheme-performers.scm +126 -0
  1075. data/share/lilypond/2.24.1/scm/lily/script.scm +416 -0
  1076. data/share/lilypond/2.24.1/scm/lily/skyline.scm +25 -0
  1077. data/share/lilypond/2.24.1/scm/lily/song-util.scm +191 -0
  1078. data/share/lilypond/2.24.1/scm/lily/song.scm +853 -0
  1079. data/share/lilypond/2.24.1/scm/lily/stencil.scm +998 -0
  1080. data/share/lilypond/2.24.1/scm/lily/tablature.scm +392 -0
  1081. data/share/lilypond/2.24.1/scm/lily/time-signature-settings.scm +473 -0
  1082. data/share/lilypond/2.24.1/scm/lily/time-signature.scm +35 -0
  1083. data/share/lilypond/2.24.1/scm/lily/titling.scm +99 -0
  1084. data/share/lilypond/2.24.1/scm/lily/to-xml.scm +254 -0
  1085. data/share/lilypond/2.24.1/scm/lily/translation-functions.scm +1169 -0
  1086. data/share/lilypond/2.24.1/vim/compiler/lilypond.vim +36 -0
  1087. data/share/lilypond/2.24.1/vim/ftdetect/lilypond.vim +4 -0
  1088. data/share/lilypond/2.24.1/vim/ftplugin/lilypond.vim +91 -0
  1089. data/share/lilypond/2.24.1/vim/indent/lilypond.vim +79 -0
  1090. data/share/lilypond/2.24.1/vim/syntax/lilypond-words +1408 -0
  1091. data/share/lilypond/2.24.1/vim/syntax/lilypond-words.vim +3 -0
  1092. data/share/lilypond/2.24.1/vim/syntax/lilypond.vim +104 -0
  1093. data/share/locale/ca/LC_MESSAGES/lilypond.mo +0 -0
  1094. data/share/locale/cs/LC_MESSAGES/lilypond.mo +0 -0
  1095. data/share/locale/da/LC_MESSAGES/lilypond.mo +0 -0
  1096. data/share/locale/de/LC_MESSAGES/lilypond.mo +0 -0
  1097. data/share/locale/el/LC_MESSAGES/lilypond.mo +0 -0
  1098. data/share/locale/eo/LC_MESSAGES/lilypond.mo +0 -0
  1099. data/share/locale/es/LC_MESSAGES/lilypond.mo +0 -0
  1100. data/share/locale/fi/LC_MESSAGES/lilypond.mo +0 -0
  1101. data/share/locale/fr/LC_MESSAGES/lilypond.mo +0 -0
  1102. data/share/locale/it/LC_MESSAGES/lilypond.mo +0 -0
  1103. data/share/locale/ja/LC_MESSAGES/lilypond.mo +0 -0
  1104. data/share/locale/nl/LC_MESSAGES/lilypond.mo +0 -0
  1105. data/share/locale/ru/LC_MESSAGES/lilypond.mo +0 -0
  1106. data/share/locale/sv/LC_MESSAGES/lilypond.mo +0 -0
  1107. data/share/locale/tr/LC_MESSAGES/lilypond.mo +0 -0
  1108. data/share/locale/uk/LC_MESSAGES/lilypond.mo +0 -0
  1109. data/share/locale/vi/LC_MESSAGES/lilypond.mo +0 -0
  1110. data/share/locale/zh_CN/LC_MESSAGES/lilypond.mo +0 -0
  1111. data/share/locale/zh_TW/LC_MESSAGES/lilypond.mo +0 -0
  1112. metadata +1135 -4
@@ -0,0 +1,2642 @@
1
+ % Feta (not the Font-En-Tja) music font -- implement noteheads
2
+ % This file is part of LilyPond, the GNU music typesetter.
3
+ %
4
+ % Copyright (C) 1997--2022 Jan Nieuwenhuizen <janneke@gnu.org>
5
+ % & Han-Wen Nienhuys <hanwen@xs4all.nl>
6
+ % & Juergen Reuter <reuter@ipd.uka.de>
7
+ %
8
+ % The LilyPond font is free software: you can redistribute it and/or modify
9
+ % it under the terms of the GNU General Public License as published by
10
+ % the Free Software Foundation, either version 3 of the License, or
11
+ % (at your option) any later version, or under the SIL Open Font License.
12
+ %
13
+ % LilyPond is distributed in the hope that it will be useful,
14
+ % but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ % GNU General Public License for more details.
17
+ %
18
+ % You should have received a copy of the GNU General Public License
19
+ % along with LilyPond. If not, see <http://www.gnu.org/licenses/>.
20
+
21
+ test_outlines := 0;
22
+
23
+
24
+ % Most beautiful noteheads are pronounced, not circular,
25
+ % and not even symmetric.
26
+ % These examples are inspired by [Wanske]; see literature list.
27
+
28
+
29
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
30
+ % NOTE HEAD VARIABLES
31
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
32
+
33
+ save half_notehead_width, whole_notehead_width;
34
+ save solfa_noteheight;
35
+
36
+ numeric whole_notehead_width;
37
+ numeric half_notehead_width;
38
+
39
+ fet_begingroup ("noteheads");
40
+
41
+
42
+ %
43
+ % solfa heads should not overlap on chords.
44
+ %
45
+ solfa_noteheight# := staff_space# - stafflinethickness#;
46
+
47
+ % OFFSET is needed for breves and longae only.
48
+ def undraw_inside_ellipse (expr ellipticity, tilt, superness, clearance,
49
+ offset) =
50
+ begingroup
51
+ save pat;
52
+ path pat;
53
+
54
+ pat := superellipse ((ellipticity, 0), (0, 1.0),
55
+ (-ellipticity, 0), (0, -1.0),
56
+ superness);
57
+ pat := pat rotated tilt;
58
+
59
+ save top_point, right_point;
60
+ pair top_point, right_point;
61
+
62
+ top_point := directionpoint left of pat;
63
+ right_point := directionpoint up of pat;
64
+
65
+ save height, scaling;
66
+
67
+ height# = staff_space# + stafflinethickness# - clearance;
68
+ scaling# = height# / (2 ypart (top_point));
69
+ define_pixels (scaling);
70
+ pat := pat scaled scaling shifted (w / 2 + offset, .5 (h - d));
71
+
72
+ if test_outlines = 1:
73
+ draw pat;
74
+ else:
75
+ unfill pat;
76
+ fi
77
+ endgroup;
78
+ enddef;
79
+
80
+
81
+ def draw_longa (expr up) =
82
+ save stemthick, fudge;
83
+
84
+ stemthick# = 2 stafflinethickness#;
85
+ define_whole_blacker_pixels (stemthick);
86
+
87
+ % Longae of smaller design sizes should have their lines farther
88
+ % apart (i.e., the overlap with the notehead ellipsoid should be
89
+ % smaller).
90
+ fudge# = blot_diameter# * min (max (-0.15,
91
+ 0.9 - (20 / (design_size + 4))),
92
+ 0.3);
93
+ define_whole_pixels (fudge);
94
+
95
+ % `draw_outside_ellipse` also sets `width#` and `width`.
96
+ draw_outside_ellipse (1.80, 0, 0.707, 0, -fudge);
97
+ undraw_inside_ellipse (1.30, 125, 0.68, 2 stafflinethickness#, -fudge);
98
+
99
+ pickup pencircle scaled stemthick;
100
+
101
+ % Longae of smaller design sizes should have their lines longer.
102
+ line_length := min (max (0.7, 64/60 - (design_size / 60)), 0.85);
103
+
104
+ % Line lengths between 0.72 and 0.77 are not nice because they are
105
+ % neither separate nor connected when there is an interval of a
106
+ % fourth.
107
+ if line_length < 0.75:
108
+ quanted_line_length := min (0.72, line_length);
109
+ else:
110
+ quanted_line_length := max (0.77, line_length);
111
+ fi;
112
+
113
+ final_line_length := quanted_line_length * staff_space;
114
+
115
+ save boxtop, boxbot;
116
+ define_pixels (boxtop, boxbot);
117
+
118
+ if up:
119
+ bot y1 = -final_line_length;
120
+ top y2 = final_line_length;
121
+ rt x1 = 0;
122
+ x1 = x2;
123
+
124
+ lft x3 = width - 2 fudge;
125
+ x4 = x3;
126
+ top y4 = h + 3.0 staff_space;
127
+ y3 = y1;
128
+ boxtop# := staff_space# * (quanted_line_length + 3.0) - stemthick#;
129
+ boxbot# := staff_space# * quanted_line_length;
130
+ else:
131
+ bot y1 = -d - 3.0 staff_space;
132
+ top y2 = final_line_length;
133
+ rt x1 = 0;
134
+ x1 = x2;
135
+
136
+ lft x3 = width - 2 fudge;
137
+ x4 = x3;
138
+ y4 = y2;
139
+ bot y3 = -final_line_length;
140
+ boxtop# := staff_space# * quanted_line_length;
141
+ boxbot# := staff_space# * (quanted_line_length + 3.0) - stemthick#;
142
+ fi;
143
+
144
+ draw_gridline (z1, z2, stemthick);
145
+ draw_gridline (z3, z4, stemthick);
146
+
147
+ set_char_box (stemthick#,
148
+ width# + stemthick# - 2 fudge#,
149
+ boxbot#,
150
+ boxtop#);
151
+
152
+ labels (1, 2, 3, 4);
153
+ enddef;
154
+
155
+
156
+ fet_beginchar ("longa notehead (up)", "uM2");
157
+ draw_longa (true);
158
+
159
+ draw_staff_if_debugging (-2, 2);
160
+ fet_endchar;
161
+
162
+
163
+ fet_beginchar ("longa notehead (down)", "dM2");
164
+ draw_longa (false);
165
+
166
+ draw_staff_if_debugging (-2, 2);
167
+ fet_endchar;
168
+
169
+
170
+ def draw_brevis (expr linecount, line_thickness_multiplier) =
171
+ save stemthick, fudge, gap;
172
+
173
+ stemthick# = line_thickness_multiplier * 2 * stafflinethickness#;
174
+ define_whole_blacker_pixels (stemthick);
175
+
176
+ % Double-lined breves of smaller design sizes should have a bigger
177
+ % gap between the lines.
178
+ gap# := (0.95 - 0.008 * design_size) * stemthick#;
179
+ define_pixels (gap);
180
+
181
+ % Breves of smaller design sizes should have their lines farther
182
+ % apart (i.e., the overlap with the notehead ellipsoid should be
183
+ % smaller).
184
+ fudge# = blot_diameter# * min (max (-0.15,
185
+ 0.8 - (20 / (design_size + 4))
186
+ + .1 linecount),
187
+ 0.3);
188
+ define_whole_pixels (fudge);
189
+
190
+ % `draw_outside_ellipse` also sets `width#` and `width`.
191
+ draw_outside_ellipse (1.80, 0, 0.707, 0, -fudge);
192
+ undraw_inside_ellipse (1.30, 125, 0.68, 2 stafflinethickness#, -fudge);
193
+
194
+ pickup pencircle scaled stemthick;
195
+
196
+ % Breves of smaller design sizes should have their lines longer.
197
+ line_length := min (max (0.7, 64/60 - (design_size / 60)), 0.85);
198
+
199
+ % Line lengths between 0.72 and 0.77 are not nice because they are
200
+ % neither separate nor connected when there is an interval of a
201
+ % fourth.
202
+ if line_length < 0.75:
203
+ quanted_line_length := min (0.72, line_length);
204
+ else:
205
+ quanted_line_length := max (0.77, line_length);
206
+ fi;
207
+
208
+ % If breves are aligned for intervals like a second, they overlap so
209
+ % that the vertical stems fall together. To ensure this, the
210
+ % 'breapth' value should be the thickness of the left vertical
211
+ % stem(s).
212
+ set_char_box (stemthick# * linecount + gap# * (linecount - 1),
213
+ width# + stemthick# * linecount
214
+ + gap# * (linecount - 1) - 2 fudge#,
215
+ staff_space# * quanted_line_length,
216
+ staff_space# * quanted_line_length);
217
+
218
+ bot y1 = -quanted_line_length * staff_space;
219
+ top y2 = quanted_line_length * staff_space;
220
+ rt x1 = 0;
221
+ x1 = x2;
222
+
223
+ lft x3 = width - 2 fudge;
224
+ x4 = x3;
225
+ y4 = y2;
226
+ y3 = y1;
227
+
228
+ for i := 0 step 1 until linecount - 1:
229
+ line_distance := i * (gap + stemthick);
230
+ draw_gridline (z1 - (line_distance, 0),
231
+ z2 - (line_distance, 0),
232
+ stemthick);
233
+ draw_gridline (z3 + (line_distance, 0),
234
+ z4 + (line_distance, 0),
235
+ stemthick);
236
+ endfor;
237
+ enddef;
238
+
239
+
240
+ fet_beginchar ("brevis notehead", "sM1");
241
+ draw_brevis (1, 1);
242
+
243
+ draw_staff_if_debugging (-2, 2);
244
+ fet_endchar;
245
+
246
+
247
+ fet_beginchar ("double-lined brevis notehead", "sM1double");
248
+ draw_brevis (2, 0.8);
249
+
250
+ draw_staff_if_debugging (-2, 2);
251
+ fet_endchar;
252
+
253
+
254
+ fet_beginchar ("whole notehead", "s0");
255
+ draw_outside_ellipse (1.80 - puff_up_factor / 3.0, 0, 0.707, 0, 0);
256
+ undraw_inside_ellipse (1.30, 125 - puff_up_factor * 10,
257
+ 0.68, 2 stafflinethickness#, 0);
258
+
259
+ whole_notehead_width# := charwd;
260
+
261
+ draw_staff_if_debugging (-2, 2);
262
+ fet_endchar;
263
+
264
+
265
+ fet_beginchar ("half notehead", "s1");
266
+ draw_outside_ellipse (1.53 - puff_up_factor / 3.0, 34, 0.66, 0.17, 0);
267
+ undraw_inside_ellipse (3.25, 33, 0.81, 2.5 stafflinethickness#, 0);
268
+
269
+ half_notehead_width# := charwd;
270
+
271
+ draw_staff_if_debugging (-2, 2);
272
+ fet_endchar;
273
+
274
+
275
+ fet_beginchar ("quarter notehead", "s2");
276
+ draw_quarter_path;
277
+ draw_staff_if_debugging (-2, 2);
278
+ fet_endchar;
279
+
280
+
281
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
282
+
283
+
284
+ fet_beginchar ("whole diamondhead", "s0diamond");
285
+ draw_outside_ellipse (1.80, 0, 0.495, 0, 0);
286
+ undraw_inside_ellipse (1.30, 125, 0.6,
287
+ .4 staff_space# + stafflinethickness#, 0);
288
+
289
+ draw_staff_if_debugging (-2, 2);
290
+ fet_endchar;
291
+
292
+
293
+ fet_beginchar ("half diamondhead", "s1diamond");
294
+ draw_outside_ellipse (1.50, 34, 0.49, 0.17, 0);
295
+ undraw_inside_ellipse (3.5, 33, 0.80,
296
+ .3 staff_space# + 1.5 stafflinethickness#, 0);
297
+
298
+ draw_staff_if_debugging (-2, 2);
299
+ fet_endchar;
300
+
301
+
302
+ fet_beginchar ("quarter diamondhead", "s2diamond");
303
+ draw_outside_ellipse (1.80, 35, 0.495, -0.25, 0);
304
+
305
+ draw_staff_if_debugging (-2, 2);
306
+ fet_endchar;
307
+
308
+
309
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
310
+
311
+
312
+ vardef penposx@# (expr d) =
313
+ begingroup;
314
+ save pat;
315
+ path pat;
316
+
317
+ pat = top z@#
318
+ .. lft z@#
319
+ .. bot z@#
320
+ .. rt z@#
321
+ .. cycle;
322
+ z@#l = pat intersectionpoint (z@# -- infinity * dir (d + 180));
323
+ z@#r = pat intersectionpoint (z@# -- infinity * dir (d));
324
+ endgroup
325
+ enddef;
326
+
327
+
328
+ %
329
+ % UGH: xs not declared as argument.
330
+ %
331
+ def define_triangle_shape =
332
+ save triangle_a, triangle_b, triangle_c;
333
+ save triangle_out_a, triangle_out_b, triangle_out_c;
334
+ save triangle_in, triangle_out;
335
+ save width, depth, height;
336
+ save origin, left_up_dir;
337
+ save exact_left_point, exact_right_point, exact_down_point;
338
+
339
+ path triangle_a, triangle_b, triangle_c;
340
+ path triangle_out_a, triangle_out_b, triangle_out_c;
341
+ path triangle_in, triangle_out;
342
+ pair origin, left_up_dir;
343
+ pair exact_down_point, exact_left_point, exact_right_point;
344
+
345
+ save pen_thick;
346
+ pen_thick# = stafflinethickness# + .1 staff_space#;
347
+ define_pixels (llap);
348
+ define_blacker_pixels (pen_thick);
349
+
350
+ left_up_dir = llap# * dir (90 + tilt);
351
+
352
+ xpart (left_up_dir) * xs - (pen_thick# * xs) / 2 + xpart origin = 0;
353
+ ypart origin = 0;
354
+
355
+ exact_left_point := origin + (left_up_dir xscaled xs);
356
+ exact_down_point := origin + (left_up_dir rotated 120 xscaled xs);
357
+ exact_right_point := origin + (left_up_dir rotated 240 xscaled xs);
358
+
359
+ height# = ypart (exact_left_point + origin) + pen_thick# / 2;
360
+ depth# = -ypart (exact_down_point + origin) + pen_thick# / 2;
361
+ width# = xpart (exact_right_point - exact_left_point)
362
+ + pen_thick# * xs;
363
+
364
+ set_char_box (0, width#, depth#, height#);
365
+
366
+ % Formerly, the shape has simply been drawn with an elliptical pen
367
+ % (`scaled pen_thick xscaled xs'), but the envelope of such a curve
368
+ % is of 6th degree. For the sake of mf2pt1, we approximate it.
369
+
370
+ pickup pencircle scaled pen_thick xscaled xs;
371
+
372
+ z0 = (hround_pixels (xpart origin), 0);
373
+
374
+ z1 = z1' = z0 + llap * dir (90 + tilt) xscaled xs;
375
+ z2 = z2' = z0 + llap * dir (90 + tilt + 120) xscaled xs;
376
+ z3 = z3' = z0 + llap * dir (90 + tilt + 240) xscaled xs;
377
+
378
+ z12 = caveness [.5[z1, z2], z3];
379
+ z23 = caveness [.5[z2, z3], z1];
380
+ z31 = caveness [.5[z3, z1], z2];
381
+
382
+ triangle_a = z1 .. z12 .. z2;
383
+ triangle_b = z2 .. z23 .. z3;
384
+ triangle_c = z3 .. z31 .. z1;
385
+
386
+ penposx1 (angle (direction 0 of triangle_a) - 90);
387
+ penposx2 (angle (direction 0 of triangle_b) - 90);
388
+ penposx3 (angle (direction 0 of triangle_c) - 90);
389
+
390
+ penposx1' (angle (direction infinity of triangle_c) + 90);
391
+ penposx2' (angle (direction infinity of triangle_a) + 90);
392
+ penposx3' (angle (direction infinity of triangle_b) + 90);
393
+
394
+ penposx12 (angle (z12 - z0));
395
+ penposx23 (angle (z23 - z0));
396
+ penposx31 (angle (z31 - z0));
397
+
398
+ z10 = (z0 -- z1) intersectionpoint (z1l .. z12l .. z2'r);
399
+ z20 = (z0 -- z2) intersectionpoint (z2l .. z23l .. z3'r);
400
+ z30 = (z0 -- z3) intersectionpoint (z3l .. z31l .. z1'r);
401
+
402
+ triangle_in = z10
403
+ .. z12l
404
+ .. z20
405
+ & z20
406
+ .. z23l
407
+ .. z30
408
+ & z30
409
+ .. z31l
410
+ .. z10
411
+ & cycle;
412
+
413
+ triangle_out_a = z1r .. z12r .. z2'l;
414
+ triangle_out_b = z2r .. z23r .. z3'l;
415
+ triangle_out_c = z3r .. z31r .. z1'l;
416
+
417
+ triangle_out = top z1
418
+ .. lft z1
419
+ .. z1r{direction 0 of triangle_out_a}
420
+ & triangle_out_a
421
+ & {direction infinity of triangle_out_a}z2'l
422
+ .. lft z2
423
+ .. bot z2
424
+ .. z2r{direction 0 of triangle_out_b}
425
+ & triangle_out_b
426
+ & {direction infinity of triangle_out_b}z3'l
427
+ .. rt z3
428
+ .. top z3
429
+ .. z3r{direction 0 of triangle_out_c}
430
+ & triangle_out_c
431
+ & {direction infinity of triangle_out_c}z1'l
432
+ .. cycle;
433
+
434
+ labels (0, 10, 20, 30);
435
+ penlabels (1, 1', 2, 2', 3, 3', 12, 23, 31);
436
+
437
+ % attachment Y
438
+ charwy := ypart exact_right_point;
439
+ charwx := xpart exact_right_point + .5 pen_thick# * xs;
440
+ chardwy := ypart exact_down_point;
441
+ chardwx := xpart exact_down_point - .5 pen_thick# * xs;
442
+ enddef;
443
+
444
+
445
+ def draw_whole_triangle_head =
446
+ save hei, xs;
447
+ save llap;
448
+ save tilt;
449
+
450
+ tilt = 40;
451
+ llap# = 3/4 noteheight#;
452
+
453
+ xs = 1.5;
454
+ caveness := 0.1;
455
+ define_triangle_shape;
456
+ fill triangle_out;
457
+ unfill triangle_in;
458
+ enddef;
459
+
460
+
461
+ fet_beginchar ("whole trianglehead", "s0triangle");
462
+ draw_whole_triangle_head;
463
+
464
+ draw_staff_if_debugging (-2, 2);
465
+ fet_endchar;
466
+
467
+
468
+ def draw_small_triangle_head =
469
+ save hei, xs;
470
+ save llap;
471
+ save tilt;
472
+
473
+ tilt = 40;
474
+ llap# = 2/3 noteheight#;
475
+ xs = 1.2;
476
+ caveness := 0.1;
477
+ define_triangle_shape;
478
+
479
+ pickup feta_fillpen;
480
+
481
+ filldraw triangle_out;
482
+ unfilldraw triangle_in;
483
+ enddef;
484
+
485
+
486
+ fet_beginchar ("half trianglehead", "s1triangle");
487
+ draw_small_triangle_head;
488
+
489
+ draw_staff_if_debugging (-2, 2);
490
+ fet_endchar;
491
+
492
+
493
+ def draw_closed_triangle_head =
494
+ save hei, xs;
495
+ save llap;
496
+ save tilt;
497
+
498
+ tilt = 40;
499
+ llap# = 2/3 noteheight#;
500
+ xs = 1.0;
501
+ caveness := 0.1;
502
+ define_triangle_shape;
503
+ fill triangle_out;
504
+ enddef;
505
+
506
+
507
+ fet_beginchar ("quarter trianglehead", "s2triangle");
508
+ draw_closed_triangle_head;
509
+
510
+ draw_staff_if_debugging (-2, 2);
511
+ fet_endchar;
512
+
513
+
514
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
515
+ %
516
+ % Slash heads are for indicating improvisation. They are
517
+ % twice as high as normal heads.
518
+ %
519
+ def draw_slash (expr hwid_hash) =
520
+ save exact_height;
521
+ save ne, nw_dist;
522
+ pair ne, nw_dist;
523
+ exact_height = staff_space# + stafflinethickness# / 2;
524
+
525
+ set_char_box (0, 2 exact_height / slash_slope + hwid_hash,
526
+ exact_height, exact_height);
527
+
528
+ charwx := charwd;
529
+ charwy := charht;
530
+
531
+ clearxy;
532
+
533
+ d := d - feta_shift;
534
+
535
+ pickup pencircle scaled blot_diameter;
536
+
537
+ bot y1 = -d;
538
+ top y2 = h;
539
+ lft x1 = 0;
540
+ lft x2 = 2 h / slash_slope;
541
+
542
+ rt x3 = w;
543
+ y3 = y2;
544
+ y4 = y1;
545
+ x3 - x2 = x4 - x1;
546
+
547
+ ne = unitvector (z3 - z4);
548
+ nw_dist = (ne rotated 90) * 0.5 blot_diameter;
549
+
550
+ fill bot z1{left}
551
+ .. (z1 + nw_dist){ne}
552
+ -- (z2 + nw_dist){ne}
553
+ .. top z2{right}
554
+ -- top z3{right}
555
+ .. (z3 - nw_dist){-ne}
556
+ -- (z4 - nw_dist){-ne}
557
+ .. bot z4{left}
558
+ -- cycle;
559
+
560
+ if hwid_hash > 2 slash_thick#:
561
+ save th;
562
+
563
+ th = slash_thick - blot_diameter;
564
+ y6 = y7;
565
+ y5 = y8;
566
+ y3 - y7 = th;
567
+ y5 - y1 = th;
568
+ z6 - z5 = whatever * ne;
569
+ z8 - z7 = whatever * ne;
570
+
571
+ z5 = z1 + whatever * ne + th * (ne rotated -90);
572
+ z8 = z4 + whatever * ne + th * (ne rotated 90);
573
+
574
+ unfill z5
575
+ -- z6
576
+ -- z7
577
+ -- z8
578
+ -- cycle;
579
+ fi
580
+ labels (range 1 thru 10);
581
+ enddef;
582
+
583
+
584
+ fet_beginchar ("whole slashhead", "s0slash");
585
+ draw_slash (4 slash_thick# + 0.5 staff_space#);
586
+
587
+ draw_staff_if_debugging (-2, 2);
588
+ fet_endchar;
589
+
590
+
591
+ fet_beginchar ("half slashhead", "s1slash");
592
+ draw_slash (3.0 slash_thick# + 0.15 staff_space#);
593
+
594
+ draw_staff_if_debugging (-2, 2);
595
+ fet_endchar;
596
+
597
+
598
+ fet_beginchar ("quarter slashhead", "s2slash");
599
+ draw_slash (1.5 slash_thick#);
600
+
601
+ draw_staff_if_debugging (-2, 2);
602
+ fet_endchar;
603
+
604
+
605
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
606
+ %
607
+ % `thick' is the distance between the NE/SW parallel lines in the cross
608
+ % (distance between centres of lines) in multiples of stafflinethickness
609
+ %
610
+ def draw_cross (expr thick) =
611
+ save ne, nw;
612
+ save ne_dist, nw_dist, rt_dist, up_dist;
613
+ save crz_in, crz_out;
614
+ save thickness;
615
+ pair ne, nw;
616
+ pair ne_dist, nw_dist, rt_dist, up_dist;
617
+ path crz_in, crz_out;
618
+
619
+ pen_thick# := 1.2 stafflinethickness#;
620
+ thickness# := thick * stafflinethickness#;
621
+ define_pixels (thickness);
622
+ define_blacker_pixels (pen_thick);
623
+
624
+ pickup pencircle scaled pen_thick;
625
+
626
+ h := h - feta_shift;
627
+
628
+ top y3 = h;
629
+ ne = unitvector ((1, (2 h - pen_thick) / (w - pen_thick)));
630
+ rt x4 = w / 2;
631
+ y5 = 0;
632
+ z4 - z5 = whatever * ne;
633
+ x6 = 0;
634
+ z6 - z3 = whatever * ne;
635
+ z3 - z4 = whatever * (ne yscaled -1);
636
+
637
+ z4 - z3 = whatever * (ne) + (ne rotated -90) * thickness;
638
+
639
+
640
+ x1 = charwd / 2 - .5 pen_thick#;
641
+ z1 = whatever * ne
642
+ + thick / 2 * stafflinethickness# * (ne rotated -90);
643
+
644
+ % labels (1, 2, 3, 4, 5, 6);
645
+
646
+ nw = unitvector (z3 - z4);
647
+
648
+ up_dist = up * 0.5 pen_thick / cosd (angle (ne));
649
+ rt_dist = right * 0.5 pen_thick / sind (angle (ne));
650
+ nw_dist = (ne rotated 90) * 0.5 pen_thick;
651
+ ne_dist = (nw rotated -90) * 0.5 pen_thick;
652
+
653
+ x4' := x4;
654
+ x5' := x5;
655
+ y6' := y6;
656
+
657
+ x4 := hround (x4' + .5 pen_thick) - .5 pen_thick;
658
+ x5 := hfloor (x5' + xpart rt_dist) - xpart rt_dist;
659
+ y6 := vfloor (y6' + ypart up_dist) - ypart up_dist;
660
+
661
+ crz_out = (z6 + up_dist)
662
+ -- (z3 + nw_dist){ne}
663
+ .. (top z3)
664
+ .. (z3 + ne_dist){-nw}
665
+ -- (z4 + ne_dist){-nw}
666
+ .. (rt z4)
667
+ .. (z4 - nw_dist){-ne}
668
+ -- (z5 + rt_dist);
669
+ crz_out := crz_out shifted (0, feta_shift)
670
+ -- reverse crz_out yscaled -1 shifted (0, -feta_eps);
671
+ fill crz_out
672
+ -- reverse crz_out xscaled -1 shifted (-feta_eps, 0)
673
+ -- cycle;
674
+
675
+ if (thick > 1):
676
+ x4 := hround (x4' - xpart rt_dist) + xpart rt_dist;
677
+ x5 := hceiling (x5' - .5 pen_thick) + .5 pen_thick;
678
+ y6 := vfloor (y6' - .5 pen_thick) + .5 pen_thick;
679
+
680
+ crz_in = (bot z6){right}
681
+ .. (z6 - nw_dist){ne}
682
+ -- (z3 - up_dist)
683
+ -- (z4 - rt_dist)
684
+ -- (z5 + nw_dist){-ne}
685
+ .. {down}(lft z5);
686
+ crz_in := crz_in shifted (0, feta_shift)
687
+ -- reverse crz_in yscaled -1 shifted (0, -feta_eps);
688
+ unfill crz_in
689
+ -- reverse crz_in xscaled -1 shifted (-feta_eps, 0)
690
+ -- cycle;
691
+ fi
692
+
693
+ % ugh
694
+ currentpicture := currentpicture shifted (hround (w / 2), 0);
695
+
696
+ charwx := charwd;
697
+ charwy := y1 + feta_shift;
698
+
699
+ z12 = (charwx * hppp, y1 * vppp);
700
+
701
+ labels (12);
702
+ enddef;
703
+
704
+
705
+ fet_beginchar ("whole crossed notehead", "s0cross");
706
+ save wid, hei;
707
+
708
+ wid# := black_notehead_width# + 4 stafflinethickness#;
709
+ hei# := noteheight# + stafflinethickness#;
710
+
711
+ set_char_box (0, wid#, hei# / 2, hei# / 2);
712
+
713
+ draw_cross (3.75);
714
+
715
+ draw_staff_if_debugging (-2, 2);
716
+ fet_endchar;
717
+
718
+
719
+ fet_beginchar ("half crossed notehead", "s1cross");
720
+ save wid, hei;
721
+
722
+ wid# := black_notehead_width# + 2 stafflinethickness#;
723
+ hei# := noteheight# + stafflinethickness# / 2;
724
+
725
+ set_char_box (0, wid#, hei# / 2, hei# / 2);
726
+
727
+ draw_cross (3.0);
728
+
729
+ draw_staff_if_debugging (-2, 2);
730
+ fet_endchar;
731
+
732
+
733
+ fet_beginchar ("crossed notehead", "s2cross");
734
+ wid# := black_notehead_width#;
735
+ hei# := noteheight#;
736
+ set_char_box (0, wid#, hei# / 2, hei# / 2);
737
+
738
+ draw_cross (1.0);
739
+
740
+ draw_staff_if_debugging (-2, 2);
741
+ fet_endchar;
742
+
743
+
744
+ fet_beginchar ("x-circled notehead", "s2xcircle");
745
+ save wid, hei;
746
+ save cthick, cxd, cyd, dy;
747
+
748
+ wid# := black_notehead_width# * sqrt (sqrt2);
749
+ hei# := noteheight# * sqrt (sqrt2);
750
+
751
+ set_char_box (0, wid#, hei# / 2, hei# / 2);
752
+
753
+ d := d - feta_space_shift;
754
+
755
+ cthick# := (1.2 + 1/4) * stafflinethickness#;
756
+ define_blacker_pixels (cthick);
757
+
758
+ cxd := w - cthick;
759
+ cyd := h + d - cthick / 2;
760
+
761
+ dy = .5 (h - d);
762
+
763
+ pickup pencircle scaled cthick;
764
+
765
+ fill fullcircle xscaled (cxd + cthick)
766
+ yscaled (cyd + cthick)
767
+ shifted (w / 2, dy);
768
+ unfill fullcircle xscaled (cxd - cthick)
769
+ yscaled (cyd - cthick)
770
+ shifted (w / 2, dy);
771
+
772
+ xpos := .5 cxd / sqrt2;
773
+ ypos := .5 cyd / sqrt2;
774
+
775
+ pickup penrazor scaled cthick rotated (angle (xpos, ypos) + 90);
776
+ draw (-xpos + w / 2, -ypos + dy)
777
+ -- (xpos + w / 2, ypos + dy);
778
+
779
+ pickup penrazor scaled cthick rotated (angle (xpos, -ypos) + 90);
780
+ draw (-xpos + w / 2, ypos + dy)
781
+ -- (xpos + w / 2, -ypos + dy);
782
+
783
+ charwx := charwd;
784
+ charwy := 0;
785
+
786
+ z12 = (charwx * hppp, charwy * vppp);
787
+ labels (12);
788
+
789
+ draw_staff_if_debugging (-2, 2);
790
+ fet_endchar;
791
+
792
+
793
+ %%%%%%%%
794
+ %
795
+ % SOLFA SHAPED NOTES
796
+ %
797
+ %
798
+ % Note: For whole and half notes, the `fill' curve (p_out) is offset from
799
+ % the points that specify the outer geometry, because we need to add
800
+ % the rounding. In contrast, the inner curve is not offset, because
801
+ % there is no rounding.
802
+ %
803
+ % This means that to get a line of thick_factor * pen_thickness,
804
+ % we need to offset the inner curve by
805
+ %
806
+ % (thick_factor - 0.5) * pen_thickness
807
+ %
808
+ % or by
809
+ %
810
+ % (2 * thick_factor - 1) * half_pen_thickness
811
+ %
812
+ save solfa_pen_thick;
813
+ solfa_pen_thick# = 1.3 stafflinethickness#;
814
+ define_blacker_pixels (solfa_pen_thick);
815
+
816
+ save solfa_pen_radius;
817
+ solfa_pen_radius = 0.5 solfa_pen_thick;
818
+
819
+ save solfa_base_notewidth;
820
+ solfa_base_notewidth# := black_notehead_width#;
821
+
822
+ solfa_whole_width := 1.0;
823
+ solfa_half_width := 1.0;
824
+ solfa_quarter_width := 1.0;
825
+
826
+
827
+ %%% Do head
828
+ %
829
+ % Triangle with base parallel to staff lines.
830
+ %
831
+
832
+ def draw_do_head (expr width_factor, thickness_factor) =
833
+ save p_in, p_out;
834
+ save left_dist, right_dist, bottom_dist;
835
+ path p_in, p_out;
836
+ pair left_dist, right_dist, bottom_dist;
837
+
838
+ set_char_box (0, width_factor * solfa_base_notewidth#,
839
+ 0.5 solfa_noteheight#, 0.5 solfa_noteheight#);
840
+
841
+ bottom_thick_factor := 2 * thickness_factor - 1;
842
+ % no different thickness for left side if we want uniform thickness
843
+ if thickness_factor = 1:
844
+ left_thick_factor := 1;
845
+ else:
846
+ left_thick_factor := 0.7 * bottom_thick_factor;
847
+ fi
848
+
849
+ save pen_radius;
850
+ pen_radius := min (solfa_pen_radius,
851
+ (h + d) / (3 * (1 + bottom_thick_factor)));
852
+
853
+ pickup pencircle scaled (2 * pen_radius);
854
+
855
+ bot y1 = -d;
856
+ y1 = y2;
857
+ lft x1 = 0;
858
+ rt x2 = w;
859
+ top y3 = h;
860
+ x3 = .5 [x1, x2];
861
+
862
+ left_dist = (unitvector (z3 - z1) rotated 90) * pen_radius;
863
+ right_dist = (unitvector (z2 - z3) rotated 90) * pen_radius;
864
+ bottom_dist = (0,1) * pen_radius;
865
+
866
+ save pa, pb, pc;
867
+ path pa, pb, pc;
868
+ save point_a, point_b, point_c;
869
+ pair point_a, point_b, point_c;
870
+
871
+ pa := (z1 - left_thick_factor * left_dist)
872
+ -- (z3 - left_thick_factor * left_dist);
873
+ pb := (z1 + bottom_thick_factor * bottom_dist)
874
+ -- (z2 + bottom_thick_factor * bottom_dist);
875
+ pc := (z2 - right_dist)
876
+ -- (z3 - right_dist);
877
+
878
+ point_a := pa intersectionpoint pb;
879
+ point_b := pb intersectionpoint pc;
880
+ point_c := pc intersectionpoint pa;
881
+
882
+ p_in := point_a
883
+ -- point_b
884
+ -- point_c
885
+ -- cycle;
886
+
887
+ p_out := bot z1
888
+ -- bot z2{right}
889
+ .. rt z2{up}
890
+ .. (z2 + right_dist){z3 - z2}
891
+ -- (z3 + right_dist){z3 - z2}
892
+ .. top z3{left}
893
+ .. (z3 + left_dist){z1 - z3}
894
+ -- (z1 + left_dist){z1 - z3}
895
+ .. lft z1{down}
896
+ .. {right}cycle;
897
+
898
+ labels (1, 2, 3);
899
+
900
+ charwx := charwd;
901
+ charwy := -chardp + 0.5 stafflinethickness#;
902
+ chardwy := charwy;
903
+ enddef;
904
+
905
+ save do_weight;
906
+ do_weight := 2;
907
+
908
+
909
+ fet_beginchar ("whole dohead", "s0do");
910
+ draw_do_head (solfa_whole_width, do_weight);
911
+ fill p_out;
912
+ unfill p_in;
913
+ fet_endchar;
914
+
915
+
916
+ fet_beginchar ("half dohead", "s1do");
917
+ draw_do_head (solfa_half_width, do_weight);
918
+ fill p_out;
919
+ unfill p_in;
920
+ fet_endchar;
921
+
922
+
923
+ fet_beginchar ("quarter dohead", "s2do");
924
+ draw_do_head (solfa_quarter_width, do_weight);
925
+ fill p_out;
926
+ fet_endchar;
927
+
928
+
929
+ fet_beginchar ("whole thin dohead", "s0doThin");
930
+ draw_do_head (solfa_whole_width, 1);
931
+ fill p_out;
932
+ unfill p_in;
933
+ fet_endchar;
934
+
935
+
936
+ fet_beginchar ("half thin dohead", "s1doThin");
937
+ draw_do_head (solfa_half_width, 1);
938
+ fill p_out;
939
+ unfill p_in;
940
+ fet_endchar;
941
+
942
+
943
+ fet_beginchar ("quarter thin dohead", "s2doThin");
944
+ draw_do_head (solfa_quarter_width, 1);
945
+ fill p_out;
946
+ fet_endchar;
947
+
948
+
949
+ %
950
+ % re - flat top, curved bottom:
951
+ %
952
+ % (0,h/2) {dir -90}
953
+ % .. (w/2,-h/2)
954
+ % .. {dir 90} (w,h/2)
955
+ % -- cycle;
956
+ %
957
+ % (broader along the base and with more vertical sides for half and
958
+ % whole notes)
959
+ %
960
+ % Note: According to some shape-note singers, there should be no size
961
+ % differences for half and whole notes, contrary to the comment above.
962
+ % Consequently, we have made them all the same width.
963
+ %
964
+ % stem attachment: h/2
965
+ %
966
+ def draw_re_head (expr width_factor, thickness_factor) =
967
+ save p_in, p_out;
968
+ path p_in, p_out;
969
+
970
+ set_char_box (0, width_factor * solfa_base_notewidth#,
971
+ 0.5 solfa_noteheight#, 0.5 solfa_noteheight#);
972
+
973
+ save offset;
974
+ offset = (2 * thickness_factor - 1);
975
+
976
+ save curve_start;
977
+ curve_start = 0.7;
978
+
979
+ save pen_radius;
980
+
981
+ pen_radius := min (solfa_pen_radius,
982
+ (h + d) * (1-curve_start) / (1+ offset));
983
+
984
+ pickup pencircle scaled (2 * pen_radius);
985
+
986
+ lft x1 = 0;
987
+ top y1 = h;
988
+ x2 = x1;
989
+ y2 = curve_start [y3, y1];
990
+ bot y3 = -d;
991
+ x3 = .5 [x2, x4];
992
+ rt x4 = w;
993
+ y4 = y2;
994
+ y5 = y1;
995
+ x5 = x4;
996
+
997
+ labels (range 1 thru 5);
998
+
999
+ p_in := (z1 + pen_radius * (1, -1 * offset))
1000
+ -- rt z2{down}
1001
+ .. ((top z3) + (0, offset * pen_radius))
1002
+ .. lft z4{up}
1003
+ -- (z5 + pen_radius * (-1, -1 * offset))
1004
+ -- cycle;
1005
+
1006
+ p_out := lft z1
1007
+ -- lft z2{down}
1008
+ .. bot z3
1009
+ .. rt z4{up}
1010
+ -- rt z5{up}
1011
+ .. top z5{left}
1012
+ -- top z1{left}
1013
+ .. {down}cycle;
1014
+
1015
+ charwx := charwd;
1016
+ charwy := curve_start [-chardp, charht];
1017
+ chardwy := charwy
1018
+ enddef;
1019
+
1020
+
1021
+ save re_weight;
1022
+ re_weight := 2;
1023
+
1024
+ fet_beginchar ("whole rehead", "s0re");
1025
+ draw_re_head (solfa_whole_width, re_weight);
1026
+ fill p_out;
1027
+ unfill p_in;
1028
+ fet_endchar;
1029
+
1030
+
1031
+ fet_beginchar ("half rehead", "s1re");
1032
+ draw_re_head (solfa_half_width, re_weight);
1033
+ fill p_out;
1034
+ unfill p_in;
1035
+ fet_endchar;
1036
+
1037
+
1038
+ fet_beginchar ("quarter rehead", "s2re");
1039
+ draw_re_head (solfa_quarter_width, re_weight);
1040
+ fill p_out;
1041
+ fet_endchar;
1042
+
1043
+
1044
+ fet_beginchar ("whole thin rehead", "s0reThin");
1045
+ draw_re_head (solfa_whole_width, 1);
1046
+ fill p_out;
1047
+ unfill p_in;
1048
+ fet_endchar;
1049
+
1050
+
1051
+ fet_beginchar ("half thin rehead", "s1reThin");
1052
+ draw_re_head (solfa_half_width, 1);
1053
+ fill p_out;
1054
+ unfill p_in;
1055
+ fet_endchar;
1056
+
1057
+
1058
+ fet_beginchar ("quarter thin rehead", "s2reThin");
1059
+ draw_re_head (solfa_quarter_width, 1);
1060
+ fill p_out;
1061
+ fet_endchar;
1062
+
1063
+
1064
+ %%%% mi head -- diamond shape
1065
+ %
1066
+ % two versions, depending on whether the `strong' lines are on the nw & se
1067
+ % or the ne & sw
1068
+ %
1069
+ def draw_mi_head (expr width_factor, thickness_factor, mirror) =
1070
+ save path_out, path_in;
1071
+ save ne_dist, se_dist, ne, se;
1072
+ save path_a, path_b, path_c, path_d;
1073
+ path path_out, path_in;
1074
+ pair ne_dist, se_dist, ne, se;
1075
+ path path_a, path_b, path_c, path_d;
1076
+ save inner_path;
1077
+ path inner_path;
1078
+
1079
+ set_char_box (0, width_factor * solfa_base_notewidth#,
1080
+ 0.5 solfa_noteheight#, 0.5 solfa_noteheight#);
1081
+
1082
+ save offset;
1083
+ offset := 2 * thickness_factor - 1;
1084
+
1085
+ save note_diagonal;
1086
+
1087
+ note_diagonal := w / 2 ++ (h + d) / 2;
1088
+
1089
+ save pen_radius;
1090
+
1091
+ pen_radius := min (solfa_pen_radius,
1092
+ .3 * note_diagonal / (1 + offset));
1093
+
1094
+ pickup pencircle scaled (2 * pen_radius);
1095
+
1096
+ lft x1 = 0;
1097
+ y1 = 0;
1098
+ bot y2 = -d;
1099
+ x2 = .5 [x1, x3];
1100
+ rt x3 = w;
1101
+ x4 = x2;
1102
+ y3 = y1;
1103
+ top y4 = h;
1104
+
1105
+ % inner sides are parallel to outer sides
1106
+ z6 - z5 = whatever * (z2 - z1);
1107
+ z8 - z7 = whatever * (z4 - z3);
1108
+ z8 - z5 = whatever * (z4 - z1);
1109
+ z7 - z6 = whatever * (z3 - z2);
1110
+
1111
+ ne = unitvector (z4 - z1);
1112
+ se = unitvector (z2 - z1);
1113
+
1114
+ ne_dist = (ne rotated 90) * pen_radius;
1115
+ se_dist = (se rotated 90) * pen_radius;
1116
+
1117
+ path_a := (z1 + se_dist)
1118
+ -- (z2 + se_dist);
1119
+ path_b := (z2 + (ne_dist * offset))
1120
+ -- (z3 + (ne_dist * offset));
1121
+ path_c := (z3 - se_dist)
1122
+ -- (z4 - se_dist);
1123
+ path_d := (z4 - (ne_dist * offset))
1124
+ -- (z1 - (ne_dist * offset));
1125
+
1126
+ z5 = path_a intersectionpoint path_d;
1127
+ z7 = path_b intersectionpoint path_c;
1128
+
1129
+ labels (range 1 thru 8);
1130
+
1131
+ inner_path := z5
1132
+ -- z6
1133
+ -- z7
1134
+ -- z8
1135
+ -- cycle;
1136
+
1137
+ if mirror:
1138
+ path_in := inner_path;
1139
+ else:
1140
+ path_in := inner_path reflectedabout (z2, z4);
1141
+ fi
1142
+
1143
+ path_out := lft z1 {down}
1144
+ .. (z1 - se_dist){se}
1145
+ -- (z2 - se_dist){se}
1146
+ .. bot z2 {right}
1147
+ .. (z2 - ne_dist){ne}
1148
+ -- (z3 - ne_dist){ne}
1149
+ .. rt z3 {up}
1150
+ .. (z3 + se_dist){-se}
1151
+ -- (z4 + se_dist){-se}
1152
+ .. top z4 {left}
1153
+ .. (z4 + ne_dist){-ne}
1154
+ -- (z1 + ne_dist){-ne}
1155
+ .. cycle;
1156
+ enddef;
1157
+
1158
+
1159
+ save mi_weight;
1160
+ mi_weight := 2;
1161
+
1162
+ fet_beginchar ("whole mihead", "s0mi");
1163
+ draw_mi_head (solfa_whole_width, mi_weight, false);
1164
+ fill path_out;
1165
+ unfill path_in;
1166
+ fet_endchar;
1167
+
1168
+
1169
+ fet_beginchar ("half mihead", "s1mi");
1170
+ draw_mi_head (solfa_quarter_width, mi_weight, false);
1171
+ fill path_out;
1172
+ unfill path_in;
1173
+ fet_endchar;
1174
+
1175
+
1176
+ fet_beginchar ("quarter mihead", "s2mi");
1177
+ draw_mi_head (solfa_quarter_width, mi_weight, false);
1178
+ fill path_out;
1179
+ fet_endchar;
1180
+
1181
+
1182
+ fet_beginchar ("whole mirror mihead", "s0miMirror");
1183
+ draw_mi_head (solfa_whole_width, mi_weight, true);
1184
+ fill path_out;
1185
+ unfill path_in;
1186
+ fet_endchar;
1187
+
1188
+
1189
+ fet_beginchar ("half mirror mihead", "s1miMirror");
1190
+ draw_mi_head (solfa_quarter_width, mi_weight, true);
1191
+ fill path_out;
1192
+ unfill path_in;
1193
+ fet_endchar;
1194
+
1195
+
1196
+ fet_beginchar ("quarter mirror mihead", "s2miMirror");
1197
+ draw_mi_head (solfa_quarter_width, mi_weight, true);
1198
+ fill path_out;
1199
+ fet_endchar;
1200
+
1201
+
1202
+ fet_beginchar ("whole thin mihead", "s0miThin");
1203
+ draw_mi_head (solfa_whole_width, 1, false);
1204
+ fill path_out;
1205
+ unfill path_in;
1206
+ fet_endchar;
1207
+
1208
+
1209
+ fet_beginchar ("half thin mihead", "s1miThin");
1210
+ draw_mi_head (solfa_quarter_width, 1, false);
1211
+ fill path_out;
1212
+ unfill path_in;
1213
+ fet_endchar;
1214
+
1215
+
1216
+ fet_beginchar ("quarter thin mihead", "s2miThin");
1217
+ draw_mi_head (solfa_quarter_width, 1, false);
1218
+ fill path_out;
1219
+ fet_endchar;
1220
+
1221
+
1222
+ %%%% fa head
1223
+ %
1224
+ % Right triangle, hypotenuse from nw to se corner. Stem attaches on
1225
+ % vertical side in direction of horizontal side.
1226
+ %
1227
+ def draw_fa_head (expr width_factor, thickness_factor) =
1228
+ set_char_box (0, width_factor * solfa_base_notewidth#,
1229
+ 0.5 solfa_noteheight#, 0.5 solfa_noteheight#);
1230
+
1231
+ save p_down_in, p_down_out, p_up_in, p_up_out, nw_dist, nw;
1232
+ path p_down_in, p_down_out, p_up_in, p_up_out;
1233
+ save path_a, path_b, path_c;
1234
+ path path_a, path_b, path_c;
1235
+ pair nw_dist, nw;
1236
+
1237
+ save offset;
1238
+ offset := 2 * thickness_factor - 1;
1239
+
1240
+ save pen_radius;
1241
+ pen_radius := min (solfa_pen_radius,
1242
+ .33 * (h + d) / (1 + offset));
1243
+
1244
+ pickup pencircle scaled (2 * pen_radius);
1245
+
1246
+ lft x1 = 0;
1247
+ top y1 = h;
1248
+
1249
+ rt x2 = w;
1250
+ y2 = y1;
1251
+ bot y3 = -d;
1252
+ x3 = x2;
1253
+
1254
+ y4 = y3;
1255
+ x4 = x1;
1256
+
1257
+ labels (1, 2, 3, 4);
1258
+
1259
+ nw = unitvector (z1 - z3);
1260
+ nw_dist = (nw rotated 90) * pen_radius;
1261
+
1262
+ path_a := (z1 - (0,1) * offset * pen_radius)
1263
+ -- (z2 - (0,1) * offset * pen_radius);
1264
+ path_b := (z2 - (1,0) * pen_radius)
1265
+ -- (z3 - (1,0) * pen_radius);
1266
+ path_c := (z3 - nw_dist)
1267
+ -- (z1 - nw_dist);
1268
+
1269
+ p_up_in := (path_a intersectionpoint path_b)
1270
+ -- (path_b intersectionpoint path_c)
1271
+ -- (path_c intersectionpoint path_a)
1272
+ -- cycle;
1273
+
1274
+ p_up_out := lft z1{down}
1275
+ .. (z1 + nw_dist){-nw}
1276
+ -- (z3 + nw_dist){-nw}
1277
+ .. bot z3{right}
1278
+ .. rt z3{up}
1279
+ -- rt z2{up}
1280
+ .. top z2{left}
1281
+ -- top z1{left}
1282
+ .. cycle;
1283
+
1284
+ p_down_in := p_up_in rotated 180 shifted (w, 0);
1285
+ p_down_out := p_up_out rotated 180 shifted (w, 0);
1286
+
1287
+ charwy := 0.0;
1288
+ charwx := charwd;
1289
+ enddef;
1290
+
1291
+ save fa_weight;
1292
+ fa_weight := 1.75;
1293
+
1294
+ fet_beginchar ("whole fa up head", "u0fa");
1295
+ draw_fa_head (solfa_whole_width, fa_weight);
1296
+ fill p_up_out;
1297
+ unfill p_up_in;
1298
+ fet_endchar;
1299
+
1300
+
1301
+ fet_beginchar ("whole fa down head", "d0fa");
1302
+ draw_fa_head (solfa_whole_width, fa_weight);
1303
+ fill p_down_out;
1304
+ unfill p_down_in;
1305
+ fet_endchar;
1306
+
1307
+
1308
+ fet_beginchar ("half fa up head", "u1fa");
1309
+ draw_fa_head (solfa_half_width, fa_weight);
1310
+ fill p_up_out;
1311
+ unfill p_up_in;
1312
+ fet_endchar;
1313
+
1314
+
1315
+ fet_beginchar ("half fa down head", "d1fa");
1316
+ draw_fa_head (solfa_half_width, fa_weight);
1317
+ fill p_down_out;
1318
+ unfill p_down_in;
1319
+ fet_endchar;
1320
+
1321
+
1322
+ fet_beginchar ("quarter fa up head", "u2fa");
1323
+ draw_fa_head (solfa_quarter_width, fa_weight);
1324
+ fill p_up_out;
1325
+ fet_endchar;
1326
+
1327
+
1328
+ fet_beginchar ("quarter fa down head", "d2fa");
1329
+ draw_fa_head (solfa_quarter_width, fa_weight);
1330
+ fill p_down_out;
1331
+ fet_endchar;
1332
+
1333
+
1334
+ fet_beginchar ("whole thin fa up head", "u0faThin");
1335
+ draw_fa_head (solfa_whole_width, 1);
1336
+ fill p_up_out;
1337
+ unfill p_up_in;
1338
+ fet_endchar;
1339
+
1340
+
1341
+ fet_beginchar ("whole thin fa down head", "d0faThin");
1342
+ draw_fa_head (solfa_whole_width, 1);
1343
+ fill p_down_out;
1344
+ unfill p_down_in;
1345
+ fet_endchar;
1346
+
1347
+
1348
+ fet_beginchar ("half thin fa up head", "u1faThin");
1349
+ draw_fa_head (solfa_half_width, 1);
1350
+ fill p_up_out;
1351
+ unfill p_up_in;
1352
+ fet_endchar;
1353
+
1354
+
1355
+ fet_beginchar ("half thin fa down head", "d1faThin");
1356
+ draw_fa_head (solfa_half_width, 1);
1357
+ fill p_down_out;
1358
+ unfill p_down_in;
1359
+ fet_endchar;
1360
+
1361
+
1362
+ fet_beginchar ("quarter thin fa up head", "u2faThin");
1363
+ draw_fa_head (solfa_quarter_width, 1);
1364
+ fill p_up_out;
1365
+ fet_endchar;
1366
+
1367
+
1368
+ fet_beginchar ("quarter thin fa down head", "d2faThin");
1369
+ draw_fa_head (solfa_quarter_width, 1);
1370
+ fill p_down_out;
1371
+ fet_endchar;
1372
+
1373
+
1374
+
1375
+ %%%% sol head
1376
+ %
1377
+ % Note: sol head is the same shape as a standard music head, and doesn't
1378
+ % vary from style to style. However, width is constant with duration,
1379
+ % so we can't just use the standard note font.
1380
+ %
1381
+ def draw_sol_head (expr filled) =
1382
+ draw_outside_ellipse (1.49 - puff_up_factor / 3.0, 31, 0.707, 0, 0);
1383
+ if not filled:
1384
+ undraw_inside_ellipse (2.5 - puff_up_factor / 3.0, 31, 0.707,
1385
+ 3.5 stafflinethickness#, 0);
1386
+ fi
1387
+ draw_staff_if_debugging (-2, 2);
1388
+ enddef;
1389
+
1390
+ fet_beginchar ("whole solhead", "s0sol");
1391
+ draw_sol_head ( false);
1392
+ fet_endchar;
1393
+
1394
+
1395
+ fet_beginchar ("half solhead", "s1sol");
1396
+ draw_sol_head ( false);
1397
+ fet_endchar;
1398
+
1399
+
1400
+ fet_beginchar ("quarter solhead", "s2sol");
1401
+ draw_sol_head ( true);
1402
+ fet_endchar;
1403
+
1404
+
1405
+ %%%% la head
1406
+ %
1407
+ % Rectangle head
1408
+ %
1409
+ def draw_la_head (expr width_factor, thickness_factor) =
1410
+ set_char_box (0, width_factor * solfa_base_notewidth#,
1411
+ 0.5 solfa_noteheight#, 0.5 solfa_noteheight#);
1412
+ save p_in, p_out;
1413
+ path p_in, p_out;
1414
+
1415
+ save offset;
1416
+ offset := 2 * thickness_factor - 1;
1417
+
1418
+ save pen_radius;
1419
+ pen_radius := min (solfa_pen_radius,
1420
+ .35 * (h + d) / (1 + offset));
1421
+
1422
+ pickup pencircle scaled (2 * pen_radius);
1423
+
1424
+ lft x1 = 0;
1425
+ top y1 = h;
1426
+
1427
+ rt x2 = w;
1428
+ y2 = y1;
1429
+ bot y3 = -d;
1430
+ x3 = x2;
1431
+
1432
+ y4 = y3;
1433
+ x4 = x1;
1434
+
1435
+ labels (range 1 thru 4);
1436
+
1437
+ p_in := (z1 + pen_radius * (1, -offset))
1438
+ -- (z2 + pen_radius * (-1, -offset))
1439
+ -- (z3 + pen_radius * (-1, offset))
1440
+ -- (z4 + pen_radius * (1, offset))
1441
+ -- cycle;
1442
+
1443
+ p_out := top z1
1444
+ -- top z2{right}
1445
+ .. rt z2{down}
1446
+ -- rt z3{down}
1447
+ .. bot z3{left}
1448
+ -- bot z4{left}
1449
+ .. lft z4{up}
1450
+ -- lft z1{up}
1451
+ .. cycle;
1452
+ enddef;
1453
+
1454
+
1455
+ save la_weight;
1456
+ la_weight := 2;
1457
+
1458
+ fet_beginchar ("whole lahead", "s0la");
1459
+ draw_la_head (solfa_whole_width, la_weight);
1460
+ fill p_out;
1461
+ unfill p_in;
1462
+ fet_endchar;
1463
+
1464
+
1465
+ fet_beginchar ("half lahead", "s1la");
1466
+ draw_la_head (solfa_half_width, la_weight);
1467
+ fill p_out;
1468
+ unfill p_in;
1469
+ fet_endchar;
1470
+
1471
+
1472
+ fet_beginchar ("quarter lahead", "s2la");
1473
+ draw_la_head (solfa_quarter_width, la_weight);
1474
+ fill p_out;
1475
+ fet_endchar;
1476
+
1477
+
1478
+ fet_beginchar ("whole thin lahead", "s0laThin");
1479
+ draw_la_head (solfa_whole_width, 1);
1480
+ fill p_out;
1481
+ unfill p_in;
1482
+ fet_endchar;
1483
+
1484
+
1485
+ fet_beginchar ("half thin lahead", "s1laThin");
1486
+ draw_la_head (solfa_half_width, 1);
1487
+ fill p_out;
1488
+ unfill p_in;
1489
+ fet_endchar;
1490
+
1491
+
1492
+ fet_beginchar ("quarter lahead", "s2laThin");
1493
+ draw_la_head (solfa_quarter_width, 1);
1494
+ fill p_out;
1495
+ fet_endchar;
1496
+
1497
+
1498
+ %%%% ti head
1499
+ %
1500
+ % `Snow-cone', V with rounded top.
1501
+ %
1502
+ def draw_ti_head (expr width_factor, thickness_factor) =
1503
+ set_char_box (0, width_factor * solfa_base_notewidth#,
1504
+ 0.5 solfa_noteheight#, 0.5 solfa_noteheight#);
1505
+ save p_in, p_out, p_top, p_top_in;
1506
+ path p_in, p_out, p_top, p_top_in;
1507
+ save cone_height;
1508
+ cone_height = 0.64;
1509
+
1510
+ save offset;
1511
+ offset := 2 * thickness_factor - 1;
1512
+
1513
+ save pen_radius;
1514
+ pen_radius := min (solfa_pen_radius,
1515
+ .4 * (h + d) / (1 + offset));
1516
+
1517
+ pickup pencircle scaled (2 * pen_radius);
1518
+
1519
+ x1 = .5 [x2, x4];
1520
+ bot y1 = -d;
1521
+ lft x2 = 0;
1522
+ y2 = cone_height [y1, y3];
1523
+ rt x4 = w;
1524
+ y4 = y2;
1525
+ x3 = x1;
1526
+ top y3 = h;
1527
+ x5 = x1;
1528
+ y5 = y1 + offset * pen_radius;
1529
+
1530
+ labels (range 1 thru 4);
1531
+
1532
+ save nw_dist, sw_dist, nw, sw;
1533
+ pair nw_dist, sw_dist, nw, sw;
1534
+
1535
+ nw = unitvector (z2 - z1);
1536
+ sw = unitvector (z1 - z4);
1537
+
1538
+ nw_dist = (nw rotated 90) * pen_radius;
1539
+ sw_dist = (sw rotated 90) * pen_radius;
1540
+
1541
+ p_top := (z2 + nw * pen_radius)
1542
+ .. (top z3){right}
1543
+ .. (z4 - sw * pen_radius);
1544
+
1545
+ p_top_in := (z2 - nw * offset * pen_radius)
1546
+ .. (z3 - (0,1) * pen_radius) {right}
1547
+ .. (z4 + sw * offset * pen_radius);
1548
+
1549
+ save path_a, path_b;
1550
+ path path_a, path_b;
1551
+ path_a := z2
1552
+ -- z5;
1553
+ path_b := z5
1554
+ -- z4;
1555
+
1556
+ z6 = path_a intersectionpoint p_top_in;
1557
+ z7 = path_b intersectionpoint p_top_in;
1558
+
1559
+ p_in := z5
1560
+ -- z6
1561
+ .. bot z3
1562
+ .. z7
1563
+ -- cycle;
1564
+
1565
+ p_out := bot z1
1566
+ .. (z1 + nw_dist)
1567
+ -- (z2 + nw_dist)
1568
+ .. lft z2
1569
+ .. (z2 + nw * pen_radius){direction 0 of p_top}
1570
+ & p_top
1571
+ & {direction infinity of p_top}(z4 - sw * pen_radius)
1572
+ .. rt z4
1573
+ .. (z4 + sw_dist)
1574
+ -- (z1 + sw_dist)
1575
+ .. cycle;
1576
+
1577
+ charwx := charwd;
1578
+ charwy := cone_height [-chardp, charht];
1579
+ chardwy := charwy;
1580
+ enddef;
1581
+
1582
+
1583
+ save ti_weight;
1584
+ ti_weight := 2;
1585
+
1586
+ fet_beginchar ("whole tihead", "s0ti");
1587
+ draw_ti_head (solfa_whole_width, ti_weight);
1588
+ fill p_out;
1589
+ unfill p_in;
1590
+ fet_endchar;
1591
+
1592
+
1593
+ fet_beginchar ("half tihead", "s1ti");
1594
+ draw_ti_head (solfa_half_width, ti_weight);
1595
+ fill p_out;
1596
+ unfill p_in;
1597
+ fet_endchar;
1598
+
1599
+
1600
+ fet_beginchar ("quarter tihead", "s2ti");
1601
+ draw_ti_head (solfa_quarter_width, ti_weight);
1602
+ fill p_out;
1603
+ fet_endchar;
1604
+
1605
+
1606
+ fet_beginchar ("whole thin tihead", "s0tiThin");
1607
+ draw_ti_head (solfa_whole_width, 1);
1608
+ fill p_out;
1609
+ unfill p_in;
1610
+ fet_endchar;
1611
+
1612
+
1613
+ fet_beginchar ("half thin tihead", "s1tiThin");
1614
+ draw_ti_head (solfa_half_width, 1);
1615
+ fill p_out;
1616
+ unfill p_in;
1617
+ fet_endchar;
1618
+
1619
+
1620
+ fet_beginchar ("quarter thin tihead", "s2tiThin");
1621
+ draw_ti_head (solfa_quarter_width, 1);
1622
+ fill p_out;
1623
+ fet_endchar;
1624
+
1625
+
1626
+ %%%%%% Funk shape note heads
1627
+ %
1628
+ % Funk heads are narrower than Aiken and Sacred Harp, so we need a new
1629
+ % width.
1630
+ %
1631
+ funk_notehead_width := 0.75;
1632
+
1633
+
1634
+ %%%%%% Funk do head
1635
+ % Parabolic on one side, vertical line on other
1636
+ % Has up and down shapes for *all* notes
1637
+ %
1638
+ def draw_Funk_do_head (expr width_factor, thickness_factor) =
1639
+ set_char_box (0, width_factor * solfa_base_notewidth#,
1640
+ 0.5 solfa_noteheight#, 0.5 solfa_noteheight#);
1641
+
1642
+ save offset;
1643
+ offset := 2 * thickness_factor - 1;
1644
+
1645
+ save pen_radius;
1646
+ pen_radius := min (solfa_pen_radius,
1647
+ .3 * (h + d) / (1 + offset));
1648
+
1649
+ pickup pencircle scaled (2 * pen_radius);
1650
+
1651
+ rt x1 = w;
1652
+ bot y1 = -d;
1653
+
1654
+ lft x2 = 0;
1655
+ y2 = 0.5 [y1, y3];
1656
+
1657
+ x3 = x1;
1658
+ top y3 = h;
1659
+
1660
+ x4 = x1 - pen_radius;
1661
+ y4 = y1 + offset * pen_radius;
1662
+
1663
+ y5 = y2;
1664
+ x5 = x2 + pen_radius;
1665
+
1666
+ x6 = x4;
1667
+ y6 = y3 - offset * pen_radius;
1668
+
1669
+ save p_up_in, p_up_out, p_down_in, p_down_out;
1670
+ path p_up_in, p_up_out, p_down_in, p_down_out;
1671
+
1672
+ p_down_in := z4{left}
1673
+ ... z5{up}
1674
+ ... z6{right}
1675
+ -- cycle;
1676
+
1677
+ p_down_out := bot z1{left}
1678
+ .. lft z2{up}
1679
+ .. top z3{right}
1680
+ .. rt z3{down}
1681
+ -- rt z1{down}
1682
+ .. cycle;
1683
+
1684
+ p_up_in := p_down_in rotated 180 shifted (w,0);
1685
+ p_up_out := p_down_out rotated 180 shifted (w,0);
1686
+
1687
+ enddef;
1688
+
1689
+
1690
+ save funk_do_weight;
1691
+ funk_do_weight := 1.7;
1692
+
1693
+ fet_beginchar ("whole up Funk dohead", "u0doFunk");
1694
+ draw_Funk_do_head (funk_notehead_width, funk_do_weight);
1695
+ fill p_up_out;
1696
+ unfill p_up_in;
1697
+ fet_endchar;
1698
+
1699
+
1700
+ fet_beginchar ("whole down Funk dohead", "d0doFunk");
1701
+ draw_Funk_do_head (funk_notehead_width, funk_do_weight);
1702
+ fill p_down_out;
1703
+ unfill p_down_in;
1704
+ fet_endchar;
1705
+
1706
+
1707
+ fet_beginchar ("half up Funk dohead", "u1doFunk");
1708
+ draw_Funk_do_head (funk_notehead_width, funk_do_weight);
1709
+ fill p_up_out;
1710
+ unfill p_up_in;
1711
+ fet_endchar;
1712
+
1713
+
1714
+ fet_beginchar ("half down Funk dohead", "d1doFunk");
1715
+ draw_Funk_do_head (funk_notehead_width, funk_do_weight);
1716
+ fill p_down_out;
1717
+ unfill p_down_in;
1718
+ fet_endchar;
1719
+
1720
+
1721
+ fet_beginchar ("quarter up Funk dohead", "u2doFunk");
1722
+ draw_Funk_do_head (funk_notehead_width, funk_do_weight);
1723
+ fill p_up_out;
1724
+ fet_endchar;
1725
+
1726
+
1727
+ fet_beginchar ("quarter down Funk dohead", "d2doFunk");
1728
+ draw_Funk_do_head (funk_notehead_width, funk_do_weight);
1729
+ fill p_down_out;
1730
+ fet_endchar;
1731
+
1732
+
1733
+ %%%%%% Funk re head
1734
+ % Arrowhead shape.
1735
+ % Has up and down shapes for *all* notes
1736
+ %
1737
+ def draw_Funk_re_head (expr width_factor, thickness_factor) =
1738
+ set_char_box (0, width_factor * solfa_base_notewidth#,
1739
+ 0.5 solfa_noteheight#, 0.5 solfa_noteheight#);
1740
+
1741
+ save offset;
1742
+ offset := 2 * thickness_factor - 1;
1743
+
1744
+ save pen_radius;
1745
+ pen_radius := min (solfa_pen_radius, .3 * (h + d) / (1 + offset));
1746
+
1747
+ pickup pencircle scaled (2 * pen_radius);
1748
+
1749
+ save curve_in;
1750
+ curve_in := 0.9;
1751
+
1752
+ lft x1 = 0;
1753
+ y1 := 0.5 [y2, y4];
1754
+
1755
+ rt x2 = w;
1756
+ top y2 = h;
1757
+
1758
+ x3 := curve_in [x1, x2];
1759
+ y3 := y1;
1760
+
1761
+ x4 = x2;
1762
+ bot y4 = -d;
1763
+
1764
+ z6 = lft z3;
1765
+
1766
+ save ne, se, ne_perp, se_perp;
1767
+ pair ne, se, ne_perp, se_perp;
1768
+
1769
+ ne := unitvector (z2 - z1);
1770
+ se := unitvector (z4 - z1);
1771
+ ne_perp := ne rotated 90;
1772
+ se_perp := se rotated 90;
1773
+
1774
+ save path_a, path_b, path_c, path_d;
1775
+ path path_a, path_b, path_c, path_d;
1776
+ save arrow_a_perp, arrow_b_perp;
1777
+ pair arrow_a_perp, arrow_b_perp;
1778
+
1779
+
1780
+ path_d := z2 .. z3{down} .. z4;
1781
+ arrow_a_perp = unitvector (direction 0 of path_d rotated 90)
1782
+ * pen_radius;
1783
+
1784
+ arrow_b_perp = unitvector (direction 2 of path_d rotated 90)
1785
+ * pen_radius;
1786
+
1787
+ path_b := (z1 + se_perp * pen_radius)
1788
+ -- z4 + se_perp * offset * pen_radius;
1789
+ path_a := (z1 - ne_perp * pen_radius)
1790
+ -- z2 - ne_perp * offset * pen_radius;
1791
+ path_c := z2 - arrow_a_perp
1792
+ .. z6{down}
1793
+ .. z4 - arrow_b_perp;
1794
+
1795
+ z5 = path_a intersectionpoint path_b;
1796
+ z7 = path_a intersectionpoint path_c;
1797
+ z8 = path_b intersectionpoint path_c;
1798
+
1799
+ save p_up_in, p_down_in, p_up_out, p_down_out;
1800
+ path p_up_in, p_down_in, p_up_out, p_down_out;
1801
+
1802
+ p_down_in := z5
1803
+ -- z7
1804
+ .. z6{down}
1805
+ .. z8
1806
+ -- cycle;
1807
+
1808
+ p_down_out := lft z1{up}
1809
+ .. (z1 + ne_perp * pen_radius){ne}
1810
+ -- (z2 + ne_perp * pen_radius){ne}
1811
+ .. top z2 {right}
1812
+ .. rt z2{down}
1813
+ .. (z2 + arrow_a_perp)
1814
+ .. rt z3{down}
1815
+ .. (z4 + arrow_b_perp)
1816
+ .. rt z4{down}
1817
+ .. bot z4 {left}
1818
+ .. z4 - se_perp * pen_radius
1819
+ -- z1 - se_perp * pen_radius
1820
+ .. cycle;
1821
+
1822
+ p_up_in := p_down_in rotated 180 shifted (w, 0);
1823
+ p_up_out := p_down_out rotated 180 shifted (w, 0);
1824
+
1825
+ enddef;
1826
+
1827
+
1828
+ save funk_re_weight;
1829
+ funk_re_weight = 1.7;
1830
+
1831
+ fet_beginchar ("whole up Funk rehead", "u0reFunk");
1832
+ draw_Funk_re_head (funk_notehead_width, funk_re_weight);
1833
+ fill p_up_out;
1834
+ unfill p_up_in;
1835
+ fet_endchar;
1836
+
1837
+
1838
+ fet_beginchar ("whole down Funk rehead", "d0reFunk");
1839
+ draw_Funk_re_head (funk_notehead_width, funk_re_weight);
1840
+ fill p_down_out;
1841
+ unfill p_down_in;
1842
+ fet_endchar;
1843
+
1844
+
1845
+ fet_beginchar ("half up Funk rehead", "u1reFunk");
1846
+ draw_Funk_re_head (funk_notehead_width, funk_re_weight);
1847
+ fill p_up_out;
1848
+ unfill p_up_in;
1849
+ fet_endchar;
1850
+
1851
+
1852
+ fet_beginchar ("half down Funk rehead", "d1reFunk");
1853
+ draw_Funk_re_head (funk_notehead_width, funk_re_weight);
1854
+ fill p_down_out;
1855
+ unfill p_down_in;
1856
+ fet_endchar;
1857
+
1858
+
1859
+ fet_beginchar ("quarter up Funk rehead", "u2reFunk");
1860
+ draw_Funk_re_head (funk_notehead_width, funk_re_weight);
1861
+ fill p_up_out;
1862
+ fet_endchar;
1863
+
1864
+
1865
+ fet_beginchar ("quarter down Funk rehead", "d2reFunk");
1866
+ draw_Funk_re_head (funk_notehead_width, funk_re_weight);
1867
+ fill p_down_out;
1868
+ fet_endchar;
1869
+
1870
+
1871
+ %%%%%% Funk mi head
1872
+ % Diamond shape
1873
+ % Has up and down shapes for all hollow notes
1874
+ %
1875
+ save funk_mi_weight;
1876
+ funk_mi_weight := 1.9;
1877
+
1878
+ fet_beginchar ("whole up Funk mihead", "u0miFunk");
1879
+ draw_mi_head (funk_notehead_width, funk_mi_weight, false);
1880
+
1881
+ fill path_out;
1882
+ unfill path_in;
1883
+ fet_endchar;
1884
+
1885
+
1886
+ fet_beginchar ("whole down Funk mihead", "d0miFunk");
1887
+ draw_mi_head (funk_notehead_width, funk_mi_weight, true);
1888
+ fill path_out;
1889
+ unfill path_in;
1890
+ fet_endchar;
1891
+
1892
+
1893
+ fet_beginchar ("half up Funk mihead", "u1miFunk");
1894
+ draw_mi_head (funk_notehead_width, funk_mi_weight, false);
1895
+ fill path_out;
1896
+ unfill path_in;
1897
+ fet_endchar;
1898
+
1899
+
1900
+ fet_beginchar ("half down Funk mihead", "d1miFunk");
1901
+ draw_mi_head (funk_notehead_width, funk_mi_weight, true);
1902
+ fill path_out;
1903
+ unfill path_in;
1904
+ fet_endchar;
1905
+
1906
+
1907
+ fet_beginchar ("quarter Funk mihead", "s2miFunk");
1908
+ draw_mi_head (funk_notehead_width, funk_mi_weight, false);
1909
+ fill path_out;
1910
+ fet_endchar;
1911
+
1912
+
1913
+ %%%%%% Funk fa
1914
+ % Triangle shape
1915
+ % Does it rotate for whole notes?
1916
+ % Same as other shape note systems
1917
+ % Need special notes because of special width
1918
+ %
1919
+ save funk_fa_weight;
1920
+ funk_fa_weight := 1.9;
1921
+
1922
+ fet_beginchar ("whole up Funk fahead", "u0faFunk");
1923
+ draw_fa_head (funk_notehead_width, funk_fa_weight);
1924
+ fill p_up_out;
1925
+ unfill p_up_in;
1926
+ fet_endchar;
1927
+
1928
+
1929
+ fet_beginchar ("whole down Funk fahead", "d0faFunk");
1930
+ draw_fa_head (funk_notehead_width, funk_fa_weight);
1931
+ fill p_down_out;
1932
+ unfill p_down_in;
1933
+ fet_endchar;
1934
+
1935
+
1936
+ fet_beginchar ("half up Funk fahead", "u1faFunk");
1937
+ draw_fa_head (funk_notehead_width, funk_fa_weight);
1938
+ fill p_up_out;
1939
+ unfill p_up_in;
1940
+ fet_endchar;
1941
+
1942
+
1943
+ fet_beginchar ("half down Funk fahead", "d1faFunk");
1944
+ draw_fa_head (funk_notehead_width, funk_fa_weight);
1945
+ fill p_down_out;
1946
+ unfill p_down_in;
1947
+ fet_endchar;
1948
+
1949
+
1950
+ fet_beginchar ("quarter up Funk fahead", "u2faFunk");
1951
+ draw_fa_head (funk_notehead_width, funk_fa_weight);
1952
+ fill p_up_out;
1953
+ fet_endchar;
1954
+
1955
+
1956
+ fet_beginchar ("quarter down Funk fahead", "d2faFunk");
1957
+ draw_fa_head (funk_notehead_width, funk_fa_weight);
1958
+ fill p_down_out;
1959
+ fet_endchar;
1960
+
1961
+
1962
+ %%%%%% Funk sol head is the same as the others
1963
+ % Need special character because of skinnier head
1964
+ %
1965
+ def draw_Funk_sol_head (expr filled) =
1966
+ begingroup
1967
+ save noteheight;
1968
+ noteheight# := solfa_noteheight#;
1969
+ draw_outside_ellipse (1.2, 34, 0.71, 0, 0);
1970
+ if not filled:
1971
+ undraw_inside_ellipse (1.9, 33, 0.74, 5.5 stafflinethickness#, 0);
1972
+ fi
1973
+ draw_staff_if_debugging (-2, 2);
1974
+ endgroup
1975
+ enddef;
1976
+
1977
+
1978
+ fet_beginchar ("whole Funk solhead", "s0solFunk");
1979
+ draw_Funk_sol_head ( false);
1980
+ fet_endchar;
1981
+
1982
+
1983
+ fet_beginchar ("half Funk solhead", "s1solFunk");
1984
+ draw_Funk_sol_head ( false);
1985
+ fet_endchar;
1986
+
1987
+
1988
+ fet_beginchar ("quarter Funk solhead", "s2solFunk");
1989
+ draw_Funk_sol_head ( true);
1990
+ fet_endchar;
1991
+
1992
+
1993
+ %%%%%% Funk la head
1994
+ % Rectangle head
1995
+ % Same as for other shape notes
1996
+ % Smaller width requires special characters
1997
+ %
1998
+ save funk_la_weight;
1999
+ funk_la_weight := 1.9;
2000
+
2001
+ fet_beginchar ("whole Funk lahead", "s0laFunk");
2002
+ draw_la_head (funk_notehead_width, funk_notehead_width);
2003
+ fill p_out;
2004
+ unfill p_in;
2005
+ fet_endchar;
2006
+
2007
+
2008
+ fet_beginchar ("half Funk lahead", "s1laFunk");
2009
+ draw_la_head (funk_notehead_width, funk_notehead_width);
2010
+ fill p_out;
2011
+ unfill p_in;
2012
+ fet_endchar;
2013
+
2014
+
2015
+ fet_beginchar ("quarter Funk lahead", "s2laFunk");
2016
+ draw_la_head (funk_notehead_width, funk_notehead_width);
2017
+ fill p_out;
2018
+ fet_endchar;
2019
+
2020
+
2021
+ %%%%%% Funk ti head
2022
+ % `Sideways snow cone'.
2023
+ % Rotates for all notes.
2024
+ %
2025
+ def draw_Funk_ti_head (expr width_factor, thickness_factor) =
2026
+ set_char_box (0, width_factor * solfa_base_notewidth#,
2027
+ 0.5 solfa_noteheight#, 0.5 solfa_noteheight#);
2028
+ save cone_width;
2029
+ cone_width = 0.8;
2030
+
2031
+ save offset;
2032
+ offset := 2 * thickness_factor - 1;
2033
+
2034
+ save pen_radius;
2035
+ pen_radius := min (solfa_pen_radius,
2036
+ .33 * (h + d) / (1 + offset));
2037
+
2038
+ pickup pencircle scaled (2 * pen_radius);
2039
+
2040
+ lft x1 = 0;
2041
+ y1 = .5 [y2, y4];
2042
+
2043
+ x2 = cone_width [x1, x3];
2044
+ top y2 = h;
2045
+
2046
+ rt x3 = w;
2047
+ y3 = y1;
2048
+
2049
+ x4 = x2;
2050
+ bot y4 = -d;
2051
+
2052
+ save nw_dist, sw_dist, ne, se;
2053
+ pair nw_dist, sw_dist, ne, se;
2054
+
2055
+ ne = unitvector (z2 - z1);
2056
+ se = unitvector (z4 - z1);
2057
+
2058
+ nw_dist = (ne rotated 90) * pen_radius;
2059
+ sw_dist = (se rotated -90) * pen_radius;
2060
+
2061
+ save path_a, path_b;
2062
+ path path_a, path_b;
2063
+ path_a := z1 - nw_dist
2064
+ -- z2 - offset * nw_dist;
2065
+ path_b := z1 - sw_dist
2066
+ -- z4 - offset * sw_dist;
2067
+
2068
+ save path_right, path_right_in;
2069
+ path path_right, path_right_in;
2070
+ path_right := (z2 + ne * pen_radius)
2071
+ .. (rt z3){down}
2072
+ .. (z4 + se * pen_radius);
2073
+
2074
+ path_right_in := (z2 - ne * pen_radius)
2075
+ .. lft z3{down}
2076
+ .. (z4 - se * pen_radius);
2077
+
2078
+ z5 = path_a intersectionpoint path_b;
2079
+ z6 = path_a intersectionpoint path_right_in;
2080
+ z7 = path_b intersectionpoint path_right_in;
2081
+
2082
+ save p_up_in, p_down_in, p_up_out, p_down_out;
2083
+ path p_up_in, p_down_in, p_up_out, p_down_out;
2084
+
2085
+ p_down_in := z5
2086
+ -- z6
2087
+ .. lft z3
2088
+ .. z7
2089
+ -- cycle;
2090
+
2091
+ p_down_out := lft z1
2092
+ .. (z1 + nw_dist)
2093
+ -- (z2 + nw_dist)
2094
+ .. top z2
2095
+ .. (z2 + ne * pen_radius){direction 0 of path_right}
2096
+ & path_right
2097
+ & {direction infinity of path_right}(z4 + se * pen_radius)
2098
+ .. bot z4
2099
+ .. (z4 + sw_dist)
2100
+ -- (z1 + sw_dist)
2101
+ .. cycle;
2102
+
2103
+ p_up_in := p_down_in rotated 180 shifted (w, 0);
2104
+ p_up_out := p_down_out rotated 180 shifted (w, 0);
2105
+ enddef;
2106
+
2107
+
2108
+ save funk_ti_weight;
2109
+ funk_ti_weight := 1.6;
2110
+
2111
+ fet_beginchar ("whole up Funk tihead", "u0tiFunk");
2112
+ draw_Funk_ti_head (funk_notehead_width, funk_ti_weight);
2113
+ fill p_up_out;
2114
+ unfill p_up_in;
2115
+ fet_endchar;
2116
+
2117
+
2118
+ fet_beginchar ("whole down Funk tihead", "d0tiFunk");
2119
+ draw_Funk_ti_head (funk_notehead_width, funk_ti_weight);
2120
+ fill p_down_out;
2121
+ unfill p_down_in;
2122
+ fet_endchar;
2123
+
2124
+
2125
+ fet_beginchar ("half up Funk tihead", "u1tiFunk");
2126
+ draw_Funk_ti_head (funk_notehead_width, funk_ti_weight);
2127
+ fill p_up_out;
2128
+ unfill p_up_in;
2129
+ fet_endchar;
2130
+
2131
+
2132
+ fet_beginchar ("half down Funk tihead", "d1tiFunk");
2133
+ draw_Funk_ti_head (funk_notehead_width, funk_ti_weight);
2134
+ fill p_down_out;
2135
+ unfill p_down_in;
2136
+ fet_endchar;
2137
+
2138
+
2139
+ fet_beginchar ("quarter up Funk tihead", "u2tiFunk");
2140
+ draw_Funk_ti_head (funk_notehead_width, funk_ti_weight);
2141
+ fill p_up_out;
2142
+ fet_endchar;
2143
+
2144
+
2145
+ fet_beginchar ("quarter down Funk tihead", "d2tiFunk");
2146
+ draw_Funk_ti_head (funk_notehead_width, funk_ti_weight);
2147
+ fill p_down_out;
2148
+ fet_endchar;
2149
+
2150
+
2151
+ %%%%%% Walker shape note heads
2152
+ %
2153
+ % Walker heads are narrow like Funk heads, so use funk_notehead_width.
2154
+ %
2155
+
2156
+ %%%%%% Walker do head
2157
+ %
2158
+ % Trapezoid, with largest side on stem side
2159
+ %
2160
+ def draw_Walker_do_head (expr width_factor, dir, thickness_factor) =
2161
+ set_char_box (0, width_factor * solfa_base_notewidth#,
2162
+ 0.5 solfa_noteheight#, 0.5 solfa_noteheight#);
2163
+
2164
+ pickup pencircle scaled solfa_pen_thick;
2165
+
2166
+ save offset;
2167
+ offset := 2 * thickness_factor - 1;
2168
+
2169
+ % adjust width so stem can be centered
2170
+ if .5w <> good.x .5w: change_width; fi
2171
+
2172
+ save scaling;
2173
+
2174
+ scaling# = charwd / w;
2175
+
2176
+ save inset;
2177
+ inset := 0.25;
2178
+
2179
+ x1 = inset [x4, x3];
2180
+ top y1 = h;
2181
+
2182
+ x2 = inset [x3, x4];
2183
+ y2 = y1;
2184
+
2185
+ bot y3 = -d;
2186
+ rt x3 = w;
2187
+
2188
+ y4 = y3;
2189
+ lft x4 = 0;
2190
+
2191
+ labels (range 1 thru 4);
2192
+
2193
+ save left_dir, left_perp, right_dir, right_perp;
2194
+ pair left_dir, left_perp, right_dir, right_perp;
2195
+
2196
+ left_dir = unitvector (z1 - z4);
2197
+ left_perp = (left_dir rotated 90) * solfa_pen_radius;
2198
+ right_dir = unitvector (z3 - z2);
2199
+ right_perp = (right_dir rotated 90) * solfa_pen_radius;
2200
+
2201
+ save path_a, path_b, path_c, path_d;
2202
+ path path_a, path_b, path_c, path_d;
2203
+
2204
+ path_a := (z4 - left_perp)
2205
+ -- (z1 - left_perp);
2206
+ path_b := (z1 - (0, offset*solfa_pen_radius))
2207
+ -- (z2 - (0, offset*solfa_pen_radius));
2208
+ path_c := (z2 - right_perp)
2209
+ -- (z3 - right_perp);
2210
+ path_d := (z3 + (0, offset*solfa_pen_radius))
2211
+ -- (z4 + (0, offset*solfa_pen_radius));
2212
+
2213
+ save p_in, p_out;
2214
+ path p_in, p_out;
2215
+
2216
+ p_in := (path_a intersectionpoint path_b)
2217
+ -- (path_b intersectionpoint path_c)
2218
+ -- (path_c intersectionpoint path_d)
2219
+ -- (path_d intersectionpoint path_a)
2220
+ -- cycle;
2221
+
2222
+ p_out := top z1{right}
2223
+ -- top z2{right}
2224
+ .. z2 + right_perp {right_dir}
2225
+ -- z3 + right_perp {right_dir}
2226
+ .. bot z3{left}
2227
+ -- bot z4{left}
2228
+ .. z4 + left_perp {left_dir}
2229
+ .. z1 + left_perp {left_dir}
2230
+ .. cycle;
2231
+
2232
+ charwx := scaling# * (w/2 + solfa_pen_radius);
2233
+ charwy := scaling# * y2;
2234
+
2235
+ if dir = 1:
2236
+ p_in := p_in rotated 180 shifted (w,0);
2237
+ p_out := p_out rotated 180 shifted (w,0);
2238
+ fi;
2239
+ enddef;
2240
+
2241
+
2242
+ save walker_do_weight;
2243
+ walker_do_weight := 1.5;
2244
+
2245
+ fet_beginchar ("whole Walker dohead", "s0doWalker");
2246
+ draw_Walker_do_head (funk_notehead_width, 0, walker_do_weight);
2247
+ fill p_out;
2248
+ unfill p_in;
2249
+ fet_endchar;
2250
+
2251
+
2252
+ fet_beginchar ("half up Walker dohead", "u1doWalker");
2253
+ draw_Walker_do_head (funk_notehead_width, 1, walker_do_weight);
2254
+ fill p_out;
2255
+ unfill p_in;
2256
+ fet_endchar;
2257
+
2258
+
2259
+ fet_beginchar ("half down Walker dohead", "d1doWalker");
2260
+ draw_Walker_do_head (funk_notehead_width, 0, walker_do_weight);
2261
+ fill p_out;
2262
+ unfill p_in;
2263
+ fet_endchar;
2264
+
2265
+
2266
+ fet_beginchar ("quarter up Walker dohead", "u2doWalker");
2267
+ draw_Walker_do_head (funk_notehead_width, 1, walker_do_weight);
2268
+ fill p_out;
2269
+ fet_endchar;
2270
+
2271
+
2272
+ fet_beginchar ("quarter down Walker dohead", "d2doWalker");
2273
+ draw_Walker_do_head (funk_notehead_width, 0, walker_do_weight);
2274
+ fill p_out;
2275
+ fet_endchar;
2276
+
2277
+
2278
+ %%%%%% Walker re head
2279
+ % Parabolic on one side, shallow parabola on other
2280
+ % Has up and down shapes for *all* notes
2281
+ %
2282
+ def draw_Walker_re_head (expr width_factor, thickness_factor) =
2283
+ set_char_box (0, width_factor * solfa_base_notewidth#,
2284
+ 0.5 solfa_noteheight#, 0.5 solfa_noteheight#);
2285
+
2286
+ save offset;
2287
+ offset := 2 * thickness_factor - 1;
2288
+
2289
+ save pen_radius;
2290
+ pen_radius := min (solfa_pen_radius,
2291
+ .3 * (h + d) / (1 + offset));
2292
+
2293
+ pickup pencircle scaled (2 * pen_radius);
2294
+
2295
+ save dish_factor;
2296
+ dish_factor := 0.20;
2297
+
2298
+ rt x1 = w;
2299
+ bot y1 = -d;
2300
+
2301
+ lft x2 = 0;
2302
+ y2 = 0.5 [y1, y3];
2303
+
2304
+ top y3 = h;
2305
+ x3 = x1;
2306
+
2307
+ x4 = dish_factor [x1, x2];
2308
+ y4 = y2;
2309
+
2310
+ x5 = x1;
2311
+ y5 = y1 + offset * pen_radius;
2312
+
2313
+ y6 = y2;
2314
+ x6 = x2 + pen_radius;
2315
+
2316
+ x7 = x3;
2317
+ y7 = y3 - offset * pen_radius;
2318
+
2319
+ y8 = y4;
2320
+ x8 = x4 - pen_radius;
2321
+
2322
+ save path_a, path_d;
2323
+ path path_a, path_d;
2324
+
2325
+ save p_a_start_dir, p_a_end_dir, p_a_start_perp, p_a_end_perp;
2326
+ pair p_a_start_dir, p_a_end_dir, p_a_start_perp, p_a_end_perp;
2327
+
2328
+ path_a := z3
2329
+ .. z4{down}
2330
+ .. z1;
2331
+
2332
+ p_a_start_dir := unitvector (direction 0 of path_a);
2333
+ p_a_end_dir := unitvector (direction infinity of path_a);
2334
+ p_a_start_perp := (p_a_start_dir rotated 90) * pen_radius;
2335
+ p_a_end_perp := (p_a_end_dir rotated 90) * pen_radius;
2336
+
2337
+ path_d := (z3 - p_a_start_perp){p_a_start_dir}
2338
+ .. z4 {down}
2339
+ .. (z1 - p_a_end_perp){p_a_end_dir};
2340
+
2341
+ save path_b, path_c;
2342
+ path path_b, path_c;
2343
+
2344
+ path_b := z5 {left}
2345
+ .. z6{up};
2346
+ path_c := z7 {left}
2347
+ .. z6{down};
2348
+
2349
+ z9 = path_d intersectionpoint path_b;
2350
+ z10 = path_d intersectionpoint path_c;
2351
+
2352
+ labels (range 1 thru 4);
2353
+
2354
+ save p_up_in, p_up_out, p_down_in, p_down_out;
2355
+ path p_up_in, p_up_out, p_down_in, p_down_out;
2356
+
2357
+ p_down_in := z6{up}
2358
+ ... {right} z10 {p_a_start_dir}
2359
+ .. z8{down}
2360
+ .. {p_a_end_dir} z9 {left}
2361
+ ... cycle;
2362
+
2363
+ p_down_out := lft z2{up}
2364
+ .. top z3{right}
2365
+ .. rt z3
2366
+ .. (z3 + p_a_start_perp){p_a_start_dir}
2367
+ .. rt z4{down}
2368
+ .. (z1 + p_a_end_perp) {p_a_end_dir}
2369
+ .. rt z1
2370
+ .. bot z1 {left}
2371
+ .. cycle;
2372
+
2373
+ p_up_in := p_down_in rotated 180 shifted (w,0);
2374
+ p_up_out := p_down_out rotated 180 shifted (w,0);
2375
+ enddef;
2376
+
2377
+
2378
+ save walker_re_weight;
2379
+ walker_re_weight := 1.2;
2380
+
2381
+ fet_beginchar ("whole Walker rehead", "s0reWalker");
2382
+ draw_Walker_re_head (funk_notehead_width, walker_re_weight);
2383
+ fill p_down_out;
2384
+ unfill p_down_in;
2385
+ fet_endchar;
2386
+
2387
+
2388
+ fet_beginchar ("half up Walker rehead", "u1reWalker");
2389
+ draw_Walker_re_head (funk_notehead_width, walker_re_weight);
2390
+ fill p_up_out;
2391
+ unfill p_up_in;
2392
+ fet_endchar;
2393
+
2394
+
2395
+ fet_beginchar ("half down Walker rehead", "d1reWalker");
2396
+ draw_Walker_re_head (funk_notehead_width, walker_re_weight);
2397
+ fill p_down_out;
2398
+ unfill p_down_in;
2399
+ fet_endchar;
2400
+
2401
+
2402
+ fet_beginchar ("quarter up Walker rehead", "u2reWalker");
2403
+ draw_Walker_re_head (funk_notehead_width, walker_re_weight);
2404
+ fill p_up_out;
2405
+ fet_endchar;
2406
+
2407
+
2408
+ fet_beginchar ("quarter down Walker rehead", "d2reWalker");
2409
+ draw_Walker_re_head (funk_notehead_width, walker_re_weight);
2410
+ fill p_down_out;
2411
+ fet_endchar;
2412
+
2413
+
2414
+ %%%%%% Walker mi head
2415
+ % Diamond shape
2416
+ % Symmetric for all hollow notes
2417
+ %
2418
+ save walker_mi_width, walker_mi_weight;
2419
+ walker_mi_width := 1;
2420
+ walker_mi_weight := 1.5;
2421
+
2422
+ fet_beginchar ("whole Walker mihead", "s0miWalker");
2423
+ draw_mi_head (walker_mi_width * funk_notehead_width,
2424
+ walker_mi_weight, true);
2425
+ fill path_out;
2426
+ unfill path_in;
2427
+ fet_endchar;
2428
+
2429
+
2430
+ fet_beginchar ("half Walker mihead", "s1miWalker");
2431
+ draw_mi_head (walker_mi_width * funk_notehead_width,
2432
+ walker_mi_weight, true);
2433
+ fill path_out;
2434
+ unfill path_in;
2435
+ fet_endchar;
2436
+
2437
+
2438
+ fet_beginchar ("quarter Walker mihead", "s2miWalker");
2439
+ draw_mi_head (walker_mi_width * funk_notehead_width,
2440
+ walker_mi_weight, true);
2441
+ fill path_out;
2442
+ fet_endchar;
2443
+
2444
+
2445
+ %%%%%% Walker fa
2446
+ % Triangle shape
2447
+ % Does not rotate for whole notes
2448
+ % Whole rotation is different from Funk, so special notes
2449
+
2450
+ %%%%%% Funk sol head is the same as the others
2451
+ % Need special character because of skinnier head
2452
+ %
2453
+ save walker_fa_weight;
2454
+ walker_fa_weight := 1.5;
2455
+
2456
+ fet_beginchar ("whole Walker fahead", "s0faWalker");
2457
+ draw_fa_head (funk_notehead_width, walker_fa_weight);
2458
+ fill p_down_out;
2459
+ unfill p_down_in;
2460
+ fet_endchar;
2461
+
2462
+
2463
+ fet_beginchar ("half up Walker fahead", "u1faWalker");
2464
+ draw_fa_head (funk_notehead_width, walker_fa_weight);
2465
+ fill p_up_out;
2466
+ unfill p_up_in;
2467
+ fet_endchar;
2468
+
2469
+
2470
+ fet_beginchar ("half down Walker fahead", "d1faWalker");
2471
+ draw_fa_head (funk_notehead_width, walker_fa_weight);
2472
+ fill p_down_out;
2473
+ unfill p_down_in;
2474
+ fet_endchar;
2475
+
2476
+
2477
+ fet_beginchar ("quarter up Walker fahead", "u2faWalker");
2478
+ draw_fa_head (funk_notehead_width, walker_fa_weight);
2479
+ fill p_up_out;
2480
+ fet_endchar;
2481
+
2482
+
2483
+ fet_beginchar ("quarter down Walker fahead", "d2faWalker");
2484
+ draw_fa_head (funk_notehead_width, walker_fa_weight);
2485
+ fill p_down_out;
2486
+ fet_endchar;
2487
+
2488
+
2489
+ %%%%%% Walker sol
2490
+ % Same as Funk, no special notes
2491
+ %
2492
+
2493
+ %%%%%% Walker la head
2494
+ % Rectcangle head
2495
+ % Lighter weight requires separate notes
2496
+ %
2497
+ save walker_la_weight;
2498
+ walker_la_weight := 1.5;
2499
+
2500
+ fet_beginchar ("whole Walker lahead", "s0laWalker");
2501
+ draw_la_head (funk_notehead_width, walker_la_weight);
2502
+ fill p_out;
2503
+ unfill p_in;
2504
+ fet_endchar;
2505
+
2506
+
2507
+ fet_beginchar ("half Funk lahead", "s1laWalker");
2508
+ draw_la_head (funk_notehead_width, walker_la_weight);
2509
+ fill p_out;
2510
+ unfill p_in;
2511
+ fet_endchar;
2512
+
2513
+
2514
+ fet_beginchar ("quarter Funk lahead", "s2laWalker");
2515
+ draw_la_head (funk_notehead_width, walker_la_weight);
2516
+ fill p_out;
2517
+ fet_endchar;
2518
+
2519
+
2520
+ %%%%%% Walker ti head
2521
+ % Triangular arrowhead
2522
+ % Rotates for all but whole notes
2523
+ %
2524
+ def draw_Walker_ti_head (expr width_factor, thickness_factor) =
2525
+ set_char_box (0, width_factor * solfa_base_notewidth#,
2526
+ 0.5 solfa_noteheight#, 0.5 solfa_noteheight#);
2527
+
2528
+ save offset;
2529
+ offset := 2 * thickness_factor - 1;
2530
+
2531
+ save pen_radius;
2532
+ pen_radius := min (solfa_pen_radius,
2533
+ .3 * (h + d) / (1 + offset));
2534
+
2535
+ pickup pencircle scaled (2 * pen_radius);
2536
+
2537
+ lft x1 = 0;
2538
+ y1 = .5 [y2, y3];
2539
+
2540
+ rt x2 = w;
2541
+ top y2 = h;
2542
+
2543
+ x3 = x2;
2544
+ bot y3 = -d;
2545
+
2546
+
2547
+ labels (range 1 thru 4);
2548
+
2549
+ save nw_dist, sw_dist, ne, se;
2550
+ pair nw_dist, sw_dist, ne, se;
2551
+
2552
+ ne = unitvector (z2 - z1);
2553
+ se = unitvector (z3 - z1);
2554
+
2555
+ nw_dist = (ne rotated 90) * pen_radius;
2556
+ sw_dist = (se rotated -90) * pen_radius;
2557
+
2558
+
2559
+ save path_a, path_b, path_c;
2560
+ path path_a, path_b, path_c;
2561
+ path_a := z2 - nw_dist * offset
2562
+ -- z1 - nw_dist * offset;
2563
+ path_b := z3 - sw_dist * offset
2564
+ -- z1 - sw_dist * offset;
2565
+ path_c := z2 + left * pen_radius
2566
+ -- z3 + left * pen_radius;
2567
+
2568
+ z4 = path_a intersectionpoint path_b;
2569
+ z5 = path_a intersectionpoint path_c;
2570
+ z6 = path_b intersectionpoint path_c;
2571
+
2572
+ save p_up_in, p_down_in, p_up_out, p_down_out;
2573
+ path p_up_in, p_down_in, p_up_out, p_down_out;
2574
+
2575
+ p_down_in := z4
2576
+ -- z5
2577
+ -- z6
2578
+ -- cycle;
2579
+
2580
+ p_down_out := lft z1{up}
2581
+ .. (z1 + nw_dist){ne}
2582
+ -- (z2 + nw_dist){ne}
2583
+ .. top z2{right}
2584
+ .. rt z2 {down}
2585
+ -- rt z3 {down}
2586
+ .. bot z3 {left}
2587
+ .. (z3 + sw_dist){- se}
2588
+ .. (z1 + sw_dist){- se}
2589
+ .. cycle;
2590
+
2591
+ p_up_in := p_down_in rotated 180 shifted (w, 0);
2592
+ p_up_out := p_down_out rotated 180 shifted (w, 0);
2593
+ enddef;
2594
+
2595
+
2596
+ save walker_ti_weight;
2597
+ walker_ti_weight := 1.4;
2598
+
2599
+ fet_beginchar ("whole Walker tihead", "s0tiWalker");
2600
+ draw_Walker_ti_head (funk_notehead_width, walker_ti_weight);
2601
+ fill p_down_out;
2602
+ unfill p_down_in;
2603
+ fet_endchar;
2604
+
2605
+
2606
+ fet_beginchar ("half up Walker tihead", "u1tiWalker");
2607
+ draw_Walker_ti_head (funk_notehead_width, walker_ti_weight);
2608
+ fill p_up_out;
2609
+ unfill p_up_in;
2610
+ fet_endchar;
2611
+
2612
+
2613
+ fet_beginchar ("half down Walker tihead", "d1tiWalker");
2614
+ draw_Walker_ti_head (funk_notehead_width, walker_ti_weight);
2615
+ fill p_down_out;
2616
+ unfill p_down_in;
2617
+ fet_endchar;
2618
+
2619
+
2620
+ fet_beginchar ("quarter up Walker tihead", "u2tiWalker");
2621
+ draw_Walker_ti_head (funk_notehead_width, walker_ti_weight);
2622
+ fill p_up_out;
2623
+ fet_endchar;
2624
+
2625
+
2626
+ fet_beginchar ("quarter down Walker tihead", "d2tiWalker");
2627
+ draw_Walker_ti_head (funk_notehead_width, walker_ti_weight);
2628
+ fill p_down_out;
2629
+ fet_endchar;
2630
+
2631
+ fet_endgroup ("noteheads");
2632
+
2633
+
2634
+ %
2635
+ % we derive black_notehead_width# from the quarter head,
2636
+ % so we have to define black_notehead_width (pixel qty)
2637
+ % after the black_notehead_width# itself.
2638
+ %
2639
+ % Let's keep it outside the group as well.
2640
+ %
2641
+
2642
+ define_pixels (black_notehead_width);