1 /*
2   entry1.c:
3 
4   Copyright (C) 1991 Barry Vercoe, John ffitch
5 
6   This file is part of Csound.
7 
8   The Csound Library is free software; you can redistribute it
9   and/or modify it under the terms of the GNU Lesser General Public
10   License as published by the Free Software Foundation; either
11   version 2.1 of the License, or (at your option) any later version.
12 
13   Csound is distributed in the hope that it will be useful,
14   but WITHOUT ANY WARRANTY; without even the implied warranty of
15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16   GNU Lesser General Public License for more details.
17 
18   You should have received a copy of the GNU Lesser General Public
19   License along with Csound; if not, write to the Free Software
20   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
21   02110-1301 USA
22 */
23 
24 #include "entry1.h"             /*                      ENTRY1.C        */
25 #include "interlocks.h"
26 
27 /* thread vals, where isub=1, ksub=2:
28    0 =     1  OR   2  (B out only)
29    1 =     1
30    2 =             2
31    3 =     1  AND  2
32  */
33 
34 /* inarg types include the following:
35 
36    i       irate scalar
37    k       krate scalar
38    a       arate vector
39    f       frequency variable
40    w       spectral variable
41    x       krate scalar or arate vector
42    S       String
43    T       String or i-rate
44    U       String or i/k-rate
45    B       Boolean k-rate
46    b       Boolean i-rate; internally generated as required
47    l       Label
48    .       required arg of any-type
49    and codes
50    ?       optional arg of any-type
51    m       begins an indef list of iargs (any count)
52    M       begins an indef list of args (any count/rate i,k,a)
53    N       begins an indef list of args (any count/rate i,k,a,S)
54    o       optional i-rate, defaulting to  0
55    p              "             "          1
56    q              "             "         10
57    v              "             "          .5
58    j              "             "         -1
59    h              "             "        127
60    O       optional k-rate, defaulting to  0
61    J              "             "         -1
62    V              "             "          .5
63    P              "             "          1
64    W       begins indef list of Strings (any count)
65    y       begins indef list of aargs (any count)
66    z       begins indef list of kargs (any count)
67    Z       begins alternating kakaka...list (any count)    */
68 
69 /* outarg types include:
70  i, k, a, S as  above
71  *       multiple out args of any-type
72  m       multiple out aargs
73  z       multiple out kargs
74  I       multiple out irate (not implemented yet)
75  s       deprecated (use a or k as required)
76  X       multiple args (a, k, or i-rate)     IV - Sep 1 2002
77  N       multiple args (a, k, i, or S-rate)
78  F       multiple args (f-rate)#
79  */
80 
81 
82 OENTRY opcodlst_1[] = {
83   /* opcode   dspace  flags  thread  outarg  inargs  isub    ksub    asub    */
84   { "",     0,      0,    0,      "",     "",     NULL, NULL, NULL, NULL },
85   { "instr",  0,    0,      0,      "",     "",   NULL, NULL, NULL, NULL },
86   { "endin",  0,    0,      0,      "",     "",   NULL, NULL, NULL, NULL },
87   /* IV - Sep 8 2002 */
88   { "opcode", 0,    0,      0,      "",     "",   NULL, NULL, NULL, NULL },
89   { "endop",  0,    0,      0,      "",     "",   NULL, NULL, NULL, NULL },
90   { "$label", S(LBLBLK),  0,0,      "",     "",   NULL, NULL, NULL, NULL },
91   { "pset",   S(PVSET),   0,0,      "",     "m",  NULL, NULL, NULL, NULL },
92 
93   /* IV - Sep 8 2002 - added entries for user defined opcodes, xin, xout */
94   /* and setksmps */
95   { "##userOpcode", S(UOPCODE),0, 7, "", "", useropcdset, useropcd, useropcd, NULL },
96   /* IV - Sep 10 2002: removed perf time routines of xin and xout */
97   { "xin",  S(XIN_MAX),0,   1,  "****************", "",  xinset,  NULL, NULL, NULL },
98   /* { "xin.64",   S(XIN_HIGH),0,  1,
99     "****************************************************************", "",
100     xinset,  NULL, NULL },
101   { "##xin256",  S(XIN_MAX),0,   1,
102     "****************************************************************"
103     "****************************************************************"
104     "****************************************************************"
105     "****************************************************************", "",
106     xinset,  NULL, NULL },*/
107   { "xout", S(XOUT_MAX),0,  1,  "",         "*", xoutset, NULL, NULL, NULL },
108   { "setksmps", S(SETKSMPS),0,  1,  "",   "i", setksmpsset, NULL, NULL },
109   { "ctrlinit",S(CTLINIT),0,1,      "",  "im", ctrlinit, NULL, NULL, NULL},
110   { "massign",S(MASSIGN), 0,1,      "",  "iip",massign_p, NULL, NULL, NULL},
111   { "massign.iS",S(MASSIGNS), 0,1,  "",  "iSp",massign_S, NULL, NULL, NULL},
112   { "turnon", S(TURNON),  0,1,      "",     "io", turnon, NULL, NULL, NULL},
113   { "turnon.S", S(TURNON),  0,1,    "",     "So", turnon_S, NULL, NULL, NULL},
114   { "remoteport", S(REMOTEPORT), 0,1, "",  "i", remoteport, NULL, NULL, NULL},
115   { "insremot",S(INSREMOT),0,1,     "",     "SSm",insremot, NULL, NULL, NULL},
116   { "midremot",S(MIDREMOT),0,1,     "",     "SSm",midremot, NULL, NULL, NULL},
117   { "insglobal",S(INSGLOBAL),0,1,   "",     "Sm", insglobal, NULL, NULL, NULL},
118   { "midglobal",S(MIDGLOBAL),0,1,   "",     "Sm", midglobal, NULL, NULL, NULL},
119   { "ihold",  S(LINK),0,    1,      "",     "",     ihold, NULL, NULL, NULL  },
120   { "turnoff",S(LINK),0,    2,      "",     "",     NULL,   turnoff, NULL, NULL },
121   {  "=.S",   S(STRCPY_OP),0,   1,  "S",    "S",
122      (SUBR) strcpy_opcode_S, NULL, (SUBR) NULL, NULL    },
123   {  "#=.S",   S(STRCPY_OP),0,   2,  "S",    "S",
124      NULL, (SUBR) strcpy_opcode_S, (SUBR) NULL, NULL    },
125   {  "=.T",   S(STRGET_OP),0,   1,  "S",    "i",
126      (SUBR) strcpy_opcode_p, (SUBR) NULL, (SUBR) NULL, NULL                 },
127   { "=.r",    S(ASSIGN),0,  1,      "r",    "i",    rassign, NULL, NULL, NULL },
128   { "=.i",    S(ASSIGNM),0, 1,      "IIIIIIIIIIIIIIIIIIIIIIII", "m",
129     minit, NULL, NULL, NULL  },
130   { "=.k",    S(ASSIGNM),0, 2,      "zzzzzzzzzzzzzzzzzzzzzzzz", "z",
131     NULL, minit, NULL, NULL },
132   { "=.a",    S(ASSIGN),0,  2,      "a",    "a",    NULL, gaassign, NULL },
133   { "=.l",    S(ASSIGN),0,  2,      "a",    "a",    NULL,   laassign, NULL },
134   { "=.up",   S(UPSAMP),0,  2,      "a",    "k",  NULL, (SUBR)upsamp, NULL },
135   { "=.down",   S(DOWNSAMP),0,  3,  "k",    "ao",   (SUBR)downset,(SUBR)downsamp },
136   //  { "=.t",    S(ASSIGNT),0, 2,      "t",    "kk",   NULL,   tassign, NULL   },
137   { "init.S", S(STRCPY_OP),0, 1,      "S", "S", (SUBR) strcpy_opcode_S  },
138   { "init.Si", S(STRCPY_OP),0, 1,      "S", "i", (SUBR) strcpy_opcode_p  },
139   { "init.i", S(ASSIGNM),0, 1,      "IIIIIIIIIIIIIIIIIIIIIIII", "m", minit  },
140   { "init.k", S(ASSIGNM),0, 1,      "zzzzzzzzzzzzzzzzzzzzzzzz", "m", minit  },
141   { "init.a", S(ASSIGNM),0, 1,      "mmmmmmmmmmmmmmmmmmmmmmmm", "m", mainit },
142   { ">",      S(RELAT),0,   0,      "b",    "ii",   gt,     gt              },
143   { ">.0",      S(RELAT),0,   0,      "B",    "kk",   gt,     gt              },
144   { ">=",     S(RELAT),0,   0,      "b",    "ii",   ge,     ge              },
145   { ">=.0",     S(RELAT),0,   0,      "B",    "kk",   ge,     ge              },
146   { "<",      S(RELAT),0,   0,      "b",    "ii",   lt,     lt              },
147   { "<.0",      S(RELAT),0,   0,      "B",    "kk",   lt,     lt              },
148   { "<=",     S(RELAT),0,   0,      "b",    "ii",   le,     le              },
149   { "<=.0",     S(RELAT),0,   0,      "B",    "kk",   le,     le              },
150   { "==",     S(RELAT),0,   0,      "b",    "ii",   eq,     eq              },
151   { "==.0",     S(RELAT),0,   0,      "B",    "kk",   eq,     eq              },
152   { "!=",     S(RELAT),0,   0,      "b",    "ii",   ne,     ne              },
153   { "!=.0",     S(RELAT),0,   0,      "B",    "kk",   ne,     ne              },
154   { "!",      S(LOGCL),0,   0,      "b",    "b",    b_not,    b_not         },
155   { "!.0",      S(LOGCL),0, 0,      "B",    "B",    b_not,    b_not         },
156   { "&&",     S(LOGCL),0,   0,      "b",    "bb",   and,    and             },
157   { "&&.0",     S(LOGCL),0,   0,      "B",    "BB",   and,    and             },
158   { "||",     S(LOGCL),0,   0,      "b",    "bb",   or,     or              },
159   { "||.0",     S(LOGCL),0,   0,      "B",    "BB",   or,     or              },
160   { ":cond.i",     S(CONVAL),0,  1,      "i",    "bii",  conval                  },
161   { ":cond.k",     S(CONVAL),0,  2,      "k",    "Bkk",  NULL,   conval          },
162   { ":cond.a",     S(CONVAL),0,  2,      "a",    "Bxx",  NULL,   aconval },
163   { ":cond.s",     S(CONVAL),0,  1,      "S",    "bSS",  conval, NULL         },
164   { ":cond.S",     S(CONVAL),0,  3,      "S",    "BSS",  conval, conval       },
165   { "##add.ii",  S(AOP),0,    1,      "i",    "ii",   addkk                   },
166   { "##sub.ii",  S(AOP),0,    1,      "i",    "ii",   subkk                   },
167   { "##mul.ii",  S(AOP),0,    1,      "i",    "ii",   mulkk                   },
168   { "##div.ii",  S(AOP),0,    1,      "i",    "ii",   divkk                   },
169   { "##mod.ii",  S(AOP),0,    1,      "i",    "ii",   modkk                   },
170   { "##add.kk",  S(AOP),0,    2,      "k",    "kk",   NULL,   addkk           },
171   { "##sub.kk",  S(AOP),0,    2,      "k",    "kk",   NULL,   subkk           },
172   { "##mul.kk",  S(AOP),0,    2,      "k",    "kk",   NULL,   mulkk           },
173   { "##div.kk",  S(AOP),0,    2,      "k",    "kk",   NULL,   divkk           },
174   { "##mod.kk",  S(AOP),0,    2,      "k",    "kk",   NULL,   modkk           },
175   { "##add.ka",  S(AOP),0,    2,      "a",    "ka",   NULL,   addka   },
176   { "##sub.ka",  S(AOP),0,    2,      "a",    "ka",   NULL,   subka   },
177   { "##mul.ka",  S(AOP),0,    2,      "a",    "ka",   NULL,   mulka   },
178   { "##div.ka",  S(AOP),0,    2,      "a",    "ka",   NULL,   divka   },
179   { "##mod.ka",  S(AOP),0,    2,      "a",    "ka",   NULL,   modka   },
180   { "##add.ak",  S(AOP),0,    2,      "a",    "ak",   NULL,   addak   },
181   { "##sub.ak",  S(AOP),0,    2,      "a",    "ak",   NULL,   subak   },
182   { "##mul.ak",  S(AOP),0,    2,      "a",    "ak",   NULL,   mulak   },
183   { "##div.ak",  S(AOP),0,    2,      "a",    "ak",   NULL,   divak   },
184   { "##mod.ak",  S(AOP),0,    2,      "a",    "ak",   NULL,   modak   },
185   { "##add.aa",  S(AOP),0,    2,      "a",    "aa",   NULL,   addaa   },
186   { "##sub.aa",  S(AOP),0,    2,      "a",    "aa",   NULL,   subaa   },
187   { "##mul.aa",  S(AOP),0,    2,      "a",    "aa",   NULL,   mulaa   },
188   { "##div.aa",  S(AOP),0,    2,      "a",    "aa",   NULL,   divaa   },
189   { "##mod.aa",  S(AOP),0,    2,      "a",    "aa",   NULL,   modaa   },
190   { "##addin.i", S(ASSIGN),0, 1,      "i",    "i",    addin,  NULL    },
191   { "##addin.k", S(ASSIGN),0, 2,      "k",    "k",    NULL,   addin   },
192   { "##addin.K", S(ASSIGN),0, 2,      "a",    "k",    NULL,   addinak },
193   { "##addin.a", S(ASSIGN),0, 2,      "a",    "a",    NULL,   addina  },
194   { "##subin.i", S(ASSIGN),0, 1,      "i",    "i",    subin,  NULL    },
195   { "##subin.k", S(ASSIGN),0, 2,      "k",    "k",    NULL,   subin   },
196   { "##subin.K", S(ASSIGN),0, 2,      "a",    "k",    NULL,   subinak },
197   { "##subin.a", S(ASSIGN),0, 2,      "a",    "a",    NULL,   subina  },
198   //{ "divz",   0xfffc                                                      },
199   { "divz.ii", S(DIVZ),0,   1,      "i",    "iii",  divzkk, NULL,   NULL    },
200   { "divz.kk", S(DIVZ),0,   2,      "k",    "kkk",  NULL,   divzkk, NULL    },
201   { "divz.ak", S(DIVZ),0,   2,      "a",    "akk",  NULL,   divzak  },
202   { "divz.ka", S(DIVZ),0,   2,      "a",    "kak",  NULL,   divzka  },
203   { "divz.aa", S(DIVZ),0,   2,      "a",    "aak",  NULL,   divzaa  },
204   { "int.i",  S(EVAL),0,    1,      "i",    "i",    int1                    },
205   { "frac.i", S(EVAL),0,    1,      "i",    "i",    frac1                   },
206   { "round.i",S(EVAL),0,    1,      "i",    "i",    int1_round              },
207   { "floor.i",S(EVAL),0,    1,      "i",    "i",    int1_floor              },
208   { "ceil.i", S(EVAL),0,    1,      "i",    "i",    int1_ceil               },
209   { "rndseed", S(EVAL),0,    1,      "",    "i",    rnd1seed                },
210   { "rnd.i",  S(EVAL),0,    1,      "i",    "i",    rnd1                    },
211   { "birnd.i",S(EVAL),0,    1,      "i",    "i",    birnd1                  },
212   { "abs.i",  S(EVAL),0,    1,      "i",    "i",    abs1                    },
213   { "exp.i",  S(EVAL),0,    1,      "i",    "i",    exp01                   },
214   { "log.i",  S(EVAL),0,    1,      "i",    "i",    log01                   },
215   { "sqrt.i", S(EVAL),0,    1,      "i",    "i",    sqrt1                   },
216   { "sin.i",  S(EVAL),0,    1,      "i",    "i",    sin1                    },
217   { "cos.i",  S(EVAL),0,    1,      "i",    "i",    cos1                    },
218   { "tan.i",  S(EVAL),0,    1,      "i",    "i",    tan1                    },
219   { "qinf.i", S(EVAL),0,    1,      "i",    "i",    is_inf                  },
220   { "qnan.i", S(EVAL),0,    1,      "i",    "i",    is_NaN                  },
221   { "sininv.i", S(EVAL),0,  1,      "i",    "i",    asin1                   },
222   { "cosinv.i", S(EVAL),0,  1,      "i",    "i",    acos1                   },
223   { "taninv.i", S(EVAL),0,  1,      "i",    "i",    atan1                   },
224   { "taninv2.i",S(AOP),0,   1,      "i",    "ii",   atan21                  },
225   { "log10.i",S(EVAL),0,    1,      "i",    "i",    log101                  },
226   { "log2.i", S(EVAL),0,    1,      "i",    "i",    log21                   },
227   { "sinh.i", S(EVAL),0,    1,      "i",    "i",    sinh1                   },
228   { "cosh.i", S(EVAL),0,    1,      "i",    "i",    cosh1                   },
229   { "tanh.i", S(EVAL),0,    1,      "i",    "i",    tanh1                   },
230   { "int.k",  S(EVAL),0,    2,      "k",    "k",    NULL,   int1            },
231   { "frac.k", S(EVAL),0,    2,      "k",    "k",    NULL,   frac1           },
232   { "round.k",S(EVAL),0,    2,      "k",    "k",    NULL,   int1_round      },
233   { "floor.k",S(EVAL),0,    2,      "k",    "k",    NULL,   int1_floor      },
234   { "ceil.k", S(EVAL),0,    2,      "k",    "k",    NULL,   int1_ceil       },
235   { "rnd.k",  S(EVAL),0,    2,      "k",    "k",    NULL,   rnd1            },
236   { "birnd.k",S(EVAL),0,    2,      "k",    "k",    NULL,   birnd1          },
237   { "abs.k",  S(EVAL),0,    2,      "k",    "k",    NULL,   abs1            },
238   { "exp.k",  S(EVAL),0,    2,      "k",    "k",    NULL,   exp01           },
239   { "log.k",  S(EVAL),0,    2,      "k",    "k",    NULL,   log01           },
240   { "sqrt.k", S(EVAL),0,    2,      "k",    "k",    NULL,   sqrt1           },
241   { "sin.k",  S(EVAL),0,    2,      "k",    "k",    NULL,   sin1            },
242   { "cos.k",  S(EVAL),0,    2,      "k",    "k",    NULL,   cos1            },
243   { "tan.k",  S(EVAL),0,    2,      "k",    "k",    NULL,   tan1            },
244   { "qinf.k", S(EVAL),0,    2,      "k",    "k",    NULL,   is_inf          },
245   { "qnan.k", S(EVAL),0,    2,      "k",    "k",    NULL,   is_NaN          },
246   { "sininv.k", S(EVAL),0,  2,      "k",    "k",    NULL,   asin1           },
247   { "cosinv.k", S(EVAL),0,  2,      "k",    "k",    NULL,   acos1           },
248   { "taninv.k", S(EVAL),0,  2,      "k",    "k",    NULL,   atan1           },
249   { "taninv2.k",S(AOP),0,   2,      "k",    "kk",   NULL,   atan21          },
250   { "sinh.k", S(EVAL),0,    2,      "k",    "k",    NULL,   sinh1           },
251   { "cosh.k", S(EVAL),0,    2,      "k",    "k",    NULL,   cosh1           },
252   { "tanh.k", S(EVAL),0,    2,      "k",    "k",    NULL,   tanh1           },
253   { "log10.k",S(EVAL),0,    2,      "k",    "k",    NULL,   log101          },
254   { "log2.k", S(EVAL),0,    2,      "k",    "k",    NULL,   log21           },
255   { "int.a",  S(EVAL),0,    2,      "a",    "a",    NULL, int1a       },
256   { "frac.a", S(EVAL),0,    2,      "a",    "a",    NULL, frac1a      },
257   { "round.a",S(EVAL),0,    2,      "a",    "a",    NULL, int1a_round },
258   { "floor.a",S(EVAL),0,    2,      "a",    "a",    NULL, int1a_floor },
259   { "ceil.a", S(EVAL),0,    2,      "a",    "a",    NULL, int1a_ceil  },
260   { "abs.a",  S(EVAL),0,    2,      "a",    "a",    NULL,   absa    },
261   { "exp.a",  S(EVAL),0,    2,      "a",    "a",    NULL,   expa    },
262   { "log.a",  S(EVAL),0,    2,      "a",    "a",    NULL,   loga    },
263   { "sqrt.a", S(EVAL),0,    2,      "a",    "a",    NULL,   sqrta   },
264   { "sin.a",  S(EVAL),0,    2,      "a",    "a",    NULL,   sina    },
265   { "cos.a",  S(EVAL),0,    2,      "a",    "a",    NULL,   cosa    },
266   { "tan.a",  S(EVAL),0,    2,      "a",    "a",    NULL,   tana    },
267   { "qinf.a", S(EVAL),0,    2,      "a",    "a",    NULL,   is_infa },
268   { "qnan.a", S(EVAL),0,    2,      "a",    "a",    NULL,   is_NaNa },
269   { "sininv.a", S(EVAL),0,  2,      "a",    "a",    NULL,   asina   },
270   { "cosinv.a", S(EVAL),0,  2,      "a",    "a",    NULL,   acosa   },
271   { "taninv.a", S(EVAL),0,  2,      "a",    "a",    NULL,   atana   },
272   { "taninv2.a",S(AOP),0,   2,      "a",    "aa",   NULL,   atan2aa },
273   { "sinh.a", S(EVAL),0,    2,      "a",    "a",    NULL,   sinha   },
274   { "cosh.a", S(EVAL),0,    2,      "a",    "a",    NULL,   cosha   },
275   { "tanh.a", S(EVAL),0,    2,      "a",    "a",    NULL,   tanha   },
276   { "log10.a",S(EVAL),0,    2,      "a",    "a",    NULL,   log10a  },
277   { "log2.a", S(EVAL),0,    2,      "a",    "a",    NULL,   log2a   },
278   { "ampdb.a",S(EVAL),0,    2,      "a",    "a",    NULL,   aampdb  },
279   { "ampdb.i",S(EVAL),0,    1,      "i",    "i",    ampdb                   },
280   { "ampdb.k",S(EVAL),0,    2,      "k",    "k",    NULL,   ampdb           },
281   { "ampdbfs.a",S(EVAL),0,  2,      "a",    "a",    NULL,   aampdbfs },
282   { "ampdbfs.i",S(EVAL),0,  1,      "i",    "i",    ampdbfs                 },
283   { "ampdbfs.k",S(EVAL),0,  2,      "k",    "k",    NULL,   ampdbfs         },
284   { "dbamp.i",S(EVAL),0,    1,      "i",    "i",    dbamp                   },
285   { "dbamp.k",S(EVAL),0,    2,      "k",    "k",    NULL,   dbamp           },
286   { "dbfsamp.i",S(EVAL),0,  1,      "i",    "i",    dbfsamp                 },
287   { "dbfsamp.k",S(EVAL),0,  2,      "k",    "k",    NULL,   dbfsamp         },
288   { "rtclock.i",S(EVAL),0,  1,      "i",    "",     rtclock                 },
289   { "rtclock.k",S(EVAL),0,  2,      "k",    "",     NULL,   rtclock         },
290   { "ftlen.i",S(EVAL),0,    1,      "i",    "i",    ftlen                   },
291   { "ftsr.i",S(EVAL),0,     1,      "i",    "i",    ftsr                    },
292   { "ftlptim.i",S(EVAL),0,  1,      "i",    "i",    ftlptim                 },
293   { "ftchnls.i",S(EVAL),0,  1,      "i",    "i",    ftchnls                 },
294   { "ftcps.i",S(EVAL),0,    1,      "i",    "i",    ftcps                   },
295   { "i.i",   S(ASSIGN),0,   1,      "i",    "i",    assign                  },
296   { "i.k",   S(ASSIGN),0,   1,      "i",    "k",    assign                  },
297   { "k.i",   S(ASSIGN),0,   1,      "k",    "i",    assign                  },
298   { "k.a",   S(DOWNSAMP),0, 3,      "k",    "ao",   (SUBR)downset,(SUBR)downsamp },
299   { "cpsoct.i",S(EVAL),0,   1,      "i",    "i",    cpsoct                  },
300   { "octpch.i",S(EVAL),0,   1,      "i",    "i",    octpch                  },
301   { "cpspch.i",S(EVAL),0,   1,      "i",    "i",    cpspch                  },
302   { "pchoct.i",S(EVAL),0,   1,      "i",    "i",    pchoct                  },
303   { "octcps.i",S(EVAL),0,   1,      "i",    "i",    octcps                  },
304   { "cpsoct.k",S(EVAL),0,   2,      "k",    "k",    NULL,   cpsoct          },
305   { "octpch.k",S(EVAL),0,   2,      "k",    "k",    NULL,   octpch          },
306   { "cpspch.k",S(EVAL),0,   2,      "k",    "k",    NULL,   cpspch          },
307   { "pchoct.k",S(EVAL),0,   2,      "k",    "k",    NULL,   pchoct          },
308   { "octcps.k",S(EVAL),0,   2,      "k",    "k",    NULL,   octcps          },
309   { "cpsoct.a",S(EVAL),0,   2,      "a",    "a",    NULL,   acpsoct },
310   { "cpsmidinn.i",S(EVAL),0,1,      "i",    "i",    cpsmidinn               },
311   { "octmidinn.i",S(EVAL),0,1,      "i",    "i",    octmidinn               },
312   { "pchmidinn.i",S(EVAL),0,1,      "i",    "i",    pchmidinn               },
313   { "cpsmidinn.k",S(EVAL),0,2,      "k",    "k",    NULL,   cpsmidinn       },
314   { "octmidinn.k",S(EVAL),0,2,      "k",    "k",    NULL,   octmidinn       },
315   { "pchmidinn.k",S(EVAL),0,2,      "k",    "k",    NULL,   pchmidinn       },
316   { "notnum", S(MIDIKMB),0, 1,      "i",    "",     notnum                  },
317   { "veloc",  S(MIDIMAP),0, 1,      "i",    "oh",   veloc                   },
318   { "pchmidi",S(MIDIKMB),0, 1,      "i",    "",     pchmidi                 },
319   { "octmidi",S(MIDIKMB),0, 1,      "i",    "",     octmidi                 },
320   { "cpsmidi",S(MIDIKMB),0, 1,      "i",    "",     cpsmidi                 },
321   { "pchmidib.i",S(MIDIKMB),0,1,    "i",    "o",    pchmidib_i              },
322   { "octmidib.i",S(MIDIKMB),0,1,    "i",    "o",    octmidib_i              },
323   { "cpsmidib.i",S(MIDIKMB),0,1,    "i",    "o",    icpsmidib_i             },
324   { "pchmidib.k",S(MIDIKMB),0,3,    "k",    "o",    midibset, pchmidib      },
325   { "octmidib.k",S(MIDIKMB),0,3,    "k",    "o",    midibset, octmidib      },
326   { "cpsmidib.k",S(MIDIKMB),0,3,    "k",    "o",    midibset, icpsmidib     },
327   { "ampmidi",S(MIDIAMP),0, 1,      "i",    "io",   ampmidi                 },
328   { "aftouch",S(MIDIKMAP),0, 3,     "k",    "oh",   aftset, aftouch         },
329   { "pchbend.i",S(MIDIMAP),0,1,     "i",    "jp",   ipchbend                },
330   { "pchbend.k",S(MIDIKMAP),0,3,    "k",    "jp",   kbndset,kpchbend        },
331   { "midictrl.i",S(MIDICTL),0,1,    "i",    "ioh",  imidictl                },
332   { "midictrl.k",S(MIDICTL),0,3,    "k",    "ioh",  mctlset, midictl        },
333   { "polyaft.i",S(MIDICTL),0,1,     "i",    "ioh",  imidiaft                },
334   { "polyaft.k",S(MIDICTL),0,3,     "k",    "ioh",  maftset, midiaft        },
335   { "chanctrl.i",S(CHANCTL),0,1,    "i",    "iioh", ichanctl                },
336   { "chanctrl.k",S(CHANCTL),0,3,    "k",    "iioh", chctlset,chanctl        },
337   { "line",   S(LINE),0,    3,      "k",    "iii",  linset, kline,  NULL  },
338   { "line.a",   S(LINE),0,    3,    "a",    "iii",  linset,  aline   },
339   { "expon",  S(EXPON),0,   3,      "k",    "iii",  expset, kexpon, NULL   },
340   { "expon.a",  S(EXPON),0,   3,      "a",    "iii",  expset, expon   },
341   { "cosseg", S(COSSEG),0,  3,      "k",    "iim",  csgset, kosseg, NULL  },
342   { "cosseg.a", S(COSSEG),0,  3,      "a",    "iim",  csgset, cosseg  },
343   { "cossegb", S(COSSEG),0, 3,      "k",    "iim",  csgset_bkpt, kosseg, NULL  },
344   { "cossegb.a", S(COSSEG),0, 3,      "a",    "iim",  csgset_bkpt, cosseg  },
345   { "cossegr", S(COSSEG),0,  3,     "k",    "iim",  csgrset, kcssegr, NULL  },
346   { "cossegr.a", S(COSSEG),0,  3,     "a",    "iim",  csgrset, cossegr  },
347   { "linseg", S(LINSEG),0,  3,      "k",    "iim",  lsgset, klnseg, NULL },
348   { "linseg.a", S(LINSEG),0,  3,      "a",    "iim",  lsgset, linseg  },
349   { "linsegb", S(LINSEG),0,  3,     "k",    "iim", lsgset_bkpt, klnseg, NULL  },
350   { "linsegb.a", S(LINSEG),0,  3,     "a",    "iim", lsgset_bkpt, linseg  },
351   { "linsegr",S(LINSEG),0,  3,      "k",    "iim",  lsgrset,klnsegr,NULL },
352   { "linsegr.a",S(LINSEG),0,  3,      "a",    "iim",  lsgrset,linsegr },
353   { "expseg", S(EXXPSEG),0,  3,     "k",    "iim",  xsgset, kxpseg, NULL  },
354   { "expseg.a", S(EXXPSEG),0,  3,     "a",    "iim",  xsgset, expseg  },
355   { "expsegb", S(EXXPSEG),0,  3,     "k",    "iim",  xsgset_bkpt, kxpseg, NULL },
356   { "expsegb.a", S(EXXPSEG),0, 3,     "a",    "iim",  xsgset_bkpt, expseg },
357   { "expsega",S(EXPSEG2),0,  3,     "a",    "iim",  xsgset2, expseg2  },
358   { "expsegba",S(EXPSEG2),0,  3,     "a",    "iim",  xsgset2b, expseg2 },
359   { "expsegr",S(EXPSEG),0,  3,      "k",    "iim",  xsgrset,kxpsegr,NULL },
360   { "expsegr.a",S(EXPSEG),0,  3,      "a",    "iim",  xsgrset,expsegr },
361   { "linen",  S(LINEN),0,   3,      "k",    "kiii", lnnset, klinen, NULL   },
362   { "linen.a",  S(LINEN),0,   3,      "a",    "aiii", alnnset, linen   },
363   { "linen.x",  S(LINEN),0,   3,      "a",    "kiii", alnnset, linen   },
364   { "linenr", S(LINENR),0,  3,      "k",    "kiii", lnrset, klinenr,NULL },
365   { "linenr.a", S(LINENR),0,  3,      "a",    "aiii", alnrset,linenr  },
366   { "linenr.x", S(LINENR),0,  3,      "a",    "kiii", alnrset,linenr  },
367   { "envlpx", S(ENVLPX), TR, 3,     "k","kiiiiiio", evxset, knvlpx, NULL },
368   { "envlpxr", S(ENVLPR),TR, 3,     "k","kiiiiioo", evrset, knvlpxr, NULL },
369   { "envlpx.a", S(ENVLPX), TR, 3,     "a","aiiiiiio", aevxset,envlpx  },
370   { "envlpxr.a", S(ENVLPR),TR, 3,     "a","aiiiiioo", aevrset,envlpxr },
371   { "envlpx.x", S(ENVLPX), TR, 3,     "a","kiiiiiio", aevxset,envlpx  },
372   { "envlpxr.x", S(ENVLPR),TR, 3,     "a","kiiiiioo", aevrset,envlpxr },
373   { "phasor", S(PHSOR),0,   3,       "a",   "xo",   phsset, phsor   },
374   { "phasor.k", S(PHSOR),0,   3,     "k",   "ko",   phsset, kphsor, NULL  },
375   { "ephasor", S(EPHSOR), 0,  3,     "aa",  "xko",  ephsset, ephsor },
376   { "signum.i", S(ASSIGN), 0, 1,     "i",   "i", signum, NULL, NULL       },
377   { "signum.k", S(ASSIGN), 0, 3,     "k",   "k", signum, signum, NULL     },
378   { "signum.a", S(ASSIGN), 0, 2,     "a",   "a", NULL, asignum      },
379   { "table.i",  S(TABL),TR, 1,      "i",    "iiooo",(SUBR)tabler_init       },
380   { "table.k",  S(TABL),TR, 3,      "k",    "xiooo",(SUBR)tabl_setup,
381     (SUBR)tabler_kontrol        },
382   { "table.a",  S(TABL),TR, 3,      "a",    "xiooo",(SUBR)tabl_setup,
383     (SUBR)tabler_audio                                                      },
384   { "tablei.i", S(TABL),TR, 1,      "i",    "iiooo",(SUBR)tableir_init      },
385   { "tablei.k", S(TABL),TR, 3,      "k",    "xiooo",(SUBR)tabl_setup,
386     (SUBR)tableir_kontrol                                                   },
387   { "tablei.a", S(TABL),TR, 3,      "a",    "xiooo",(SUBR)tabl_setup,
388     (SUBR)tableir_audio                                                     },
389   { "table3.i", S(TABL),TR, 1,      "i",    "iiooo",(SUBR)table3r_init      },
390   { "table3.k", S(TABL),TR, 3,      "k",    "xiooo",(SUBR)tabl_setup,
391     (SUBR)table3r_kontrol                                                   },
392   { "table3.a", S(TABL),TR, 3,      "a",    "xiooo",(SUBR)tabl_setup,
393     (SUBR)table3r_audio                                                     },
394   { "ptable.i",  S(TABLE),TR|_QQ, 1,"i",    "iiooo",(SUBR)tabler_init       },
395   { "ptable.k",  S(TABLE),TR|_QQ, 3,     "k",    "xiooo",(SUBR)tabl_setup,
396     (SUBR)tabler_kontrol                                                    },
397   { "ptable.a",  S(TABLE),TR|_QQ, 3,     "a",    "xiooo",(SUBR)tabl_setup,
398     (SUBR)tabler_audio                                                      },
399   { "ptablei.i", S(TABLE),TR|_QQ, 1,"i",    "iiooo",(SUBR)tableir_init      },
400   { "ptablei.k", S(TABLE),TR|_QQ, 3,     "k",    "xiooo",(SUBR)tabl_setup,
401     (SUBR)tableir_kontrol                                                   },
402   { "ptablei.a", S(TABLE),TR|_QQ, 3,     "a",    "xiooo",(SUBR)tabl_setup,
403     (SUBR)tableir_audio                                                     },
404   { "ptable3.i", S(TABLE),TR|_QQ, 1,"i",    "iiooo",(SUBR)table3r_init      },
405   { "ptable3.k", S(TABLE),TR|_QQ, 3,     "k",    "xiooo",(SUBR)tabl_setup,
406     (SUBR)table3r_kontrol                                                   },
407   { "ptable3.a", S(TABLE),TR|_QQ, 3,     "a",    "xiooo",(SUBR)tabl_setup,
408     (SUBR)table3r_audio         },
409   { "oscil1", S(OSCIL1), TR, 3,     "k",    "ikij", ko1set, kosc1          },
410   { "oscil1i",S(OSCIL1), TR, 3,     "k",    "ikij", ko1set, kosc1i         },
411   { "osciln", S(OSCILN), TR, 3,     "a",    "kiii", oscnset,   osciln },
412   { "oscil.a",S(OSC),TR,    3,       "a",    "kkjo", oscset,   osckk  },
413   { "oscil.kkk",S(OSC),TR,   3,      "k",    "kkjo", oscset, koscil  },
414   { "oscil.kka",S(OSC),TR,   3,      "a",    "kkjo", oscset, osckk  },
415   { "oscil.ka",S(OSC),TR,    3,      "a",    "kajo", oscset,   oscka  },
416   { "oscil.ak",S(OSC),TR,    3,      "a",    "akjo", oscset,   oscak  },
417   { "oscil.aa",S(OSC),TR,    3,      "a",    "aajo", oscset,   oscaa  },
418   { "oscil.kkA",S(OSC),0,   3,      "k",    "kki[]o", oscsetA, koscil       },
419   { "oscil.kkA",S(OSC),0,   3,      "a",    "kki[]o", oscsetA, osckk },
420   { "oscil.kaA",S(OSC),0,   3,      "a",    "kai[]o", oscsetA, oscka },
421   { "oscil.akA",S(OSC),0,   3,      "a",    "aki[]o", oscsetA, oscak },
422   { "oscil.aaA",S(OSC),0,   3,      "a",    "aai[]o", oscsetA,oscaa  },
423   /* Change these to
424      { "oscil.kkk", S(POSC),TR, 3, "k", "kkjo", posc_set, kposc         },
425      { "oscil.kka", S(POSC),TR, 3,, "a", "kkjo"_set, NULL, posckk },
426      { "oscil.ka", S(POSC),TR, 3, "a", "kajo", posc_set,  poscka },
427      { "oscil.ak", S(POSC),TR, 3, "a", "akjo", posc_set,  poscak },
428      { "oscil.aa", S(POSC),TR, 3, "a", "aajo", posc_set,  poscaa },
429      { "oscil3.kk",  S(POSC),TR,  7, "s", "kkjo", posc_set, kposc3, posc3 },
430   */
431   { "oscili.a",S(OSC),TR,   3,      "a",    "kkjo", oscset, osckki  },
432   { "oscili.kk",S(OSC),TR,   3,      "k",   "kkjo", oscset, koscli, NULL  },
433   { "oscili.ka",S(OSC),TR,   3,      "a",   "kajo", oscset,   osckai  },
434   { "oscili.ak",S(OSC),TR,   3,      "a",   "akjo", oscset,   oscaki  },
435   { "oscili.aa",S(OSC),TR,   3,      "a",   "aajo", oscset,   oscaai  },
436   { "oscili.aA",S(OSC),0,   3,      "a",   "kki[]o", oscsetA, osckki  },
437   { "oscili.kkA",S(OSC),0,   3,      "k",  "kki[]o", oscsetA, koscli, NULL  },
438   { "oscili.kaA",S(OSC),0,   3,      "a",  "kai[]o", oscsetA,   osckai  },
439   { "oscili.akA",S(OSC),0,   3,      "a",  "aki[]o", oscsetA,   oscaki  },
440   { "oscili.aaA",S(OSC),0,   3,      "a",  "aai[]o", oscsetA,   oscaai  },
441   { "oscil3.a",S(OSC),TR,   3,      "a",    "kkjo", oscset, osckk3  },
442   { "oscil3.kk",S(OSC),TR,   3,      "k",   "kkjo", oscset, koscl3, NULL  },
443   { "oscil3.ka",S(OSC),TR,   3,      "a",   "kajo", oscset,   oscka3  },
444   { "oscil3.ak",S(OSC),TR,   3,      "a",   "akjo", oscset,   oscak3  },
445   { "oscil3.aa",S(OSC),TR,   3,      "a",   "aajo", oscset,   oscaa3  },
446   { "oscil3.aA",S(OSC),0,   3,      "a",   "kki[]o", oscsetA, osckk3 },
447   { "oscil3.kkA",S(OSC),0,   3,      "k",  "kki[]o", oscsetA, koscl3, NULL },
448   { "oscil3.kaA",S(OSC),0,   3,      "a",  "kai[]o", oscsetA, oscka3 },
449   { "oscil3.akA",S(OSC),0,   3,      "a",  "aki[]o", oscsetA, oscak3 },
450   { "oscil3.aaA",S(OSC),0,   3,      "a",  "aai[]o", oscsetA, oscaa3 },
451   /* end change */
452   { "foscil", S(FOSC),TR,  3,      "a",  "xkxxkjo",foscset,   foscil  },
453   { "foscili",S(FOSC),TR,  3,      "a",  "xkxxkjo",foscset,   foscili },
454   { "loscil", S(LOSC),TR,  3,      "mm","xkjojoojoo",losset, loscil   },
455   { "loscilphs", S(LOSCPHS),TR,  3, "amm","xkjojoojoo",losset_phs, loscil_phs   },
456   { "loscil3phs", S(LOSCPHS),TR,  3,"amm","xkjojoojoo",losset_phs, loscil3_phs  },
457   { "loscil3", S(LOSC),TR,  3,      "mm","xkjojoojoo",losset, loscil3  },
458   { "adsyn",  S(ADSYN),0,   3,      "a",    "kkkSo", adset_S,   adsyn   },
459   { "adsyn.i",  S(ADSYN),0,   3,      "a",    "kkkio", adset,   adsyn   },
460   { "buzz",   S(BUZZ),TR,  3,      "a",  "xxkio",  bzzset,   buzz    },
461   { "gbuzz",  S(GBUZZ),TR,  3,      "a",  "xxkkkio",gbzset,   gbuzz   },
462   { "pluck",  S(PLUCK), TR, 3,      "a",  "kkiiioo",plukset,   pluck   },
463   { "rand",   S(RAND),0,    3,      "a",    "xvoo", rndset,  arand   },
464   { "rand.k",   S(RAND),0,    3,      "k",    "xvoo", rndset, krand,  NULL  },
465   { "randh",  S(RANDH),0,   3,      "a",    "xxvoo", rhset, randh   },
466   { "randh.k",  S(RANDH),0,   3,      "k",    "xxvoo", rhset, krandh, NULL   },
467   { "randi",  S(RANDI),0,   3,      "a",    "xxvoo", riset, randi     },
468   { "randi.k",  S(RANDI),0, 3,      "k",    "xxvoo", riset, krandi    },
469   { "randc",  S(RANDC),0,   3,      "a",    "xxvoo", rcset, randc     },
470   { "randc.k",  S(RANDC),0, 3,      "k",    "xxvoo", rcset, krandc    },
471   { "port",   S(PORT),0,    3,      "k",    "kio",  porset, port            },
472   { "tone.k", S(TONE),0,    3,      "a",    "ako",  tonset,   tone    },
473   { "tonex.k",S(TONEX),0,   3,      "a",    "akoo", tonsetx,  tonex   },
474   { "atone.k",  S(TONE),0,  3,      "a",    "ako",  tonset,   atone   },
475   { "atonex.k", S(TONEX),0, 3,      "a",    "akoo", tonsetx,  atonex  },
476   { "reson", S(RESON),   0, 3,      "a",    "axxoo", rsnset,  reson   },
477   { "resonx", S(RESONX),0,  3,      "a",    "axxooo", rsnsetx, resonx },
478   { "areson.kk", S(RESON),0,3,      "a",    "akkoo",rsnset,   areson  },
479   { "lpread", S(LPREAD),0,  3,      "kkkk", "kSoo", lprdset_S,lpread          },
480   { "lpread.i", S(LPREAD),0,  3,      "kkkk", "kioo", lprdset,lpread          },
481   { "lpform", S(LPFORM),0,  3,      "kk", "k",     lpformantset,lpformant   },
482   { "lpreson",S(LPRESON),0, 3,      "a",    "a",    lprsnset,  lpreson },
483   { "lpfreson",S(LPFRESON),0,3,     "a",    "ak",   lpfrsnset, lpfreson},
484   { "lpslot"  ,  S(LPSLOT),0,  1,   "",     "i",    lpslotset, NULL, NULL   },
485   { "lpinterp", S(LPINTERPOL),0, 3, "",     "iik",  lpitpset, lpinterpol, NULL},
486   { "rms",    S(RMS),0,     3,      "k",    "aqo",  rmsset, rms             },
487   { "gain",   S(GAIN),0,    3,      "a",    "akqo", gainset,   gain    },
488   { "balance",S(BALANCE),0, 3,      "a",    "aaqo", balnset,   balance },
489   { "balance2",S(BALANCE),0, 3,      "a",    "aaqo", balnset,   balance2 },
490   { "pan",    S(PAN),0,   3, "aaaa", "akkioo",(SUBR)panset, (SUBR)pan  },
491   { "soundin",S(DISKIN2),0,3,"mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm","Soooo",
492     sndinset_S, soundin   },
493   { "soundin.i",S(DISKIN2),0,3,"mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm","ioooo",
494     sndinset, soundin   },
495   { "soundout",S(SNDOUT), _QQ, 3,   "",    "aSo",  sndoutset_S, soundout  },
496   { "soundout.i",S(SNDOUT), _QQ, 3,   "",    "aio",  sndoutset, soundout  },
497   { "soundouts",S(SNDOUTS),_QQ, 3,  "",    "aaSo", sndoutset_S, soundouts },
498   { "soundouts.i",S(SNDOUTS),_QQ, 3,  "",    "aaio", sndoutset, soundouts },
499   { "in.a",   S(INM),0,     2,      "a",    "",     NULL,   in      },
500   { "in.s",   S(INS),0,     2,      "aa",    "",     NULL,   ins      },
501   { "in.A",   S(INA),0,     2,      "a[]",  "",     NULL,   inarray },
502   { "ins",    S(INS),0,     2,      "aa",   "",     NULL,   ins     },
503   { "inq",    S(INQ),0,     2,      "aaaa", "",     NULL,   inq     },
504   { "out.a",  S(OUTX),IR,     3,      "",     "y",    ochn,   outall },
505   { "out.A",  S(OUTARRAY),IR, 3,      "",     "a[]",  outarr_init,  outarr },
506   { "outs",   S(OUTX),IR,     3,      "",     "y",    ochn,   outall },
507   { "outq",   S(OUTX),IR,     3,      "",     "y",    ochn,   outall },
508   { "outh",   S(OUTX),IR,     3,      "",     "y",    ochn,   outall },
509   { "outo",   S(OUTX),IR,     3,      "",     "y",    ochn,   outall },
510   { "outx",   S(OUTX),IR,     3,      "",     "y",    ochn,   outall },
511   { "out32",  S(OUTX),IR,     3,      "",     "y",    ochn,   outall },
512   { "outs1",  S(OUTM),IR,    2,      "",     "a",    NULL,   outs1   },
513   { "outs2",  S(OUTM),IR,    3,      "",     "a",    och2,   outs2   },
514   { "outq1",  S(OUTM),IR,    2,      "",     "a",    NULL,   outs1   },
515   { "outq2",  S(OUTM),IR,    3,      "",     "a",    och2,   outs2   },
516   { "outq3",  S(OUTM),IR,    3,      "",     "a",    och3,   outq3   },
517   { "outq4",  S(OUTM),IR,    3,      "",     "a",    och2,   outq4   },
518   { "igoto",  S(GOTO),0,    1,      "",     "l",    igoto                   },
519   { "kgoto",  S(GOTO),0,    2,      "",     "l",    NULL,   kgoto           },
520   { "goto",   S(GOTO),0,    3,      "",     "l",    igoto,  kgoto           },
521   { "cigoto", S(CGOTO),0,   1,      "",     "Bl",   icgoto                  },
522   { "ckgoto", S(CGOTO),0,   2,      "",     "Bl",   NULL,   kcgoto          },
523   { "cggoto.0", S(CGOTO),0, 3,      "",     "Bl",   icgoto, kcgoto          },
524   { "timout", S(TIMOUT),0,  3,      "",     "iil",  timset, timout          },
525   { "reinit", S(GOTO),0,    2,      "",     "l",    NULL,   reinit          },
526   { "rigoto", S(GOTO),0,    1,      "",     "l",    rigoto                  },
527   { "rireturn",S(LINK),0,   1,      "",     "",     rireturn                },
528   { "tigoto", S(GOTO),0,    1,      "",     "l",    tigoto                  },
529   { "tival",  S(EVAL),0,    1,      "i",    "",     tival                   },
530   { "print",  S(PRINTV),WR, 1,      "",     "m",    printv                  },
531   { "display.k",S(DSPLAY),0,  3,    "",     "kioo", dspset, kdsplay,NULL    },
532   { "display.a",S(DSPLAY),0,  3,    "",     "aioo", dspset ,dsplay    },
533   { "pvsdisp",S(FSIGDISP),0,  3,    "",     "foo", fdspset, fdsplay,NULL    },
534   { "dispfft.k",S(DSPFFT),0,  3,    "",     "kiiooooo",fftset,kdspfft,NULL  },
535   { "dispfft.a",S(DSPFFT),0,  3,    "",     "aiiooooo",fftset,dspfft   },
536   { "dumpk",  S(KDUMP),0,   3,      "",     "kSii", kdmpset_S,kdump          },
537   { "dumpk2", S(KDUMP2),0,  3,      "",     "kkSii",kdmp2set_S,kdump2        },
538   { "dumpk3", S(KDUMP3),0,  3,      "",     "kkkSii",kdmp3set_S,kdump3       },
539   { "dumpk4", S(KDUMP4),0,  3,      "",     "kkkkSii",kdmp4set_S,kdump4      },
540   { "dumpk.i",  S(KDUMP),0,   3,      "",     "kiii", kdmpset_p,kdump        },
541   { "dumpk2.i", S(KDUMP2),0,  3,      "",     "kkiii",kdmp2set_p,kdump2      },
542   { "dumpk3.i", S(KDUMP3),0,  3,      "",     "kkkiii",kdmp3set_p,kdump3     },
543   { "dumpk4.i", S(KDUMP4),0,  3,      "",     "kkkkiii",kdmp4set_p,kdump4    },
544   { "readk",  S(KREAD),0,   3,      "k",    "Sii",   krdset_S, kread         },
545   { "readk2", S(KREAD2),0,  3,      "kk",   "Sii",   krd2set_S, kread2       },
546   { "readk3", S(KREAD3),0,  3,      "kkk",  "Sii",   krd3set_S, kread3       },
547   { "readk4", S(KREAD4),0,  3,      "kkkk", "Sii",   krd4set_S, kread4       },
548   { "readk.i",  S(KREAD),0,   3,      "k",    "iii",   krdset_p, kread       },
549   { "readk2.i", S(KREAD2),0,  3,      "kk",   "iii",   krd2set_p, kread2     },
550   { "readk3.i", S(KREAD3),0,  3,      "kkk",  "iii",   krd3set_p, kread3     },
551   { "readk4.i", S(KREAD4),0,  3,      "kkkk", "iii",   krd4set_p, kread4     },
552   { "readks", S(KREADS),0,  3,      "S",    "Si",    krdsset_S, kreads       },
553   { "readks.i", S(KREADS),0,  3,      "S",    "ii",    krdsset_p, kreads     },
554   { "xyin",   S(XYIN), _QQ, 1,      "kk",   "iiiiioo",xyinset,NULL          },
555   { "tempest",  S(TEMPEST),0, 3,    "k","kiiiiiiiiiop",tempeset,tempest},
556   { "tempo",    S(TEMPO),0,   3,    "",     "ki",   tempset,tempo           },
557   { "pow.i",    S(POW),0,   1,      "i",    "iip",  ipow,    NULL,  NULL    },
558   { "pow.k",    S(POW),0,   2,      "k",    "kkp",  NULL,    ipow,  NULL    },
559   { "pow.a",    S(POW),0,   2,      "a",    "akp",  NULL,  apow    },
560   { "##pow.i",  S(POW),0,   1,      "i",    "iip",  ipow,    NULL,  NULL    },
561   { "##pow.k",  S(POW),0,   2,      "k",    "kkp",  NULL,    ipow,  NULL    },
562   { "##pow.a",  S(POW),0,   2,      "a",    "akp",  NULL,  apow    },
563   { "oscilx",   S(OSCILN), TR, 3,   "a",    "kiii", oscnset,   osciln  },
564   { "linrand.i",S(PRAND),0, 1,      "i",    "k",    iklinear, NULL, NULL    },
565   { "linrand.k",S(PRAND),0, 2,      "k",    "k",    NULL, iklinear, NULL    },
566   { "linrand.a",S(PRAND),0, 2,      "a",    "k",    NULL,     alinear },
567   { "trirand.i",S(PRAND),0, 1,      "i",    "k",    iktrian, NULL,  NULL    },
568   { "trirand.k",S(PRAND),0, 2,      "k",    "k",    NULL, iktrian,  NULL    },
569   { "trirand.a",S(PRAND),0, 2,      "a",    "k",    NULL,     atrian  },
570   { "exprand.i",S(PRAND),0, 1,      "i",    "k",    ikexp, NULL,    NULL    },
571   { "exprand.k",S(PRAND),0, 2,      "k",    "k",    NULL,    ikexp, NULL    },
572   { "exprand.a",S(PRAND),0, 2,      "a",    "k",    NULL,     aexp    },
573   { "bexprnd.i",S(PRAND),0, 1,      "i",    "k",    ikbiexp, NULL,  NULL    },
574   { "bexprnd.k",S(PRAND),0, 2,      "k",    "k",    NULL, ikbiexp,  NULL    },
575   { "bexprnd.a",S(PRAND),0, 2,      "a",    "k",    NULL,     abiexp  },
576   { "cauchy.i", S(PRAND),0, 1,      "i",    "k",    ikcauchy, NULL, NULL    },
577   { "cauchy.k", S(PRAND),0, 2,      "k",    "k",    NULL, ikcauchy, NULL    },
578   { "cauchy.a", S(PRAND),0, 2,      "a",    "k",    NULL,  acauchy },
579   { "pcauchy.i",S(PRAND),0, 1,      "i",    "k",    ikpcauchy, NULL,NULL    },
580   { "pcauchy.k",S(PRAND),0, 2,      "k",    "k",    NULL, ikpcauchy,NULL    },
581   { "pcauchy.a",S(PRAND),0, 2,      "a",    "k",    NULL,  apcauchy},
582   { "poisson.i",S(PRAND),0, 1,      "i",    "k",    ikpoiss, NULL,  NULL    },
583   { "poisson.k",S(PRAND),0, 2,      "k",    "k",    NULL, ikpoiss,  NULL    },
584   { "poisson.a",S(PRAND),0, 2,      "a",    "k",    NULL,  apoiss  },
585   { "gauss.i" , S(PRAND),0, 1,      "i",    "k",    ikgaus,  NULL,  NULL    },
586   { "gauss.k" , S(PRAND),0, 2,      "k",    "k",    NULL, ikgaus,   NULL    },
587   { "gauss.a" , S(PRAND),0, 2,      "a",    "k",    NULL,  agaus   },
588   { "gauss.iii" , S(GAUSS),0, 1,      "i",    "ii",    gauss_scalar,  NULL,  NULL    },
589   { "gauss.kkk" , S(GAUSS),0, 2,      "k",    "kk",    NULL, gauss_scalar,   NULL    },
590   { "gauss.akk" , S(GAUSS),0, 2,      "a",    "kk",    NULL, gauss_vector   },
591   { "weibull.i",S(PRAND),0, 1,      "i",    "kk",   ikweib,  NULL,  NULL    },
592   { "weibull.k",S(PRAND),0, 2,      "k",    "kk",   NULL, ikweib,   NULL    },
593   { "weibull.a",S(PRAND),0, 2,      "a",    "kk",   NULL,  aweib   },
594   { "betarand.i",S(PRAND),0,1,      "i",    "kkk",  ikbeta, NULL,  NULL     },
595   { "betarand.k",S(PRAND),0,2,      "k",    "kkk",  NULL,   ikbeta,NULL     },
596   { "betarand.a",S(PRAND),0,2,      "a",    "kkk",  NULL,  abeta    },
597   { "seed",     S(PRAND),0, 1,      "",     "i",    seedrand, NULL, NULL    },
598   { "getseed.i",S(GETSEED),0, 1,    "i",     "",    getseed, NULL, NULL     },
599   { "getseed.k",S(GETSEED),0, 3,    "k",     "",    getseed, getseed, NULL  },
600   { "unirand.i",S(PRAND),0, 1,     "i",     "k",    ikuniform, NULL,  NULL  },
601   { "unirand.k",S(PRAND),0, 2,     "k",     "k",    NULL,    ikuniform, NULL},
602   { "unirand.a",S(PRAND),0, 2,     "a",     "k",    NULL, auniform },
603   { "diskin",S(DISKIN2_ARRAY),0, 3,    "a[]",
604     "SPooooooo",
605     (SUBR) diskin_init_array_S,
606     (SUBR) diskin2_perf_array                         },
607   { "diskin2",S(DISKIN2_ARRAY),0, 3, "a[]",
608     "SPooooooo",
609     (SUBR) diskin2_init_array_S,
610     (SUBR) diskin2_perf_array                         },
611   { "diskin.i",S(DISKIN2_ARRAY),0, 3,    "a[]",
612     "iPooooooo",
613     (SUBR) diskin_init_array_I,
614     (SUBR) diskin2_perf_array                         },
615   { "diskin2.i",S(DISKIN2_ARRAY),0, 3, "a[]",
616     "iPooooooo",
617     (SUBR) diskin2_init_array_I,
618     (SUBR) diskin2_perf_array                         },
619   { "diskin",S(DISKIN2),0, 3,    "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm",
620     "SPooooooo",
621     (SUBR) diskin_init_S,
622     (SUBR) diskin2_perf                         },
623   { "diskin2",S(DISKIN2),0, 3, "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm",
624     "SPooooooo",
625     (SUBR) diskin2_init_S,
626     (SUBR) diskin2_perf                         },
627   { "diskin.i",S(DISKIN2),0, 3,    "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm",
628     "iPooooooo",
629     (SUBR) diskin_init,
630     (SUBR) diskin2_perf                         },
631   { "diskin2.i",S(DISKIN2),0, 3, "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm",
632     "iPooooooo",
633     (SUBR) diskin2_init,
634     (SUBR) diskin2_perf                         },
635   { "noteon", S(OUT_ON),0,  1,      "",     "iii",  iout_on, NULL,   NULL    },
636   { "noteoff", S(OUT_ON),0, 1,      "",     "iii",  iout_off, NULL,    NULL  },
637   { "noteondur",S(OUT_ON_DUR),0,3,  "", "iiii", iout_on_dur_set,iout_on_dur,NULL},
638   { "noteondur2",S(OUT_ON_DUR),0,3, "", "iiii", iout_on_dur_set,iout_on_dur2,NULL},
639   { "moscil",S(MOSCIL),0,   3,      "",     "kkkkk",moscil_set, moscil, NULL},
640   { "midion",S(KOUT_ON),0,  3,      "", "kkk", kvar_out_on_set,kvar_out_on,NULL},
641   { "outic",S(OUT_CONTR),0, 1,      "",     "iiiii", out_controller, NULL, NULL},
642   { "outkc",S(OUT_CONTR),0, 2,      "",     "kkkkk", NULL, out_controller, NULL},
643   { "outic14",S(OUT_CONTR14),0,1,   "",     "iiiiii",out_controller14, NULL,NULL},
644   { "outkc14",S(OUT_CONTR14),0,2,   "",     "kkkkkk",NULL, out_controller14, NULL},
645   { "outipb",S(OUT_PB),0,   1,      "",     "iiii", out_pitch_bend, NULL , NULL},
646   { "outkpb",S(OUT_PB),0,   2,      "",     "kkkk", NULL,  out_pitch_bend, NULL},
647   { "outiat",S(OUT_ATOUCH),0,1,     "",     "iiii", out_aftertouch, NULL , NULL},
648   { "outkat",S(OUT_ATOUCH),0,2,     "",     "kkkk", NULL,  out_aftertouch, NULL},
649   { "outipc",S(OUT_PCHG),0, 1,      "",     "iiii", out_progchange, NULL , NULL},
650   { "outkpc",S(OUT_PCHG),0, 2,      "",     "kkkk", NULL,  out_progchange, NULL},
651   { "outipat",S(OUT_POLYATOUCH),0,1,"",    "iiiii", out_poly_aftertouch, NULL,NULL},
652   { "outkpat",S(OUT_POLYATOUCH),0,2,"",    "kkkkk", NULL, out_poly_aftertouch,NULL},
653   { "release",S(REL),0,     3,      "k",    "",     release_set, release, NULL },
654   { "xtratim",S(XTRADUR),0, 1,      "",     "i",    xtratim,    NULL,     NULL },
655   { "mclock", S(MCLOCK),0,  3,      "",     "i",    mclock_set, mclock,   NULL },
656   { "mrtmsg", S(XTRADUR),0, 1,      "",     "i",    mrtmsg,     NULL,     NULL },
657   { "midiout",S(MIDIOUT),0,  2,     "",     "kkkk", NULL, midiout,   NULL      },
658   { "midiout_i",S(MIDIOUT), 0,  1,     "",     "iiii", midiout,   NULL, NULL     },
659   { "midion2", S(KON2),0,    3,     "",     "kkkk", kon2_set, kon2,   NULL     },
660   { "nrpn",   S(NRPN),0,     2,     "",     "kkk",  NULL,  nrpn ,NULL          },
661   { "mdelay", S(MDELAY),0,   3,     "",     "kkkkk",mdelay_set, mdelay,   NULL },
662   { "nsamp.i", S(EVAL),0,    1,     "i",    "i",    numsamp                    },
663   { "powoftwo.i",S(EVAL),0,  1,     "i",    "i",    powoftwo                   },
664   { "powoftwo.k",S(EVAL),0,  2,     "k",    "k",    NULL, powoftwo             },
665   { "powoftwo.a",S(EVAL),0,  2,     "a",    "a",    NULL, powoftwoa      },
666   { "logbtwo.i",S(EVAL),0,   1,     "i",    "i",    ilogbasetwo                },
667   { "logbtwo.k",S(EVAL),0,   3,     "k",    "k",    logbasetwo_set, logbasetwo },
668   { "logbtwo.a",S(EVAL),0,   3,     "a",    "a",
669     logbasetwo_set, logbasetwoa },
670   { "filelen", S(SNDINFO),0, 1,     "i",    "Sp",   filelen_S, NULL, NULL        },
671   { "filenchnls", S(SNDINFO),0, 1,  "i",    "Sp",   filenchnls_S, NULL, NULL     },
672   { "filesr", S(SNDINFO),0,  1,     "i",    "Sp",   filesr_S, NULL, NULL         },
673   { "filebit", S(SNDINFO),0,  1,     "i",   "Sp",   filebit_S, NULL, NULL        },
674   { "filepeak", S(SNDINFOPEAK),0, 1, "i",   "So",   filepeak_S, NULL, NULL       },
675   { "filevalid", S(FILEVALID),0, 1,  "i",   "S",    filevalid_S, NULL, NULL      },
676   { "filelen.i", S(SNDINFO),0, 1,     "i",    "ip",   filelen, NULL, NULL        },
677   { "filenchnls.i", S(SNDINFO),0, 1,  "i",    "ip",   filenchnls, NULL, NULL     },
678   { "filesr.i", S(SNDINFO),0,  1,     "i",    "ip",   filesr, NULL, NULL         },
679   { "filebit.i", S(SNDINFO),0,  1,     "i",   "ip",   filebit, NULL, NULL        },
680   { "filepeak.i", S(SNDINFOPEAK),0, 1, "i",   "io",   filepeak, NULL, NULL       },
681   { "filevalid.i", S(FILEVALID),0, 1,  "i",   "i",    filevalid, NULL, NULL      },
682   /*  { "nlalp", S(NLALP),0,     3,     "a",  "akkoo", nlalp_set, nlalp }, */
683   { "ptableiw",  S(TABLEW),TW|_QQ, 1, "", "iiiooo", (SUBR)tablew_init, NULL, NULL},
684   { "ptablew.kk", S(TABLEW),TB,  3,  "", "kkiooo",(SUBR)tabl_setup,
685     (SUBR)tablew_kontrol, NULL          },
686   { "ptablew.aa", S(TABLEW),TB,  3,  "", "aaiooo",(SUBR)tabl_setup,
687     (SUBR)tablew_audio               },
688   { "tableiw",  S(TABL),TW|_QQ, 1, "",   "iiiooo", (SUBR)tablew_init, NULL, NULL},
689   { "tablew",  S(TABL),TW, 1,    "",   "iiiooo", (SUBR)tablew_init, NULL, NULL},
690   { "tablew.kk", S(TABL),TW,  3,    "", "kkiooo",(SUBR)tabl_setup,
691     (SUBR)tablew_kontrol, NULL          },
692   { "tablew.aa", S(TABL),TW,  3,    "", "aaiooo",(SUBR)tabl_setup,
693     (SUBR)tablew_audio               },
694   { "tablewkt.kk", S(TABL),TW,3, "",  "kkkooo",
695     (SUBR)tablkt_setup,(SUBR)tablewkt_kontrol,NULL},
696   { "tablewkt.aa", S(TABL),TW,3, "",  "aakooo",
697     (SUBR)tablkt_setup,(SUBR)tablewkt_audio},
698   { "tableng.i", S(TLEN),TR,1,     "i",  "i",    (SUBR)table_length, NULL,  NULL},
699   { "tableng.k",  S(TLEN),TR,2,    "k",  "k",    NULL,  (SUBR)table_length, NULL},
700   { "tableigpw",S(TGP), TB, 1,     "",  "i",    (SUBR)table_gpw, NULL,  NULL},
701   { "tablegpw", S(TGP), TB,2,      "",  "k",    NULL,   (SUBR)table_gpw, NULL},
702   { "tableimix",S(TABLMIX),TB, 1,  "",  "iiiiiiiii", (SUBR)table_mix, NULL, NULL},
703   { "tablemix", S(TABLMIX),TB, 2,  "",  "kkkkkkkkk", NULL, (SUBR)table_mix, NULL},
704   { "tableicopy",S(TGP),TB, 1, "", "ii",   (SUBR)table_copy, NULL, NULL},
705   { "tablecopy", S(TGP),TB, 2, "", "kk", NULL, (SUBR)table_copy, NULL},
706   { "tablera", S(TABLRA),TR, 3,   "a",  "kkk",
707     (SUBR)table_ra_set, (SUBR)table_ra},
708   { "tablewa", S(TABLWA),TW, 3,   "k",  "kakp",
709     (SUBR)table_wa_set, (SUBR)table_wa},
710   { "tablekt",  S(TABL),TR, 3,   "k",  "xkooo",  (SUBR)tablkt_setup,
711     (SUBR)tablerkt_kontrol,
712     NULL         },
713   { "tablekt.a",  S(TABL),TR, 3,   "a",  "xkooo",  (SUBR)tablkt_setup,
714     (SUBR)tablerkt_audio           },
715   { "tableikt", S(TABL),TR, 3,    "k",  "xkooo", (SUBR)tablkt_setup,
716     (SUBR)tableirkt_kontrol,
717     NULL          },
718   { "tableikt.a", S(TABL),TR, 3,    "a",  "xkooo", (SUBR)tablkt_setup,
719     (SUBR)tableirkt_audio          },
720   { "table3kt", S(TABL),TR, 3,  "k",  "xkooo", (SUBR)tablkt_setup,
721     (SUBR)table3rkt_kontrol,
722     NULL         },
723   { "table3kt.a", S(TABL),TR, 3,  "a",  "xkooo", (SUBR)tablkt_setup,
724     (SUBR)table3rkt_audio          },
725   { "inz",    S(IOZ),    ZW, 2,   "",   "k",  NULL,   (SUBR)inz  },
726   { "outz",   S(IOZ),ZR|IR,  2,   "",   "k",    NULL,   (SUBR)outz },
727   { "timek.i", S(RDTIME),0, 1,   "i",  "",     (SUBR)timek,   NULL,  NULL },
728   { "times.i", S(RDTIME),0, 1,   "i",  "",     (SUBR)timesr,  NULL,  NULL },
729   { "timek.k",  S(RDTIME),0, 2,  "k",  "",     NULL,    (SUBR)timek, NULL },
730   { "times.k",  S(RDTIME),0, 2,  "k",  "",     NULL,    (SUBR)timesr,NULL },
731   { "timeinstk", S(RDTIME),0, 3, "k",  "",
732     (SUBR)instimset, (SUBR)instimek, NULL },
733   { "timeinsts", S(RDTIME),0, 3, "k",  "",
734     (SUBR)instimset, (SUBR)instimes, NULL },
735   { "peak.k",  S(PEAK),0,   2,   "k",  "k",    NULL,    (SUBR)peakk,    NULL    },
736   { "peak.a",   S(PEAK),0,  2,   "k",  "a",    NULL,     (SUBR)peaka   },
737   { "printk", S(PRINTK),WR,  3,"",     "ikoooo",
738     (SUBR)printkset, (SUBR)printk, NULL },
739   { "printks",S(PRINTKS),WR, 3,   "",   "SiN",
740     (SUBR)printksset_S,(SUBR)printks, NULL },
741   { "printks2", sizeof(PRINTK3),0, 3, "", "Sk", (SUBR)printk3set, (SUBR)printk3 },
742   { "printks.i",S(PRINTKS),WR, 3,   "",   "iiN",
743     (SUBR)printksset,(SUBR)printks, NULL },
744   { "prints",S(PRINTS),0,   1,   "",   "SN",   (SUBR)printsset_S, NULL, NULL },
745   { "prints.i",S(PRINTS),0,   1,   "",   "iN",   (SUBR)printsset, NULL, NULL },
746   { "printk2", S(PRINTK2), WR, 3, "",   "koo",
747     (SUBR)printk2set, (SUBR)printk2, NULL },
748   { "portk",  S(KPORT),0,   3, "k",     "kko",  (SUBR)kporset, (SUBR)kport, NULL },
749   { "tonek",  S(KTONE),0,   3, "k",     "kko",  (SUBR)ktonset, (SUBR)ktone, NULL },
750   { "atonek", S(KTONE),0,   3, "k",     "kko",  (SUBR)ktonset, (SUBR)katone, NULL},
751   { "resonk", S(KRESON),0,  3, "k",     "kkkpo",(SUBR)krsnset, (SUBR)kreson, NULL},
752   { "aresonk",S(KRESON),0,  3, "k",     "kkkpo",(SUBR)krsnset, (SUBR)kareson, NULL},
753   { "limit.i", S(LIMIT),0,  1, "i",     "iii",  (SUBR)klimit,  NULL,    NULL      },
754   { "limit.k",  S(LIMIT),0, 2, "k",     "kkk",  NULL,          (SUBR)klimit, NULL },
755   { "limit.a",  S(LIMIT),0, 2, "a",     "akk",  NULL,  (SUBR)limit },
756   { "prealloc", S(AOP),0,   1, "",      "iio",  (SUBR)prealloc, NULL, NULL  },
757    { "prealloc", S(AOP),0,   1, "",      "Sio",  (SUBR)prealloc_S, NULL, NULL  },
758   /* opcode   dspace      thread  outarg  inargs  isub    ksub    asub    */
759   { "inh",    S(INH),0,     2,      "aaaaaa","",    NULL,   inh     },
760   { "ino",    S(INO),0,     2,      "aaaaaaaa","",  NULL,   ino     },
761   { "inx",    S(INALL),0,   2,      "aaaaaaaaaaaaaaaa","",  NULL,   in16 },
762   { "in32",   S(INALL),0,   2,      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
763     "",     NULL,   in32 },
764   { "inch",   S(INCH1),0,    3,      "a",
765     "k",    inch1_set,   (SUBR) inch_opcode1 },
766   { "inch.m",   S(INCH),0,    3,      "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm",
767     "z",    inch_set,   inch_opcode },
768   { "_in",    S(INALL),0,   3,      "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm",
769     "",     inch_set,   inall_opcode },
770   /* Note that there is code in rdorch.c that assumes that opcodes starting
771      with the characters out followed by a s, q, h, o or x are in this group
772      ***BEWARE***
773      CODE REMOVED 2011-Dec-14
774   */
775   { "outch",  S(OUTCH),IR,   2,      "",     "Z",    NULL,   outch   },
776   { "outc",   S(OUTX),IR,    2,      "",     "y",    ochn,   outall  },
777   { "cpsxpch", S(XENH),TR, 1,      "i",    "iiii", cpsxpch, NULL,  NULL    },
778   { "cps2pch", S(XENH),TR, 1,      "i",    "ii",   cps2pch, NULL,  NULL    },
779   { "cpstun", S(CPSTUN),  TR, 2,      "k",    "kkk",   NULL,   cpstun         },
780   { "cpstuni",S(CPSTUNI), TR, 1,      "i",    "ii",   cpstun_i,               },
781   { "cpstmid", S(CPSTABLE),0, 1, "i", "i",    (SUBR)cpstmid                    },
782   { "adsr", S(LINSEG),0,     3,     "k",    "iiiio",adsrset,klnseg, NULL },
783   { "adsr.a", S(LINSEG),0,     3,     "a",    "iiiio",adsrset, linseg     },
784   { "madsr", S(LINSEG),0,    3,     "k",    "iiiioj", madsrset,klnsegr,NULL },
785   { "madsr.a", S(LINSEG),0,    3,     "a",    "iiiioj", madsrset, linsegr },
786   { "xadsr", S(EXXPSEG),0,   3,     "k",    "iiiio", xdsrset, kxpseg, NULL   },
787   { "xadsr.a", S(EXXPSEG),0,   3,     "a",    "iiiio", xdsrset, expseg    },
788   { "mxadsr", S(EXPSEG),0,   3,     "k",    "iiiioj", mxdsrset, kxpsegr, NULL},
789   { "mxadsr.a", S(EXPSEG),0,   3,     "a",    "iiiioj", mxdsrset, expsegr},
790   { "schedule", S(SCHED),0,  1,     "",     "iiim",
791     schedule, NULL, NULL },
792   { "schedule.N", S(SCHED),0,  1,     "",     "iiiN",
793     schedule_N, NULL, NULL },
794   { "schedule.S", S(SCHED),0,  1,     "",     "Siim",
795     schedule_S, NULL, NULL },
796   { "schedule.SN", S(SCHED),0,  1,     "",     "SiiN",
797     schedule_SN, NULL, NULL },
798   { "schedule.array", S(SCHED),0,  1,     "",     "i[]",
799     schedule_array, NULL, NULL },
800   /* **** Experimental schedulek opcodes **** */
801   { "schedulek",   S(SCHED),0,  2,     "",     "kkkM",
802     NULL, schedule, NULL },
803   { "schedulek.N", S(SCHED),0,  2,     "",     "kkkN",
804     NULL, schedule_N, NULL },
805   { "schedulek.S", S(SCHED),0,  2,     "",     "SkkM",
806     NULL, schedule_S, NULL },
807   { "schedulek.SN", S(SCHED),0, 2,     "",     "SkkN",
808     NULL, schedule_SN, NULL },
809   { "schedulek.array",   S(SCHED),0,  2,     "",     "k[]",
810     NULL, schedule_array, NULL },
811 
812   /* **** End of schedulek **** */
813   { "schedwhen", S(WSCHED),0,3,     "",     "kkkkm",ifschedule, kschedule, NULL },
814   { "schedwhen", S(WSCHED),0,3,     "",     "kSkkm",ifschedule, kschedule, NULL },
815   { "schedkwhen", S(TRIGINSTR),0, 3,"",     "kkkkkz",triginset, ktriginstr, NULL },
816   { "schedkwhen.S", S(TRIGINSTR),0, 3,"",    "kkkSkz",
817                                              triginset_S, ktriginstr_S, NULL },
818   { "schedkwhennamed", S(TRIGINSTR),0, 3,"", "kkkkkz",triginset, ktriginstr, NULL },
819   { "schedkwhennamed.S", S(TRIGINSTR),0, 3,"",
820                                         "kkkSkz",triginset_S, ktriginstr_S, NULL },
821   { "trigseq", S(TRIGSEQ),0, 3,     "",     "kkkkkz", trigseq_set, trigseq, NULL },
822   { "event", S(LINEVENT),0,  2,     "",     "Skz",  NULL, eventOpcode, NULL   },
823   { "event_i", S(LINEVENT),0,1,     "",     "Sim",  eventOpcodeI, NULL, NULL  },
824   { "event.S", S(LINEVENT),0,  2,     "",    "SSz",  NULL, eventOpcode_S, NULL   },
825   { "event_i.S", S(LINEVENT),0,1,     "",    "SSm",  eventOpcodeI_S, NULL, NULL  },
826   { "nstance", S(LINEVENT2),0,2,     "k",  "kkz",  NULL, instanceOpcode, NULL   },
827   { "nstance.i", S(LINEVENT2),0,1,   "i",  "iiim",  instanceOpcode, NULL, NULL  },
828   { "nstance.kS", S(LINEVENT2),0, 2, "k",  "SSz",  NULL, instanceOpcode_S, NULL },
829   { "nstance.S", S(LINEVENT2),0, 1,  "i",  "Siim",  instanceOpcode_S, NULL, NULL},
830   { "turnoff.i", S(KILLOP),0,1,     "",     "i", kill_instance, NULL, NULL  },
831   { "turnoff.k", S(KILLOP),0,2,     "",     "k", NULL, kill_instance, NULL},
832   { "lfo", S(LFO),0,         3,     "k",    "kko",  lfoset,   lfok,   NULL   },
833   { "lfo.a", S(LFO),0,         3,     "a",    "kko",  lfoset,   lfoa    },
834   { "oscils",   S(OSCILS),0, 3,     "a", "iiio",
835     (SUBR)oscils_set, (SUBR)oscils  },
836   { "lphasor",  S(LPHASOR),0,3,     "a", "xooooooo" ,
837     (SUBR)lphasor_set, (SUBR)lphasor },
838   { "tablexkt", S(TABLEXKT),TR, 3, "a", "xkkiooo", (SUBR)tablexkt_set,
839     (SUBR)tablexkt              },
840   { "reverb2",  S(NREV2),0,  3,     "a",    "akkoojoj",
841     (SUBR)reverbx_set,(SUBR)reverbx  },
842   { "nreverb",  S(NREV2),0,  3,     "a",    "akkoojoj",
843     (SUBR)reverbx_set,(SUBR) reverbx },
844   { "=.f",      S(FASSIGN),0, 3,    "f",   "f", (SUBR)fassign_set, (SUBR)fassign },
845   { "init.f",   S(FASSIGN),0, 1,    "f",   "f", (SUBR)fassign_set, NULL, NULL    },
846   { "pvsanal",  S(PVSANAL), 0, 3,   "f",   "aiiiioo", pvsanalset, pvsanal   },
847   { "pvsynth",  S(PVSYNTH),0, 3,    "a",   "fo",     pvsynthset, pvsynth },
848   { "pvsadsyn", S(PVADS),0,   3,    "a",   "fikopo", pvadsynset, pvadsyn, NULL },
849   { "pvscross", S(PVSCROSS),0,3,    "f",   "ffkk",   pvscrosset, pvscross, NULL },
850   { "pvsfread", S(PVSFREAD),0,3,    "f",   "kSo",    pvsfreadset_S, pvsfread, NULL},
851   { "pvsfread.i", S(PVSFREAD),0,3,  "f",   "kio",    pvsfreadset, pvsfread, NULL},
852   { "pvsmaska", S(PVSMASKA),0,3,    "f",   "fik",    pvsmaskaset, pvsmaska, NULL  },
853   { "pvsftw",   S(PVSFTW),  TW, 3,  "k",   "fio",    pvsftwset, pvsftw, NULL  },
854   { "pvsftr",   S(PVSFTR),TR, 3,    "",    "fio",    pvsftrset, pvsftr, NULL  },
855   { "pvsinfo",  S(PVSINFO),0, 1,    "iiii","f",      pvsinfo, NULL, NULL    },
856   { "octave.i", S(EVAL),0,    1,    "i",    "i",     powoftwo               },
857   { "octave.k", S(EVAL),0,    2,    "k",    "k",     NULL,  powoftwo        },
858   { "octave.a", S(EVAL),0,    2,    "a",    "a",     NULL, powoftwoa  },
859   { "semitone.i",S(EVAL),0,   1,    "i",    "i",     semitone               },
860   { "semitone.k",S(EVAL),0,   2,    "k",    "k",     NULL,  semitone        },
861   { "semitone.a",S(EVAL),0,   2,    "a",    "a",     NULL, asemitone  },
862   { "cent.i",   S(EVAL),0,    1,    "i",    "i",     cent                   },
863   { "cent.k",   S(EVAL),0,    2,    "k",    "k",     NULL,  cent            },
864   { "cent.a",   S(EVAL),0,    2,    "a",    "a",     NULL, acent      },
865   { "db.i",     S(EVAL),0,    1,    "i",    "i",     db                     },
866   { "db.k",     S(EVAL),0,    2,    "k",    "k",     NULL, db               },
867   { "db.a",     S(EVAL),0,    2,    "a",    "a",     NULL, dba        },
868   { "midichn",  S(MIDICHN),0, 1,    "i",    "",      midichn, NULL, NULL    },
869   { "pgmassign",S(PGMASSIGN),0, 1,  "",     "iio",   pgmassign, NULL, NULL  },
870   { "pgmassign.S",S(PGMASSIGN),0, 1, "",    "iSo",   pgmassign_S, NULL, NULL  },
871   { "midiin",   S(MIDIIN),0,  3,    "kkkk", "",      midiin_set, midiin, NULL },
872   { "pgmchn",   S(PGMIN),0,  3,     "kk",   "o",     pgmin_set, pgmin, NULL },
873   { "ctlchn",   S(CTLIN),0,  3,     "kkk",  "oo",    ctlin_set, ctlin, NULL },
874   { "miditempo", S(MIDITEMPO),0, 3, "k",    "",
875     (SUBR) midiTempoOpcode, (SUBR) midiTempoOpcode, NULL    },
876   { "midifilestatus", S(MIDITEMPO),0, 2, "k",    "",
877    NULL, (SUBR) midiFileStatus, NULL },
878   { "midinoteoff", S(MIDINOTEON),0,3   ,"", "xx",   midinoteoff, midinoteoff, },
879   { "midinoteonkey", S(MIDINOTEON),0,3, "", "xx",   midinoteonkey, midinoteonkey },
880   { "midinoteoncps", S(MIDINOTEON),0, 3, "", "xx",  midinoteoncps,midinoteoncps },
881   { "midinoteonoct", S(MIDINOTEON),0, 3, "", "xx",  midinoteonoct,midinoteonoct },
882   { "midinoteonpch", S(MIDINOTEON),0, 3, "", "xx",  midinoteonpch, midinoteonpch },
883   { "midipolyaftertouch", S(MIDIPOLYAFTERTOUCH),0,
884     3,   "", "xxoh", midipolyaftertouch, midipolyaftertouch},
885   { "midicontrolchange", S(MIDICONTROLCHANGE),0,
886     3, "", "xxoh",midicontrolchange, midicontrolchange    },
887   { "midiprogramchange", S(MIDIPROGRAMCHANGE),0,
888     3, "", "x", midiprogramchange, midiprogramchange      },
889   { "midichannelaftertouch", S(MIDICHANNELAFTERTOUCH),0,
890     3, "", "xoh",midichannelaftertouch, midichannelaftertouch },
891   { "midipitchbend", S(MIDIPITCHBEND),0,3, "", "xoh",
892     midipitchbend, midipitchbend },
893   { "mididefault", S(MIDIDEFAULT),0, 3, "", "xx",   mididefault, mididefault },
894   //{ "invalue",   0xFFFF,   _CR,    0,   NULL,   NULL, NULL, NULL },
895   { "invalue.k", S(INVAL),_CR, 3, "k", "i", (SUBR) invalset,(SUBR)kinval, NULL },
896   { "invalue.i", S(INVAL),_CR, 1, "i", "i", (SUBR) invalsetgo, NULL, NULL },
897   { "invalue.iS", S(INVAL),_CR, 1, "i", "S", (SUBR) invalsetSgo, NULL, NULL },
898   { "invalue.kS", S(INVAL),_CR, 3, "k", "S",(SUBR) invalset_S,(SUBR)kinval, NULL },
899   { "invalue.S", S(INVAL),_CR, 3, "S", "i",
900                                       (SUBR) invalset_string, (SUBR)kinvalS, NULL },
901   { "invalue.SS", S(INVAL),_CR, 3, "S", "S",
902                                     (SUBR) invalset_string_S, (SUBR)kinvalS, NULL },
903   { "outvalue", S(OUTVAL), _CW, 3, "", "ik", (SUBR) outvalset, (SUBR)koutval, NULL},
904   { "outvalue.i", S(OUTVAL), _CW, 1, "", "ii", (SUBR) outvalsetgo, NULL, NULL},
905   { "outvalue.Si", S(OUTVAL), _CW, 1, "", "Si",
906                                           (SUBR) outvalsetSgo, NULL, NULL},
907   { "outvalue.k", S(OUTVAL), _CW, 3, "", "Sk",
908                                           (SUBR) outvalset_S, (SUBR)koutval, NULL},
909   { "outvalue.S", S(OUTVAL), _CW, 3, "", "iS",
910                                      (SUBR) outvalset_string, (SUBR)koutvalS, NULL},
911   { "outvalue.SS", S(OUTVAL), _CW, 3, "", "SS",
912                                    (SUBR) outvalset_string_S, (SUBR)koutvalS, NULL},
913   /* IV - Oct 20 2002 */
914   { "subinstr", S(SUBINST),0, 3, "mmmmmmmm", "SN",  subinstrset_S, subinstr },
915   { "subinstrinit", S(SUBINST),0, 1, "",    "SN",   subinstrset_S, NULL, NULL     },
916   { "subinstr.i", S(SUBINST),0, 3, "mmmmmmmm", "iN",  subinstrset, subinstr },
917   { "subinstrinit.i", S(SUBINST),0, 1, "",    "iN",   subinstrset, NULL, NULL     },
918   { "nstrnum", S(NSTRNUM),0, 1,     "i",    "S",    nstrnumset_S, NULL, NULL      },
919   { "nstrnum.i", S(NSTRNUM),0, 1,     "i",    "i",    nstrnumset, NULL, NULL      },
920   { "nstrstr", S(NSTRSTR),0, 1,       "S",    "i",    nstrstr, NULL, NULL      },
921   { "nstrstr.k", S(NSTRSTR),0, 2,     "S",    "k",    NULL, nstrstr, NULL      },
922   //{ "turnoff2",   0xFFFB,   _CW,    0, NULL,   NULL,   NULL, NULL, NULL          },
923   { "turnoff2.S",S(TURNOFF2),_CW,2,     "",     "Skk",  NULL, turnoff2S, NULL     },
924   { "turnoff2.c",S(TURNOFF2),_CW,2,     "",     "ikk",  NULL, turnoff2k, NULL     },
925   { "turnoff2.k",S(TURNOFF2),_CW,2,     "",     "kkk",  NULL, turnoff2k, NULL     },
926   { "turnoff2.i",S(TURNOFF2),_CW,2,     "",     "ikk",  NULL, turnoff2k, NULL     },
927   { "turnoff2.r",S(TURNOFF2),_CW,2,     "",     "ikk",  NULL, turnoff2k, NULL     },
928   { "cngoto", S(CGOTO),0,   3,      "",     "Bl",   ingoto, kngoto, NULL     },
929   { "cnkgoto", S(CGOTO),0,   2,      "",     "Bl",   NULL,  kngoto, NULL     },
930   { "cingoto", S(CGOTO),0,   1,      "",     "Bl",   ingoto, NULL, NULL     },
931   { "tempoval", S(GTEMPO),0, 2,  "k", "",      NULL, (SUBR)gettempo, NULL    },
932   { "downsamp",S(DOWNSAMP),0,3, "k", "ao",   (SUBR)downset,(SUBR)downsamp        },
933   { "upsamp", S(UPSAMP),0,  2,  "a", "k",    NULL,   (SUBR)upsamp        },
934   /* IV - Sep 5 2002 */
935   { "interp", S(INTERP),0,  3,  "a", "kooo", (SUBR)interpset, (SUBR)interp  },
936   { "a.k",    S(INTERP),0,  3,  "a", "k",    (SUBR)a_k_set,   (SUBR)interp  },
937   { "integ", S(INDIFF),  0, 3,  "a", "xo",
938     (SUBR)indfset,(SUBR)integrate},
939   { "integ.k", S(INDIFF),  0, 3,  "k", "xo",
940     (SUBR)indfset,(SUBR)kntegrate, NULL},
941   { "diff",   S(INDIFF),0,  3,  "a", "xo", (SUBR)indfset, (SUBR)diff },
942   { "diff.k",   S(INDIFF),0,  3,  "k", "xo", (SUBR)indfset,(SUBR)kdiff, NULL },
943   { "samphold",S(SAMPHOLD),0,3, "a", "xxoo",
944     (SUBR)samphset,(SUBR)samphold    },
945   { "samphold.k",S(SAMPHOLD),0,3, "k", "xxoo",
946     (SUBR)samphset,(SUBR)ksmphold,NULL  },
947   { "delay",  S(DELAY),0,   3,  "a", "aio",  (SUBR)delset,   (SUBR)delay   },
948   { "delayr", S(DELAYR),0,  3,  "aX","io",   (SUBR)delrset,   (SUBR)delayr  },
949   { "delayw", S(DELAYW),0,  3,  "",  "a",    (SUBR)delwset,   (SUBR)delayw  },
950   { "delay1", S(DELAY1),0,  3,  "a", "ao",   (SUBR)del1set,   (SUBR)delay1  },
951   { "deltap", S(DELTAP),0,  3,  "a", "ko",   (SUBR)tapset,   (SUBR)deltap  },
952   { "deltapi",S(DELTAP),0,  3,  "a", "xo",   (SUBR)tapset,   (SUBR)deltapi },
953   { "deltapn",S(DELTAP),0,  3,  "a", "xo",   (SUBR)tapset,   (SUBR)deltapn },
954   { "deltap3",S(DELTAP),0,  3,  "a", "xo",   (SUBR)tapset,   (SUBR)deltap3 },
955   { "reverb", S(REVERB),0,  3,  "a", "ako",  (SUBR)rvbset,   (SUBR)reverb  },
956   { "vdelay",   S(VDEL),0,  3,  "a", "axio", (SUBR)vdelset,  (SUBR)vdelay  },
957   { "vdelay3",  S(VDEL),0,  3,  "a", "axio", (SUBR)vdelset,  (SUBR)vdelay3 },
958   { "vdelayxwq",S(VDELXQ),0,3,  "aaaa", "aaaaaiio",
959     (SUBR)vdelxqset, (SUBR)vdelayxwq},
960   { "vdelayxws",S(VDELXS),0,3,  "aa", "aaaiio", (SUBR)vdelxsset,
961     (SUBR)vdelayxws                  },
962   { "vdelayxw", S(VDELX),0, 3,  "a",  "aaiio",
963     (SUBR)vdelxset, (SUBR)vdelayxw},
964   { "vdelayxq", S(VDELXQ),0,3,  "aaaa", "aaaaaiio",
965     (SUBR)vdelxqset, (SUBR)vdelayxq},
966   { "vdelayxs", S(VDELXS),0,3,  "aa", "aaaiio",
967     (SUBR)vdelxsset, (SUBR)vdelayxs},
968   { "vdelayx",  S(VDELX),0, 3,  "a",  "aaiio", (SUBR)vdelxset, (SUBR)vdelayx},
969   { "deltapx",  S(DELTAPX),0,3, "a",  "aio",  (SUBR)tapxset,  (SUBR)deltapx },
970   { "deltapxw", S(DELTAPX),0,3,  "",  "aaio", (SUBR)tapxset, (SUBR)deltapxw },
971   { "multitap", S(MDEL),0,  3,   "a", "am",
972     (SUBR)multitap_set,(SUBR)multitap_play},
973   { "comb",   S(COMB),0,    3,  "a",  "akioo", (SUBR)cmbset, (SUBR)comb    },
974   { "combinv",S(COMB),0,    3,  "a",  "akioo", (SUBR)cmbset, (SUBR)invcomb },
975   { "alpass", S(COMB),0,    3,  "a",  "axioo", (SUBR)cmbset, (SUBR)alpass  },
976   { "strset",   S(STRSET_OP),0,   1,  "",     "iS",
977      (SUBR) strset_init, NULL, NULL                        },
978   { "strget",   S(STRGET_OP),0,   1,  "S",    "i",
979      (SUBR) strget_init, NULL, NULL                        },
980   {  "S",   S(STRGET_OP),0,   1,  "S",    "i",
981      (SUBR) s_opcode, NULL, NULL                           },
982   {  "S",   S(STRGET_OP),0,   3,  "S",    "k",
983      (SUBR) s_opcode,(SUBR) s_opcode_k, NULL                       },
984   {  "strcpy",   S(STRCPY_OP),0,   1,  "S",    "S",
985      (SUBR) strcpy_opcode_S, NULL, NULL                     },
986   {  "strcpy",   S(STRGET_OP),0,   1,  "S",    "i",
987      (SUBR) strcpy_opcode_p, NULL, NULL                     },
988   {  "strcpyk",  S(STRCPY_OP),0,   3,  "S",    "S",
989      (SUBR) strcpy_opcode_S, (SUBR) strcpy_opcode_S, NULL          },
990   {  "strcpyk.k",  S(STRGET_OP),0,   3,  "S",    "k",
991      (SUBR) strcpy_opcode_p, (SUBR) strcpy_opcode_p, NULL          },
992   {  "strcat",   S(STRCAT_OP),0,   1,  "S",    "SS",
993      (SUBR) strcat_opcode, NULL, NULL                      },
994   {  "strcatk",  S(STRCAT_OP),0,   3,  "S",    "SS",
995      (SUBR) strcat_opcode, (SUBR) strcat_opcode, NULL             },
996   {  "strcmp",   S(STRCMP_OP),0,   1,  "i",    "SS",
997      (SUBR) strcmp_opcode, NULL, NULL                      },
998   {  "strcmpk",  S(STRCAT_OP),0,   3,  "k",    "SS",
999      (SUBR) strcmp_opcode, (SUBR) strcmp_opcode, NULL             },
1000   {  "sprintf",  S(SPRINTF_OP),0,  1,  "S",    "STN",
1001      (SUBR) sprintf_opcode, NULL, NULL                     },
1002   {  "sprintfk", S(SPRINTF_OP),WR,  3,  "S",    "SUN",
1003      (SUBR) sprintf_opcode, (SUBR) sprintf_opcode, NULL           },
1004   {  "printf_i", S(PRINTF_OP),0,   1,  "",     "SiN", /* SiTN */
1005      (SUBR) printf_opcode_init, NULL, NULL                 },
1006   {  "printf",   S(PRINTF_OP),WR,   3,  "",     "SkN", /* SkUN */
1007      (SUBR) printf_opcode_set, (SUBR) printf_opcode_perf, NULL    },
1008   {  "puts",     S(PUTS_OP),WR,     3,  "",     "Sko",
1009      (SUBR) puts_opcode_init, (SUBR) puts_opcode_perf, NULL       },
1010   {  "strtod",   S(STRSET_OP),0,   1,  "i",    "S",
1011      (SUBR) strtod_opcode_S, NULL, NULL                      },
1012   {  "strtod",   S(STRTOD_OP),0,   1,  "i",    "i",
1013      (SUBR) strtod_opcode_p, NULL, NULL                      },
1014   {  "strtodk",  S(STRSET_OP),0,   3,  "k",    "S",
1015      (SUBR) strtod_opcode_S, (SUBR) strtod_opcode_S, NULL          },
1016   {  "strtol",   S(STRSET_OP),0,   1,  "i",    "S",
1017      (SUBR) strtol_opcode_S, NULL, NULL                      },
1018   {  "strtol",   S(STRTOD_OP),0,   1,  "i",    "i",
1019      (SUBR) strtol_opcode_p, NULL, NULL                      },
1020   {  "strtolk",  S(STRSET_OP),0,   3,  "k",    "S",
1021      (SUBR) strtol_opcode_S, (SUBR) strtol_opcode_S, NULL         },
1022   {  "strsub",   S(STRSUB_OP),0,   1,  "S",    "Soj",
1023      (SUBR) strsub_opcode, NULL, NULL                      },
1024   {  "strsubk",  S(STRSUB_OP),0,   3,  "S",    "Skk",
1025      (SUBR) strsub_opcode, (SUBR) strsub_opcode, NULL             },
1026   {  "strchar",  S(STRCHAR_OP),0,  1,  "i",    "So",
1027      (SUBR) strchar_opcode, NULL, NULL                     },
1028   {  "strchark", S(STRCHAR_OP),0,  3,  "k",    "SO",
1029      (SUBR) strchar_opcode, (SUBR) strchar_opcode, NULL           },
1030   {  "strlen",   S(STRLEN_OP),0,   1,  "i",    "S",
1031      (SUBR) strlen_opcode, NULL, NULL                      },
1032   {  "strlenk",  S(STRLEN_OP),0,   3,  "k",    "S",
1033      (SUBR) strlen_opcode, (SUBR) strlen_opcode, NULL             },
1034   {  "strupper", S(STRUPPER_OP),0, 1,  "S",    "S",
1035      (SUBR) strupper_opcode, NULL, NULL                    },
1036   {  "strupperk", S(STRUPPER_OP),0, 3, "S",    "S",
1037      (SUBR) strupper_opcode, (SUBR) strupper_opcode, NULL         },
1038   {  "strlower", S(STRUPPER_OP),0, 1,  "S",    "S",
1039      (SUBR) strlower_opcode, NULL, NULL                    },
1040   {  "strlowerk", S(STRUPPER_OP),0, 3, "S",    "S",
1041      (SUBR) strlower_opcode, (SUBR) strlower_opcode, NULL         },
1042   {  "getcfg",   S(GETCFG_OP),0,   1,  "S",    "i",
1043      (SUBR) getcfg_opcode, NULL, NULL                      },
1044   {  "strindex", S(STRINDEX_OP),0, 1,  "i",    "SS",
1045      (SUBR) strindex_opcode, NULL, NULL                    },
1046   {  "strindexk", S(STRINDEX_OP),0, 3, "k",    "SS",
1047      (SUBR) strindex_opcode, (SUBR) strindex_opcode, NULL         },
1048   {  "strrindex", S(STRINDEX_OP),0, 1, "i",    "SS",
1049      (SUBR) strrindex_opcode, NULL, NULL                   },
1050   {  "strrindexk", S(STRINDEX_OP),0, 3, "k",   "SS",
1051      (SUBR) strrindex_opcode, (SUBR) strrindex_opcode, NULL       },
1052   {  "print_type", S(PRINT_TYPE_OP),0, 1, "",   ".",
1053      (SUBR) print_type_opcode, NULL, NULL       },
1054 #ifdef HAVE_CURL
1055   {  "strfromurl", S(STRCPY_OP), 0, 1, "S", "S", (SUBR) str_from_url     },
1056 #endif
1057   {  "changed.S", S(STRCHGD),_QQ, 3, "k",   "S",
1058      (SUBR) str_changed, (SUBR) str_changed_k, NULL       },
1059   {  "changed2.S", S(STRCHGD),0, 3, "k",   "S",
1060      (SUBR) str_changed, (SUBR) str_changed_k, NULL       },
1061   /* { "loop_lt",   0xfffb                                                  }, */
1062   /* { "loop_le",   0xfffb                                                  }, */
1063   /* { "loop_gt",   0xfffb                                                  }, */
1064   /* { "loop_ge",   0xfffb                                                  }, */
1065   { "loop_lt.i", S(LOOP_OPS),0,  1,  "", "iiil", (SUBR) loop_l_i, NULL, NULL   },
1066   { "loop_le.i", S(LOOP_OPS),0,  1,  "", "iiil", (SUBR) loop_le_i, NULL, NULL  },
1067   { "loop_gt.i", S(LOOP_OPS),0,  1,  "", "iiil", (SUBR) loop_g_i, NULL, NULL   },
1068   { "loop_ge.i", S(LOOP_OPS),0,  1,  "", "iiil", (SUBR) loop_ge_i, NULL, NULL  },
1069   { "loop_lt.k", S(LOOP_OPS),0,  2,  "", "kkkl", NULL, (SUBR) loop_l_p, NULL   },
1070   { "loop_le.k", S(LOOP_OPS),0,  2,  "", "kkkl", NULL, (SUBR) loop_le_p, NULL  },
1071   { "loop_gt.k", S(LOOP_OPS),0,  2,  "", "kkkl", NULL, (SUBR) loop_g_p, NULL   },
1072   { "loop_ge.k", S(LOOP_OPS),0,  2,  "", "kkkl", NULL, (SUBR) loop_ge_p, NULL  },
1073   { "chnget",      0xFFFF,    _CR                                             },
1074   { "chnget.i",    S(CHNGET),_CR,           1,      "i",            "S",
1075     (SUBR) chnget_opcode_init_i, NULL, NULL               },
1076   { "chnget.k",    S(CHNGET),_CR,           3,      "k",            "S",
1077     (SUBR) chnget_opcode_init_k, (SUBR) notinit_opcode_stub, NULL },
1078   { "chngeti.i",    S(CHNGET),_CR,           1,      "i[]",            "S[]",
1079     (SUBR) chnget_array_opcode_init_i, NULL, NULL               },
1080   { "chngeta.a",    S(CHNGET),_CR,           3,      "a[]",            "S[]",
1081     (SUBR) chnget_array_opcode_init, (SUBR) notinit_opcode_stub, NULL },
1082   { "chngets.s",    S(CHNGET),_CR,           3,      "S[]",            "S[]",
1083     (SUBR) chnget_array_opcode_init, (SUBR) notinit_opcode_stub, NULL },
1084   { "chngetk.k",    S(CHNGET),_CR,           3,      "k[]",            "S[]",
1085     (SUBR) chnget_array_opcode_init, (SUBR) notinit_opcode_stub, NULL },
1086   { "chnget.a",    S(CHNGET),_CR,           3,      "a",            "S",
1087     (SUBR) chnget_opcode_init_a, (SUBR) notinit_opcode_stub },
1088   { "chnget.S",    S(CHNGET),_CR,           3,      "S",            "S",
1089     (SUBR) chnget_opcode_init_S, (SUBR) chnget_opcode_perf_S, NULL},
1090   { "chngetks",    S(CHNGET),_CR,           2,      "S",            "S",
1091     NULL, (SUBR) chnget_opcode_perf_S, NULL},
1092   //{ "chnset",      0xFFFB,              _CW                               },
1093 
1094   { "chnseti.i",    S(CHNGET),_CW,          1,      "",             "i[]S[]",
1095     (SUBR) chnset_array_opcode_init_i, NULL, NULL               },
1096   { "chnsetk.k",    S(CHNGET),_CW,           3,      "",             "k[]S[]",
1097     (SUBR) chnset_array_opcode_init, (SUBR) notinit_opcode_stub, NULL },
1098   { "chnseta.a",    S(CHNGET),_CW,           3,      "",             "a[]S[]",
1099     (SUBR) chnset_array_opcode_init, (SUBR) notinit_opcode_stub, NULL },
1100   { "chnsets.s",    S(CHNGET),_CW,           3,      "",             "S[]S[]",
1101     (SUBR) chnset_array_opcode_init, (SUBR) notinit_opcode_stub, NULL },
1102 
1103   { "chnset.i",    S(CHNGET),_CW,          1,      "",             "iS",
1104     (SUBR) chnset_opcode_init_i, NULL, NULL               },
1105   //  { "chnset.r",    S(CHNGET),0,           1,      "",             "iS",
1106   //    (SUBR) chnset_opcode_init_i, NULL, NULL               },
1107   //  { "chnset.c",    S(CHNGET),0,           1,      "",             "iS",
1108   //    (SUBR) chnset_opcode_init_i, NULL, NULL               },
1109   { "chnset.k",    S(CHNGET),_CW,           3,      "",             "kS",
1110     (SUBR) chnset_opcode_init_k, (SUBR) notinit_opcode_stub, NULL },
1111   { "chnset.a",    S(CHNGET),_CW,           3,      "",             "aS",
1112     (SUBR) chnset_opcode_init_a, (SUBR) notinit_opcode_stub },
1113   { "chnset.S",    S(CHNGET),_CW,           3,      "",             "SS",
1114     (SUBR) chnset_opcode_init_S, (SUBR) chnset_opcode_perf_S, NULL },
1115   { "chnsetks",    S(CHNGET),_CW,           2,      "",             "SS",
1116     NULL, (SUBR) chnset_opcode_perf_S, NULL },
1117   { "chnmix",      S(CHNGET),           _CB, 3,      "",             "aS",
1118     (SUBR) chnmix_opcode_init, (SUBR) notinit_opcode_stub  },
1119   { "chnclear",    S(CHNCLEAR),        _CW, 3,      "",             "W",
1120     (SUBR) chnclear_opcode_init, (SUBR) notinit_opcode_stub },
1121   { "chn_k",       S(CHN_OPCODE_K),    _CW, 1,      "",             "SiooooooooN",
1122     (SUBR) chn_k_opcode_init, NULL, NULL                  },
1123   { "chn_k",       S(CHN_OPCODE_K),    _CW, 1,      "",             "SSooooooooN",
1124     (SUBR) chn_k_opcode_init_S, NULL, NULL},
1125   { "chn_a",       S(CHN_OPCODE),      _CW, 1,      "",             "Si",
1126     (SUBR) chn_a_opcode_init, NULL, NULL                  },
1127   { "chn_S",       S(CHN_OPCODE),      _CW, 1,      "",             "Si",
1128     (SUBR) chn_S_opcode_init, NULL, NULL                  },
1129   //{ "chnexport",   0xFFFF,  0,    0,   NULL,   NULL, NULL, NULL },
1130   { "chnexport.i", S(CHNEXPORT_OPCODE),0, 1,      "i",            "Sioooo",
1131     (SUBR) chnexport_opcode_init, NULL, NULL              },
1132   { "chnexport.k", S(CHNEXPORT_OPCODE),0, 1,      "k",            "Sioooo",
1133     (SUBR) chnexport_opcode_init, NULL, NULL              },
1134   { "chnexport.a", S(CHNEXPORT_OPCODE),0, 1,      "a",            "Si",
1135     (SUBR) chnexport_opcode_init, NULL, NULL              },
1136   { "chnexport.S", S(CHNEXPORT_OPCODE),0, 1,      "S",            "Si",
1137     (SUBR) chnexport_opcode_init, NULL, NULL              },
1138   { "chnparams",   S(CHNPARAMS_OPCODE),_CR, 1,      "iiiiii",       "S",
1139     (SUBR) chnparams_opcode_init, NULL, NULL              },
1140   /*  these opcodes have never been fully implemented
1141       { "chnrecv",     S(CHNSEND),       _CR, 3,      "",             "So",
1142       (SUBR) chnrecv_opcode_init, (SUBR) notinit_opcode_stub, NULL },
1143       { "chnsend",     S(CHNSEND),0,          3,      "",             "So",
1144       (SUBR) chnsend_opcode_init, (SUBR) notinit_opcode_stub, NULL },
1145   */
1146   //{ "chano",       0xFFFD,  _CW, 0,      NULL, NULL, NULL, NULL },
1147   { "chano.k",     S(ASSIGN),_CW,           2,      "",             "kk",
1148     NULL, (SUBR) chano_opcode_perf_k, NULL                },
1149   { "chano.a",     S(ASSIGN),_CW,           2,      "",             "ak",
1150     NULL, (SUBR) chano_opcode_perf_a                },
1151   { "pvsout",     S(FCHAN),0,           3,      "",             "fk",
1152     (SUBR) pvsout_init, (SUBR) pvsout_perf, NULL                        },
1153   //{ "chani",      0xFFFF,  _CR,      0,   NULL, NULL, NULL, NULL },
1154   { "chani.k",     S(ASSIGN),_CR,           2,      "k",            "k",
1155     NULL, (SUBR) chani_opcode_perf_k, NULL                },
1156   { "chani.a",     S(ASSIGN),_CR,           2,      "a",            "k",
1157     NULL, (SUBR) chani_opcode_perf_a                },
1158   { "pvsin",     S(FCHAN),0,           3,      "f",            "kooopo",
1159     (SUBR)  pvsin_init, (SUBR) pvsin_perf, NULL                  },
1160   { "sense",       S(KSENSE),0,           2,      "kz",           "",
1161     NULL, (SUBR) sensekey_perf, NULL                      },
1162   { "sensekey",    S(KSENSE),0,           2,      "kz",           "",
1163     NULL, (SUBR) sensekey_perf, NULL                      },
1164   { "remove",      S(DELETEIN),0,         1,      "",             "T",
1165     (SUBR) delete_instr, NULL, NULL                       },
1166   //  { "##globallock",   S(GLOBAL_LOCK_UNLOCK),0, 3, "", "i",
1167   //    globallock,   globallock,   NULL},
1168   //  { "##globalunlock", S(GLOBAL_LOCK_UNLOCK),0, 3, "", "i",
1169   //    globalunlock, globalunlock, NULL},
1170   { "##error",S(ERRFN),0, 1,          "i",     "i",   error_fn, NULL,    NULL    },
1171   { "exprandi.i",S(PRANDI),0, 1,      "i",    "kxx",  iexprndi, NULL,    NULL    },
1172   { "exprandi.k",S(PRANDI),0, 3,      "k",    "kxx",  exprndiset, kexprndi, NULL },
1173   { "exprandi.a",S(PRANDI),0, 2,      "a",    "kxx",  exprndiset, aexprndi },
1174   { "cauchyi.i", S(PRANDI),0, 1,      "i",    "kxx",  icauchyi, NULL,    NULL    },
1175   { "cauchyi.k", S(PRANDI),0, 3,      "k",    "kxx",  cauchyiset, kcauchyi, NULL },
1176   { "cauchyi.a", S(PRANDI),0, 2,      "a",    "kxx",  cauchyiset, acauchyi },
1177   { "gaussi.i", S(PRANDI),0, 1,      "i",    "kxx",  igaussi, NULL,    NULL    },
1178   { "gaussi.k", S(PRANDI),0, 3,      "k",    "kxx",  gaussiset, kgaussi, NULL },
1179   { "gaussi.a", S(PRANDI),0, 2,      "a",    "kxx",  gaussiset, agaussi },
1180   { "ftresizei", S(RESIZE), TB, 1, "i", "ii", (SUBR) resize_table, NULL, NULL },
1181   { "ftresize",  S(RESIZE), TB, 2, "k", "kk", NULL, (SUBR) resize_table, NULL },
1182   { "compileorc",  S(COMPILE), 0, 1, "i", "S",  (SUBR) compile_orc_i, NULL, NULL },
1183   { "compilecsd",  S(COMPILE), 0, 1, "i", "S",  (SUBR) compile_csd_i, NULL, NULL },
1184   { "compilestr",  S(COMPILE), 0, 1, "i", "S",  (SUBR) compile_str_i, NULL, NULL },
1185   { "evalstr",  S(COMPILE), 0, 1, "i", "S",  (SUBR) eval_str_i, NULL, NULL },
1186   { "evalstr",  S(COMPILE), 0, 2, "k", "Sk",  NULL, (SUBR) eval_str_k, NULL },
1187   { "readscore",  S(COMPILE), 0, 1, "i", "S",  (SUBR) read_score_i, NULL, NULL },
1188   { "return",  S(RETVAL), 0, 1, "", "i",  (SUBR) retval_i, NULL, NULL },
1189   /* ----------------------------------------------------------------------- */
1190   { "monitor",  sizeof(MONITOR_OPCODE), IB, 3,  "mmmmmmmmmmmmmmmmmmmmmmmm", "",
1191     (SUBR) monitor_opcode_init, (SUBR) notinit_opcode_stub,  NULL },
1192   { "outrg", S(OUTRANGE), IR,3, "", "ky",
1193     (SUBR)outRange_i, (SUBR)outRange},
1194   { "nchnls_hw", S(ASSIGN), 0,1, "ii", "",
1195     (SUBR)hw_channels},
1196    { "midiarp",   S(MIDIARP),0,  3,    "kk", "kO",
1197      midiarp_set, midiarp, NULL },
1198    {"lpcfilter", S(LPCFIL), 0, 3, "a", "akkiiio",
1199    (SUBR) lpfil_init, (SUBR) lpfil_perf},
1200    {"lpcfilter", S(LPCFIL2), 0, 3, "a", "aakkiio",
1201    (SUBR) lpfil2_init, (SUBR) lpfil2_perf},
1202    {"allpole", S(LPCFIL3), 0, 3, "a", "ak[]",
1203    (SUBR) lpfil3_init, (SUBR) lpfil3_perf},
1204    {"lpcanal", S(LPREDA), 0, 3, "k[]kkk", "kkiiio",
1205    (SUBR) lpred_alloc, (SUBR) lpred_run},
1206    {"lpcanal", S(LPREDA2), 0, 3, "k[]kkk", "akkiio",
1207    (SUBR) lpred_alloc2, (SUBR) lpred_run2},
1208    {"lpcanal", S(LPREDA), 0, 1, "i[]iii", "iiii",
1209    (SUBR) lpred_i, NULL},
1210    {"pvslpc", S(LPCPVS), 0, 3, "f", "aiiio",
1211     (SUBR) lpcpvs_init, (SUBR) lpcpvs},
1212    {"pvscfs", S(PVSCFS), 0, 3, "k[]kk", "fip",
1213     (SUBR) pvscoefs_init, (SUBR) pvscoefs},
1214    {"apoleparams", S(CF2P), 0, 3, "k[]", "k[]",
1215     (SUBR) coef2parm_init, (SUBR) coef2parm},
1216    {"resonbnk", S(RESONB), 0, 3, "a", "ak[]kkipoo",
1217    (SUBR) resonbnk_init, (SUBR) resonbnk},
1218   /* terminate list */
1219   {  NULL, 0, 0, 0, NULL, NULL, NULL, NULL, NULL       }
1220 };
1221