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.

MIDI Note Events<br />

below the threshold and the output of the Threshold returns to zero). Try increasing !Thresh until<br />

nothing in the input exceeds it anymore.<br />

Now look at the parameters of the AnalogSequencer. Notice that thresh has been pasted into the Step<br />

field. Each time the amplitude envelope on the audio signal exceeds the threshold, the sequencer will<br />

read the next set of values in its sequences. Notice that the Durations field is set to 0.1. This means that<br />

all notes in the sequence are of equal duration — 0.1 seconds. It also places an upper limit on the speed of<br />

the sequence. No matter how fast the Step triggers come in, the sequencer will never go faster than one<br />

note every 0.1 seconds. This means that you can use the Durations field as a kind of mask, protecting<br />

the basic rhythm against any spurious triggers that might come from the audio signal.<br />

Try playing audio signal ctrl sequencer again, this time adjusting !Thresh to different values, and<br />

checking/unchecking the boxes in the row along the bottom of the virtual control surface (which set the<br />

velocity values to 1 or 0 depending on whether they are checked or unchecked).<br />

This example used the amplitude of the signal as a trigger in <strong>Kyma</strong>. You could, alternatively, use some<br />

other parameter as a trigger; <strong>for</strong> example, you could use a FrequencyTracker in place of the Amplitude-<br />

Follower and trigger whenever the frequency exceeds a threshold.<br />

If you are using a MIDI sequencer, you can synchronize <strong>Kyma</strong> with your other MIDI devices through<br />

MIDI note events. For example, take a look at KeyDown steps sequencer. This is similar to audio signal<br />

ctrl sequencer except that a !KeyDown event is used in place of the Threshold on the envelope of the<br />

audio signal. You could create a timing track on one channel of your sequencer that is never actually<br />

heard — just supplies triggers to <strong>Kyma</strong> — so that when the tempo changes in the sequencer, <strong>Kyma</strong> will<br />

adapt along everything else that is being controlled by the sequencer.<br />

MIDI Timing Clock<br />

If one of your MIDI devices can output a MIDI timing clock signal, you can synchronize your <strong>Kyma</strong><br />

<strong>Sound</strong>s to changes in the rate of the MIDI clock through the judicious use of two Event Values in <strong>Kyma</strong>:<br />

!TimingClock and !TimingClockDuration. !TimingClock is a trigger that repeats at a rate of 24<br />

times per beat. !TimingClockDuration is the duration in seconds of one !TimingClock trigger. In<br />

other words, if you multiply !TimingClockDuration by 24, you will get the duration in seconds of one<br />

beat at the current tempo.<br />

Take a look at MIDI Timing clock ctrl seq & del <strong>for</strong> an example using !TimingClock and<br />

!TimingClockDuration. This <strong>Sound</strong> synchronizes both the AnalogSequencer and the length of a delay<br />

to an external MIDI clock.<br />

Look first at the DelayWithFeedback. Its maximum Delay is set to 1 s — the same as the duration of a<br />

beat in the AnalogSequencer. If you change the value of Delay, you should also change the Durations<br />

field of the sequencer so they are equal to each other.<br />

<strong>The</strong> DelayScale is set to<br />

!TimingClockDuration * 24<br />

This expression is equal to the duration of one beat in terms of seconds. So, <strong>for</strong> example, if the tempo is<br />

120, the beat is one-half second long, and this number will be 0.5. DelayScale is a multiplier on the<br />

value in Delay, so the delay will be 0.5 seconds long. If the tempo is 60, then !TimingClockDuration<br />

* 24 will equal 1, and the delay will be one second long.<br />

Now look at the AnalogSequencer. First, notice that Step is set to the value<br />

!TimingClock<br />

This means that it is triggered 24 times per beat. But notice that Durations is set to<br />

1<br />

This acts as a mask, meaning that the sequencer cannot be triggered any faster than once per second, even<br />

if the triggers are coming in faster than that. But wait! Almost certainly you will want to trigger this at a<br />

175

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

Saved successfully!

Ooh no, something went wrong!