On Thu, Sep 27, 2001 at 10:49:50PM +0100, [EMAIL PROTECTED] wrote: > On Tue, 25 Sep 2001, Michael Stutz wrote: > > I'm curious about what kind of work everyone's doing lately. > > still writing code to make music. getting more into the relationships > between notes, making each object a note and letting them interact (is > this called agent based music?).
I don't know about the terms, but I was wondering if anyone other than me was trying to write music via scripts (python in my case). I also have a long-term project that so far is probably useless to all but myself, though I'm hoping the next release will actually be generally useful. Read about it at http://www.slinkp.com/code/index_html#pysco Right now I'm primarily working on how to express musical structures and time relationships in a generic yet powerful way. I think I've come up with a pretty cool object-oriented approach. Here's a quick, trivial demo of composing via scripting in python: (feel free to stop reading now) from pysco import * a = Note(... arguments here...) b = Note(...) c = Note(...) # Some ways to organize notes... section1 = a + b + c # this means "a followed by b followed by c" section2 = a | b | c # this means "a, b, and c at the same time" section3 = a * 4 # this means "a four times" # Of course, you can mix and match the operators, # and build up layers of structure movement1 = section1 * 2 + (section2 | section3) # Some other methods that might be useful... movement2 = movement1.copy() movement2.reverse() # Yes, reverse the order of the notes # put it all together song = movement1 + Rest(7) + movement2 # All the musical data is abstract, so when we finally want # output, select from several possible types of output: # midi, csound, maybe others song.selectOutput(type="csound", file="test.sco") song.play() # renders everything as a csound score file That's about all there is to it at the moment. The idea is that it will get much more interesting once it's useable as a framework on which to build things like - objects that interact and modify each other ("agent based music" or whatever you want to call it) - objects that generate large numbers of other objects depending on realtime user interaction, or fractal equations, or random data, ... - RAD for experimental music applications with GUIs My next big plan on this path is support for nested time relationships. E.g. wild weird things like this: object X has a tempo of 1/2 its parent object's tempo. Object Y has a tempo of 2/3 its parent object's tempo. Wrap X and Y in a container object, C, whose tempo starts at 60 bpm, then takes 16 beats to accelerate to 120 bpm, then stays at 120 bpm. If each object, when played, merely makes a tick on each beat, you'll hear something like this (please excuse bad ASCII art): time in seconds (approximate, I haven't done the math) 0 1 2 3 4 5 ---------------------------------------------------------------------- C C C C C C C C C C C C C C CCC X X X X X X X X X Y Y Y Y Y Y Y Y Y Y Y YY Can you say polyrhythms? I don't know if that makes any sense to anyone other than me, but I'm pretty pysched about it... if only I can figure out the implementation! > > > Also wondering if anyone's tried out any new tools, what software > > you've been using. Too busy... but there's plenty I want to check out. Really looking forward to DLP's "new improved" Snd. Ecasound is very cool, though I still haven't figured out exactly how to make the most of it. For work I'm heavily using reportlab now, which might be interesting to computer artists ... generate PDF output from python scripts. -- ................ paul winkler ................ custom calendars: http://www.calendargalaxy.com A member of ARMS: http://www.reacharms.com home page: http://www.slinkp.com
