Forums > MaxMSP

generating dodecaphonic sequences in Max MSP

March 3, 2007 | 3:08 am

Hi. First of I`m new to Max Msp (sorry for bad English).

Here`s my issue.
I need to do sth for school with Max within the next week.
Its a series of random dodecaphonic sequences (each sequence made up of 12 notes that cannot be repeated). Also, the duration of each note has to be generated randomly. I have no idea how to do this although Ive been investigatin and trying many things. Can anybody help me out?
Thank you


March 3, 2007 | 6:43 am

You should look at the urn object for your 12 tone row. For the random durations you will need to use a metro object and a random object. If your pitch classes need to output in frequency then put a mtof object in there.

Andrew


March 3, 2007 | 11:51 am

hi -

have a look at Karl-Heinz Essls work (RTC)

http://www.essl.at/works/rtc.html

Am 03.03.2007 um 04:08 schrieb Natalia:

>
> Hi. First of I`m new to Max Msp (sorry for bad English).

> Here`s my issue.
> I need to do sth for school with Max within the next week.
> It`s a series of random dodecaphonic sequences (each sequence made

> up of 12 notes that cannot be repeated). Also, the duration of each

> note has to be generated randomly. I have no idea how to do this

> although I`ve been investigatin and trying many things. Can anybody
> help me out?
> Thank you

mit freundlichen Grüßen,

Matthias Schneider-Hollek

digital masters
c/o Musik der Jahrhunderte
Siemensstr. 13
7o469 Stuttgart

studio: xx-49-711-6o7o78o
mobil: 0178-4088162

http://www.digitalmasters.de
http://www.hollek.de
http://www.durbanpoison.info
http://www.elektrominibarklingelton.de


March 3, 2007 | 1:17 pm

Quote: n.a.t. wrote on Sat, 03 March 2007 04:08
—————————————————-
> Hi. First of I`m new to Max Msp (sorry for bad English).

> Here`s my issue.
> I need to do sth for school with Max within the next week.
> Its a series of random dodecaphonic sequences (each sequence made up of 12 notes that cannot be repeated). Also, the duration of each note has to be generated randomly. I have no idea how to do this although Ive been investigatin and trying many things. Can anybody help me out?

Did you try asking your teacher? If he gives you the assignment he’ll probably be able to point you in the right direction..

> Thank you
—————————————————-


March 3, 2007 | 9:59 pm

Quote: Andrew Burke wrote on Sat, 03 March 2007 03:43
—————————————————-
> You should look at the urn object for your 12 tone row. For the random durations you will need to use a metro object and a random object. If your pitch classes need to output in frequency then put a mtof object in there.
>
> Andrew
—————————————————-

I cant ask my teacher because this is the final assignment for the subject and I wont be seeing him until the day I hand in my work.

Let me explain a bit better the context of the program:
The program will be triggered by pressing one note on a midi keyboard (which will also reproduce the notes of the program)
Having only one trigger is a problem for the urn object since it needs to be triggered constantly to generate all 12 values (and the keyboard note can only be pressed once)
I though of inserting a metro object between the first trigger and the urn, but this is also a problem because the metro object needs an argument for the time intervals. Since each note will have a random duration and they need to sound as a sequence (not simultaneouly) this will cause a problem.

Basically I need to figure out how to generate the triggers for the urn once the first note with random duration has finished and so on. Any idea how to do this?


March 4, 2007 | 2:54 am

Sure, you can use urn driven by metro. Just randomize the speed of metro with each bang. I would set a range (which could be altered with a slider or something for relatively faster or relatively slower note-ons–let the slider set the maximum for the random output, then divide by 5 or 8 or whatever to set a minimum that is relative to the max). The metro can bang the random object which then sends a new value to metro. Then every bang is followed by a random time interval before the next bang.

The next thing is to decide if you want the resulting note durations to be equal to the time until the next bang, or a particular fraction of it, or a randomized value that is still relative to it.

While you’re at it, you may choose to randomize the velocities within a range, as well as the octave placement of each pitch class.

Good luck with your project.


March 4, 2007 | 3:37 am

I hope the OP doesn’t mind if I ask a question here. I read the first post last night and I started trying to do this assignment for myself (I’m also a beginner).

I’ve gotten as far as being able to create a row in a text field as well as being able to trigger the urn with a metro that is randomized. Where I’m stuck is how to translate my list of pitch-classes (in this case the integers 0-11) into MIDI notes either constrained within an octave or randomly dispersed through different octaves. Since the urn object will only deal with numbers from 0 to one less than the specified range, I can’t figure how I can make 0 equal MIDI note 60 (or any other pitch-class C).

I think I’ve already figured how to randomize the velocities and durations, it’s just getting the sounding notes to correspond to the Mod-12 pitch-class designations. Or should I not be using the mod-12 integers in the first place?

Thanks,

David


March 4, 2007 | 7:55 am

Thank you so much for all your help.
It`s 4:50 AM and I finally managed to make it work.
I even randomized the Midi program for each note so it makes it more interesting.
Going to bed now. Thank you again.


March 5, 2007 | 4:00 am

——————

I’ve gotten as far as being able to create a row in a text field as well as being able to trigger the urn with a metro that is randomized. Where I’m stuck is how to translate my list of pitch-classes (in this case the integers 0-11) into MIDI notes either constrained within an octave or randomly dispersed through different octaves. Since the urn object will only deal with numbers from 0 to one less than the specified range, I can’t figure how I can make 0 equal MIDI note 60 (or any other pitch-class C).

I think I’ve already figured how to randomize the velocities and durations, it’s just getting the sounding notes to correspond to the Mod-12 pitch-class designations. Or should I not be using the mod-12 integers in the first place?

————————

Have another random object (hooked to the pitch-generating metro, be sure it gets fired first) that spits out numbers from 0-9. This is multiplied by 12 (so a 4 would generate 48, or 4 octaves). Add that to the randomly (urn-selected) pitch of 0-11, and voila, octave transposition. Put a gate before it gets added to the pitch, and when this is off, the new notes will stay in the current octave (the last 0-12-24-36-48-whatever) number that was sent to the addition object.

The %12 is not technically required in this case (urn restricts the numbers to 0-11 already). However, the % is VERY useful in other situations—like the reverse of the above—how would you determine what octave an arbitrary pitch is in, and which pitch class (0-11) the note is? A combination of / and % will get you there.

Where else to use mod? Stick a %2 –> sel 0 after a counter and you’ve cut the tempo in half… %4 is a fourth… well, you get the picture.

Try this out:

max v2;
#N vpatcher 15 55 523 324;
#P window setfont "Sans Serif" 12.;
#P window linecount 1;
#P newex 281 48 161 9109516 bgcolor 120 120 120;
#P window setfont "Sans Serif" 18.;
#P comment 28 71 191 9109522 Will go negative too;
#P window setfont "Sans Serif" 24.;
#P number 183 128 55 24 1 0 1 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P window setfont "Sans Serif" 12.;
#P newex 132 165 50 9109516 % 4;
#P message 132 211 66 9109516 set $1;
#P window setfont "Sans Serif" 36.;
#P number 77 111 81 36 0 0 0 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P window setfont "Sans Serif" 18.;
#P window linecount 2;
#P comment 265 128 191 9109522 Set the size of the loop you want;
#P fasten 2 0 1 0 45 159;
#P connect 1 0 3 0;
#P connect 3 0 2 0;
#P connect 4 0 3 1;
#P pop;


March 6, 2007 | 4:37 am

Thank you for the reply, seejayjames.

That solution worked perfectly for producing the random transpositions.

I’m embarrassed to admit that I’m too ignorant to know what that list of code you sent at the bottom of your post is telling me to do. If you can give me a clue I’d appreciate it.

As far as using %12, I was really only using it to send to a thresh that would then spit out the row in 0-11 integer form. The next hurdle I’m meeting in that area is how to make those integers show up as pitch-class note names in the text field.

The other step I’m having trouble with is constraining the pitches to a certain range. I’d like to cut out the octaves that are too low to hear easily as well as the ones that are so high they make my cat go insane!

I tried the clip object but that gives me duplicate pitches.

I’ll keep digging. Thanks again!


March 6, 2007 | 5:05 am

Not to be embarrased–it usually takes people new to this forum a bit to figure it out. It’s a Max patch in its text form. Simply copy the code and paste it into an empty patcher. Works the other way too: copy from your patcher and paste into a text environment. It’s an example. I and others hadn’t sent you explicit examples before probably because we knew you were doing a class assignment. CJ’s snippet is just illustrating how you might be able to use [%].

Sounds like you got through your assignment in good shape.
Happy Maxing–


March 6, 2007 | 5:10 am

Sorry stringtapper–I just realized you weren’t the OP. Anyway, that’s the answer to the query. I think these kind of MIDI-based automated-player-type assignments are great for honing max skills.

Best,
Tim


March 6, 2007 | 5:46 am

Quote: tim_thompson@mac.com wrote on Mon, 05 March 2007 23:05
—————————————————-
> Not to be embarrased–it usually takes people new to this forum a bit to figure it out. It’s a Max patch in its text form. Simply copy the code and paste it into an empty patcher. Works the other way too: copy from your patcher and paste into a text environment. It’s an example. I and others hadn’t sent you explicit examples before probably because we knew you were doing a class assignment. CJ’s snippet is just illustrating how you might be able to use [%].
>
> I think these kind of MIDI-based automated-player-type assignments are great for honing max skills.
—————————————————-

Text form, of course! Thank you Tim!

Quote: tim_thompson@mac.com wrote
—————————————————-
>I think these kind of MIDI-based automated-player-type assignments are great for honing max skills.
—————————————————-

Which is exactly why I took up the OP’s assignment as my own when I read about it. I’m taking a comp class where I should be a little farther along with Max than I am, and this was the perfect activity to really get myself going. Just from what I learned over the weekend making this patch I was already more engaged and less lost in class today.

Thanks to everyone who’s helped and to the OP for asking the initial question.


March 6, 2007 | 5:48 am

To cut out the low and high octaves, just choose a range (say 4 octaves) and make that your setting for random. Then you’ll get 0-3, just add however many octaves you need to make the sound tolerable for you and your kitty ;) (Probably go for octaves 4-8 or so, depends a lot on the instrument used—which you change with pgmout, by the way, to one of the 0-127 MIDI instruments.)

For the pitch-class note name, the easy way is to use an integer number box instead of a text field, choose Get Info… and choose Display Style–Midi Note Names. This will do it automatically (though it’s only sharps, no flats). The longer version, though with more control, is to make a coll with 128 elements— 0 = C-2 (or whatever it is), 1 = C#-2, etc. It would start like this:

0, C-2;
1,C#-2;
2,D-2;

etc. Then your integer value gets sent into the coll as an index and your note name (everything after the comma in that line) gets spit out. Use prepend set –> message box to see it, as these are symbols. (Or a set message to the text field if that’s what you are using.)

A lot more work but might be a good exercise….. and the coll could be used in many other places, once it’s built. You could also do another one with flats and have a choice of display style.

–CJ


March 6, 2007 | 7:43 am

This is great stuff! I really appreciate all your time.

I’m going to work on this and then I’ll tell you guys how it goes.

Thanks!



f.e
March 6, 2007 | 7:52 am


Viewing 16 posts - 1 through 16 (of 16 total)