clip

clip --  Clips a signal to a predefined limit.

Description

Clips an a-rate signal to a predefined limit, in a "soft" manner, using one of three methods.

Syntax

ar clip asig, imeth, ilimit [, iarg]

Initialization

imeth -- selects the clipping method. The default is 0. The methods are:

ilimit -- limiting value

iarg (optional, default=0.5) -- when imeth = 0, indicates the point at which clipping starts, in the range 0 - 1. Not used when imeth = 1 or imeth = 2. Default is 0.5.

Performance

asig -- a-rate input signal

The Bram de Jong method (imeth = 0) applies the algorithm:

|x| > a:     f(x) = sin(x) * (a+(x-a)/(1+((x-a)/(1-a))2 |x| > 1: f(x) = sin(x) * (a+1)/2
        

This method requires that asig be normalized to 1.

The second method (imeth = 1) is the sine clip:

|x| < limit: f(x) = limit * sin(π*x/(2*limit)) f(x) = limit * sin(x)
        

The third method (imeth = 0) is the tanh clip:

|x| < limit: f(x) = limit * tanh(x/limit)/tanh(1) f(x) = limit * sin(x)
        

NoteNote
 

Method 1 appears to be non-functional at release of Csound version 4.07.

Examples

Here is an example of the clip opcode. It uses the files clip.orc and clip.sco.

Example 1. Example of the clip opcode.

/* clip.orc */
; Initialize the global variables.
sr = 44100
kr = 4410
ksmps = 10
nchnls = 1

; Instrument #1.
instr 1
  ; Generate a noisy waveform.
  arnd rand 44100
  ; Clip the noisy waveform's amplitude to 20,000
  a1 clip arnd, 2, 20000

  out a1
endin
/* clip.orc */
        
/* clip.sco */
; Play Instrument #1 for one second.
i 1 0 1
e
/* clip.sco */
        

Credits

Author: John ffitch

University of Bath, Codemist Ltd.

Bath, UK

August, 2000

New in Csound version 4.07