File: Version3_50.Notes

package info (click to toggle)
csound-doc 3.47b2-2
  • links: PTS
  • area: non-free
  • in suites: woody
  • size: 1,492 kB
  • ctags: 272
  • sloc: makefile: 36
file content (775 lines) | stat: -rw-r--r-- 24,134 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
Release Notes for 3.50
======================

These are the release notes for version 3.50.  This accumulates a
number of changes which have been released in bits, but there are even
more here than previously released.

It incorporates significant bodies of code from Gabriel Maldonado and
hans Mikelson, with contributions from Richard Boulanger, V.Lazzarini,
Greg Sulliven, rasmus ekman, matt ingalls, Ed Hall, and many others
who assisted in identifying bugs etc. (I really should maintain
records of them all, but they know who they are I hope).


Bug Fixes
---------

Pow now available again.
Internal changes to parser to make fewer calls to strcmp
Corrections to rand in a-rate case and 16 bit randoms
Two bugs in extending labels and goto tables corrected
Minor bug in extending instrument numbers fixed

Language Changes
----------------

hetro had a wrong constant which would give rise to a little noise.

If the incorrect out opcode is used it now attempts to correct to the
correct one, which is not necessarily correct.

new names dumpk rather than kdump introduced. 

kon renamed midion

kfilter2 renamed filter2 (still not sure it works though)

The opcodes rand randi and randh take an additional, optional argument
which if non zero gives a 31bit random nuber rather than the 16bit one.

Rising to a power is available in expressions with the ^ operator.
use with some caution as I am not sure that the precidence is correct.

An internal changes has changed the conditional compilation flag for
the Ingalls' port from __MWERKS__ to macintosh; this should help the
BeOS port.

The single file .csd input has been extended for all command-line
versions, and possibly for Windows.  It can not decode additional
parameters.

Id a file .csoundrc exists, it is read to set parameters first, which
can be overridden.  It used the .csd form so options are written as on
the command line, with optional newlines at appropriate places.  It
does not set orc/sco names (as far as i can understand it)

Opcode Fixes
------------

sndwarp had bugs on Linux

rand, randh and randi now take an additional operand, which if
non-zero use a better randon number generator

bug in ntrpol fixed

MIDI on Linux may work, or may not....

Many changes to the pitchbend opcodes

moogvcf and rezzy can accept a-rate parameters, and moogvcf takes an
optional scaling factor

foscil/foscili can take a-rate amplitude and frequency

biquad has an additional optional argument, which if non zero skips
initialisation. 


New Opcodes 
-----------

schedule -- schedule an instrument event

schedwhen -- conditional scheduling

lfo -- Low Frequency Oscilator with 6 shapes

midion2 -- MIDI turnon (G.Maldonado)

midiin --  (G.Maldonado)

midiout --  (G.Maldonado)

nrpn --  (G.Maldonado)

cpstmid --  (G.Maldonado)

streson -- string resonator (V.Lazzarini)

mod opcodes -- to complete arithmetic operations

slider8, slider8f, islider8
slider16, slider16f, islider16
slider32, slider32f, islider32
slider64, slider64f, islider64
s16b14, is16b14, s32b14, is32b14  -- MIDI slider controls (G.Maldonado)

vco -- (Hans Mikelson)

planet -- (Hans Mikelson)

distort1 -- (Hans Mikelson)

pareq -- Implementation of Zoelzer's Parmentric Equalizer Filters (Hans Mikelson)

deltapn -- (Hans Mikelson)

Experimental opcodes:
--------------------
oscil3 -- Just like oscili but with cubic interpolation
foscil3
losil3
table3
itable3
deltap3
vdelay3

Other Changes:
-------------

use of kdump or kon, while still allowed gives a message about
deprecated opcodes.

Windows GUI Changes
-------------------

None i think

------------------------------------------------------------------------
==John ff
  1999 Orthodox Christmas
========================================================================

schedule, schedwhen

	schedule	inst, iwhen, idur, ....
	schedwhen	ktrigger, kinst, kwhen, kdur, ....

PERFORMANCE

schedule adds a new score event.  The arguments are the same as in a
score.  The when time (p2) is measured from the time of this event.

If the duration is zero or negative the new event is of MIDI type, and
inherits the release sub-event from the scheduling instruction.

In the case of schedwhen the event is only scheduled when the krate
value ktrigger is first non-zero.

Examples:

;; Double hit and 1sec separation
instr 1
      schedule	2,  1, 0.5, p4, p5
a1    shaker	p4, 60, 0.999, 0, 100, 0
      out	a1
endin

instr 2
a1    marimba   p4, cpspch(p5), p6, p7, 2, 6.0, 0.05, 1, 0.1
      out       a1
endin 

instr 3 
kr    table	kr, 1
      schedwhen	kr, 1, 0.25, 1, p4, p5
endin
------------------------------------------------------------------------

lfo

kr	lfo		kamp, kcps[, itype]
ar	lfo		kamp, kcps[, itype]

DESCRIPTION

A LFO of various shapes

INITALIZATION

itype -- determine the form of the oscilator
  (default) 0:	sine
            1:  triangles
	    2:  square (biplar)
	    3:  square (unipolar)
	    4:  saw-tooth
	    5:  saw-tooth(down)

The sine wave is implemented as a 4096 table and linear
interpolation.  The others are calculated.

PERFORMANCE

ar, kr - output signal
kamp - amplitude
kcps - frequency of oscilator

EXAMPLE:
instr 1
kp    lfo	10, 5, 4
ar    oscil	p4, p5+kp, 1
      out	ar
endin

------------------------------------------------------------------------
minion2

        midion2    kchn, knum, kvel, ktrig

DESCRIPTION

sends note on and off messages to the midi out port when triggered by a 
value different than zero.


PERFORMANCE

kchn - midi channel
knum - midi note number
kvel - note velocity
ktrig - trigger input signal (normally 0)

Similary to 'midion', this opcode sends note-on and note-off messages
to the midi out port, but only when ktrig is different than zero. This
opcode is thinked to work toghether with the output of the 'trigger' opcode.

(G.Maldonado)

------------------------------------------------------------------------
midiin

kstatus, kchan, kdata1, kdata2          midiin

DESCRIPTION
returns a generic midi message received by the midi in port


PERFORMANCE
kstatus - the type of midi message. Can be:
                128 (note off),
                144 (note on),
                160 (polyphonic aftertouch), 
                176 (control change),
                192 (program change), 
                208 (channel aftertouch),
                224 (pitch bend)
                or 0 if no midi message are pending in the MIDI IN buffer.

kchan - midi channel (1-16)
kdata1, kdata2 - message-dependent data values

midiin has no input arguments, because it reads at the midi in port
implicitly.  It works at k-rate. Normally (i.e. when no messages are
pending) kstatus is zero, only each time midi data are present in the
midi in buffer, kstatus is set to the type of the relative messages.

(G.Maldonado)
------------------------------------------------------------------------
midiout

        midiout         kstatus, kchan, kdata1, kdata2

DESCRIPTION
sends a generic midi message to the midi out port

PERFORMANCE
kstatus - the type of midi message. Can be:
                128 (note off),
                144 (note on),
                160 (polyphonic aftertouch), 
                176 (control change),
                192 (program change), 
                208 (channel aftertouch),  
                224 (pitch bend)
                or 0 when no midi messages must be sent to the MIDI OUT port.
kchan - midi channel (1-16)
kdata1, kdata2 - message-dependent data values

midiout has not output arguments, because it sends the message to the
midi out port implicitly.  It works at k-rate. It sends a midi message
only when kstatus is different than zero. 
Warning! Normally kstatus should be set to 0, only when the user
intend to send a midi message, it can be set to the corresponding
message type number.

(G.Maldonado)
------------------------------------------------------------------------
nrpn

        nrpn    kchan, kparmnum, kparmvalue

DESCRIPTION

sends a nprn (Non Registered Parameter Number) message to the midi out port 
each time one of the input arguments changes.


PERFORMANCE

kchan - midi channel
kparmnum - number of NRPN parameter
kparmvalue - value of NRPN parameter


This opcode sends new message when the MIDI translated value of one of
the input arguments changes. It operates at k-rate. Useful with the
midi instruments that recognize NRPNs (for example with the newest
sound-cards with internal midi synthesizer such as SB AWE32, AWE64,
GUS etc. in which each patch parameter can be changed during the
performance via NRPN)

(G.Maldonado)
------------------------------------------------------------------------
cpstmid

icps    cpstmid  ifn

INITIALIZATION

ifn - function table containing the parameters 
      (numgrades, interval, basefreq, basekeymidi) and
      the tuning ratios.

(init rate only)

This unit is similar to cpsmidi, but allows fully customized
micro-tuning scales.  It requires five parameters, the first ifn is
the function table number of the tuning ratios, and the other
parameters must be stored in the function tables itself.  The function
table ifn should be generated by the GEN2 and the first four values
stored in this function are: numgrades (the number of grades of the
micro-tuning scale), interval (the frequency range covered before
repeating the grade ratios, for example 2 for one octave, 1.5 for a
fift etcetera), basefreq (the base frequency of the scale in cps),
basekeymidi (the midi-note-number to which to assign the basefreq
unmodified). 

After these four values, the user can begin to insert the tuning
ratios.  For example, for a standard 12-grade scale with the
base-frequency of 261 cps assigned to the key-number 60, the
corresponding f-statement in the score to generate the table should
be:


;       numgrades     basefreq               tuning-ratios (eq.temp) ..
.....   
;            nterval         basekeymidi       
f1 0 64 -2 12 2   261    60   1  1.059463094359  1.122462048309  1.189207115003 ..etc...  


Another example with a 24-grade scale with a base frequency 
of 440 assigned to the key-number 48, and a repetition interval of 1.5:


;        numgrades        basefreq               tuning-ratios .......   
;                 interval         basekeymidi       
f1 0 64 -2   24      1.5     440        48        1   1.01  1.02  1.03   ..etc...  

(G.Maldonado)
------------------------------------------------------------------------
ar   streson  asig, kfr, ifdbgain

An audio signal is modified by an string resonator with variable
fundamental frequency.

INITIALIZATION

ifdbgain - feedback gain, between 0 and 1, of the internal
           delay line. A value close to 1 creates a slower decay and
           a more pronounced resonance. Small values may leave the
           input signal unaffected. Depending on the filter frequency,
           typical values are > .9.


PERFORMANCE

streson passes the input asig through a network composed of comb,
low-pass and all-pass filters, similar to the one used in some
versions of the Karplus-Strong algorythm, creating a string resonator
effect. The fundamental frequency of the "string" is controled by
the k-rate variable kfr.This opcode can be used to simulate sympathetic
resonances to an input signal.

streson is an adaptation of the StringFlt object of the SndObj Sound
Object Library developed by the author.

Victor Lazzarini
Music Department
National University of Ireland, Maynooth
Maynooth Co.Kildare
Ireland
------------------------------------------------------------------------
Expression:

kr =	ka % kb
ar =	ka % ab
ar =	aa % kb
ar =	aa % ab

PERFORMANCE

Returns the valus a reduced by b, so the result in absolute value that
the absoute value of b, by repeated subtraction.  This is the same as
a modulus function in the integer case.

------------------------------------------------------------------------

ar vco kamp, kfqc, iwave, kpw, isine, imaxd

Implementation of an band limited analog modeled oscillator based on
integration of band limited impulses.

Performance

vco can be used to simulate a variety of analog wave forms.

kamp determines the amplitude, kfqc is the frequency of the wave,

iwave determines the waveform 1 = sawtooth, 2 = Square/PWM, 3 = triangle/Saw
Ramp

kpw determines the pulse width when iwave is set to 2 and determines
Saw/Ramp character when iwave is set to 3. The value of kpw should be
between 0 and 1. A value of .5 will generate a square wave or a triangle
wave depending on iwave.

isine should be the number of a stored sine wave table.

imaxd is the maximum delay time. A time of 1/ifqc may be required for the
pwm and triangle waveform. To bend the pitch down this value must be as
large as 1/(minimum frequency).

Example

instr 10
  idur = p3 ; Duration
  iamp = p4 ; Amplitude
  ifqc = cpspch(p5) ; Frequency
  iwave = p6 ; Selected wave form 1=Saw, 2=Square/PWM, 3=Tri/Saw-Ramp-Mod
  isine = 1
  imaxd = 1/ifqc*2 ; Allows pitch bend down of two octaves
  kpw1 oscil .25, ifqc/200, 1
  kpw = kpw1 + .5
  asig vco iamp, ifqc, iwave, kpw, 1, imaxd
  outs asig, asig ; Ouput and amplification
endin

f1 0 65536 10 1
; Sta Dur Amp Pitch Wave
i10 0 2 20000 5.00 1
i10 + . . . 2
i10 . . . . 3
i10 . 2 20000 7.00 1
i10 . . . . 2
i10 . . . . 3
i10 . 2 20000 9.00 1
i10 . . . . 2
i10 . . . . 3
i10 . 2 20000 11.00 1
i10 . . . . 2
i10 . . . . 3
Author

Hans Mikelson

December 1998
------------------------------------------------------------------------

aout distort1 asig, kpregain, kpostgain, kshape1, kshape2

Implementation of modified hyperbolic tangent distortion.

Performance

distort1 can be used to generate wave shaping distortion based on a
modification of the tanh function.

       exp(asig * (pregain + shape1)) - exp(asig*(pregain+shape2))
aout = -----------------------------------------------------------
       exp(asig*pregain)              + exp(-asig*pregain)

asig is the input signal.

kpregain determines the amount of gain applied to the signal before
waveshaping. A value of 1 gives slight distortion.

kpostgain determines the amount of gain applied to the signal after
waveshaping.

kshape1 determines the shape of the positive part of the curve. A value of
zero gives a flat clip, small positive values give sloped shaping.

kshape2 determines the shape of the negative part of the curve.

Example

gadist  init    0

        instr   1
iamp    =       p4
ifqc    =       cpspch(p5)
asig    pluck   iamp, ifqc, ifqc, 0, 1
gadist  =       gadist + asig
        endin

        instr   50
kpre    init    p4
kpost   init    p5
kshap1  init    p6
kshap2  init    p7
aout    distort1 gadist, kpre, kpost, kshap1, kshap2
        outs    aout, aout
gadist  =       0
        endin

;   Sta  Dur  Amp    Pitch
i1  0.0  3.0  10000  6.00
i1  0.5  2.5  10000  7.00
i1  1.0  2.0  10000  7.07
i1  1.5  1.5  10000  8.00

;   Sta  Dur  PreGain PostGain Shape1 Shape2
i50 0    3    2       1        0      0
Author

Hans Mikelson
December 1998

PS Name chosen to avoid clash with XTC's distort opcode
------------------------------------------------------------------------
outx, outy, outz planet kmass1, kmass2, ksep, ix, iy, iz, ivx, ivy, ivz,
idelta, ifriction

Signal generator which loosely simulates a planet orbiting in a binary star
system.

Performance

planet simulates a planet orbiting in a binary star system. The outputs are
the x, y and z coordinates of the orbiting planet. It is possible for the
planet to achieve escape velocity by a close encounter with a star. This
makes this system somewhat unstable.

kmass1 is the mass of the first star,

kmass2 is the mass of the second star,

ksep determines the distance between the two stars,

ix, iy, iz are the initial x, y and z coordinates of the planet,

ivx, ivy, ivz are the initial velocity vector components for the planet.

idelta is the step size used to approximate the differential equation.

ifriction is a value for friction which can used to keep the system from
blowing up.

Example

           instr 1

idur       =     p3
iamp       =     p4
km1        =     p5
km2        =     p6
ksep       =     p7
ix         =     p8
iy         =     p9
iz         =     p10
ivx        =     p11
ivy        =     p12
ivz        =     p13
ih         =     p14
ifric      =     p15

kamp   linseg     0, .002, iamp, idur-.004, iamp, .002, 0

ax, ay, az planet km1, km2, ksep, ix, iy, iz, ivx, ivy, ivz, ih, ifric

           outs   ax*kamp, ay*kamp

           endin
;   Sta  Dur  Amp   M1  M2  Sep  X   Y  Z  VX  VY  VZ   h   Frict
i1  0    1    5000  .5  .35 2.2  0  .1  0  .5  .6  -.1  .5  -0.1
i1  +    .    .     .5  0   0    0  .1  0  .5  .6  -.1  .5   0.1
i1  .    .    .     .4  .3  2    0  .1  0  .5  .6  -.1  .5   0.0
i1  .    .    .     .3  .3  2    0  .1  0  .5  .6  -.1  .5   0.1
i1  .    .    .     .25 .3  2    0  .1  0  .5  .6  -.1  .5   1.0
i1  .    .    .     .2  .5  2    0  .1  0  .5  .6  -.1  .1   1.0

Author

Hans Mikelson
December 1998

------------------------------------------------------------------------
Banks of sliders

slider8,slider16,slider32,slider64
slider8f, slider16f,slider32f,slider64f
islider8,islider16,islider32,islider64
s16b14,is16b14,s32b14,is32b14

SYNTAX

k1,k2,k3,k4,k5,k6,k7,k8 slider8 ichan, ictlnum1, imin1, imax1, init1, ifn1, ...,\
                                       ictlnum8, imin8, imax8, init8, ifn8    

k1, ... , k16   slider16  ichan, ictlnum1,  imin1,  imax1,  init1,  ifn1, ...., \
                                 ictlnum16, imin16, imax16, init16, ifn16

k1, ... , k32   slider32  ichan, ictlnum1,  imin1,  imax1,  init1,  ifn1, ...., \
                                 ictlnum32, imin32, imax32, init32, ifn32

k1, ... , k64   slider64  ichan, ictlnum1,  imin1,  imax1,  init1,  ifn1, ...., \
                                 ictlnum64, imin64, imax64, init64, ifn64

k1,k2,k3,k4,k5,k6,k7,k8	slider8f ichan, ictlnum1, imin1, imax1, init1, ifn1, icutoff1, ...., \
                                        ictlnum8, imin8, imax8, init8, ifn8, icutoff8
   
k1, ... , k16   slider16f ichan, ictlnum1,  imin1,  imax1,  init1,  ifn1,  icutoff1, .... , \
                                 ictlnum16, imin16, imax16, init16, ifn16, icutoff16

k1, ... , k32   slider32f ichan, ictlnum1,  imin1,  imax1,  init1,  ifn1,  icutoff1, .... , \
                                 ictlnum32, imin32, imax32, init32, ifn32, icutoff32

k1, ... , k64   slider64f ichan, ictlnum1,  imin1,  imax1,  init1,  ifn1,  icutoff1, .... , \
                                 ictlnum64, imin64, imax64, init64, ifn64, icutoff64

i1, ... , i8 islider8            ichan, ictlnum1, imin1, imax1, ifn1, ...., \
                                        ictlnum8, imin8, imax8, ifn8


i1, ... , i16 islider16          ichan, ictlnum1,  imin1,  imax1,  ifn1, ...., \
                                        ictlnum16, imin16, imax16, ifn16

i1, ... , i32 islider32          ichan, ictlnum1,  imin1,  imax1,  ifn1, ...., \
                                        ictlnum32, imin32, imax32, ifn32

i1, ... , i64 islider64        ichan, ictlnum1,  imin1,  imax1,  ifn1, ...., \
                                      ictlnum64, imin64, imax64, ifn64

i1, ... , i16   s16b14 	       ichan, ictlno_msb1, ictlno_lsb1, imin1, imax1, initvalue1, ifn1, ....., \
                      		      ictlno_msb16, ictlno_lsb16, imin16, imax16, initvalue16, ifn16

i1, ... , i16   is16b14        ichan, ictlno_msb1, ictlno_lsb1, imin1, imax1, ifn1, .......... \
				      ictlno_msb16, ictlno_lsb16, imin16, imax16, ifn16

i1, ... , i32   s32b14 	       ichan, ictlno_msb1, ictlno_lsb1, imin1, imax1, initvalue1, ifn1, ....., \
                      		      ictlno_msb32, ictlno_lsb32, imin32, imax32, initvalue32, ifn32

i1, ... , i32   is32b14        ichan,  ictlno_msb1, ictlno_lsb1, imin1, imax1, ifn1, .......... \
				       ictlno_msb32, ictlno_lsb32, imin32, imax32, ifn32


DESCRIPTION

MIDI slider control banks 


INITIALIZATION
i1 ... i64 - output values

ichan - midi channel (1-16)

ictlnum1 ... ictlnum64 - midi control number
ictlno_msb1 .... ictlno_msb32 - midi control number (most significant byte)
ictlno_lsb1 .... ictlno_lsb32 - midi control number (less significant byte)
imin1 ... imin64 - minimum values for each controller
imax1 ... imax64 - maximum values for each controller
init1 ... init64 - inital value for each controller
ifn1 ... ifn64 - function table for conversion for each controller
icutoff1 ... icutoff64 - low pass filter frequency cutoff for each controller

PERFORMANCE

k1 ... k64 - output values

isliderN,  sliderN and sliderNf are banks of MIDI controller 
(useful when using midi mixer such as KAWAI MM-16 or others for
changing whatever sound  parameter in realtime. A software slider bank
will be avalaible within short time). 
The raw midi control messages at the input port are converted to agree
with iminN and imaxN,  and an initial value can be set. Also an
optional non-interpolated function table with a custom translation
curve is allowed, useful for enabling exponential response curves. 

When no function table translation is required, set the ifnN value to
0, else set ifnN to a valid function table number.  When table
translation is enabled (i.e. setting ifnN value to a non-zero number
referring to an already allocated function table), initN value should
be set equal to iminN or imaxN value, else the initial output value
will not be the same as specified in initN argument.

slider8 allows a bank of 8 different midi control message numbers,
slider16 does the same with a bank of 16 controls, and so on.  

sliderNf filter the signal before output for eliminating
discontinuities due to the low resolution of the MIDI (7 bit); the
cutoff frequency can be set separately for each controller (suggested
range: .1 to 5 cps). Warning! sliderNf opcodes do not output the
required initial value immediately, but only after some k-cycle
because the filter slightly delays the output.

As the input and output arguments are many, you can split the line
using '\' (backslash) character (new in 3.47 version) to improve the
readability. Using these opcodes is quite more efficient than using
the separate ones (ctrl7 and ktone) when more controllers are
required. 

In isliderN there is not an initial-value input argument because the
output is get directly from current status of internal controller
array of Csound. 

isNb14 and sNb14 opcodes are the 14-bit versions of these banks of
controllers. 

------------------------------------------------------------------------
ar      pareq   asig, kc, iv, iq, imode

iv is volume boost or cut
iq is the quality factor (sqrt(.5) is no resonance)
imode is 0=Peaking EQ, 1=Low Shelf, 2=High Shelf

Performance

kc is the centre of shelf value
asig is the incoming signal

Eqample:

        instr 15
ifc     =     p4             ; Center / Shelf
iq      =     p5             ; Quality factor sqrt(.5) is no resonance
iv      =     ampdb(p6)      ; Volume Boost/Cut
imode   =     p7             ; Mode 0=Peaking EQ, 1=Low Shelf, 2=High Shelf
kfc     linseg  ifc*2, p3, ifc/2
asig    rand  5000                     ; Random number source for testing
aout    pareq asig, kfc, iv, iq, imode ; Parmetric equalization
        outs  aout, aout               ; Output the results
endin

; SCORE:
;   Sta  Dur  Fcenter  Q        Boost/Cut(dB)  Mode
i15 0    1    10000   .2          12             1
i15 +    .    5000    .2          12             1
i15 .    .    1000    .707       -12             2
i15 .    .    5000    .1         -12             0

Hans Mikelson
------------------------------------------------------------------------
oscil3, foscil3, loscil3, vdelay3, table3, itable3, deltap3

These are experimental opcodes which use cubic interpolation rather
than teh linear interpolation of oscili, foscili, loscili, vdelay,
tablei, itablei and  deltapi.  Testing so far has shown that oscil3
works and gives a better sound (on a 32 point sine wave).  The others
have not been tested and so shoudl be used with some care.  Feedback
on these is most acceptable
JPff

------------------------------------------------------------------------