[Haskell-beginners] help with music application

Dennis Raddle dennis.raddle at gmail.com
Wed Dec 2 00:05:57 UTC 2015


On Tue, Dec 1, 2015 at 3:24 PM, Andrew Bernard <andrew.bernard at gmail.com>
wrote:

> Hi Dennis,
>
> 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.
>
> 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.
>
> Help you don’t mind me letting you know.
>
>
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.

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.

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.

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.

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.

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.

D
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/beginners/attachments/20151201/317bf252/attachment.html>


More information about the Beginners mailing list