powoftwo

powoftwo — Performs a power-of-two calculation.

Description

Performs a power-of-two calculation.

Syntax

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

Performance

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.

Examples

Here is an example of the powoftwo opcode. Play powoftwo.csd

Example 780. Example of the powoftwo opcode.

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

<CsoundSynthesizer>
<CsOptions>
; 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
</CsOptions>
<CsInstruments>

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

instr 1	; bit reduction for Lo-Fi sound

iBits	  = p4						;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         

endin
</CsInstruments>
<CsScore>
;        bits
i1 0   3  16
i1 ^+3 .  12
i1 ^+3 .   8
i1 ^+3 .   4
i1 ^+3 .   2
i1 ^+3 .   1

e
</CsScore>
</CsoundSynthesizer>


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

Credits

Author: Gabriel Maldonado
Italy
June 1998

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

New in Csound version 3.57