Forums > MaxMSP

harmv2~ (Harmonizer)

February 18, 2009 | 10:10 pm

I have some questions going in another related thread but this question is a bit different so I thought I would ask it in a new thread.

Is there something out there like the harmonizer found in the IRCAM jimmies that I can use? I need to be able to delay a line and transpose it like the harmonizer does. It is a great abstraction but I am having problems getting it to work with Max 5 and OS 10.5.6.

(I have a concert coming up next week in NYC and time is of the essence.)

Any thoughts?

Thanks.


February 18, 2009 | 10:30 pm

> (I have a concert coming up next week in NYC and time is of the essence.)

You’re lucky. In another thread [message #165739] I just posted an example of such a thing. It’s based on the same technique as harmv. It’s the basics, you’ll need to work on it a bit.

_
johan


February 18, 2009 | 11:08 pm

In the examples folder of Max, there’s something called "transposer" which does basically the same thing as the widely known harmv2~.

Best,
ej


February 18, 2009 | 11:55 pm

Johan: That’s close but still not it. I need to spend a little time with your patch to see how it actually works to get an idea of how to modify it.

EJ:

I looked at transposer~ and that handled the pitch side of things but doesn’t get to the delay that the abstraction harmonizer did.

The options on the IRCAM Harmonizer are a transposer, window size, delay, and output for both left and right channels. There is also a global volume for the entire output. Attached is pic to get an idea.


February 19, 2009 | 12:43 am

Quote: artmusicsouth wrote on Thu, 19 February 2009 00:55
—————————————————-
> Johan: That’s close but still not it. I need to spend a little time with your patch to see how it actually works to get an idea of how to modify it.
>
> EJ:
>
> I looked at transposer~ and that handled the pitch side of things but doesn’t get to the delay that the abstraction harmonizer did.

As it’s an abstraction you can modify it. To add the delay feature to transposer you just need to add an offset to the signal you send to tapout~. That’s how harmv2~ works.

> The options on the IRCAM Harmonizer are a transposer, window size, delay, and output for both left and right channels. There is also a global volume for the entire output. Attached is pic to get an idea.

Thanks ;-)


February 19, 2009 | 1:47 am

EJ< I think I see what you're talking about. I opened the transposer and saved it as another file so I didn't mess up that one. When I opened it though I could not edit it. Is there a way around that?

Thanks,

Mark


February 19, 2009 | 2:11 am

If you do something like that and save it as transposer2… then you have something close to harmv2~.

– Pasted Max Patch, click to expand. –

Note however that harmv2~ have the tapin~ outside, but that’s just a question of taste. You need to provide the maximum delay time as argument in this abstraction.
I hope there’s no patent on harmv2~;-)

ej


February 19, 2009 | 2:44 am

Quote: artmusicsouth wrote on Wed, 18 February 2009 14:10
—————————————————-

> Is there something out there like the harmonizer found in the IRCAM jimmies that I can use?

I have a harm2v~ replacement in the CNMAT MMJ Depot at:

http://cnmat.berkeley.edu/downloads

In fact, there is a lot or really shady math in that IRCAM harmonizer. I think the one I made is much better. Here are the guts, I also have a help file and a wrapper to make it drop into place for harm2v~:

– Pasted Max Patch, click to expand. –

February 19, 2009 | 3:19 pm

But your version is far easier to understand. With the Ircam one, students get more the feeling of being rocket scientists ;-)


February 19, 2009 | 3:21 pm

Hello,

Below is the harmonizer patch from the elastic videos, might be of some use…

It uses fiddle~ to calculate the midi note value of the incoming (monophonic) audio, then a js file that transposes by a set amount and then rounds up this transposed note to fit in to a predetermined scale. This is then converted to a transpose ratio which, in this case, is fed in to an elastic~ object. (Other pitch shifters are available!)

Simon
http://www.elasticmax.co.uk

– Pasted Max Patch, click to expand. –

//// js file save as "transpose_to_scale" ////

var transpose = jsarguments[1];
var note_array = new Array();
var note_str;
function list(a)
{
note_array = new Array();
var i;
for(i=0;i 150)
{
break;
}
}
outlet(0, note1);
}
function set_transpose(a)
{
transpose = a;
}

// end of js file //


February 19, 2009 | 3:53 pm

Thanks for all the help guys. I am working frantically here and your thoughts are very helpful.

____________

EJ:

That is what I am trying to do but I need to be able to transform an audio signal. I am not sure I can do that with what you have unless tapin~ and tapout~ can handle audio (I don’t think they do, do they?)

The piece is for flute and piano and both instruments are being transformed via the harmonizer. The patch involves both .aiff playback as well as the live transformation.

Michael:

What object replaces harmv2~? I don’t see which one it is in the collection.

Simon:

Can I use what you did with an incoming audio signal and not a loop? I would need to figure out how to delay that as well.

______


February 19, 2009 | 3:56 pm

Simon:

I like that patch a lot. I need to look at it some more. I am not using fiddle though. I am trying to track the pitches, merely alter them. I am using the harmonizer like a beefed-up delay.

Nice patch though!


February 19, 2009 | 5:09 pm

The elastic objects work from the buffer~, but you can always record the live signal in to the buffer~ and delay the start message sent to the elastic object. (Just have to make sure you’ve recorded enough in the buffer so that the elastic read head doesn’t pass the record head).

Simon


February 19, 2009 | 5:51 pm

Michael,

I’ve looked at your patch a little bit. I do not know what OSC is or how that impacts what i am trying to do. Can you briefly explain it or point to where i can read about it. (Bear in mind I am not very programming savvy.)

How do I get this to transpose and stereo delay the incoming audio signal?


February 19, 2009 | 5:55 pm

Sorry Michael,

I just saw the OSC stuff in the CNMAT folder. I’ll give it a read.


February 19, 2009 | 5:58 pm

Quote: artmusicsouth wrote on Thu, 19 February 2009 07:53
—————————————————-

>
> Michael:
>
> What object replaces harmv2~? I don’t see which one it is in the collection.
>
—————————————————-

There is a thing called harmv2~ in /CNMAT_MMJ-Depot/modules/Effects-audio/ It does nothing but hold my harm-gran~ abstraction. If you have multiple files called harm2v~, things are going to get confusing.

The abstraction I posted above takes the same data in its inlets as harm2v~, so adapting should be trivial.

mz


February 19, 2009 | 6:39 pm

To artmusicsouth:

For your project, you could just look at the "pitchshifting-playground.maxpat" example (in the examples / effects / transposer… or something like that). Try both qualities (transposer, or the gizmo~ version in the pfft~ gadget), and choose what the best quality is for your project.

Add delay if necessary.
By the way, of course, tapin~/tapout~ are audio objects. There is a "non-audio" connection between them, but they delay audio! (look at help files and tutorial 27 for more.)

What you really want seems to be a transposer, not a replacement for harmv2, right?

elastic~ is an external that provides yet another algorithm for transposition. You don’t need it for a first project. Some people use it after comparing sound quality and CPU usage.
J-F.


February 19, 2009 | 6:47 pm

Hi Michael,

I found your harmv2~ right before I saw this message. It looks like I could replace the IRCAM harmv2~ with your (I would need to remove the IRCAM version from the externals folder though). Is this correct?

If so that is the answer to my problem. All I would have to do a replace the two instances of harmv2~ and be done. Attached is what the inside of that stharms1~ patch looks like if that helps. I am sure you’ve seen it.

What do you think?


February 19, 2009 | 9:29 pm

Michael,

Your harmv2~ is working like a charm. It is spot on.

Thanks for that.


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