powoftwo
Prev | Orchestra Opcodes and Operators | Next

## 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. It uses the file powoftwo.csd.

Example 767. 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

Prev | Up | Next
powershape | Home | prealloc