LilyPond-Ruby 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/etc/fonts/conf.d/10-hinting-slight.conf +15 -0
- data/etc/fonts/conf.d/10-scale-bitmap-fonts.conf +83 -0
- data/etc/fonts/conf.d/11-lcdfilter-default.conf +17 -0
- data/etc/fonts/conf.d/20-unhint-small-vera.conf +49 -0
- data/etc/fonts/conf.d/30-metric-aliases.conf +637 -0
- data/etc/fonts/conf.d/40-nonlatin.conf +332 -0
- data/etc/fonts/conf.d/45-generic.conf +136 -0
- data/etc/fonts/conf.d/45-latin.conf +301 -0
- data/etc/fonts/conf.d/48-spacing.conf +16 -0
- data/etc/fonts/conf.d/49-sansserif.conf +22 -0
- data/etc/fonts/conf.d/50-user.conf +16 -0
- data/etc/fonts/conf.d/51-local.conf +7 -0
- data/etc/fonts/conf.d/60-generic.conf +64 -0
- data/etc/fonts/conf.d/60-latin.conf +88 -0
- data/etc/fonts/conf.d/65-fonts-persian.conf +418 -0
- data/etc/fonts/conf.d/65-nonlatin.conf +228 -0
- data/etc/fonts/conf.d/69-unifont.conf +28 -0
- data/etc/fonts/conf.d/80-delicious.conf +19 -0
- data/etc/fonts/conf.d/90-synthetic.conf +64 -0
- data/etc/fonts/conf.d/README +23 -0
- data/etc/fonts/fonts.conf +101 -0
- data/etc/relocate/fontconfig.reloc +2 -0
- data/etc/relocate/guile.reloc +2 -0
- data/etc/relocate/libexec.reloc +1 -0
- data/lib/guile/2.2/ccache/ice-9/and-let-star.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/arrays.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/atomic.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/binary-ports.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/boot-9.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/buffered-input.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/calling.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/channel.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/command-line.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/common-list.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/control.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/curried-definitions.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/debug.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/deprecated.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/documentation.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/eval-string.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/eval.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/expect.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/fdes-finalizers.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/format.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/ftw.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/futures.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/gap-buffer.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/getopt-long.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/hash-table.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/hcons.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/history.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/i18n.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/iconv.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/lineio.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/list.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/local-eval.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/ls.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/mapping.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/match.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/networking.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/null.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/occam-channel.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/optargs.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/peg/cache.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/peg/codegen.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/peg/simplify-tree.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/peg/string-peg.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/peg/using-parsers.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/peg.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/poe.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/poll.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/popen.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/ports.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/posix.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/pretty-print.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/psyntax-pp.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/q.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/r5rs.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/rdelim.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/receive.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/regex.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/runq.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/rw.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/safe-r5rs.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/safe.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/sandbox.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/save-stack.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/scm-style-repl.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/serialize.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/session.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/slib.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/stack-catch.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/streams.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/string-fun.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/suspendable-ports.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/syncase.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/textual-ports.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/threads.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/time.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/top-repl.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/unicode.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/vlist.go +0 -0
- data/lib/guile/2.2/ccache/ice-9/weak-vector.go +0 -0
- data/lib/guile/2.2/ccache/language/brainfuck/compile-scheme.go +0 -0
- data/lib/guile/2.2/ccache/language/brainfuck/compile-tree-il.go +0 -0
- data/lib/guile/2.2/ccache/language/brainfuck/parse.go +0 -0
- data/lib/guile/2.2/ccache/language/brainfuck/spec.go +0 -0
- data/lib/guile/2.2/ccache/language/bytecode/spec.go +0 -0
- data/lib/guile/2.2/ccache/language/bytecode.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/closure-conversion.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/compile-bytecode.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/constructors.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/contification.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/cse.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/dce.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/effects-analysis.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/elide-values.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/handle-interrupts.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/intmap.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/intset.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/licm.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/optimize.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/peel-loops.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/primitives.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/prune-bailouts.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/prune-top-level-scopes.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/reify-primitives.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/renumber.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/rotate-loops.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/self-references.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/simplify.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/slot-allocation.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/spec.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/specialize-numbers.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/specialize-primcalls.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/split-rec.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/type-checks.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/type-fold.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/types.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/utils.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/verify.go +0 -0
- data/lib/guile/2.2/ccache/language/cps/with-cps.go +0 -0
- data/lib/guile/2.2/ccache/language/cps.go +0 -0
- data/lib/guile/2.2/ccache/language/ecmascript/array.go +0 -0
- data/lib/guile/2.2/ccache/language/ecmascript/base.go +0 -0
- data/lib/guile/2.2/ccache/language/ecmascript/compile-tree-il.go +0 -0
- data/lib/guile/2.2/ccache/language/ecmascript/function.go +0 -0
- data/lib/guile/2.2/ccache/language/ecmascript/impl.go +0 -0
- data/lib/guile/2.2/ccache/language/ecmascript/parse.go +0 -0
- data/lib/guile/2.2/ccache/language/ecmascript/spec.go +0 -0
- data/lib/guile/2.2/ccache/language/ecmascript/tokenize.go +0 -0
- data/lib/guile/2.2/ccache/language/elisp/bindings.go +0 -0
- data/lib/guile/2.2/ccache/language/elisp/boot.go +0 -0
- data/lib/guile/2.2/ccache/language/elisp/compile-tree-il.go +0 -0
- data/lib/guile/2.2/ccache/language/elisp/falias.go +0 -0
- data/lib/guile/2.2/ccache/language/elisp/lexer.go +0 -0
- data/lib/guile/2.2/ccache/language/elisp/parser.go +0 -0
- data/lib/guile/2.2/ccache/language/elisp/runtime/function-slot.go +0 -0
- data/lib/guile/2.2/ccache/language/elisp/runtime/value-slot.go +0 -0
- data/lib/guile/2.2/ccache/language/elisp/runtime.go +0 -0
- data/lib/guile/2.2/ccache/language/elisp/spec.go +0 -0
- data/lib/guile/2.2/ccache/language/scheme/compile-tree-il.go +0 -0
- data/lib/guile/2.2/ccache/language/scheme/decompile-tree-il.go +0 -0
- data/lib/guile/2.2/ccache/language/scheme/spec.go +0 -0
- data/lib/guile/2.2/ccache/language/tree-il/analyze.go +0 -0
- data/lib/guile/2.2/ccache/language/tree-il/canonicalize.go +0 -0
- data/lib/guile/2.2/ccache/language/tree-il/compile-cps.go +0 -0
- data/lib/guile/2.2/ccache/language/tree-il/debug.go +0 -0
- data/lib/guile/2.2/ccache/language/tree-il/effects.go +0 -0
- data/lib/guile/2.2/ccache/language/tree-il/fix-letrec.go +0 -0
- data/lib/guile/2.2/ccache/language/tree-il/optimize.go +0 -0
- data/lib/guile/2.2/ccache/language/tree-il/peval.go +0 -0
- data/lib/guile/2.2/ccache/language/tree-il/primitives.go +0 -0
- data/lib/guile/2.2/ccache/language/tree-il/spec.go +0 -0
- data/lib/guile/2.2/ccache/language/tree-il.go +0 -0
- data/lib/guile/2.2/ccache/language/value/spec.go +0 -0
- data/lib/guile/2.2/ccache/oop/goops/accessors.go +0 -0
- data/lib/guile/2.2/ccache/oop/goops/active-slot.go +0 -0
- data/lib/guile/2.2/ccache/oop/goops/composite-slot.go +0 -0
- data/lib/guile/2.2/ccache/oop/goops/describe.go +0 -0
- data/lib/guile/2.2/ccache/oop/goops/internal.go +0 -0
- data/lib/guile/2.2/ccache/oop/goops/save.go +0 -0
- data/lib/guile/2.2/ccache/oop/goops/simple.go +0 -0
- data/lib/guile/2.2/ccache/oop/goops/stklos.go +0 -0
- data/lib/guile/2.2/ccache/oop/goops.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/arithmetic/bitwise.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/arithmetic/fixnums.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/arithmetic/flonums.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/base.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/bytevectors.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/conditions.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/control.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/enums.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/eval.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/exceptions.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/files.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/hashtables.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/io/ports.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/io/simple.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/lists.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/mutable-pairs.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/mutable-strings.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/programs.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/r5rs.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/records/inspection.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/records/procedural.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/records/syntactic.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/sorting.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/syntax-case.go +0 -0
- data/lib/guile/2.2/ccache/rnrs/unicode.go +0 -0
- data/lib/guile/2.2/ccache/rnrs.go +0 -0
- data/lib/guile/2.2/ccache/scripts/api-diff.go +0 -0
- data/lib/guile/2.2/ccache/scripts/autofrisk.go +0 -0
- data/lib/guile/2.2/ccache/scripts/compile.go +0 -0
- data/lib/guile/2.2/ccache/scripts/disassemble.go +0 -0
- data/lib/guile/2.2/ccache/scripts/display-commentary.go +0 -0
- data/lib/guile/2.2/ccache/scripts/doc-snarf.go +0 -0
- data/lib/guile/2.2/ccache/scripts/frisk.go +0 -0
- data/lib/guile/2.2/ccache/scripts/generate-autoload.go +0 -0
- data/lib/guile/2.2/ccache/scripts/help.go +0 -0
- data/lib/guile/2.2/ccache/scripts/lint.go +0 -0
- data/lib/guile/2.2/ccache/scripts/list.go +0 -0
- data/lib/guile/2.2/ccache/scripts/punify.go +0 -0
- data/lib/guile/2.2/ccache/scripts/read-rfc822.go +0 -0
- data/lib/guile/2.2/ccache/scripts/read-scheme-source.go +0 -0
- data/lib/guile/2.2/ccache/scripts/read-text-outline.go +0 -0
- data/lib/guile/2.2/ccache/scripts/scan-api.go +0 -0
- data/lib/guile/2.2/ccache/scripts/snarf-check-and-output-texi.go +0 -0
- data/lib/guile/2.2/ccache/scripts/snarf-guile-m4-docs.go +0 -0
- data/lib/guile/2.2/ccache/scripts/summarize-guile-TODO.go +0 -0
- data/lib/guile/2.2/ccache/scripts/use2dot.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-1.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-10.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-11.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-111.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-13.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-14.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-16.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-17.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-18.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-19.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-2.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-26.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-27.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-28.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-31.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-34.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-35.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-37.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-38.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-39.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-4/gnu.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-4.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-41.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-42.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-43.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-45.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-6.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-60.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-64.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-67.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-69.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-71.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-8.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-88.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-9/gnu.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-9.go +0 -0
- data/lib/guile/2.2/ccache/srfi/srfi-98.go +0 -0
- data/lib/guile/2.2/ccache/statprof.go +0 -0
- data/lib/guile/2.2/ccache/sxml/apply-templates.go +0 -0
- data/lib/guile/2.2/ccache/sxml/fold.go +0 -0
- data/lib/guile/2.2/ccache/sxml/match.go +0 -0
- data/lib/guile/2.2/ccache/sxml/simple.go +0 -0
- data/lib/guile/2.2/ccache/sxml/ssax/input-parse.go +0 -0
- data/lib/guile/2.2/ccache/sxml/ssax.go +0 -0
- data/lib/guile/2.2/ccache/sxml/transform.go +0 -0
- data/lib/guile/2.2/ccache/sxml/xpath.go +0 -0
- data/lib/guile/2.2/ccache/system/base/ck.go +0 -0
- data/lib/guile/2.2/ccache/system/base/compile.go +0 -0
- data/lib/guile/2.2/ccache/system/base/lalr.go +0 -0
- data/lib/guile/2.2/ccache/system/base/language.go +0 -0
- data/lib/guile/2.2/ccache/system/base/message.go +0 -0
- data/lib/guile/2.2/ccache/system/base/pmatch.go +0 -0
- data/lib/guile/2.2/ccache/system/base/syntax.go +0 -0
- data/lib/guile/2.2/ccache/system/base/target.go +0 -0
- data/lib/guile/2.2/ccache/system/base/types.go +0 -0
- data/lib/guile/2.2/ccache/system/foreign-object.go +0 -0
- data/lib/guile/2.2/ccache/system/foreign.go +0 -0
- data/lib/guile/2.2/ccache/system/repl/command.go +0 -0
- data/lib/guile/2.2/ccache/system/repl/common.go +0 -0
- data/lib/guile/2.2/ccache/system/repl/coop-server.go +0 -0
- data/lib/guile/2.2/ccache/system/repl/debug.go +0 -0
- data/lib/guile/2.2/ccache/system/repl/error-handling.go +0 -0
- data/lib/guile/2.2/ccache/system/repl/repl.go +0 -0
- data/lib/guile/2.2/ccache/system/repl/server.go +0 -0
- data/lib/guile/2.2/ccache/system/syntax.go +0 -0
- data/lib/guile/2.2/ccache/system/vm/assembler.go +0 -0
- data/lib/guile/2.2/ccache/system/vm/coverage.go +0 -0
- data/lib/guile/2.2/ccache/system/vm/debug.go +0 -0
- data/lib/guile/2.2/ccache/system/vm/disassembler.go +0 -0
- data/lib/guile/2.2/ccache/system/vm/dwarf.go +0 -0
- data/lib/guile/2.2/ccache/system/vm/elf.go +0 -0
- data/lib/guile/2.2/ccache/system/vm/frame.go +0 -0
- data/lib/guile/2.2/ccache/system/vm/inspect.go +0 -0
- data/lib/guile/2.2/ccache/system/vm/linker.go +0 -0
- data/lib/guile/2.2/ccache/system/vm/loader.go +0 -0
- data/lib/guile/2.2/ccache/system/vm/program.go +0 -0
- data/lib/guile/2.2/ccache/system/vm/trace.go +0 -0
- data/lib/guile/2.2/ccache/system/vm/trap-state.go +0 -0
- data/lib/guile/2.2/ccache/system/vm/traps.go +0 -0
- data/lib/guile/2.2/ccache/system/vm/vm.go +0 -0
- data/lib/guile/2.2/ccache/system/xref.go +0 -0
- data/lib/guile/2.2/ccache/texinfo/docbook.go +0 -0
- data/lib/guile/2.2/ccache/texinfo/html.go +0 -0
- data/lib/guile/2.2/ccache/texinfo/indexing.go +0 -0
- data/lib/guile/2.2/ccache/texinfo/plain-text.go +0 -0
- data/lib/guile/2.2/ccache/texinfo/reflection.go +0 -0
- data/lib/guile/2.2/ccache/texinfo/serialize.go +0 -0
- data/lib/guile/2.2/ccache/texinfo/string-utils.go +0 -0
- data/lib/guile/2.2/ccache/texinfo.go +0 -0
- data/lib/guile/2.2/ccache/web/client.go +0 -0
- data/lib/guile/2.2/ccache/web/http.go +0 -0
- data/lib/guile/2.2/ccache/web/request.go +0 -0
- data/lib/guile/2.2/ccache/web/response.go +0 -0
- data/lib/guile/2.2/ccache/web/server/http.go +0 -0
- data/lib/guile/2.2/ccache/web/server.go +0 -0
- data/lib/guile/2.2/ccache/web/uri.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/accreg.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/auto-beam.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/autochange.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/backend-library.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/bar-line.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/breath.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/c++.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/chord-entry.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/chord-ignatzek-names.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/chord-name.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/clip-region.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/color.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/curried-definitions.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/define-context-properties.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/define-event-classes.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/define-grob-interfaces.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/define-grob-properties.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/define-grobs.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/define-markup-commands.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/define-music-callbacks.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/define-music-display-methods.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/define-music-properties.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/define-music-types.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/define-note-names.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/define-stencil-commands.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/define-woodwind-diagrams.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/display-lily.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/display-woodwind-diagrams.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/file-cache.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/flag-styles.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/font-encodings.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/font.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/framework-cairo.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/framework-ps.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/framework-svg.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/fret-diagrams.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/graphviz.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/harp-pedals.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/layout-beam.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/layout-slur.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/lily-library.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/lily.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/ly-syntax-constructors.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/markup-macros.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/markup.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/midi.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/modal-transforms.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/music-functions.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/output-lib.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/output-ps.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/output-svg.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/page.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/paper-system.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/paper.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/parser-clef.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/parser-ly-from-scheme.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/part-combiner.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/predefined-fretboards.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/ps-to-png.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/scheme-engravers.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/scheme-performers.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/script.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/skyline.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/song-util.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/song.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/stencil.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/tablature.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/time-signature-settings.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/time-signature.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/titling.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/to-xml.go +0 -0
- data/lib/lilypond/2.24.1/ccache/lily/translation-functions.go +0 -0
- data/share/emacs/site-lisp/lilypond-font-lock.el +208 -0
- data/share/emacs/site-lisp/lilypond-indent.el +605 -0
- data/share/emacs/site-lisp/lilypond-init.el +21 -0
- data/share/emacs/site-lisp/lilypond-mode.el +1204 -0
- data/share/emacs/site-lisp/lilypond-song.el +556 -0
- data/share/emacs/site-lisp/lilypond-what-beat.el +279 -0
- data/share/emacs/site-lisp/lilypond-words.el +1428 -0
- data/share/guile/2.2/guile-procedures.txt +8860 -0
- data/share/guile/2.2/ice-9/and-let-star.scm +73 -0
- data/share/guile/2.2/ice-9/arrays.scm +70 -0
- data/share/guile/2.2/ice-9/atomic.scm +38 -0
- data/share/guile/2.2/ice-9/binary-ports.scm +53 -0
- data/share/guile/2.2/ice-9/boot-9.scm +4131 -0
- data/share/guile/2.2/ice-9/buffered-input.scm +109 -0
- data/share/guile/2.2/ice-9/calling.scm +326 -0
- data/share/guile/2.2/ice-9/channel.scm +170 -0
- data/share/guile/2.2/ice-9/command-line.scm +477 -0
- data/share/guile/2.2/ice-9/common-list.scm +278 -0
- data/share/guile/2.2/ice-9/control.scm +110 -0
- data/share/guile/2.2/ice-9/curried-definitions.scm +57 -0
- data/share/guile/2.2/ice-9/debug.scm +25 -0
- data/share/guile/2.2/ice-9/deprecated.scm +93 -0
- data/share/guile/2.2/ice-9/documentation.scm +203 -0
- data/share/guile/2.2/ice-9/eval-string.scm +90 -0
- data/share/guile/2.2/ice-9/eval.scm +723 -0
- data/share/guile/2.2/ice-9/expect.scm +171 -0
- data/share/guile/2.2/ice-9/fdes-finalizers.scm +25 -0
- data/share/guile/2.2/ice-9/format.scm +1626 -0
- data/share/guile/2.2/ice-9/ftw.scm +564 -0
- data/share/guile/2.2/ice-9/futures.scm +308 -0
- data/share/guile/2.2/ice-9/gap-buffer.scm +283 -0
- data/share/guile/2.2/ice-9/getopt-long.scm +371 -0
- data/share/guile/2.2/ice-9/hash-table.scm +45 -0
- data/share/guile/2.2/ice-9/hcons.scm +80 -0
- data/share/guile/2.2/ice-9/history.scm +65 -0
- data/share/guile/2.2/ice-9/i18n.scm +531 -0
- data/share/guile/2.2/ice-9/iconv.scm +95 -0
- data/share/guile/2.2/ice-9/lineio.scm +115 -0
- data/share/guile/2.2/ice-9/list.scm +36 -0
- data/share/guile/2.2/ice-9/local-eval.scm +261 -0
- data/share/guile/2.2/ice-9/ls.scm +94 -0
- data/share/guile/2.2/ice-9/mapping.scm +118 -0
- data/share/guile/2.2/ice-9/match.scm +59 -0
- data/share/guile/2.2/ice-9/match.upstream.scm +917 -0
- data/share/guile/2.2/ice-9/networking.scm +94 -0
- data/share/guile/2.2/ice-9/null.scm +34 -0
- data/share/guile/2.2/ice-9/occam-channel.scm +261 -0
- data/share/guile/2.2/ice-9/optargs.scm +381 -0
- data/share/guile/2.2/ice-9/peg/cache.scm +45 -0
- data/share/guile/2.2/ice-9/peg/codegen.scm +359 -0
- data/share/guile/2.2/ice-9/peg/simplify-tree.scm +97 -0
- data/share/guile/2.2/ice-9/peg/string-peg.scm +273 -0
- data/share/guile/2.2/ice-9/peg/using-parsers.scm +116 -0
- data/share/guile/2.2/ice-9/peg.scm +42 -0
- data/share/guile/2.2/ice-9/poe.scm +116 -0
- data/share/guile/2.2/ice-9/poll.scm +172 -0
- data/share/guile/2.2/ice-9/popen.scm +178 -0
- data/share/guile/2.2/ice-9/ports.scm +566 -0
- data/share/guile/2.2/ice-9/posix.scm +75 -0
- data/share/guile/2.2/ice-9/pretty-print.scm +483 -0
- data/share/guile/2.2/ice-9/psyntax-pp.scm +3542 -0
- data/share/guile/2.2/ice-9/psyntax.scm +3326 -0
- data/share/guile/2.2/ice-9/q.scm +153 -0
- data/share/guile/2.2/ice-9/quasisyntax.scm +136 -0
- data/share/guile/2.2/ice-9/r5rs.scm +45 -0
- data/share/guile/2.2/ice-9/r6rs-libraries.scm +242 -0
- data/share/guile/2.2/ice-9/rdelim.scm +208 -0
- data/share/guile/2.2/ice-9/receive.scm +26 -0
- data/share/guile/2.2/ice-9/regex.scm +229 -0
- data/share/guile/2.2/ice-9/runq.scm +241 -0
- data/share/guile/2.2/ice-9/rw.scm +27 -0
- data/share/guile/2.2/ice-9/safe-r5rs.scm +145 -0
- data/share/guile/2.2/ice-9/safe.scm +34 -0
- data/share/guile/2.2/ice-9/sandbox.scm +1399 -0
- data/share/guile/2.2/ice-9/save-stack.scm +58 -0
- data/share/guile/2.2/ice-9/scm-style-repl.scm +279 -0
- data/share/guile/2.2/ice-9/serialize.scm +114 -0
- data/share/guile/2.2/ice-9/session.scm +530 -0
- data/share/guile/2.2/ice-9/slib.scm +33 -0
- data/share/guile/2.2/ice-9/stack-catch.scm +47 -0
- data/share/guile/2.2/ice-9/streams.scm +168 -0
- data/share/guile/2.2/ice-9/string-fun.scm +280 -0
- data/share/guile/2.2/ice-9/suspendable-ports.scm +788 -0
- data/share/guile/2.2/ice-9/syncase.scm +37 -0
- data/share/guile/2.2/ice-9/textual-ports.scm +70 -0
- data/share/guile/2.2/ice-9/threads.scm +392 -0
- data/share/guile/2.2/ice-9/time.scm +58 -0
- data/share/guile/2.2/ice-9/top-repl.scm +78 -0
- data/share/guile/2.2/ice-9/unicode.scm +26 -0
- data/share/guile/2.2/ice-9/vlist.scm +595 -0
- data/share/guile/2.2/ice-9/weak-vector.scm +31 -0
- data/share/guile/2.2/language/brainfuck/compile-scheme.scm +123 -0
- data/share/guile/2.2/language/brainfuck/compile-tree-il.scm +184 -0
- data/share/guile/2.2/language/brainfuck/parse.scm +95 -0
- data/share/guile/2.2/language/brainfuck/spec.scm +43 -0
- data/share/guile/2.2/language/bytecode/spec.scm +42 -0
- data/share/guile/2.2/language/bytecode.scm +104 -0
- data/share/guile/2.2/language/cps/closure-conversion.scm +848 -0
- data/share/guile/2.2/language/cps/compile-bytecode.scm +610 -0
- data/share/guile/2.2/language/cps/constructors.scm +106 -0
- data/share/guile/2.2/language/cps/contification.scm +448 -0
- data/share/guile/2.2/language/cps/cse.scm +414 -0
- data/share/guile/2.2/language/cps/dce.scm +363 -0
- data/share/guile/2.2/language/cps/effects-analysis.scm +597 -0
- data/share/guile/2.2/language/cps/elide-values.scm +88 -0
- data/share/guile/2.2/language/cps/handle-interrupts.scm +69 -0
- data/share/guile/2.2/language/cps/intmap.scm +765 -0
- data/share/guile/2.2/language/cps/intset.scm +830 -0
- data/share/guile/2.2/language/cps/licm.scm +308 -0
- data/share/guile/2.2/language/cps/optimize.scm +135 -0
- data/share/guile/2.2/language/cps/peel-loops.scm +287 -0
- data/share/guile/2.2/language/cps/primitives.scm +141 -0
- data/share/guile/2.2/language/cps/prune-bailouts.scm +86 -0
- data/share/guile/2.2/language/cps/prune-top-level-scopes.scm +63 -0
- data/share/guile/2.2/language/cps/reify-primitives.scm +179 -0
- data/share/guile/2.2/language/cps/renumber.scm +217 -0
- data/share/guile/2.2/language/cps/rotate-loops.scm +239 -0
- data/share/guile/2.2/language/cps/self-references.scm +79 -0
- data/share/guile/2.2/language/cps/simplify.scm +274 -0
- data/share/guile/2.2/language/cps/slot-allocation.scm +1058 -0
- data/share/guile/2.2/language/cps/spec.scm +51 -0
- data/share/guile/2.2/language/cps/specialize-numbers.scm +724 -0
- data/share/guile/2.2/language/cps/specialize-primcalls.scm +87 -0
- data/share/guile/2.2/language/cps/split-rec.scm +174 -0
- data/share/guile/2.2/language/cps/type-checks.scm +72 -0
- data/share/guile/2.2/language/cps/type-fold.scm +455 -0
- data/share/guile/2.2/language/cps/types.scm +1826 -0
- data/share/guile/2.2/language/cps/utils.scm +550 -0
- data/share/guile/2.2/language/cps/verify.scm +304 -0
- data/share/guile/2.2/language/cps/with-cps.scm +145 -0
- data/share/guile/2.2/language/cps.scm +358 -0
- data/share/guile/2.2/language/ecmascript/array.scm +121 -0
- data/share/guile/2.2/language/ecmascript/base.scm +251 -0
- data/share/guile/2.2/language/ecmascript/compile-tree-il.scm +576 -0
- data/share/guile/2.2/language/ecmascript/function.scm +78 -0
- data/share/guile/2.2/language/ecmascript/impl.scm +169 -0
- data/share/guile/2.2/language/ecmascript/parse.scm +352 -0
- data/share/guile/2.2/language/ecmascript/spec.scm +37 -0
- data/share/guile/2.2/language/ecmascript/tokenize.scm +513 -0
- data/share/guile/2.2/language/elisp/bindings.scm +107 -0
- data/share/guile/2.2/language/elisp/boot.el +617 -0
- data/share/guile/2.2/language/elisp/compile-tree-il.scm +812 -0
- data/share/guile/2.2/language/elisp/falias.scm +47 -0
- data/share/guile/2.2/language/elisp/lexer.scm +430 -0
- data/share/guile/2.2/language/elisp/parser.scm +222 -0
- data/share/guile/2.2/language/elisp/runtime/function-slot.scm +63 -0
- data/share/guile/2.2/language/elisp/runtime/value-slot.scm +24 -0
- data/share/guile/2.2/language/elisp/runtime.scm +153 -0
- data/share/guile/2.2/language/elisp/spec.scm +43 -0
- data/share/guile/2.2/language/scheme/compile-tree-il.scm +33 -0
- data/share/guile/2.2/language/scheme/decompile-tree-il.scm +796 -0
- data/share/guile/2.2/language/scheme/spec.scm +63 -0
- data/share/guile/2.2/language/tree-il/analyze.scm +1568 -0
- data/share/guile/2.2/language/tree-il/canonicalize.scm +82 -0
- data/share/guile/2.2/language/tree-il/compile-cps.scm +1149 -0
- data/share/guile/2.2/language/tree-il/debug.scm +246 -0
- data/share/guile/2.2/language/tree-il/effects.scm +591 -0
- data/share/guile/2.2/language/tree-il/fix-letrec.scm +314 -0
- data/share/guile/2.2/language/tree-il/optimize.scm +43 -0
- data/share/guile/2.2/language/tree-il/peval.scm +1669 -0
- data/share/guile/2.2/language/tree-il/primitives.scm +630 -0
- data/share/guile/2.2/language/tree-il/spec.scm +46 -0
- data/share/guile/2.2/language/tree-il.scm +630 -0
- data/share/guile/2.2/language/value/spec.scm +30 -0
- data/share/guile/2.2/oop/goops/accessors.scm +72 -0
- data/share/guile/2.2/oop/goops/active-slot.scm +63 -0
- data/share/guile/2.2/oop/goops/composite-slot.scm +83 -0
- data/share/guile/2.2/oop/goops/describe.scm +189 -0
- data/share/guile/2.2/oop/goops/internal.scm +30 -0
- data/share/guile/2.2/oop/goops/save.scm +874 -0
- data/share/guile/2.2/oop/goops/simple.scm +30 -0
- data/share/guile/2.2/oop/goops/stklos.scm +74 -0
- data/share/guile/2.2/oop/goops.scm +3176 -0
- data/share/guile/2.2/rnrs/arithmetic/bitwise.scm +92 -0
- data/share/guile/2.2/rnrs/arithmetic/fixnums.scm +291 -0
- data/share/guile/2.2/rnrs/arithmetic/flonums.scm +203 -0
- data/share/guile/2.2/rnrs/base.scm +291 -0
- data/share/guile/2.2/rnrs/bytevectors.scm +83 -0
- data/share/guile/2.2/rnrs/conditions.scm +225 -0
- data/share/guile/2.2/rnrs/control.scm +22 -0
- data/share/guile/2.2/rnrs/enums.scm +152 -0
- data/share/guile/2.2/rnrs/eval.scm +39 -0
- data/share/guile/2.2/rnrs/exceptions.scm +276 -0
- data/share/guile/2.2/rnrs/files.scm +96 -0
- data/share/guile/2.2/rnrs/hashtables.scm +190 -0
- data/share/guile/2.2/rnrs/io/ports.scm +554 -0
- data/share/guile/2.2/rnrs/io/simple.scm +167 -0
- data/share/guile/2.2/rnrs/lists.scm +55 -0
- data/share/guile/2.2/rnrs/mutable-pairs.scm +23 -0
- data/share/guile/2.2/rnrs/mutable-strings.scm +23 -0
- data/share/guile/2.2/rnrs/programs.scm +22 -0
- data/share/guile/2.2/rnrs/r5rs.scm +34 -0
- data/share/guile/2.2/rnrs/records/inspection.scm +81 -0
- data/share/guile/2.2/rnrs/records/procedural.scm +289 -0
- data/share/guile/2.2/rnrs/records/syntactic.scm +248 -0
- data/share/guile/2.2/rnrs/sorting.scm +27 -0
- data/share/guile/2.2/rnrs/syntax-case.scm +68 -0
- data/share/guile/2.2/rnrs/unicode.scm +104 -0
- data/share/guile/2.2/rnrs.scm +289 -0
- data/share/guile/2.2/scripts/api-diff.scm +179 -0
- data/share/guile/2.2/scripts/autofrisk.scm +218 -0
- data/share/guile/2.2/scripts/compile.scm +273 -0
- data/share/guile/2.2/scripts/disassemble.scm +38 -0
- data/share/guile/2.2/scripts/display-commentary.scm +67 -0
- data/share/guile/2.2/scripts/doc-snarf.scm +439 -0
- data/share/guile/2.2/scripts/frisk.scm +290 -0
- data/share/guile/2.2/scripts/generate-autoload.scm +144 -0
- data/share/guile/2.2/scripts/help.scm +188 -0
- data/share/guile/2.2/scripts/lint.scm +318 -0
- data/share/guile/2.2/scripts/list.scm +91 -0
- data/share/guile/2.2/scripts/punify.scm +87 -0
- data/share/guile/2.2/scripts/read-rfc822.scm +131 -0
- data/share/guile/2.2/scripts/read-scheme-source.scm +282 -0
- data/share/guile/2.2/scripts/read-text-outline.scm +253 -0
- data/share/guile/2.2/scripts/scan-api.scm +223 -0
- data/share/guile/2.2/scripts/snarf-check-and-output-texi.scm +303 -0
- data/share/guile/2.2/scripts/snarf-guile-m4-docs.scm +86 -0
- data/share/guile/2.2/scripts/summarize-guile-TODO.scm +213 -0
- data/share/guile/2.2/scripts/use2dot.scm +110 -0
- data/share/guile/2.2/srfi/srfi-1.scm +1061 -0
- data/share/guile/2.2/srfi/srfi-10.scm +89 -0
- data/share/guile/2.2/srfi/srfi-11.scm +146 -0
- data/share/guile/2.2/srfi/srfi-111.scm +37 -0
- data/share/guile/2.2/srfi/srfi-13.scm +132 -0
- data/share/guile/2.2/srfi/srfi-14.scm +99 -0
- data/share/guile/2.2/srfi/srfi-16.scm +51 -0
- data/share/guile/2.2/srfi/srfi-17.scm +174 -0
- data/share/guile/2.2/srfi/srfi-18.scm +382 -0
- data/share/guile/2.2/srfi/srfi-19.scm +1470 -0
- data/share/guile/2.2/srfi/srfi-2.scm +31 -0
- data/share/guile/2.2/srfi/srfi-26.scm +66 -0
- data/share/guile/2.2/srfi/srfi-27.scm +96 -0
- data/share/guile/2.2/srfi/srfi-28.scm +34 -0
- data/share/guile/2.2/srfi/srfi-31.scm +35 -0
- data/share/guile/2.2/srfi/srfi-34.scm +84 -0
- data/share/guile/2.2/srfi/srfi-35.scm +351 -0
- data/share/guile/2.2/srfi/srfi-37.scm +234 -0
- data/share/guile/2.2/srfi/srfi-38.scm +207 -0
- data/share/guile/2.2/srfi/srfi-39.scm +55 -0
- data/share/guile/2.2/srfi/srfi-4/gnu.scm +80 -0
- data/share/guile/2.2/srfi/srfi-4.scm +118 -0
- data/share/guile/2.2/srfi/srfi-41.scm +505 -0
- data/share/guile/2.2/srfi/srfi-42/ec.scm +1053 -0
- data/share/guile/2.2/srfi/srfi-42.scm +66 -0
- data/share/guile/2.2/srfi/srfi-43.scm +1077 -0
- data/share/guile/2.2/srfi/srfi-45.scm +93 -0
- data/share/guile/2.2/srfi/srfi-6.scm +29 -0
- data/share/guile/2.2/srfi/srfi-60.scm +73 -0
- data/share/guile/2.2/srfi/srfi-64/testing.scm +1040 -0
- data/share/guile/2.2/srfi/srfi-64.scm +55 -0
- data/share/guile/2.2/srfi/srfi-67/compare.scm +686 -0
- data/share/guile/2.2/srfi/srfi-67.scm +88 -0
- data/share/guile/2.2/srfi/srfi-69.scm +336 -0
- data/share/guile/2.2/srfi/srfi-71.scm +267 -0
- data/share/guile/2.2/srfi/srfi-8.scm +31 -0
- data/share/guile/2.2/srfi/srfi-88.scm +53 -0
- data/share/guile/2.2/srfi/srfi-9/gnu.scm +168 -0
- data/share/guile/2.2/srfi/srfi-9.scm +351 -0
- data/share/guile/2.2/srfi/srfi-98.scm +44 -0
- data/share/guile/2.2/statprof.scm +988 -0
- data/share/guile/2.2/sxml/apply-templates.scm +102 -0
- data/share/guile/2.2/sxml/fold.scm +250 -0
- data/share/guile/2.2/sxml/match.scm +75 -0
- data/share/guile/2.2/sxml/simple.scm +408 -0
- data/share/guile/2.2/sxml/ssax/input-parse.scm +180 -0
- data/share/guile/2.2/sxml/ssax.scm +265 -0
- data/share/guile/2.2/sxml/sxml-match.ss +1181 -0
- data/share/guile/2.2/sxml/transform.scm +298 -0
- data/share/guile/2.2/sxml/upstream/SSAX.scm +3235 -0
- data/share/guile/2.2/sxml/upstream/SXML-tree-trans.scm +249 -0
- data/share/guile/2.2/sxml/upstream/SXPath-old.scm +1216 -0
- data/share/guile/2.2/sxml/upstream/assert.scm +35 -0
- data/share/guile/2.2/sxml/upstream/input-parse.scm +326 -0
- data/share/guile/2.2/sxml/xpath.scm +493 -0
- data/share/guile/2.2/system/base/ck.scm +55 -0
- data/share/guile/2.2/system/base/compile.scm +282 -0
- data/share/guile/2.2/system/base/lalr.scm +51 -0
- data/share/guile/2.2/system/base/lalr.upstream.scm +2096 -0
- data/share/guile/2.2/system/base/language.scm +119 -0
- data/share/guile/2.2/system/base/message.scm +238 -0
- data/share/guile/2.2/system/base/pmatch.scm +68 -0
- data/share/guile/2.2/system/base/syntax.scm +299 -0
- data/share/guile/2.2/system/base/target.scm +152 -0
- data/share/guile/2.2/system/base/types.scm +561 -0
- data/share/guile/2.2/system/foreign-object.scm +91 -0
- data/share/guile/2.2/system/foreign.scm +200 -0
- data/share/guile/2.2/system/repl/command.scm +946 -0
- data/share/guile/2.2/system/repl/common.scm +263 -0
- data/share/guile/2.2/system/repl/coop-server.scm +200 -0
- data/share/guile/2.2/system/repl/debug.scm +210 -0
- data/share/guile/2.2/system/repl/describe.scm +347 -0
- data/share/guile/2.2/system/repl/error-handling.scm +183 -0
- data/share/guile/2.2/system/repl/repl.scm +233 -0
- data/share/guile/2.2/system/repl/server.scm +332 -0
- data/share/guile/2.2/system/syntax.scm +33 -0
- data/share/guile/2.2/system/vm/assembler.scm +2614 -0
- data/share/guile/2.2/system/vm/coverage.scm +351 -0
- data/share/guile/2.2/system/vm/debug.scm +766 -0
- data/share/guile/2.2/system/vm/disassembler.scm +658 -0
- data/share/guile/2.2/system/vm/dwarf.scm +1852 -0
- data/share/guile/2.2/system/vm/elf.scm +1042 -0
- data/share/guile/2.2/system/vm/frame.scm +485 -0
- data/share/guile/2.2/system/vm/inspect.scm +188 -0
- data/share/guile/2.2/system/vm/linker.scm +732 -0
- data/share/guile/2.2/system/vm/loader.scm +27 -0
- data/share/guile/2.2/system/vm/program.scm +312 -0
- data/share/guile/2.2/system/vm/trace.scm +121 -0
- data/share/guile/2.2/system/vm/trap-state.scm +302 -0
- data/share/guile/2.2/system/vm/traps.scm +608 -0
- data/share/guile/2.2/system/vm/vm.scm +32 -0
- data/share/guile/2.2/system/xref.scm +369 -0
- data/share/guile/2.2/texinfo/docbook.scm +240 -0
- data/share/guile/2.2/texinfo/html.scm +279 -0
- data/share/guile/2.2/texinfo/indexing.scm +75 -0
- data/share/guile/2.2/texinfo/plain-text.scm +322 -0
- data/share/guile/2.2/texinfo/reflection.scm +585 -0
- data/share/guile/2.2/texinfo/serialize.scm +300 -0
- data/share/guile/2.2/texinfo/string-utils.scm +410 -0
- data/share/guile/2.2/texinfo.scm +1263 -0
- data/share/guile/2.2/web/client.scm +513 -0
- data/share/guile/2.2/web/http.scm +2043 -0
- data/share/guile/2.2/web/request.scm +326 -0
- data/share/guile/2.2/web/response.scm +379 -0
- data/share/guile/2.2/web/server/http.scm +183 -0
- data/share/guile/2.2/web/server.scm +397 -0
- data/share/guile/2.2/web/uri.scm +552 -0
- data/share/lilypond/2.24.1/fontconfig/0bd3dc0958fa2205aaaa8ebb13e2872b-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/188ac73a183f12857f63bb60a4a6d603-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/32b6488e5b8292a2e95c79d947e009e8-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/3830d5c3ddfd5cd38a049b759396e72e-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/3f7329c5293ffd510edef78f73874cfd-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/4c599c202bc5c08e2d34565a40eac3b2-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/57e423e26b20ab21d0f2f29c145174c3-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/7ef2298fde41cc6eeb7af42e48b7d293-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/826f6b6ef79022e2eac8af26bf4b62f2-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/945677eb7aeaf62f1d50efc3fb3ec7d8-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/95530828ff6c81d309f8258d8d02a23e-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/CACHEDIR.TAG +4 -0
- data/share/lilypond/2.24.1/fontconfig/bf3b770c553c462765856025a94f1ce6-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/c855463f699352c367813e37f3f70ea7-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/d3e5c4ee2ceb1fc347f91d4cefc53bc0-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/d589a48862398ed80a3d6066f4f56f4c-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/d82eb4fd963d448e2fcb7d7b793b5df3-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/e13b20fdb08344e0e664864cc2ede53d-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/e52a45a1c8c8fe895fc0fc8c4e6999b8-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fontconfig/f1f2465696798768e9653f19e17ccdc8-le64.cache-8 +0 -0
- data/share/lilypond/2.24.1/fonts/00-lilypond-fonts.conf +99 -0
- data/share/lilypond/2.24.1/fonts/99-lilypond-fonts.conf +28 -0
- data/share/lilypond/2.24.1/fonts/otf/C059-BdIta.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/C059-Bold.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/C059-Italic.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/C059-Roman.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/NimbusMonoPS-Bold.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/NimbusMonoPS-BoldItalic.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/NimbusMonoPS-Italic.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/NimbusMonoPS-Regular.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/NimbusSans-Bold.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/NimbusSans-BoldItalic.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/NimbusSans-Italic.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/NimbusSans-Regular.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/emmentaler-11.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/emmentaler-13.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/emmentaler-14.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/emmentaler-16.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/emmentaler-18.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/emmentaler-20.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/emmentaler-23.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/emmentaler-26.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/emmentaler-brace.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/texgyrecursor-bold.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/texgyrecursor-bolditalic.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/texgyrecursor-italic.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/texgyrecursor-regular.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/texgyreheros-bold.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/texgyreheros-bolditalic.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/texgyreheros-italic.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/texgyreheros-regular.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/texgyreschola-bold.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/texgyreschola-bolditalic.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/texgyreschola-italic.otf +0 -0
- data/share/lilypond/2.24.1/fonts/otf/texgyreschola-regular.otf +0 -0
- data/share/lilypond/2.24.1/fonts/source/common-modules-and-initialization.mf +26 -0
- data/share/lilypond/2.24.1/fonts/source/debugging-settings.mf +14 -0
- data/share/lilypond/2.24.1/fonts/source/declare-autometric-parameters.mf +9 -0
- data/share/lilypond/2.24.1/fonts/source/feta-accidentals.mf +58 -0
- data/share/lilypond/2.24.1/fonts/source/feta-accordion.mf +575 -0
- data/share/lilypond/2.24.1/fonts/source/feta-alphabet-generic.mf +16 -0
- data/share/lilypond/2.24.1/fonts/source/feta-alphabet11.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-alphabet13.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-alphabet14.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-alphabet16.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-alphabet18.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-alphabet20.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-alphabet23.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-alphabet26.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-arrow.mf +114 -0
- data/share/lilypond/2.24.1/fonts/source/feta-arrowheads.mf +171 -0
- data/share/lilypond/2.24.1/fonts/source/feta-autometric.mf +303 -0
- data/share/lilypond/2.24.1/fonts/source/feta-braces-a.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-braces-b.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-braces-c.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-braces-d.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-braces-e.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-braces-f.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-braces-g.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-braces-generic.mf +47 -0
- data/share/lilypond/2.24.1/fonts/source/feta-braces-h.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-braces-i.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-braces.mf +125 -0
- data/share/lilypond/2.24.1/fonts/source/feta-brackettips.mf +100 -0
- data/share/lilypond/2.24.1/fonts/source/feta-clefs.mf +963 -0
- data/share/lilypond/2.24.1/fonts/source/feta-dots.mf +37 -0
- data/share/lilypond/2.24.1/fonts/source/feta-dynamics.mf +891 -0
- data/share/lilypond/2.24.1/fonts/source/feta-flags-generic.mf +17 -0
- data/share/lilypond/2.24.1/fonts/source/feta-flags.mf +926 -0
- data/share/lilypond/2.24.1/fonts/source/feta-flags11.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-flags13.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-flags14.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-flags16.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-flags18.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-flags20.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-flags23.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-flags26.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-flats.mf +668 -0
- data/share/lilypond/2.24.1/fonts/source/feta-macros.mf +506 -0
- data/share/lilypond/2.24.1/fonts/source/feta-naturals.mf +223 -0
- data/share/lilypond/2.24.1/fonts/source/feta-noteheads-generic.mf +17 -0
- data/share/lilypond/2.24.1/fonts/source/feta-noteheads.mf +2642 -0
- data/share/lilypond/2.24.1/fonts/source/feta-noteheads11.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-noteheads13.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-noteheads14.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-noteheads16.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-noteheads18.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-noteheads20.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-noteheads23.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-noteheads26.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta-numbers.mf +1677 -0
- data/share/lilypond/2.24.1/fonts/source/feta-other-generic.mf +27 -0
- data/share/lilypond/2.24.1/fonts/source/feta-params.mf +323 -0
- data/share/lilypond/2.24.1/fonts/source/feta-parenthesis.mf +63 -0
- data/share/lilypond/2.24.1/fonts/source/feta-pedals.mf +355 -0
- data/share/lilypond/2.24.1/fonts/source/feta-rests.mf +890 -0
- data/share/lilypond/2.24.1/fonts/source/feta-scripts.mf +2206 -0
- data/share/lilypond/2.24.1/fonts/source/feta-sharps.mf +524 -0
- data/share/lilypond/2.24.1/fonts/source/feta-sori-koron.mf +325 -0
- data/share/lilypond/2.24.1/fonts/source/feta-ties.mf +72 -0
- data/share/lilypond/2.24.1/fonts/source/feta-timesignatures.mf +119 -0
- data/share/lilypond/2.24.1/fonts/source/feta-trills.mf +321 -0
- data/share/lilypond/2.24.1/fonts/source/feta11.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta13.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta14.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta16.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta18.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta20.mf +7 -0
- data/share/lilypond/2.24.1/fonts/source/feta23.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/feta26.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-accidentals.mf +483 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-clefs.mf +1636 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-custodes.mf +503 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-dots.mf +62 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-flags.mf +319 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-macros.mf +225 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads-generic.mf +16 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads.mf +2191 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads11.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads13.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads14.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads16.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads18.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads20.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads23.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-noteheads26.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-other-generic.mf +24 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-rests.mf +428 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-scripts.mf +284 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan-timesignatures.mf +402 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan11.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan13.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan14.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan16.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan18.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan20.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan23.mf +6 -0
- data/share/lilypond/2.24.1/fonts/source/parmesan26.mf +6 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-11.svg +2525 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-11.woff +0 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-13.svg +2530 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-13.woff +0 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-14.svg +2526 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-14.woff +0 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-16.svg +2523 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-16.woff +0 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-18.svg +2519 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-18.woff +0 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-20.svg +2512 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-20.woff +0 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-23.svg +2506 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-23.woff +0 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-26.svg +2510 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-26.woff +0 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-brace.svg +1757 -0
- data/share/lilypond/2.24.1/fonts/svg/emmentaler-brace.woff +0 -0
- data/share/lilypond/2.24.1/ly/Welcome_to_LilyPond.ly +45 -0
- data/share/lilypond/2.24.1/ly/arabic.ly +185 -0
- data/share/lilypond/2.24.1/ly/articulate.ly +1013 -0
- data/share/lilypond/2.24.1/ly/bagpipe.ly +368 -0
- data/share/lilypond/2.24.1/ly/base-tkit.ly +135 -0
- data/share/lilypond/2.24.1/ly/catalan.ly +23 -0
- data/share/lilypond/2.24.1/ly/chord-modifiers-init.ly +63 -0
- data/share/lilypond/2.24.1/ly/chord-repetition-init.ly +60 -0
- data/share/lilypond/2.24.1/ly/context-mods-init.ly +119 -0
- data/share/lilypond/2.24.1/ly/declarations-init.ly +167 -0
- data/share/lilypond/2.24.1/ly/deutsch.ly +23 -0
- data/share/lilypond/2.24.1/ly/drumpitch-init.ly +366 -0
- data/share/lilypond/2.24.1/ly/dynamic-scripts-init.ly +54 -0
- data/share/lilypond/2.24.1/ly/english.ly +23 -0
- data/share/lilypond/2.24.1/ly/engraver-init.ly +1619 -0
- data/share/lilypond/2.24.1/ly/espanol.ly +23 -0
- data/share/lilypond/2.24.1/ly/event-listener.ly +241 -0
- data/share/lilypond/2.24.1/ly/festival.ly +38 -0
- data/share/lilypond/2.24.1/ly/generate-documentation.ly +7 -0
- data/share/lilypond/2.24.1/ly/grace-init.ly +56 -0
- data/share/lilypond/2.24.1/ly/graphviz-init.ly +174 -0
- data/share/lilypond/2.24.1/ly/gregorian.ly +268 -0
- data/share/lilypond/2.24.1/ly/guile-debugger.ly +55 -0
- data/share/lilypond/2.24.1/ly/hel-arabic.ly +307 -0
- data/share/lilypond/2.24.1/ly/init.ly +96 -0
- data/share/lilypond/2.24.1/ly/italiano.ly +23 -0
- data/share/lilypond/2.24.1/ly/lilypond-book-preamble.ly +47 -0
- data/share/lilypond/2.24.1/ly/lyrics-tkit.ly +68 -0
- data/share/lilypond/2.24.1/ly/makam.ly +166 -0
- data/share/lilypond/2.24.1/ly/midi-init.ly +59 -0
- data/share/lilypond/2.24.1/ly/music-functions-init.ly +2254 -0
- data/share/lilypond/2.24.1/ly/nederlands.ly +23 -0
- data/share/lilypond/2.24.1/ly/norsk.ly +23 -0
- data/share/lilypond/2.24.1/ly/paper-defaults-init.ly +188 -0
- data/share/lilypond/2.24.1/ly/performer-init.ly +398 -0
- data/share/lilypond/2.24.1/ly/persian.ly +335 -0
- data/share/lilypond/2.24.1/ly/piano-tkit.ly +61 -0
- data/share/lilypond/2.24.1/ly/portugues.ly +23 -0
- data/share/lilypond/2.24.1/ly/predefined-fretboards-init.ly +78 -0
- data/share/lilypond/2.24.1/ly/predefined-guitar-fretboards.ly +506 -0
- data/share/lilypond/2.24.1/ly/predefined-guitar-ninth-fretboards.ly +75 -0
- data/share/lilypond/2.24.1/ly/predefined-mandolin-fretboards.ly +876 -0
- data/share/lilypond/2.24.1/ly/predefined-ukulele-fretboards.ly +1285 -0
- data/share/lilypond/2.24.1/ly/property-init.ly +858 -0
- data/share/lilypond/2.24.1/ly/satb.ly +214 -0
- data/share/lilypond/2.24.1/ly/scale-definitions-init.ly +117 -0
- data/share/lilypond/2.24.1/ly/scheme-sandbox.ly +39 -0
- data/share/lilypond/2.24.1/ly/script-init.ly +94 -0
- data/share/lilypond/2.24.1/ly/spanners-init.ly +146 -0
- data/share/lilypond/2.24.1/ly/ssaattbb.ly +335 -0
- data/share/lilypond/2.24.1/ly/staff-tkit.ly +182 -0
- data/share/lilypond/2.24.1/ly/string-tunings-init.ly +94 -0
- data/share/lilypond/2.24.1/ly/suomi.ly +23 -0
- data/share/lilypond/2.24.1/ly/svenska.ly +23 -0
- data/share/lilypond/2.24.1/ly/swing.ly +362 -0
- data/share/lilypond/2.24.1/ly/text-replacements.ly +150 -0
- data/share/lilypond/2.24.1/ly/titling-init.ly +150 -0
- data/share/lilypond/2.24.1/ly/toc-init.ly +182 -0
- data/share/lilypond/2.24.1/ly/turkish-makam.ly +609 -0
- data/share/lilypond/2.24.1/ly/vlaams.ly +23 -0
- data/share/lilypond/2.24.1/ly/vocal-tkit.ly +103 -0
- data/share/lilypond/2.24.1/ly/voice-tkit.ly +34 -0
- data/share/lilypond/2.24.1/ps/encodingdefs.ps +2611 -0
- data/share/lilypond/2.24.1/ps/lilyponddefs.ps +49 -0
- data/share/lilypond/2.24.1/ps/music-drawing-routines.ps +329 -0
- data/share/lilypond/2.24.1/python/__pycache__/book_base.cpython-310.pyc +0 -0
- data/share/lilypond/2.24.1/python/__pycache__/book_docbook.cpython-310.pyc +0 -0
- data/share/lilypond/2.24.1/python/__pycache__/book_html.cpython-310.pyc +0 -0
- data/share/lilypond/2.24.1/python/__pycache__/book_latex.cpython-310.pyc +0 -0
- data/share/lilypond/2.24.1/python/__pycache__/book_snippets.cpython-310.pyc +0 -0
- data/share/lilypond/2.24.1/python/__pycache__/book_texinfo.cpython-310.pyc +0 -0
- data/share/lilypond/2.24.1/python/__pycache__/convertrules.cpython-310.pyc +0 -0
- data/share/lilypond/2.24.1/python/__pycache__/langdefs.cpython-310.pyc +0 -0
- data/share/lilypond/2.24.1/python/__pycache__/lilylib.cpython-310.pyc +0 -0
- data/share/lilypond/2.24.1/python/__pycache__/midi.cpython-310.pyc +0 -0
- data/share/lilypond/2.24.1/python/__pycache__/musicexp.cpython-310.pyc +0 -0
- data/share/lilypond/2.24.1/python/__pycache__/musicxml.cpython-310.pyc +0 -0
- data/share/lilypond/2.24.1/python/__pycache__/musicxml2ly_conversion.cpython-310.pyc +0 -0
- data/share/lilypond/2.24.1/python/__pycache__/utilities.cpython-310.pyc +0 -0
- data/share/lilypond/2.24.1/python/book_base.py +331 -0
- data/share/lilypond/2.24.1/python/book_docbook.py +154 -0
- data/share/lilypond/2.24.1/python/book_html.py +178 -0
- data/share/lilypond/2.24.1/python/book_latex.py +373 -0
- data/share/lilypond/2.24.1/python/book_snippets.py +1052 -0
- data/share/lilypond/2.24.1/python/book_texinfo.py +437 -0
- data/share/lilypond/2.24.1/python/convertrules.py +4764 -0
- data/share/lilypond/2.24.1/python/langdefs.py +131 -0
- data/share/lilypond/2.24.1/python/lilylib.py +141 -0
- data/share/lilypond/2.24.1/python/midi.py +212 -0
- data/share/lilypond/2.24.1/python/musicexp.py +2781 -0
- data/share/lilypond/2.24.1/python/musicxml.py +1905 -0
- data/share/lilypond/2.24.1/python/musicxml2ly_conversion.py +80 -0
- data/share/lilypond/2.24.1/python/utilities.py +280 -0
- data/share/lilypond/2.24.1/scm/lily/accreg.scm +579 -0
- data/share/lilypond/2.24.1/scm/lily/auto-beam.scm +163 -0
- data/share/lilypond/2.24.1/scm/lily/autochange.scm +100 -0
- data/share/lilypond/2.24.1/scm/lily/backend-library.scm +593 -0
- data/share/lilypond/2.24.1/scm/lily/bar-line.scm +1281 -0
- data/share/lilypond/2.24.1/scm/lily/breath.scm +74 -0
- data/share/lilypond/2.24.1/scm/lily/c++.scm +174 -0
- data/share/lilypond/2.24.1/scm/lily/chord-entry.scm +278 -0
- data/share/lilypond/2.24.1/scm/lily/chord-ignatzek-names.scm +304 -0
- data/share/lilypond/2.24.1/scm/lily/chord-name.scm +217 -0
- data/share/lilypond/2.24.1/scm/lily/clip-region.scm +87 -0
- data/share/lilypond/2.24.1/scm/lily/color.scm +757 -0
- data/share/lilypond/2.24.1/scm/lily/curried-definitions.scm +68 -0
- data/share/lilypond/2.24.1/scm/lily/define-context-properties.scm +939 -0
- data/share/lilypond/2.24.1/scm/lily/define-event-classes.scm +142 -0
- data/share/lilypond/2.24.1/scm/lily/define-grob-interfaces.scm +640 -0
- data/share/lilypond/2.24.1/scm/lily/define-grob-properties.scm +1647 -0
- data/share/lilypond/2.24.1/scm/lily/define-grobs.scm +4027 -0
- data/share/lilypond/2.24.1/scm/lily/define-markup-commands.scm +5737 -0
- data/share/lilypond/2.24.1/scm/lily/define-music-callbacks.scm +257 -0
- data/share/lilypond/2.24.1/scm/lily/define-music-display-methods.scm +1350 -0
- data/share/lilypond/2.24.1/scm/lily/define-music-properties.scm +242 -0
- data/share/lilypond/2.24.1/scm/lily/define-music-types.scm +983 -0
- data/share/lilypond/2.24.1/scm/lily/define-note-names.scm +1421 -0
- data/share/lilypond/2.24.1/scm/lily/define-stencil-commands.scm +71 -0
- data/share/lilypond/2.24.1/scm/lily/define-woodwind-diagrams.scm +1215 -0
- data/share/lilypond/2.24.1/scm/lily/display-lily.scm +315 -0
- data/share/lilypond/2.24.1/scm/lily/display-woodwind-diagrams.scm +1985 -0
- data/share/lilypond/2.24.1/scm/lily/document-backend.scm +307 -0
- data/share/lilypond/2.24.1/scm/lily/document-context-mods.scm +98 -0
- data/share/lilypond/2.24.1/scm/lily/document-functions.scm +169 -0
- data/share/lilypond/2.24.1/scm/lily/document-identifiers.scm +76 -0
- data/share/lilypond/2.24.1/scm/lily/document-markup.scm +158 -0
- data/share/lilypond/2.24.1/scm/lily/document-music.scm +146 -0
- data/share/lilypond/2.24.1/scm/lily/document-outside-staff-priorities.scm +40 -0
- data/share/lilypond/2.24.1/scm/lily/document-paper-sizes.scm +71 -0
- data/share/lilypond/2.24.1/scm/lily/document-translation.scm +318 -0
- data/share/lilypond/2.24.1/scm/lily/document-type-predicates.scm +85 -0
- data/share/lilypond/2.24.1/scm/lily/documentation-generate.scm +259 -0
- data/share/lilypond/2.24.1/scm/lily/documentation-lib.scm +207 -0
- data/share/lilypond/2.24.1/scm/lily/file-cache.scm +28 -0
- data/share/lilypond/2.24.1/scm/lily/flag-styles.scm +249 -0
- data/share/lilypond/2.24.1/scm/lily/font-encodings.scm +1242 -0
- data/share/lilypond/2.24.1/scm/lily/font.scm +303 -0
- data/share/lilypond/2.24.1/scm/lily/framework-cairo.scm +26 -0
- data/share/lilypond/2.24.1/scm/lily/framework-ps.scm +896 -0
- data/share/lilypond/2.24.1/scm/lily/framework-svg.scm +172 -0
- data/share/lilypond/2.24.1/scm/lily/fret-diagrams.scm +1261 -0
- data/share/lilypond/2.24.1/scm/lily/graphviz.scm +78 -0
- data/share/lilypond/2.24.1/scm/lily/guile-debugger.scm +90 -0
- data/share/lilypond/2.24.1/scm/lily/harp-pedals.scm +172 -0
- data/share/lilypond/2.24.1/scm/lily/hyphenate-internal-words.scm +51 -0
- data/share/lilypond/2.24.1/scm/lily/layout-beam.scm +73 -0
- data/share/lilypond/2.24.1/scm/lily/layout-slur.scm +45 -0
- data/share/lilypond/2.24.1/scm/lily/lily-library.scm +1446 -0
- data/share/lilypond/2.24.1/scm/lily/lily-sort.scm +116 -0
- data/share/lilypond/2.24.1/scm/lily/lily.scm +929 -0
- data/share/lilypond/2.24.1/scm/lily/ly-syntax-constructors.scm +374 -0
- data/share/lilypond/2.24.1/scm/lily/markup-macros.scm +493 -0
- data/share/lilypond/2.24.1/scm/lily/markup.scm +126 -0
- data/share/lilypond/2.24.1/scm/lily/midi.scm +258 -0
- data/share/lilypond/2.24.1/scm/lily/modal-transforms.scm +337 -0
- data/share/lilypond/2.24.1/scm/lily/music-functions.scm +2878 -0
- data/share/lilypond/2.24.1/scm/lily/output-lib.scm +3377 -0
- data/share/lilypond/2.24.1/scm/lily/output-ps.scm +335 -0
- data/share/lilypond/2.24.1/scm/lily/output-svg.scm +684 -0
- data/share/lilypond/2.24.1/scm/lily/page.scm +321 -0
- data/share/lilypond/2.24.1/scm/lily/paper-system.scm +271 -0
- data/share/lilypond/2.24.1/scm/lily/paper.scm +376 -0
- data/share/lilypond/2.24.1/scm/lily/parser-clef.scm +205 -0
- data/share/lilypond/2.24.1/scm/lily/parser-ly-from-scheme.scm +170 -0
- data/share/lilypond/2.24.1/scm/lily/part-combiner.scm +998 -0
- data/share/lilypond/2.24.1/scm/lily/predefined-fretboards.scm +54 -0
- data/share/lilypond/2.24.1/scm/lily/ps-to-png.scm +182 -0
- data/share/lilypond/2.24.1/scm/lily/scheme-engravers.scm +1813 -0
- data/share/lilypond/2.24.1/scm/lily/scheme-performers.scm +126 -0
- data/share/lilypond/2.24.1/scm/lily/script.scm +416 -0
- data/share/lilypond/2.24.1/scm/lily/skyline.scm +25 -0
- data/share/lilypond/2.24.1/scm/lily/song-util.scm +191 -0
- data/share/lilypond/2.24.1/scm/lily/song.scm +853 -0
- data/share/lilypond/2.24.1/scm/lily/stencil.scm +998 -0
- data/share/lilypond/2.24.1/scm/lily/tablature.scm +392 -0
- data/share/lilypond/2.24.1/scm/lily/time-signature-settings.scm +473 -0
- data/share/lilypond/2.24.1/scm/lily/time-signature.scm +35 -0
- data/share/lilypond/2.24.1/scm/lily/titling.scm +99 -0
- data/share/lilypond/2.24.1/scm/lily/to-xml.scm +254 -0
- data/share/lilypond/2.24.1/scm/lily/translation-functions.scm +1169 -0
- data/share/lilypond/2.24.1/vim/compiler/lilypond.vim +36 -0
- data/share/lilypond/2.24.1/vim/ftdetect/lilypond.vim +4 -0
- data/share/lilypond/2.24.1/vim/ftplugin/lilypond.vim +91 -0
- data/share/lilypond/2.24.1/vim/indent/lilypond.vim +79 -0
- data/share/lilypond/2.24.1/vim/syntax/lilypond-words +1408 -0
- data/share/lilypond/2.24.1/vim/syntax/lilypond-words.vim +3 -0
- data/share/lilypond/2.24.1/vim/syntax/lilypond.vim +104 -0
- data/share/locale/ca/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/cs/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/da/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/de/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/el/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/eo/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/es/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/fi/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/fr/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/it/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/ja/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/nl/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/ru/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/sv/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/tr/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/uk/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/vi/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/zh_CN/LC_MESSAGES/lilypond.mo +0 -0
- data/share/locale/zh_TW/LC_MESSAGES/lilypond.mo +0 -0
- metadata +1108 -1
|
@@ -0,0 +1,998 @@
|
|
|
1
|
+
;;;; This file is part of LilyPond, the GNU music typesetter.
|
|
2
|
+
;;;;
|
|
3
|
+
;;;; Copyright (C) 2004--2022 Han-Wen Nienhuys <hanwen@xs4all.nl>
|
|
4
|
+
;;;;
|
|
5
|
+
;;;; LilyPond is free software: you can redistribute it and/or modify
|
|
6
|
+
;;;; it under the terms of the GNU General Public License as published by
|
|
7
|
+
;;;; the Free Software Foundation, either version 3 of the License, or
|
|
8
|
+
;;;; (at your option) any later version.
|
|
9
|
+
;;;;
|
|
10
|
+
;;;; LilyPond is distributed in the hope that it will be useful,
|
|
11
|
+
;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
;;;; GNU General Public License for more details.
|
|
14
|
+
;;;;
|
|
15
|
+
;;;; You should have received a copy of the GNU General Public License
|
|
16
|
+
;;;; along with LilyPond. If not, see <http://www.gnu.org/licenses/>.
|
|
17
|
+
|
|
18
|
+
;; todo: figure out how to make module,
|
|
19
|
+
;; without breaking nested ly scopes
|
|
20
|
+
|
|
21
|
+
(define-class <Voice-state> ()
|
|
22
|
+
(event-list #:init-value '() #:accessor events #:init-keyword #:events)
|
|
23
|
+
(when-moment #:accessor moment #:init-keyword #:moment)
|
|
24
|
+
(tuning #:accessor tuning #:init-keyword #:tuning)
|
|
25
|
+
(split-index #:accessor split-index)
|
|
26
|
+
(vector-index)
|
|
27
|
+
(state-vector)
|
|
28
|
+
;;;
|
|
29
|
+
;; spanner-state is an alist
|
|
30
|
+
;; of (SYMBOL . RESULT-INDEX), which indicates where
|
|
31
|
+
;; said spanner was started.
|
|
32
|
+
(spanner-state #:init-value '() #:accessor span-state))
|
|
33
|
+
|
|
34
|
+
(define-method (write (x <Voice-state> ) file)
|
|
35
|
+
(display (moment x) file)
|
|
36
|
+
(display " evs = " file)
|
|
37
|
+
(display (events x) file)
|
|
38
|
+
(display " active = " file)
|
|
39
|
+
(display (span-state x) file)
|
|
40
|
+
(display "\n" file))
|
|
41
|
+
|
|
42
|
+
;; Return the duration of the longest event in the Voice-state.
|
|
43
|
+
(define-method (duration (vs <Voice-state>))
|
|
44
|
+
(define (duration-max event d1)
|
|
45
|
+
(let ((d2 (ly:event-property event 'duration #f)))
|
|
46
|
+
(if d2
|
|
47
|
+
(if (ly:duration<? d1 d2) d2 d1)
|
|
48
|
+
d1)))
|
|
49
|
+
|
|
50
|
+
(fold duration-max ZERO-DURATION (events vs)))
|
|
51
|
+
|
|
52
|
+
(define-method (note-events (vs <Voice-state>))
|
|
53
|
+
(define (f? x)
|
|
54
|
+
(ly:in-event-class? x 'note-event))
|
|
55
|
+
(filter f? (events vs)))
|
|
56
|
+
|
|
57
|
+
;; Return a list of note events which is sorted and stripped of
|
|
58
|
+
;; properties that we do not want to prevent combining parts.
|
|
59
|
+
(define-method (comparable-note-events (vs <Voice-state>))
|
|
60
|
+
(define (note<? note1 note2)
|
|
61
|
+
(let ((p1 (ly:event-property note1 'pitch))
|
|
62
|
+
(p2 (ly:event-property note2 'pitch)))
|
|
63
|
+
(cond ((ly:pitch<? p1 p2) #t)
|
|
64
|
+
((ly:pitch<? p2 p1) #f)
|
|
65
|
+
(else (ly:duration<? (ly:event-property note1 'duration)
|
|
66
|
+
(ly:event-property note2 'duration))))))
|
|
67
|
+
;; TODO we probably should compare articulations too
|
|
68
|
+
(sort (map (lambda (x)
|
|
69
|
+
(ly:make-stream-event
|
|
70
|
+
(ly:make-event-class 'note-event)
|
|
71
|
+
(list (cons 'duration (ly:event-property x 'duration))
|
|
72
|
+
(cons 'pitch (ly:event-property x 'pitch)))))
|
|
73
|
+
(note-events vs))
|
|
74
|
+
note<?))
|
|
75
|
+
|
|
76
|
+
(define-method (silence-events (vs <Voice-state>))
|
|
77
|
+
(let ((result (filter (lambda(x)
|
|
78
|
+
(or (ly:in-event-class? x 'rest-event)
|
|
79
|
+
(ly:in-event-class? x 'multi-measure-rest-event)))
|
|
80
|
+
(events vs))))
|
|
81
|
+
;; There may be skips in the same part with rests for various
|
|
82
|
+
;; reasons. Regard the skips only if there are no rests.
|
|
83
|
+
(if (not (pair? result))
|
|
84
|
+
(set! result (filter (lambda(x) (ly:in-event-class? x 'skip-event))
|
|
85
|
+
(events vs))))
|
|
86
|
+
result))
|
|
87
|
+
|
|
88
|
+
(define-method (any-mmrest-events (vs <Voice-state>))
|
|
89
|
+
(define (f? x)
|
|
90
|
+
(ly:in-event-class? x 'multi-measure-rest-event))
|
|
91
|
+
(any f? (events vs)))
|
|
92
|
+
|
|
93
|
+
(define-method (previous-voice-state (vs <Voice-state>))
|
|
94
|
+
(let ((i (slot-ref vs 'vector-index))
|
|
95
|
+
(v (slot-ref vs 'state-vector)))
|
|
96
|
+
(if (< 0 i)
|
|
97
|
+
(vector-ref v (1- i))
|
|
98
|
+
#f)))
|
|
99
|
+
|
|
100
|
+
;; true if the part has ended
|
|
101
|
+
(define-method (done? (vs <Voice-state>))
|
|
102
|
+
(let ((i (slot-ref vs 'vector-index))
|
|
103
|
+
(v (slot-ref vs 'state-vector)))
|
|
104
|
+
;; the last entry represents the end of the part
|
|
105
|
+
(= (1+ i) (vector-length v))))
|
|
106
|
+
|
|
107
|
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
108
|
+
|
|
109
|
+
(define-class <Split-state> ()
|
|
110
|
+
;; The automatically determined split configuration
|
|
111
|
+
(configuration #:init-value '() #:accessor configuration)
|
|
112
|
+
;; Allow overriding split configuration, takes precedence over configuration
|
|
113
|
+
(forced-configuration #:init-value #f #:accessor forced-configuration)
|
|
114
|
+
(when-moment #:accessor moment #:init-keyword #:moment)
|
|
115
|
+
;; voice-states are states starting with the Split-state or later
|
|
116
|
+
;;
|
|
117
|
+
(is #:init-keyword #:voice-states #:accessor voice-states)
|
|
118
|
+
(synced #:init-keyword #:synced #:init-value #f #:getter synced?))
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
(define-method (write (x <Split-state> ) f)
|
|
122
|
+
(display (moment x) f)
|
|
123
|
+
(display " = " f)
|
|
124
|
+
(display (configuration x) f)
|
|
125
|
+
(if (synced? x)
|
|
126
|
+
(display " synced "))
|
|
127
|
+
(display "\n" f))
|
|
128
|
+
|
|
129
|
+
(define-method (current-or-previous-voice-states (ss <Split-state>))
|
|
130
|
+
"Return voice states meeting the following conditions. For a voice
|
|
131
|
+
in sync, return the current voice state. For a voice out of sync,
|
|
132
|
+
return the previous voice state."
|
|
133
|
+
(let* ((vss (voice-states ss))
|
|
134
|
+
(vs1 (car vss))
|
|
135
|
+
(vs2 (cdr vss)))
|
|
136
|
+
(if (and vs1 (not (equal? (moment vs1) (moment ss))))
|
|
137
|
+
(set! vs1 (previous-voice-state vs1)))
|
|
138
|
+
(if (and vs2 (not (equal? (moment vs2) (moment ss))))
|
|
139
|
+
(set! vs2 (previous-voice-state vs2)))
|
|
140
|
+
(cons vs1 vs2)))
|
|
141
|
+
|
|
142
|
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
(define (previous-span-state vs)
|
|
146
|
+
(let ((p (previous-voice-state vs)))
|
|
147
|
+
(if p (span-state p) '())))
|
|
148
|
+
|
|
149
|
+
(define (make-voice-states evl)
|
|
150
|
+
(let* ((states (map (lambda (v)
|
|
151
|
+
(make <Voice-state>
|
|
152
|
+
#:moment (caar v)
|
|
153
|
+
#:tuning (cdar v)
|
|
154
|
+
#:events (map car (cdr v))))
|
|
155
|
+
(reverse evl))))
|
|
156
|
+
|
|
157
|
+
;; TODO: Add an entry at +inf.0 and see if it allows us to remove
|
|
158
|
+
;; the many instances of conditional code handling the case that
|
|
159
|
+
;; there is no voice state at a given moment.
|
|
160
|
+
|
|
161
|
+
(let ((vec (list->vector (reverse! states))))
|
|
162
|
+
(do ((i 0 (1+ i)))
|
|
163
|
+
((= i (vector-length vec)) vec)
|
|
164
|
+
(slot-set! (vector-ref vec i) 'vector-index i)
|
|
165
|
+
(slot-set! (vector-ref vec i) 'state-vector vec)))))
|
|
166
|
+
|
|
167
|
+
(define (make-split-state vs1 vs2)
|
|
168
|
+
"Merge lists VS1 and VS2, containing Voice-state objects into vector
|
|
169
|
+
of Split-state objects, crosslinking the Split-state vector and
|
|
170
|
+
Voice-state objects
|
|
171
|
+
"
|
|
172
|
+
(define (helper ss-idx ss-list idx1 idx2)
|
|
173
|
+
(let* ((state1 (if (< idx1 (vector-length vs1)) (vector-ref vs1 idx1) #f))
|
|
174
|
+
(state2 (if (< idx2 (vector-length vs2)) (vector-ref vs2 idx2) #f))
|
|
175
|
+
(min (cond ((and state1 state2) (moment-min (moment state1) (moment state2)))
|
|
176
|
+
(state1 (moment state1))
|
|
177
|
+
(state2 (moment state2))
|
|
178
|
+
(else #f)))
|
|
179
|
+
(inc1 (if (and state1 (equal? min (moment state1))) 1 0))
|
|
180
|
+
(inc2 (if (and state2 (equal? min (moment state2))) 1 0))
|
|
181
|
+
(ss-object (if min
|
|
182
|
+
(make <Split-state>
|
|
183
|
+
#:moment min
|
|
184
|
+
#:voice-states (cons state1 state2)
|
|
185
|
+
#:synced (= inc1 inc2))
|
|
186
|
+
#f)))
|
|
187
|
+
(if state1
|
|
188
|
+
(set! (split-index state1) ss-idx))
|
|
189
|
+
(if state2
|
|
190
|
+
(set! (split-index state2) ss-idx))
|
|
191
|
+
(if min
|
|
192
|
+
(helper (1+ ss-idx)
|
|
193
|
+
(cons ss-object ss-list)
|
|
194
|
+
(+ idx1 inc1)
|
|
195
|
+
(+ idx2 inc2))
|
|
196
|
+
ss-list)))
|
|
197
|
+
(list->vector (reverse! (helper 0 '() 0 0) '())))
|
|
198
|
+
|
|
199
|
+
(define (analyse-spanner-states voice-state-vec)
|
|
200
|
+
|
|
201
|
+
(define (helper index active)
|
|
202
|
+
"Analyse EVS at INDEX, given state ACTIVE."
|
|
203
|
+
|
|
204
|
+
(define (analyse-tie-start active ev)
|
|
205
|
+
(if (ly:in-event-class? ev 'tie-event)
|
|
206
|
+
(acons 'tie (split-index (vector-ref voice-state-vec index))
|
|
207
|
+
active)
|
|
208
|
+
active))
|
|
209
|
+
|
|
210
|
+
(define (analyse-tie-end active ev)
|
|
211
|
+
(if (ly:in-event-class? ev 'note-event)
|
|
212
|
+
(assoc-remove! active 'tie)
|
|
213
|
+
active))
|
|
214
|
+
|
|
215
|
+
(define (analyse-absdyn-end active ev)
|
|
216
|
+
(if (or (ly:in-event-class? ev 'absolute-dynamic-event)
|
|
217
|
+
(and (ly:in-event-class? ev 'span-dynamic-event)
|
|
218
|
+
(equal? STOP (ly:event-property ev 'span-direction))))
|
|
219
|
+
(assoc-remove! (assoc-remove! active 'cresc) 'decr)
|
|
220
|
+
active))
|
|
221
|
+
|
|
222
|
+
(define (active<? a b)
|
|
223
|
+
(cond ((symbol<? (car a) (car b)) #t)
|
|
224
|
+
((symbol<? (car b) (car a)) #f)
|
|
225
|
+
(else (< (cdr a) (cdr b)))))
|
|
226
|
+
|
|
227
|
+
(define (analyse-span-event active ev)
|
|
228
|
+
(let* ((name (car (ly:event-property ev 'class)))
|
|
229
|
+
(key (cond ((equal? name 'slur-event) 'slur)
|
|
230
|
+
((equal? name 'phrasing-slur-event) 'tie)
|
|
231
|
+
((equal? name 'beam-event) 'beam)
|
|
232
|
+
((equal? name 'crescendo-event) 'cresc)
|
|
233
|
+
((equal? name 'decrescendo-event) 'decr)
|
|
234
|
+
(else #f)))
|
|
235
|
+
(sp (ly:event-property ev 'span-direction)))
|
|
236
|
+
(if (and (symbol? key) (ly:dir? sp))
|
|
237
|
+
(if (= sp STOP)
|
|
238
|
+
(assoc-remove! active key)
|
|
239
|
+
(acons key
|
|
240
|
+
(split-index (vector-ref voice-state-vec index))
|
|
241
|
+
active))
|
|
242
|
+
active)))
|
|
243
|
+
|
|
244
|
+
(define (analyse-events active evs)
|
|
245
|
+
"Run all analyzers on ACTIVE and EVS"
|
|
246
|
+
(define (run-analyzer analyzer active evs)
|
|
247
|
+
(if (pair? evs)
|
|
248
|
+
(run-analyzer analyzer (analyzer active (car evs)) (cdr evs))
|
|
249
|
+
active))
|
|
250
|
+
(define (run-analyzers analyzers active evs)
|
|
251
|
+
(if (pair? analyzers)
|
|
252
|
+
(run-analyzers (cdr analyzers)
|
|
253
|
+
(run-analyzer (car analyzers) active evs)
|
|
254
|
+
evs)
|
|
255
|
+
active))
|
|
256
|
+
(sort ;; todo: use fold or somesuch.
|
|
257
|
+
(run-analyzers (list analyse-absdyn-end analyse-span-event
|
|
258
|
+
;; note: tie-start/span comes after tie-end/absdyn.
|
|
259
|
+
analyse-tie-end analyse-tie-start)
|
|
260
|
+
active evs)
|
|
261
|
+
active<?))
|
|
262
|
+
|
|
263
|
+
;; must copy, since we use assoc-remove!
|
|
264
|
+
(if (< index (vector-length voice-state-vec))
|
|
265
|
+
(begin
|
|
266
|
+
(set! active (analyse-events active (events (vector-ref voice-state-vec index))))
|
|
267
|
+
(set! (span-state (vector-ref voice-state-vec index))
|
|
268
|
+
(list-copy active))
|
|
269
|
+
(helper (1+ index) active))))
|
|
270
|
+
|
|
271
|
+
(helper 0 '()))
|
|
272
|
+
|
|
273
|
+
(define recording-group-functions
|
|
274
|
+
;;Selected parts from @var{toplevel-music-functions} not requiring @code{parser}.
|
|
275
|
+
(list
|
|
276
|
+
(lambda (music) (expand-repeat-chords! '(rhythmic-event) music))
|
|
277
|
+
expand-repeat-notes!))
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
281
|
+
(define-public (recording-group-emulate music odef)
|
|
282
|
+
"Interpret @var{music} according to @var{odef}, but store all events
|
|
283
|
+
in a chronological list, similar to the @code{Recording_group_engraver} in
|
|
284
|
+
LilyPond version 2.8 and earlier."
|
|
285
|
+
(let*
|
|
286
|
+
((context-list '())
|
|
287
|
+
(now-mom (ly:make-moment 0 0))
|
|
288
|
+
(global (ly:make-global-context odef))
|
|
289
|
+
(mom-listener (lambda (tev) (set! now-mom (ly:event-property tev 'moment))))
|
|
290
|
+
(new-context-listener
|
|
291
|
+
(lambda (sev)
|
|
292
|
+
(let*
|
|
293
|
+
((child (ly:event-property sev 'context))
|
|
294
|
+
(this-moment-list (cons (ly:context-id child) '()))
|
|
295
|
+
(dummy (set! context-list (cons this-moment-list context-list)))
|
|
296
|
+
(acc '())
|
|
297
|
+
(accumulate-event-listener
|
|
298
|
+
(lambda (ev)
|
|
299
|
+
(set! acc (cons (cons ev #t) acc))))
|
|
300
|
+
(remove-context-listener
|
|
301
|
+
(lambda (ev)
|
|
302
|
+
"Add a final entry to record the end moment."
|
|
303
|
+
(let ((this-moment (cons (cons
|
|
304
|
+
now-mom
|
|
305
|
+
#f ; instrumentTransposition
|
|
306
|
+
)
|
|
307
|
+
'() ; events
|
|
308
|
+
)))
|
|
309
|
+
(set-cdr! this-moment-list
|
|
310
|
+
(cons this-moment (cdr this-moment-list))))))
|
|
311
|
+
(save-acc-listener
|
|
312
|
+
(lambda (tev)
|
|
313
|
+
(if (pair? acc)
|
|
314
|
+
(let ((this-moment
|
|
315
|
+
(cons (cons now-mom
|
|
316
|
+
(ly:context-property child 'instrumentTransposition))
|
|
317
|
+
;; The accumulate-event-listener above creates
|
|
318
|
+
;; the list of events in reverse order, so we
|
|
319
|
+
;; have to revert it to the original order again
|
|
320
|
+
(reverse acc))))
|
|
321
|
+
(set-cdr! this-moment-list
|
|
322
|
+
(cons this-moment (cdr this-moment-list)))
|
|
323
|
+
(set! acc '()))))))
|
|
324
|
+
(ly:add-listener accumulate-event-listener
|
|
325
|
+
(ly:context-event-source child) 'StreamEvent)
|
|
326
|
+
(ly:add-listener remove-context-listener
|
|
327
|
+
(ly:context-event-source child) 'RemoveContext)
|
|
328
|
+
(ly:add-listener save-acc-listener
|
|
329
|
+
(ly:context-event-source global) 'OneTimeStep)))))
|
|
330
|
+
(ly:add-listener new-context-listener
|
|
331
|
+
(ly:context-events-below global) 'AnnounceNewContext)
|
|
332
|
+
(ly:add-listener mom-listener (ly:context-event-source global) 'Prepare)
|
|
333
|
+
(ly:interpret-music-expression
|
|
334
|
+
(make-non-relative-music
|
|
335
|
+
(fold (lambda (x m) (x m)) music recording-group-functions))
|
|
336
|
+
global)
|
|
337
|
+
context-list))
|
|
338
|
+
|
|
339
|
+
(define-public (determine-split-list evl1 evl2 chord-range)
|
|
340
|
+
"Event lists @var{evl1} and @var{evl2} should be ascending.
|
|
341
|
+
@var{chord-range} is a pair of numbers @code{(min . max)} defining the distance
|
|
342
|
+
in steps between notes that may be combined into a chord or unison."
|
|
343
|
+
(let* ((pc-debug #f)
|
|
344
|
+
(voice-state-vec1 (make-voice-states evl1))
|
|
345
|
+
(voice-state-vec2 (make-voice-states evl2))
|
|
346
|
+
(result (make-split-state voice-state-vec1 voice-state-vec2))
|
|
347
|
+
(chord-min-diff (car chord-range))
|
|
348
|
+
(chord-max-diff (cdr chord-range)))
|
|
349
|
+
|
|
350
|
+
;; Go through all moments recursively and check if the events of that
|
|
351
|
+
;; moment contain a part-combine-force-event override. If so, store its
|
|
352
|
+
;; value in the forced-configuration field, which will override. The
|
|
353
|
+
;; previous configuration is used to determine non-terminated settings.
|
|
354
|
+
(define (analyse-forced-combine result-idx prev-res)
|
|
355
|
+
|
|
356
|
+
(define (get-forced-event x)
|
|
357
|
+
(cond
|
|
358
|
+
((and (ly:in-event-class? x 'SetProperty)
|
|
359
|
+
(eq? (ly:event-property x 'symbol) 'partCombineForced))
|
|
360
|
+
(cons (ly:event-property x 'value #f)
|
|
361
|
+
(ly:event-property x 'once #f)))
|
|
362
|
+
((and (ly:in-event-class? x 'UnsetProperty)
|
|
363
|
+
(eq? (ly:event-property x 'symbol) 'partCombineForced))
|
|
364
|
+
(cons #f (ly:event-property x 'once #f)))
|
|
365
|
+
(else #f)))
|
|
366
|
+
|
|
367
|
+
(define (part-combine-events vs)
|
|
368
|
+
(if (not vs)
|
|
369
|
+
'()
|
|
370
|
+
(filter-map get-forced-event (events vs))))
|
|
371
|
+
;; end part-combine-events
|
|
372
|
+
|
|
373
|
+
;; forced-result: Take the previous config and analyse whether
|
|
374
|
+
;; any change happened.... Return new once and permanent config
|
|
375
|
+
(define (forced-result evt state)
|
|
376
|
+
;; sanity check, evt should always be (new-state . once)
|
|
377
|
+
(if (not (and (pair? evt) (pair? state)))
|
|
378
|
+
state
|
|
379
|
+
(if (cdr evt)
|
|
380
|
+
;; Once-event, leave permanent state unchanged
|
|
381
|
+
(cons (car evt) (cdr state))
|
|
382
|
+
;; permanent change, leave once state unchanged
|
|
383
|
+
(cons (car state) (car evt)))))
|
|
384
|
+
;; end forced-combine-result
|
|
385
|
+
|
|
386
|
+
;; body of analyse-forced-combine:
|
|
387
|
+
(if (< result-idx (vector-length result))
|
|
388
|
+
(let* ((now-state (vector-ref result result-idx)) ; current result
|
|
389
|
+
;; Extract all part-combine force events
|
|
390
|
+
(evts (if (synced? now-state)
|
|
391
|
+
(append
|
|
392
|
+
(part-combine-events (car (voice-states now-state)))
|
|
393
|
+
(part-combine-events (cdr (voice-states now-state))))
|
|
394
|
+
'()))
|
|
395
|
+
;; result is (once-state permament-state):
|
|
396
|
+
(state (fold forced-result (cons 'automatic prev-res) evts))
|
|
397
|
+
;; Now let once override permanent changes:
|
|
398
|
+
(force-state (if (equal? (car state) 'automatic)
|
|
399
|
+
(cdr state)
|
|
400
|
+
(car state))))
|
|
401
|
+
(set! (forced-configuration (vector-ref result result-idx))
|
|
402
|
+
force-state)
|
|
403
|
+
;; For the next moment, ignore the once override (car stat)
|
|
404
|
+
;; and pass on the permanent override, stored as (cdr state)
|
|
405
|
+
(analyse-forced-combine (1+ result-idx) (cdr state)))))
|
|
406
|
+
;; end analyse-forced-combine
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
(define (analyse-time-step result-idx)
|
|
410
|
+
(define (put x . index)
|
|
411
|
+
"Put the result to X, starting from INDEX backwards.
|
|
412
|
+
|
|
413
|
+
Only set if not set previously.
|
|
414
|
+
"
|
|
415
|
+
(let ((i (if (pair? index) (car index) result-idx)))
|
|
416
|
+
(if (and (<= 0 i)
|
|
417
|
+
(not (symbol? (configuration (vector-ref result i)))))
|
|
418
|
+
(begin
|
|
419
|
+
(set! (configuration (vector-ref result i)) x)
|
|
420
|
+
(put x (1- i))))))
|
|
421
|
+
|
|
422
|
+
(define (copy-state-from state-vec vs)
|
|
423
|
+
(define (copy-one-state key-idx)
|
|
424
|
+
(let* ((idx (cdr key-idx))
|
|
425
|
+
(prev-ss (vector-ref result idx))
|
|
426
|
+
(prev (configuration prev-ss)))
|
|
427
|
+
(if (symbol? prev)
|
|
428
|
+
(put prev))))
|
|
429
|
+
(for-each copy-one-state (span-state vs)))
|
|
430
|
+
|
|
431
|
+
(define (analyse-notes now-state)
|
|
432
|
+
(let* ((vs1 (car (voice-states now-state)))
|
|
433
|
+
(vs2 (cdr (voice-states now-state)))
|
|
434
|
+
(notes1 (comparable-note-events vs1))
|
|
435
|
+
(notes2 (comparable-note-events vs2)))
|
|
436
|
+
(cond
|
|
437
|
+
;; if neither part has notes, do nothing
|
|
438
|
+
((and (not (pair? notes1)) (not (pair? notes2))))
|
|
439
|
+
|
|
440
|
+
;; if one part has notes and the other does not
|
|
441
|
+
((or (not (pair? notes1)) (not (pair? notes2))) (put 'apart))
|
|
442
|
+
|
|
443
|
+
;; if either part has a chord
|
|
444
|
+
((or (> (length notes1) 1)
|
|
445
|
+
(> (length notes2) 1))
|
|
446
|
+
(if (and (<= chord-min-diff 0) ; user requests combined unisons
|
|
447
|
+
(equal? notes1 notes2)) ; both parts have the same chord
|
|
448
|
+
(put 'chords)
|
|
449
|
+
(put 'apart)))
|
|
450
|
+
|
|
451
|
+
;; if the durations are different
|
|
452
|
+
;; TODO articulations too?
|
|
453
|
+
((and (not (equal? (ly:event-property (car notes1) 'duration)
|
|
454
|
+
(ly:event-property (car notes2) 'duration))))
|
|
455
|
+
(put 'apart))
|
|
456
|
+
|
|
457
|
+
(else
|
|
458
|
+
;; Is the interval outside of chord-range?
|
|
459
|
+
(if (let ((diff (ly:pitch-steps
|
|
460
|
+
(ly:pitch-diff
|
|
461
|
+
(ly:event-property (car notes1) 'pitch)
|
|
462
|
+
(ly:event-property (car notes2) 'pitch)))))
|
|
463
|
+
(or (< diff chord-min-diff)
|
|
464
|
+
(> diff chord-max-diff)
|
|
465
|
+
))
|
|
466
|
+
(put 'apart)
|
|
467
|
+
;; copy previous split state from spanner state
|
|
468
|
+
(begin
|
|
469
|
+
(if (previous-voice-state vs1)
|
|
470
|
+
(copy-state-from voice-state-vec1
|
|
471
|
+
(previous-voice-state vs1)))
|
|
472
|
+
(if (previous-voice-state vs2)
|
|
473
|
+
(copy-state-from voice-state-vec2
|
|
474
|
+
(previous-voice-state vs2)))
|
|
475
|
+
(if (and (null? (span-state vs1)) (null? (span-state vs2)))
|
|
476
|
+
(put 'chords))))))))
|
|
477
|
+
|
|
478
|
+
(if (< result-idx (vector-length result))
|
|
479
|
+
(let* ((now-state (vector-ref result result-idx))
|
|
480
|
+
(vs1 (car (voice-states now-state)))
|
|
481
|
+
(vs2 (cdr (voice-states now-state))))
|
|
482
|
+
|
|
483
|
+
(cond ((not vs1) (put 'apart))
|
|
484
|
+
((not vs2) (put 'apart))
|
|
485
|
+
(else
|
|
486
|
+
(let ((active1 (previous-span-state vs1))
|
|
487
|
+
(active2 (previous-span-state vs2))
|
|
488
|
+
(new-active1 (span-state vs1))
|
|
489
|
+
(new-active2 (span-state vs2)))
|
|
490
|
+
(if #f ; debug
|
|
491
|
+
(display (list (moment now-state) result-idx
|
|
492
|
+
active1 "->" new-active1
|
|
493
|
+
active2 "->" new-active2
|
|
494
|
+
"\n")))
|
|
495
|
+
(if (and (synced? now-state)
|
|
496
|
+
(equal? active1 active2)
|
|
497
|
+
(equal? new-active1 new-active2))
|
|
498
|
+
(analyse-notes now-state)
|
|
499
|
+
|
|
500
|
+
;; active states different:
|
|
501
|
+
(put 'apart)))
|
|
502
|
+
|
|
503
|
+
;; go to the next one, if it exists.
|
|
504
|
+
(analyse-time-step (1+ result-idx)))))))
|
|
505
|
+
|
|
506
|
+
(define (analyse-a2 result-idx)
|
|
507
|
+
(if (< result-idx (vector-length result))
|
|
508
|
+
(let* ((now-state (vector-ref result result-idx))
|
|
509
|
+
(vs1 (car (voice-states now-state)))
|
|
510
|
+
(vs2 (cdr (voice-states now-state))))
|
|
511
|
+
|
|
512
|
+
(define (analyse-synced-silence)
|
|
513
|
+
(let ((rests1 (if vs1 (silence-events vs1) '()))
|
|
514
|
+
(rests2 (if vs2 (silence-events vs2) '())))
|
|
515
|
+
(cond
|
|
516
|
+
|
|
517
|
+
;; equal rests or equal skips, but not one of each
|
|
518
|
+
((and (= 1 (length rests1))
|
|
519
|
+
(= 1 (length rests2))
|
|
520
|
+
(equal? (ly:event-property (car rests1) 'class)
|
|
521
|
+
(ly:event-property (car rests2) 'class))
|
|
522
|
+
(equal? (ly:event-property (car rests1) 'duration)
|
|
523
|
+
(ly:event-property (car rests2) 'duration)))
|
|
524
|
+
(set! (configuration now-state) 'unisilence))
|
|
525
|
+
|
|
526
|
+
;; rests of different durations or mixed with
|
|
527
|
+
;; skips or multi-measure rests
|
|
528
|
+
(else
|
|
529
|
+
;; TODO For skips, route the rest to the shared
|
|
530
|
+
;; voice and the skip to the voice for its part?
|
|
531
|
+
(set! (configuration now-state) 'apart-silence))
|
|
532
|
+
|
|
533
|
+
)))
|
|
534
|
+
|
|
535
|
+
(define (analyse-unsynced-silence vs1 vs2)
|
|
536
|
+
(let ((any-mmrests1 (if vs1 (any-mmrest-events vs1) #f))
|
|
537
|
+
(any-mmrests2 (if vs2 (any-mmrest-events vs2) #f)))
|
|
538
|
+
(cond
|
|
539
|
+
;; If a multi-measure rest begins now while the other
|
|
540
|
+
;; part has an ongoing multi-measure rest (or has
|
|
541
|
+
;; ended), start displaying the one that begins now.
|
|
542
|
+
((and any-mmrests1
|
|
543
|
+
(equal? (moment vs1) (moment now-state))
|
|
544
|
+
(or (not vs2) any-mmrests2))
|
|
545
|
+
(set! (configuration now-state) 'silence1))
|
|
546
|
+
|
|
547
|
+
;; as above with parts swapped
|
|
548
|
+
((and any-mmrests2
|
|
549
|
+
(equal? (moment vs2) (moment now-state))
|
|
550
|
+
(or (not vs1) any-mmrests1))
|
|
551
|
+
(set! (configuration now-state) 'silence2))
|
|
552
|
+
)))
|
|
553
|
+
|
|
554
|
+
(if (or vs1 vs2)
|
|
555
|
+
(let ((notes1 (if vs1 (comparable-note-events vs1) '()))
|
|
556
|
+
(notes2 (if vs2 (comparable-note-events vs2) '())))
|
|
557
|
+
(cond ((and (equal? (configuration now-state) 'chords)
|
|
558
|
+
(pair? notes1)
|
|
559
|
+
(equal? notes1 notes2))
|
|
560
|
+
(set! (configuration now-state) 'unisono))
|
|
561
|
+
|
|
562
|
+
((synced? now-state)
|
|
563
|
+
(if (and (= 0 (length notes1))
|
|
564
|
+
(= 0 (length notes2)))
|
|
565
|
+
(analyse-synced-silence)))
|
|
566
|
+
|
|
567
|
+
(else ;; not synchronized
|
|
568
|
+
(let* ((vss
|
|
569
|
+
(current-or-previous-voice-states now-state))
|
|
570
|
+
(vs1 (car vss))
|
|
571
|
+
(vs2 (cdr vss)))
|
|
572
|
+
(if (and
|
|
573
|
+
(or (not vs1) (= 0 (length (note-events vs1))))
|
|
574
|
+
(or (not vs2) (= 0 (length (note-events vs2)))))
|
|
575
|
+
(analyse-unsynced-silence vs1 vs2))))
|
|
576
|
+
)))
|
|
577
|
+
(analyse-a2 (1+ result-idx)))))
|
|
578
|
+
|
|
579
|
+
(define (analyse-solo12 result-idx)
|
|
580
|
+
|
|
581
|
+
(define (previous-config vs)
|
|
582
|
+
(let* ((pvs (previous-voice-state vs))
|
|
583
|
+
(spi (if pvs (split-index pvs) #f))
|
|
584
|
+
(prev-split (if spi (vector-ref result spi) #f)))
|
|
585
|
+
(if prev-split
|
|
586
|
+
(configuration prev-split)
|
|
587
|
+
'apart)))
|
|
588
|
+
|
|
589
|
+
(define (put-range x a b)
|
|
590
|
+
;; (display (list "put range " x a b "\n"))
|
|
591
|
+
(do ((i a (1+ i)))
|
|
592
|
+
((> i b) b)
|
|
593
|
+
(set! (configuration (vector-ref result i)) x)))
|
|
594
|
+
|
|
595
|
+
(define (put x)
|
|
596
|
+
;; (display (list "putting " x "\n"))
|
|
597
|
+
(set! (configuration (vector-ref result result-idx)) x))
|
|
598
|
+
|
|
599
|
+
(define (current-voice-state now-state voice-num)
|
|
600
|
+
(define vs ((if (= 1 voice-num) car cdr)
|
|
601
|
+
(voice-states now-state)))
|
|
602
|
+
(if (or (not vs) (equal? (moment now-state) (moment vs)))
|
|
603
|
+
vs
|
|
604
|
+
(previous-voice-state vs)))
|
|
605
|
+
|
|
606
|
+
(define (try-solo type start-idx current-idx)
|
|
607
|
+
"Find a maximum stretch that can be marked as solo. Only set
|
|
608
|
+
the mark when there are no spanners active.
|
|
609
|
+
|
|
610
|
+
return next idx to analyse.
|
|
611
|
+
"
|
|
612
|
+
(if (< current-idx (vector-length result))
|
|
613
|
+
(let* ((now-state (vector-ref result current-idx))
|
|
614
|
+
(solo-state (current-voice-state now-state (if (equal? type 'solo1) 1 2)))
|
|
615
|
+
(silent-state (current-voice-state now-state (if (equal? type 'solo1) 2 1)))
|
|
616
|
+
(silent-notes (if silent-state (note-events silent-state) '()))
|
|
617
|
+
(solo-notes (if solo-state (note-events solo-state) '())))
|
|
618
|
+
;; (display (list "trying " type " at " (moment now-state) solo-state silent-state "\n"))
|
|
619
|
+
(cond ((not (equal? (configuration now-state) 'apart))
|
|
620
|
+
current-idx)
|
|
621
|
+
((> (length silent-notes) 0) start-idx)
|
|
622
|
+
((not solo-state)
|
|
623
|
+
(put-range type start-idx current-idx)
|
|
624
|
+
current-idx)
|
|
625
|
+
((and
|
|
626
|
+
(null? (span-state solo-state)))
|
|
627
|
+
|
|
628
|
+
;;
|
|
629
|
+
;; This includes rests. This isn't a problem: long rests
|
|
630
|
+
;; will be shared with the silent voice, and be marked
|
|
631
|
+
;; as unisilence. Therefore, long rests won't
|
|
632
|
+
;; accidentally be part of a solo.
|
|
633
|
+
;;
|
|
634
|
+
(put-range type start-idx current-idx)
|
|
635
|
+
(try-solo type (1+ current-idx) (1+ current-idx)))
|
|
636
|
+
(else
|
|
637
|
+
(try-solo type start-idx (1+ current-idx)))))
|
|
638
|
+
;; try-solo
|
|
639
|
+
start-idx))
|
|
640
|
+
|
|
641
|
+
(define (analyse-apart-silence result-idx)
|
|
642
|
+
"Analyse 'apart-silence starting at RESULT-IDX. Return next index."
|
|
643
|
+
|
|
644
|
+
(define (analyse-synced-apart-silence vs1 vs2)
|
|
645
|
+
(let* ((rests1 (silence-events vs1))
|
|
646
|
+
(rests2 (silence-events vs2)))
|
|
647
|
+
(cond
|
|
648
|
+
;; multiple rests in the same part
|
|
649
|
+
((and (or (not (= 1 (length rests1)))
|
|
650
|
+
(not (= 1 (length rests2)))))
|
|
651
|
+
(put 'apart-silence))
|
|
652
|
+
|
|
653
|
+
;; rest with multi-measure rest: choose the rest
|
|
654
|
+
((and (ly:in-event-class? (car rests1) 'rest-event)
|
|
655
|
+
(ly:in-event-class? (car rests2) 'multi-measure-rest-event))
|
|
656
|
+
(put 'silence1))
|
|
657
|
+
|
|
658
|
+
;; as above with parts swapped
|
|
659
|
+
((and (ly:in-event-class? (car rests1) 'multi-measure-rest-event)
|
|
660
|
+
(ly:in-event-class? (car rests2) 'rest-event))
|
|
661
|
+
(put 'silence2))
|
|
662
|
+
|
|
663
|
+
;; mmrest in both parts: choose the shorter one
|
|
664
|
+
;; (equal mmrests are classified as unisilence earlier,
|
|
665
|
+
;; so they shouldn't be seen here)
|
|
666
|
+
((and (ly:in-event-class? (car rests1) 'multi-measure-rest-event)
|
|
667
|
+
(ly:in-event-class? (car rests2) 'multi-measure-rest-event))
|
|
668
|
+
(if (ly:duration<? (ly:event-property (car rests1) 'duration)
|
|
669
|
+
(ly:event-property (car rests2) 'duration))
|
|
670
|
+
(put 'silence1)
|
|
671
|
+
(put 'silence2)))
|
|
672
|
+
|
|
673
|
+
(else
|
|
674
|
+
(put 'apart-silence)))))
|
|
675
|
+
|
|
676
|
+
(define (analyse-unsynced-apart-silence vs1 vs2)
|
|
677
|
+
(let* ((prev-state (if (> result-idx 0)
|
|
678
|
+
(vector-ref result (- result-idx 1))
|
|
679
|
+
#f))
|
|
680
|
+
(prev-config (if prev-state
|
|
681
|
+
(configuration prev-state)
|
|
682
|
+
'apart-silence)))
|
|
683
|
+
(cond
|
|
684
|
+
;; remain in the silence1/2 states until resync
|
|
685
|
+
((equal? prev-config 'silence1)
|
|
686
|
+
(put 'silence1))
|
|
687
|
+
|
|
688
|
+
((equal? prev-config 'silence2)
|
|
689
|
+
(put 'silence2))
|
|
690
|
+
|
|
691
|
+
(else
|
|
692
|
+
(put 'apart-silence)))))
|
|
693
|
+
|
|
694
|
+
(let* ((now-state (vector-ref result result-idx))
|
|
695
|
+
(vs1 (current-voice-state now-state 1))
|
|
696
|
+
(vs2 (current-voice-state now-state 2)))
|
|
697
|
+
(cond
|
|
698
|
+
;; part 1 has ended
|
|
699
|
+
((or (not vs1) (done? vs1))
|
|
700
|
+
(put 'silence2))
|
|
701
|
+
|
|
702
|
+
;; part 2 has ended
|
|
703
|
+
((or (not vs2) (done? vs2))
|
|
704
|
+
(put 'silence1))
|
|
705
|
+
|
|
706
|
+
((synced? now-state)
|
|
707
|
+
(analyse-synced-apart-silence vs1 vs2))
|
|
708
|
+
|
|
709
|
+
(else
|
|
710
|
+
(analyse-unsynced-apart-silence vs1 vs2)))
|
|
711
|
+
|
|
712
|
+
(1+ result-idx)))
|
|
713
|
+
|
|
714
|
+
(define (analyse-apart result-idx)
|
|
715
|
+
"Analyse 'apart starting at RESULT-IDX. Return next index."
|
|
716
|
+
(let* ((now-state (vector-ref result result-idx))
|
|
717
|
+
(vs1 (current-voice-state now-state 1))
|
|
718
|
+
(vs2 (current-voice-state now-state 2))
|
|
719
|
+
;; (vs1 (car (voice-states now-state)))
|
|
720
|
+
;; (vs2 (cdr (voice-states now-state)))
|
|
721
|
+
(notes1 (if vs1 (note-events vs1) '()))
|
|
722
|
+
(notes2 (if vs2 (note-events vs2) '()))
|
|
723
|
+
(n1 (length notes1))
|
|
724
|
+
(n2 (length notes2)))
|
|
725
|
+
;; (display (list "analyzing step " result-idx " moment " (moment now-state) vs1 vs2 "\n"))
|
|
726
|
+
(max
|
|
727
|
+
;; we should always increase.
|
|
728
|
+
(cond ((and (= n1 0) (= n2 0))
|
|
729
|
+
;; If we hit this, it means that the previous passes
|
|
730
|
+
;; have designated as 'apart what is really
|
|
731
|
+
;; 'apart-silence.
|
|
732
|
+
(analyse-apart-silence result-idx))
|
|
733
|
+
((and (= n2 0)
|
|
734
|
+
(equal? (moment vs1) (moment now-state))
|
|
735
|
+
(null? (previous-span-state vs1)))
|
|
736
|
+
(try-solo 'solo1 result-idx result-idx))
|
|
737
|
+
((and (= n1 0)
|
|
738
|
+
(equal? (moment vs2) (moment now-state))
|
|
739
|
+
(null? (previous-span-state vs2)))
|
|
740
|
+
(try-solo 'solo2 result-idx result-idx))
|
|
741
|
+
|
|
742
|
+
(else (1+ result-idx)))
|
|
743
|
+
;; analyse-moment
|
|
744
|
+
(1+ result-idx))))
|
|
745
|
+
|
|
746
|
+
(if (< result-idx (vector-length result))
|
|
747
|
+
(let ((conf (configuration (vector-ref result result-idx))))
|
|
748
|
+
(cond
|
|
749
|
+
((equal? conf 'apart)
|
|
750
|
+
(analyse-solo12 (analyse-apart result-idx)))
|
|
751
|
+
((equal? conf 'apart-silence)
|
|
752
|
+
(analyse-solo12 (analyse-apart-silence result-idx)))
|
|
753
|
+
(else
|
|
754
|
+
(analyse-solo12 (1+ result-idx))))))) ; analyse-solo12
|
|
755
|
+
|
|
756
|
+
(analyse-spanner-states voice-state-vec1)
|
|
757
|
+
(analyse-spanner-states voice-state-vec2)
|
|
758
|
+
(if #f
|
|
759
|
+
(begin
|
|
760
|
+
(display voice-state-vec1)
|
|
761
|
+
(display "***\n")
|
|
762
|
+
(display voice-state-vec2)
|
|
763
|
+
(display "***\n")
|
|
764
|
+
(display result)
|
|
765
|
+
(display "***\n")))
|
|
766
|
+
|
|
767
|
+
;; Extract all forced combine strategies, i.e. events inserted by
|
|
768
|
+
;; \partCombine(Apart|Automatic|SoloI|SoloII|Chords)[Once]
|
|
769
|
+
;; They will in the end override the automaically determined ones.
|
|
770
|
+
;; Initial state for both voices is no override
|
|
771
|
+
(analyse-forced-combine 0 #f)
|
|
772
|
+
;; Now go through all time steps in a loop and find a combination strategy
|
|
773
|
+
;; based only on the events of that one moment (i.e. neglecting longer
|
|
774
|
+
;; periods of solo/apart, etc.)
|
|
775
|
+
(analyse-time-step 0)
|
|
776
|
+
;; (display result)
|
|
777
|
+
;; Check for unisono or unisilence moments
|
|
778
|
+
(analyse-a2 0)
|
|
779
|
+
;;(display result)
|
|
780
|
+
(analyse-solo12 0)
|
|
781
|
+
;; (display result)
|
|
782
|
+
(set! result (map
|
|
783
|
+
;; forced-configuration overrides, if it is set
|
|
784
|
+
(lambda (x) (cons (moment x) (or (forced-configuration x) (configuration x))))
|
|
785
|
+
(vector->list result)))
|
|
786
|
+
(if #f ;; pc-debug
|
|
787
|
+
(display result))
|
|
788
|
+
result))
|
|
789
|
+
|
|
790
|
+
(define-public default-part-combine-mark-state-machine
|
|
791
|
+
;; (current-state . ((split-state-event .
|
|
792
|
+
;; (output-voice output-event next-state)) ...))
|
|
793
|
+
'((Initial . ((solo1 . (solo SoloOneEvent Solo1))
|
|
794
|
+
(solo2 . (solo SoloTwoEvent Solo2))
|
|
795
|
+
(unisono . (shared UnisonoEvent Unisono))))
|
|
796
|
+
(Solo1 . ((apart . (#f #f Initial))
|
|
797
|
+
(chords . (#f #f Initial))
|
|
798
|
+
(solo2 . (solo SoloTwoEvent Solo2))
|
|
799
|
+
(unisono . (shared UnisonoEvent Unisono))))
|
|
800
|
+
(Solo2 . ((apart . (#f #f Initial))
|
|
801
|
+
(chords . (#f #f Initial))
|
|
802
|
+
(solo1 . (solo SoloOneEvent Solo1))
|
|
803
|
+
(unisono . (shared UnisonoEvent Unisono))))
|
|
804
|
+
(Unisono . ((apart . (#f #f Initial))
|
|
805
|
+
(chords . (#f #f Initial))
|
|
806
|
+
(solo1 . (solo SoloOneEvent Solo1))
|
|
807
|
+
(solo2 . (solo SoloTwoEvent Solo2))))))
|
|
808
|
+
|
|
809
|
+
(define-public (make-part-combine-marks state-machine split-list)
|
|
810
|
+
"Generate a sequence of part combiner events from a split list."
|
|
811
|
+
|
|
812
|
+
(define (get-state state-name)
|
|
813
|
+
(assq-ref state-machine state-name))
|
|
814
|
+
|
|
815
|
+
(let ((full-seq '()) ; sequence of { \context Voice = "x" {} ... }
|
|
816
|
+
(segment '()) ; sequence within \context Voice = "x" {...}
|
|
817
|
+
(prev-moment ZERO-MOMENT)
|
|
818
|
+
(prev-voice #f)
|
|
819
|
+
(state (get-state 'Initial)))
|
|
820
|
+
|
|
821
|
+
(define (commit-segment)
|
|
822
|
+
"Add the current segment to the full sequence and begin another."
|
|
823
|
+
(if (pair? segment)
|
|
824
|
+
(set! full-seq
|
|
825
|
+
(cons (make-music 'ContextSpeccedMusic
|
|
826
|
+
'context-id (symbol->string prev-voice)
|
|
827
|
+
'context-type 'Voice
|
|
828
|
+
'element (make-sequential-music (reverse! segment)))
|
|
829
|
+
full-seq)))
|
|
830
|
+
(set! segment '()))
|
|
831
|
+
|
|
832
|
+
(define (handle-split split)
|
|
833
|
+
(let* ((moment (car split))
|
|
834
|
+
(action (assq-ref state (cdr split))))
|
|
835
|
+
(if action
|
|
836
|
+
(let ((voice (car action))
|
|
837
|
+
(part-combine-event (cadr action))
|
|
838
|
+
(next-state-name (caddr action)))
|
|
839
|
+
(if part-combine-event
|
|
840
|
+
(let ((dur (ly:moment-sub moment prev-moment)))
|
|
841
|
+
;; start a new segment when the voice changes
|
|
842
|
+
(if (not (eq? voice prev-voice))
|
|
843
|
+
(begin
|
|
844
|
+
(commit-segment)
|
|
845
|
+
(set! prev-voice voice)))
|
|
846
|
+
(if (not (equal? dur ZERO-MOMENT))
|
|
847
|
+
(set! segment (cons (make-music 'SkipEvent
|
|
848
|
+
'duration (make-duration-of-length dur)) segment)))
|
|
849
|
+
(set! segment (cons (make-music part-combine-event) segment))
|
|
850
|
+
|
|
851
|
+
(set! prev-moment moment)))
|
|
852
|
+
(set! state (get-state next-state-name))))))
|
|
853
|
+
|
|
854
|
+
(for-each handle-split split-list)
|
|
855
|
+
(commit-segment)
|
|
856
|
+
(make-sequential-music (reverse! full-seq))))
|
|
857
|
+
|
|
858
|
+
(define-public default-part-combine-context-change-state-machine-one
|
|
859
|
+
;; (current-state . ((split-state-event . (output-voice next-state)) ...))
|
|
860
|
+
'((Initial . ((apart . (one . Initial))
|
|
861
|
+
(apart-silence . (one . Initial))
|
|
862
|
+
(apart-spanner . (one . Initial))
|
|
863
|
+
(chords . (shared . Initial))
|
|
864
|
+
(silence1 . (shared . Initial))
|
|
865
|
+
(silence2 . (null . Demoted))
|
|
866
|
+
(solo1 . (solo . Initial))
|
|
867
|
+
(solo2 . (null . Demoted))
|
|
868
|
+
(unisono . (shared . Initial))
|
|
869
|
+
(unisilence . (shared . Initial))))
|
|
870
|
+
|
|
871
|
+
;; After a part has been used as the exclusive input for a
|
|
872
|
+
;; passage, we want to use it by default for unisono/unisilence
|
|
873
|
+
;; passages because Part_combine_iterator might have killed
|
|
874
|
+
;; multi-measure rests in the other part. Here we call such a
|
|
875
|
+
;; part "promoted". Part one begins promoted.
|
|
876
|
+
(Demoted . ((apart . (one . Demoted))
|
|
877
|
+
(apart-silence . (one . Demoted))
|
|
878
|
+
(apart-spanner . (one . Demoted))
|
|
879
|
+
(chords . (shared . Demoted))
|
|
880
|
+
(silence1 . (shared . Initial))
|
|
881
|
+
(silence2 . (null . Demoted))
|
|
882
|
+
(solo1 . (solo . Initial))
|
|
883
|
+
(solo2 . (null . Demoted))
|
|
884
|
+
(unisono . (null . Demoted))
|
|
885
|
+
(unisilence . (null . Demoted))))))
|
|
886
|
+
|
|
887
|
+
(define-public default-part-combine-context-change-state-machine-two
|
|
888
|
+
;; (current-state . ((split-state-event . (output-voice next-state)) ...))
|
|
889
|
+
'((Initial . ((apart . (two . Initial))
|
|
890
|
+
(apart-silence . (two . Initial))
|
|
891
|
+
(apart-spanner . (two . Initial))
|
|
892
|
+
(chords . (shared . Initial))
|
|
893
|
+
(silence1 . (null . Initial))
|
|
894
|
+
(silence2 . (shared . Promoted))
|
|
895
|
+
(solo1 . (null . Initial))
|
|
896
|
+
(solo2 . (solo . Promoted))
|
|
897
|
+
(unisono . (null . Initial))
|
|
898
|
+
(unisilence . (null . Initial))))
|
|
899
|
+
|
|
900
|
+
;; See the part-one state machine for the meaning of "promoted".
|
|
901
|
+
(Promoted . ((apart . (two . Promoted))
|
|
902
|
+
(apart-silence . (two . Promoted))
|
|
903
|
+
(apart-spanner . (two . Promoted))
|
|
904
|
+
(chords . (shared . Promoted))
|
|
905
|
+
(silence1 . (null . Initial))
|
|
906
|
+
(silence2 . (shared . Promoted))
|
|
907
|
+
(solo1 . (null . Initial))
|
|
908
|
+
(solo2 . (solo . Promoted))
|
|
909
|
+
(unisono . (shared . Promoted))
|
|
910
|
+
(unisilence . (shared . Promoted))))))
|
|
911
|
+
|
|
912
|
+
(define-public (make-part-combine-context-changes state-machine split-list)
|
|
913
|
+
"Generate a sequence of part combiner context changes from a split list."
|
|
914
|
+
|
|
915
|
+
(define (get-state state-name)
|
|
916
|
+
(assq-ref state-machine state-name))
|
|
917
|
+
|
|
918
|
+
(let* ((change-list '())
|
|
919
|
+
(prev-moment
|
|
920
|
+
;; the start moment is in the first entry of the split list
|
|
921
|
+
(if (and (pair? split-list) (pair? (car split-list)))
|
|
922
|
+
(caar split-list)
|
|
923
|
+
ZERO-MOMENT))
|
|
924
|
+
(prev-change-moment prev-moment)
|
|
925
|
+
(prev-voice #f)
|
|
926
|
+
(state (get-state 'Initial)))
|
|
927
|
+
|
|
928
|
+
(define (handle-split split)
|
|
929
|
+
(let* ((moment (car split))
|
|
930
|
+
(action (assq-ref state (cdr split))))
|
|
931
|
+
(if action
|
|
932
|
+
(let ((voice (car action))
|
|
933
|
+
(next-state-name (cdr action)))
|
|
934
|
+
(if (not (eq? voice prev-voice))
|
|
935
|
+
(begin
|
|
936
|
+
(set! change-list
|
|
937
|
+
(cons (skip-of-moment-span prev-change-moment moment)
|
|
938
|
+
change-list))
|
|
939
|
+
(set! change-list
|
|
940
|
+
(cons (make-music
|
|
941
|
+
'ContextChange
|
|
942
|
+
'change-tag '$partCombine
|
|
943
|
+
'change-to-type 'Voice
|
|
944
|
+
'change-to-id (symbol->string voice))
|
|
945
|
+
change-list))
|
|
946
|
+
(set! prev-change-moment moment)
|
|
947
|
+
(set! prev-voice voice)))
|
|
948
|
+
(set! prev-moment moment)
|
|
949
|
+
(set! state (get-state next-state-name))))))
|
|
950
|
+
|
|
951
|
+
;; (display split-list)
|
|
952
|
+
(for-each handle-split split-list)
|
|
953
|
+
;; add a final skip so that the length of the music is correct
|
|
954
|
+
(set! change-list (cons (skip-of-moment-span prev-change-moment prev-moment)
|
|
955
|
+
change-list))
|
|
956
|
+
(let ((result (make-sequential-music (reverse! change-list))))
|
|
957
|
+
;; (display-lily-music result)
|
|
958
|
+
result)))
|
|
959
|
+
|
|
960
|
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
961
|
+
|
|
962
|
+
(define-public (add-quotable name mus)
|
|
963
|
+
(let* ((tab (eval 'musicQuotes (current-module)))
|
|
964
|
+
(voicename (get-next-unique-voice-name))
|
|
965
|
+
;; recording-group-emulate returns an assoc list (reversed!), so
|
|
966
|
+
;; hand it a proper unique context name and extract that key:
|
|
967
|
+
(ctx-spec (context-spec-music mus 'Voice voicename))
|
|
968
|
+
(listener (ly:parser-lookup 'partCombineListener))
|
|
969
|
+
(context-list (reverse (recording-group-emulate ctx-spec listener)))
|
|
970
|
+
(raw-voice (assoc voicename context-list))
|
|
971
|
+
(quote-contents (and raw-voice (reverse! (cdr raw-voice)))))
|
|
972
|
+
|
|
973
|
+
(define (has-events? e)
|
|
974
|
+
(and (pair? e)
|
|
975
|
+
(pair? (car e))
|
|
976
|
+
(pair? (cdar e))))
|
|
977
|
+
|
|
978
|
+
;; If the context-specced quoted music does not contain anything, try to
|
|
979
|
+
;; use the first child, i.e. the next in context-list after voicename
|
|
980
|
+
;; That's the case e.g. for \addQuote "x" \relative c \new Voice {...}
|
|
981
|
+
;;
|
|
982
|
+
;; Note that if raw-voice is #f, so is quote-contents, in which
|
|
983
|
+
;; case the following loop is skipped.
|
|
984
|
+
(if (not (has-events? quote-contents))
|
|
985
|
+
(let find-non-empty ((current-tail (member raw-voice context-list)))
|
|
986
|
+
;; if voice has contents, use them, otherwise check next ctx
|
|
987
|
+
(if (null? current-tail)
|
|
988
|
+
#f
|
|
989
|
+
(let ((candidate (and (pair? (car current-tail))
|
|
990
|
+
(pair? (cdar current-tail))
|
|
991
|
+
(reverse! (cdar current-tail)))))
|
|
992
|
+
(if (has-events? candidate)
|
|
993
|
+
(set! quote-contents candidate)
|
|
994
|
+
(find-non-empty (cdr current-tail)))))))
|
|
995
|
+
|
|
996
|
+
(if (has-events? quote-contents)
|
|
997
|
+
(hash-set! tab name (list->vector quote-contents))
|
|
998
|
+
(ly:music-warning mus (G_ "quoted music `~a' is empty") name))))
|