LilyPond-Ruby 0.0.2.1 → 0.1.2

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