LilyPond-Ruby 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1109) 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/lilypond/2.24.1/ccache/lily/accreg.go +0 -0
  330. data/lib/lilypond/2.24.1/ccache/lily/auto-beam.go +0 -0
  331. data/lib/lilypond/2.24.1/ccache/lily/autochange.go +0 -0
  332. data/lib/lilypond/2.24.1/ccache/lily/backend-library.go +0 -0
  333. data/lib/lilypond/2.24.1/ccache/lily/bar-line.go +0 -0
  334. data/lib/lilypond/2.24.1/ccache/lily/breath.go +0 -0
  335. data/lib/lilypond/2.24.1/ccache/lily/c++.go +0 -0
  336. data/lib/lilypond/2.24.1/ccache/lily/chord-entry.go +0 -0
  337. data/lib/lilypond/2.24.1/ccache/lily/chord-ignatzek-names.go +0 -0
  338. data/lib/lilypond/2.24.1/ccache/lily/chord-name.go +0 -0
  339. data/lib/lilypond/2.24.1/ccache/lily/clip-region.go +0 -0
  340. data/lib/lilypond/2.24.1/ccache/lily/color.go +0 -0
  341. data/lib/lilypond/2.24.1/ccache/lily/curried-definitions.go +0 -0
  342. data/lib/lilypond/2.24.1/ccache/lily/define-context-properties.go +0 -0
  343. data/lib/lilypond/2.24.1/ccache/lily/define-event-classes.go +0 -0
  344. data/lib/lilypond/2.24.1/ccache/lily/define-grob-interfaces.go +0 -0
  345. data/lib/lilypond/2.24.1/ccache/lily/define-grob-properties.go +0 -0
  346. data/lib/lilypond/2.24.1/ccache/lily/define-grobs.go +0 -0
  347. data/lib/lilypond/2.24.1/ccache/lily/define-markup-commands.go +0 -0
  348. data/lib/lilypond/2.24.1/ccache/lily/define-music-callbacks.go +0 -0
  349. data/lib/lilypond/2.24.1/ccache/lily/define-music-display-methods.go +0 -0
  350. data/lib/lilypond/2.24.1/ccache/lily/define-music-properties.go +0 -0
  351. data/lib/lilypond/2.24.1/ccache/lily/define-music-types.go +0 -0
  352. data/lib/lilypond/2.24.1/ccache/lily/define-note-names.go +0 -0
  353. data/lib/lilypond/2.24.1/ccache/lily/define-stencil-commands.go +0 -0
  354. data/lib/lilypond/2.24.1/ccache/lily/define-woodwind-diagrams.go +0 -0
  355. data/lib/lilypond/2.24.1/ccache/lily/display-lily.go +0 -0
  356. data/lib/lilypond/2.24.1/ccache/lily/display-woodwind-diagrams.go +0 -0
  357. data/lib/lilypond/2.24.1/ccache/lily/file-cache.go +0 -0
  358. data/lib/lilypond/2.24.1/ccache/lily/flag-styles.go +0 -0
  359. data/lib/lilypond/2.24.1/ccache/lily/font-encodings.go +0 -0
  360. data/lib/lilypond/2.24.1/ccache/lily/font.go +0 -0
  361. data/lib/lilypond/2.24.1/ccache/lily/framework-cairo.go +0 -0
  362. data/lib/lilypond/2.24.1/ccache/lily/framework-ps.go +0 -0
  363. data/lib/lilypond/2.24.1/ccache/lily/framework-svg.go +0 -0
  364. data/lib/lilypond/2.24.1/ccache/lily/fret-diagrams.go +0 -0
  365. data/lib/lilypond/2.24.1/ccache/lily/graphviz.go +0 -0
  366. data/lib/lilypond/2.24.1/ccache/lily/harp-pedals.go +0 -0
  367. data/lib/lilypond/2.24.1/ccache/lily/layout-beam.go +0 -0
  368. data/lib/lilypond/2.24.1/ccache/lily/layout-slur.go +0 -0
  369. data/lib/lilypond/2.24.1/ccache/lily/lily-library.go +0 -0
  370. data/lib/lilypond/2.24.1/ccache/lily/lily.go +0 -0
  371. data/lib/lilypond/2.24.1/ccache/lily/ly-syntax-constructors.go +0 -0
  372. data/lib/lilypond/2.24.1/ccache/lily/markup-macros.go +0 -0
  373. data/lib/lilypond/2.24.1/ccache/lily/markup.go +0 -0
  374. data/lib/lilypond/2.24.1/ccache/lily/midi.go +0 -0
  375. data/lib/lilypond/2.24.1/ccache/lily/modal-transforms.go +0 -0
  376. data/lib/lilypond/2.24.1/ccache/lily/music-functions.go +0 -0
  377. data/lib/lilypond/2.24.1/ccache/lily/output-lib.go +0 -0
  378. data/lib/lilypond/2.24.1/ccache/lily/output-ps.go +0 -0
  379. data/lib/lilypond/2.24.1/ccache/lily/output-svg.go +0 -0
  380. data/lib/lilypond/2.24.1/ccache/lily/page.go +0 -0
  381. data/lib/lilypond/2.24.1/ccache/lily/paper-system.go +0 -0
  382. data/lib/lilypond/2.24.1/ccache/lily/paper.go +0 -0
  383. data/lib/lilypond/2.24.1/ccache/lily/parser-clef.go +0 -0
  384. data/lib/lilypond/2.24.1/ccache/lily/parser-ly-from-scheme.go +0 -0
  385. data/lib/lilypond/2.24.1/ccache/lily/part-combiner.go +0 -0
  386. data/lib/lilypond/2.24.1/ccache/lily/predefined-fretboards.go +0 -0
  387. data/lib/lilypond/2.24.1/ccache/lily/ps-to-png.go +0 -0
  388. data/lib/lilypond/2.24.1/ccache/lily/scheme-engravers.go +0 -0
  389. data/lib/lilypond/2.24.1/ccache/lily/scheme-performers.go +0 -0
  390. data/lib/lilypond/2.24.1/ccache/lily/script.go +0 -0
  391. data/lib/lilypond/2.24.1/ccache/lily/skyline.go +0 -0
  392. data/lib/lilypond/2.24.1/ccache/lily/song-util.go +0 -0
  393. data/lib/lilypond/2.24.1/ccache/lily/song.go +0 -0
  394. data/lib/lilypond/2.24.1/ccache/lily/stencil.go +0 -0
  395. data/lib/lilypond/2.24.1/ccache/lily/tablature.go +0 -0
  396. data/lib/lilypond/2.24.1/ccache/lily/time-signature-settings.go +0 -0
  397. data/lib/lilypond/2.24.1/ccache/lily/time-signature.go +0 -0
  398. data/lib/lilypond/2.24.1/ccache/lily/titling.go +0 -0
  399. data/lib/lilypond/2.24.1/ccache/lily/to-xml.go +0 -0
  400. data/lib/lilypond/2.24.1/ccache/lily/translation-functions.go +0 -0
  401. data/share/emacs/site-lisp/lilypond-font-lock.el +208 -0
  402. data/share/emacs/site-lisp/lilypond-indent.el +605 -0
  403. data/share/emacs/site-lisp/lilypond-init.el +21 -0
  404. data/share/emacs/site-lisp/lilypond-mode.el +1204 -0
  405. data/share/emacs/site-lisp/lilypond-song.el +556 -0
  406. data/share/emacs/site-lisp/lilypond-what-beat.el +279 -0
  407. data/share/emacs/site-lisp/lilypond-words.el +1428 -0
  408. data/share/guile/2.2/guile-procedures.txt +8860 -0
  409. data/share/guile/2.2/ice-9/and-let-star.scm +73 -0
  410. data/share/guile/2.2/ice-9/arrays.scm +70 -0
  411. data/share/guile/2.2/ice-9/atomic.scm +38 -0
  412. data/share/guile/2.2/ice-9/binary-ports.scm +53 -0
  413. data/share/guile/2.2/ice-9/boot-9.scm +4131 -0
  414. data/share/guile/2.2/ice-9/buffered-input.scm +109 -0
  415. data/share/guile/2.2/ice-9/calling.scm +326 -0
  416. data/share/guile/2.2/ice-9/channel.scm +170 -0
  417. data/share/guile/2.2/ice-9/command-line.scm +477 -0
  418. data/share/guile/2.2/ice-9/common-list.scm +278 -0
  419. data/share/guile/2.2/ice-9/control.scm +110 -0
  420. data/share/guile/2.2/ice-9/curried-definitions.scm +57 -0
  421. data/share/guile/2.2/ice-9/debug.scm +25 -0
  422. data/share/guile/2.2/ice-9/deprecated.scm +93 -0
  423. data/share/guile/2.2/ice-9/documentation.scm +203 -0
  424. data/share/guile/2.2/ice-9/eval-string.scm +90 -0
  425. data/share/guile/2.2/ice-9/eval.scm +723 -0
  426. data/share/guile/2.2/ice-9/expect.scm +171 -0
  427. data/share/guile/2.2/ice-9/fdes-finalizers.scm +25 -0
  428. data/share/guile/2.2/ice-9/format.scm +1626 -0
  429. data/share/guile/2.2/ice-9/ftw.scm +564 -0
  430. data/share/guile/2.2/ice-9/futures.scm +308 -0
  431. data/share/guile/2.2/ice-9/gap-buffer.scm +283 -0
  432. data/share/guile/2.2/ice-9/getopt-long.scm +371 -0
  433. data/share/guile/2.2/ice-9/hash-table.scm +45 -0
  434. data/share/guile/2.2/ice-9/hcons.scm +80 -0
  435. data/share/guile/2.2/ice-9/history.scm +65 -0
  436. data/share/guile/2.2/ice-9/i18n.scm +531 -0
  437. data/share/guile/2.2/ice-9/iconv.scm +95 -0
  438. data/share/guile/2.2/ice-9/lineio.scm +115 -0
  439. data/share/guile/2.2/ice-9/list.scm +36 -0
  440. data/share/guile/2.2/ice-9/local-eval.scm +261 -0
  441. data/share/guile/2.2/ice-9/ls.scm +94 -0
  442. data/share/guile/2.2/ice-9/mapping.scm +118 -0
  443. data/share/guile/2.2/ice-9/match.scm +59 -0
  444. data/share/guile/2.2/ice-9/match.upstream.scm +917 -0
  445. data/share/guile/2.2/ice-9/networking.scm +94 -0
  446. data/share/guile/2.2/ice-9/null.scm +34 -0
  447. data/share/guile/2.2/ice-9/occam-channel.scm +261 -0
  448. data/share/guile/2.2/ice-9/optargs.scm +381 -0
  449. data/share/guile/2.2/ice-9/peg/cache.scm +45 -0
  450. data/share/guile/2.2/ice-9/peg/codegen.scm +359 -0
  451. data/share/guile/2.2/ice-9/peg/simplify-tree.scm +97 -0
  452. data/share/guile/2.2/ice-9/peg/string-peg.scm +273 -0
  453. data/share/guile/2.2/ice-9/peg/using-parsers.scm +116 -0
  454. data/share/guile/2.2/ice-9/peg.scm +42 -0
  455. data/share/guile/2.2/ice-9/poe.scm +116 -0
  456. data/share/guile/2.2/ice-9/poll.scm +172 -0
  457. data/share/guile/2.2/ice-9/popen.scm +178 -0
  458. data/share/guile/2.2/ice-9/ports.scm +566 -0
  459. data/share/guile/2.2/ice-9/posix.scm +75 -0
  460. data/share/guile/2.2/ice-9/pretty-print.scm +483 -0
  461. data/share/guile/2.2/ice-9/psyntax-pp.scm +3542 -0
  462. data/share/guile/2.2/ice-9/psyntax.scm +3326 -0
  463. data/share/guile/2.2/ice-9/q.scm +153 -0
  464. data/share/guile/2.2/ice-9/quasisyntax.scm +136 -0
  465. data/share/guile/2.2/ice-9/r5rs.scm +45 -0
  466. data/share/guile/2.2/ice-9/r6rs-libraries.scm +242 -0
  467. data/share/guile/2.2/ice-9/rdelim.scm +208 -0
  468. data/share/guile/2.2/ice-9/receive.scm +26 -0
  469. data/share/guile/2.2/ice-9/regex.scm +229 -0
  470. data/share/guile/2.2/ice-9/runq.scm +241 -0
  471. data/share/guile/2.2/ice-9/rw.scm +27 -0
  472. data/share/guile/2.2/ice-9/safe-r5rs.scm +145 -0
  473. data/share/guile/2.2/ice-9/safe.scm +34 -0
  474. data/share/guile/2.2/ice-9/sandbox.scm +1399 -0
  475. data/share/guile/2.2/ice-9/save-stack.scm +58 -0
  476. data/share/guile/2.2/ice-9/scm-style-repl.scm +279 -0
  477. data/share/guile/2.2/ice-9/serialize.scm +114 -0
  478. data/share/guile/2.2/ice-9/session.scm +530 -0
  479. data/share/guile/2.2/ice-9/slib.scm +33 -0
  480. data/share/guile/2.2/ice-9/stack-catch.scm +47 -0
  481. data/share/guile/2.2/ice-9/streams.scm +168 -0
  482. data/share/guile/2.2/ice-9/string-fun.scm +280 -0
  483. data/share/guile/2.2/ice-9/suspendable-ports.scm +788 -0
  484. data/share/guile/2.2/ice-9/syncase.scm +37 -0
  485. data/share/guile/2.2/ice-9/textual-ports.scm +70 -0
  486. data/share/guile/2.2/ice-9/threads.scm +392 -0
  487. data/share/guile/2.2/ice-9/time.scm +58 -0
  488. data/share/guile/2.2/ice-9/top-repl.scm +78 -0
  489. data/share/guile/2.2/ice-9/unicode.scm +26 -0
  490. data/share/guile/2.2/ice-9/vlist.scm +595 -0
  491. data/share/guile/2.2/ice-9/weak-vector.scm +31 -0
  492. data/share/guile/2.2/language/brainfuck/compile-scheme.scm +123 -0
  493. data/share/guile/2.2/language/brainfuck/compile-tree-il.scm +184 -0
  494. data/share/guile/2.2/language/brainfuck/parse.scm +95 -0
  495. data/share/guile/2.2/language/brainfuck/spec.scm +43 -0
  496. data/share/guile/2.2/language/bytecode/spec.scm +42 -0
  497. data/share/guile/2.2/language/bytecode.scm +104 -0
  498. data/share/guile/2.2/language/cps/closure-conversion.scm +848 -0
  499. data/share/guile/2.2/language/cps/compile-bytecode.scm +610 -0
  500. data/share/guile/2.2/language/cps/constructors.scm +106 -0
  501. data/share/guile/2.2/language/cps/contification.scm +448 -0
  502. data/share/guile/2.2/language/cps/cse.scm +414 -0
  503. data/share/guile/2.2/language/cps/dce.scm +363 -0
  504. data/share/guile/2.2/language/cps/effects-analysis.scm +597 -0
  505. data/share/guile/2.2/language/cps/elide-values.scm +88 -0
  506. data/share/guile/2.2/language/cps/handle-interrupts.scm +69 -0
  507. data/share/guile/2.2/language/cps/intmap.scm +765 -0
  508. data/share/guile/2.2/language/cps/intset.scm +830 -0
  509. data/share/guile/2.2/language/cps/licm.scm +308 -0
  510. data/share/guile/2.2/language/cps/optimize.scm +135 -0
  511. data/share/guile/2.2/language/cps/peel-loops.scm +287 -0
  512. data/share/guile/2.2/language/cps/primitives.scm +141 -0
  513. data/share/guile/2.2/language/cps/prune-bailouts.scm +86 -0
  514. data/share/guile/2.2/language/cps/prune-top-level-scopes.scm +63 -0
  515. data/share/guile/2.2/language/cps/reify-primitives.scm +179 -0
  516. data/share/guile/2.2/language/cps/renumber.scm +217 -0
  517. data/share/guile/2.2/language/cps/rotate-loops.scm +239 -0
  518. data/share/guile/2.2/language/cps/self-references.scm +79 -0
  519. data/share/guile/2.2/language/cps/simplify.scm +274 -0
  520. data/share/guile/2.2/language/cps/slot-allocation.scm +1058 -0
  521. data/share/guile/2.2/language/cps/spec.scm +51 -0
  522. data/share/guile/2.2/language/cps/specialize-numbers.scm +724 -0
  523. data/share/guile/2.2/language/cps/specialize-primcalls.scm +87 -0
  524. data/share/guile/2.2/language/cps/split-rec.scm +174 -0
  525. data/share/guile/2.2/language/cps/type-checks.scm +72 -0
  526. data/share/guile/2.2/language/cps/type-fold.scm +455 -0
  527. data/share/guile/2.2/language/cps/types.scm +1826 -0
  528. data/share/guile/2.2/language/cps/utils.scm +550 -0
  529. data/share/guile/2.2/language/cps/verify.scm +304 -0
  530. data/share/guile/2.2/language/cps/with-cps.scm +145 -0
  531. data/share/guile/2.2/language/cps.scm +358 -0
  532. data/share/guile/2.2/language/ecmascript/array.scm +121 -0
  533. data/share/guile/2.2/language/ecmascript/base.scm +251 -0
  534. data/share/guile/2.2/language/ecmascript/compile-tree-il.scm +576 -0
  535. data/share/guile/2.2/language/ecmascript/function.scm +78 -0
  536. data/share/guile/2.2/language/ecmascript/impl.scm +169 -0
  537. data/share/guile/2.2/language/ecmascript/parse.scm +352 -0
  538. data/share/guile/2.2/language/ecmascript/spec.scm +37 -0
  539. data/share/guile/2.2/language/ecmascript/tokenize.scm +513 -0
  540. data/share/guile/2.2/language/elisp/bindings.scm +107 -0
  541. data/share/guile/2.2/language/elisp/boot.el +617 -0
  542. data/share/guile/2.2/language/elisp/compile-tree-il.scm +812 -0
  543. data/share/guile/2.2/language/elisp/falias.scm +47 -0
  544. data/share/guile/2.2/language/elisp/lexer.scm +430 -0
  545. data/share/guile/2.2/language/elisp/parser.scm +222 -0
  546. data/share/guile/2.2/language/elisp/runtime/function-slot.scm +63 -0
  547. data/share/guile/2.2/language/elisp/runtime/value-slot.scm +24 -0
  548. data/share/guile/2.2/language/elisp/runtime.scm +153 -0
  549. data/share/guile/2.2/language/elisp/spec.scm +43 -0
  550. data/share/guile/2.2/language/scheme/compile-tree-il.scm +33 -0
  551. data/share/guile/2.2/language/scheme/decompile-tree-il.scm +796 -0
  552. data/share/guile/2.2/language/scheme/spec.scm +63 -0
  553. data/share/guile/2.2/language/tree-il/analyze.scm +1568 -0
  554. data/share/guile/2.2/language/tree-il/canonicalize.scm +82 -0
  555. data/share/guile/2.2/language/tree-il/compile-cps.scm +1149 -0
  556. data/share/guile/2.2/language/tree-il/debug.scm +246 -0
  557. data/share/guile/2.2/language/tree-il/effects.scm +591 -0
  558. data/share/guile/2.2/language/tree-il/fix-letrec.scm +314 -0
  559. data/share/guile/2.2/language/tree-il/optimize.scm +43 -0
  560. data/share/guile/2.2/language/tree-il/peval.scm +1669 -0
  561. data/share/guile/2.2/language/tree-il/primitives.scm +630 -0
  562. data/share/guile/2.2/language/tree-il/spec.scm +46 -0
  563. data/share/guile/2.2/language/tree-il.scm +630 -0
  564. data/share/guile/2.2/language/value/spec.scm +30 -0
  565. data/share/guile/2.2/oop/goops/accessors.scm +72 -0
  566. data/share/guile/2.2/oop/goops/active-slot.scm +63 -0
  567. data/share/guile/2.2/oop/goops/composite-slot.scm +83 -0
  568. data/share/guile/2.2/oop/goops/describe.scm +189 -0
  569. data/share/guile/2.2/oop/goops/internal.scm +30 -0
  570. data/share/guile/2.2/oop/goops/save.scm +874 -0
  571. data/share/guile/2.2/oop/goops/simple.scm +30 -0
  572. data/share/guile/2.2/oop/goops/stklos.scm +74 -0
  573. data/share/guile/2.2/oop/goops.scm +3176 -0
  574. data/share/guile/2.2/rnrs/arithmetic/bitwise.scm +92 -0
  575. data/share/guile/2.2/rnrs/arithmetic/fixnums.scm +291 -0
  576. data/share/guile/2.2/rnrs/arithmetic/flonums.scm +203 -0
  577. data/share/guile/2.2/rnrs/base.scm +291 -0
  578. data/share/guile/2.2/rnrs/bytevectors.scm +83 -0
  579. data/share/guile/2.2/rnrs/conditions.scm +225 -0
  580. data/share/guile/2.2/rnrs/control.scm +22 -0
  581. data/share/guile/2.2/rnrs/enums.scm +152 -0
  582. data/share/guile/2.2/rnrs/eval.scm +39 -0
  583. data/share/guile/2.2/rnrs/exceptions.scm +276 -0
  584. data/share/guile/2.2/rnrs/files.scm +96 -0
  585. data/share/guile/2.2/rnrs/hashtables.scm +190 -0
  586. data/share/guile/2.2/rnrs/io/ports.scm +554 -0
  587. data/share/guile/2.2/rnrs/io/simple.scm +167 -0
  588. data/share/guile/2.2/rnrs/lists.scm +55 -0
  589. data/share/guile/2.2/rnrs/mutable-pairs.scm +23 -0
  590. data/share/guile/2.2/rnrs/mutable-strings.scm +23 -0
  591. data/share/guile/2.2/rnrs/programs.scm +22 -0
  592. data/share/guile/2.2/rnrs/r5rs.scm +34 -0
  593. data/share/guile/2.2/rnrs/records/inspection.scm +81 -0
  594. data/share/guile/2.2/rnrs/records/procedural.scm +289 -0
  595. data/share/guile/2.2/rnrs/records/syntactic.scm +248 -0
  596. data/share/guile/2.2/rnrs/sorting.scm +27 -0
  597. data/share/guile/2.2/rnrs/syntax-case.scm +68 -0
  598. data/share/guile/2.2/rnrs/unicode.scm +104 -0
  599. data/share/guile/2.2/rnrs.scm +289 -0
  600. data/share/guile/2.2/scripts/api-diff.scm +179 -0
  601. data/share/guile/2.2/scripts/autofrisk.scm +218 -0
  602. data/share/guile/2.2/scripts/compile.scm +273 -0
  603. data/share/guile/2.2/scripts/disassemble.scm +38 -0
  604. data/share/guile/2.2/scripts/display-commentary.scm +67 -0
  605. data/share/guile/2.2/scripts/doc-snarf.scm +439 -0
  606. data/share/guile/2.2/scripts/frisk.scm +290 -0
  607. data/share/guile/2.2/scripts/generate-autoload.scm +144 -0
  608. data/share/guile/2.2/scripts/help.scm +188 -0
  609. data/share/guile/2.2/scripts/lint.scm +318 -0
  610. data/share/guile/2.2/scripts/list.scm +91 -0
  611. data/share/guile/2.2/scripts/punify.scm +87 -0
  612. data/share/guile/2.2/scripts/read-rfc822.scm +131 -0
  613. data/share/guile/2.2/scripts/read-scheme-source.scm +282 -0
  614. data/share/guile/2.2/scripts/read-text-outline.scm +253 -0
  615. data/share/guile/2.2/scripts/scan-api.scm +223 -0
  616. data/share/guile/2.2/scripts/snarf-check-and-output-texi.scm +303 -0
  617. data/share/guile/2.2/scripts/snarf-guile-m4-docs.scm +86 -0
  618. data/share/guile/2.2/scripts/summarize-guile-TODO.scm +213 -0
  619. data/share/guile/2.2/scripts/use2dot.scm +110 -0
  620. data/share/guile/2.2/srfi/srfi-1.scm +1061 -0
  621. data/share/guile/2.2/srfi/srfi-10.scm +89 -0
  622. data/share/guile/2.2/srfi/srfi-11.scm +146 -0
  623. data/share/guile/2.2/srfi/srfi-111.scm +37 -0
  624. data/share/guile/2.2/srfi/srfi-13.scm +132 -0
  625. data/share/guile/2.2/srfi/srfi-14.scm +99 -0
  626. data/share/guile/2.2/srfi/srfi-16.scm +51 -0
  627. data/share/guile/2.2/srfi/srfi-17.scm +174 -0
  628. data/share/guile/2.2/srfi/srfi-18.scm +382 -0
  629. data/share/guile/2.2/srfi/srfi-19.scm +1470 -0
  630. data/share/guile/2.2/srfi/srfi-2.scm +31 -0
  631. data/share/guile/2.2/srfi/srfi-26.scm +66 -0
  632. data/share/guile/2.2/srfi/srfi-27.scm +96 -0
  633. data/share/guile/2.2/srfi/srfi-28.scm +34 -0
  634. data/share/guile/2.2/srfi/srfi-31.scm +35 -0
  635. data/share/guile/2.2/srfi/srfi-34.scm +84 -0
  636. data/share/guile/2.2/srfi/srfi-35.scm +351 -0
  637. data/share/guile/2.2/srfi/srfi-37.scm +234 -0
  638. data/share/guile/2.2/srfi/srfi-38.scm +207 -0
  639. data/share/guile/2.2/srfi/srfi-39.scm +55 -0
  640. data/share/guile/2.2/srfi/srfi-4/gnu.scm +80 -0
  641. data/share/guile/2.2/srfi/srfi-4.scm +118 -0
  642. data/share/guile/2.2/srfi/srfi-41.scm +505 -0
  643. data/share/guile/2.2/srfi/srfi-42/ec.scm +1053 -0
  644. data/share/guile/2.2/srfi/srfi-42.scm +66 -0
  645. data/share/guile/2.2/srfi/srfi-43.scm +1077 -0
  646. data/share/guile/2.2/srfi/srfi-45.scm +93 -0
  647. data/share/guile/2.2/srfi/srfi-6.scm +29 -0
  648. data/share/guile/2.2/srfi/srfi-60.scm +73 -0
  649. data/share/guile/2.2/srfi/srfi-64/testing.scm +1040 -0
  650. data/share/guile/2.2/srfi/srfi-64.scm +55 -0
  651. data/share/guile/2.2/srfi/srfi-67/compare.scm +686 -0
  652. data/share/guile/2.2/srfi/srfi-67.scm +88 -0
  653. data/share/guile/2.2/srfi/srfi-69.scm +336 -0
  654. data/share/guile/2.2/srfi/srfi-71.scm +267 -0
  655. data/share/guile/2.2/srfi/srfi-8.scm +31 -0
  656. data/share/guile/2.2/srfi/srfi-88.scm +53 -0
  657. data/share/guile/2.2/srfi/srfi-9/gnu.scm +168 -0
  658. data/share/guile/2.2/srfi/srfi-9.scm +351 -0
  659. data/share/guile/2.2/srfi/srfi-98.scm +44 -0
  660. data/share/guile/2.2/statprof.scm +988 -0
  661. data/share/guile/2.2/sxml/apply-templates.scm +102 -0
  662. data/share/guile/2.2/sxml/fold.scm +250 -0
  663. data/share/guile/2.2/sxml/match.scm +75 -0
  664. data/share/guile/2.2/sxml/simple.scm +408 -0
  665. data/share/guile/2.2/sxml/ssax/input-parse.scm +180 -0
  666. data/share/guile/2.2/sxml/ssax.scm +265 -0
  667. data/share/guile/2.2/sxml/sxml-match.ss +1181 -0
  668. data/share/guile/2.2/sxml/transform.scm +298 -0
  669. data/share/guile/2.2/sxml/upstream/SSAX.scm +3235 -0
  670. data/share/guile/2.2/sxml/upstream/SXML-tree-trans.scm +249 -0
  671. data/share/guile/2.2/sxml/upstream/SXPath-old.scm +1216 -0
  672. data/share/guile/2.2/sxml/upstream/assert.scm +35 -0
  673. data/share/guile/2.2/sxml/upstream/input-parse.scm +326 -0
  674. data/share/guile/2.2/sxml/xpath.scm +493 -0
  675. data/share/guile/2.2/system/base/ck.scm +55 -0
  676. data/share/guile/2.2/system/base/compile.scm +282 -0
  677. data/share/guile/2.2/system/base/lalr.scm +51 -0
  678. data/share/guile/2.2/system/base/lalr.upstream.scm +2096 -0
  679. data/share/guile/2.2/system/base/language.scm +119 -0
  680. data/share/guile/2.2/system/base/message.scm +238 -0
  681. data/share/guile/2.2/system/base/pmatch.scm +68 -0
  682. data/share/guile/2.2/system/base/syntax.scm +299 -0
  683. data/share/guile/2.2/system/base/target.scm +152 -0
  684. data/share/guile/2.2/system/base/types.scm +561 -0
  685. data/share/guile/2.2/system/foreign-object.scm +91 -0
  686. data/share/guile/2.2/system/foreign.scm +200 -0
  687. data/share/guile/2.2/system/repl/command.scm +946 -0
  688. data/share/guile/2.2/system/repl/common.scm +263 -0
  689. data/share/guile/2.2/system/repl/coop-server.scm +200 -0
  690. data/share/guile/2.2/system/repl/debug.scm +210 -0
  691. data/share/guile/2.2/system/repl/describe.scm +347 -0
  692. data/share/guile/2.2/system/repl/error-handling.scm +183 -0
  693. data/share/guile/2.2/system/repl/repl.scm +233 -0
  694. data/share/guile/2.2/system/repl/server.scm +332 -0
  695. data/share/guile/2.2/system/syntax.scm +33 -0
  696. data/share/guile/2.2/system/vm/assembler.scm +2614 -0
  697. data/share/guile/2.2/system/vm/coverage.scm +351 -0
  698. data/share/guile/2.2/system/vm/debug.scm +766 -0
  699. data/share/guile/2.2/system/vm/disassembler.scm +658 -0
  700. data/share/guile/2.2/system/vm/dwarf.scm +1852 -0
  701. data/share/guile/2.2/system/vm/elf.scm +1042 -0
  702. data/share/guile/2.2/system/vm/frame.scm +485 -0
  703. data/share/guile/2.2/system/vm/inspect.scm +188 -0
  704. data/share/guile/2.2/system/vm/linker.scm +732 -0
  705. data/share/guile/2.2/system/vm/loader.scm +27 -0
  706. data/share/guile/2.2/system/vm/program.scm +312 -0
  707. data/share/guile/2.2/system/vm/trace.scm +121 -0
  708. data/share/guile/2.2/system/vm/trap-state.scm +302 -0
  709. data/share/guile/2.2/system/vm/traps.scm +608 -0
  710. data/share/guile/2.2/system/vm/vm.scm +32 -0
  711. data/share/guile/2.2/system/xref.scm +369 -0
  712. data/share/guile/2.2/texinfo/docbook.scm +240 -0
  713. data/share/guile/2.2/texinfo/html.scm +279 -0
  714. data/share/guile/2.2/texinfo/indexing.scm +75 -0
  715. data/share/guile/2.2/texinfo/plain-text.scm +322 -0
  716. data/share/guile/2.2/texinfo/reflection.scm +585 -0
  717. data/share/guile/2.2/texinfo/serialize.scm +300 -0
  718. data/share/guile/2.2/texinfo/string-utils.scm +410 -0
  719. data/share/guile/2.2/texinfo.scm +1263 -0
  720. data/share/guile/2.2/web/client.scm +513 -0
  721. data/share/guile/2.2/web/http.scm +2043 -0
  722. data/share/guile/2.2/web/request.scm +326 -0
  723. data/share/guile/2.2/web/response.scm +379 -0
  724. data/share/guile/2.2/web/server/http.scm +183 -0
  725. data/share/guile/2.2/web/server.scm +397 -0
  726. data/share/guile/2.2/web/uri.scm +552 -0
  727. data/share/lilypond/2.24.1/fontconfig/0bd3dc0958fa2205aaaa8ebb13e2872b-le64.cache-8 +0 -0
  728. data/share/lilypond/2.24.1/fontconfig/188ac73a183f12857f63bb60a4a6d603-le64.cache-8 +0 -0
  729. data/share/lilypond/2.24.1/fontconfig/32b6488e5b8292a2e95c79d947e009e8-le64.cache-8 +0 -0
  730. data/share/lilypond/2.24.1/fontconfig/3830d5c3ddfd5cd38a049b759396e72e-le64.cache-8 +0 -0
  731. data/share/lilypond/2.24.1/fontconfig/3f7329c5293ffd510edef78f73874cfd-le64.cache-8 +0 -0
  732. data/share/lilypond/2.24.1/fontconfig/4c599c202bc5c08e2d34565a40eac3b2-le64.cache-8 +0 -0
  733. data/share/lilypond/2.24.1/fontconfig/57e423e26b20ab21d0f2f29c145174c3-le64.cache-8 +0 -0
  734. data/share/lilypond/2.24.1/fontconfig/7ef2298fde41cc6eeb7af42e48b7d293-le64.cache-8 +0 -0
  735. data/share/lilypond/2.24.1/fontconfig/826f6b6ef79022e2eac8af26bf4b62f2-le64.cache-8 +0 -0
  736. data/share/lilypond/2.24.1/fontconfig/945677eb7aeaf62f1d50efc3fb3ec7d8-le64.cache-8 +0 -0
  737. data/share/lilypond/2.24.1/fontconfig/95530828ff6c81d309f8258d8d02a23e-le64.cache-8 +0 -0
  738. data/share/lilypond/2.24.1/fontconfig/CACHEDIR.TAG +4 -0
  739. data/share/lilypond/2.24.1/fontconfig/bf3b770c553c462765856025a94f1ce6-le64.cache-8 +0 -0
  740. data/share/lilypond/2.24.1/fontconfig/c855463f699352c367813e37f3f70ea7-le64.cache-8 +0 -0
  741. data/share/lilypond/2.24.1/fontconfig/d3e5c4ee2ceb1fc347f91d4cefc53bc0-le64.cache-8 +0 -0
  742. data/share/lilypond/2.24.1/fontconfig/d589a48862398ed80a3d6066f4f56f4c-le64.cache-8 +0 -0
  743. data/share/lilypond/2.24.1/fontconfig/d82eb4fd963d448e2fcb7d7b793b5df3-le64.cache-8 +0 -0
  744. data/share/lilypond/2.24.1/fontconfig/e13b20fdb08344e0e664864cc2ede53d-le64.cache-8 +0 -0
  745. data/share/lilypond/2.24.1/fontconfig/e52a45a1c8c8fe895fc0fc8c4e6999b8-le64.cache-8 +0 -0
  746. data/share/lilypond/2.24.1/fontconfig/f1f2465696798768e9653f19e17ccdc8-le64.cache-8 +0 -0
  747. data/share/lilypond/2.24.1/fonts/00-lilypond-fonts.conf +99 -0
  748. data/share/lilypond/2.24.1/fonts/99-lilypond-fonts.conf +28 -0
  749. data/share/lilypond/2.24.1/fonts/otf/C059-BdIta.otf +0 -0
  750. data/share/lilypond/2.24.1/fonts/otf/C059-Bold.otf +0 -0
  751. data/share/lilypond/2.24.1/fonts/otf/C059-Italic.otf +0 -0
  752. data/share/lilypond/2.24.1/fonts/otf/C059-Roman.otf +0 -0
  753. data/share/lilypond/2.24.1/fonts/otf/NimbusMonoPS-Bold.otf +0 -0
  754. data/share/lilypond/2.24.1/fonts/otf/NimbusMonoPS-BoldItalic.otf +0 -0
  755. data/share/lilypond/2.24.1/fonts/otf/NimbusMonoPS-Italic.otf +0 -0
  756. data/share/lilypond/2.24.1/fonts/otf/NimbusMonoPS-Regular.otf +0 -0
  757. data/share/lilypond/2.24.1/fonts/otf/NimbusSans-Bold.otf +0 -0
  758. data/share/lilypond/2.24.1/fonts/otf/NimbusSans-BoldItalic.otf +0 -0
  759. data/share/lilypond/2.24.1/fonts/otf/NimbusSans-Italic.otf +0 -0
  760. data/share/lilypond/2.24.1/fonts/otf/NimbusSans-Regular.otf +0 -0
  761. data/share/lilypond/2.24.1/fonts/otf/emmentaler-11.otf +0 -0
  762. data/share/lilypond/2.24.1/fonts/otf/emmentaler-13.otf +0 -0
  763. data/share/lilypond/2.24.1/fonts/otf/emmentaler-14.otf +0 -0
  764. data/share/lilypond/2.24.1/fonts/otf/emmentaler-16.otf +0 -0
  765. data/share/lilypond/2.24.1/fonts/otf/emmentaler-18.otf +0 -0
  766. data/share/lilypond/2.24.1/fonts/otf/emmentaler-20.otf +0 -0
  767. data/share/lilypond/2.24.1/fonts/otf/emmentaler-23.otf +0 -0
  768. data/share/lilypond/2.24.1/fonts/otf/emmentaler-26.otf +0 -0
  769. data/share/lilypond/2.24.1/fonts/otf/emmentaler-brace.otf +0 -0
  770. data/share/lilypond/2.24.1/fonts/otf/texgyrecursor-bold.otf +0 -0
  771. data/share/lilypond/2.24.1/fonts/otf/texgyrecursor-bolditalic.otf +0 -0
  772. data/share/lilypond/2.24.1/fonts/otf/texgyrecursor-italic.otf +0 -0
  773. data/share/lilypond/2.24.1/fonts/otf/texgyrecursor-regular.otf +0 -0
  774. data/share/lilypond/2.24.1/fonts/otf/texgyreheros-bold.otf +0 -0
  775. data/share/lilypond/2.24.1/fonts/otf/texgyreheros-bolditalic.otf +0 -0
  776. data/share/lilypond/2.24.1/fonts/otf/texgyreheros-italic.otf +0 -0
  777. data/share/lilypond/2.24.1/fonts/otf/texgyreheros-regular.otf +0 -0
  778. data/share/lilypond/2.24.1/fonts/otf/texgyreschola-bold.otf +0 -0
  779. data/share/lilypond/2.24.1/fonts/otf/texgyreschola-bolditalic.otf +0 -0
  780. data/share/lilypond/2.24.1/fonts/otf/texgyreschola-italic.otf +0 -0
  781. data/share/lilypond/2.24.1/fonts/otf/texgyreschola-regular.otf +0 -0
  782. data/share/lilypond/2.24.1/fonts/source/common-modules-and-initialization.mf +26 -0
  783. data/share/lilypond/2.24.1/fonts/source/debugging-settings.mf +14 -0
  784. data/share/lilypond/2.24.1/fonts/source/declare-autometric-parameters.mf +9 -0
  785. data/share/lilypond/2.24.1/fonts/source/feta-accidentals.mf +58 -0
  786. data/share/lilypond/2.24.1/fonts/source/feta-accordion.mf +575 -0
  787. data/share/lilypond/2.24.1/fonts/source/feta-alphabet-generic.mf +16 -0
  788. data/share/lilypond/2.24.1/fonts/source/feta-alphabet11.mf +6 -0
  789. data/share/lilypond/2.24.1/fonts/source/feta-alphabet13.mf +6 -0
  790. data/share/lilypond/2.24.1/fonts/source/feta-alphabet14.mf +6 -0
  791. data/share/lilypond/2.24.1/fonts/source/feta-alphabet16.mf +6 -0
  792. data/share/lilypond/2.24.1/fonts/source/feta-alphabet18.mf +6 -0
  793. data/share/lilypond/2.24.1/fonts/source/feta-alphabet20.mf +6 -0
  794. data/share/lilypond/2.24.1/fonts/source/feta-alphabet23.mf +6 -0
  795. data/share/lilypond/2.24.1/fonts/source/feta-alphabet26.mf +6 -0
  796. data/share/lilypond/2.24.1/fonts/source/feta-arrow.mf +114 -0
  797. data/share/lilypond/2.24.1/fonts/source/feta-arrowheads.mf +171 -0
  798. data/share/lilypond/2.24.1/fonts/source/feta-autometric.mf +303 -0
  799. data/share/lilypond/2.24.1/fonts/source/feta-braces-a.mf +6 -0
  800. data/share/lilypond/2.24.1/fonts/source/feta-braces-b.mf +6 -0
  801. data/share/lilypond/2.24.1/fonts/source/feta-braces-c.mf +6 -0
  802. data/share/lilypond/2.24.1/fonts/source/feta-braces-d.mf +6 -0
  803. data/share/lilypond/2.24.1/fonts/source/feta-braces-e.mf +6 -0
  804. data/share/lilypond/2.24.1/fonts/source/feta-braces-f.mf +6 -0
  805. data/share/lilypond/2.24.1/fonts/source/feta-braces-g.mf +6 -0
  806. data/share/lilypond/2.24.1/fonts/source/feta-braces-generic.mf +47 -0
  807. data/share/lilypond/2.24.1/fonts/source/feta-braces-h.mf +6 -0
  808. data/share/lilypond/2.24.1/fonts/source/feta-braces-i.mf +6 -0
  809. data/share/lilypond/2.24.1/fonts/source/feta-braces.mf +125 -0
  810. data/share/lilypond/2.24.1/fonts/source/feta-brackettips.mf +100 -0
  811. data/share/lilypond/2.24.1/fonts/source/feta-clefs.mf +963 -0
  812. data/share/lilypond/2.24.1/fonts/source/feta-dots.mf +37 -0
  813. data/share/lilypond/2.24.1/fonts/source/feta-dynamics.mf +891 -0
  814. data/share/lilypond/2.24.1/fonts/source/feta-flags-generic.mf +17 -0
  815. data/share/lilypond/2.24.1/fonts/source/feta-flags.mf +926 -0
  816. data/share/lilypond/2.24.1/fonts/source/feta-flags11.mf +6 -0
  817. data/share/lilypond/2.24.1/fonts/source/feta-flags13.mf +6 -0
  818. data/share/lilypond/2.24.1/fonts/source/feta-flags14.mf +6 -0
  819. data/share/lilypond/2.24.1/fonts/source/feta-flags16.mf +6 -0
  820. data/share/lilypond/2.24.1/fonts/source/feta-flags18.mf +6 -0
  821. data/share/lilypond/2.24.1/fonts/source/feta-flags20.mf +6 -0
  822. data/share/lilypond/2.24.1/fonts/source/feta-flags23.mf +6 -0
  823. data/share/lilypond/2.24.1/fonts/source/feta-flags26.mf +6 -0
  824. data/share/lilypond/2.24.1/fonts/source/feta-flats.mf +668 -0
  825. data/share/lilypond/2.24.1/fonts/source/feta-macros.mf +506 -0
  826. data/share/lilypond/2.24.1/fonts/source/feta-naturals.mf +223 -0
  827. data/share/lilypond/2.24.1/fonts/source/feta-noteheads-generic.mf +17 -0
  828. data/share/lilypond/2.24.1/fonts/source/feta-noteheads.mf +2642 -0
  829. data/share/lilypond/2.24.1/fonts/source/feta-noteheads11.mf +6 -0
  830. data/share/lilypond/2.24.1/fonts/source/feta-noteheads13.mf +6 -0
  831. data/share/lilypond/2.24.1/fonts/source/feta-noteheads14.mf +6 -0
  832. data/share/lilypond/2.24.1/fonts/source/feta-noteheads16.mf +6 -0
  833. data/share/lilypond/2.24.1/fonts/source/feta-noteheads18.mf +6 -0
  834. data/share/lilypond/2.24.1/fonts/source/feta-noteheads20.mf +6 -0
  835. data/share/lilypond/2.24.1/fonts/source/feta-noteheads23.mf +6 -0
  836. data/share/lilypond/2.24.1/fonts/source/feta-noteheads26.mf +6 -0
  837. data/share/lilypond/2.24.1/fonts/source/feta-numbers.mf +1677 -0
  838. data/share/lilypond/2.24.1/fonts/source/feta-other-generic.mf +27 -0
  839. data/share/lilypond/2.24.1/fonts/source/feta-params.mf +323 -0
  840. data/share/lilypond/2.24.1/fonts/source/feta-parenthesis.mf +63 -0
  841. data/share/lilypond/2.24.1/fonts/source/feta-pedals.mf +355 -0
  842. data/share/lilypond/2.24.1/fonts/source/feta-rests.mf +890 -0
  843. data/share/lilypond/2.24.1/fonts/source/feta-scripts.mf +2206 -0
  844. data/share/lilypond/2.24.1/fonts/source/feta-sharps.mf +524 -0
  845. data/share/lilypond/2.24.1/fonts/source/feta-sori-koron.mf +325 -0
  846. data/share/lilypond/2.24.1/fonts/source/feta-ties.mf +72 -0
  847. data/share/lilypond/2.24.1/fonts/source/feta-timesignatures.mf +119 -0
  848. data/share/lilypond/2.24.1/fonts/source/feta-trills.mf +321 -0
  849. data/share/lilypond/2.24.1/fonts/source/feta11.mf +6 -0
  850. data/share/lilypond/2.24.1/fonts/source/feta13.mf +6 -0
  851. data/share/lilypond/2.24.1/fonts/source/feta14.mf +6 -0
  852. data/share/lilypond/2.24.1/fonts/source/feta16.mf +6 -0
  853. data/share/lilypond/2.24.1/fonts/source/feta18.mf +6 -0
  854. data/share/lilypond/2.24.1/fonts/source/feta20.mf +7 -0
  855. data/share/lilypond/2.24.1/fonts/source/feta23.mf +6 -0
  856. data/share/lilypond/2.24.1/fonts/source/feta26.mf +6 -0
  857. data/share/lilypond/2.24.1/fonts/source/parmesan-accidentals.mf +483 -0
  858. data/share/lilypond/2.24.1/fonts/source/parmesan-clefs.mf +1636 -0
  859. data/share/lilypond/2.24.1/fonts/source/parmesan-custodes.mf +503 -0
  860. data/share/lilypond/2.24.1/fonts/source/parmesan-dots.mf +62 -0
  861. data/share/lilypond/2.24.1/fonts/source/parmesan-flags.mf +319 -0
  862. data/share/lilypond/2.24.1/fonts/source/parmesan-macros.mf +225 -0
  863. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads-generic.mf +16 -0
  864. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads.mf +2191 -0
  865. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads11.mf +6 -0
  866. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads13.mf +6 -0
  867. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads14.mf +6 -0
  868. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads16.mf +6 -0
  869. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads18.mf +6 -0
  870. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads20.mf +6 -0
  871. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads23.mf +6 -0
  872. data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads26.mf +6 -0
  873. data/share/lilypond/2.24.1/fonts/source/parmesan-other-generic.mf +24 -0
  874. data/share/lilypond/2.24.1/fonts/source/parmesan-rests.mf +428 -0
  875. data/share/lilypond/2.24.1/fonts/source/parmesan-scripts.mf +284 -0
  876. data/share/lilypond/2.24.1/fonts/source/parmesan-timesignatures.mf +402 -0
  877. data/share/lilypond/2.24.1/fonts/source/parmesan11.mf +6 -0
  878. data/share/lilypond/2.24.1/fonts/source/parmesan13.mf +6 -0
  879. data/share/lilypond/2.24.1/fonts/source/parmesan14.mf +6 -0
  880. data/share/lilypond/2.24.1/fonts/source/parmesan16.mf +6 -0
  881. data/share/lilypond/2.24.1/fonts/source/parmesan18.mf +6 -0
  882. data/share/lilypond/2.24.1/fonts/source/parmesan20.mf +6 -0
  883. data/share/lilypond/2.24.1/fonts/source/parmesan23.mf +6 -0
  884. data/share/lilypond/2.24.1/fonts/source/parmesan26.mf +6 -0
  885. data/share/lilypond/2.24.1/fonts/svg/emmentaler-11.svg +2525 -0
  886. data/share/lilypond/2.24.1/fonts/svg/emmentaler-11.woff +0 -0
  887. data/share/lilypond/2.24.1/fonts/svg/emmentaler-13.svg +2530 -0
  888. data/share/lilypond/2.24.1/fonts/svg/emmentaler-13.woff +0 -0
  889. data/share/lilypond/2.24.1/fonts/svg/emmentaler-14.svg +2526 -0
  890. data/share/lilypond/2.24.1/fonts/svg/emmentaler-14.woff +0 -0
  891. data/share/lilypond/2.24.1/fonts/svg/emmentaler-16.svg +2523 -0
  892. data/share/lilypond/2.24.1/fonts/svg/emmentaler-16.woff +0 -0
  893. data/share/lilypond/2.24.1/fonts/svg/emmentaler-18.svg +2519 -0
  894. data/share/lilypond/2.24.1/fonts/svg/emmentaler-18.woff +0 -0
  895. data/share/lilypond/2.24.1/fonts/svg/emmentaler-20.svg +2512 -0
  896. data/share/lilypond/2.24.1/fonts/svg/emmentaler-20.woff +0 -0
  897. data/share/lilypond/2.24.1/fonts/svg/emmentaler-23.svg +2506 -0
  898. data/share/lilypond/2.24.1/fonts/svg/emmentaler-23.woff +0 -0
  899. data/share/lilypond/2.24.1/fonts/svg/emmentaler-26.svg +2510 -0
  900. data/share/lilypond/2.24.1/fonts/svg/emmentaler-26.woff +0 -0
  901. data/share/lilypond/2.24.1/fonts/svg/emmentaler-brace.svg +1757 -0
  902. data/share/lilypond/2.24.1/fonts/svg/emmentaler-brace.woff +0 -0
  903. data/share/lilypond/2.24.1/ly/Welcome_to_LilyPond.ly +45 -0
  904. data/share/lilypond/2.24.1/ly/arabic.ly +185 -0
  905. data/share/lilypond/2.24.1/ly/articulate.ly +1013 -0
  906. data/share/lilypond/2.24.1/ly/bagpipe.ly +368 -0
  907. data/share/lilypond/2.24.1/ly/base-tkit.ly +135 -0
  908. data/share/lilypond/2.24.1/ly/catalan.ly +23 -0
  909. data/share/lilypond/2.24.1/ly/chord-modifiers-init.ly +63 -0
  910. data/share/lilypond/2.24.1/ly/chord-repetition-init.ly +60 -0
  911. data/share/lilypond/2.24.1/ly/context-mods-init.ly +119 -0
  912. data/share/lilypond/2.24.1/ly/declarations-init.ly +167 -0
  913. data/share/lilypond/2.24.1/ly/deutsch.ly +23 -0
  914. data/share/lilypond/2.24.1/ly/drumpitch-init.ly +366 -0
  915. data/share/lilypond/2.24.1/ly/dynamic-scripts-init.ly +54 -0
  916. data/share/lilypond/2.24.1/ly/english.ly +23 -0
  917. data/share/lilypond/2.24.1/ly/engraver-init.ly +1619 -0
  918. data/share/lilypond/2.24.1/ly/espanol.ly +23 -0
  919. data/share/lilypond/2.24.1/ly/event-listener.ly +241 -0
  920. data/share/lilypond/2.24.1/ly/festival.ly +38 -0
  921. data/share/lilypond/2.24.1/ly/generate-documentation.ly +7 -0
  922. data/share/lilypond/2.24.1/ly/grace-init.ly +56 -0
  923. data/share/lilypond/2.24.1/ly/graphviz-init.ly +174 -0
  924. data/share/lilypond/2.24.1/ly/gregorian.ly +268 -0
  925. data/share/lilypond/2.24.1/ly/guile-debugger.ly +55 -0
  926. data/share/lilypond/2.24.1/ly/hel-arabic.ly +307 -0
  927. data/share/lilypond/2.24.1/ly/init.ly +96 -0
  928. data/share/lilypond/2.24.1/ly/italiano.ly +23 -0
  929. data/share/lilypond/2.24.1/ly/lilypond-book-preamble.ly +47 -0
  930. data/share/lilypond/2.24.1/ly/lyrics-tkit.ly +68 -0
  931. data/share/lilypond/2.24.1/ly/makam.ly +166 -0
  932. data/share/lilypond/2.24.1/ly/midi-init.ly +59 -0
  933. data/share/lilypond/2.24.1/ly/music-functions-init.ly +2254 -0
  934. data/share/lilypond/2.24.1/ly/nederlands.ly +23 -0
  935. data/share/lilypond/2.24.1/ly/norsk.ly +23 -0
  936. data/share/lilypond/2.24.1/ly/paper-defaults-init.ly +188 -0
  937. data/share/lilypond/2.24.1/ly/performer-init.ly +398 -0
  938. data/share/lilypond/2.24.1/ly/persian.ly +335 -0
  939. data/share/lilypond/2.24.1/ly/piano-tkit.ly +61 -0
  940. data/share/lilypond/2.24.1/ly/portugues.ly +23 -0
  941. data/share/lilypond/2.24.1/ly/predefined-fretboards-init.ly +78 -0
  942. data/share/lilypond/2.24.1/ly/predefined-guitar-fretboards.ly +506 -0
  943. data/share/lilypond/2.24.1/ly/predefined-guitar-ninth-fretboards.ly +75 -0
  944. data/share/lilypond/2.24.1/ly/predefined-mandolin-fretboards.ly +876 -0
  945. data/share/lilypond/2.24.1/ly/predefined-ukulele-fretboards.ly +1285 -0
  946. data/share/lilypond/2.24.1/ly/property-init.ly +858 -0
  947. data/share/lilypond/2.24.1/ly/satb.ly +214 -0
  948. data/share/lilypond/2.24.1/ly/scale-definitions-init.ly +117 -0
  949. data/share/lilypond/2.24.1/ly/scheme-sandbox.ly +39 -0
  950. data/share/lilypond/2.24.1/ly/script-init.ly +94 -0
  951. data/share/lilypond/2.24.1/ly/spanners-init.ly +146 -0
  952. data/share/lilypond/2.24.1/ly/ssaattbb.ly +335 -0
  953. data/share/lilypond/2.24.1/ly/staff-tkit.ly +182 -0
  954. data/share/lilypond/2.24.1/ly/string-tunings-init.ly +94 -0
  955. data/share/lilypond/2.24.1/ly/suomi.ly +23 -0
  956. data/share/lilypond/2.24.1/ly/svenska.ly +23 -0
  957. data/share/lilypond/2.24.1/ly/swing.ly +362 -0
  958. data/share/lilypond/2.24.1/ly/text-replacements.ly +150 -0
  959. data/share/lilypond/2.24.1/ly/titling-init.ly +150 -0
  960. data/share/lilypond/2.24.1/ly/toc-init.ly +182 -0
  961. data/share/lilypond/2.24.1/ly/turkish-makam.ly +609 -0
  962. data/share/lilypond/2.24.1/ly/vlaams.ly +23 -0
  963. data/share/lilypond/2.24.1/ly/vocal-tkit.ly +103 -0
  964. data/share/lilypond/2.24.1/ly/voice-tkit.ly +34 -0
  965. data/share/lilypond/2.24.1/ps/encodingdefs.ps +2611 -0
  966. data/share/lilypond/2.24.1/ps/lilyponddefs.ps +49 -0
  967. data/share/lilypond/2.24.1/ps/music-drawing-routines.ps +329 -0
  968. data/share/lilypond/2.24.1/python/__pycache__/book_base.cpython-310.pyc +0 -0
  969. data/share/lilypond/2.24.1/python/__pycache__/book_docbook.cpython-310.pyc +0 -0
  970. data/share/lilypond/2.24.1/python/__pycache__/book_html.cpython-310.pyc +0 -0
  971. data/share/lilypond/2.24.1/python/__pycache__/book_latex.cpython-310.pyc +0 -0
  972. data/share/lilypond/2.24.1/python/__pycache__/book_snippets.cpython-310.pyc +0 -0
  973. data/share/lilypond/2.24.1/python/__pycache__/book_texinfo.cpython-310.pyc +0 -0
  974. data/share/lilypond/2.24.1/python/__pycache__/convertrules.cpython-310.pyc +0 -0
  975. data/share/lilypond/2.24.1/python/__pycache__/langdefs.cpython-310.pyc +0 -0
  976. data/share/lilypond/2.24.1/python/__pycache__/lilylib.cpython-310.pyc +0 -0
  977. data/share/lilypond/2.24.1/python/__pycache__/midi.cpython-310.pyc +0 -0
  978. data/share/lilypond/2.24.1/python/__pycache__/musicexp.cpython-310.pyc +0 -0
  979. data/share/lilypond/2.24.1/python/__pycache__/musicxml.cpython-310.pyc +0 -0
  980. data/share/lilypond/2.24.1/python/__pycache__/musicxml2ly_conversion.cpython-310.pyc +0 -0
  981. data/share/lilypond/2.24.1/python/__pycache__/utilities.cpython-310.pyc +0 -0
  982. data/share/lilypond/2.24.1/python/book_base.py +331 -0
  983. data/share/lilypond/2.24.1/python/book_docbook.py +154 -0
  984. data/share/lilypond/2.24.1/python/book_html.py +178 -0
  985. data/share/lilypond/2.24.1/python/book_latex.py +373 -0
  986. data/share/lilypond/2.24.1/python/book_snippets.py +1052 -0
  987. data/share/lilypond/2.24.1/python/book_texinfo.py +437 -0
  988. data/share/lilypond/2.24.1/python/convertrules.py +4764 -0
  989. data/share/lilypond/2.24.1/python/langdefs.py +131 -0
  990. data/share/lilypond/2.24.1/python/lilylib.py +141 -0
  991. data/share/lilypond/2.24.1/python/midi.py +212 -0
  992. data/share/lilypond/2.24.1/python/musicexp.py +2781 -0
  993. data/share/lilypond/2.24.1/python/musicxml.py +1905 -0
  994. data/share/lilypond/2.24.1/python/musicxml2ly_conversion.py +80 -0
  995. data/share/lilypond/2.24.1/python/utilities.py +280 -0
  996. data/share/lilypond/2.24.1/scm/lily/accreg.scm +579 -0
  997. data/share/lilypond/2.24.1/scm/lily/auto-beam.scm +163 -0
  998. data/share/lilypond/2.24.1/scm/lily/autochange.scm +100 -0
  999. data/share/lilypond/2.24.1/scm/lily/backend-library.scm +593 -0
  1000. data/share/lilypond/2.24.1/scm/lily/bar-line.scm +1281 -0
  1001. data/share/lilypond/2.24.1/scm/lily/breath.scm +74 -0
  1002. data/share/lilypond/2.24.1/scm/lily/c++.scm +174 -0
  1003. data/share/lilypond/2.24.1/scm/lily/chord-entry.scm +278 -0
  1004. data/share/lilypond/2.24.1/scm/lily/chord-ignatzek-names.scm +304 -0
  1005. data/share/lilypond/2.24.1/scm/lily/chord-name.scm +217 -0
  1006. data/share/lilypond/2.24.1/scm/lily/clip-region.scm +87 -0
  1007. data/share/lilypond/2.24.1/scm/lily/color.scm +757 -0
  1008. data/share/lilypond/2.24.1/scm/lily/curried-definitions.scm +68 -0
  1009. data/share/lilypond/2.24.1/scm/lily/define-context-properties.scm +939 -0
  1010. data/share/lilypond/2.24.1/scm/lily/define-event-classes.scm +142 -0
  1011. data/share/lilypond/2.24.1/scm/lily/define-grob-interfaces.scm +640 -0
  1012. data/share/lilypond/2.24.1/scm/lily/define-grob-properties.scm +1647 -0
  1013. data/share/lilypond/2.24.1/scm/lily/define-grobs.scm +4027 -0
  1014. data/share/lilypond/2.24.1/scm/lily/define-markup-commands.scm +5737 -0
  1015. data/share/lilypond/2.24.1/scm/lily/define-music-callbacks.scm +257 -0
  1016. data/share/lilypond/2.24.1/scm/lily/define-music-display-methods.scm +1350 -0
  1017. data/share/lilypond/2.24.1/scm/lily/define-music-properties.scm +242 -0
  1018. data/share/lilypond/2.24.1/scm/lily/define-music-types.scm +983 -0
  1019. data/share/lilypond/2.24.1/scm/lily/define-note-names.scm +1421 -0
  1020. data/share/lilypond/2.24.1/scm/lily/define-stencil-commands.scm +71 -0
  1021. data/share/lilypond/2.24.1/scm/lily/define-woodwind-diagrams.scm +1215 -0
  1022. data/share/lilypond/2.24.1/scm/lily/display-lily.scm +315 -0
  1023. data/share/lilypond/2.24.1/scm/lily/display-woodwind-diagrams.scm +1985 -0
  1024. data/share/lilypond/2.24.1/scm/lily/document-backend.scm +307 -0
  1025. data/share/lilypond/2.24.1/scm/lily/document-context-mods.scm +98 -0
  1026. data/share/lilypond/2.24.1/scm/lily/document-functions.scm +169 -0
  1027. data/share/lilypond/2.24.1/scm/lily/document-identifiers.scm +76 -0
  1028. data/share/lilypond/2.24.1/scm/lily/document-markup.scm +158 -0
  1029. data/share/lilypond/2.24.1/scm/lily/document-music.scm +146 -0
  1030. data/share/lilypond/2.24.1/scm/lily/document-outside-staff-priorities.scm +40 -0
  1031. data/share/lilypond/2.24.1/scm/lily/document-paper-sizes.scm +71 -0
  1032. data/share/lilypond/2.24.1/scm/lily/document-translation.scm +318 -0
  1033. data/share/lilypond/2.24.1/scm/lily/document-type-predicates.scm +85 -0
  1034. data/share/lilypond/2.24.1/scm/lily/documentation-generate.scm +259 -0
  1035. data/share/lilypond/2.24.1/scm/lily/documentation-lib.scm +207 -0
  1036. data/share/lilypond/2.24.1/scm/lily/file-cache.scm +28 -0
  1037. data/share/lilypond/2.24.1/scm/lily/flag-styles.scm +249 -0
  1038. data/share/lilypond/2.24.1/scm/lily/font-encodings.scm +1242 -0
  1039. data/share/lilypond/2.24.1/scm/lily/font.scm +303 -0
  1040. data/share/lilypond/2.24.1/scm/lily/framework-cairo.scm +26 -0
  1041. data/share/lilypond/2.24.1/scm/lily/framework-ps.scm +896 -0
  1042. data/share/lilypond/2.24.1/scm/lily/framework-svg.scm +172 -0
  1043. data/share/lilypond/2.24.1/scm/lily/fret-diagrams.scm +1261 -0
  1044. data/share/lilypond/2.24.1/scm/lily/graphviz.scm +78 -0
  1045. data/share/lilypond/2.24.1/scm/lily/guile-debugger.scm +90 -0
  1046. data/share/lilypond/2.24.1/scm/lily/harp-pedals.scm +172 -0
  1047. data/share/lilypond/2.24.1/scm/lily/hyphenate-internal-words.scm +51 -0
  1048. data/share/lilypond/2.24.1/scm/lily/layout-beam.scm +73 -0
  1049. data/share/lilypond/2.24.1/scm/lily/layout-slur.scm +45 -0
  1050. data/share/lilypond/2.24.1/scm/lily/lily-library.scm +1446 -0
  1051. data/share/lilypond/2.24.1/scm/lily/lily-sort.scm +116 -0
  1052. data/share/lilypond/2.24.1/scm/lily/lily.scm +929 -0
  1053. data/share/lilypond/2.24.1/scm/lily/ly-syntax-constructors.scm +374 -0
  1054. data/share/lilypond/2.24.1/scm/lily/markup-macros.scm +493 -0
  1055. data/share/lilypond/2.24.1/scm/lily/markup.scm +126 -0
  1056. data/share/lilypond/2.24.1/scm/lily/midi.scm +258 -0
  1057. data/share/lilypond/2.24.1/scm/lily/modal-transforms.scm +337 -0
  1058. data/share/lilypond/2.24.1/scm/lily/music-functions.scm +2878 -0
  1059. data/share/lilypond/2.24.1/scm/lily/output-lib.scm +3377 -0
  1060. data/share/lilypond/2.24.1/scm/lily/output-ps.scm +335 -0
  1061. data/share/lilypond/2.24.1/scm/lily/output-svg.scm +684 -0
  1062. data/share/lilypond/2.24.1/scm/lily/page.scm +321 -0
  1063. data/share/lilypond/2.24.1/scm/lily/paper-system.scm +271 -0
  1064. data/share/lilypond/2.24.1/scm/lily/paper.scm +376 -0
  1065. data/share/lilypond/2.24.1/scm/lily/parser-clef.scm +205 -0
  1066. data/share/lilypond/2.24.1/scm/lily/parser-ly-from-scheme.scm +170 -0
  1067. data/share/lilypond/2.24.1/scm/lily/part-combiner.scm +998 -0
  1068. data/share/lilypond/2.24.1/scm/lily/predefined-fretboards.scm +54 -0
  1069. data/share/lilypond/2.24.1/scm/lily/ps-to-png.scm +182 -0
  1070. data/share/lilypond/2.24.1/scm/lily/scheme-engravers.scm +1813 -0
  1071. data/share/lilypond/2.24.1/scm/lily/scheme-performers.scm +126 -0
  1072. data/share/lilypond/2.24.1/scm/lily/script.scm +416 -0
  1073. data/share/lilypond/2.24.1/scm/lily/skyline.scm +25 -0
  1074. data/share/lilypond/2.24.1/scm/lily/song-util.scm +191 -0
  1075. data/share/lilypond/2.24.1/scm/lily/song.scm +853 -0
  1076. data/share/lilypond/2.24.1/scm/lily/stencil.scm +998 -0
  1077. data/share/lilypond/2.24.1/scm/lily/tablature.scm +392 -0
  1078. data/share/lilypond/2.24.1/scm/lily/time-signature-settings.scm +473 -0
  1079. data/share/lilypond/2.24.1/scm/lily/time-signature.scm +35 -0
  1080. data/share/lilypond/2.24.1/scm/lily/titling.scm +99 -0
  1081. data/share/lilypond/2.24.1/scm/lily/to-xml.scm +254 -0
  1082. data/share/lilypond/2.24.1/scm/lily/translation-functions.scm +1169 -0
  1083. data/share/lilypond/2.24.1/vim/compiler/lilypond.vim +36 -0
  1084. data/share/lilypond/2.24.1/vim/ftdetect/lilypond.vim +4 -0
  1085. data/share/lilypond/2.24.1/vim/ftplugin/lilypond.vim +91 -0
  1086. data/share/lilypond/2.24.1/vim/indent/lilypond.vim +79 -0
  1087. data/share/lilypond/2.24.1/vim/syntax/lilypond-words +1408 -0
  1088. data/share/lilypond/2.24.1/vim/syntax/lilypond-words.vim +3 -0
  1089. data/share/lilypond/2.24.1/vim/syntax/lilypond.vim +104 -0
  1090. data/share/locale/ca/LC_MESSAGES/lilypond.mo +0 -0
  1091. data/share/locale/cs/LC_MESSAGES/lilypond.mo +0 -0
  1092. data/share/locale/da/LC_MESSAGES/lilypond.mo +0 -0
  1093. data/share/locale/de/LC_MESSAGES/lilypond.mo +0 -0
  1094. data/share/locale/el/LC_MESSAGES/lilypond.mo +0 -0
  1095. data/share/locale/eo/LC_MESSAGES/lilypond.mo +0 -0
  1096. data/share/locale/es/LC_MESSAGES/lilypond.mo +0 -0
  1097. data/share/locale/fi/LC_MESSAGES/lilypond.mo +0 -0
  1098. data/share/locale/fr/LC_MESSAGES/lilypond.mo +0 -0
  1099. data/share/locale/it/LC_MESSAGES/lilypond.mo +0 -0
  1100. data/share/locale/ja/LC_MESSAGES/lilypond.mo +0 -0
  1101. data/share/locale/nl/LC_MESSAGES/lilypond.mo +0 -0
  1102. data/share/locale/ru/LC_MESSAGES/lilypond.mo +0 -0
  1103. data/share/locale/sv/LC_MESSAGES/lilypond.mo +0 -0
  1104. data/share/locale/tr/LC_MESSAGES/lilypond.mo +0 -0
  1105. data/share/locale/uk/LC_MESSAGES/lilypond.mo +0 -0
  1106. data/share/locale/vi/LC_MESSAGES/lilypond.mo +0 -0
  1107. data/share/locale/zh_CN/LC_MESSAGES/lilypond.mo +0 -0
  1108. data/share/locale/zh_TW/LC_MESSAGES/lilypond.mo +0 -0
  1109. metadata +1108 -1
@@ -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);