Forums > MaxMSP

ddg.mono to make a melodic midi phrase containing polyphony into monophonic midi

August 5, 2011 | 2:22 pm

Hi,
I have a midifile containing a melody with certain parts of it being polyphonic.
I want to turn the midifile monophonic in a similar way to playing the polyphonic midi with a monophonic synth, with last/low/high priority etc i.e ddg.mono

Thanks


August 5, 2011 | 5:00 pm

Should I use borax and through or peak to find highest or lowest note if more than one note held down?


August 5, 2011 | 5:00 pm

Should I use borax and through or peak to find highest or lowest note if more than one note held down?


August 7, 2011 | 11:55 am

I kind of thought this is what ddg.mono was doing right out of the box,
do I need to make a lind of complicated patch to achieve this, or am I misunderstanding?

Thank you


August 7, 2011 | 11:55 am

I kind of thought this is what ddg.mono was doing right out of the box,
do I need to make a lind of complicated patch to achieve this, or am I misunderstanding?

Thank you


August 7, 2011 | 4:18 pm

Hi flowdesigner

I had a bash at this, with somewhat limited success using [borax], [zl group] and [zl sort 0]. I guess the degree of success depends on how dense the polyphonic texture is, and how regular/irregular those textures are. It might help if you posted an example patch, cos we’re kind of in the dark here.

Brendan


August 7, 2011 | 4:18 pm

Hi flowdesigner

I had a bash at this, with somewhat limited success using [borax], [zl group] and [zl sort 0]. I guess the degree of success depends on how dense the polyphonic texture is, and how regular/irregular those textures are. It might help if you posted an example patch, cos we’re kind of in the dark here.

Brendan


August 8, 2011 | 12:18 pm

How are you getting the note data out of your MIDI file and into the Max environment?


August 8, 2011 | 12:18 pm

How are you getting the note data out of your MIDI file and into the Max environment?


August 9, 2011 | 1:15 pm

Currently midi is getting into max with notein from a midifile playing from a midiclip in Live session view.

Thanks!


August 9, 2011 | 1:45 pm

So why aren’t you just using ddg.mono right "out of the box"? If you look at its help file, you can just basically remove the kslider and integer boxes, and just connect the notein right to the ddg.mono. I haven’t done this, but should work I would think?


August 12, 2011 | 9:42 pm

That is what i did

– Pasted Max Patch, click to expand. –

but that did not work, I recorded the midi stream after the ddg.mono in a new Live midi clip, and polyphony was still occuring


August 12, 2011 | 11:25 pm

Patch looks fine to me, not sure what’s up….


August 13, 2011 | 12:20 am

You could try inserting [poly 1 1] after ddg.mono, like this

– Pasted Max Patch, click to expand. –

August 16, 2011 | 8:55 pm

I’m late to this thread, but I have an abstraction I call cbm.mono (after ddg.mono) that takes a MIDI stream, and makes a MIDI-compatible mono stream (last note priority.) It can be found here: http://www.xfade.com/max/examples/


April 10, 2012 | 10:20 am

Thanks, Chris

but is not dd.mono also meant to do this?


May 27, 2012 | 5:17 pm

anyone able to make this work with noteout and basic objects patched in a smart/simple way?


May 28, 2012 | 2:46 am

I just did some testing with this, and even changed the code to force a note-off at every note-on (a requirement for dealing with an intrinsically polyphonic synthesizer). Even with some code changes, we run into a difficult issue: the serial nature of MIDI notes.

For example, if we hit a chord stack on a keyboard containing C, E, G, D, the notes aren’t sent to the notein object as a chord stack; it is sent to notein as four individual notes in some arbitrary order. Let’s assume that the order is as shown (C, E, G, D). ddg.mono sees each note come in, stores it and sounds it in that order (if Last Note priority is chosen). When you release the notes, the note-off messages are also sent serially (in some arbitrary order), and may also sound because previous notes are being released from the storage stack, and a new note is becoming the ‘current’ note.

In doing some basic testing with Live, it appears that chord stacks are sent in low-to-high note order. Thus, even with changes to the code to support polyphonic synthesizer input, you get faux polyphony as the individual notes are all received, sounded, stored, then potentially re-sounded on key release.

Eliminating this problem would either require some sort of speedlim-like behavior, or receipt-time encoding/decoding – both of which are too fragile to consider at this time. If someone were to have a good theoretical alternative, I’d be willing to try to code it up.

[ddg]


May 29, 2012 | 10:26 pm

OK – so I’m working on the update, but you can check out this thread:

http://cycling74.com/forums/topic.php?id=40245

I’ve got a javascript object that will do what you want it to do, and is a mockup of what I hope to eventually put inside of ddg.mono.

Enjoy!

[ddg]


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