09.12.2012 Views

The Kyma Language for Sound Design, Version 4.5

The Kyma Language for Sound Design, Version 4.5

The Kyma Language for Sound Design, Version 4.5

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Remove Redundancy<br />

<strong>The</strong> most common source of redundancy is in amplitude scaling. For example, if you have a Sample<br />

feeding into an Attenuator, feeding into a Mixer, there are potentially three places where you could be<br />

scaling the amplitude.<br />

Often you can combine these amplitude scales to simplify your <strong>Sound</strong>. In this example, you could specify<br />

the level in the Scale field of the Sample, and delete the Attenuator. <strong>The</strong>n you could take the scale factor<br />

in the Mixer and multiply it by the value in the Scale field of the Sample, making it possible to change<br />

the Mixer scale factors to 1.0.<br />

Other <strong>Sound</strong>s that have potentially redundant scale factors include the MIDIVoice, MIDIMapper, and<br />

Oscillator (which you can scale by putting a constant into its Envelope field or by setting the Scale<br />

parameter in its AR or ADSR envelope).<br />

Anything that you could simplify in an algebraic expression, you can probably also simplify in a <strong>Kyma</strong><br />

<strong>Sound</strong>. For example, if you have several inputs to a Mixer, and each of them is going through its own Attenuator,<br />

and all Attenuators are set to the same value, you can eliminate the Attenuators and do all the<br />

scaling in the Mixer. That is like saying<br />

Downsample Control <strong>Sound</strong>s<br />

a × x + a × y + a ×z = a × x + y + z<br />

84<br />

( )<br />

If you have some <strong>Sound</strong>s pasted into parameter fields, you can experiment with updating them at a<br />

slower rate to see if it has any negative impact on the sound. Recall that you can specify the number of<br />

milliseconds between updates, as <strong>for</strong> example<br />

Oscillator L: 5<br />

would mean to read the value of the Oscillator every 5 milliseconds and use that to set the value of the<br />

parameter. For many parameters, you can get by with update rates slower than once per millisecond and<br />

this will reduce the amount of computation required by your <strong>Sound</strong>.<br />

Use Equivalent <strong>Sound</strong>s that are Less Complex<br />

<strong>The</strong>re may be a module that will do exactly what you need but which is less complex than a module you<br />

are using to do the same things. For example, you might be using an Oscillator to play once through a<br />

function where a FunctionGenerator could be used to do that more efficiently. You might be using an exponential<br />

envelope in a situation where a linear one would do as well. You may be using a<br />

FunctionGenerator with a Ramp wave<strong>for</strong>m where you could use the expression 1 ramp: 2 s to accomplish<br />

the same results using less computing power. Use Get info to compare the relative complexity of<br />

different <strong>Sound</strong>s that can be used to accomplish the same results.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!