Violin Harmonization Problem
I am working on a piece for violin and electronics. I want to be able to harmonize the violin with a basic harmonizer (or transposer.) What I want to do though is build the harmony up over time which will require multiple harmonizers (not too big of deal I do not think.) But the main thrust is that I want the harmony to change with each pitch. So for example if I have a passage of sixteenth notes I want each note to carry its own harmony i.e. the first note may be harmonized with a single note while the second is harmonized with 5. Does that make sense?
My thought with this was to send the desired transposition to a particular harmonizer(s).
To get the correct transposition though I need to know that pitch data coming in. For this I was thinking fiddle~ or pitch~ neither of which I have worked with to a great deal. I am concerned about portability with them. My question is is there another work around such as using signal strength or some other technique or this the best way to come at this?
what you are after is called score following and big institutions like the ircam in paris spend big money on researching that. if you don´t have access to their (payed) software, you can read up on that googling arshia cont and antescofo.
a few practical suggestions:
pitch recognition is very well done with the sigmund~ external by miller puckette. imho the best out there.
depending on the tempo of your piece, 16th notes might be too fast for a computer to recognize individually.
you may either detect attacks and have them trigger a list of desired harmonys or consider a semi-autonomous system, where a human collaborator advances together with the violin (or a footpedal for the violinist)
if you really need it to be totally autonomous, you have to compromise on the exactness of the score or construct the score in accordance with your technical setup.
thats a decision only you can make, but its a worthwile endeavour to experiment with
I do have the IRCAM stuff but I have as of yet not been able to really understand Antescofo. I think it is a fantastic idea, I just have not had time to spend to try and fully understand it. The documentation on it is not the best (that very well could be because i am too dense to get it.)
–you may either detect attacks and have them trigger a list of desired harmonys or consider a semi-autonomous system–
THis may be the best way right now. I want to be pretty specific with my harmonies but perhaps I’ll need to use some line objects to get changing pitches so as not to get parallel movement that I would get with having the parameter stay the same over the duration of the motif.
–where a human collaborator advances together with the violin (or a footpedal for the violinist)–
another option but I hope to keep this down to one person. We’ll see. Thanks for your input.
You might want to take a look at Boulez’s Anthèmes 2. The score has a technical manual that describes the DSP modules one needs to build in order to perform the piece. One of these modules is "Harmonizer". According to the descriptions of the modules, Boulez used a score follower in this piece. The modules are describe in a generic way, so it may not be exactly what you need, but it may help out a bit.
I was able to get a look at the score via inter-library loan through my institution’s library. Not sure if that is an option for you.
Anyway, hope this helps out a little,
Detonate is a pretty good score follower, and is basically the same as what Philippe Manoury used in the piece Jupiter last century. It is a little complex, since it has some smart methods for dealing with performance and analysis errors.
I’d be curious to hear how fzero~ performs in comparison to sigmund~. sigumund~ might have the edge, especially for violin.
Most of the harmonizer techniques I can think of introduce some sort of latency. Same for pitch trackers. So, there is going to be a limit to the results you can get when harmonizing a fast passage. You might get more satisfying results by guessing the performer’s tempo *before* the fast part, and then driving harmonizer changes at that rate. Then you could anticipate the note a bit, rather than waiting for it to happen. Or, you could assume the player is playing the right pitches and just do some onset detection. It all depends on exactly what you need.
Mitch and mzed, these are great ideas. Thanks for your input. I won’t be bale to get back to it until next week but I’ll certainly mull this over.
I think you’re right with the onset detection. That seems very feasible.
If I can clear the rust out of my head maybe I’ll post a patch up soon.