harmv2~ (Harmonizer)
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.
> (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
In the examples folder of Max, there's something called "transposer" which does basically the same thing as the widely known harmv2~.
Best,
ej
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.
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 ;-)
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
If you do something like that and save it as transposer2... then you have something close to harmv2~.
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
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:
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~:
But your version is far easier to understand. With the Ircam one, students get more the feeling of being rocket scientists ;-)
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
www.elasticmax.co.uk
//// 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
{
note_array[i] = arguments[i];
}
note_str = note_array.toString();
}
function msg_int(a)
{
var note1 = a + transpose;
while(note_str.search(note1) == -1)
{
note1++;
if(note1 > 150)
{
break;
}
}
outlet(0, note1);
}
function set_transpose(a)
{
transpose = a;
}
// end of js file //
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.
______
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!
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
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?
Sorry Michael,
I just saw the OSC stuff in the CNMAT folder. I'll give it a read.
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
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.
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?
Michael,
Your harmv2~ is working like a charm. It is spot on.
Thanks for that.