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 383. 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 384. 

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