Csound Csound-dev Csound-tekno Search About

Undocumented opcodes

Date1998-06-24 12:22
FromJean-Michel DARREMONT
SubjectUndocumented opcodes
Hi CSounders,

I guess this has been asked already:

Where can I find documentation about all the physical modeling opcodes and
generally all undocumented one (mandol, marimba, moog, vibes, voice, shaker,
"wg" opcodes etc...) and also (osciliaa, oscilikk, osciliak, oscilika, osciln...)

Regards.

-- 
Jean-Michel DARREMONT

Date1998-06-24 14:25
Fromjpff@maths.bath.ac.uk
SubjectRe: Undocumented opcodes (LONG)
The oscilixx opcodes are really oscili with different arguments, and
there is an internal mapping, so they are documented.

The physical model opcodes are 'documented' in Version3_47.Notes on
the server.  Actually today's task is to revise these as there are
some errors/inaccuracies etc.  Anyway, the documentation says
------------------------------------------------------------------------
ar wgclar kamp, kfreq, kstiff, iatt, idetk, kngain, kvibf, kvamp, ifn[, iminfreq]

Audio output is a tone similar to a clarinet, using a physical model 
developed from Perry Cook, but re-coded for Csound.

Initialisation

iatt - time in seconds to reach full blowing pressure.  0.1 seems to
    correspond to reasonable playing.  A longer time gives a definite 
    initial wind sound.

idetk - time in seconds taken to stop blowing.  0.1 is a smooth ending

ifn - table of shape of vibrato, usually a sine table, created by a
    function 

iminfreq - lowest frequency at which the instrument will play.  If
    it is omitted it is taken to be the same as the initial kfreq. 


Performance

A note is played on a clarinet-like instrument, with the arguments as
    below.

kamp - Amplitude of note. 

kfreq - Frequency of note played.  While it can be varied in
    performance,  I have not tried it 

kstiff - a stiffness parameter for the reed.  Values should be
    negative, and about -0.3.  The useful range is approximately -0.44
    to -0.18.

kngain - amplitude of the noise component, about 0 to 0.5

kvibf - frequency of vibrato in Hertz. Suggested range is 0 to 12

kvamp - amplitude of the vibrato

Example:

a1          wgclar      31129.60, 440, -0.3, 0.1, 0.1, 0.2, 5.735, 0.1, 1
            out         a1

------------------------------------------------------------------------
ar wgflute kamp, kfreq, kjet, iatt, idetk, kngain, kvibf, kvamp, ifn[, iminfreq]

Audio output is a tone similar to a flute, using a physical model 
developed from Perry Cook, but re-coded for Csound.

Initialisation

iatt - time in seconds to reach full blowing pressure.  0.1 seems to
    correspond to reasonable playing.

idetk - time in seconds taken to stop blowing.  0.1 is a smooth ending

ifn - table of shape of vibrato, usually a sine table, created by a
    function 

iminfreq - lowest frequency at which the instrument will play.  If
    it is omitted it is taken to be the same as the initial kfreq. 


Performance

A note is played on a flute-like instrument, with the arguments as
    below.

kamp - Amplitude of note. 

kfreq - Frequency of note played.  While it can be varied in
    performance,  I have not tried it 

kjet - a parameter controlling the air jet.  Values should be
    positive, and about 0.3.  The useful range is approximately 0.08
    to 0.56.

kngain - amplitude of the noise component, about 0 to 0.5

kvibf - frequency of vibrato in Hertz. Suggested range is 0 to 12

kvamp - amplitude of the vibrato

Example:

a1          wgflute     31129.60, 440, 0.32, 0.1, 0.1, 0.15, 5.925, 0.05, 1
            out         a1

------------------------------------------------------------------------
ar wgbow kamp, kfreq, kpres, krat, kvibf, kvamp, ifn[, iminfreq]

Audio output is a tone similar to a bowed string, using a physical model 
developed from Perry Cook, but re-coded for Csound.

Initialisation

ifn - table of shape of vibrato, usually a sine table, created by a
    function 

iminfreq - lowest frequency at which the instrument will play.  If
    it is omitted it is taken to be the same as the initial kfreq. 


Performance

A note is played on a bowed string-like instrument, with the arguments as
    below.

kamp - Amplitude of note. 

kfreq - Frequency of note played.  While it can be varied in
    performance,  I have not tried it 

kpres - a parameter controlling the pressure of the bow on the string.  
    Values should be about 3.  The useful range is approximately 1
    to 5.

kratio - the position of the bow along the string.  Usual playing is
    about 0.127236.  The suggested range is 0.025 to 0.23.

kvibf - frequency of vibrato in Hertz. Suggested range is 0 to 12

kvamp - amplitude of the vibrato

Example:
  A bowing with vibrato setting in after a short time.

kv          linseg      0, 0.5, 0, 1, 1, p3-0.5, 1
a1          wgbowed     31129.60, 440, 3.0, 0.127236, 6.12723, kv*0.01, 1
            out         a1

------------------------------------------------------------------------
ar wgbrass kamp, kfreq, iatt, kvibf, kvamp, ifn[, iminfreq]

Audio output is a tone related to a brass instrument, using a physical model 
developed from Perry Cook, but re-coded for Csound.

Initialisation

iatt -- time taken to reach full pressure

ifn - table of shape of vibrato, usually a sine table, created by a
    function 

iminfreq - lowest frequency at which the instrument will play.  If
    it is omitted it is taken to be the same as the initial kfreq. 


Performance

A note is played on a bowed string-like instrument, with the arguments as
    below.

kamp - Amplitude of note. 

kfreq - Frequency of note played.  While it can be varied in
    performance,  I have not tried it 

kvibf - frequency of vibrato in Hertz. Suggested range is 0 to 12

kvamp - amplitude of the vibrato

Example:
a1          wgbrass     31129.60, 440, 0.1, 6.137, 0.05, 1

------------------------------------------------------------------------
ar marimba kamp, kfreq, ihrd, ipos, imp, kvibf, kvamp, ivibfn, idec
ar vibes   kamp, kfreq, ihrd, ipos, imp, kvibf, kvamp, ivibfn, idec

Audio output is a tone related to the striking of a wooden or metal
block as found in a marimba or vibraphone.  The method is a physical
model developed from Perry Cook, but re-coded for Csound. 

Initialisation

ihrd -- the hardness of the stick used in the strike.  A range of 0 to
    1 is used.  0.5 is a suitable value.

ipos -- where the block is hit, in the range 0 to 1.

imp - a table of the strike impulses.  The file "marmstk1.wav" is a
    suitable function from measurements, and can be loaded with a GEN1
    table.

ivfn - shape of vibrato, usually a sine table, created by a
    function 

idec - time before end of note when damping is introduced


Performance

A note is played on a marimba-like instrument, with the arguments as
    below.

kamp - Amplitude of note. 

kfreq - Frequency of note played.  While it can be varied in
    performance,  I have not tried it 

kvibf - frequency of vibrato in Hertz. Suggested range is 0 to 12

kvamp - amplitude of the vibrato

Example:
a1          marimba     31129.60, 440, 0.5, 0.561, 2, 6.0, 0.05, 1, 0.1
a2          vibes       31129.60, 440, 0.5, 0.561, 2, 4.0, 0.2, 1, 0.1

------------------------------------------------------------------------
ar agogobel kamp, kfreq, ihrd, ipos, imp, kvibf, kvamp, ivibfn

Audio output is a tone related to the striking of a cow bell or
similar.  The method is a physical model developed from Perry Cook,
but re-coded for Csound.  

Initialisation

ihrd -- the hardness of the stick used in the strike.  A range of 0 to
    1 is used.  0.5 is a suitable value.

ipos -- where the block is hit, in the range 0 to 1.

imp - a table of the strike impulses.  The file "britestk.wav" is a
    suitable function from measurements, and can be loaded with a GEN1
    table.

ivfn - shape of vibrato, usually a sine table, created by a
    function 

Performance

A note is played on a cowbell or agogobell-like instrument, with the
arguments as below.

kamp - Amplitude of note. 

kfreq - Frequency of note played.  While it can be varied in
    performance,  I have not tried it 

kvibf - frequency of vibrato in Hertz. Suggested range is 0 to 12

kvamp - amplitude of the vibrato

Example:
a1          agogobel    31129.60, 440, p4, 0.561, 3, 6.0, 0.3, 1

------------------------------------------------------------------------
ar shaker kamp, kfreq, kbeans, kdamp, knum, ktimes[, idecay]

Audio output is a tone related to the shaking of a maraca or
similar gourd instrument.  The method is a physically inspired model
developed from Perry Cook, but re-coded for Csound.  

Initialisation

idecay - If present indicates for how long at the end of the note the
   shaker is to be damped.  The default value is zero.

Performance

A note is played on a cowbell or agogobell-like instrument, with the
arguments as below.

kamp - Amplitude of note. 

kfreq - Frequency of note played, that is the frequency of the
    gourd. It can be varied in performance,  I have not tried it 

kbeans - The number of beans in the gourd.  A value of 8 seems suitable,

kdamp -- The damping vsalue of the shaker.  Values of 0.98 to 1 seems
  suitable, with 0.99 a reasonable default.

knum -- The number of shakes of the gourd.  Values over 64 are
   considered infinite.

ktimes -- Number of times shaken.

[RICK: Not sure all these are useful -- not clear in code]

Example:
a1          shaker	31129.60, 440, 8, 0.999, 0, 100, 0

------------------------------------------------------------------------
a1 fmtbell  kamp, kfreq, kc1, kc2, kvdepth, kvrate, ifn1, ifn2, ifn3, ifn4, ivfn
a1 fmrhode  kamp, kfreq, kc1, kc2, kvdepth, kvrate, ifn1, ifn2, ifn3, ifn4, ivfn
a1 fmwurlie kamp, kfreq, kc1, kc2, kvdepth, kvrate, ifn1, ifn2, ifn3, ifn4, ivfn
a1 fmmetal  kamp, kfreq, kc1, kc2, kvdepth, kvrate, ifn1, ifn2, ifn3, ifn4, ivfn
a1 fmb3     kamp, kfreq, kc1, kc2, kvdepth, kvrate, ifn1, ifn2, ifn3, ifn4, ivfn
a1 fmpercfl kamp, kfreq, kc1, kc2, kvdepth, kvrate, ifn1, ifn2, ifn3, ifn4, ivfn


A family of FM sounds, all using 4 basic oscilators and various
architectures, as used in the TX81Z synthesiser.

Initialisation

All these opcodes take 5 tables for initialisation.  The first 4 are
the basic inputs and the last is the low frequency oscillator (LFO)
used for vibrato.  The last table should usually be a sine wave.

For the other opcodes the initial waves should be as in the table
              ifn1        ifn2          ifn3      ifn4
fmtbell       sinewave    sinewave      sinewave  sinewave
fmrhode       sinewave    sinewave      sinewave  fwavblnk
fmwurlie      sinewave    sinewave      sinewave  fwavblnk
fmmetal       sinewave    twopeaks      twopeaks  sinewave
fmb3          sinewave    sinewave      sinewave  sinewave
fmpercfl      sinewave    sinewave      sinewave  sinewave

The sounds produced are then

fmtbell       Tubular Bell
fmrhode       Fender Rhodes  Electric Piano
fmwurlie      Wurlitzer Electric Piano
fmmetal       "Heavy Metal"
fmb3          Hammond B3 organ
fmpercfl      Percussive Flute

Performance

kamp -- Amplitude

kfreq -- frequency

kc1, kc2 -- Controls for the syntheser, as in the table
              kc1         	kc2                         Algorithm
fmtbell       Mod index 1	Crossfase of two outputs        5
fmrhode       Mod index 1	Crossfase of two outputs        5
fmwurlie      Mod index 1	Crossfase of two outputs        5
fmmetal       Total mod index   Crossfade of two modulators     3
fmb3          Total mod index   Crossfade of two modulators     4
fmpercfl      Total mod index   Crossfade of two modulators     4

kvdepth -- Vibrator depth

kvrate -- Vibrator rate

Examples:
a1          fmtbell	31129.60, 440, 1,   1.2, 0.2, 6,   1,1,1,1, 1
a1          fmrhode	31129.60, 440, 1,   1.2, 0.2, 12,  1,1,1,4, 1
a1          fmwurlie	31129.60, 440, 1,   1.2, 0.2, 8,   1,1,1,4, 1
a1          fmmetal  	31129.60, 110, 1,   1.2, 0.2, 5.5, 1,5,5,1, 1
a1          fmb3   	31129.60, 440, 1,   1.2, 0.2, 8,   1,1,1,1, 1
a1          fmpercfl	31129.60, 440, 0.1, 0.1, 0.5, 12,  1,1,1,1, 1

------------------------------------------------------------------------
a1 fmvoice  kamp, kfreq, kvowel, ktilt, kvibamt, kvibrate, ifn1, ifn2, ifn3, ifn4, ivibfn

FM Singing Voice Synthesis,

Initialisation:

ifn1, ifn2, ifn3,ifn3 -- Tables, usually of sinewaves.

Performance

kamp -- Amplitude control

kfreq -- Base frequency of sound

kvowel -- the vowel being sung, in the range 0-64; it is rounded to
the nearest integer.

ktilt -- the spectral tilt of the sound in the range 0 to 99

kvibamt -- Depth of vibrato

kvibrate -- Rate of vibrato

Example

k1          line        0, p3, 64
a1          fmvoice	31129.60, 110, k1, 0, 0.005, 6, 1,1,1,1,1

------------------------------------------------------------------------
a1  moog        kamp, kfreq, kfiltq, kfiltrate, kvibf, kvamp, iafn, iwfn, ivfn

An emulation of a mini-Moog syntheser.

Initialisation.

iafn, iwfn, ivfn -- three table numbers containing the attack wave
    form (unlooped), the main looping wave form, and the vibrato waveform.
    The files mandpluk.aiff and impuls20.aiff are suitable for the first two,
    and a sine wave for the last.

Performance.

kamp - Amplitude of note. 

kfreq - Frequency of note played. It can be varied in performance.

kfiltq - Q of the filter, in the range 0.8 to 0.9

kfiltrate - rate control for the filter in the range 0 to 0.0002

kvibf - frequency of vibrato in Hertz. Suggested range is 0 to 12

kvamp - amplitude of the vibrato

------------------------------------------------------------------------
a1  mandol     kamp, kfreq, kpluck, kdetune, kgain, ksize, ifn[, iminfreq]

An emulation of a mandolin.

Initialisation.

ifn -- table number containing the pluck wave form. 
    The file mandpluk.aiff is suitable for this.

iminfreq -- Lowest frequency to be played on the note.  If
    it is omitted it is taken to be the same as the initial kfreq. 

Performance.

kamp - Amplitude of note. 

kfreq - Frequency of note played. It can be varied in performance.

kpluck - The pluck position, in range 0 to 1.  Suggested value is 0.4

kgain - the loopgain of the model, in the range 0.97 to 1

kdetune - The proportional detuning between the two strings.
        Suggested range 1 and 0.9

ksize - The size of the body of the mandolin.  Range 0 to 2

------------------------------------------------------------------------
a1  voice        kamp, kfreq, kphoneme, kform, kvibf, kvamp, ifn, ivfn

An emulation of a human voice.

Initialisation.

ifn, ivfn -- two table numbers containing the carrier wave form and
    the vibrato waveform.
    The files impuls20.aiff, ahh.aiff eee.aiff or ooo.aiff are suitable for
    the first of these, and a sine wave for the second.

Performance.

kamp - Amplitude of note. 

kfreq - Frequency of note played. It can be varied in performance.

kphoneme - an integer in the range 0 to 16, which select the formants for
     the sounds         "eee","ihh","ehh","aaa",
                        "ahh","aww","ohh","uhh",
                        "uuu","ooo","rrr","lll",
                        "mmm","nnn","nng","ngg".

At present the phonemes
                        "fff","sss","thh","shh",
                        "xxx","hee","hoo","hah",
                        "bbb","ddd","jjj","ggg",
                        "vvv","zzz","thz","zhh"
are not available

kform - Gain on the phoneme.  values 0.0 to 1.2 recommended.

kvibf - frequency of vibrato in Hertz. Suggested range is 0 to 12

kvamp - amplitude of the vibrato
------------------------------------------------------------------------

Hope that is approximately what you wanted!  i do have a test orc/sco
as well