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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Next is a module named wave<strong>for</strong>m. This is a OscilloscopeDisplay, and it is another type of <strong>Sound</strong> that<br />

does not have any affect on what you hear — just on what you see in the virtual control surface. It shows<br />

the wave<strong>for</strong>m of its Input as if you were feeding the Input into an oscilloscope, and uses the name of<br />

the <strong>Sound</strong> (in this example wave<strong>for</strong>m) as the name of the oscilloscope display in the virtual control surface.<br />

Imagine a kind of virtual oscilloscope screen inside the Capybara. <strong>The</strong> OscilloscopeDisplay writes<br />

its Input on this virtual screen from left to right, until it receives a trigger. Each time it receives a trigger<br />

it starts over again at the left and continues writing the wave<strong>for</strong>m that it gets from its input. As quickly as<br />

it can (but still on trigger boundaries), the host computer reads the virtual display and plots the entire<br />

thing on the computer screen all at once. ‡<br />

So the Trigger input to the OscilloscopeDisplay should be something periodic, something that puts out<br />

a one at the beginning of each cycle in the Input wave<strong>for</strong>m; that way you will always get a picture of<br />

complete cycles of the input wave<strong>for</strong>m and the wave<strong>for</strong>m will not appear to “drift” across the screen to<br />

the right or left because it is out of synchronization with the trigger. <strong>The</strong> best <strong>Sound</strong> to do this job is the<br />

PulseTrain, because it puts out a one once per period and is zero at all other times.<br />

Double-click the <strong>Sound</strong> called trigger to see its parameters. <strong>The</strong> period of repetition is set to 256 samp.<br />

You can optionally vary the “duty-cycle”, or the amount time during each cycle when the wave<strong>for</strong>m<br />

value is above zero. Try this out right now by checking the VariableDutyCycle box, typing !Duty<br />

into the DutyCycle field, selecting the trigger <strong>Sound</strong> and choosing Oscilloscope from the Info menu. As<br />

you slowly move !Duty from 0 up to 1, you can see that the width of the “pulse” gets wider and wider.<br />

At the two extremes of 0 and 1, you don’t hear anything, because the value isn’t changing, and sound<br />

does not exist without change. Remove the check from the VariableDutyCycle box be<strong>for</strong>e proceeding.<br />

Double-click OscillatorBank74. § This generates a bank of 16 sine wave oscillators. <strong>The</strong> frequencies and<br />

amplitudes of those sine wave oscillators are supplied from SyntheticSpectrumFromArray18. Doubleclick<br />

on that <strong>Sound</strong> to see how the amplitudes and frequencies are specified.<br />

A SyntheticSpectrumFromArray takes an array of frequencies and an array of associated amplitudes and<br />

puts them together to create a spectrum <strong>for</strong> controlling an OscillatorBank or a FormantBankOscillator.<br />

You can optionally associate an array of bandwidths with the spectrum <strong>for</strong> <strong>Sound</strong>s like FormantBank-<br />

Oscillator which make use of bandwidth; in this case, though, we have left SendBandwidths<br />

unchecked because an OscillatorBank does not use bandwidth in<strong>for</strong>mation.<br />

Envelope puts an overall amplitude envelope on all partials; in this case, the overall amplitude is controlled<br />

by !Volume. <strong>The</strong> value of NbrPartials is arbitrary, but you should generally use a number at<br />

least as large as the value of NbrOscillators in the OscillatorBank; in this example, we are generating<br />

amplitude and frequency values <strong>for</strong> 16 sine wave oscillators.<br />

Amplitudes, Frequencies, Bandwidths, and Envelope are all hot parameters (indicated by the light<br />

cyan background color in the parameter fields), meaning that you can use Event Values and <strong>Sound</strong>s as<br />

elements of the array. For example, the value of Amplitudes is:<br />

!F01 !F02 !F03 !F04 !F05 !F06 !F07 !F08 !F09 !F10 !F11 !F12 !F13 !F14 !F15 !F16<br />

an array of amplitudes, each controlled by a fader in the virtual control surface.<br />

‡ Note that although both the right and the left channels of the input are written to the virtual oscilloscope display on<br />

the Capybara, only the left channel is read and displayed on the host computer. You will be able to display both<br />

channels in a future update of the software.<br />

§ By the way, if you are wondering how it got a name like that, here’s the explanation: whenever you drag a <strong>Sound</strong><br />

from the prototypes into a <strong>Sound</strong> editor or <strong>Sound</strong> file window, <strong>Kyma</strong> makes a copy of the prototype. When <strong>Kyma</strong><br />

makes a copy of the prototype, it appends a number onto the end of the prototype’s name; <strong>for</strong> example, the third<br />

time you drag an OscillatorBank from the prototype strip, it will be named OscillatorBank3. <strong>The</strong> current<br />

number <strong>for</strong> each prototype is stored in the preferences, so it will continue giving you consecutive numbers <strong>for</strong> as<br />

long as you keep the same preferences file. So, in this particular case, this was the 74th OscillatorBank used by the<br />

person who created this <strong>Sound</strong>. <strong>Kyma</strong> tacks the number onto the end of the name to help you distinguish between<br />

this <strong>Sound</strong> and others of the same class without having to immediately rename it as you are constructing the<br />

<strong>Sound</strong>. However, you should select the <strong>Sound</strong> and hit Enter to give it a more mnemonic name as soon as possible.<br />

95

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

Saved successfully!

Ooh no, something went wrong!