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,1905 @@
1
+ # musicxml.py
2
+ # -*- coding: utf-8 -*-
3
+ #
4
+ # This file is part of LilyPond, the GNU music typesetter.
5
+ #
6
+ # Copyright (C) 2005--2022 Han-Wen Nienhuys <hanwen@xs4all.nl>,
7
+ # 2007--2011 Reinhold Kainhofer <reinhold@kainhofer.com>
8
+ #
9
+ # LilyPond is free software: you can redistribute it and/or modify
10
+ # it under the terms of the GNU General Public License as published by
11
+ # the Free Software Foundation, either version 3 of the License, or
12
+ # (at your option) any later version.
13
+ #
14
+ # LilyPond is distributed in the hope that it will be useful,
15
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
+ # GNU General Public License for more details.
18
+ #
19
+ # You should have received a copy of the GNU General Public License
20
+ # along with LilyPond. If not, see <http://www.gnu.org/licenses/>.
21
+
22
+
23
+ from collections import OrderedDict
24
+ import copy
25
+ from fractions import Fraction
26
+ import re
27
+ import sys
28
+ import warnings
29
+
30
+ import lilylib as ly
31
+ import musicexp
32
+ import musicxml2ly_conversion
33
+ import utilities
34
+
35
+
36
+ class Xml_node(object):
37
+
38
+ def __init__(self):
39
+ self._children = []
40
+ self._data = None
41
+ self._original = None
42
+ self._name = 'xml_node'
43
+ self._parent = None
44
+ self._attribute_dict = {}
45
+
46
+ def get_parent(self):
47
+ return self._parent
48
+
49
+ def is_first(self):
50
+ return self._parent.get_typed_children(self.__class__)[0] == self
51
+
52
+ def original(self):
53
+ return self._original
54
+
55
+ def get_name(self):
56
+ return self._name
57
+
58
+ def get_text(self):
59
+ if self._data:
60
+ return self._data
61
+
62
+ if not self._children:
63
+ return ''
64
+
65
+ return ''.join([c.get_text() for c in self._children])
66
+
67
+ def message(self, msg):
68
+ ly.warning(msg)
69
+
70
+ p = self
71
+ while p:
72
+ ly.progress(' In: <%s %s>\n' % (p._name, ' '.join(
73
+ ['%s=%s' % item for item in list(p._attribute_dict.items())])))
74
+ p = p.get_parent()
75
+
76
+ def dump(self, indent=''):
77
+ ly.debug_output('%s<%s%s>' % (indent, self._name, ''.join(
78
+ [' %s=%s' % item for item in list(self._attribute_dict.items())])))
79
+ non_text_children = [
80
+ c for c in self._children if not isinstance(c, Hash_text)]
81
+ if non_text_children:
82
+ ly.debug_output('\n')
83
+ for c in self._children:
84
+ c.dump(indent + " ")
85
+ if non_text_children:
86
+ ly.debug_output(indent)
87
+ ly.debug_output('</%s>\n' % self._name)
88
+
89
+ def get_typed_children(self, klass):
90
+ if not klass:
91
+ return []
92
+ else:
93
+ return [c for c in self._children if isinstance(c, klass)]
94
+
95
+ def get_named_children(self, nm):
96
+ return self.get_typed_children(get_class(nm))
97
+
98
+ def get_named_child(self, nm):
99
+ return self.get_maybe_exist_named_child(nm)
100
+
101
+ def get_children(self, predicate):
102
+ return [c for c in self._children if predicate(c)]
103
+
104
+ def get_all_children(self):
105
+ return self._children
106
+
107
+ def get_maybe_exist_named_child(self, name):
108
+ return self.get_maybe_exist_typed_child(get_class(name))
109
+
110
+ def get_maybe_exist_typed_child(self, klass):
111
+ cn = self.get_typed_children(klass)
112
+ if len(cn) == 0:
113
+ return None
114
+ else:
115
+ if len(cn) > 1:
116
+ warnings.warn(_('more than one child of class %s, all but'
117
+ ' the first will be ignored') % klass.__name__)
118
+ return cn[0]
119
+
120
+ def get_unique_typed_child(self, klass):
121
+ cn = self.get_typed_children(klass)
122
+ if len(cn) != 1:
123
+ ly.error(self.__dict__)
124
+ raise RuntimeError(
125
+ 'Child is not unique for %s found %d' % (klass, cn))
126
+
127
+ return cn[0]
128
+
129
+ def get_named_child_value_number(self, name, default):
130
+ n = self.get_maybe_exist_named_child(name)
131
+ if n:
132
+ return int(n.get_text())
133
+ else:
134
+ return default
135
+
136
+
137
+ class Music_xml_node(Xml_node):
138
+ def __init__(self):
139
+ Xml_node.__init__(self)
140
+ self.duration = Fraction(0)
141
+ self.start = Fraction(0)
142
+ self.converted = False
143
+ self.voice_id = None
144
+
145
+
146
+ class Music_xml_spanner(Music_xml_node):
147
+
148
+ def get_type(self):
149
+ if hasattr(self, 'type'):
150
+ return self.type
151
+ else:
152
+ return 0
153
+
154
+ def get_size(self):
155
+ if hasattr(self, 'size'):
156
+ return int(self.size)
157
+ else:
158
+ return 0
159
+
160
+
161
+ class Measure_element(Music_xml_node):
162
+
163
+ def get_voice_id(self):
164
+ voice = self.get_maybe_exist_named_child('voice')
165
+ if voice:
166
+ return voice.get_text()
167
+ else:
168
+ return self.voice_id
169
+
170
+ def is_first(self):
171
+ # Look at all measure elements(previously we had self.__class__, which
172
+ # only looked at objects of the same type!
173
+ cn = self._parent.get_typed_children(Measure_element)
174
+ # But only look at the correct voice; But include Attributes, too, which
175
+ # are not tied to any particular voice
176
+ cn = [c for c in cn if(
177
+ c.get_voice_id() == self.get_voice_id()) or isinstance(c, Attributes)]
178
+ return cn[0] == self
179
+
180
+
181
+ class Work(Xml_node):
182
+
183
+ def get_work_information(self, tag):
184
+ wt = self.get_maybe_exist_named_child(tag)
185
+ if wt:
186
+ return wt.get_text()
187
+ else:
188
+ return ''
189
+
190
+ def get_work_title(self):
191
+ return self.get_work_information('work-title')
192
+
193
+ def get_work_number(self):
194
+ return self.get_work_information('work-number')
195
+
196
+ # def get_opus(self):
197
+ # return self.get_work_information('opus')
198
+
199
+
200
+ class Identification(Xml_node):
201
+
202
+ def get_rights(self):
203
+ rights = self.get_named_children('rights')
204
+ ret = []
205
+ for r in rights:
206
+ text = r.get_text()
207
+ # if this Xml_node has an attribute, such as 'type="words"',
208
+ # include it in the header. Otherwise, it is assumed that
209
+ # the text contents of this node looks something like this:
210
+ # 'Copyright: X.Y.' and thus already contains the relevant
211
+ # information.
212
+ if hasattr(r, 'type'):
213
+ rights_type = r.type.title() # capitalize first letter
214
+ result = ''.join([rights_type, ': ', text])
215
+ ret.append(result)
216
+ else:
217
+ ret.append(text)
218
+ return "\n".join(ret)
219
+
220
+ # get contents of the source-element(usually used for publishing information).(These contents are saved in a custom variable named "source" in the header of the .ly file.)
221
+ def get_source(self):
222
+ source = self.get_named_children('source')
223
+ ret = []
224
+ for r in source:
225
+ ret.append(r.get_text())
226
+ return "\n".join(ret)
227
+
228
+ def get_creator(self, type):
229
+ creators = self.get_named_children('creator')
230
+ # return the first creator tag that has the particular type
231
+ for i in creators:
232
+ if hasattr(i, 'type') and i.type == type:
233
+ return i.get_text()
234
+ return None
235
+
236
+ def get_composer(self):
237
+ c = self.get_creator('composer')
238
+ if c:
239
+ return c
240
+ creators = self.get_named_children('creator')
241
+ # return the first creator tag that has no type at all
242
+ for i in creators:
243
+ if not hasattr(i, 'type'):
244
+ return i.get_text()
245
+ return None
246
+
247
+ def get_arranger(self):
248
+ return self.get_creator('arranger')
249
+
250
+ def get_editor(self):
251
+ return self.get_creator('editor')
252
+
253
+ def get_poet(self):
254
+ v = self.get_creator('lyricist')
255
+ if v:
256
+ return v
257
+ v = self.get_creator('poet')
258
+ return v
259
+
260
+ def get_encoding_information(self, type):
261
+ enc = self.get_named_children('encoding')
262
+ if enc:
263
+ children = enc[0].get_named_children(type)
264
+ if children:
265
+ return children[0].get_text()
266
+ else:
267
+ return None
268
+
269
+ def get_encoding_software(self):
270
+ return self.get_encoding_information('software')
271
+
272
+ def get_encoding_date(self):
273
+ return self.get_encoding_information('encoding-date')
274
+
275
+ def get_encoding_person(self):
276
+ return self.get_encoding_information('encoder')
277
+
278
+ def get_encoding_description(self):
279
+ return self.get_encoding_information('encoding-description')
280
+
281
+ def get_encoding_software_list(self):
282
+ enc = self.get_named_children('encoding')
283
+ software = []
284
+ for e in enc:
285
+ softwares = e.get_named_children('software')
286
+ for s in softwares:
287
+ software.append(s.get_text())
288
+ return software
289
+
290
+ def get_file_description(self):
291
+ misc = self.get_named_children('miscellaneous')
292
+ for m in misc:
293
+ misc_fields = m.get_named_children('miscellaneous-field')
294
+ for mf in misc_fields:
295
+ if hasattr(mf, 'name') and mf.name == 'description':
296
+ return mf.get_text()
297
+ return None
298
+
299
+
300
+ class Credit(Xml_node):
301
+
302
+ def get_type(self):
303
+ type = self.get_maybe_exist_named_child('credit-type')
304
+ if type is not None:
305
+ return type.get_text()
306
+ else:
307
+ return None
308
+
309
+ def find_type(self, credits):
310
+ sizes = self.get_font_sizes(credits)
311
+ sizes.sort(reverse=True)
312
+ ys = self.get_default_ys(credits)
313
+ ys.sort(reverse=True)
314
+ xs = self.get_default_xs(credits)
315
+ xs.sort(reverse=True)
316
+
317
+ # Words child of the self credit-element
318
+ words = self.get_maybe_exist_named_child('credit-words')
319
+ size = None
320
+ x = None
321
+ y = None
322
+ halign = None
323
+ valign = None
324
+ justify = None
325
+ if words is not None:
326
+ if hasattr(words, 'font-size'):
327
+ size = int(float((getattr(words, 'font-size'))))
328
+ if hasattr(words, 'default-x'):
329
+ x = round(float(getattr(words, 'default-x')))
330
+ if hasattr(words, 'default-y'):
331
+ y = round(float(getattr(words, 'default-y')))
332
+ if hasattr(words, 'halign'):
333
+ halign = getattr(words, 'halign')
334
+ if hasattr(words, 'valign'):
335
+ valign = getattr(words, 'valign')
336
+ if hasattr(words, 'justify'):
337
+ justify = getattr(words, 'justify')
338
+ if (size and size == max(sizes) and y and y == max(ys) and
339
+ (justify or halign) and (justify == 'center' or halign == 'center')):
340
+ return 'title'
341
+ elif (y and y > min(ys) and y < max(ys) and (justify or halign) and
342
+ (justify == 'center' or halign == 'center')):
343
+ return 'subtitle'
344
+ elif ((justify or halign) and (justify == 'left' or halign == 'left') and
345
+ (not x or x == min(xs))):
346
+ return 'lyricist'
347
+ elif ((justify or halign) and (justify == 'right' or halign == 'right')
348
+ and (not x or x == max(xs))):
349
+ return 'composer'
350
+ elif size and size == min(sizes) and y == min(ys):
351
+ return 'rights'
352
+ # Special cases for Finale NotePad
353
+ elif valign and valign == 'top' and y and y == ys[1]:
354
+ return 'subtitle'
355
+ elif valign and valign == 'top' and x and x == min(xs):
356
+ return 'lyricist'
357
+ elif valign and valign == 'top' and y and y == min(ys):
358
+ return 'rights'
359
+ # Other special cases
360
+ elif valign and valign == 'bottom':
361
+ return 'rights'
362
+ elif len([i for i, item in enumerate(ys) if item == y]) == 2:
363
+ # The first one is the composer, the second one is the lyricist
364
+ return 'composer'
365
+
366
+ return None # no type recognized
367
+
368
+ def get_font_sizes(self, credits):
369
+ sizes = []
370
+ for cred in credits:
371
+ words = cred.get_maybe_exist_named_child('credit-words')
372
+ if((words is not None) and hasattr(words, 'font-size')):
373
+ sizes.append(getattr(words, 'font-size'))
374
+ return [int(float(size)) for size in sizes]
375
+
376
+ def get_default_xs(self, credits):
377
+ default_xs = []
378
+ for cred in credits:
379
+ words = cred.get_maybe_exist_named_child('credit-words')
380
+ if((words is not None) and hasattr(words, 'default-x')):
381
+ default_xs.append(getattr(words, 'default-x'))
382
+ return list(map(round, list(map(float, default_xs))))
383
+
384
+ def get_default_ys(self, credits):
385
+ default_ys = []
386
+ for cred in credits:
387
+ words = cred.get_maybe_exist_named_child('credit-words')
388
+ if words is not None and hasattr(words, 'default-y'):
389
+ default_ys.append(getattr(words, 'default-y'))
390
+ return list(map(round, list(map(float, default_ys))))
391
+
392
+ def get_text(self):
393
+ words = self.get_maybe_exist_named_child('credit-words')
394
+ if words is not None:
395
+ return words.get_text()
396
+ else:
397
+ return ''
398
+
399
+
400
+ class Duration(Music_xml_node):
401
+
402
+ def get_length(self):
403
+ dur = int(self.get_text()) * Fraction(1, 4)
404
+ return dur
405
+
406
+
407
+ class Hash_text(Music_xml_node):
408
+
409
+ def dump(self, indent=''):
410
+ ly.debug_output(self._data.strip())
411
+
412
+
413
+ class Pitch(Music_xml_node):
414
+
415
+ def get_step(self):
416
+ ch = self.get_unique_typed_child(get_class('step'))
417
+ step = ch.get_text().strip()
418
+ return step
419
+
420
+ def get_octave(self):
421
+ ch = self.get_unique_typed_child(get_class('octave'))
422
+ octave = ch.get_text().strip()
423
+ return int(octave)
424
+
425
+ def get_alteration(self):
426
+ ch = self.get_maybe_exist_typed_child(get_class('alter'))
427
+ return utilities.interpret_alter_element(ch)
428
+
429
+ def to_lily_object(self):
430
+ p = musicexp.Pitch()
431
+ p.alteration = self.get_alteration()
432
+ p.step = musicxml2ly_conversion.musicxml_step_to_lily(self.get_step())
433
+ p.octave = self.get_octave() - 4
434
+ return p
435
+
436
+
437
+ class Unpitched(Music_xml_node):
438
+
439
+ def get_step(self):
440
+ ch = self.get_unique_typed_child(get_class('display-step'))
441
+ step = ch.get_text().strip()
442
+ return step
443
+
444
+ def get_octave(self):
445
+ ch = self.get_unique_typed_child(get_class('display-octave'))
446
+
447
+ if ch:
448
+ octave = ch.get_text().strip()
449
+ return int(octave)
450
+ else:
451
+ return None
452
+
453
+ def to_lily_object(self):
454
+ p = None
455
+ step = self.get_step()
456
+ if step:
457
+ p = musicexp.Pitch()
458
+ p.step = musicxml2ly_conversion.musicxml_step_to_lily(step)
459
+ octave = self.get_octave()
460
+ if octave and p:
461
+ p.octave = octave - 4
462
+ return p
463
+
464
+
465
+ class Measure_element (Music_xml_node):
466
+ def get_voice_id(self):
467
+ voice = self.get_maybe_exist_named_child('voice')
468
+ if voice:
469
+ return voice.get_text()
470
+ else:
471
+ return self.voice_id
472
+
473
+
474
+ class Attributes(Measure_element):
475
+
476
+ def __init__(self):
477
+ Measure_element.__init__(self)
478
+ self._dict = {}
479
+ self._original_tag = None
480
+ self._time_signature_cache = None
481
+
482
+ def is_first(self):
483
+ cn = self._parent.get_typed_children(self.__class__)
484
+ if self._original_tag:
485
+ return cn[0] == self._original_tag
486
+ else:
487
+ return cn[0] == self
488
+
489
+ def set_attributes_from_previous(self, dict):
490
+ self._dict.update(dict)
491
+
492
+ def read_self(self):
493
+ for c in self.get_all_children():
494
+ self._dict[c.get_name()] = c
495
+
496
+ def get_named_attribute(self, name):
497
+ return self._dict.get(name)
498
+
499
+ def single_time_sig_to_fraction(self, sig):
500
+ if len(sig) < 2:
501
+ return 0
502
+ n = 0
503
+ for i in sig[0:-1]:
504
+ n += i
505
+ return Fraction(n, sig[-1])
506
+
507
+ def get_measure_length(self):
508
+ sig = self.get_time_signature()
509
+ if not sig or len(sig) == 0:
510
+ return 1
511
+ if isinstance(sig[0], list):
512
+ # Complex compound time signature
513
+ l = 0
514
+ for i in sig:
515
+ l += self.single_time_sig_to_fraction(i)
516
+ return l
517
+ else:
518
+ # Simple(maybe compound) time signature of the form(beat, ..., type)
519
+ return self.single_time_sig_to_fraction(sig)
520
+ return 0
521
+
522
+ def get_time_signature(self):
523
+ "Return time sig as a(beat, beat-type) tuple. For compound signatures,"
524
+ "return either(beat, beat,..., beat-type) or((beat,..., type), "
525
+ "(beat,..., type), ...)."
526
+ if self._time_signature_cache:
527
+ return self._time_signature_cache
528
+
529
+ try:
530
+ mxl = self.get_named_attribute('time')
531
+ if not mxl:
532
+ return None
533
+
534
+ if mxl.get_maybe_exist_named_child('senza-misura'):
535
+ # TODO: Handle pieces without a time signature!
536
+ ly.warning(
537
+ _("Senza-misura time signatures are not yet supported!"))
538
+ return(4, 4)
539
+ else:
540
+ signature = []
541
+ current_sig = []
542
+ for i in mxl.get_all_children():
543
+ if isinstance(i, Beats):
544
+ beats = i.get_text().strip().split("+")
545
+ current_sig = [int(j) for j in beats]
546
+ elif isinstance(i, BeatType):
547
+ current_sig.append(int(i.get_text()))
548
+ signature.append(current_sig)
549
+ current_sig = []
550
+ if isinstance(signature[0], list) and len(signature) == 1:
551
+ signature = signature[0]
552
+ self._time_signature_cache = signature
553
+ return signature
554
+ except(KeyError, ValueError):
555
+ self.message(
556
+ _("Unable to interpret time signature! Falling back to 4/4."))
557
+ return(4, 4)
558
+
559
+ # returns clef information in the form("cleftype", position, octave-shift)
560
+ def get_clef_information(self):
561
+ clefinfo = ['G', 2, 0]
562
+ mxl = self.get_named_attribute('clef')
563
+ if not mxl:
564
+ return clefinfo
565
+ sign = mxl.get_maybe_exist_named_child('sign')
566
+ if sign:
567
+ clefinfo[0] = sign.get_text()
568
+ line = mxl.get_maybe_exist_named_child('line')
569
+ if line:
570
+ clefinfo[1] = int(line.get_text())
571
+ octave = mxl.get_maybe_exist_named_child('clef-octave-change')
572
+ if octave:
573
+ clefinfo[2] = int(octave.get_text())
574
+ return clefinfo
575
+
576
+ def get_key_signature(self):
577
+ "return(fifths, mode) tuple if the key signatures is given as "
578
+ "major/minor in the Circle of fifths. Otherwise return an alterations"
579
+ "list of the form [[step,alter<,octave>], [step,alter<,octave>], ...], "
580
+ "where the octave values are optional."
581
+
582
+ key = self.get_named_attribute('key')
583
+ if not key:
584
+ return None
585
+ fifths_elm = key.get_maybe_exist_named_child('fifths')
586
+ if fifths_elm:
587
+ mode_node = key.get_maybe_exist_named_child('mode')
588
+ mode = None
589
+ if mode_node:
590
+ mode = mode_node.get_text()
591
+ if not mode or mode == '':
592
+ mode = 'major'
593
+ fifths = int(fifths_elm.get_text())
594
+ # TODO: Shall we try to convert the key-octave and the cancel, too?
595
+ return(fifths, mode)
596
+ else:
597
+ alterations = []
598
+ current_step = 0
599
+ for i in key.get_all_children():
600
+ if isinstance(i, KeyStep):
601
+ current_step = i.get_text().strip()
602
+ elif isinstance(i, KeyAlter):
603
+ alterations.append(
604
+ [current_step, utilities.interpret_alter_element(i)])
605
+ elif isinstance(i, KeyOctave):
606
+ nr = -1
607
+ if hasattr(i, 'number'):
608
+ nr = int(i.number)
609
+ if(nr > 0) and (nr <= len(alterations)):
610
+ # MusicXML Octave 4 is middle C -> shift to 0
611
+ alterations[nr - 1].append(int(i.get_text()) - 4)
612
+ else:
613
+ i.message(_("Key alteration octave given for a "
614
+ "non-existing alteration nr. %s, available numbers: %s!") % (nr, len(alterations)))
615
+ return alterations
616
+
617
+ def get_transposition(self):
618
+ return self.get_named_attribute('transpose')
619
+
620
+
621
+ class Barline(Measure_element):
622
+
623
+ def to_lily_object(self):
624
+ # retval contains all possible markers in the order:
625
+ # 0..bw_ending, 1..bw_repeat, 2..barline, 3..fw_repeat, 4..fw_ending
626
+ retval = {}
627
+ bartype_element = self.get_maybe_exist_named_child("bar-style")
628
+ repeat_element = self.get_maybe_exist_named_child("repeat")
629
+ ending_element = self.get_maybe_exist_named_child("ending")
630
+
631
+ bartype = None
632
+ if bartype_element:
633
+ bartype = bartype_element.get_text()
634
+
635
+ if repeat_element and hasattr(repeat_element, 'direction'):
636
+ repeat = musicxml2ly_conversion.RepeatMarker()
637
+ repeat.direction = {"forward": -1, "backward": 1}.get(
638
+ repeat_element.direction, 0)
639
+
640
+ if((repeat_element.direction == "forward" and bartype == "heavy-light") or
641
+ (repeat_element.direction == "backward" and bartype == "light-heavy")):
642
+ bartype = None
643
+ if hasattr(repeat_element, 'times'):
644
+ try:
645
+ repeat.times = int(repeat_element.times)
646
+ except ValueError:
647
+ repeat.times = 2
648
+ repeat.event = self
649
+ if repeat.direction == -1:
650
+ retval[3] = repeat
651
+ else:
652
+ retval[1] = repeat
653
+
654
+ if ending_element and hasattr(ending_element, 'type'):
655
+ ending = musicxml2ly_conversion.EndingMarker()
656
+ ending.direction = {"start": -1, "stop": 1, "discontinue": 1}.get(
657
+ ending_element.type, 0)
658
+ ending.event = self
659
+ if ending.direction == -1:
660
+ retval[4] = ending
661
+ else:
662
+ retval[0] = ending
663
+ # TODO. ending number=""
664
+
665
+ if bartype:
666
+ b = musicexp.BarLine()
667
+ b.type = bartype
668
+ retval[2] = b
669
+
670
+ return list(retval.values())
671
+
672
+
673
+ class Partial(Measure_element):
674
+ def __init__(self, partial):
675
+ Measure_element.__init__(self)
676
+ self.partial = partial
677
+
678
+
679
+ class Stem(Music_xml_node):
680
+
681
+ stem_value_dict = {
682
+ 'down': 'stemDown',
683
+ 'up': 'stemUp',
684
+ 'double': None, # TODO: Implement
685
+ 'none': 'stemNeutral'
686
+ }
687
+
688
+ def to_stem_event(self):
689
+ values = []
690
+ value = self.stem_value_dict.get(self.get_text(), None)
691
+ stem_value = musicexp.StemEvent()
692
+ if value:
693
+ stem_value.value = value
694
+ values.append(stem_value)
695
+ return values
696
+
697
+ def to_stem_style_event(self):
698
+ styles = []
699
+ style_elm = musicexp.StemstyleEvent()
700
+ if hasattr(self, 'color'):
701
+ style_elm.color = utilities.hex_to_color(getattr(self, 'color'))
702
+ if style_elm.color is not None:
703
+ styles.append(style_elm)
704
+ return styles
705
+
706
+
707
+ class Notehead(Music_xml_node):
708
+
709
+ notehead_styles_dict = {
710
+ 'slash': '\'slash',
711
+ 'triangle': '\'triangle',
712
+ 'diamond': '\'diamond',
713
+ 'square': '\'la', # TODO: Proper squared note head
714
+ 'cross': None, # TODO: + shaped note head
715
+ 'x': '\'cross',
716
+ 'circle-x': '\'xcircle',
717
+ 'inverted triangle': None, # TODO: Implement
718
+ 'arrow down': None, # TODO: Implement
719
+ 'arrow up': None, # TODO: Implement
720
+ 'slashed': None, # TODO: Implement
721
+ 'back slashed': None, # TODO: Implement
722
+ 'normal': None,
723
+ 'cluster': None, # TODO: Implement
724
+ 'none': '#f',
725
+ 'do': '\'do',
726
+ 're': '\'re',
727
+ 'mi': '\'mi',
728
+ 'fa': '\'fa',
729
+ 'so': None,
730
+ 'la': '\'la',
731
+ 'ti': '\'ti',
732
+ }
733
+
734
+ def to_lily_object(self): # function changed: additionally processcolor attribute
735
+ styles = []
736
+
737
+ # Notehead style
738
+ key = self.get_text().strip()
739
+ style = self.notehead_styles_dict.get(key, None)
740
+ event = musicexp.NotestyleEvent()
741
+ if style:
742
+ event.style = style
743
+ if hasattr(self, 'filled'):
744
+ event.filled = (getattr(self, 'filled') == "yes")
745
+ if hasattr(self, 'color'):
746
+ event.color = utilities.hex_to_color(getattr(self, 'color'))
747
+ if event.style or (event.filled is not None) or (event.color is not None):
748
+ styles.append(event)
749
+ # parentheses
750
+ if hasattr(self, 'parentheses') and (self.parentheses == "yes"):
751
+ styles.append(musicexp.ParenthesizeEvent())
752
+
753
+ return styles
754
+
755
+
756
+ class Note(Measure_element):
757
+
758
+ def __init__(self):
759
+ Measure_element.__init__(self)
760
+ self.instrument_name = ''
761
+ self._after_grace = False
762
+ self._duration = 1
763
+
764
+ def is_grace(self):
765
+ return self.get_maybe_exist_named_child('grace')
766
+
767
+ def is_after_grace(self):
768
+ if not self.is_grace():
769
+ return False
770
+ gr = self.get_maybe_exist_typed_child(Grace)
771
+ return self._after_grace or hasattr(gr, 'steal-time-previous')
772
+
773
+ def get_duration_log(self):
774
+ ch = self.get_maybe_exist_named_child('type')
775
+
776
+ if ch:
777
+ log = ch.get_text().strip()
778
+ return utilities.musicxml_duration_to_log(log)
779
+ elif self.get_maybe_exist_named_child('grace'):
780
+ # FIXME: is it ok to default to eight note for grace notes?
781
+ return 3
782
+ else:
783
+ return None
784
+
785
+ def get_duration_info(self):
786
+ log = self.get_duration_log()
787
+ if log is not None:
788
+ dots = len(self.get_typed_children(Dot))
789
+ return(log, dots)
790
+ else:
791
+ return None
792
+
793
+ def get_factor(self):
794
+ return 1
795
+
796
+ def get_pitches(self):
797
+ return self.get_typed_children(get_class('pitch'))
798
+
799
+ def set_notehead_style(self, event):
800
+ noteheads = self.get_named_children('notehead')
801
+ for nh in noteheads:
802
+ styles = nh.to_lily_object()
803
+ for style in styles:
804
+ event.add_associated_event(style)
805
+
806
+ def set_stem_directions(self, event):
807
+ stems = self.get_named_children('stem')
808
+ for stem in stems:
809
+ values = stem.to_stem_event()
810
+ for v in values:
811
+ event.add_associated_event(v)
812
+
813
+ def set_stem_style(self, event):
814
+ stems = self.get_named_children('stem')
815
+ for stem in stems:
816
+ styles = stem.to_stem_style_event()
817
+ for style in styles:
818
+ event.add_associated_event(style)
819
+
820
+ def initialize_duration(self):
821
+ from musicxml2ly_conversion import rational_to_lily_duration
822
+ from musicexp import Duration
823
+ # if the note has no Type child, then that method returns None. In that case,
824
+ # use the <duration> tag instead. If that doesn't exist, either -> Error
825
+ dur = self.get_duration_info()
826
+ if dur:
827
+ d = Duration()
828
+ d.duration_log = dur[0]
829
+ d.dots = dur[1]
830
+ # Grace notes by specification have duration 0, so no time modification
831
+ # factor is possible. It even messes up the output with *0/1
832
+ if not self.get_maybe_exist_typed_child(Grace):
833
+ d.factor = self._duration / d.get_length()
834
+ return d
835
+ else:
836
+ if self._duration > 0:
837
+ return rational_to_lily_duration(self._duration)
838
+ else:
839
+ self.message(
840
+ _("Encountered note at %s without type and duration(=%s)")
841
+ % (mxl_note.start, mxl_note._duration))
842
+ return None
843
+
844
+ def initialize_pitched_event(self):
845
+ mxl_pitch = self.get_maybe_exist_typed_child(Pitch)
846
+ pitch = mxl_pitch.to_lily_object()
847
+ event = musicexp.NoteEvent()
848
+ event.pitch = pitch
849
+ acc = self.get_maybe_exist_named_child('accidental')
850
+ if acc:
851
+ # let's not force accs everywhere.
852
+ event.cautionary = acc.cautionary
853
+ # TODO: Handle editorial accidentals
854
+ # TODO: Handle the level-display setting for displaying brackets/parentheses
855
+ return event
856
+
857
+ def initialize_unpitched_event(self):
858
+ # Unpitched elements have display-step and can also have
859
+ # display-octave.
860
+ unpitched = self.get_maybe_exist_typed_child(Unpitched)
861
+ event = musicexp.NoteEvent()
862
+ event.pitch = unpitched.to_lily_object()
863
+ return event
864
+
865
+ def initialize_rest_event(self, convert_rest_positions=True):
866
+ # rests can have display-octave and display-step, which are
867
+ # treated like an ordinary note pitch
868
+ rest = self.get_maybe_exist_typed_child(Rest)
869
+ event = musicexp.RestEvent()
870
+ if convert_rest_positions:
871
+ pitch = rest.to_lily_object()
872
+ event.pitch = pitch
873
+ return event
874
+
875
+ def to_lily_object(self,
876
+ convert_stem_directions=True,
877
+ convert_rest_positions=True):
878
+ pitch = None
879
+ duration = None
880
+ event = None
881
+
882
+ if self.get_maybe_exist_typed_child(Pitch):
883
+ event = self.initialize_pitched_event()
884
+ elif self.get_maybe_exist_typed_child(Unpitched):
885
+ event = self.initialize_unpitched_event()
886
+ elif self.get_maybe_exist_typed_child(Rest):
887
+ event = self.initialize_rest_event(convert_rest_positions)
888
+ else:
889
+ self.message(_("cannot find suitable event"))
890
+
891
+ if event:
892
+ event.duration = self.initialize_duration()
893
+
894
+ self.set_notehead_style(event)
895
+ self.set_stem_style(event)
896
+ if convert_stem_directions:
897
+ self.set_stem_directions(event)
898
+
899
+ return event
900
+
901
+
902
+ class Part_list(Music_xml_node):
903
+
904
+ def __init__(self):
905
+ Music_xml_node.__init__(self)
906
+ self._id_instrument_name_dict = {}
907
+
908
+ def generate_id_instrument_dict(self):
909
+
910
+ # not empty to make sure this happens only once.
911
+ mapping = {1: 1}
912
+ for score_part in self.get_named_children('score-part'):
913
+ for instr in score_part.get_named_children('score-instrument'):
914
+ id = instr.id
915
+ name = instr.get_named_child("instrument-name")
916
+ mapping[id] = name.get_text()
917
+
918
+ self._id_instrument_name_dict = mapping
919
+
920
+ def get_instrument(self, id):
921
+ if not self._id_instrument_name_dict:
922
+ self.generate_id_instrument_dict()
923
+
924
+ instrument_name = self._id_instrument_name_dict.get(id)
925
+ if instrument_name:
926
+ return instrument_name
927
+ else:
928
+ ly.warning(_("Unable to find instrument for ID=%s\n") % id)
929
+ return "Grand Piano"
930
+
931
+
932
+ class Measure(Music_xml_node):
933
+
934
+ def __init__(self):
935
+ Music_xml_node.__init__(self)
936
+ self.partial = 0
937
+
938
+ def is_implicit(self):
939
+ return hasattr(self, 'implicit') and self.implicit == 'yes'
940
+
941
+ def get_notes(self):
942
+ return self.get_typed_children(get_class('note'))
943
+
944
+
945
+ class Syllabic(Music_xml_node):
946
+
947
+ def continued(self):
948
+ text = self.get_text()
949
+ return text == "begin" or text == "middle"
950
+
951
+ def begin(self):
952
+ return text == "begin"
953
+
954
+ def middle(self):
955
+ return text == "middle"
956
+
957
+ def end(self):
958
+ return text == "end"
959
+
960
+
961
+ class Lyric(Music_xml_node):
962
+
963
+ def get_number(self):
964
+ """
965
+ Return the number attribute(if it exists) of the lyric element.
966
+
967
+ @rtype: number
968
+ @return: The value of the number attribute
969
+ """
970
+ if hasattr(self, 'number'):
971
+ return int(self.number)
972
+ else:
973
+ return -1
974
+
975
+
976
+ class Sound(Music_xml_node):
977
+
978
+ def get_tempo(self):
979
+ """
980
+ Return the tempo attribute(if it exists) of the sound element.
981
+ This attribute can be used by musicxml2ly for the midi output(see L{musicexp.Score}).
982
+
983
+ @rtype: string
984
+ @return: The value of the tempo attribute
985
+ """
986
+ if hasattr(self, 'tempo'):
987
+ return self.tempo
988
+ else:
989
+ return None
990
+
991
+
992
+ class Notations(Music_xml_node):
993
+
994
+ def get_tie(self):
995
+ ts = self.get_named_children('tied')
996
+ starts = [t for t in ts if t.type == 'start']
997
+ if starts:
998
+ return starts[0]
999
+ else:
1000
+ return None
1001
+
1002
+ def get_tuplets(self):
1003
+ return self.get_typed_children(Tuplet)
1004
+
1005
+
1006
+ class Time_modification(Music_xml_node):
1007
+
1008
+ def get_fraction(self):
1009
+ b = self.get_maybe_exist_named_child('actual-notes')
1010
+ a = self.get_maybe_exist_named_child('normal-notes')
1011
+ return(int(a.get_text()), int(b.get_text()))
1012
+
1013
+ def get_normal_type(self):
1014
+ tuplet_type = self.get_maybe_exist_named_child('normal-type')
1015
+ if tuplet_type:
1016
+ dots = self.get_named_children('normal-dot')
1017
+ log = utilities.musicxml_duration_to_log(
1018
+ tuplet_type.get_text().strip())
1019
+ return(log, len(dots))
1020
+ else:
1021
+ return None
1022
+
1023
+
1024
+ class Accidental(Music_xml_node):
1025
+
1026
+ def __init__(self):
1027
+ Music_xml_node.__init__(self)
1028
+ self.editorial = False
1029
+ self.cautionary = False
1030
+
1031
+
1032
+ class Tuplet(Music_xml_spanner):
1033
+
1034
+ def duration_info_from_tuplet_note(self, tuplet_note):
1035
+ tuplet_type = tuplet_note.get_maybe_exist_named_child('tuplet-type')
1036
+ if tuplet_type:
1037
+ dots = tuplet_note.get_named_children('tuplet-dot')
1038
+ log = utilities.musicxml_duration_to_log(
1039
+ tuplet_type.get_text().strip())
1040
+ return(log, len(dots))
1041
+ else:
1042
+ return None
1043
+
1044
+ # Return tuplet note type as(log, dots)
1045
+ def get_normal_type(self):
1046
+ tuplet = self.get_maybe_exist_named_child('tuplet-normal')
1047
+ if tuplet:
1048
+ return self.duration_info_from_tuplet_note(tuplet)
1049
+ else:
1050
+ return None
1051
+
1052
+ def get_actual_type(self):
1053
+ tuplet = self.get_maybe_exist_named_child('tuplet-actual')
1054
+ if tuplet:
1055
+ return self.duration_info_from_tuplet_note(tuplet)
1056
+ else:
1057
+ return None
1058
+
1059
+ def get_tuplet_note_count(self, tuplet_note):
1060
+ if tuplet_note:
1061
+ tuplet_nr = tuplet_note.get_maybe_exist_named_child(
1062
+ 'tuplet-number')
1063
+ if tuplet_nr:
1064
+ return int(tuplet_nr.get_text())
1065
+ return None
1066
+
1067
+ def get_normal_nr(self):
1068
+ return self.get_tuplet_note_count(self.get_maybe_exist_named_child('tuplet-normal'))
1069
+
1070
+ def get_actual_nr(self):
1071
+ return self.get_tuplet_note_count(self.get_maybe_exist_named_child('tuplet-actual'))
1072
+
1073
+
1074
+ class Slur(Music_xml_spanner):
1075
+
1076
+ def get_type(self):
1077
+ return self.type
1078
+
1079
+
1080
+ class Tied(Music_xml_spanner):
1081
+
1082
+ def get_type(self):
1083
+ return self.type
1084
+
1085
+
1086
+ class Beam(Music_xml_spanner):
1087
+ def get_type(self):
1088
+ return self.get_text()
1089
+
1090
+ def is_primary(self):
1091
+ if hasattr(self, 'number'):
1092
+ return self.number == "1"
1093
+ else:
1094
+ return True
1095
+
1096
+
1097
+ class Octave_shift(Music_xml_spanner):
1098
+ # default is 8 for the octave-shift!
1099
+ def get_size(self):
1100
+ if hasattr(self, 'size'):
1101
+ return int(self.size)
1102
+ else:
1103
+ return 8
1104
+
1105
+
1106
+ # Rests in MusicXML are <note> blocks with a <rest> inside. This class is only
1107
+ # for the inner <rest> element, not the whole rest block.
1108
+ class Rest(Music_xml_node):
1109
+
1110
+ def __init__(self):
1111
+ Music_xml_node.__init__(self)
1112
+ self._is_whole_measure = False
1113
+
1114
+ def is_whole_measure(self):
1115
+ return self._is_whole_measure
1116
+
1117
+ def get_step(self):
1118
+ ch = self.get_maybe_exist_typed_child(get_class('display-step'))
1119
+ if ch:
1120
+ return ch.get_text().strip()
1121
+ else:
1122
+ return None
1123
+
1124
+ def get_octave(self):
1125
+ ch = self.get_maybe_exist_typed_child(get_class('display-octave'))
1126
+ if ch:
1127
+ oct = ch.get_text().strip()
1128
+ return int(oct)
1129
+ else:
1130
+ return None
1131
+
1132
+ def to_lily_object(self):
1133
+ p = None
1134
+ step = self.get_step()
1135
+ if step:
1136
+ p = musicexp.Pitch()
1137
+ p.step = musicxml2ly_conversion.musicxml_step_to_lily(step)
1138
+ octave = self.get_octave()
1139
+ if octave and p:
1140
+ p.octave = octave - 4
1141
+ return p
1142
+
1143
+
1144
+ class Bend(Music_xml_node):
1145
+
1146
+ def bend_alter(self):
1147
+ alter = self.get_maybe_exist_named_child('bend-alter')
1148
+ return utilities.interpret_alter_element(alter)
1149
+
1150
+
1151
+ class ChordPitch(Music_xml_node):
1152
+
1153
+ def step_class_name(self):
1154
+ return 'root-step'
1155
+
1156
+ def alter_class_name(self):
1157
+ return 'root-alter'
1158
+
1159
+ def get_step(self):
1160
+ ch = self.get_unique_typed_child(get_class(self.step_class_name()))
1161
+ return ch.get_text().strip()
1162
+
1163
+ def get_alteration(self):
1164
+ ch = self.get_maybe_exist_typed_child(
1165
+ get_class(self.alter_class_name()))
1166
+ return utilities.interpret_alter_element(ch)
1167
+
1168
+
1169
+ class Bass(ChordPitch):
1170
+
1171
+ def step_class_name(self):
1172
+ return 'bass-step'
1173
+
1174
+ def alter_class_name(self):
1175
+ return 'bass-alter'
1176
+
1177
+
1178
+ class ChordModification(Music_xml_node):
1179
+
1180
+ def get_type(self):
1181
+ ch = self.get_maybe_exist_typed_child(get_class('degree-type'))
1182
+ return {'add': 1, 'alter': 1, 'subtract': -1}.get(ch.get_text().strip(), 0)
1183
+
1184
+ def get_value(self):
1185
+ ch = self.get_maybe_exist_typed_child(get_class('degree-value'))
1186
+ value = 0
1187
+ if ch:
1188
+ value = int(ch.get_text().strip())
1189
+ return value
1190
+
1191
+ def get_alter(self):
1192
+ ch = self.get_maybe_exist_typed_child(get_class('degree-alter'))
1193
+ return utilities.interpret_alter_element(ch)
1194
+
1195
+
1196
+ class Frame(Music_xml_node):
1197
+
1198
+ def get_frets(self):
1199
+ return self.get_named_child_value_number('frame-frets', 4)
1200
+
1201
+ def get_strings(self):
1202
+ return self.get_named_child_value_number('frame-strings', 6)
1203
+
1204
+ def get_first_fret(self):
1205
+ return self.get_named_child_value_number('first-fret', 1)
1206
+
1207
+
1208
+ class Frame_Note(Music_xml_node):
1209
+
1210
+ def get_string(self):
1211
+ return self.get_named_child_value_number('string', 1)
1212
+
1213
+ def get_fret(self):
1214
+ return self.get_named_child_value_number('fret', 0)
1215
+
1216
+ def get_fingering(self):
1217
+ return self.get_named_child_value_number('fingering', -1)
1218
+
1219
+ def get_barre(self):
1220
+ n = self.get_maybe_exist_named_child('barre')
1221
+ if n:
1222
+ return getattr(n, 'type', '')
1223
+ else:
1224
+ return ''
1225
+
1226
+
1227
+ class Musicxml_voice:
1228
+
1229
+ def __init__(self):
1230
+ self._elements = []
1231
+ self._staves = {}
1232
+ self._start_staff = None
1233
+ self._lyrics = []
1234
+ self._has_lyrics = False
1235
+
1236
+ def add_element(self, e):
1237
+ self._elements.append(e)
1238
+ if(isinstance(e, Note)
1239
+ and e.get_maybe_exist_typed_child(Staff)):
1240
+ name = e.get_maybe_exist_typed_child(Staff).get_text()
1241
+
1242
+ if not self._start_staff and not e.get_maybe_exist_typed_child(Grace):
1243
+ self._start_staff = name
1244
+ self._staves[name] = True
1245
+
1246
+ lyrics = e.get_typed_children(Lyric)
1247
+ if not self._has_lyrics:
1248
+ self.has_lyrics = len(lyrics) > 0
1249
+
1250
+ for l in lyrics:
1251
+ nr = l.get_number()
1252
+ if nr > 0 and nr not in self._lyrics:
1253
+ self._lyrics.append(nr)
1254
+
1255
+ def insert(self, idx, e):
1256
+ self._elements.insert(idx, e)
1257
+
1258
+ def get_lyrics_numbers(self):
1259
+ if(len(self._lyrics) == 0) and self._has_lyrics:
1260
+ # only happens if none of the <lyric> tags has a number attribute
1261
+ return [1]
1262
+ else:
1263
+ return self._lyrics
1264
+
1265
+
1266
+ class Part(Music_xml_node):
1267
+
1268
+ def __init__(self):
1269
+ Music_xml_node.__init__(self)
1270
+ self._voices = {}
1271
+ self._staff_attributes_dict = {}
1272
+
1273
+ def get_part_list(self):
1274
+ n = self
1275
+ while n and n.get_name() != 'score-partwise':
1276
+ n = n._parent
1277
+
1278
+ return n.get_named_child('part-list')
1279
+
1280
+ def graces_to_aftergraces(self, pending_graces):
1281
+ for gr in pending_graces:
1282
+ gr._when = gr._prev_when
1283
+ gr._measure_position = gr._prev_measure_position
1284
+ gr._after_grace = True
1285
+
1286
+ def interpret(self):
1287
+ """Set durations and starting points."""
1288
+ """The starting point of the very first note is 0!"""
1289
+
1290
+ part_list = self.get_part_list()
1291
+
1292
+ now = Fraction(0)
1293
+ factor = Fraction(1)
1294
+ attributes_dict = {}
1295
+ attributes_object = None
1296
+ measures = self.get_typed_children(Measure)
1297
+ last_moment = Fraction(-1)
1298
+ last_measure_position = Fraction(-1)
1299
+ measure_position = Fraction(0)
1300
+ measure_start_moment = now
1301
+ is_first_measure = True
1302
+ previous_measure = None
1303
+ # Graces at the end of a measure need to have their position set to the
1304
+ # previous number!
1305
+ pending_graces = []
1306
+ for m in measures:
1307
+ # implicit measures are used for artificial measures, e.g. when
1308
+ # a repeat bar line splits a bar into two halves. In this case,
1309
+ # don't reset the measure position to 0. They are also used for
1310
+ # upbeats(initial value of 0 fits these, too).
1311
+ # Also, don't reset the measure position at the end of the loop,
1312
+ # but rather when starting the next measure(since only then do we
1313
+ # know if the next measure is implicit and continues that measure)
1314
+ if not m.is_implicit():
1315
+ # Warn about possibly overfull measures and reset the position
1316
+ if attributes_object and previous_measure and previous_measure.partial == 0:
1317
+ length = attributes_object.get_measure_length()
1318
+ new_now = measure_start_moment + length
1319
+ if now != new_now:
1320
+ problem = 'incomplete'
1321
+ if now > new_now:
1322
+ problem = 'overfull'
1323
+ # only for verbose operation.
1324
+ if problem != 'incomplete' and previous_measure:
1325
+ previous_measure.message(
1326
+ '%s measure? Expected: %s, Difference: %s' % (problem, now, new_now - now))
1327
+ now = new_now
1328
+ measure_start_moment = now
1329
+ measure_position = Fraction(0)
1330
+
1331
+ voice_id = None
1332
+ assign_to_next_voice = []
1333
+ for n in m.get_all_children():
1334
+ # assign a voice to all measure elements
1335
+ if n.get_name() == 'backup':
1336
+ voice_id = None
1337
+
1338
+ if isinstance(n, Measure_element):
1339
+ if n.get_voice_id():
1340
+ voice_id = n.get_voice_id()
1341
+ for i in assign_to_next_voice:
1342
+ i.voice_id = voice_id
1343
+ assign_to_next_voice = []
1344
+ else:
1345
+ if voice_id:
1346
+ n.voice_id = voice_id
1347
+ else:
1348
+ assign_to_next_voice.append(n)
1349
+
1350
+ # figured bass has a duration, but applies to the next note
1351
+ # and should not change the current measure position!
1352
+ if isinstance(n, FiguredBass):
1353
+ n._divisions = factor.denominator
1354
+ n._when = now
1355
+ n._measure_position = measure_position
1356
+ continue
1357
+
1358
+ if isinstance(n, Hash_text):
1359
+ continue
1360
+ dur = Fraction(0)
1361
+
1362
+ if n.__class__ == Attributes:
1363
+ n.set_attributes_from_previous(attributes_dict)
1364
+ n.read_self()
1365
+ attributes_dict = n._dict.copy()
1366
+ attributes_object = n
1367
+
1368
+ # default to <divisions>1</divisions>
1369
+ divisions = (int(attributes_dict['divisions'].get_text())
1370
+ if 'divisions' in attributes_dict else 1)
1371
+
1372
+ factor = Fraction(1, divisions)
1373
+
1374
+
1375
+ if n.get_maybe_exist_typed_child(Duration):
1376
+ mxl_dur = n.get_maybe_exist_typed_child(Duration)
1377
+ dur = mxl_dur.get_length() * factor
1378
+
1379
+ if n.get_name() == 'backup':
1380
+ dur = -dur
1381
+ # reset all graces before the backup to after-graces:
1382
+ self.graces_to_aftergraces(pending_graces)
1383
+ pending_graces = []
1384
+ if n.get_maybe_exist_typed_child(Grace):
1385
+ dur = Fraction(0)
1386
+
1387
+ rest = n.get_maybe_exist_typed_child(Rest)
1388
+ if(rest
1389
+ and attributes_object
1390
+ and attributes_object.get_measure_length() == dur):
1391
+
1392
+ rest._is_whole_measure = True
1393
+
1394
+ if(dur > Fraction(0)
1395
+ and n.get_maybe_exist_typed_child(Chord)):
1396
+ now = last_moment
1397
+ measure_position = last_measure_position
1398
+
1399
+ n._when = now
1400
+ n._measure_position = measure_position
1401
+
1402
+ # For all grace notes, store the previous note, in case need
1403
+ # to turn the grace note into an after-grace later on!
1404
+ if isinstance(n, Note) and n.is_grace():
1405
+ n._prev_when = last_moment
1406
+ n._prev_measure_position = last_measure_position
1407
+ # After-graces are placed at the same position as the previous note
1408
+ if isinstance(n, Note) and n.is_after_grace():
1409
+ # TODO: We should do the same for grace notes at the end of
1410
+ # a measure with no following note!!!
1411
+ n._when = last_moment
1412
+ n._measure_position = last_measure_position
1413
+ elif isinstance(n, Note) and n.is_grace():
1414
+ pending_graces.append(n)
1415
+ elif dur > Fraction(0):
1416
+ pending_graces = []
1417
+
1418
+ n._duration = dur
1419
+ if dur > Fraction(0):
1420
+ last_moment = now
1421
+ last_measure_position = measure_position
1422
+ now += dur
1423
+ measure_position += dur
1424
+ elif dur < Fraction(0):
1425
+ # backup element, reset measure position
1426
+ now += dur
1427
+ measure_position += dur
1428
+ if measure_position < 0:
1429
+ # backup went beyond the measure start => reset to 0
1430
+ now -= measure_position
1431
+ measure_position = 0
1432
+ last_moment = now
1433
+ last_measure_position = measure_position
1434
+ if n._name == 'note':
1435
+ instrument = n.get_maybe_exist_named_child('instrument')
1436
+ if instrument:
1437
+ n.instrument_name = part_list.get_instrument(
1438
+ instrument.id)
1439
+
1440
+ # reset all graces at the end of the measure to after-graces:
1441
+ self.graces_to_aftergraces(pending_graces)
1442
+ pending_graces = []
1443
+ # Incomplete first measures are not padded, but registered as partial
1444
+ if is_first_measure:
1445
+ is_first_measure = False
1446
+ # upbeats are marked as implicit measures
1447
+ if attributes_object and m.is_implicit():
1448
+ length = attributes_object.get_measure_length()
1449
+ measure_end = measure_start_moment + length
1450
+ if measure_end != now:
1451
+ m.partial = now
1452
+ previous_measure = m
1453
+
1454
+ # modify attributes so that only those applying to the given staff remain
1455
+ def extract_attributes_for_staff(part, attr, staff):
1456
+ attributes = copy.copy(attr)
1457
+ attributes._children = []
1458
+ attributes._dict = attr._dict.copy()
1459
+ attributes._original_tag = attr
1460
+ # copy only the relevant children over for the given staff
1461
+ if staff == "None":
1462
+ staff = "1"
1463
+ for c in attr._children:
1464
+ if ((not hasattr(c, 'number') or c.number == staff) and
1465
+ not isinstance(c, Hash_text)):
1466
+ attributes._children.append(c)
1467
+ if not attributes._children:
1468
+ return None
1469
+ else:
1470
+ return attributes
1471
+
1472
+ def extract_voices(part):
1473
+ # The last indentified voice
1474
+ last_voice = None
1475
+
1476
+ voices = OrderedDict()
1477
+ measures = part.get_typed_children(Measure)
1478
+ elements = []
1479
+ for m in measures:
1480
+ if m.partial > 0:
1481
+ elements.append(Partial(m.partial))
1482
+ elements.extend(m.get_all_children())
1483
+ # make sure we know all voices already so that dynamics, clefs, etc.
1484
+ # can be assigned to the correct voices
1485
+ voice_to_staff_dict = {}
1486
+ for n in elements:
1487
+ voice_id = n.get_maybe_exist_named_child('voice')
1488
+ vid = None
1489
+ if voice_id:
1490
+ vid = voice_id.get_text()
1491
+ elif isinstance(n, Note):
1492
+ # TODO: Check whether we shall really use "None" here, or
1493
+ # rather use "1" as the default?
1494
+ if n.get_maybe_exist_named_child('chord'):
1495
+ vid = last_voice
1496
+ else:
1497
+ vid = "1"
1498
+
1499
+ if vid is not None:
1500
+ last_voice = vid
1501
+
1502
+ staff_id = n.get_maybe_exist_named_child('staff')
1503
+ sid = None
1504
+ if staff_id:
1505
+ sid = staff_id.get_text()
1506
+ else:
1507
+ # TODO: Check whether we shall really use "None" here, or
1508
+ # rather use "1" as the default?
1509
+ # If this is changed, need to change the corresponding
1510
+ # check in extract_attributes_for_staff, too.
1511
+ sid = "None"
1512
+ if vid and vid not in voices:
1513
+ voices[vid] = Musicxml_voice()
1514
+ if vid and sid and not n.get_maybe_exist_typed_child(Grace):
1515
+ if vid not in voice_to_staff_dict:
1516
+ voice_to_staff_dict[vid] = sid
1517
+
1518
+ # invert the voice_to_staff_dict into a staff_to_voice_dict(since we
1519
+ # need to assign staff-assigned objects like clefs, times, etc. to
1520
+ # all the correct voices. This will never work entirely correct due
1521
+ # to staff-switches, but that's the best we can do!
1522
+ staff_to_voice_dict = {}
1523
+ for(v, s) in list(voice_to_staff_dict.items()):
1524
+ if s not in staff_to_voice_dict:
1525
+ staff_to_voice_dict[s] = [v]
1526
+ else:
1527
+ staff_to_voice_dict[s].append(v)
1528
+
1529
+ start_attr = None
1530
+ assign_to_next_note = []
1531
+ id = None
1532
+ for n in elements:
1533
+ voice_id = n.get_maybe_exist_typed_child(get_class('voice'))
1534
+ if voice_id:
1535
+ id = voice_id.get_text()
1536
+ else:
1537
+ if n.get_maybe_exist_typed_child(get_class('chord')):
1538
+ id = last_voice
1539
+ else:
1540
+ id = "1"
1541
+
1542
+ if id != "None":
1543
+ last_voice = id
1544
+
1545
+ # We don't need backup/forward any more, since we have already
1546
+ # assigned the correct onset times.
1547
+ # TODO: Let Grouping through. Also: link, print, bokmark sound
1548
+ if not(isinstance(n, Note) or isinstance(n, Attributes) or
1549
+ isinstance(n, Direction) or isinstance(n, Partial) or
1550
+ isinstance(n, Barline) or isinstance(n, Harmony) or
1551
+ isinstance(n, FiguredBass) or isinstance(n, Print)):
1552
+ continue
1553
+
1554
+ if isinstance(n, Attributes) and not start_attr:
1555
+ start_attr = n
1556
+ continue
1557
+
1558
+ if isinstance(n, Attributes):
1559
+ # assign these only to the voices they really belong to!
1560
+ for(s, vids) in list(staff_to_voice_dict.items()):
1561
+ staff_attributes = part.extract_attributes_for_staff(n, s)
1562
+ if staff_attributes:
1563
+ for v in vids:
1564
+ voices[v].add_element(staff_attributes)
1565
+ continue
1566
+
1567
+ if isinstance(n, Partial) or isinstance(n, Barline) or isinstance(n, Print):
1568
+ for v in list(voices.keys()):
1569
+ voices[v].add_element(n)
1570
+ continue
1571
+
1572
+ if isinstance(n, Direction):
1573
+ if n.voice_id:
1574
+ voices[n.voice_id].add_element(n)
1575
+ else:
1576
+ assign_to_next_note.append(n)
1577
+ continue
1578
+
1579
+ if isinstance(n, Harmony) or isinstance(n, FiguredBass):
1580
+ # store the harmony or figured bass element until we encounter
1581
+ # the next note and assign it only to that one voice.
1582
+ assign_to_next_note.append(n)
1583
+ continue
1584
+
1585
+ if hasattr(n, 'print-object') and getattr(n, 'print-object') == "no":
1586
+ # Skip this note.
1587
+ pass
1588
+ else:
1589
+ for i in assign_to_next_note:
1590
+ voices[id].add_element(i)
1591
+ assign_to_next_note = []
1592
+ voices[id].add_element(n)
1593
+
1594
+ # Assign all remaining elements from assign_to_next_note to the voice
1595
+ # of the previous note:
1596
+ for i in assign_to_next_note:
1597
+ voices[id].add_element(i)
1598
+ assign_to_next_note = []
1599
+
1600
+ if start_attr:
1601
+ for(s, vids) in list(staff_to_voice_dict.items()):
1602
+ staff_attributes = part.extract_attributes_for_staff(
1603
+ start_attr, s)
1604
+ staff_attributes.read_self()
1605
+ part._staff_attributes_dict[s] = staff_attributes
1606
+ for v in vids:
1607
+ voices[v].insert(0, staff_attributes)
1608
+ voices[v]._elements[0].read_self()
1609
+
1610
+ part._voices = voices
1611
+
1612
+ def get_voices(self):
1613
+ return self._voices
1614
+
1615
+ def get_staff_attributes(self):
1616
+ return self._staff_attributes_dict
1617
+
1618
+
1619
+ class BarStyle(Music_xml_node):
1620
+ pass
1621
+
1622
+
1623
+ class BeatType(Music_xml_node):
1624
+ pass
1625
+
1626
+
1627
+ class BeatUnit(Music_xml_node):
1628
+ pass
1629
+
1630
+
1631
+ class BeatUnitDot(Music_xml_node):
1632
+ pass
1633
+
1634
+
1635
+ class Beats(Music_xml_node):
1636
+ pass
1637
+
1638
+
1639
+ class Bracket(Music_xml_spanner):
1640
+ pass
1641
+
1642
+
1643
+ class Chord(Music_xml_node):
1644
+ pass
1645
+
1646
+
1647
+ class Dashes(Music_xml_spanner):
1648
+ pass
1649
+
1650
+
1651
+ class DirType(Music_xml_node):
1652
+ pass
1653
+
1654
+
1655
+ class Direction(Measure_element):
1656
+ pass
1657
+
1658
+
1659
+ class Dot(Music_xml_node):
1660
+ pass
1661
+
1662
+
1663
+ class Elision(Music_xml_node):
1664
+ pass
1665
+
1666
+
1667
+ class Extend(Music_xml_node):
1668
+ pass
1669
+
1670
+
1671
+ class FiguredBass(Music_xml_node):
1672
+ pass
1673
+
1674
+
1675
+ class Glissando(Music_xml_spanner):
1676
+ pass
1677
+
1678
+
1679
+ class Grace(Music_xml_node):
1680
+ pass
1681
+
1682
+
1683
+ class Harmony(Music_xml_node):
1684
+ pass
1685
+
1686
+
1687
+ class Hash_comment(Music_xml_node):
1688
+ pass
1689
+
1690
+
1691
+ class KeyAlter(Music_xml_node):
1692
+ pass
1693
+
1694
+
1695
+ class Direction (Measure_element):
1696
+ pass
1697
+
1698
+
1699
+ class KeyOctave(Music_xml_node):
1700
+ pass
1701
+
1702
+
1703
+ class KeyStep(Music_xml_node):
1704
+ pass
1705
+
1706
+
1707
+ class Part_group(Music_xml_node):
1708
+ pass
1709
+
1710
+
1711
+ class Pedal(Music_xml_spanner):
1712
+ pass
1713
+
1714
+
1715
+ class PerMinute(Music_xml_node):
1716
+ pass
1717
+
1718
+
1719
+ class Print(Music_xml_node):
1720
+ pass
1721
+
1722
+
1723
+ class Root(ChordPitch):
1724
+ pass
1725
+
1726
+
1727
+ class Score_part(Music_xml_node):
1728
+ pass
1729
+
1730
+
1731
+ class Slide(Music_xml_spanner):
1732
+ pass
1733
+
1734
+
1735
+ class Staff(Music_xml_node):
1736
+ pass
1737
+
1738
+
1739
+ class Text(Music_xml_node):
1740
+ pass
1741
+
1742
+
1743
+ class Type(Music_xml_node):
1744
+ pass
1745
+
1746
+
1747
+ class Wavy_line(Music_xml_spanner):
1748
+ pass
1749
+
1750
+
1751
+ class Wedge(Music_xml_spanner):
1752
+ pass
1753
+
1754
+
1755
+ class Words(Music_xml_node):
1756
+ pass
1757
+
1758
+
1759
+ # need this, not all classes are instantiated
1760
+ # for every input file. Only add those classes, that are either directly
1761
+ # used by class name or extend Music_xml_node in some way!
1762
+ class_dict = {
1763
+ '#comment': Hash_comment,
1764
+ '#text': Hash_text,
1765
+ 'accidental': Accidental,
1766
+ 'attributes': Attributes,
1767
+ 'barline': Barline,
1768
+ 'bar-style': BarStyle,
1769
+ 'bass': Bass,
1770
+ 'beam': Beam,
1771
+ 'beats': Beats,
1772
+ 'beat-type': BeatType,
1773
+ 'beat-unit': BeatUnit,
1774
+ 'beat-unit-dot': BeatUnitDot,
1775
+ 'bend': Bend,
1776
+ 'bracket': Bracket,
1777
+ 'chord': Chord,
1778
+ 'credit': Credit,
1779
+ 'dashes': Dashes,
1780
+ 'degree': ChordModification,
1781
+ 'dot': Dot,
1782
+ 'direction': Direction,
1783
+ 'direction-type': DirType,
1784
+ 'duration': Duration,
1785
+ 'elision': Elision,
1786
+ 'extend': Extend,
1787
+ 'frame': Frame,
1788
+ 'frame-note': Frame_Note,
1789
+ 'figured-bass': FiguredBass,
1790
+ 'glissando': Glissando,
1791
+ 'grace': Grace,
1792
+ 'harmony': Harmony,
1793
+ 'identification': Identification,
1794
+ 'key-alter': KeyAlter,
1795
+ 'key-octave': KeyOctave,
1796
+ 'key-step': KeyStep,
1797
+ 'lyric': Lyric,
1798
+ 'measure': Measure,
1799
+ 'notations': Notations,
1800
+ 'note': Note,
1801
+ 'notehead': Notehead,
1802
+ 'octave-shift': Octave_shift,
1803
+ 'part': Part,
1804
+ 'part-group': Part_group,
1805
+ 'part-list': Part_list,
1806
+ 'pedal': Pedal,
1807
+ 'per-minute': PerMinute,
1808
+ 'pitch': Pitch,
1809
+ 'print': Print,
1810
+ 'rest': Rest,
1811
+ 'root': Root,
1812
+ 'score-part': Score_part,
1813
+ 'slide': Slide,
1814
+ 'slur': Slur,
1815
+ 'sound': Sound,
1816
+ 'staff': Staff,
1817
+ 'stem': Stem,
1818
+ 'syllabic': Syllabic,
1819
+ 'text': Text,
1820
+ 'time-modification': Time_modification,
1821
+ 'tied': Tied,
1822
+ 'tuplet': Tuplet,
1823
+ 'type': Type,
1824
+ 'unpitched': Unpitched,
1825
+ 'wavy-line': Wavy_line,
1826
+ 'wedge': Wedge,
1827
+ 'words': Words,
1828
+ 'work': Work,
1829
+ }
1830
+
1831
+
1832
+ def name2class_name(name):
1833
+ name = name.replace('-', '_')
1834
+ name = name.replace('#', 'hash_')
1835
+ name = name[0].upper() + name[1:].lower()
1836
+
1837
+ return str(name)
1838
+
1839
+
1840
+ def get_class(name):
1841
+ classname = class_dict.get(name)
1842
+ if classname:
1843
+ return classname
1844
+ else:
1845
+ class_name = name2class_name(name)
1846
+ klass = type(class_name, (Music_xml_node,), {})
1847
+ class_dict[name] = klass
1848
+ return klass
1849
+
1850
+
1851
+ def lxml_demarshal_node(node):
1852
+ name = node.tag
1853
+
1854
+ # Ignore comment nodes, which are also returned by the etree parser!
1855
+ if name is None or node.__class__.__name__ == "_Comment":
1856
+ return None
1857
+ klass = get_class(name)
1858
+ py_node = klass()
1859
+
1860
+ py_node._original = node
1861
+ py_node._name = name
1862
+ py_node._data = node.text
1863
+ py_node._children = [lxml_demarshal_node(cn) for cn in node.getchildren()]
1864
+ py_node._children = [x for x in py_node._children if x]
1865
+
1866
+ for c in py_node._children:
1867
+ c._parent = py_node
1868
+
1869
+ for(k, v) in list(node.items()):
1870
+ py_node.__dict__[k] = v
1871
+ py_node._attribute_dict[k] = v
1872
+
1873
+ return py_node
1874
+
1875
+
1876
+ def minidom_demarshal_node(node):
1877
+ name = node.nodeName
1878
+
1879
+ klass = get_class(name)
1880
+ py_node = klass()
1881
+ py_node._name = name
1882
+ py_node._children = [minidom_demarshal_node(cn) for cn in node.childNodes]
1883
+ for c in py_node._children:
1884
+ c._parent = py_node
1885
+
1886
+ if node.attributes:
1887
+ for(nm, value) in list(node.attributes.items()):
1888
+ py_node.__dict__[nm] = value
1889
+ py_node._attribute_dict[nm] = value
1890
+
1891
+ py_node._data = None
1892
+ if node.nodeType == node.TEXT_NODE and node.data:
1893
+ py_node._data = node.data
1894
+
1895
+ py_node._original = node
1896
+ return py_node
1897
+
1898
+
1899
+ if __name__ == '__main__':
1900
+ import lxml.etree
1901
+
1902
+ tree = lxml.etree.parse('beethoven.xml')
1903
+ mxl_tree = lxml_demarshal_node(tree.getroot())
1904
+ ks = sorted(class_dict.keys())
1905
+ print('\n'.join(ks))