powoftwo — Performs a power-of-two calculation.


Performs a power-of-two calculation.


powoftwo(x)  (init-rate or control-rate args only)


powoftwo() function returns 2x and allows positive and negatives numbers as argument. The range of values admitted in powoftwo() is -5 to +5 allowing a precision more fine than one cent in a range of ten octaves. If a greater range of values is required, use the slower opcode pow.

These functions are fast, because they read values stored in tables. Also they are very useful when working with tuning ratios. They work at i- and k-rate.


Here is an example of the powoftwo opcode. It uses the file powoftwo.csd.

Example 626. Example of the powoftwo opcode.

See the sections Real-time Audio and Command Line Flags for more information on using command line flags.

; Select audio/midi flags here according to platform
-odac     ;;;realtime audio out
;-iadc    ;;;uncomment -iadc if realtime audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o poweroftwo.wav -W ;;; for file output any platform

sr = 44100
ksmps = 32
nchnls = 2
0dbfs  = 1

instr 1	; bit reduction for Lo-Fi sound

iBits	  = p5						;bit depth
iQuantize = powoftwo(iBits)				;find number of discrete steps for this bit depth
iQuantize = iQuantize*0.5				;half the number of steps for each side of a bipolar signal
print	  iQuantize
asig	  soundin "fox.wav"
asig	  = round(asig * iQuantize) / iQuantize		;quantize audio signal (bit reduce)
	  outs asig, asig         

;        bits
i1 0   3  16
i1 ^+3 .  12
i1 ^+3 .   8
i1 ^+3 .   4
i1 ^+3 .   2
i1 ^+3 .   1


Its output should include a line like this:

instr 1:  iQuantize = 32768.000
instr 1:  iQuantize = 2048.000
instr 1:  iQuantize = 128.000
instr 1:  iQuantize = 8.000
instr 1:  iQuantize = 2.000
instr 1:  iQuantize = 1.000

See Also

logbtwo, pow


Author: Gabriel Maldonado
June 1998

Author: John ffitch
University of Bath, Codemist, Ltd.
Bath, UK
July 1999

New in Csound version 3.57