# BTDSys Pulsar & PulsarFX

## Installation

BTDSys Pulsar.dll goes into your Gear\Generators folder, BTDSys PulsarFX.dll goes into Gear\Effects.

## Introduction

This machine implements Pulsar Synthesis, which is a variant of granular synthesis named after the spinning neutron stars which emit periodic signals. Pulsar synthesis was originally developed by Curtis Roads and is described and discussed more fully in Microsound.

One of the distinguishing features of pulsar synthesis is its ability to generate both rhythmic and tonal sounds, depending on the pulsar emission frequency used.

## Basics of Pulsar Synthesis

Pulsar synthesis generates a train of pulsars, each of which consists of a pulsaret of duration d followed by a silent interval of length s. The length p = d + s of the pulsar corresponds to the pulsar emission frequency. The pulsaret consists of an arbitrary waveform (shown in black in the diagram above) under an arbitrarily shaped pulsaret envelope (shown in red).

Generally, frequency p dictates the fundamental frequency of the generated tone (or the period of the generated rhythm), while frequency d, the pulsaret waveform and envelope, and other parameters such as masking contribute to defining the timbre or spectral qualities.

PulsarFX, the effect version of Pulsar, alters this model by continually sampling the pulsaret waveform from its input, rather than using a static waveform from the wavetable.

## Parameters

### Global Parameters

Inertia: Controls the glide time for certain parameters.

Freq Mode: Toggles between Linear and Logarithmic frequency sliders (P Freq and D Freq). Logarithmic allows greater resolution at lower frequencies at the expense of less at higher frequencies. Linear has more or less the opposite effect.

Min P Freq: Sets minimum P Freq value.

Min D Freq: Sets minimum D Freq value.

Oversample: Use oversampling to reduce signal aliasing. Default value is 2x, and can be increased up to 32x. Be fore-warned that this is the most computationally intensive part of Pulsar, and high settings will require a lot of CPU power, especially when used in combination with high overlap settings.

DC Removal: Removes any DC offset using a specialized highpass filter to insure maximum dynamic range.

### Track Parameters

Synchronise: (pattern editor only) Synchronizes! Resets the pulsar generation phase counter, LFO phase counters, burst/rest counters etc. Useful for synchronizing several tracks, or synchronizing the machine to the beat for rhythmic work.

Overlap: Specifies the number of simultanteously overlapping pulsarets. Defaults to 1 (off), which allows only one pulsaret to be generated at a time. Increasing this value will allow multiple pulsarets to overlap. In technical terms: the Duty cycle frequency (D Freq) of an individual pulsaret will always complete, regardless if it extends past the pulsar emission frequency (P Freq) which determines the rate at which new pulsars are generated.

This setting can have a significant effect on CPU usage, especially in combination with oversampling. Furthermore, depending on the source material, high overlap values may cause clipping -- it is suggested that you reduce the volume setting before experimenting.

P Freq: Controls the pulsar emission frequency in hertz. This is the rate that new pulsars are generated. See pulsar diagram for detailed explaination.

P Period: Controls the pulsar emission frequency in ticks. This is the rate that new pulsars are generated. See pulsar diagram for detailed explaination.

P Note: (pattern editor only) Sets the note to use for P Freq. P Param must be set to Note for note data to have any effect.

P Param: Selects the parameter that controls the P Freq. Choices are:

- Freq: Uses P Freq parameter (hertz)
- Period: Uses P Period parameters (ticks)
- Note: Uses a Note value (as entered into pattern editor's P Note value)
- Slave: Slaves to previous track's value. No effect if set on track 0.

D Freq: Controls the Duty cycle frequency in hertz. This determines the length of the pulsaret, the audible part of the pulsar. See diagram for detailed explaination.

Volume: Volume of output.

Pan: Pan position of output.

Burst & Rest: "A type of masking that produces a regular pattern of pulsarets that are interrupted at regular intervals. The pattern is denotated by the b:r ratio, where b is the burst length in pulsaret periods and r is the rest lenght in pulsaret periods." (Roads, 149)
A b:r ratio of 4:3 would produce a sequence of four pulsarets and 3 silent periods: 111100011110001111000....

Stoch Mask: Stochastic masking introduces a probability into the otherwise orderly generation of pulsarets. The value of the stochastic mask represents the chance of the current pulsaret being triggered.

Random Pan: The amount of randomness applied to panning position on a per pulsaret basis. Range is from 0% (no random panning) to 100% (full random panning) Note that this setting is relatitve to the absolute track pan position as set via the Pan parameter.

### Envelope/Waveform Section

On/Off (Generator only): Turns Pulsar's sound generation on or off.

Freeze (Effect only): When set to ON, freezes the input buffer and repeats whatever is in it until turned off.

Wave (Generator only): Select the wavetable number that Pulsar will use as source material in sound genertion. Values 201 and above use internal waveforms.

Start: Specify the start position (in percent) of the waveform selected in the Wave parameter.

End: Specify the end position (in percent) of the waveform selected in the Wave parameter.

Envelope: Select the envelope to be applied to pulsarets. Default is a rectangular envelope. Other selections are Gausian, Linear Decay, Exponential Decay, Linear Attack, Exponential Attack, or a user supplied envelope in the wavetable. See the pulsaret envelope entry in the terminology section for images.

The Gaussian, Exponential Decay, Exponential Attack, and Wavetable envelopes can be altered using the Env Param setting.

Env Wave: Wavetable slot to use for user defined pulsaret envelope.

Env Param: Alters the parameters of the pulsaret envelopes. This has different effects depending on the selected envelope:

- Rectangle (Note: Not altered by Env Param)
  Rectangular Envelope
- Linear Attack / Linear Decay (Note: Not altered by Env Param)
  Linear Attack
  Linear Decay
- Exp Attack / Exp Decay: Alters the steepness of the exponential curve.
  Default Exponential Attack (note discontinuity at onset)
  Default Exponential Attack (/w normalization)
  Exponential Attack with env param of 0.15 (/w normalization)
  Exponential Attack with env param of 0.7 (/w normalization)
- Gaussian: Alters the variance ("steepness" or "width") of the Gaussian function.
  Default Gausian (note discontinuities)
  Default Gausian (/w normalization)
  Gaussian with env param of 0.1 (/w normalization)
  Gaussian with env param of 0.7 (/w normalization)
- Wavetable: Acts as a DC offset parameter, allowing the center of the envelope to be shifted. A value of 1 centers the wave, while a value of 0 shifts the envelope to maximum depth. Will not have any effect if Env Norm is enabled.

Env Norm: Normalizes the pulsaret envelope to the range of 0 to 1. This suppresses discontinuities which sometimes occur at the ends of the Gaussian and Exponential envelopes.

### LFO Section (Low Frequency Oscillator)

LFO1 Period: The period (speed), in ticks, of the LFO waveform.

LFO1 Shape: The waveform the LFO generates. All the usual settings: Sine, Square, Triangle, Ramp Up, Ramp Down, Lin Wander, Cos Wander (like linear wander, except with cosine segments, making it smoother), Random, and Wavetable.

LFO1 Wave: Selects the wavetable slot to use for the LFO waveform (provied Wavetable is selected in LFO Shape).

LFO1 Target: The parameter that LFO will modulate.

LFO1 Track: Selects which track number of Pulsar that the LFO will modulate. It can select from one track or all.

LFO1 Amount: Controls the depth of the LFO upon the targeted parameter.

LFO2: The settings for LFO2 are nearly identical to LFO1, except that it can target the period and amount of LFO1.

### Separators

To aid navigation of the large number of parameters in Pulsar and PulsarFX, separators are used. These show as columns of zeroes in the pattern editor, and as graphical separators in the parameter window (if Cyanphase Overloader 1.5 is installed).

Note that if you do not like the graphical track separator (the purple or red "btdsys" banner), it may be enabled or disabled using the included registry patches, or by manually changing the registry value HKEY_CURRENT_USER\Software\BTDSys\Pulsar_Buzz\ShowGraphicalSeparator to 0 (disabled) or 1 (enabled).

## Attributes

Off on stop: Sets whether Pulsar stops generating a signal when the stop button is pressed. 0 = No, 1 = Yes.

Note controlled on/off (Generator only): When the P Param is set to Note, this controls whether note on and off events also control the On/Off parameter. 0 = No, 1 = Yes.

Note controlled freeze (Effect only): As above, but concerning the Freeze parameter.

Oversample quality: Sets the order of the filter used for oversampling. Higher values remove more aliasing artifacts from the signal, at the expense of increased CPU usage.

LFO Amount midpoint: Sets the mapping used for the LFO Amount parameters. Values less than 500 give finer control for lower values at the expense of precision for high values, values greater than 500 have the opposite effect (finer control for high values), and exactly 500 gives a linear scale (same precision for the entire range). Technically, what you are setting here is the value corresponding to the parameter slider's midpoint (in steps of 0.1%), and an appropriate curve is fit around this to give an overall range of 0% to 100%

Input buffer size (Effect only): Sets the size (in samples) of the recording buffer used for sampling the input waves. This should be no less than the longest P period you wish to use, but beware of excessive memory usage resulting from very large values.

## Visualization

The visualization window of Pulsar/PulsarFX is an invaluable tool to understand the complexities of the patch you're working on. It can be access by right clicking on the Pulsar machine and selecting "Visualization" followed by the track you want to see. You can have any number of tracks open at one time.

It displays all the information you need to know about the pulsar stream:

- Envelope (in red)
- Waveform (in blue)
- Waveform after application of envelope (in black)
- Overlap (gray-white gradient)

These are the default colours, and can be changed by right clicking on the Pulsar machine and selecting "Customize Visualization Colours". The colours you select here are stored in the registry (under the key HKEY_CURRENT_USER\Software\BTDSys\Pulsar_Buzz\), and so are common to all instances of Pulsar and PulsarFX.

## Terminology

Aliasing: A type of distortion which occurs in digital recording or synthesis when the signal contains frequency components which exceed the Nyquist frequency (sampling rate/2). Because the signal cannot be correctly represented, it becomes aliased at a lower frequency, causing 'phantom' frequencies to arise and interfering with the original frequency content. External Links: Aliasing, Nyquist Theorem

Duty cycle frequency: The frequency (D Freq) which controls the length of pulsarets. Low values may allow pulsarets to overlap. The maximum density of overlaping can be ontrolled via the overlap parameter.

Masking: The omission (silencing) of pulsarets. Masking can be done in an ordered pattern (burst/rest masking), or randomly/probabilistically (stochastic masking).

Oversampling: A technique used to reduce the severity of aliasing artifacts in digital audio. Oversampling is a complex subject, but the basic theory behind it is to temporarily increase the sampling rate of digitized audio. By increasing the sampling rate, it becomes significantly easier to filter out frequencies that will cross the Nyquist frequencies and cause aliasing.

Pulsar: The term to describe the overall output of pulsar synthesis, taking into account all of the variables. Also: A neutron star which rotates at an extremely rapid rate, emitting radiation at a regular interval. These pulses of radio emissions were first detected in 1967, and originally thought to be the product of an extraterrestrial civilization. External Link: Pulsars

Pulsar emission frequency: The frequency (P Freq) at which pulsarets are emitted by the generator.

Pulsaret: A discrete pulse of arbitrary sound, emitted at the pulsar emission frequency (P Freq) and altered in length by the duty frequency (D Freq).

Pulsaret envelope: The amplitude envelope applied to the pulsaret. Different envelopes will affect the spectrum and timbre of the sound, with steeper/discontinuous envelopes generally creating noisier spectra.

## Tips and Tricks

Pulsar synthesis can generate intricate, organic and complex sounds. One fascinating trick is running a Pulsar Generator through PulsarFX with slightly different P or D rates.

By assigning LFO2 to modulate LFO1's rate, it is possible to push LFO1 into the audio frequencies. Assign it to Volume for AM effects, P freq or D freq for FM-like effects, or experiment with other combinations.

Although Pulsar does not have any filters (apart from those used for oversampling and DC removal), altering the D rate or the envelope shape can sometimes give a "filter sweep" like sound.

For rhythm work, try using a slow P rate and feeding the output to an LdC Trigger or LnB PeerTrigger. Don't forget to trigger the Synchronise parameter from a pattern to ensure the rhythm stays on the beat.

Be sure to examine the included presets for more ideas. Pulsar synthesis is largely uncharted territory, so don't be afraid to experiment!

## Credits

©2004 Ed Powley.

Documentation, waves and suggestions by K.M. Krebs.

This machine is freeware and freely distributable, provided no money is charged and all files remain present and unchanged.

Thanks to Ulf Schreiber, Colin Brash, Kwook, and everyone else who helped out with beta testing.

## References

Microsound. Curtis Roads, MIT Press, 2001.