Algorithmic Composition + An Introduction

  • Hi All,

    So great to finally be a part of this community. I've been lusting over the Monome since I saw Daedalus live at a rooftop after party a few years ago.

    My name is Alex Brown and I'm a web developer/hobbyist musician. I picked up a 256 Monome on ebay a few weeks ago and I'm in love. It's just as useful as I imagined and about 100x more inspiring (just looking at the thing does the trick).

    ------------------------------------------------

    Algorithmic Composition:

    I wanted to make my first thread here interesting as opposed to just "Look at me I'm new!" so I thought I'd inquire as to whether anyone here is into algorithmic composition? You certainly seem like a community that would be.

    I'm working on a new project (my first Album... most likely self released) titled "Music is Math" inspired almost entirely by the Monome. I'd like to dive into algorithmic composition for the project.

    I'm brainstorming a program I'd like to write. It'll allow me to do the following:

    1) Input any melody. (Ideally as midi so it'll have timing / velocity data as well as pitch)
    2) Calculate the probability of each unique note moving to another note (or back to itself). [ie. In the simple Melody "ABCC" A moves to B 100% of the time, B moves to C 100% of the time, C moves to C 50% of the time and to A 50% of the time]
    3) Create a Markov Chain with this data.
    4) Run chain output Pitch results.

    Now you've got a somewhat 'random' (albeit based upon the initial structure) note generator. But it's got no rhythm!

    You could have the same program figure out the percentage chance that the note will occur on a 1/2, 1/4, 1/8, 1/16, 1/32 (etc) ... create another Markov Chain, and have them run simultaneously. This Markov chain is a timer that essentially tells the other one when to fire. Now the midi can out put with different, randomly generated Rhythms too.

    One day I'd like to use the monome as an input device to be able to manipulate(change variables, swing, initial melody) the chain/algorithm.

    My question: Are people already doing this sort of thing with the Monome? It's something I'm highly interested in, but it's feels a bit over my head.

    Thanks,
    Alex

    PS. Here's a little video I made of myself jamming some loops I recorded my second day with the thing. Nothing fancy, but oh well. http://www.youtube.com/watch?v=m37dmyoMqNA

    PPS. My Soundcloud is here (although it currently has no tunes on it... I deleted all the 'sketches' in the name of posting more complete tracks): https://soundcloud.com/modfreq

  • modfreq, welcome! What your describing sound like a fun and clearly formulated project. Im currently working on a program written in Clojure (making heavy dose of Overtone) as a catalyst to making me learn a new programming language. Essentially, i want to mutate samples with generative algorithms, incorporating some diffusion limited aggregation simulation algorithms.

    I really encourage you to check out Overtone on github and get hacking with it. Emacs Live (written by the founder of Overtone) works wonders if you want to hack your way to the sketch of a program. Once you feel like your up for it, you can just grab a book on Clojure programming to add more depth to your code. However, you can accomplish tonnes with just messing around in Overtone and using the built-in help command. Overtone has functions for listening to serial ports or any OSC server running on your machine (i posted on the overtone google group about how to get serialosc talking to Overtone). An hour or so working on that should get you to a point where you can start solving your specific problem.

    Go for it! It sounds like you've got an awesome project idea! Yaaay!

  • Have you used the app parc?

    http://docs.monome.org/doku.php?id=app:parc

    Although it's not 100% what your talking about it might give you some implementation ideas. It's a step sequencer which allows you to set more than one note per step and the software chooses which note to play.

  • i would suggest investigating what is already out there, i've tried to reinvent the wheel a few times, but you'll need some serious chops to beat the likes of parc or XOR -

    http://docs.monome.org/doku.php?id=app:xor

  • @modfreq
    You may find this interesting:
    http://intermorphic.com/tools/noatikl/

    I'm not sure you can feed it tunes in the way you describe, although it certainly does probabilistic transitions between notes (you can specify the note pallette) and durations, and it can do probabilistic transitions between phrases IIRC.

    I'd be interested to hear your thoughts on how you'd interface algorithmic composition with a monome: I would have thought that one would let the algorithm do it's thing, then play a retrospective curatorial role.

    Are you interested in using cellular automata for composition? That would be more straightforward to make an interventional interface with a monome, to my way of thinking.

    Regards, Chris.

  • http://cycling74.com/toolbox/xy-markov-player/

    some fun in max/msp that could easily be bent to your will

  • Wow.

    Thanks for the warm welcome everyone.

    @Vurma - Thanks. I will definitely look into Overtone. I'm gonna need to dive into a new language myself as I'm currently a PHP & .Net guy :D

    @jhindsight - Awesome! I hadn't seen parc yet. I'll download it now, play with it and steal some inspiration. ;)

    @tinitus - Ya, I hear you. I can't tell you how many jQuery plugins I've reinvented just for the hell of it though. Figuring out the "how" and implimenting it is half the fun as far as I'm concerned! If serious chops is what it'll take, than I guess serious chops is what I'm on the hunt for.

    @chrisbob12 - Thanks for the link. Definitely something I'll look into! My thoughts for interfacing algorithmic composition with a monome are pretty basic, at best... and everything is entirely conceptual at this point with literally 0 proof of concept. Basically, I thought the monome could feed the algorithm some values for variables so that you could 'guide' the algorithm so to speak. Truth be told, I'll have to research cellular automaton. Thanks.

    @wednesdayayay - Wow, awesome. I'm gonna have to dive under the hood.

    You guys are awesome, glad I finally posted.

    -Alex

  • great idea man. the concept of mathematical composition is a beautiful theory, you will be following in some hefty footsteps with this one. i would just ask if you are aware of the song "music is math" by boards of canada? it might confuse people if your project bears the same monicker. good luck!

  • I am not familiar with the BoC song. Never listened to too much of their music. I suppose I'll have to think it out more before I settle on an official name. Thanks for enlightening me.

  • Modfreq, an example of what im hacking on currently: https://vimeo.com/59800767