3 ms·
A couple things about this post: first, the NoteOn/NoteOff dichotomy comes from MIDI. it's pretty reasonable to argue that any other attempt to model music wou
by tessierashpool 12y ago
A couple things about this post:
first, the NoteOn/NoteOff dichotomy comes from MIDI. it's pretty reasonable to argue that any other attempt to model music would involve sounds both beginning and ending, of course. but when you're designing sounds on a synthesizer, the terminology is Attack (for the start) and Release (for the end).
second, the author talks about skipping dynamics, to keep the code simple. so the code implements a subset of what you'd get with traditional music notation, i.e., the dots and squiggles people are talking about when they say they can read music. but "the score is not the music" is a saying among classical performers (iirc), and modern music software (e.g. Logic, Live, DAWs) uses MIDI to express dynamics in much higher resolution than scores can. and even then, "reading" the GUI of a DAW is not going to give you anything more than a mild approximation of what the sound is going to be.
I did a talk about programming drum rhythms in CoffeeScript where somebody asked me about jitter, aka swing, which is to say, a mechanism to take a programmed drum beat and make it feel like a human played it. everyone gets that difference subjectively, but there's also some research on what, exactly, in a numerical sense, that difference is.
the best "swing" implementation, the Roger Linn system used in MPCs, the Linn Drum, the Tempest, etc., just offsets the 2nd 16th note in every 8th-note "window."
http://www.attackmagazine.com/features/roger-linn-swing-groove-magic-mpc-timing/ http://www.attackmagazine.com/features/roger-linn-swing-groo...
but with an actual human drummer, the moments when they go too fast, relative to the absolute beat, are offset by moments when they go too slow. (all of this is at nanoscale timing.) to my knowledge, nobody's really gotten algorithms together to express or emulate this yet, although of course modern DAWs have a lot of interesting options, e.g., extracting the "groove" from one sample and applying it to another.
my point basically is that the deeper you get into this, the deeper you discover it goes. traditional musical notation is a graphic DSL full of cruft and stupidity, but it takes a lot of work to cook up some code which can cover everything that DSL covers, and if/when you get there, you just discover endlessly more levels of detail to explore.
this is awesome if you want to explore it, but agonizing if you want to get from installing a piece of software to making amazing music with it right away. so anyone who makes a library like this has to balance making it comprehensive against making it easy to get started, and in that sense, it's a lot like designing a programming language.
- TheOtherHobbes 12y agoThat's because traditional music notation isn't a DSL - it's a form of shorthand that gives you the bare minimum of information needed to create an interpretation. And if it's something like figured bass or a jazz lead sheet, it's not even close to what's actually performed. So if you take it literarily and think it's some kind of definitive description, you miss about 90% of what's going on. > my point basically is that the deeper you get into this, the deeper you discover it goes. Exactly. People who know more about computers than music keep reinventing this list idea over and over. I've literally lost count of the number of times the same concepts have appeared in different places over the decades. The people who 'invent' them always seem very pleased that they've completely mastered a whole new problem domain. Sadly, no. Expressive music isn't about lists of notes. Expressive music representations and creative music theory are full-scale industrial machine learning and AI problems. It's hard to make music that more than a hundred people, not including your friends, will pay to listen to more than once. For me, that's the absolute non-negotiable base test for models that claim to represent music in a useful way.
- noelwelsh 12y agoNote that Compose is designed to be a teaching aid and a fun toy, not to produce studio quality results.
- tessierashpool 12y agoyeah, I understand that. and I think it's a cool library. the + and | thing is neat. but, fwiw, I do want to produce studio-quality results. :-)
- davegurnell 12y agoThanks for the comments -- agreed with everything you say. I'm also a musician and the intersection between music and code is really interesting to me. Compose is just a toy, but I'm interested in learning about musical systems that are not.
- 12y ago