jsfx_setslider

Abstract

Sets the slider values of a jsfx script

Description

With jsfx_setslider it is possible to set the values of any number of sliders defined in a jsfx script, mostly prior to calling jsfx_play. A jsfx plugin defines a series of up to 64 sliders, which are control parameters used by the script. A slider definition in a jsfx script has the form:

slider3:1.5<0,4,0.01>Compression Ratio

This defines a control parameter with default value 1.5, between 0 and 4, with a precission (an increment) of 0.01 and a label "Copression Ratio".

kcomprat = 2.5
jsfx_setslider ihandle, 3, kcomprat

The code above will set the slider #3 (the index passed corresponds with the slider number) to the value of kcomprat The value of any slider can be read via jsfx_getvalue (only one value at a time).

many sliders

It is possible to call jsfx_setslider with any number of sliders. It is not necessary to set all the sliders defined in the script. Any slider which is not set via jsfx_setslider retains its default value. A value will always be confined to the range in the slider definition and will also be quantized to the increment in the slider definition. To disable any quantization, set the increment to 0 in the jsfx script

jsfx

jsfx is an audio programming language implemented primarily as part of the DAW REAPER. It is a scriptiong language with a built-in compiler which translates it to machine code. It allows the user to operate at the sample level (like defining an udo with setksmps 1 but more efficient). It is around 2x to 2.5x slower than hand-coded C. See https://www.reaper.fm/sdk/js/js.php for more information about the syntax, etc.

Syntax

jsfx_setslider ihandle, id1, kval1 [, id2, kval2, id3, kval3, ...]

Arguments

  • ihandle: the handle created via jsfx_new or jsfx
  • idx, kvalx: a jsfx script allows to define up to 64 control parameters, which are called sliders. Each slider has an idx (starting from 1) and a value. Here you can control as many sliders as you need. Each slider consists of a pair of values, an id identifying the slider (this corresponds to the sliderx value in the jsfx script) and the value itself (a k- value)

Output

Execution Time

  • Performance (audio)

Examples

<CsoundSynthesizer>
<CsOptions>
-odac 

</CsOptions>

<CsInstruments>
sr     = 44100
ksmps  = 64
nchnls = 2
0dbfs  = 1

;; This is the example file for the opcodes jsfx_new, jsfx_play and jsfx_setslider

gisnd ftgen 0, 0, 0, -1, "bourre-fragment-1.flac", 0, 0, 1


FLpanel "jsfx - tubeharmonics", 400, 500, 50, 50
FLcolor 150, 100, 150, 200, 100, 250

iw, ih = 300, 30
iline = ih * 2
iy, ix = ih, ih * 0.5
;                                    min max  exp
gkwhich, i0 FLslider "source",       0,    2,   0, 3,  -1, iw, ih, ix, iy
iy += iline
iv1 FLvalue "", 50, 30, 322, iy
gkeven, i1 FLslider "even harmonics",0,    1,   0, 3, iv1, iw, ih, ix, iy
iy += iline
iv2 FLvalue "", 50, 30, 322, iy
gkodd,  i2 FLslider "odd harmonics", 0,    1,   0, 3, iv2, iw, ih, ix, iy
iy += iline
iv3 FLvalue "", 50, 30, 322, iy
gkflct, i3 FLslider "fluctuation",   0,    1,   0, 3, iv3, iw, ih, ix, iy
iy += iline
iv4 FLvalue "", 50, 30, 322, iy
gkinpt, i4 FLslider "Input (dB)",  -12,  12,  0, 3, iv4, iw, ih, ix, iy
iy += iline
iv5 FLvalue "", 50, 30, 322, iy
gkout,  i5 FLslider "Output (dB)", -12,  12,  0, 3, iv5, iw, ih, ix, iy
iy += iline
FLcolor 150, 100, 150, 200, 200, 100
gkdump, i6 FLbutton "Dump variables", 1, 0, 2, iw/2, ih, ix, iy, -1 
FLpanelEnd
FLrun

FLsetVal_i 0, i0
FLsetVal_i 0.3, i1
FLsetVal_i 0.3, i2
FLsetVal_i 0.1, i3
FLsetVal_i 0, i4
FLsetVal_i 0, i5
FLsetVal_i 0, i6


opcode loopsamp, a, i
  ift xin
  iloopend = nsamp(ift) / sr
  asig flooper2 1, 1, 0, iloopend, 0.1, ift
  xout asig
endop

opcode select3, a, kaaa
  kwhich, a1, a2, a3 xin
  if(kwhich < 1) then
    asig = a1*(1-kwhich) + a2*kwhich
  else
    asig = a2*(2-kwhich) + a3*(kwhich-1)
  endif
  xout asig
endop

instr 1
  a1 loopsamp gisnd
  a3 vco2 0.5, ntof:i("3C")
  a2 oscili 0.5, 1000
  asig select3 gkwhich, a1, a2, a3
  ihandle jsfx_new "tubeharmonics.jsfx"
  print ihandle
  jsfx_setslider ihandle, 1, gkeven, 2, gkodd, 3, gkflct, 4, gkinpt, 5, gkout
  aout jsfx_play ihandle, asig
  if gkdump == 1 then
    jsfx_dump ihandle, metro(4)
  endif
  k7 jsfx_getslider ihandle, 7
  printf "k7: %f \r", changed2(k7), k7
  outs aout, aout
endin

</CsInstruments>

<CsScore>

i1 0 3600

</CsScore>
</CsoundSynthesizer>

See also

Credits

Eduardo Moguillansky, 2019

Uses the open-source implementation of the jsfx language by Pascal Gauthier et al. Based heavily on the pd external jsfx~.

https://github.com/asb2m10/jsusfx