frac
Prev | Orchestra Opcodes and Operators | Next

## frac

frac — Returns the fractional part of a decimal number.

## Description

Returns the fractional part of x.

## Syntax

    frac(x) (init-rate or control-rate args; also works at audio rate in Csound5)

    frac(k/i[]) (k- or i-arrays )

where the argument within the parentheses may be an expression. Value converters perform arithmetic translation from units of one kind to units of another. The result can then be a term in a further expression.

## Examples

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

Example 382. Example of the frac 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
    ; Audio out   Audio in
    -odac           -iadc    ;;;RT audio I/O
    ; For Non-realtime ouput leave only the line below:
    ; -o frac.wav -W ;;; for file output any platform
    </CsOptions>
    <CsInstruments>

    ; Initialize the global variables.
    sr = 44100
    kr = 4410
    ksmps = 10
    nchnls = 1

    ; Instrument #1.
    instr 1
      i1 = 16 / 5
      i2 = frac(i1)

      print i2
    endin

    </CsInstruments>
    <CsScore>

    ; Play Instrument #1 for one second.
    i 1 0 1
    e

    </CsScore>
    </CsoundSynthesizer>

Its output should include a line like this:

    instr 1:  i2 = 0.200

Here is another example of the frac opcode. It uses the file frac2.csd.

Example 383.

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

    ; By Stefano Cucchi 2024
    </CsOptions>
    <CsInstruments>

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

    instr 1

    gkrandom randomh 1, 45, 300, 2,  3 ; generate some random numbers
    gkrandomFLOOR = floor (gkrandom)   ; take the integer part
    gkrandomFRAC = frac (gkrandom)     ; take the fractional part

    endin

    instr 10

      ktrigger metro 4
      kmintim = 0
      kmaxnum = 10
      kinsnum = 20
      kwhen = 0
      kdur = ktrigger*0.25

      schedkwhen ktrigger, kmintim, kmaxnum, kinsnum, kwhen, kdur

    endin

    instr 20

      irandomFLOOR = i(gkrandomFLOOR)
      irandomFRAC = i(gkrandomFRAC)

      ; Use the integer part to control the number of harmonics of every note
      ; after converting (k) value to (i)
      prints "generated value = %f\n", i(gkrandom)
      prints "fractional part = %f\n", irandomFRAC
      a1 buzz 0.5, 120, irandomFLOOR, 1
      kenvelope linseg 0, p3*0.1, 1, p3*0.8, 1, p3*0.1, 0
      a1 = a1*kenvelope
      aL, aR pan2 a1, irandomFRAC, 1 ; use the fractional part to control the pan position
      outs aL, aR

    endin

    </CsInstruments>
    <CsScore>

    f 1 0 16384 10 1

    i 1 0 10
    i 10 0 10
    e
    </CsScore>
    </CsoundSynthesizer>

## See also

Mathematical Functions

## Credits

Example written by Kevin Conder.

Prev | Up | Next
fprints | Home | fractalnoise