Skip to content

maxk

Local maximum (or minimum) value of an incoming asig signal, checked in the time interval between ktrig has become true twice.

📝 Note

Up to Csound 6, this opcode was called max_k.

Syntax

knumkout = maxk(asig, ktrig, itype)
knumkout max_k asig, ktrig, itype

Initialization

itype - itype determinates the behaviour of maxk (see below)

Performance

asig - incoming (input) signal

ktrig - trigger signal

maxk outputs the local maximum (or minimum) value of the incoming asig signal, checked in the time interval between ktrig has become true twice. itype determinates the behaviour of maxk:

1 - absolute maximum (sign of negative values is changed to positive before evaluation).

2 - actual maximum.

3 - actual minimum.

4 - calculate average value of asig in the time interval since the last trigger.

This opcode can be useful in several situations, for example to implement a vu-meter.

Examples

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

Example of the maxk opcode.
<CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
-odac  ;-Ma   ;;;realtime audio out and midi in (on all inputs)
;-iadc    ;;;uncomment -iadc if RT audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o max_k.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

; by Stefano Cucchi 2020

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

instr 1
  Noise:a = noise(0.1, 0.1)         ; generate some noise
  Random:a = randomi(400, 12000, 4) ; generate random numbers from 400 to 1200 

  trig:k = metro(3) ; trigger signal

  Min:k = maxk(Random, trig, 3) ; minumum value 
  Max:k = maxk(Random, trig, 2) ; maximum value 

  printk(0.2, Min)
  printk(0.2, Max)

  noisehp:a = butterhp(Noise, Min)     ; hipass filter at kmin frequency
  noiselp:a = butterlp(Noise, Max*0.5) ; lopass filter at kmin/2 frequency

  comp:a = poscil(0.1, 440) ; comparator signal for consistent amplitude

  noisehp = balance(noisehp, comp) ; adjusting the volume
  noiselp = balance(noiselp, comp) ; adjusting the volume

  out(noisehp, noiselp)
endin

</CsInstruments>
<CsScore>

i1 0 10
e
</CsScore>
</CsoundSynthesizer>

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

Example of the max_k opcode.
<CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
-odac  ;-Ma   ;;;realtime audio out and midi in (on all inputs)
;-iadc    ;;;uncomment -iadc if RT audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o max_k.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

; by Stefano Cucchi 2020

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


instr 1

anoise noise 0.1, 0.1 ; generate some noise
arandom randomi 400, 12000, 4 ; generate random numbers from 400 to 1200 

ktrig metro 3 ; trigger signal

kmin max_k arandom, ktrig, 3 ; minumum value 
kmax max_k arandom, ktrig, 2 ; maximum value 

printk 0.2, kmin
printk 0.2, kmax

anoisehp butterhp anoise, kmin ; hipass filter at kmin frequency
anoiselp butterlp anoise, kmax*0.5 ; lopass filter at kmin/2 frequency

acomp oscil 0.1, 440 ; comparator signal for consistent amplitude

anoisehp balance anoisehp, acomp ; adjusting the volume
anoiselp balance anoiselp, acomp ; adjusting the volume

outs anoisehp, anoiselp

endin

</CsInstruments>
<CsScore>

i1 0 10
e
</CsScore>
</CsoundSynthesizer>

See also

Comparators and Accumulators

Credits

Written by Gabriel Maldonado.

New in Csound 5 (Previously available only on CsoundAV)

Fixed to agree with documentation in 5.15