I've written a music search tool that exports MusicXML and colors the matching notes, and I'd like those colors to show up in LilyPond typesetting.
There is no doubt a much more elegant way to do this, but the included patch works for me, and it would be great to see this functionality added to the musicxml2ly distribution.
-Bret.
>From d861198ea6a58696ce52cfe17f63dd8aeee6ed58 Mon Sep 17 00:00:00 2001 From: Bret Aarden <aar...@bret-aarden-2.local> Date: Mon, 13 Jul 2009 03:17:00 -0400 Subject: [PATCH] Added code to musicxml2ly.py and musicexp.ly to handle color overrides on notes. --- python/musicexp.py | 22 ++++++++++++++++++++-- scripts/musicxml2ly.py | 2 ++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/python/musicexp.py b/python/musicexp.py index 9ebdb70..5f88818 100644 --- a/python/musicexp.py +++ b/python/musicexp.py @@ -100,7 +100,17 @@ class Output_printer: return self.unformatted_output (str) - + + def print_note_color (self, object, rgb=None): + if rgb: + str = ("\override %s #'color = #(rgb-color %s %s %s)" % + (object, rgb[0], rgb[1], rgb[2])) + else: + str = "\\revert %s #'color" % object + self.newline() + self.add_word(str) + self.newline() + def add_word (self, str): if (len (str) + 1 + len (self._line) > self._line_len): self.newline() @@ -1436,6 +1446,10 @@ class NoteEvent(RhythmicEvent): def print_ly (self, printer): for ev in self.associated_events: ev.print_ly (printer) + if hasattr(self, 'color'): + printer.print_note_color("NoteHead", self.color) + printer.print_note_color("Stem", self.color) + printer.print_note_color("Beam", self.color) if self.pitch: self.pitch.print_ly (printer) printer (self.pitch_mods ()) @@ -1443,7 +1457,11 @@ class NoteEvent(RhythmicEvent): printer (self.drum_type) self.duration.print_ly (printer) - + if hasattr(self, 'color'): + printer.print_note_color("NoteHead") + printer.print_note_color("Stem") + printer.print_note_color("Beam") + class KeySignatureChange (Music): def __init__ (self): Music.__init__ (self) diff --git a/scripts/musicxml2ly.py b/scripts/musicxml2ly.py index ba7be37..1e31e8f 100644 --- a/scripts/musicxml2ly.py +++ b/scripts/musicxml2ly.py @@ -1846,6 +1846,8 @@ def musicxml_note_to_lily_main_event (n): if event: event.duration = musicxml_duration_to_lily (n) + if hasattr(n, 'color'): + event.color = hex_to_color(n.color) noteheads = n.get_named_children ('notehead') for nh in noteheads: -- 1.6.1
_______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-devel