k y m a • t w e a k y — the kyma collective || view the current website || February 2015 Archive

/ WebHome / Sounds / Share.MonophonicKeyPolicyDiscuss


Share Section



All Sections


Login / Register 
Change password
Forgot password?

Symbolic Sound

Kyma Forum
Eighth Nerve

TWiki Links

TWiki Formatting FAQ
What is TWiki?
%SESSION_ENDIF% twiki.org

Monophonic Key Policy Discussion

This Sound implements a monophonic voicing policy where the pitch is the highest pitch of up to 3 keys being played on the keyboard.

Please refer to the Sound while reading these notes.

The Event Creator branch receives MIDI information from MIDI voices and transmits them as global controllers !KeyDown1, !KeyPitch1, !KeyVelocity1, !KeyDown2, !KeyPitch2, !KeyVelocity2, !KeyDown3, !KeyPitch3, !KeyVelocity3.

The Oscillator branch (with its ADSR envelope) has expressions in the Gate, Scale, and Frequency fields that combine the 3 sets of global controller MIDI information to give a single Gate, Scale, and Frequency.

Gate is

!KeyDown1 + !KeyDown2 + !KeyDown3 + ((!KeyDown1 max: !KeyDown2) max: !KeyDown3)

which will generate a voice steal (-1) on the first key down, will keep the key down (> 0) as long as one or more keys are down, and will generate a key up (0) when all keys are up.

Scale is

((!KeyDown1 sampleAndHold: (1 - ((!KeyDown2 max: !KeyDown3) max: 0))) * !KeyVelocity1) +
((!KeyDown2 sampleAndHold: (1 - ((!KeyDown1 max: !KeyDown3) max: 0))) * !KeyVelocity2) +
((!KeyDown3 sampleAndHold: (1 - ((!KeyDown1 max: !KeyDown2) max: 0))) * !KeyVelocity3)

selects the key velocity that goes with the first key to go down. It does this by using expressions like

!KeyDown1 sampleAndHold: (1 - ((!KeyDown2 max: !KeyDown3) max: 0))

which is 1 if the key down occurs when the other keys are up and 0 if the key down occurs when other keys are down.

Frequency is

((!KeyDown1 clipTo01 + !KeyDown2 clipTo01 + !KeyDown3 clipTo01)
        (((!KeyPitch1 * !KeyDown1 clipTo01) max: (!KeyPitch2 * !KeyDown2 clipTo01)) max: (!KeyPitch3 * !KeyDown3 clipTo01)))
  smoothed nn

which tracks the highest pitch of the keys that are down.

The first part of the expression causes the pitch to be tracked as long as any key is down, the tracked part finds the maximum of each pitch times the corresponding key down (which eliminates pitches for keys that are not down from being selected). The result is smoothed to give a portamento-like effect, and then the units of nn are specified.

-- KurtHebel - 10 Mar 2004

Hi Kurt

This seems to emulate most of the earlier mono synths although the moog was lowest note priority I'm told but I never owned a moog, so maybe someone who did could confirm this.

The latter mono synths like the SH 101 had last note priority but still had the ORed gate system as per your example. This had the advantage that the player didn't have to worry so much about the time they took thier finger off the keys. Quite often with the earlier synths you would hear down ward phrases being played with the timming not quite right. This was because even though the player was pressing the keys spot on beat he wasn't removing his fingers on beat. One had to learn to play the notes before the beat and remove the last note on the beat (but only for downward phrases).

Some of the earlier synths and most of the latter synths had NPD (New Pitch Detector) as an option. This in effect made a retrigger every time a new pitch was present (not when a new pitch was keyed) i.e. when downward phrase were played the retrigger would happen because a finger had been removed not because a new key had been played. This is probably a not so desirable feature but the ability to turn off the ORed gateing and have every relevent note played doing a retrigger is desirable. This should be live switchable. I've just realized we can't know if a note is going to become relevant at the time it is played, so maybe the NPD tecnique is the only possiable method. This is something that the last note priority keyboard can deal with very easaly.

As far as velocity goes I don't think any of the earlier (highest note priority) synths had it, so there is no standard policy here But with the latter synths the velocity changed with every new note played. Maybe the velocity of every note at the time it was keyed should be stored and that velocity asserted every time that note becomes the relavant note? This is new ground here and maybe what you have is better.

By ORing the gates you have produced the autophrase tecnique but there is also another common use of autophrase where by the portamonto is turned down to zero time (or disabled) when all the notes are off. This way each phrase will start on the right pitch but slurr between connected notes. Also the way portamento worked when auto phrase was switched off, was that the pitch would only move if a key was held down. If you removed your finger before the pitch had reached the target note ,the pitch would stay at the point it had got to. This way you could vary a long portamento by flicking the key on and off and changeing the mark space ratio. Only a few synths had the option of making portamento move to the last note played even though you had stopped holding the key down, but I think the moog was one of them.

I personaly prefer the last note priority keyboard over the highest note one, as you can do every thing that could be done on the the highest note keyboard, exept for a trill that could be played by holding down one finger and wiggling another. This would require two wiggling fingers on the last note priority keyboard. Anyone remember the synth bit in the "The colony of slipper men" from "The lamb lies down" by Genesis. It was so obviously a highest note priority synth, but can just as easely be played on a last note priority synth.

-- PeteJohnston - 11 Mar 2004

The Moog had high-note priority, ARP low-note (quite annoying in fact!).

Since 1st finger's weight (thumb) is important, it make sense to "steal" its priority. That assumes you have a mostly finger technic, as opposed to mostly hand technic.

-- KarlMousseau - 12 Mar 2004

Hi Kurt,

this construction implements the sort of monophonic performance I searched for. Independent from historic considerations (which synth had what monophonic key mode) there are in a nutshell following possible monophonic key modes:

By the way: I guess, replacing max: by min: in the frequency expression should produce low note priority.

But I see the following disadvantages. You say, the gate expression will generate a voice steal (-1) on the first key down, will keep the key down (> 0) as long as one or more keys are down, and will generate a key up (0) when all keys are up. This is only right as long as you don't press more than three keys.

Or, looking at the construction in slow motion, it acts in a manner, that if you press four or more keys down at the same time (or subsequently without releasing) every sound stops; the same effect occurs when playing fast in a not precise manner (accidentally not removing the fingers fast enough).

This problem could perhaps be solved by extending the construction to five or more "voices" in the Event Creator branch, which makes the expression unfortunately more complicated and resource consuming.

Maybe there could be a optimized solution on a lower implementation level: an additional prototype "MidiMonophonicVoice" with selectable key mode?

-- EckardVossas - 15 Mar 2004

To the list of possible monophonic modes I belive you should add first note priority. Seems esoteric but quite useful really, especially when using multiple voices which employ different monophonic modes at once.

-- SarthCalhoun - 13 Apr 2004

© 2003-2014 by the contributing authors. / You are TWikiGuest