[HN Gopher] Show HN: Create Music with R
___________________________________________________________________
Show HN: Create Music with R
Author : hackoo
Score : 57 points
Date : 2024-07-09 18:15 UTC (4 days ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| tgv wrote:
| Using the addition operator for manipulation is a bit unusual.
| Why did you choose it? I don't have R studio or anything on my
| computer, so I can't test it, but do things like
| music <- Music() + Meter(4, 4) + Line(...) + (Line(...) +
| Articulation(">", 1))
|
| work?
| nomonnai wrote:
| In base R, `+` is the usual arithmetic operator for numeric and
| complex vectors. I'm not a super R expert but I'm pretty sure
| the addition operator is overloaded here. It simply means:
| add(Music(), Meter(4, 4), Line(...), Line(...),
| Articulation(">", 1))
|
| Edit. Found the definition in the source [1]. I think the
| approach is similar to Go's approach to method definition [2].
| Methods are defined on types, i.e., methods are functions with
| special receiver arguments. The infix notation instead of
| prefix notation is just syntactic sugar.
|
| [1]
| https://github.com/flujoo/gm/blob/69d639be86b0cef80d815a73a6...
|
| [2] https://go.dev/tour/methods/1
| andylynch wrote:
| This is quite idiomatic for R; packages like ggplot do the same
| thing to, for instance, build up graphics- see
| https://r4ds.hadley.nz/data-visualize for some nice examples
| erikgahner wrote:
| ggplot2 is pretty much an exception at this point, and if the
| package was created today it would use the pipe instead of
| add [1]. Most packages use pipes now (especially with the
| introduction of the pipe operator in R 4.1.0).
|
| [1] https://forum.posit.co/t/why-cant-ggplot2-use/4372/7
| dr_kiszonka wrote:
| I am no R expert, but pipes don't seem the most intuitive
| for ggplot. This is because they would imply that, e.g.,
| ggtitle() %>% geom_point() means that ggtitle() outputs an
| input for geom_point().
| hadley wrote:
| That's exactly how ggplot (not 2!) worked:
| https://github.com/hadley/ggplot1
| hackoo wrote:
| In creating a music score, you literally "add" components to
| the score. So it's natural to implement this operation this
| way. From the OOP perspective, it's just method overloading.
| Not uncommon in R development.
| tetris11 wrote:
| R is a Lisp dialect in disguise.
| ttpphd wrote:
| This is nuts and I love it. Great work!
| darknavi wrote:
| I always liked the idea of coding music. Programmatically making
| some awesome tracks. Then open source it and let people run it on
| what ever they want.
| pierrec wrote:
| It's definitely a thing, in fact I wrote an entire album
| exactly that way! https://github.com/pac-dev/AmbientGardenAlbum
|
| It wasn't exactly a hit, but then again promotion is the hard
| part. I'm finishing a lengthy write-up on the process, which
| focuses more on harmony (specifically freestyle just
| intonation) rather than programming. I believe the programming
| portion is highly personal, so it's more interesting to share
| general composition techniques that apply well to algorithmic
| music.
|
| Executable music is also an established genre in the demoscene,
| but the music is typically written in trackers rather than with
| code. The extremely small intro categories do have fully
| algorithmic music, which can be really inspiring. That said the
| size limit often forces the sound into a "bytebeat" style, so
| I'd say size-unrestricted algorithmic music ends up being a
| rare genre that's not even found in the demoscene (as far as I
| know! I'd love to find more music like this).
___________________________________________________________________
(page generated 2024-07-13 23:01 UTC)