[HN Gopher] My approach to automatic musical composition ___________________________________________________________________ My approach to automatic musical composition Author : hackoo Score : 177 points Date : 2022-02-13 13:33 UTC (9 hours ago) (HTM) web link (flujoo.github.io) (TXT) w3m dump (flujoo.github.io) | SubiculumCode wrote: | I'd like tools that would do these transformations in a piano | roll, a la FL Studio | visarga wrote: | <off topic>Just dawned on me, today you can generate Mozart's | avatar with a GAN, voice with TTS, replies with GPT-3 and music | composition on demand with transformers. Or you could demand its | opinion on other music, or have it teach you piano. That would be | a nice App idea, a MozartBot. Bonus if it can guide you to | appreciate the composer's music. | | Would this be an early version of digital upload? | Aidevah wrote: | The author has given a very thorough look at the almost purely | algorithmic melodic variations in a classical sonata, although I | would think starting with Beethoven (and Chopin) may be a bit | ambitious. For music of the classical era, the meaning of the | music depends on not just melody and harmony, but also | articulation and dynamics. In the Beethoven example, the | ascending arpeggio is staccato which contrasts against the | descending figure which is slurred. The sforzando in bars 5 and 6 | creates an intensification in comparison to the first four bars | which is all in piano; the harmony is the same as before but | moves twice as fast and culminates in a rolled fortissimo chord | that dies away to a half close. Without the articulation and | dynamics, the meaning of the music is changed and its clarity is | weakened considerably, which is why I think separating out the | melodic aspect is a risky endeavour. | | The music of earlier composers, Bach especially, may be more | robust when put under this type of algorithmic manipulation since | much less sense is lost in Bach even if you only have the melody. | bambax wrote: | I don't think fully automatic musical composition is possible, | any more than fully automatic novel writing. A story has to start | somewhere and go to some other place, and a musical piece is a | story. | | Art needs intent. | | Actually, art IS intent. (Contemporary art is pure intent: art | without artifacts.) | | With music, what works (for me) is a mix of algorithmic | generation and then selection / arrangement. | | Here's a piece I made following that approach: automatic | generation of ideas, then me doing the selection, ordering and | interpretation. | | https://open.spotify.com/track/5TxVfIf9JUAhCEL3O5cWXT | seanhunter wrote: | Most of this writeup is just a reinvention of Schenkerian | analysis, and suffers from the same problem, in that you exercise | a lot of editorial judgement in deciding which parts are the | core/structural ideas and which parts are embellishment. That | undermines the whole idea that this is automatic composition, | because you are deciding a heck of a lot upfront. | https://en.wikipedia.org/wiki/Schenkerian_analysis | | The worked example also doesn't follow the stylistic rules that | would make it satisfyingly authentic as a variation in the style | of Beethoven. To calibrate: if you were to submit it as an | exercise for music A-Level in the UK (age 16 pre-university) I | don't think you would get a passing mark unless your teacher was | feeling particularly generous. | | But on the other hand, Classical style is incredibly refined and | specific. They could have had much more success producing | something following the example of Messiaen, who wrote a specific | set of harmonic and rhythmic rules he was going to use for all | his compositions which would be relatively easy to encode in a | program. ("The technique of my musical language" is the 2-volume | book I'm talking about and it's completely amazing btw. He really | was an incredibly extraordinary person). | | https://www.scribd.com/document/355450046/Messiaen-Olivier-T... | qrv3w wrote: | This is brilliant- nicely written and a great introduction into a | neat approach for generating music. The resulting piece is a very | convincing piece of classical music too! The simplicity in | developed Python framework for this kind of music generation is | inspiring- I like the functional approach with defined core | elements. | | Reverse engineering music is hard, music has patterns but it also | has patterns of breaking patterns. I think the heuristics here | for compostable repetitive elements that repeat, reduce, and | elaborate is a neat approach-very fractal-like in a way. | | I'm looking forward to reading the other articles submitted by | you! | mannykannot wrote: | You may also find this interesting, about the composer David | Cope, the programs he created, and the way they were received: | | https://psmag.com/social-justice/triumph-of-the-cyborg-compo... | adamnemecek wrote: | I'm working on an IDE for music composition. Launching soon | https://ngrid.io | meowtimemania wrote: | I looked at the home page and it sounds interesting! In what | key ways will your software be different than existing ones? | adamnemecek wrote: | It will actually understand music theory. | motohagiography wrote: | What a beautiful write up and description. In naive pursuit of | related ideas with less of a grounding in music theory, I use | something called a "fractal sequencer," in my modular rack which | is like a normal linear sequencer you would find on a synth, but | with mutation, recursion, and iteration. This idea of | subperficial and deep structure the author talks about, and a | fractal tree with trunks and branches, are closely related, and | it maps very well to this description. I wanted to see if I could | use fractals to generate consonant melodies that were | indistinguishable from pop music using patterns called 1/f noise. | The idea was I wanted to see whether by just adding musical | entropy in the form of 1/f noise to a repetitive pattern if it | would be interpreted as persuasively "new" and "interesting," to | our brains. My own result is just a rough live take from messing | around with it ( https://soundcloud.com/n-gram-music/beatrice ) | but if you want to know what a consonant autogenerated pop | fractal sounds like, the upper solo line over top of the three | note melody is produced by on a Qu-Bit Bloom sequencer iterating | over a bunch of 4ths and 5ths and driving its own oscillator. | Similarily, I recorded one with with a more early 80s electronica | tone that is less fun, but more atmosphereic in iterating through | the space of possible melodies (https://soundcloud.com/n-gram- | music/decade) | | This ch0pi1n python library looks supremely interesting, as when | we listen to music, we're really expressing structures and shapes | in consonance and dissonance with each other where each | elaborates facets of the others. These are if not functions, at | least algorithms composed over types. The author's description of | these is just the right level for deriving and applying a logical | architecture without diving into some bonkers numerological | gematria. The post is a beautiful way of thinking about these | forms. I look forward to revisiting it and playing with the | library. | coldcode wrote: | The analysis was interesting but the end result was pretty | terrible. Of course music in the past was often considered | terrible by the following generation, a trend that still exists | today. | | What I would really like to see is an attempt to write multipart | contrapuntal works like Bach with some kind of AI. The rules are | fairly well understood, but Bach knew how to adapt and even | violate them all but still wind up with amazing pleasant music. | ekianjo wrote: | sid meier had a software like that he created for the 3do | hackoo wrote: | Is "the end result" the Beethoven's sonata in Japanese scale? | | If so, the most important reason that it sounds terrible is the | music is generated with MuseScore, without adjusting dynamics, | tempos, etc. Actually, the Beethoven's original sonata in this | blog is also generated with MuseScore, and it sounds not so | good even with dynamics added. | | However, this is why I agree that deep leaning is more | promising than this manual approach, since too many variables | you need to adjust to make music sound good rather than | syntactically correct. | rsfern wrote: | Meh. There's plenty of deep learning music generation stuff out | there, this is still a really cool approach | | I think it would be cool to combine the two. Instead of | generating raw midi, your GAN or reinforcement learning agent | or whatever could try to generate sequences of transformations | to melodic fragments. Neural program synthesis type stuff. | | Or maybe one could build an automatic music analysis tool that | can start from the score and try to infer the program that | generated them. (Is that a thing already?) | Rochus wrote: | See e.g. https://github.com/feynmanliang/bachbot. The companion | site is no longer available, but here are some results on | soundcloud: https://soundcloud.com/bachbot | | Here is another very good one: https://openai.com/blog/musenet/ | | I'm a trained musician myself and interested in automatic music | composition following the progress for the last thirty years, | but only recent work (like the ones referenced) produce | convincing results (besides Cope's work of course, but which | required manual selection and editing). | | You might also be interested in this survey paper: | https://arxiv.org/abs/1709.01620 | zozbot234 wrote: | This comment should not be disregarded so easily. The reason | why deep sequence learning has the best results in generating | complex, highly contrapuntal music (it's more like noodling or | improvisation than an actual compositional process, but it _is_ | generally compelling at its best) is precisely because of the | loosely grammar-like structure mentioned in OP. The algorithmic | operations they play with are not very well defined but the | background theory is sound, and closely reflects what music | theorists and composers in general have written about the | subject in the 500 years or more it has been seriously studied. | | As for deep learning models which create good contrapuntal | music, see e.g. 'Biaxial RNN' | https://github.com/danieldjohnson/biaxial-rnn-music-composit... | by Daniel D. Johnson, who is now at Google Brain but wrote this | as an independent(!) researcher. (Note that the existing code | requires Python 2.x It would be interesting to forward-port it | so it can work with Python 3.x and a maintained version of | Theano. Replicating the model using Tensorflow would also be | quite worthwhile.) | | If you're interested in Bach's work specifically, the "BachBot" | and "DeepBach" projects are also interesting but less | accessible. | | Example output for all of these models can be found on the | Internet, just look around for it. The proprietary system AIVA | is also worth mentioning because even though it's so | proprietary and secretive, the compelling and "serendipitous" | music it manages to come up with is a tell-tale sign that it's | actually doing well-founded deep learning stuff behind the | scenes, much like the aforementioned open systems. Note that | much of the released output has been orchestrated (AFAICT) | manually by humans, but at some point I was able to find some | piano-format reductions that are most likely _very_ close to | what the AI actually created, somewhere on the official site. | p1esk wrote: | Deep learning needs a lot if training data. There's not | enough MIDI encoded music to train something like a GPT-3 | model to generate MIDI sequences. A better way is to train on | and generate raw audio, see OpenAI JukeBox. Unfortunately | it's extremely compute intensive (even compared to GPT-3), so | it will probably be a few more years until they (or some | other big player) releases JukeBox-2. | zozbot234 wrote: | The amount of data you need depends on the model | architecture you're using. A generic model like GPT-3 is | neither here nor there, but something specifically intended | for music can make do with very little data. | p1esk wrote: | What do you mean "neither here nor there"? | zozbot234 wrote: | The structure of something like GPT-3 is far too weak and | general to achieve good results for something as | structurally complex as music. It's designed to generate | text - and then mostly natural language text. Music is | very different, as OP hints in the linked post. | p1esk wrote: | I thought you wanted to use deep learning. In DL | transformers are the best we got currently. Both JukeBox | and MuseNet use transformers. What makes you think they | are not up to the task? | whiddershins wrote: | I don't agree at all, and it's not even experimental. | | And I think that is not a very nice thing to say about other | people's work. | TheOtherHobbes wrote: | The reason the end result is pretty terrible is because | classical harmony and melody are closely related, and you can't | job-lot-replace one without ruining the other. | | This project is quite similar to something I've been working | on, but I realised early on that you can't split up features | like this and get credible results - credible meaning | "appropriate for the style grammar." | | It's a bit - only a bit, but let's go with it - like trying to | generate sentences by swapping out nouns and adverbs. You end | up with something that is grammatically correct in theory but | makes no sense in practice. | | Classical music particularly is fundamentally _integrated_ in a | way that textbook analysis doesn 't fully explore. | klyrs wrote: | "Pretty terrible" is awfully strong. I've heard a lot of | _terrible_ music and this doesn 't make that cut. What you're | reading is a nice writeup of some theory, with a worked example | to showcase how to utilize some features of a library which is | a work in progress. The author even notes that the music is | simplified for the example. It isn't meant to _be_ Bethoven. It | isn 't even AI. If you want to see AI, other people have done | that already. | | What's cool about this library isn't the quality of the (midi, | retch) output -- what's cool is the actual Python library | behind it, and the writeup, which are both super easy to read | and follow. ___________________________________________________________________ (page generated 2022-02-13 23:00 UTC)