> On 10 May 2024, at 21:50, msk...@ansuz.sooke.bc.ca wrote: > > On Fri, 10 May 2024, Hans Åberg wrote: > >> Programs like ABC work so that one writes the music without accidentals, >> and then apply a key signature to get them. It was my reading that the >> OP asked for that. > > Okay. I didn't read it that way because the OP said he was getting > correct output in the PDF, and if he'd misunderstood the input format in > the way you describe, then the PDF would be wrong too. > > But something else that occurred to me is that there may be a further > misunderstanding of MIDI format in play here: MIDI never contains > "accidentals" at all. It only contains note numbers.
MIDI is based on E12, the 12-equal tone system. The staff notation, as used in LilyPond, is originally based on Pythagorean tuning, without enharmonic equivalences, which must be applied for the MIDI output. > In my example code: > > \score { > \new Voice { > \key c \major > c'4 d'4 e'4 f'4 | > \key d \minor > bes4 a4 g4 f4 | > } > \layout { } > \midi { } > } > > The MIDI output will contain roughly this information: > > key change, C major > note 60 > note 62 > note 64 > note 65 > key change, D minor > note 58 > note 57 > note 55 > note 53 > > If some other software, reading the MIDI file, displays these as notes > with or without accidentals, and does or doesn't make the key-change > events visible, then that has very little to do with Lilypond, which only > generates the above data. Note 60, for instance, might be a C or a > B-sharp. Even if it is B-sharp, it might be displayed with or without a > sharp sign depending on whether there is one in the displayed key > signature. The MIDI file does not contain that information; it is up to > whatever software reads the MIDI file, to display it appropriately. So to go back to staff notation from MIDI, one must know what enharmonic equivalences that have been applied.