Kyma Forum
  Kyma Support
  Polyphony and Sound Identity?

Post New Topic  Post A Reply
profile | register | preferences | faq | search

next newest topic | next oldest topic
Author Topic:   Polyphony and Sound Identity?
David McClain
Member
posted 17 March 2001 19:16         Edit/Delete Message   Reply w/Quote
Hi,

Suppose I have a sound that uses the "!KeyPitch" in some way such that when I have a polyphonic MidiVoice to the right, I want to display the value of !KeyPitch within each separate instance created by the MidiVoice. (is that clear?)

I can't use a SoundToGlobalController for this, because converting the current !KeyPitch to some global name like !Fc would be the same !Fc for all polyphonic instances. I need some way to identify an instance so that each one could have its own !Fcxxx. But I haven't seen anything described in the manual like this.

I have seen scripts that instantiate multiple instances of their sound, assigning a unique name for some parameter in each instance. But that is different from the MidiVoice which secretly instantiates its multiple copies at startup.

On the other hand, if I were to use a script to assign unique names to this parameter in each instance, then when I play the keyboard, all of those instances will play at once. And that isn't the intended effect either.

I have thought about splitting the keyboard range over several copies of the sounds, but then that isn't really polyphony. When I play a chord, the number of voices playing will depend on how many zones my fingers cross.

So what is the secret magic formula here?

- DM

IP: Logged

SSC
Administrator
posted 19 March 2001 09:12         Edit/Delete Message   Reply w/Quote
<I need some way to identify an instance so that each one could have its own !Fcxxx.>

The green variable ?VoiceNumber is defined to be the integer voice number in a polyphonic MIDIVoice.

To make it part of the hot variable name, you have to turn it into a string, concatenate it with the rest of the controller name, and then turn the whole thing into a hot variable. For example:

('Fc', ?VoiceNumber printString) asHotValue

IP: Logged

David McClain
Member
posted 19 March 2001 13:27         Edit/Delete Message   Reply w/Quote
Hi! Thanks!

This works .. sort of... But when I place Sounds to the left of a MidiVoice module with polyphony greater than 1, the system compiles and loads into the capy, and it show the synthesized names as you indicated. But it only plays every N'th note, where N is the assigned polyphony of the MidiVoice module.

The sounds to the left use the trick of constructing their hotvalue names and the VCS shows them just fine. So what am I doing incorrectly now?

--------------------
Actually, a little persistance pays off... I found that using a polyphonic MidiVoice does not work for reasons yet unknown. But using your trick with a script to spawn off multiple 1-voice versions of the left sounds works great!

Aside from the polyphony mystery, the trick of turning strings into hotValues was exactly what I needed. Thanks!!


- DM

[This message has been edited by David McClain (edited 19 March 2001).]

IP: Logged

SSC
Administrator
posted 19 March 2001 18:37         Edit/Delete Message   Reply w/Quote
Do any of the Sounds that you placed to the left of the MIDIVoice include another MIDIVoice? (Nesting MIDIVoices might give you this behavior of skipping key downs.)

IP: Logged

David McClain
Member
posted 20 March 2001 11:32         Edit/Delete Message   Reply w/Quote
No, they don't. They did include a SoundToGlobalController that takes !KeyPitch and does a fancy calculation to put out a !Fc used by another filter (on the left) as its corner frequency.

Several more refinements have now removed the need for this strange technique, and so everything works correctly with a polyphony greater than 1.

I find that a lot of information about Kyma can only be gleaned by serious hours of "reverse engineering" to discover what affects what else. Sure wish there were a more technical explanation for some of these things....

For example, I believe now, that a polyphonic MidiVoice actually duplicates the sounds on the left AT COMPILE TIME and downloads to Capy, instead of creating new copies as needed. This might seem obvious in hindsight, but it isn't at all obvious when you are beginning...

The Capy is presented as a "Black Box" (which it is!) and Kyma lacks the usual introspection tools I have come to rely upon for gaining an understanding of the code. (Actually, it - Smalltalk - has them, but they have been hobbled for us users...)

'Would be really nice if you could find a way to let an inspector be created so we could go plumbing for the magic words like "asHotValue"...

- DM

IP: Logged

SSC
Administrator
posted 21 March 2001 09:35         Edit/Delete Message   Reply w/Quote
quote:
Originally posted by David McClain:
For example, I believe now, that a polyphonic MidiVoice actually duplicates the sounds on the left AT COMPILE TIME and downloads to Capy, instead of creating new copies as needed. This might seem obvious in hindsight, but it isn't at all obvious when you are beginning...

This seems like a good opportunity to remind everyone of the resources that you have available right in Kyma for finding answers to questions like these. For example, I just went into Kyma and selected Documentation from the File menu. Then I did a search (not a Find) for MIDIVoice with the following results:

From the online help for the Polyphony parameter of the MIDIVoice:

"Polyphony
Number of simultaneous MIDI note events possible on this voice. For example, if you specify a
Polyphony value of 4, Kyma makes 4 copies of the Input Sound, so any one of them can be triggered at
any time and all four can be sounding at the same time. The higher the value of Polyphony, the more
computation time is required per sample tick."

From the manual, page 82:
"The polyphony setting on any MIDIVoices, MIDIMappers, or AnalogSequencers in the Sound (the
number of modules in the chain to the left of a MIDIVoice will be multiplied by the amount of polyphony
that you request)"

You can also click on any of the document titles to go directly into that document. For example, the Expressions Quick Reference takes you directly to a list and short description of every operation that can be performed in real time in the parameter fields.

Thank you for pointing out that asHotValue is not yet documented (we added it to Kyma after the manual was printed). We're compiling a document with changes, additions and corrections to be made when we rewrite the manual and will include it then.

In the interim, we hope that everyone will make use of this forum as a supplemental source of documentation in the form of Questions and Answers. You can use the topic lists as a guide or use the Search option. For example, click the Search link in the upper right of the page. Then click where it says "Click here" to search private forums. Enter the topic ('polyphony' for example), choose one of the forums, and click the Search button.

[This message has been edited by SSC (edited 21 March 2001).]

IP: Logged

David McClain
Member
posted 21 March 2001 10:45         Edit/Delete Message   Reply w/Quote
I guess we have the ambiguity of English to thank for this messy situation...

When one states that a sound will be replicated by the polyphony, it is not immediately clear whether this happens in advance or whether some mechanism exists that can spawn them on demand up to the limit specified by the polyphony parameter.

THAT'S WHY WE NEED EQUATIONS!! (ahem...)

---------------

BTW, The topic of feedback in filters is another severe case in point...

When you state that some of the output is fed back to the input for feedback, it is not immediately clear whether you mean this in the sense that all IIR feedback filters are created, or whether you actually feed back some of the IIR output to the input again.

In the first instance, one might have well established and visualizable trajectories for the locus of poles. And they could be kept inside the unit circle.

In the second instance (which is the actual case) the trajectory of poles is altered in some difficult to visualize manner (hence their uncontrollable nature), while the zeros are left intact.

A filter transfer function H(z) becomes H(z)/(1 +/- f H(z)). Without knowing H(z) it is not possible to ascertain where the new poles migrate as feedback is increased.

Now while actual feedback (in the second sense above) turns out to be musically useful, as it relates to extending the ringing, this is not the feedback one might initially expect. And as everyone knows, the feedback parameter in the filters is particularly tricky to use, often sending the filters into unstable operation at high settings.

- DM

[This message has been edited by David McClain (edited 21 March 2001).]

IP: Logged

gelauffc
Member
posted 27 March 2001 10:24         Edit/Delete Message   Reply w/Quote
quote:
Originally posted by David McClain:

THAT'S WHY WE NEED EQUATIONS!! (ahem...)

Sometimes an equation can tell a lot more then text can.

Again one topic leading to the questions of the unknowns of Kyma. Good example David, the filter.

SSC Keeping things a company secret is OK, but then make very sure things can not be interpreted differently, or that the basics (a filter) work superb.

Christiaan



IP: Logged

All times are CT (US)

next newest topic | next oldest topic

Administrative Options: Close Topic | Archive/Move | Delete Topic
Post New Topic  Post A Reply

Contact Us | Symbolic Sound Home

This forum is provided solely for the support and edification of the customers of Symbolic Sound Corporation.


Ultimate Bulletin Board 5.45c