<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Dec 1, 2015 at 3:24 PM, Andrew Bernard <span dir="ltr"><<a href="mailto:andrew.bernard@gmail.com" target="_blank">andrew.bernard@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word;color:rgb(0,0,0);font-size:14px;font-family:Calibri,sans-serif"><div><div><div>Hi Dennis,</div><div><br></div><div>This is a massively difficult and long task, fun of musical complexity. Are you aware of lilypond, the open source engraving program? It can export to MIDI and has been developed for over twenty years by hundreds of people. It is not written in Haskell, but C++ and Scheme principally.</div><div><br></div><div>Not meaning to disparage your work in any way, but it does seem you are reinventing the wheel, and a rather big and complicated wheel. I am sure it is an interesting exercise, and perhaps Sibelius does not play MIDI – I use lilypond so I do not know.</div><div><br></div><div>Help you don’t mind me letting you know.</div><div><br></div></div></div></div></blockquote><div><br></div><div>Hi Andrew, I'm copying the list on this message because these are some relevant questions to the task as a whole. I am aware of LilyPond, and I also own two commercial programs, Finale and Sibelius. Here are the reasons I am reinventing the wheel.</div><div><br></div><div>1. I want to experiment with algorithms that introduce "human expression" into the playback. Finale, Sibelius, and Lilypond can export to MIDI, but the results sound mechanical and lifeless -- to my picky ears, anyway. (many composers don't mind). Actually, Sibelius claims to use "human expression" but my point is that I want to experiment with my own algorithms and I want to be able to get into the source code to implement and modify things.</div><div><br></div><div>2. Trying to get the musical data into my program via exporting from Sibelius or Finale to MIDI won't work. MIDI is poor way to express musical structures, and cannot represent symbols and expressive marks in the score. </div><div><br></div><div>3. Here's one of the most significant factors. I didn't mention anything yet about what happens to the MIDI after I produce it. What happens is that I feed it to a "software synthesizer." This is a program that produces sound, by simulating or playing little bits of prerecorded notes. Here's what is a big deal -- there is hardly any standard for how software synthesizers respond to MIDI, especially all the control events. And every software synthesizer has custom capabilities. Finale and Sibelius claim to be able to do special controlling of the most popular synthesizers, but their capability is limited to one or two at most, and it actually hard to control (and maybe even buggy). I own three very good synthesizers, and two of them have controls that Sibelius and Finale don't understand in the slightest. I need many of these controls for my "human playback" algorithms.</div><div><br></div><div>4. Last but not least, I needed a personal project to learn Haskell (I have not and never will use it for work) so this is fun, and when you consider how it lets me experiment and use non-standard synthesizers, really quite practical in the end.</div><div><br></div><div>5. Also, I can limit my functionality to what I need. The big programs like LilyPond need to handle all sorts of instruments and notations. Say, guitar. That's a whole project in itself. But I'm not using guitar. I'm only using maybe 20% of the types of symbols and expressive marks that the big programs handle.</div><div><br></div><div>D</div><div><br></div><div><br></div><div><br></div><div><br></div></div></div></div>