Hi Jean,
Thanks for your reply. Regarding scheme code: it seems to me that the simplest
solution would be to modify event-listener.ly so that instead of storing
point-and-click data (row and column within the lily file), it instead stores
the pixel coordinate X, Y of the note’s (or rest’s) glyph within the output PNG
image. I have tried that, but so far my efforts are not successful, due to my
weak understanding of the language and LilyPond’s data architecture.
I would happily accept a “cookbook” solution for the above, as this would spare
me countless hours of possibly futile effort.
Re MusicXML, can you recommend a FOSS MIDI to MusicXML converter that runs on
Windows? I looked around, but didn’t find one. I tried one that was available
on GitHub, and it generated Neutrino output, which musicxml2ly did not like.
Converting MIDI to Lily is a messy process at best, and the best argument for
using my homegrown code is that I understand it, and it gives me maximum
control over the conversion.
On Wednesday, December 6, 2023 at 11:31:54 PM GMT+1, Jean Abou Samra
<[email protected]> wrote:
Hi,
I spent much of the last week converting my compositions from MIDI files to
Lily format. I tried midi2ly first, but found it lacking, and decided to roll
my own in C++. I gather there are other converters around, as I saw at least
one on GitHub. I may put mine on GitHub too, after its code settles down a bit.
It assumes the MIDI file is already quantized, but it handles triplets, and
works well enough for me. If you're curious, some of the scores I created with
it are here: https://www.chriskorda.com/misc/scores.html
Just out of curiosity: have you tried first converting the MIDI to MusicXML
(using one of the various available tools), then converting that MusicXML to
LilyPond using either musicxml2ly or xml2ly? I'd expect this to produce much
better results than midi2ly.
Presumably I could then scroll the resulting PNG file to generate video frames.
But would I know the pixel offsets of notes/rests within each measure?
You need some Scheme code for that. See here for what ly2video uses.