Kyma 7 comes with a multitude of new Sounds as well as extensions to and optimizations to existing Sounds and Prototypes — too many to enumerate in detail — but here are some of the highlights.
AntialiasedOscillator
Give it a single cycle (of any length) and it protects you from aliasing at any frequency. Includes controls for Brightness and DutyCycle. For example, you could start with a recording of an analog synth, use the Wave Editor to select and trim a single cycle from that waveform, and use that single cycle as the wavetable for the AntialiasedOscillator. The wavetable does not have to be 4096 samples long.
SplitSurroundAntialiasedOscillator and SplitSurroundOscillator
Oscillators that can use mono, interleaved stereo, or split-stereo, or multichannel samples files as their waveforms. Each file contains a single cycle and in the case of split-channels, each file should be of the same length and labeled as .L (left), .R (right) and so on.
OscillatorTimeIndex
When used as the input to a SampleWithTimeIndex or Waveshaper, the OscillatorTimeIndex generates the phase for a periodic signal whose waveform is specified in its destination Sound (the SampleWithTimeIndex or the Waveshaper). To create an oscillator, set the SampleWithTimeIndex or Waveshaper sample to have a single cycle of the desired waveform. The single cycle can contain any number of samples (but to avoid quantization noise at low frequencies, cycles of 4096 samples or longer are recommended).
SpectrumFromSingleCycle
Give it a single cycle of any length, and it generates a spectrum that you can use to control an OscillatorBank, FilterBank, CloudBank, or FormantBank. For example, you could start with a recording of an analog synth, and use the Wave Editor to select and trim it to a single cycle. It’s not a requirement that the cycle have exactly 4096 samples.
BiDiFollower
Similar to AmplitudeFollower except that it has separate Attack and Release reaction times, so it can respond at a different rate to an increase vs a decrease in its input value. To use it as an amplitude-follower, feed its input through an Abs first.
SampleWithTimeIndex and SplitSurroundSampleWithTimeIndex
A sample that, like a SampleCloud, takes a (-1,1) TimeIndex as its input. The TimeIndex determines the position in the sample file. You can use this with the TimeIndex Sounds (below) or with any other live or synthetic signal for nonlinear time behavior.
TimeIndex and TimeIndexFromFileName
Generates a time index in the range of (-1,1) that can be used as the input to SampleWithTimeIndex (or any other Sound that takes a TimeIndex input). Includes gate, looping controls, and forward/reverse controls. The TimeIndexForFilename can read the loop markers stored in the filename.
Lossy Integrator
Gives you the integral of its input. If you feed it the rate of change in a value as its Input, its output will be the value. You can use the LossyIntegrator to smooth a controller such that it slows down as it approaches its target value. Or use the LossyIntegrator on control signals from the outside world when you want to filter out fast changes or jitter from the environment; it provides some immunity to noisy inputs or dropouts in the control signal. You can also use it as a low pass filter on audio rate signals.
Saturator
In the oscilloscope screenshot on the left, below, the blue trace is the input to the Saturator, and the pink trace is the Saturator set to 0.25 as the threshold. You can see that the output stays at zero until the blue trace approaches the threshold — then the saturator starts responding. When the blue input crosses the threshold, the Saturator output is at half its maximum value. Once it reaches the maximum it saturates.
If you switch it to a Repressor, the output stays ON until the input approaches the threshold, as you see in the screen shot on the right, above. You can use the saturator to put a smooth, nonlinear threshold on a controller value, or on an amplitude follower on a live input. Or you can use it as an audio saturator—which behaves a little bit like a compressor but acts on the instantaneous amplitude, rather than the amplitude envelope (basically it acts as a wave shaper). According to some of the literature, this is related to the way the magnetic particles on analog recording tape get saturated at high levels, so you could use Saturator to emulate the soft-clipping of analog tape recorders. Saturator works (transparently) on multichannel inputs.
Hysteresis
Hysteresis is characteristic of a wide range of electromagnetic and biological systems; it’s the tendency of a system to remain in its current state despite changes to its input.The Hysteresis Sound is most typically used as the input to either a hard Threshold (to emulate a Schmidtt trigger) or a Saturator threshold (see the Saturator Threshold w/ Hysteresis Prototype) when it takes on the behavior of the electric displacement field of a ferroelectric material.
AnalogSequencer
See also the EuSeq Prototype for experimenting with new Euclidean Scales and tuning AnalogSequencer has some new parameters and some of the parameter names have changed. The new parameters mirror the components of a key event: KeyDown, KeyPitch, KeyVelocity, and KeyTimbre For the sequencer, you provide an ARRAY of values for each component.
Instead of having to use KeyVelocities to turn stages on and off as you did in the old version, you now provide a pattern of gates for the KeyDowns. So if you wanted a pattern of on for 3, off for 2, you could provide an Array pattern like #(1 1 1 0 0 1 1 1 0 0) In the KeyTimbres field, you provide pattern of timbres for Sounds you’ve set up to be played on the Continuum or the Kyma Control keyboard or the SoundPlane GeneratedIndex is like a SoundToGlobalController. You can put a hot value in that field to show you which stage you’re on in the sequence
EuSeq
Generates Euclidean beat patterns and Euclidean scales with any number of scale steps (e.g. for 5, 7, 8, 12 note scales) and any number of steps per octave (for microtonal scales). So you can experiment with scales, tuning, and Euclidean beat patterns.
Replicator
The DoNotChange field has become a SpecialEvents field. You can choose to rename all the EventValues in this field OR to rename everything BUT the EventValues in this field. This applies to all the Sounds that used to have a DoNotChange field: Prefixer, Replicator, Stereoizer, Surroundifer, etc
HarmonicResonator
When you’re using a whole bunch of HarmonicResonators with changing frequencies for unusual reverb-like effects (rather than as a pitched “instrument”), it’s not as important to have fine-tuning; if you uncheck the fine-tuning box, you can get a lot more HarmonicResonators in real time. HarmonicResonator is no longer so sensitive to DC offsets. As a consequence, you can play higher frequencies now without the signal getting swamped out and attenuated by the DC offset. You can also get lower (< 11 Hz) frequencies.
MIDIVoice
In the Script you can now send KeyTimbre as an extra component of key events, and there is a 16X improvement in the resolution of Velocity and Timbre values Both MIDIScript and MIDIFile compile much faster
FunctionGenerator
Has a new Level field.You can paste Sounds into the Level or Envelope fields of the Sample & FunctionGenerator for amplitude controls that update at the sample rate.
SpectrumModifier
New parameters for FreqSmoothing and AmpSmoothing make it so you can get spectrum-smearing effects. The FreqOffset field can take a frequency with units (OR a 0,1 value without units as it does now) And you can make the Amp/Freq Scale/Offset fields dependent on the TrackNumber The accuracy of the HarmonicSpectrum frequency outputs has also been improved.
Waveshaper
Can now take a stereo shaping function so you can create Stereo distortion!
OscilloscopeDisplay
There’s a new OscilloscopeDisplay Sound with several new parameters:
- SweepOrTrig: Update periodically OR Update when threshold crossed
- TrigThresh: Trigger on rising edge OR Trigger on falling edge
- TrigSwap: Swap between Left or Right input channel as trigger
- SweepFreq: Rate at which a new trace across the screen (if NOT triggered)
- Level: This is the Post display level so you can see a full amplitude display without blasting your ears
- InitialSweepFrequency: can be set to a sub-audio period to display control signals
You can now supply a direct trigger to the OscilloscopeDisplay Sound by pasting a Sound (without the L) into the SweepOrTrig field.
ClippingDivide
Have you always wanted to divide one Sound by another? Or take the ratio of two audio rate input values? In the ClippingDivide, the Numerator input is divided by the Denominator input and the result is scaled by Scale.
SpectrumLinearToLog & SpectrumLogToLinear
For converting a spectrum in log frequency to linear frequency and vice versa. Some spectral modifications require linear frequencies, but morphing works best with log frequency spectra.
LinearToLog & LogToLinear
LinearToLog and LogToLinear form a pair of Sounds for converting to and from log space for performing various control or signal processing operations in log space and converting the result back to linear space.
Minimum & Maximum
The output of this Sound is the smallest value (for each channel) found among all of its Inputs (or, for the Maximum, the largest value on each sample from among all the inputs).
ComplexProduct
The output of this Sound is the product of the two Input Sounds, treating the left channel of each Input as the real part of a complex number and the right channel as the imaginary part. The left channel output is: (Input0Left * Input1Left) – (Input0Right * Input1Right) The right channel output is: (Input0Left * Input1Right) + (Input0Right * Input1Left)
FrameSynchronizer
This is for those of you who like to do your own spectral modifications directly on the spectrum stream. You can use a FrameSynchronizer with a SyncOutput trigger to align a spectrum with an asynchronous event (such as an external trigger or a Capytalk expression) and then use another FrameSynchronizer with a SyncInput trigger to align an asynchronous spectrum with the start of Kyma’s spectral frame boundaries.
TriggeredSoundToGlobalController
TriggeredSoundToGlobalController now has a manual override switch… meaning you can control the fader in the VCS and capture its value in a Preset, and you can also set it algorithmically. For example, let’s say that you have a group of faders that you’re adjusting during a live performance. And at some point, you’d like to be able reset all of them to a default value. You COULD do this with a VCS Preset, but that would reset ALL the faders in the VCS to their preset values but by using TriggeredSoundToGlobalControllers, you can reset a specific subset of the faders.
Modal Filter
The new ModalFilter is more stable when you jump from high to low frequencies when you use the new Reset option.
BinauralPan
A prototype for stereo panning using interaural delays and intensity differences. There’s a simpler and more accurate expression for the left and right delays.
SpectrumFrequencyScale
The FormantsOnly checkbox, when checked, allows for formant scaling without changes to the fundamental frequency
UniqueMemoryWriterRecordingNames and CancelUniqueMemoryWriterRecordingNames
This Sound renames MemoryWriter recording names in the Input Sound so that they will not be shared with MemoryWriter recordings made in other Sounds. Add a CancelUniqueMemoryWriterRecordingNames to the signal flow to return to shared MemoryWriter recordings.
MIDIOutput Timing Clock & MIDIOutput Start/Stop Master Clock
A pair of new Prototypes for synchronizing with external MIDI sequencers.
More new Sounds coming soon…