Live data from Hacker News

The Music Suite

music-suite.github.io

21–30 of 39 posts

Re: The Music Suite

#21
Very cool stuff! Haskell is indeed great for this kind of thing; perhaps I will get around to trying it out. A (very minor) issue:

> Actually, scat and pcat used to be called melody and chord back in the days, but I figured out that these are names that you actually want to use in your own code.

I would have preferred to see `melody` and `chord` over s/pcat because that's what they're doing. The whole point of a declarative DSL like this is to be descriptive. When I first saw `scat` I wondered if it was a shorthand for `staccato`, or perhaps even a reference to scat singing? On the other hand, not only are `melody` and `chord` very obvious, but they are also general enough that they are rather unlikely to be used as variable names, except perhaps as one-offs.

Re: The Music Suite

#22

Very cool stuff! Haskell is indeed great for this kind of thing; perhaps I will get around to trying it out. A (very minor) issue: > Actually, scat and pcat used to be called melody and chord back in the days, but I figured out that these are names that you actually want to use in your own code. I would have preferred to see `melody` and `chord` over s/pcat because that's what they're doing. The whole point of a decl…

There's an easy solution if you prefer to use those:

    melody = scat
    chord = pcat
I think the rationale is that you'd most often want `melody` to refer to the melody of the whole song rather than some sequence of notes within your melody.

Re: The Music Suite

#23

Pretty nice. I hope future versions will allow some sort of embedded structures, eg for this segments let p1 = scat [c..c']^/4 p2 = delay (1/4) $ scat [c..c']^/4 p3 = delay (3/4) $ scat [c..c']^/4 in (accent . legato) (p1 p2 p3) I would have expected something like p2 = delay (1/4) $$ [p1] or somesuch (sorry about the notation, I've never used Haskell - my point is about the nesting). I would also love to see ways to…

If you really want to be concise, something like this should work.

    accent . legato $ foldl1 () (delay  [0, 1/4, 3/4]  [scat [c..c']^/4])

Re: The Music Suite

#24
This looks really cool and I'm excited to play around with it. I had been using Euterpea for a while last year (http://haskell.cs.yale.edu/euterpea/), but as far as I can tell that project has gone cold, and it's a huge pain to get working on an update haskell-platform.

EDIT: Never mind, looks like Euterpea has actually seen some development (and improved documentation) since I last used it.

Re: The Music Suite

#25
A few tangentially-related things:

If you're generally interested in this subject, a popular toolkit for computational musicology outside of Haskell is Music21, in Python: http://web.mit.edu/music21/

If you're interested in Haskell and music, you might like Renick Bell's "Conductive" for Haskell-driven live coding music performance: http://www.renickbell.net/doku.php?id=conductive (video: http://www.youtube.com/watch?v=J5TskLgsdBU from last year's Linux Audio Conference; he gave another talk and concert this year but I don't think the videos are available yet)

If you're generally interested in high-level functional language code to analyse musical intention, the IDyOM project from Marcus Pearce in my own group (http://code.soundsoftware.ac.uk/projects/idyom-project) just made a release of their Common Lisp software for predictive modelling of musical structure.

Re: The Music Suite

#26

Clojure fans should look at http://overtone.github.io/ for something similar. Of particular note is the file https://github.com/overtone/overtone/blob/master/src/overton... which is an absolute work of art.

Leipzig is a application on top of Overtone which works at a similar level to The Music Suite i.e. scales, keys, phrases, melodies.

https://github.com/ctford/leipzig

https://www.youtube.com/watch?v=Lp_kQh34EWA

Re: The Music Suite

#28

Very cool stuff! Haskell is indeed great for this kind of thing; perhaps I will get around to trying it out. A (very minor) issue: > Actually, scat and pcat used to be called melody and chord back in the days, but I figured out that these are names that you actually want to use in your own code. I would have preferred to see `melody` and `chord` over s/pcat because that's what they're doing. The whole point of a decl…

I agree with you that the names 'melody' and 'chord' would be more appropriate here. I think of dung when I see 'scat'.

I'm excited to use this, though, and will definitely be reassigning those names to something else at the top of every file.

Re: The Music Suite

#29
Thanks nbouscal, thanks for posting. Can you explain to me how your Haskell project is different from VexFlow which a lot of peeps to do HTML5 music notation rendering.

Re: The Music Suite

#30
The example [listen] link points to a .mid file which some browser setups don't know how to handle (for instance, my Chromium simply downloads the file whenever I click the link, then downloads it again when I click the file in the bottom download bar).

Please offer an example audio rendering in a media format which is more generally supported, thank you.

Post reply on HN