[SCM] csound/master: Imported Upstream version 5.15.0~dfsg
fsateler at users.alioth.debian.org
fsateler at users.alioth.debian.org
Wed Dec 28 01:38:57 UTC 2011
The following commit has been merged in the master branch:
commit b77fbe6a79533990fd358fb3255405bbfce027ac
Author: Felipe Sateler <fsateler at debian.org>
Date: Sat Dec 24 17:10:56 2011 -0300
Imported Upstream version 5.15.0~dfsg
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 034ded1..d928977 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -28,6 +28,7 @@ endif()
include(TestBigEndian)
include(CheckFunctionExists)
+include(CheckIncludeFile)
# Utility function to make plugins. All plugin targets should use this as it
# sets up output directory set in top-level CmakeLists.txt
@@ -203,11 +204,12 @@ option(BUILD_UTILITIES "Build stand-alone executables for utilities that can als
option(BUILD_NEW_PARSER "Enable building new parser (requires Flex/Bison)" ON)
option(NEW_PARSER_DEBUG "Enable tracing of new parser" OFF)
-option(BUILD_MULTI_CORE "Enable building for multicore system (requires BUILD_NEW_PARSER)" OFF)
+option(BUILD_MULTI_CORE "Enable building for multicore system (requires BUILD_NEW_PARSER)" ON)
option(FAIL_MISSING "Fail when a required external dependency is not present (useful for packagers)" OFF)
- # Optional targets, they should all default to ON (check_deps will disable them if not possible to build)
+
+# Optional targets, they should all default to ON (check_deps will disable them if not possible to build)
set(BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR})
@@ -277,10 +279,10 @@ set(CMAKE_REQUIRED_LIBRARIES pthread)
# Now, non required library searches #
find_library(VORBISFILE_LIBRARY vorbisfile)
-find_file(USE_GETTEXT libintl.h)
+check_include_file(libintl.h USE_GETTEXT)
find_library(LIBINTL_LIBRARY intl)
-set(HEADERS_TO_CHECK
+set(HEADERS_TO_CHECK
unistd.h io.h fcntl.h stdint.h
sys/time.h sys/types.h termios.h
values.h winsock.h sys/socket.h
@@ -290,7 +292,7 @@ foreach(header ${HEADERS_TO_CHECK})
# Convert to uppercase and replace [./] with _
string(TOUPPER ${header} tmp)
string(REGEX REPLACE [./] "_" upper_header ${tmp})
- find_file(HAVE_${upper_header} ${header})
+ check_include_file(${header} HAVE_${upper_header})
endforeach()
# Flex/Bison for the new parser
@@ -332,6 +334,7 @@ endif()
set(libcsound_SRCS
Engine/auxfd.c
Engine/cfgvar.c
+ Engine/corfiles.c
Engine/entry1.c
Engine/envvar.c
Engine/express.c
@@ -351,6 +354,7 @@ set(libcsound_SRCS
Engine/sort.c
Engine/sread.c
Engine/swrite.c
+ Engine/swritestr.c
Engine/twarp.c
InOut/libsnd.c
InOut/libsnd_u.c
@@ -392,6 +396,59 @@ set(libcsound_SRCS
OOps/ugrw1.c
OOps/ugrw2.c
OOps/vdelay.c
+ Opcodes/babo.c
+ Opcodes/bilbar.c
+ Opcodes/compress.c
+ Opcodes/eqfil.c
+ Opcodes/Vosim.c
+ Opcodes/pitch.c
+ Opcodes/pitch0.c
+ Opcodes/spectra.c
+ Opcodes/ambicode1.c
+ Opcodes/sfont.c
+ Opcodes/grain4.c
+ Opcodes/hrtferX.c
+ Opcodes/loscilx.c
+ Opcodes/minmax.c
+ Opcodes/pan2.c
+ Opcodes/tabvars.c
+ Opcodes/phisem.c
+ Opcodes/hrtfopcodes.c
+ Opcodes/stackops.c
+ Opcodes/vbap.c
+ Opcodes/vbap_eight.c
+ Opcodes/vbap_four.c
+ Opcodes/vbap_sixteen.c
+ Opcodes/vbap_zak.c
+ Opcodes/vaops.c
+ Opcodes/ugakbari.c
+ Opcodes/harmon.c
+ Opcodes/pitchtrack.c
+ Opcodes/partikkel.c
+ Opcodes/shape.c
+ Opcodes/tabsum.c
+ Opcodes/crossfm.c
+ Opcodes/pvlock.c
+ Opcodes/fareyseq.c
+ Opcodes/modmatrix.c
+ Opcodes/scoreline.c
+ Opcodes/modal4.c
+ Opcodes/physutil.c
+ Opcodes/physmod.c
+ Opcodes/mandolin.c
+ Opcodes/singwave.c
+ Opcodes/fm4op.c
+ Opcodes/moog1.c
+ Opcodes/shaker.c
+ Opcodes/bowedbar.c
+ Opcodes/gab/tabmorph.c
+ Opcodes/gab/hvs.c
+ Opcodes/gab/sliderTable.c
+ Opcodes/gab/newgabopc.c
+ Opcodes/ftest.c
+ Opcodes/hrtfearly.c
+ Opcodes/hrtfreverb.c
+ Opcodes/cpumeter.c
Top/argdecode.c
Top/cscore_internal.c
Top/cscorfns.c
@@ -405,6 +462,75 @@ set(libcsound_SRCS
Top/threads.c
Top/utility.c)
+set(stdopcod_SRCS
+ Opcodes/ambicode.c
+ Opcodes/bbcut.c
+ Opcodes/biquad.c
+ Opcodes/butter.c
+ Opcodes/clfilt.c
+ Opcodes/cross2.c
+ Opcodes/dam.c
+ Opcodes/dcblockr.c
+ Opcodes/filter.c
+ Opcodes/flanger.c
+ Opcodes/follow.c
+ Opcodes/fout.c
+ Opcodes/freeverb.c
+ Opcodes/ftconv.c
+ Opcodes/ftgen.c
+ Opcodes/gab/gab.c
+ Opcodes/gab/vectorial.c
+ Opcodes/grain.c
+ Opcodes/locsig.c
+ Opcodes/lowpassr.c
+ Opcodes/metro.c
+ Opcodes/midiops2.c
+ Opcodes/midiops3.c
+ Opcodes/newfils.c
+ Opcodes/nlfilt.c
+ Opcodes/oscbnk.c
+ Opcodes/pluck.c
+ Opcodes/repluck.c
+ Opcodes/reverbsc.c
+ Opcodes/seqtime.c
+ Opcodes/sndloop.c
+ Opcodes/sndwarp.c
+ Opcodes/space.c
+ Opcodes/spat3d.c
+ Opcodes/syncgrain.c
+ Opcodes/ugens7.c
+ Opcodes/ugens9.c
+ Opcodes/ugensa.c
+ Opcodes/uggab.c
+ Opcodes/ugmoss.c
+ Opcodes/ugnorman.c
+ Opcodes/ugsc.c
+ Opcodes/wave-terrain.c
+ Opcodes/stdopcod.c)
+
+set(cs_pvs_ops_SRCS
+ Opcodes/ifd.c
+ Opcodes/partials.c
+ Opcodes/psynth.c
+ Opcodes/pvsbasic.c
+ Opcodes/pvscent.c
+ Opcodes/pvsdemix.c
+ Opcodes/pvs_ops.c
+ Opcodes/pvsband.c
+ Opcodes/pvsbuffer.c)
+
+set(oldpvoc_SRCS
+ Opcodes/dsputil.c
+ Opcodes/pvadd.c
+ Opcodes/pvinterp.c
+ Opcodes/pvocext.c
+ Opcodes/pvread.c
+ Opcodes/ugens8.c
+ Opcodes/vpvoc.c
+ Opcodes/pvoc.c)
+
+list(APPEND libcsound_SRCS ${stdopcod_SRCS} ${cs_pvs_ops_SRCS} ${oldpvoc_SRCS})
+
# Handling New Parser
check_deps(BUILD_NEW_PARSER FLEX_EXECUTABLE BISON_EXECUTABLE)
@@ -477,6 +603,8 @@ else()
set(CSOUNDLIB "csound")
endif()
+set(CSOUNDLIB_STATIC "${CSOUNDLIB}-static")
+
add_library(${CSOUNDLIB} SHARED ${libcsound_SRCS})
set_target_properties(${CSOUNDLIB} PROPERTIES
# Do not pull extra libs when linking against shared libcsound
@@ -553,6 +681,15 @@ endif()
if(HAVE_TERMIOS_H)
list(APPEND libcsound_CFLAGS -DHAVE_TERMIOS_H)
endif()
+if(HAVE_VALUES_H)
+ list(APPEND libcsound_CFLAGS -DHAVE_VALUES_H)
+endif()
+#if(CMAKE_C_COMPILER MATCHES "gcc")
+# list(APPEND libcsound_CFLAGS -fno-strict-aliasing)
+#endif()
+if(BIG_ENDIAN)
+ list(APPEND libcsound_CFLAGS -DWORDS_BIGENDIAN)
+endif()
expand_list(expanded_libcsound_CFLAGS ${libcsound_CFLAGS})
set_property(
@@ -566,6 +703,26 @@ set_target_properties(${CSOUNDLIB} PROPERTIES
LIBRARY_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
ARCHIVE_OUTPUT_DIRECTORY ${BUILD_LIB_DIR})
+
+add_library(${CSOUNDLIB_STATIC} STATIC ${libcsound_SRCS})
+SET_TARGET_PROPERTIES(${CSOUNDLIB_STATIC} PROPERTIES OUTPUT_NAME ${CSOUNDLIB})
+SET_TARGET_PROPERTIES(${CSOUNDLIB_STATIC} PROPERTIES PREFIX "lib")
+set_property(
+ TARGET ${CSOUNDLIB_STATIC}
+ PROPERTY COMPILE_FLAGS "${expanded_libcsound_CFLAGS}")
+
+target_link_libraries(${CSOUNDLIB_STATIC} ${libcsound_LIBS})
+
+set_target_properties(${CSOUNDLIB_STATIC} PROPERTIES
+ RUNTIME_OUTPUT_DIRECTORY ${BUILD_BIN_DIR}
+ LIBRARY_OUTPUT_DIRECTORY ${BUILD_LIB_DIR}
+ ARCHIVE_OUTPUT_DIRECTORY ${BUILD_LIB_DIR})
+
+# Add the install target
+install(TARGETS ${CSOUNDLIB_STATIC}
+ LIBRARY DESTINATION "${LIBRARY_INSTALL_DIR}"
+ ARCHIVE DESTINATION "${LIBRARY_INSTALL_DIR}")
+
option(BUILD_CATALOG "Build the opcode/library catalog" OFF)
check_deps(BUILD_CATALOG)
if(BUILD_CATALOG)
diff --git a/ChangeLog b/ChangeLog
index 251f90d..ba624f6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,21 @@
+2011-11-30 john ffitch <jpff at codemist.co.uk>
+
+ * Opcodes/pitch.c (impulse): If next is negative time, make it
+ absolute value
+
+2011-10-28 john ffitch <jpff at codemist.co.uk>
+
+ * Opcodes/socksend.c (send_send, send_sendS): Added optional
+ format message as INT16_LE and remove MTFU check
+
+2011-10-14 John ff <jpff at cs.bath.ac.uk>
+
+ * Opcodes/tabvars.c (ftab2tab):
+ (tab2ftab): New opcodes
+
+2011-10-12 John ff
+ * VERSION 5.14
+
2011-06-21 john ffitch <jpff at codemist.co.uk>
* Opcodes/wiimote.c (wii_data_init): Return value missing
diff --git a/Engine/auxfd.c b/Engine/auxfd.c
index 53b0197..e5dd419 100644
--- a/Engine/auxfd.c
+++ b/Engine/auxfd.c
@@ -104,7 +104,7 @@ void auxchfree(CSOUND *csound, INSDS *ip)
{
if (UNLIKELY(csound->oparms->odebug))
auxchprint(csound, ip);
- while (LIKELY(ip->auxchp != NULL)) { /* for all auxp's in chain: */
+ while (LIKELY(ip->auxchp != NULL)) { /* for all auxp's in chain: */
void *auxp = (void*) ip->auxchp->auxp;
AUXCH *nxt = ip->auxchp->nxtchp;
memset((void*) ip->auxchp, 0, sizeof(AUXCH)); /* delete the pntr */
@@ -146,7 +146,8 @@ static CS_NOINLINE void auxchprint(CSOUND *csound, INSDS *ip)
csound->Message(csound, Str("auxlist for instr %s [%d] (%p):\n"),
name, ip->insno, ip);
else
- csound->Message(csound, Str("auxlist for instr %d (%p):\n"), ip->insno, ip);
+ csound->Message(csound, Str("auxlist for instr %d (%p):\n"),
+ ip->insno, ip);
/* chain through auxlocs */
for (curchp = ip->auxchp; curchp != NULL; curchp = curchp->nxtchp)
csound->Message(csound,
diff --git a/Engine/corfiles.c b/Engine/corfiles.c
new file mode 100644
index 0000000..f489142
--- /dev/null
+++ b/Engine/corfiles.c
@@ -0,0 +1,190 @@
+/*
+ corfiles.c:
+
+ Copyright (C) 2011 John ffitch
+
+ This file is part of Csound.
+
+ The Csound Library is free software; you can redistribute it
+ and/or modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ Csound is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with Csound; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA
+*/
+
+#include "csoundCore.h" /* CORFILES.C */
+#include <string.h>
+#include <stdio.h>
+
+extern int csoundFileClose(CSOUND*, void*);
+
+CORFIL *corfile_create_w(void)
+{
+ CORFIL *ans = (CORFIL*)malloc(sizeof(CORFIL));
+ ans->body = (char*)calloc(100,1);
+ ans->len = 100;
+ ans->p = 0;
+ return ans;
+}
+
+CORFIL *corfile_create_r(const char *text)
+{
+ char *strdup(const char *);
+ CORFIL *ans = (CORFIL*)malloc(sizeof(CORFIL));
+ ans->body = strdup(text);
+ ans->len = strlen(text)+1;
+ ans->p = 0;
+ return ans;
+}
+
+void corfile_putc(int c, CORFIL *f)
+{
+ if (f->p+1 >= f->len)
+ f->body = (char*) realloc(f->body, f->len+=100);
+ f->body[f->p] = c;
+ f->body[++f->p] = '\0';
+}
+
+void corfile_puts(char *s, CORFIL *f)
+{
+ int slen = strlen(s);
+ while (f->p+slen+1>=f->len)
+ f->body = (char*) realloc(f->body, f->len+=100);
+ strcat(f->body, s);
+ f->p += slen;
+}
+
+void corfile_flush(CORFIL *f)
+{
+ f->len = strlen(f->body)+1;
+ f->body = (char*)realloc(f->body, f->len);
+ f->p = 0;
+}
+
+#undef corfile_length
+int corfile_length(CORFIL *f)
+{
+ return strlen(f->body);
+}
+
+void corfile_rm(CORFIL **ff)
+{
+ CORFIL *f = *ff;
+ if (f!=NULL) {
+ free(f->body);
+ free(f);
+ *ff = NULL;
+ }
+}
+
+int corfile_getc(CORFIL *f)
+{
+ int c = f->body[f->p];
+ if (c=='\0') return EOF;
+ f->p++;
+ return c;
+}
+
+#undef corfile_ungetc
+void corfile_ungetc(CORFIL *f)
+{
+ --f->p;
+}
+
+MYFLT corfile_get_flt(CORFIL *f)
+{
+ int n;
+ MYFLT ans;
+#ifdef USE_DOUBLE
+ sscanf(&f->body[f->p], "%lf%n", &ans, &n);
+#else
+ sscanf(&f->body[f->p], "%f%n", &ans, &n);
+#endif
+ f->p += n;
+ return ans;
+}
+
+#undef corfile_rewind
+void corfile_rewind(CORFIL *f)
+{
+ f->p = 0;
+}
+
+#undef corfile_reset
+void corfile_reset(CORFIL *f)
+{
+ f->p = 0;
+ f->body[0] = '\0';
+}
+
+#undef corfile_tell
+int corfile_tell(CORFIL *f)
+{
+ return f->p;
+}
+
+#undef corfile_set
+void corfile_set(CORFIL *f, int n)
+{
+ f->p = n;
+}
+
+void corfile_seek(CORFIL *f, int n, int dir)
+{
+ if (dir == SEEK_SET) f->p = n;
+ else if (dir == SEEK_CUR) f->p += n;
+ else if (dir == SEEK_END) f->p = strlen(f->body)-n;
+ if (f->p < 0 || f->p > strlen(f->body)) {
+ printf("INTERNAL ERROR: Corfile seek out of range\n");
+ exit(1);
+ }
+}
+
+
+#undef corfile_body
+char *corfile_body(CORFIL *f)
+{
+ return f->body;
+}
+
+#undef corfile_current
+char *corfile_current(CORFIL *f)
+{
+ return f->body+f->p;
+}
+
+/* *** THIS NEEDS TO TAKE ACCOUNT OF SEARCH PATH *** */
+void *fopen_path(CSOUND *csound, FILE **fp, char *name, char *basename,
+ char *env, int fromScore);
+CORFIL *copy_to_corefile(CSOUND *csound, char *fname, char *env, int fromScore)
+{
+ CORFIL *mm;
+ FILE *ff;
+ void *fd;
+ int n;
+ char buffer[1024];
+
+ fd = fopen_path(csound, &ff, fname, NULL, env, fromScore);
+ if (ff==NULL) return NULL;
+ mm = corfile_create_w();
+ memset(buffer, '\0', 1024);
+ while ((n = fread(buffer, 1, 1023, ff))) {
+ corfile_puts(buffer, mm);
+ memset(buffer, '\0', 1024);
+ }
+ corfile_putc('\0', mm); /* For use in bison/flex */
+ corfile_putc('\0', mm); /* For use in bison/flex */
+ corfile_flush(mm);
+ csoundFileClose(csound, fd);
+ return mm;
+}
+
diff --git a/Engine/cs_par_base.c b/Engine/cs_par_base.c
index 4915156..9a1d7d6 100644
--- a/Engine/cs_par_base.c
+++ b/Engine/cs_par_base.c
@@ -54,7 +54,7 @@ int csp_thread_index_get(CSOUND *csound)
}
-/* ************ An implementation of Barriers for MAC that lacks them ******** */
+/* **** An implementation of Barriers for MAC that lacks them **** */
#ifdef __MACH__
/*#define BARRIER_SERIAL_THREAD (-1)
@@ -194,7 +194,8 @@ void csp_barrier_dealloc(CSOUND *csound, pthread_barrier_t **barrier)
//
//void csp_semaphore_wait(CSOUND *csound, sem_t *sem)
//{
-// if (UNLIKELY(sem == NULL)) csound->Die(csound, "Invalid NULL Parameter sem");
+// if (UNLIKELY(sem == NULL))
+// csound->Die(csound, "Invalid NULL Parameter sem");
//
// TRACE_1("[%i] wait:\n", csp_thread_index_get(csound));
// {
@@ -214,10 +215,12 @@ void csp_barrier_dealloc(CSOUND *csound, pthread_barrier_t **barrier)
//{
// /* int val, res; */
// /* res = sem_getvalue(sem, &val); */
-// /* fprintf(stdout, "before sem_grow: %d %i\t", val, csp_thread_index_get(csound)); */
+// /* fprintf(stdout, "before sem_grow: %d %i\t",
+// val, csp_thread_index_get(csound)); */
// sem_post(sem);
// /* res = sem_getvalue(sem, &val); */
-// /* fprintf(stdout, "after sem_grow: %d %i\n", val, csp_thread_index_get(csound)); */
+// /* fprintf(stdout, "after sem_grow: %d %i\n",
+// val, csp_thread_index_get(csound)); */
//}
//
//void csp_semaphore_release(CSOUND *csound, sem_t *sem)
@@ -246,7 +249,8 @@ void csp_barrier_dealloc(CSOUND *csound, pthread_barrier_t **barrier)
//void csp_semaphore_release_print(CSOUND *csound, sem_t *sem)
//{
// int val, res;
-// if (UNLIKELY(sem == NULL)) csound->Die(csound, "Invalid NULL Parameter sem");
+// if (UNLIKELY(sem == NULL))
+// csound->Die(csound, "Invalid NULL Parameter sem");
// res = sem_getvalue(sem, &val);
// fprintf(stdout, "sem_release_print: %d %p\n",
// val, csp_thread_index_get(csound));
@@ -260,18 +264,24 @@ void csp_barrier_dealloc(CSOUND *csound, pthread_barrier_t **barrier)
#pragma mark Set
/* static prototypes */
-static int set_element_delloc(CSOUND *csound, struct set_element_t **set_element);
+static int set_element_delloc(CSOUND *csound,
+ struct set_element_t **set_element);
static int set_element_alloc(CSOUND *csound,
- struct set_element_t **set_element, char *data);
+ struct set_element_t **set_element,
+ char *data);
static int set_is_set(CSOUND *csound, struct set_t *set);
-static int set_element_is_set_element(CSOUND *csound,
- struct set_element_t *set_element);
+#if 0
+static int
+ set_element_is_set_element(CSOUND *csound,
+ struct set_element_t *set_element);
+#endif
int csp_set_alloc(CSOUND *csound, struct set_t **set,
set_element_data_eq *ele_eq_func,
set_element_data_print *ele_print_func)
{
- if (UNLIKELY(set == NULL)) csound->Die(csound, "Invalid NULL Parameter set");
+ if (UNLIKELY(set == NULL))
+ csound->Die(csound, "Invalid NULL Parameter set");
*set = csound->Malloc(csound, sizeof(struct set_t));
if (UNLIKELY(*set == NULL)) {
@@ -288,7 +298,7 @@ int csp_set_alloc(CSOUND *csound, struct set_t **set,
int csp_set_dealloc(CSOUND *csound, struct set_t **set)
{
- struct set_element_t *ele, *next = NULL;
+ struct set_element_t *ele;
if (UNLIKELY(set == NULL || *set == NULL))
csound->Die(csound, "Invalid NULL Parameter set");
if (UNLIKELY(!set_is_set(csound, *set)))
@@ -298,8 +308,9 @@ int csp_set_dealloc(CSOUND *csound, struct set_t **set)
ele = (*set)->head;
while (ele != NULL) {
- next = ele->next;
+ struct set_element_t *next = ele->next;
set_element_delloc(csound, &ele);
+ ele = next;
}
csound->Free(csound, *set);
@@ -309,7 +320,8 @@ int csp_set_dealloc(CSOUND *csound, struct set_t **set)
}
static int set_element_alloc(CSOUND *csound,
- struct set_element_t **set_element, char *data)
+ struct set_element_t **set_element,
+ char *data)
{
if (UNLIKELY(set_element == NULL || data == NULL))
csound->Die(csound, "Invalid NULL Parameter data");
@@ -325,7 +337,8 @@ static int set_element_alloc(CSOUND *csound,
return CSOUND_SUCCESS;
}
-static int set_element_delloc(CSOUND *csound, struct set_element_t **set_element)
+static int set_element_delloc(CSOUND *csound,
+ struct set_element_t **set_element)
{
if (UNLIKELY(set_element == NULL || *set_element == NULL))
csound->Die(csound, "Invalid NULL Parameter set_element");
@@ -344,8 +357,10 @@ static int set_is_set(CSOUND *csound, struct set_t *set)
return strcmp(buf, SET_HDR) == 0;
}
-static int set_element_is_set_element(CSOUND *csound,
- struct set_element_t *set_element)
+#if 0
+static int
+ set_element_is_set_element(CSOUND *csound,
+ struct set_element_t *set_element)
{
char buf[4];
if (set_element == NULL) return 0;
@@ -353,11 +368,13 @@ static int set_element_is_set_element(CSOUND *csound,
buf[3] = 0;
return strcmp(buf, SET_ELEMENT_HDR) == 0;
}
+#endif
int csp_set_alloc_string(CSOUND *csound, struct set_t **set)
{
return csp_set_alloc(csound, set,
- csp_set_element_string_eq, csp_set_element_string_print);
+ csp_set_element_string_eq,
+ csp_set_element_string_print);
}
int csp_set_element_string_eq(struct set_element_t *ele1,
@@ -366,17 +383,20 @@ int csp_set_element_string_eq(struct set_element_t *ele1,
return strcmp((char *)ele1->data, (char *)ele2->data) == 0;
}
-int csp_set_element_ptr_eq(struct set_element_t *ele1, struct set_element_t *ele2)
+int csp_set_element_ptr_eq(struct set_element_t *ele1,
+ struct set_element_t *ele2)
{
return (ele1->data == ele2->data);
}
-void csp_set_element_string_print(CSOUND *csound, struct set_element_t *ele)
+void csp_set_element_string_print(CSOUND *csound,
+ struct set_element_t *ele)
{
csound->Message(csound, "%s", (char *)ele->data);
}
-void csp_set_element_ptr_print(CSOUND *csound, struct set_element_t *ele)
+void csp_set_element_ptr_print(CSOUND *csound,
+ struct set_element_t *ele)
{
csound->Message(csound, "%p", ele->data);
}
@@ -390,8 +410,9 @@ static int set_update_cache(CSOUND *csound, struct set_t *set)
if (set->count > 0) {
struct set_element_t *ele;
int ctr = 0;
- set->cache = csound->Malloc(csound,
- sizeof(struct set_element_t *) * set->count);
+ set->cache =
+ csound->Malloc(csound,
+ sizeof(struct set_element_t *) * set->count);
ele = set->head;
while (ele != NULL) {
set->cache[ctr] = ele;
@@ -403,15 +424,18 @@ static int set_update_cache(CSOUND *csound, struct set_t *set)
}
/*
- * if out_set_element is not NULL and the element corresponding to data is not found
- * it will not be changed
+ * if out_set_element is not NULL and the element corresponding to
+ * data is not found it will not be changed
*/
static int set_element_get(CSOUND *csound, struct set_t *set,
- char *data, struct set_element_t **out_set_element)
+ char *data,
+ struct set_element_t **out_set_element)
{
#ifdef SET_DEBUG
- if (UNLIKELY(set == NULL)) csound->Die(csound, "Invalid NULL Parameter set");
- if (UNLIKELY(data == NULL)) csound->Die(csound, "Invalid NULL Parameter data");
+ if (UNLIKELY(set == NULL))
+ csound->Die(csound, "Invalid NULL Parameter set");
+ if (UNLIKELY(data == NULL))
+ csound->Die(csound, "Invalid NULL Parameter data");
if (UNLIKELY(out_set_element == NULL))
csound->Die(csound, "Invalid NULL Parameter out_set_element");
#endif
@@ -433,8 +457,10 @@ int csp_set_add(CSOUND *csound, struct set_t *set, void *data)
{
struct set_element_t *ele = NULL;
#ifdef SET_DEBUG
- if (UNLIKELY(set == NULL)) csound->Die(csound, "Invalid NULL Parameter set");
- if (UNLIKELY(data == NULL)) csound->Die(csound, "Invalid NULL Parameter data");
+ if (UNLIKELY(set == NULL))
+ csound->Die(csound, "Invalid NULL Parameter set");
+ if (UNLIKELY(data == NULL))
+ csound->Die(csound, "Invalid NULL Parameter data");
#endif
if (csp_set_exists(csound, set, data)) {
@@ -460,8 +486,10 @@ int csp_set_add(CSOUND *csound, struct set_t *set, void *data)
int csp_set_remove(CSOUND *csound, struct set_t *set, void *data)
{
#ifdef SET_DEBUG
- if (UNLIKELY(set == NULL)) csound->Die(csound, "Invalid NULL Parameter set");
- if (UNLIKELY(data == NULL)) csound->Die(csound, "Invalid NULL Parameter data");
+ if (UNLIKELY(set == NULL))
+ csound->Die(csound, "Invalid NULL Parameter set");
+ if (UNLIKELY(data == NULL))
+ csound->Die(csound, "Invalid NULL Parameter data");
#endif
{
struct set_element_t *ele = set->head, *prev = NULL;
@@ -495,10 +523,11 @@ int csp_set_exists(CSOUND *csound, struct set_t *set, void *data)
{
struct set_element_t *ele = NULL;
#ifdef SET_DEBUG
- if (UNLIKELY(set == NULL)) csound->Die(csound, "Invalid NULL Parameter set");
- if (UNLIKELY(data == NULL)) csound->Die(csound, "Invalid NULL Parameter data");
+ if (UNLIKELY(set == NULL))
+ csound->Die(csound, "Invalid NULL Parameter set");
+ if (UNLIKELY(data == NULL))
+ csound->Die(csound, "Invalid NULL Parameter data");
#endif
-
set_element_get(csound, set, data, &ele);
return (ele == NULL ? 0 : 1);
@@ -508,7 +537,8 @@ int csp_set_print(CSOUND *csound, struct set_t *set)
{
struct set_element_t *ele;
#ifdef SET_DEBUG
- if (UNLIKELY(set == NULL)) csound->Die(csound, "Invalid NULL Parameter set");
+ if (UNLIKELY(set == NULL))
+ csound->Die(csound, "Invalid NULL Parameter set");
if (UNLIKELY(!set_is_set(csound, set)))
csound->Die(csound, "Invalid Parameter set not a set");
#endif
@@ -532,7 +562,8 @@ int csp_set_print(CSOUND *csound, struct set_t *set)
int inline csp_set_count(CSOUND *csound, struct set_t *set)
{
#ifdef SET_DEBUG
- if (UNLIKELY(set == NULL)) csound->Die(csound, "Invalid NULL Parameter set");
+ if (UNLIKELY(set == NULL))
+ csound->Die(csound, "Invalid NULL Parameter set");
if (UNLIKELY(!set_is_set(csound, set)))
csound->Die(csound, "Invalid Parameter set not a set");
#endif
@@ -541,15 +572,18 @@ int inline csp_set_count(CSOUND *csound, struct set_t *set)
}
/* 0 indexed */
-int inline csp_set_get_num(CSOUND *csound, struct set_t *set, int num, void **data)
+int inline csp_set_get_num(CSOUND *csound,
+ struct set_t *set, int num, void **data)
{
#ifdef SET_DEBUG
- if (UNLIKELY(set == NULL)) csound->Die(csound, "Invalid NULL Parameter set");
+ if (UNLIKELY(set == NULL))
+ csound->Die(csound, "Invalid NULL Parameter set");
if (UNLIKELY(!set_is_set(csound, set)))
csound->Die(csound, "Invalid Parameter set not a set");
if (UNLIKELY(um >= set->count))
csound->Die(csound, "Invalid Parameter num is out of bounds");
- if (UNLIKELY(data == NULL)) csound->Die(csound, "Invalid NULL Parameter data");
+ if (UNLIKELY(data == NULL))
+ csound->Die(csound, "Invalid NULL Parameter data");
#endif
*data = set->cache[num]->data;
@@ -590,10 +624,12 @@ int csp_set_union(CSOUND *csound, struct set_t *first,
if (UNLIKELY(result == NULL))
csound->Die(csound, "Invalid NULL Parameter result");
if (UNLIKELY(first->ele_eq_func != second->ele_eq_func))
- csound->Die(csound, "Invalid sets for comparison (different equality)");
+ csound->Die(csound,
+ "Invalid sets for comparison (different equality)");
#endif
- csp_set_alloc(csound, result, first->ele_eq_func, first->ele_print_func);
+ csp_set_alloc(csound, result,
+ first->ele_eq_func, first->ele_print_func);
first_len = csp_set_count(csound, first);
second_len = csp_set_count(csound, second);
@@ -623,21 +659,22 @@ int csp_set_intersection(CSOUND *csound, struct set_t *first,
int first_len;
#ifdef SET_DEBUG
if (UNLIKELY(first == NULL))
- csound->Die(csound, "Invalid NULL Parameter first");
+ csound->Die(csound, "Invalid NULL Parameter first");
if (UNLIKELY(!set_is_set(csound, first)))
csound->Die(csound, "Invalid Parameter set not a first");
if (UNLIKELY(second == NULL))
- csound->Die(csound, "Invalid NULL Parameter second");
+ csound->Die(csound, "Invalid NULL Parameter second");
if (UNLIKELY(!set_is_set(csound, second)))
csound->Die(csound, "Invalid Parameter set not a second");
if (UNLIKELY(result == NULL))
- csound->Die(csound, "Invalid NULL Parameter result");
+ csound->Die(csound, "Invalid NULL Parameter result");
if (UNLIKELY(first->ele_eq_func != second->ele_eq_func))
-
- csound->Die(csound, "Invalid sets for comparison (different equality)");
+ csound->Die(csound,
+ "Invalid sets for comparison (different equality)");
#endif
- csp_set_alloc(csound, result, first->ele_eq_func, first->ele_print_func);
+ csp_set_alloc(csound, result,
+ first->ele_eq_func, first->ele_print_func);
first_len = csp_set_count(csound, first);
diff --git a/Engine/cs_par_dispatch.c b/Engine/cs_par_dispatch.c
index 4058c7d..2b35dc6 100644
--- a/Engine/cs_par_dispatch.c
+++ b/Engine/cs_par_dispatch.c
@@ -32,6 +32,7 @@
#include "cs_par_dispatch.h"
#include "cs_par_ops.h"
+#include "cs_par_structs.h"
/***********************************************************************
* external prototypes not in headers
@@ -102,40 +103,43 @@ struct global_var_lock_t {
struct global_var_lock_t *next;
};
-static struct global_var_lock_t *global_var_lock_root;
-static int global_var_lock_count;
-static struct global_var_lock_t **global_var_lock_cache;
+//static struct global_var_lock_t *global_var_lock_root;
+//static int global_var_lock_count;
+//static struct global_var_lock_t **global_var_lock_cache;
void inline csp_locks_lock(CSOUND * csound, int global_index)
{
- if (UNLIKELY(global_index >= global_var_lock_count)) {
- csound->Die(csound, Str("Poorly specified global lock index: %i [max: %i]\n"),
- global_index, global_var_lock_count);
+ if (UNLIKELY(global_index >= csound->global_var_lock_count)) {
+ csound->Die(csound,
+ Str("Poorly specified global lock index: %i [max: %i]\n"),
+ global_index, csound->global_var_lock_count);
}
TRACE_2("Locking: %i [%p %s]\n", global_index,
- global_var_lock_cache[global_index],
- global_var_lock_cache[global_index]->name);
- TAKE_LOCK(&(global_var_lock_cache[global_index]->lock));
+ csound->global_var_lock_cache[global_index],
+ csound->global_var_lock_cache[global_index]->name);
+ TAKE_LOCK(&(csound->global_var_lock_cache[global_index]->lock));
}
void inline csp_locks_unlock(CSOUND * csound, int global_index)
{
- if (UNLIKELY(global_index >= global_var_lock_count)) {
- csound->Die(csound, Str("Poorly specified global lock index: %i [max: %i]\n"),
- global_index, global_var_lock_count);
+ if (UNLIKELY(global_index >= csound->global_var_lock_count)) {
+ csound->Die(csound,
+ Str("Poorly specified global lock index: %i [max: %i]\n"),
+ global_index, csound->global_var_lock_count);
}
- RELS_LOCK(&(global_var_lock_cache[global_index]->lock));
+ RELS_LOCK(&(csound->global_var_lock_cache[global_index]->lock));
TRACE_2("UnLocking: %i [%p %s]\n",
- global_index, global_var_lock_cache[global_index],
- global_var_lock_cache[global_index]->name);
+ global_index, csound->global_var_lock_cache[global_index],
+ csound->global_var_lock_cache[global_index]->name);
}
static struct global_var_lock_t *global_var_lock_alloc(CSOUND *csound,
char *name, int index)
{
if (UNLIKELY(name == NULL))
- csound->Die(csound, Str("Invalid NULL parameter name for a global variable\n"));
+ csound->Die(csound,
+ Str("Invalid NULL parameter name for a global variable\n"));
struct global_var_lock_t *ret =
csound->Malloc(csound, sizeof(struct global_var_lock_t));
@@ -145,23 +149,25 @@ static struct global_var_lock_t *global_var_lock_alloc(CSOUND *csound,
ret->name = name;
ret->index = index;
- global_var_lock_count++;
+ csound->global_var_lock_count++;
return ret;
}
-static struct global_var_lock_t *global_var_lock_find(CSOUND *csound, char *name)
+static struct global_var_lock_t
+ *global_var_lock_find(CSOUND *csound, char *name)
{
if (UNLIKELY(name == NULL))
csound->Die(csound,
Str("Invalid NULL parameter name for a global variable\n"));
- if (global_var_lock_root == NULL) {
- global_var_lock_root = global_var_lock_alloc(csound, name, 0);
- return global_var_lock_root;
+ if (csound->global_var_lock_root == NULL) {
+ csound->global_var_lock_root = global_var_lock_alloc(csound, name, 0);
+ return csound->global_var_lock_root;
}
else {
- struct global_var_lock_t *current = global_var_lock_root, *previous = NULL;
+ struct global_var_lock_t *current = csound->global_var_lock_root,
+ *previous = NULL;
int ctr = 0;
while (current != NULL) {
if (strcmp(current->name, name) == 0) {
@@ -184,17 +190,18 @@ static struct global_var_lock_t *global_var_lock_find(CSOUND *csound, char *name
/* static void locks_print(CSOUND *csound)
{
csound->Message(csound, Str("Current Global Locks\n"));
- struct global_var_lock_t *current_global = global_var_lock_root;
- while (current_global != NULL) {
- csound->Message(csound, "[%i] %s [%p]\n", current_global->index,
- current_global->name, current_global);
- current_global = current_global->next;
+ struct global_var_lock_t *cg = csound->global_var_lock_root;
+ while (cg != NULL) {
+ csound->Message(csound, "[%i] %s [%p]\n", cg->index,
+ cg->name, cg);
+ cg = cg->next;
}
} */
TREE *csp_locks_insert(CSOUND *csound, TREE *root)
{
- csound->Message(csound, "Inserting Parallelism Constructs into AST\n");
+ csound->Message(csound,
+ "Inserting Parallelism Constructs into AST\n");
TREE *anchor = NULL;
@@ -204,8 +211,9 @@ TREE *csp_locks_insert(CSOUND *csound, TREE *root)
while(current != NULL) {
switch(current->type) {
- case T_INSTR:
- instr = csp_orc_sa_instr_get_by_name(current->left->value->lexeme);
+ case INSTR_TOKEN:
+ instr = csp_orc_sa_instr_get_by_name(csound,
+ current->left->value->lexeme);
if (instr->read_write->count > 0 &&
instr->read->count == 0 &&
instr->write->count == 0) {
@@ -213,12 +221,12 @@ TREE *csp_locks_insert(CSOUND *csound, TREE *root)
}
break;
- case T_UDO:
- case T_IF:
+ case UDO_TOKEN:
+ case IF_TOKEN:
break;
default:
- if (current->type == S_ASSIGN) {
+ if (current->type == '=') {
struct set_t *left = NULL, *right = NULL;
left = csp_orc_sa_globals_find(csound, current->left);
right = csp_orc_sa_globals_find(csound, current->right);
@@ -243,10 +251,10 @@ TREE *csp_locks_insert(CSOUND *csound, TREE *root)
ORCTOKEN *unlock_tok = lookup_token(csound, "##globalunlock");
ORCTOKEN *var_tok = make_int(csound, buf);
- TREE *lock_leaf = make_leaf(csound, T_OPCODE, lock_tok);
- lock_leaf->right = make_leaf(csound, T_INTGR, var_tok);
- TREE *unlock_leaf = make_leaf(csound, T_OPCODE, unlock_tok);
- unlock_leaf->right = make_leaf(csound, T_INTGR, var_tok);
+ TREE *lock_leaf = make_leaf(csound, current->line, T_OPCODE, lock_tok);
+ lock_leaf->right = make_leaf(csound, current->line, INTEGER_TOKEN, var_tok);
+ TREE *unlock_leaf = make_leaf(csound, current->line, T_OPCODE, unlock_tok);
+ unlock_leaf->right = make_leaf(csound, current->line, INTEGER_TOKEN, var_tok);
if (previous == NULL) {
TREE *old_current = lock_leaf;
@@ -279,7 +287,8 @@ TREE *csp_locks_insert(CSOUND *csound, TREE *root)
}
- csound->Message(csound, "[End Inserting Parallelism Constructs into AST]\n");
+ csound->Message(csound,
+ "[End Inserting Parallelism Constructs into AST]\n");
return anchor;
}
@@ -288,26 +297,28 @@ void csp_locks_cache_build(CSOUND *csound)
{
int ctr = 0;
struct global_var_lock_t *glob;
- if (UNLIKELY(global_var_lock_count < 1)) {
+ if (UNLIKELY(csound->global_var_lock_count < 1)) {
return;
}
- global_var_lock_cache =
+ csound->global_var_lock_cache =
csound->Malloc(csound,
- sizeof(struct global_var_lock_t *) * global_var_lock_count);
+ sizeof(struct global_var_lock_t *) *
+ csound->global_var_lock_count);
- glob = global_var_lock_root;
- while (glob != NULL && ctr < global_var_lock_count) {
- global_var_lock_cache[ctr] = glob;
+ glob = csound->global_var_lock_root;
+ while (glob != NULL && ctr < csound->global_var_lock_count) {
+ csound->global_var_lock_cache[ctr] = glob;
glob = glob->next;
ctr++;
}
/* csound->Message(csound, "Global Locks Cache\n");
ctr = 0;
- while (ctr < global_var_lock_count) {
- csound->Message(csound, "[%i] %s\n", global_var_lock_cache[ctr]->index,
- global_var_lock_cache[ctr]->name);
+ while (ctr < csound->global_var_lock_count) {
+ csound->Message(csound, "[%i] %s\n",
+ csound->global_var_lock_cache[ctr]->index,
+ csound->global_var_lock_cache[ctr]->name);
ctr++;
} */
}
@@ -333,7 +344,8 @@ int globalunlock(CSOUND *csound, GLOBAL_LOCK_UNLOCK *p)
#pragma mark -
#pragma mark Instr weightings
-/* static struct instr_weight_info_t *instr_weight_info_alloc(CSOUND *csound)
+/* static struct instr_weight_info_t
+ *instr_weight_info_alloc(CSOUND *csound)
{
struct instr_weight_info_t *ret =
csound->Malloc(csound, sizeof(struct instr_weight_info_t));
@@ -357,25 +369,29 @@ static void csp_weights_calculate_instr(CSOUND *csound, TREE *root,
while(current != NULL) {
switch(current->type) {
- case T_INSTR:
- nested_instr = csp_orc_sa_instr_get_by_name(current->left->value->lexeme);
+ case INSTR_TOKEN:
+ nested_instr =
+ csp_orc_sa_instr_get_by_name(csound,
+ current->left->value->lexeme);
/* if (nested_instr->weight == NULL) {
nested_instr->weight = instr_weight_info_alloc(csound);
} */
- csp_weights_calculate_instr(csound, current->right, nested_instr);
+ csp_weights_calculate_instr(csound,
+ current->right, nested_instr);
break;
#ifdef LOOKUP_WEIGHTS
case T_OPCODE:
case T_OPCODE0:
- instr->weight += csp_opcode_weight_fetch(csound, current->value->lexeme);
+ instr->weight += csp_opcode_weight_fetch(csound,
+ current->value->lexeme);
break;
#else
case T_OPCODE:
case T_OPCODE0:
instr->weight += WEIGHT_OPCODE_NODE;
break;
- case S_ASSIGN:
+ case '=':
instr->weight += WEIGHT_S_ASSIGN_NODE;
break;
#endif
@@ -391,7 +407,8 @@ static void csp_weights_calculate_instr(CSOUND *csound, TREE *root,
current = current->next;
}
- csound->Message(csound, "[End Calculating Instrument weight from AST]\n");
+ csound->Message(csound,
+ "[End Calculating Instrument weight from AST]\n");
}
void csp_weights_calculate(CSOUND *csound, TREE *root)
@@ -403,8 +420,9 @@ void csp_weights_calculate(CSOUND *csound, TREE *root)
while(current != NULL) {
switch(current->type) {
- case T_INSTR:
- instr = csp_orc_sa_instr_get_by_name(current->left->value->lexeme);
+ case INSTR_TOKEN:
+ instr = csp_orc_sa_instr_get_by_name(csound,
+ current->left->value->lexeme);
/* if (instr->weight == NULL) {
instr->weight = instr_weight_info_alloc(csound);
} */
@@ -418,7 +436,8 @@ void csp_weights_calculate(CSOUND *csound, TREE *root)
current = current->next;
}
- csound->Message(csound, "[End Calculating Instrument weights from AST]\n");
+ csound->Message(csound,
+ "[End Calculating Instrument weights from AST]\n");
}
static void csp_orc_sa_opcode_dump_instr(CSOUND *csound, TREE *root)
@@ -427,7 +446,7 @@ static void csp_orc_sa_opcode_dump_instr(CSOUND *csound, TREE *root)
while(current != NULL) {
switch(current->type) {
- case T_INSTR:
+ case INSTR_TOKEN:
break;
case T_OPCODE:
@@ -435,7 +454,7 @@ static void csp_orc_sa_opcode_dump_instr(CSOUND *csound, TREE *root)
csound->Message(csound, "OPCODE: %s\n", current->value->lexeme);
break;
- case S_ASSIGN:
+ case '=':
break;
default:
@@ -456,7 +475,7 @@ void csp_orc_sa_opcode_dump(CSOUND *csound, TREE *root)
while(current != NULL) {
switch(current->type) {
- case T_INSTR:
+ case INSTR_TOKEN:
csp_orc_sa_opcode_dump_instr(csound, current->right);
break;
@@ -486,19 +505,21 @@ struct opcode_weight_cache_entry_t {
uint32_t weight;
};
-#define OPCODE_WEIGHT_CACHE_SIZE 128
+//#define OPCODE_WEIGHT_CACHE_SIZE 128
-static int opcode_weight_cache_ctr;
-static struct opcode_weight_cache_entry_t *
- opcode_weight_cache[OPCODE_WEIGHT_CACHE_SIZE];
+//static int opcode_weight_cache_ctr;
+//static struct opcode_weight_cache_entry_t *
+// opcode_weight_cache[OPCODE_WEIGHT_CACHE_SIZE];
-static int opcode_weight_have_cache;
+//static int opcode_weight_have_cache;
-static void opcode_weight_entry_add(CSOUND *csound, char *name, uint32_t weight);
+static void opcode_weight_entry_add(CSOUND *csound,
+ char *name, uint32_t weight);
-static int opcode_weight_entry_alloc(CSOUND *csound,
- struct opcode_weight_cache_entry_t **entry,
- char *name, uint32_t weight, uint32_t hash_val)
+static int
+ opcode_weight_entry_alloc(CSOUND *csound,
+ struct opcode_weight_cache_entry_t **entry,
+ char *name, uint32_t weight, uint32_t hash_val)
{
#ifdef CAUTIOUS
if (UNLIKELY(entry == NULL))
@@ -507,9 +528,11 @@ static int opcode_weight_entry_alloc(CSOUND *csound,
csound->Die(csound, Str("Invalid NULL Parameter name"));
#endif
- *entry = csound->Malloc(csound, sizeof(struct opcode_weight_cache_entry_t));
+ *entry = csound->Malloc(csound,
+ sizeof(struct opcode_weight_cache_entry_t));
if (UNLIKELY(*entry == NULL)) {
- csound->Die(csound, Str("Failed to allocate Opcode Weight cache entry"));
+ csound->Die(csound,
+ Str("Failed to allocate Opcode Weight cache entry"));
}
memset(*entry, 0, sizeof(struct opcode_weight_cache_entry_t));
@@ -520,8 +543,10 @@ static int opcode_weight_entry_alloc(CSOUND *csound,
return CSOUND_SUCCESS;
}
-static int opcode_weight_entry_dealloc(CSOUND *csound,
- struct opcode_weight_cache_entry_t **entry)
+#if 0
+static int
+ opcode_weight_entry_dealloc(CSOUND *csound,
+ struct opcode_weight_cache_entry_t **entry)
{
#ifdef CAUTIOUS
if (UNLIKELY(entry == NULL || *entry == NULL))
@@ -533,6 +558,7 @@ static int opcode_weight_entry_dealloc(CSOUND *csound,
return CSOUND_SUCCESS;
}
+#endif
uint32_t csp_opcode_weight_fetch(CSOUND *csound, char *name)
{
@@ -541,12 +567,13 @@ uint32_t csp_opcode_weight_fetch(CSOUND *csound, char *name)
csound->Die(csound, Str("Invalid NULL Parameter name"));
#endif
- if (opcode_weight_have_cache == 0) {
+ if (csound->opcode_weight_have_cache == 0) {
return WEIGHT_OPCODE_NODE;
}
else {
uint32_t hash_val = hash_string(name, OPCODE_WEIGHT_CACHE_SIZE);
- struct opcode_weight_cache_entry_t *curr = opcode_weight_cache[hash_val];
+ struct opcode_weight_cache_entry_t *curr =
+ csound->opcode_weight_cache[hash_val];
while (curr != NULL) {
if (UNLIKELY(strcmp(curr->name, name) == 0)) {
return curr->weight;
@@ -554,7 +581,8 @@ uint32_t csp_opcode_weight_fetch(CSOUND *csound, char *name)
curr = curr->next;
}
/* no weight for this opcode use default */
- csound->Message(csound, "WARNING: no weight found for opcode: %s\n", name);
+ csound->Message(csound,
+ "WARNING: no weight found for opcode: %s\n", name);
return WEIGHT_OPCODE_NODE;
}
}
@@ -566,12 +594,13 @@ void csp_opcode_weight_set(CSOUND *csound, char *name, double play_time)
csound->Die(csound, Str("Invalid NULL Parameter name"));
#endif
- if (opcode_weight_have_cache == 0) {
+ if (csound->opcode_weight_have_cache == 0) {
return;
}
else {
uint32_t hash_val = hash_string(name, OPCODE_WEIGHT_CACHE_SIZE);
- struct opcode_weight_cache_entry_t *curr = opcode_weight_cache[hash_val];
+ struct opcode_weight_cache_entry_t *curr =
+ csound->opcode_weight_cache[hash_val];
TRACE_0("Adding %s [%u]\n", name, hash_val);
while (curr != NULL) {
@@ -598,7 +627,8 @@ void csp_opcode_weight_set(CSOUND *csound, char *name, double play_time)
}
}
-static void opcode_weight_entry_add(CSOUND *csound, char *name, uint32_t weight)
+static void opcode_weight_entry_add(CSOUND *csound,
+ char *name, uint32_t weight)
{
#ifdef CAUTIOUS
if (UNLIKELY(name == NULL))
@@ -606,7 +636,8 @@ static void opcode_weight_entry_add(CSOUND *csound, char *name, uint32_t weight)
#endif
uint32_t hash_val = hash_string(name, OPCODE_WEIGHT_CACHE_SIZE);
- struct opcode_weight_cache_entry_t *curr = opcode_weight_cache[hash_val];
+ struct opcode_weight_cache_entry_t *curr =
+ csound-> opcode_weight_cache[hash_val];
int found = 0;
TRACE_0("entry_add %s [%u]\n", name, hash_val);
while (curr != NULL) {
@@ -619,27 +650,30 @@ static void opcode_weight_entry_add(CSOUND *csound, char *name, uint32_t weight)
if (found == 0) {
TRACE_0("Allocing %s\n", name);
opcode_weight_entry_alloc(csound, &curr, name, weight, hash_val);
- opcode_weight_cache_ctr++;
+ csound->opcode_weight_cache_ctr++;
- curr->next = opcode_weight_cache[hash_val];
- opcode_weight_cache[hash_val] = curr;
+ curr->next = csound->opcode_weight_cache[hash_val];
+ csound->opcode_weight_cache[hash_val] = curr;
}
}
void csp_weights_dump(CSOUND *csound)
{
- if (UNLIKELY(opcode_weight_have_cache == 0)) {
- csound->Message(csound, Str("No Weights to Dump (Using Defaults)\n"));
+ if (UNLIKELY(csound->opcode_weight_have_cache == 0)) {
+ csound->Message(csound,
+ Str("No Weights to Dump (Using Defaults)\n"));
return;
}
else {
uint32_t bin_ctr = 0;
csound->Message(csound, "Weights Dump\n");
while (bin_ctr < OPCODE_WEIGHT_CACHE_SIZE) {
- struct opcode_weight_cache_entry_t *entry = opcode_weight_cache[bin_ctr];
+ struct opcode_weight_cache_entry_t *entry =
+ csound->opcode_weight_cache[bin_ctr];
while (entry != NULL) {
- csound->Message(csound, "%s => %u\n", entry->name, entry->weight);
+ csound->Message(csound, "%s => %u\n",
+ entry->name, entry->weight);
entry = entry->next;
}
@@ -655,7 +689,7 @@ void csp_weights_dump_file(CSOUND *csound)
FILE *f;
uint32_t bin_ctr = 0;
double min = 0, max = 0;
- if (UNLIKELY(opcode_weight_have_cache == 0)) {
+ if (UNLIKELY(csound->opcode_weight_have_cache == 0)) {
csound->Message(csound, "No Weights to Dump to file\n");
return;
}
@@ -667,11 +701,13 @@ void csp_weights_dump_file(CSOUND *csound)
f = fopen(path, "w+");
if (UNLIKELY(f == NULL)) {
- csound->Die(csound, Str("Opcode Weight Spec File not found at: %s"), path);
+ csound->Die(csound,
+ Str("Opcode Weight Spec File not found at: %s"), path);
}
while (bin_ctr < OPCODE_WEIGHT_CACHE_SIZE) {
- struct opcode_weight_cache_entry_t *entry = opcode_weight_cache[bin_ctr];
+ struct opcode_weight_cache_entry_t *entry =
+ csound->opcode_weight_cache[bin_ctr];
while (entry != NULL) {
if (min == 0) {
@@ -696,7 +732,8 @@ void csp_weights_dump_file(CSOUND *csound)
bin_ctr = 0;
while (bin_ctr < OPCODE_WEIGHT_CACHE_SIZE) {
- struct opcode_weight_cache_entry_t *entry = opcode_weight_cache[bin_ctr];
+ struct opcode_weight_cache_entry_t *entry =
+ csound->opcode_weight_cache[bin_ctr];
while (entry != NULL) {
uint32_t weight = floor((entry->play_time - min) * scale) + 1;
@@ -714,14 +751,15 @@ void csp_weights_dump_normalised(CSOUND *csound)
{
uint32_t bin_ctr = 0;
double min = 0, max = 0;
- if (UNLIKELY(opcode_weight_have_cache == 0)) {
+ if (UNLIKELY(csound->opcode_weight_have_cache == 0)) {
csound->Message(csound, Str("No Weights to Dump (Using Defaults)\n"));
return;
}
csound->Message(csound, Str("Weights Dump\n"));
while (bin_ctr < OPCODE_WEIGHT_CACHE_SIZE) {
- struct opcode_weight_cache_entry_t *entry = opcode_weight_cache[bin_ctr];
+ struct opcode_weight_cache_entry_t *entry =
+ csound->opcode_weight_cache[bin_ctr];
while (entry != NULL) {
if (min == 0) {
@@ -751,7 +789,8 @@ void csp_weights_dump_normalised(CSOUND *csound)
bin_ctr = 0;
while (bin_ctr < OPCODE_WEIGHT_CACHE_SIZE) {
- struct opcode_weight_cache_entry_t *entry = opcode_weight_cache[bin_ctr];
+ struct opcode_weight_cache_entry_t *entry =
+ csound->opcode_weight_cache[bin_ctr];
while (entry != NULL) {
uint32_t weight = floor((entry->play_time - min) * scale) + 1;
@@ -781,17 +820,19 @@ void csp_weights_load(CSOUND *csound)
int col = 0;
int c;
if (path == NULL) {
- opcode_weight_have_cache = 0;
+ csound->opcode_weight_have_cache = 0;
return;
}
- opcode_weight_have_cache = 1;
+ csound->opcode_weight_have_cache = 1;
- memset(opcode_weight_cache, 0,
- sizeof(struct opcode_weight_cache_entry_t *) * OPCODE_WEIGHT_CACHE_SIZE);
+ memset(csound->opcode_weight_cache, 0,
+ sizeof(struct opcode_weight_cache_entry_t *) *
+ OPCODE_WEIGHT_CACHE_SIZE);
f = fopen(path, "r");
if (UNLIKELY(f == NULL)) {
- csound->Die(csound, Str("Opcode Weight Spec File not found at: %s"), path);
+ csound->Die(csound,
+ Str("Opcode Weight Spec File not found at: %s"), path);
}
while ((c = fgetc(f)) != EOF) {
@@ -958,7 +999,8 @@ static inline void csp_dag_prepare_use_insds(CSOUND *csound, DAG *dag,
void csp_dag_alloc(CSOUND *csound, DAG **dag)
{
#ifdef CAUTIOUS
- if (UNLIKELY(dag == NULL)) csound->Die(csound, Str("Invalid NULL Parameter dag"));
+ if (UNLIKELY(dag == NULL))
+ csound->Die(csound, Str("Invalid NULL Parameter dag"));
#endif
*dag = (DAG*)csound->Malloc(csound, sizeof(DAG));
@@ -994,7 +1036,8 @@ void csp_dag_dealloc(CSOUND *csound, DAG **dag)
if ((*dag)->all != NULL) csound->Free(csound, (*dag)->all);
if ((*dag)->roots_ori != NULL) csound->Free(csound, (*dag)->roots_ori);
if ((*dag)->roots != NULL) csound->Free(csound, (*dag)->roots);
- if ((*dag)->root_seen_ori!= NULL) csound->Free(csound, (*dag)->root_seen_ori);
+ if ((*dag)->root_seen_ori!= NULL)
+ csound->Free(csound, (*dag)->root_seen_ori);
if ((*dag)->root_seen != NULL) csound->Free(csound, (*dag)->root_seen);
if ((*dag)->table_ori != NULL) csound->Free(csound, (*dag)->table_ori);
if ((*dag)->table != NULL) csound->Free(csound, (*dag)->table);
@@ -1077,12 +1120,13 @@ void csp_dag_add(CSOUND *csound, DAG *dag,
{
DAG_NODE *dag_node = NULL;
DAG_NODE **old = dag->all;
- int ctr = 0;
+ //int ctr = 0;
dag_node_2_alloc(csound, &dag_node, instr, insds);
TRACE_1("dag->count = %d\n", dag->count);
- // dag->all = (DAG_NODE **)csound->Malloc(csound,
- // sizeof(DAG_NODE *) * (dag->count + 1));
+ // dag->all =
+ // (DAG_NODE **)csound->Malloc(csound,
+ // sizeof(DAG_NODE *) * (dag->count + 1));
/* Can not this be done with memcpy or Realloc */
// while (ctr < dag->count) {
// dag->all[ctr] = old[ctr];
@@ -1090,8 +1134,9 @@ void csp_dag_add(CSOUND *csound, DAG *dag,
// }
// dag->all[ctr] = dag_node;
// if (old != NULL) csound->Free(csound, old);
- dag->all = (DAG_NODE **)csound->ReAlloc(csound, old,
- sizeof(DAG_NODE *) * (dag->count + 1));
+ dag->all =
+ (DAG_NODE **)csound->ReAlloc(csound, old,
+ sizeof(DAG_NODE *) * (dag->count + 1));
dag->all[dag->count++] = dag_node;
//dag->count++;
@@ -1106,16 +1151,19 @@ void csp_dag_add(CSOUND *csound, DAG *dag,
inline static void csp_dag_build_prepare(CSOUND *csound, DAG *dag)
{
#ifdef CAUTIOUS
- if (dag == NULL) csound->Die(csound, Str("Invalid NULL Parameter dag"));
+ if (dag == NULL) csound->Die(csound,
+ Str("Invalid NULL Parameter dag"));
#endif
if (dag->roots_ori != NULL) csound->Free(csound, dag->roots_ori);
if (dag->roots != NULL) csound->Free(csound, dag->roots);
- if (dag->root_seen_ori != NULL) csound->Free(csound, dag->root_seen_ori);
+ if (dag->root_seen_ori != NULL)
+ csound->Free(csound, dag->root_seen_ori);
if (dag->root_seen != NULL) csound->Free(csound, dag->root_seen);
if (dag->remaining_count_ori != NULL)
csound->Free(csound, dag->remaining_count_ori);
- if (dag->remaining_count != NULL) csound->Free(csound, dag->remaining_count);
+ if (dag->remaining_count != NULL)
+ csound->Free(csound, dag->remaining_count);
if (dag->table_ori != NULL) csound->Free(csound, dag->table_ori);
if (dag->table != NULL) csound->Free(csound, dag->table);
@@ -1136,8 +1184,10 @@ inline static void csp_dag_build_prepare(CSOUND *csound, DAG *dag)
dag->roots = csound->Malloc(csound, sizeof(DAG_NODE *) * dag->count);
dag->root_seen_ori = csound->Malloc(csound, sizeof(uint8_t) * dag->count);
dag->root_seen = csound->Malloc(csound, sizeof(uint8_t) * dag->count);
- dag->remaining_count_ori = csound->Malloc(csound, sizeof(int) * dag->count);
- dag->remaining_count = csound->Malloc(csound, sizeof(int) * dag->count);
+ dag->remaining_count_ori =
+ csound->Malloc(csound, sizeof(int) * dag->count);
+ dag->remaining_count =
+ csound->Malloc(csound, sizeof(int) * dag->count);
{
long int ss = (sizeof(uint8_t *) * dag->count) +
(sizeof(uint8_t) * dag->count * dag->count);
@@ -1151,9 +1201,11 @@ inline static void csp_dag_build_prepare(CSOUND *csound, DAG *dag)
int ctr = 0;
while (ctr < dag->count) {
dag->table_ori[ctr] = ((uint8_t *)dag->table_ori) +
- (sizeof(uint8_t *) * dag->count) + (sizeof(uint8_t) * dag->count * ctr);
+ (sizeof(uint8_t *) * dag->count) +
+ (sizeof(uint8_t) * dag->count * ctr);
dag->table[ctr] = ((uint8_t *)dag->table) +
- (sizeof(uint8_t *) * dag->count) + (sizeof(uint8_t) * dag->count * ctr);
+ (sizeof(uint8_t *) * dag->count) +
+ (sizeof(uint8_t) * dag->count * ctr);
ctr++;
}
}
@@ -1161,26 +1213,29 @@ inline static void csp_dag_build_prepare(CSOUND *csound, DAG *dag)
memset(dag->roots, 0, sizeof(DAG_NODE *) * dag->count);
memset(dag->root_seen_ori, 0, sizeof(uint8_t) * dag->count);
memset(dag->root_seen, 0, sizeof(uint8_t) * dag->count);
- memset(dag->remaining_count_ori, 0, sizeof(int) * dag->count);
- memset(dag->remaining_count, 0, sizeof(int) * dag->count);
+ memset(dag->remaining_count_ori, 0, sizeof(int) * dag->count);
+ memset(dag->remaining_count, 0, sizeof(int) * dag->count);
memset(dag->table_ori[0], DAG_NO_LINK,
sizeof(uint8_t) * dag->count * dag->count);
- memset(dag->table[0], DAG_NO_LINK, sizeof(uint8_t) * dag->count * dag->count);
+ memset(dag->table[0], DAG_NO_LINK,
+ sizeof(uint8_t) * dag->count * dag->count);
}
inline static DAG *csp_dag_build_initial(CSOUND *csound, INSDS *chain)
{
DAG *dag = NULL;
#ifdef CAUTIOUS
- if (chain == NULL) csound->Die(csound, Str("Invalid NULL Parameter chain"));
+ if (UNLIKELY(chain == NULL))
+ csound->Die(csound, Str("Invalid NULL Parameter chain"));
#endif
csp_dag_alloc(csound, &dag);
while (chain != NULL) {
INSTR_SEMANTICS *current_instr =
- csp_orc_sa_instr_get_by_num(chain->insno);
+ csp_orc_sa_instr_get_by_num(csound, chain->insno);
if (current_instr == NULL)
csound->Die(csound,
- Str("Failed to find semantic information for instrument '%i'"),
+ Str("Failed to find semantic information"
+ " for instrument '%i'"),
chain->insno);
csp_dag_add(csound, dag, current_instr, chain);
dag->weight += current_instr->weight;
@@ -1192,7 +1247,8 @@ inline static DAG *csp_dag_build_initial(CSOUND *csound, INSDS *chain)
inline static void csp_dag_build_edges(CSOUND *csound, DAG *dag)
{
#ifdef CAUTIOUS
- if (dag == NULL) csound->Die(csound, Str("Invalid NULL Parameter dag"));
+ if (UNLIKELY(dag == NULL))
+ csound->Die(csound, Str("Invalid NULL Parameter dag"));
#endif
int dag_root_ctr = 0;
@@ -1214,7 +1270,8 @@ inline static void csp_dag_build_edges(CSOUND *csound, DAG *dag)
}
csp_set_dealloc(csound, &write_intersection);
- /* csound->Message(csound, "write_intersection depends: %i\n", depends);
+ /* csound->Message(csound,
+ "write_intersection depends: %i\n", depends);
csp_set_print(csound, dag->all[dag_root_ctr]->instr->write);
csp_set_print(csound, dag->all[dag_curr_ctr]->instr->read); */
@@ -1227,7 +1284,8 @@ inline static void csp_dag_build_edges(CSOUND *csound, DAG *dag)
}
csp_set_dealloc(csound, &read_intersection);
- /* csound->Message(csound, "read_intersection depends: %i\n", depends);
+ /* csound->Message(csound,
+ "read_intersection depends: %i\n", depends);
csp_set_print(csound, dag->all[dag_root_ctr]->instr->read);
csp_set_print(csound, dag->all[dag_curr_ctr]->instr->write); */
@@ -1246,7 +1304,8 @@ inline static void csp_dag_build_edges(CSOUND *csound, DAG *dag)
csp_set_print(csound, dag->all[dag_curr_ctr]->instr->write); */
struct set_t *readwrite_write_intersection = NULL;
- csp_set_intersection(csound, dag->all[dag_root_ctr]->instr->read_write,
+ csp_set_intersection(csound,
+ dag->all[dag_root_ctr]->instr->read_write,
dag->all[dag_curr_ctr]->instr->write,
&readwrite_write_intersection);
if (csp_set_count(csound, readwrite_write_intersection) != 0) {
@@ -1254,13 +1313,15 @@ inline static void csp_dag_build_edges(CSOUND *csound, DAG *dag)
}
csp_set_dealloc(csound, &readwrite_write_intersection);
- /* csound->Message(csound, "readwrite_write_intersection depends: %i\n",
+ /* csound->Message(csound,
+ "readwrite_write_intersection depends: %i\n",
depends);
csp_set_print(csound, dag->all[dag_root_ctr]->instr->read_write);
csp_set_print(csound, dag->all[dag_curr_ctr]->instr->write); */
struct set_t *readwrite_read_intersection = NULL;
- csp_set_intersection(csound, dag->all[dag_root_ctr]->instr->read_write,
+ csp_set_intersection(csound,
+ dag->all[dag_root_ctr]->instr->read_write,
dag->all[dag_curr_ctr]->instr->read,
&readwrite_read_intersection);
if (csp_set_count(csound, readwrite_read_intersection) != 0) {
@@ -1268,8 +1329,11 @@ inline static void csp_dag_build_edges(CSOUND *csound, DAG *dag)
}
csp_set_dealloc(csound, &readwrite_read_intersection);
- /* csound->Message(csound, "readwrite_read_intersection depends: %i\n", depends);
- csp_set_print(csound, dag->all[dag_root_ctr]->instr->read_write);
+ /* csound->Message(csound,
+ "readwrite_read_intersection depends: %i\n",
+ depends);
+ csp_set_print(csound,
+ dag->all[dag_root_ctr]->instr->read_write);
csp_set_print(csound, dag->all[dag_curr_ctr]->instr->write); */
struct set_t *read_readwrite_intersection = NULL;
@@ -1281,9 +1345,12 @@ inline static void csp_dag_build_edges(CSOUND *csound, DAG *dag)
}
csp_set_dealloc(csound, &read_readwrite_intersection);
- /* csound->Message(csound, "read_readwrite_intersection depends: %i\n", depends);
+ /* csound->Message(csound,
+ "read_readwrite_intersection depends: %i\n",
+ depends);
csp_set_print(csound, dag->all[dag_root_ctr]->instr->read);
- csp_set_print(csound, dag->all[dag_curr_ctr]->instr->read_write); */
+ csp_set_print(csound,
+ dag->all[dag_curr_ctr]->instr->read_write); */
struct set_t *write_readwrite_intersection = NULL;
csp_set_intersection(csound, dag->all[dag_root_ctr]->instr->write,
@@ -1294,24 +1361,30 @@ inline static void csp_dag_build_edges(CSOUND *csound, DAG *dag)
}
csp_set_dealloc(csound, &write_readwrite_intersection);
- /* csound->Message(csound, "write_readwrite_intersection depends: %i\n",
+ /* csound->Message(csound,
+ "write_readwrite_intersection depends: %i\n",
depends);
csp_set_print(csound, dag->all[dag_root_ctr]->instr->write);
- csp_set_print(csound, dag->all[dag_curr_ctr]->instr->read_write); */
+ csp_set_print(csound,
+ dag->all[dag_curr_ctr]->instr->read_write); */
struct set_t *readwrite_readwrite_intersection = NULL;
- csp_set_intersection(csound, dag->all[dag_root_ctr]->instr->read_write,
+ csp_set_intersection(csound,
+ dag->all[dag_root_ctr]->instr->read_write,
dag->all[dag_curr_ctr]->instr->read_write,
&readwrite_readwrite_intersection);
- if (csp_set_count(csound, readwrite_readwrite_intersection) != 0) {
+ if (csp_set_count(csound,
+ readwrite_readwrite_intersection) != 0) {
depends |= DAG_WEAK_LINK;
}
csp_set_dealloc(csound, &readwrite_readwrite_intersection);
/* csound->Message(csound,
- "readwrite_readwrite_intersection depends: %i\n", depends);
+ "readwrite_readwrite_intersection depends: %i\n",
+ depends);
csp_set_print(csound, dag->all[dag_root_ctr]->instr->read_write);
- csp_set_print(csound, dag->all[dag_curr_ctr]->instr->read_write); */
+ csp_set_print(csound,
+ dag->all[dag_curr_ctr]->instr->read_write); */
if (depends & DAG_STRONG_LINK) {
dag->table_ori[dag_root_ctr][dag_curr_ctr] = DAG_STRONG_LINK;
@@ -1429,8 +1502,10 @@ static void csp_dag_calculate_max_roots(CSOUND *csound, DAG *dag)
void csp_dag_build(CSOUND *csound, DAG **dag, INSDS *chain)
{
#ifdef CAUTIOUS
- if (dag == NULL) csound->Die(csound, Str("Invalid NULL Parameter dag"));
- if (chain == NULL) csound->Die(csound, Str("Invalid NULL Parameter chain"));
+ if (dag == NULL)
+ csound->Die(csound, Str("Invalid NULL Parameter dag"));
+ if (chain == NULL)
+ csound->Die(csound, Str("Invalid NULL Parameter chain"));
#endif
TRACE_5("DAG BUILD\n");
@@ -1449,7 +1524,8 @@ void csp_dag_build(CSOUND *csound, DAG **dag, INSDS *chain)
int inline csp_dag_is_finished(CSOUND *csound, DAG *dag)
{
#ifdef CAUTIOUS
- if (dag == NULL) csound->Die(csound, Str("Invalid NULL Parameter dag"));
+ if (dag == NULL)
+ csound->Die(csound, Str("Invalid NULL Parameter dag"));
#endif
/* TAKE_LOCK(&(dag->spinlock));
int res = (dag->remaining <= 0);
@@ -1463,7 +1539,7 @@ int inline csp_dag_is_finished(CSOUND *csound, DAG *dag)
/*
* consume an instr and update the first root cache
*/
-static int waiting_for_ending=0;
+//static int waiting_for_ending=0;
void csp_dag_consume(CSOUND *csound, DAG *dag,
DAG_NODE **node, int *update_hdl)
{
@@ -1481,7 +1557,8 @@ void csp_dag_consume(CSOUND *csound, DAG *dag,
#endif
TRACE_2("[%i] Consuming PreLock [%i, %i] +++++\n",
- csp_thread_index_get(csound), dag->first_root, dag->consume_spinlock);
+ csp_thread_index_get(csound),
+ dag->first_root, dag->consume_spinlock);
TAKE_LOCK(&(dag->consume_spinlock));
@@ -1503,22 +1580,23 @@ void csp_dag_consume(CSOUND *csound, DAG *dag,
// csp_dag_print(csound, dag);
/* csound->Die(csound, */
- /* Str("Expected a root to perform. Found none (%i remaining)"), */
- /* dag->remaining); */
+ /* Str("Expected a root to perform. Found none (%i remaining)"), */
+ /* dag->remaining); */
RELS_LOCK(&(dag->consume_spinlock));
/* RELS_LOCK(&(dag->spinlock)); */
*node = NULL;
*update_hdl = -1;
- { struct timespec tt = {0, 100};
+ //{ struct timespec tt = {0, 100};
// nanosleep(&tt, NULL);
- }
+ //}
/* Really ought to wait until someone leaves comsume_dag_update */
return;
}
first_root = dag->first_root;
- TRACE_5("[%i] Consuming root:%i\n", csp_thread_index_get(csound), first_root);
+ TRACE_5("[%i] Consuming root:%i\n",
+ csp_thread_index_get(csound), first_root);
dag_node = dag->roots[first_root];
dag->roots[first_root] = NULL;
@@ -2302,7 +2380,7 @@ struct dag_cache_entry_t {
int16 chain[];
};
-#define DAG_2_CACHE_SIZE 128
+//#define DAG_2_CACHE_SIZE 128
#define DAG_2_DECAY_COMP 1
#define DAG_2_MIN_USE_LIMIT 5000
/* aiming for 8 passes of the cache update before a new entry
@@ -2311,7 +2389,7 @@ struct dag_cache_entry_t {
#define DAG_2_AGE_START 131072
static int cache_ctr;
-static struct dag_cache_entry_t *cache[DAG_2_CACHE_SIZE];
+//static struct dag_cache_entry_t *cache[DAG_2_CACHE_SIZE];
/* #ifdef HYBRID_HASH_CACHE */
/* static struct dag_cache_entry_t *cache_last; */
@@ -2322,11 +2400,13 @@ static uint32_t update_ctr;
static int csp_dag_cache_entry_alloc(CSOUND *csound,
struct dag_cache_entry_t **entry,
INSDS *chain, uint32_t hash_val);
-static int csp_dag_cache_entry_dealloc(CSOUND *csound,
- struct dag_cache_entry_t **entry);
static int csp_dag_cache_compare(CSOUND *csound,
struct dag_cache_entry_t *entry, INSDS *chain);
+#if 0
+static int csp_dag_cache_entry_dealloc(CSOUND *csound,
+ struct dag_cache_entry_t **entry);
static void csp_dag_cache_update(CSOUND *csound);
+#endif
static void csp_dag_cache_print_weights_dump(CSOUND *csound);
void csp_dag_cache_print(CSOUND *csound)
@@ -2340,7 +2420,7 @@ void csp_dag_cache_print(CSOUND *csound)
csound->Message(csound, "Dag2 Cache Size: %i\n", cache_ctr);
while (bin_ctr < DAG_2_CACHE_SIZE) {
- struct dag_cache_entry_t *entry = cache[bin_ctr];
+ struct dag_cache_entry_t *entry = csound->cache[bin_ctr];
if (entry == NULL) bins_empty++;
else bins_used++;
@@ -2419,7 +2499,7 @@ static void csp_dag_cache_print_weights_dump(CSOUND *csound)
#endif
while (bin_ctr < DAG_2_CACHE_SIZE) {
- struct dag_cache_entry_t *entry = cache[bin_ctr];
+ struct dag_cache_entry_t *entry = csound->cache[bin_ctr];
char *dag_str;
while (entry != NULL) {
@@ -2499,6 +2579,7 @@ static int csp_dag_cache_entry_alloc(CSOUND *csound,
return CSOUND_SUCCESS;
}
+#if 0
static int csp_dag_cache_entry_dealloc(CSOUND *csound,
struct dag_cache_entry_t **entry)
{
@@ -2516,7 +2597,9 @@ static int csp_dag_cache_entry_dealloc(CSOUND *csound,
return CSOUND_SUCCESS;
}
+#endif
+#if 0
static void csp_dag_cache_update(CSOUND *csound)
{
uint32_t bin_ctr = 0;
@@ -2527,7 +2610,7 @@ static void csp_dag_cache_update(CSOUND *csound)
csound->Message(csound, Str("Cache Update\n"));
while (bin_ctr < DAG_2_CACHE_SIZE) {
- struct dag_cache_entry_t *entry = cache[bin_ctr], *prev = NULL;
+ struct dag_cache_entry_t *entry = csound->cache[bin_ctr], *prev = NULL;
if (entry == NULL) {
bin_ctr++;
@@ -2540,14 +2623,14 @@ static void csp_dag_cache_update(CSOUND *csound)
if (entry->uses < DAG_2_MIN_USE_LIMIT &&
entry->age < DAG_2_MIN_AGE_LIMIT) {
if (prev == NULL) {
- cache[bin_ctr] = entry->next;
+ csound->cache[bin_ctr] = entry->next;
}
else {
prev->next = entry->next;
}
csp_dag_cache_entry_dealloc(csound, &entry);
if (prev == NULL) {
- entry = cache[bin_ctr];
+ entry = csound->cache[bin_ctr];
}
else {
entry = prev->next;
@@ -2562,6 +2645,7 @@ static void csp_dag_cache_update(CSOUND *csound)
bin_ctr++;
}
}
+#endif
static int csp_dag_cache_compare(CSOUND *csound,
struct dag_cache_entry_t *entry, INSDS *chain)
@@ -2628,7 +2712,7 @@ void csp_dag_cache_fetch(CSOUND *csound, DAG **dag, INSDS *chain)
/* #endif */
uint32_t hash_val = hash_chain(chain, DAG_2_CACHE_SIZE);
- struct dag_cache_entry_t *curr = cache[hash_val];
+ struct dag_cache_entry_t *curr = csound->cache[hash_val];
while (curr != NULL) {
if (csp_dag_cache_compare(csound, curr, chain)) {
TRACE_2("Cache Hit [%i]\n", cache_ctr);
@@ -2654,8 +2738,8 @@ void csp_dag_cache_fetch(CSOUND *csound, DAG **dag, INSDS *chain)
cache_ctr++;
*dag = curr->dag;
- curr->next = cache[hash_val];
- cache[hash_val] = curr;
+ curr->next = csound->cache[hash_val];
+ csound->cache[hash_val] = curr;
/* #ifdef HYBRID_HASH_CACHE */
/* cache_last = curr; */
/* #endif */
diff --git a/Engine/cs_par_orc_semantic_analysis.c b/Engine/cs_par_orc_semantic_analysis.c
index 6e72185..390bb8e 100644
--- a/Engine/cs_par_orc_semantic_analysis.c
+++ b/Engine/cs_par_orc_semantic_analysis.c
@@ -31,7 +31,9 @@
#include "cs_par_base.h"
#include "cs_par_orc_semantics.h"
+#include "interlocks.h"
+int find_opcode(CSOUND *, char *);
/***********************************************************************
* static function prototypes
*/
@@ -66,12 +68,12 @@ static INSTR_SEMANTICS *instr_semantics_alloc(CSOUND *csound, char *name)
* parse time support
*/
-static INSTR_SEMANTICS *curr;
-static INSTR_SEMANTICS *root;
+//static INSTR_SEMANTICS *curr;
+//static INSTR_SEMANTICS *root;
void csp_orc_sa_cleanup(CSOUND *csound)
{
- INSTR_SEMANTICS *current = root, *h = NULL;
+ INSTR_SEMANTICS *current = csound->instRoot, *h = NULL;
while (current != NULL) {
csp_set_dealloc(csound, &(current->read));
@@ -83,14 +85,14 @@ void csp_orc_sa_cleanup(CSOUND *csound)
csound->Free(csound, h);
}
- curr = NULL;
- root = NULL;
+ csound->instCurr = NULL;
+ csound->instRoot = NULL;
}
void csp_orc_sa_print_list(CSOUND *csound)
{
csound->Message(csound, "Semantic Analysis\n");
- INSTR_SEMANTICS *current = root;
+ INSTR_SEMANTICS *current = csound->instRoot;
while (current != NULL) {
csound->Message(csound, "Instr: %s\n", current->name);
csound->Message(csound, " read: ");
@@ -113,7 +115,7 @@ void csp_orc_sa_global_read_write_add_list(CSOUND *csound,
struct set_t *write,
struct set_t *read)
{
- if (curr == NULL) {
+ if (csound->instCurr == NULL) {
csound->Message(csound,
"Add global read, write lists without any instruments\n");
}
@@ -128,9 +130,9 @@ void csp_orc_sa_global_read_write_add_list(CSOUND *csound,
if (write->count == 1 && read->count == 1 && new->count == 1) {
/* this is a read_write list thing */
struct set_t *new_read_write = NULL;
- csp_set_union(csound, curr->read_write, new, &new_read_write);
- csp_set_dealloc(csound, &curr->read_write);
- curr->read_write = new_read_write;
+ csp_set_union(csound, csound->instCurr->read_write, new, &new_read_write);
+ csp_set_dealloc(csound, &csound->instCurr->read_write);
+ csound->instCurr->read_write = new_read_write;
}
else {
csp_orc_sa_global_write_add_list(csound, write);
@@ -143,7 +145,7 @@ void csp_orc_sa_global_read_write_add_list(CSOUND *csound,
void csp_orc_sa_global_write_add_list(CSOUND *csound, struct set_t *set)
{
- if (curr == NULL) {
+ if (csound->instCurr == NULL) {
csound->Message(csound,
"Add a global write_list without any instruments\n");
}
@@ -153,18 +155,18 @@ void csp_orc_sa_global_write_add_list(CSOUND *csound, struct set_t *set)
}
else {
struct set_t *new = NULL;
- csp_set_union(csound, curr->write, set, &new);
+ csp_set_union(csound, csound->instCurr->write, set, &new);
- csp_set_dealloc(csound, &curr->write);
+ csp_set_dealloc(csound, &csound->instCurr->write);
csp_set_dealloc(csound, &set);
- curr->write = new;
+ csound->instCurr->write = new;
}
}
void csp_orc_sa_global_read_add_list(CSOUND *csound, struct set_t *set)
{
- if (curr == NULL) {
+ if (csound->instCurr == NULL) {
csound->Message(csound, "add a global read_list without any instruments\n");
}
else if (UNLIKELY(set == NULL)) {
@@ -173,46 +175,98 @@ void csp_orc_sa_global_read_add_list(CSOUND *csound, struct set_t *set)
}
else {
struct set_t *new = NULL;
- csp_set_union(csound, curr->read, set, &new);
+ csp_set_union(csound, csound->instCurr->read, set, &new);
- csp_set_dealloc(csound, &curr->read);
+ csp_set_dealloc(csound, &csound->instCurr->read);
csp_set_dealloc(csound, &set);
- curr->read = new;
+ csound->instCurr->read = new;
}
}
-static int inInstr = 0;
+void csp_orc_sa_interlocksf(CSOUND *csound, int code)
+{
+ if (code&0xfff8) {
+ /* zak etc */
+ struct set_t *rr = NULL;
+ struct set_t *ww = NULL;
+ csp_set_alloc_string(csound, &ww);
+ csp_set_alloc_string(csound, &rr);
+ switch (code&0xfff8) {
+ case ZR:
+ csp_set_add(csound, rr, "##zak");
+ break;
+ case ZW:
+ csp_set_add(csound, ww, "##zak");
+ break;
+ case ZB:
+ csp_set_add(csound, rr, "##zak");
+ csp_set_add(csound, ww, "##zak");
+ break;
+ case TR:
+ csp_set_add(csound, rr, "##tab");
+ break;
+ case TW:
+ csp_set_add(csound, ww, "##tab");
+ break;
+ case TB:
+ csp_set_add(csound, rr, "##tab");
+ csp_set_add(csound, ww, "##tab");
+ break;
+ case CR:
+ csp_set_add(csound, rr, "##chn");
+ break;
+ case CW:
+ csp_set_add(csound, ww, "##chn");
+ break;
+ case CB:
+ csp_set_add(csound, rr, "##chn");
+ csp_set_add(csound, ww, "##chn");
+ break;
+ }
+ csp_orc_sa_global_read_write_add_list(csound, ww, rr);
+ }
+}
+
+void csp_orc_sa_interlocks(CSOUND *csound, ORCTOKEN *opcode)
+{
+ char *name = opcode->lexeme;
+ int32 opnum = find_opcode(csound, name);
+ OENTRY *ep = csound->opcodlst + opnum;
+ csp_orc_sa_interlocksf(csound, ep->thread);
+}
+
+//static int inInstr = 0;
void csp_orc_sa_instr_add(CSOUND *csound, char *name)
{
- inInstr = 1;
- if (root == NULL) {
- root = instr_semantics_alloc(csound, name);
- curr = root;
+ csound->inInstr = 1;
+ if (csound->instRoot == NULL) {
+ csound->instRoot = instr_semantics_alloc(csound, name);
+ csound->instCurr = csound->instRoot;
}
- else if (curr == NULL) {
- INSTR_SEMANTICS *prev = root;
- curr = prev->next;
- while (curr != NULL) {
- prev = curr;
- curr = curr->next;
+ else if (csound->instCurr == NULL) {
+ INSTR_SEMANTICS *prev = csound->instRoot;
+ csound->instCurr = prev->next;
+ while (csound->instCurr != NULL) {
+ prev = csound->instCurr;
+ csound->instCurr = csound->instCurr->next;
}
prev->next = instr_semantics_alloc(csound, name);
- curr = prev->next;
+ csound->instCurr = prev->next;
}
else {
- curr->next = instr_semantics_alloc(csound, name);
- curr = curr->next;
+ csound->instCurr->next = instr_semantics_alloc(csound, name);
+ csound->instCurr = csound->instCurr->next;
}
- // curr->insno = named_instr_find(name);
+ // csound->instCurr->insno = named_instr_find(name);
}
/* New code to deal with lists of integer instruments -- JPff */
void csp_orc_sa_instr_add_tree(CSOUND *csound, TREE *x)
{
while (x) {
- if (x->type == T_INTGR) {
+ if (x->type == INTEGER_TOKEN) {
csp_orc_sa_instr_add(csound, x->value->lexeme);
return;
}
@@ -231,8 +285,8 @@ void csp_orc_sa_instr_add_tree(CSOUND *csound, TREE *x)
void csp_orc_sa_instr_finalize(CSOUND *csound)
{
- curr = NULL;
- inInstr = 0;
+ csound->instCurr = NULL;
+ csound->inInstr = 0;
}
struct set_t *csp_orc_sa_globals_find(CSOUND *csound, TREE *node)
@@ -279,9 +333,9 @@ struct set_t *csp_orc_sa_globals_find(CSOUND *csound, TREE *node)
return current_set;
}
-INSTR_SEMANTICS *csp_orc_sa_instr_get_by_name(char *instr_name)
+INSTR_SEMANTICS *csp_orc_sa_instr_get_by_name(CSOUND *csound, char *instr_name)
{
- INSTR_SEMANTICS *current_instr = root;
+ INSTR_SEMANTICS *current_instr = csound->instRoot;
while (current_instr != NULL) {
if (strcmp(current_instr->name, instr_name) == 0) {
return current_instr;
@@ -291,10 +345,10 @@ INSTR_SEMANTICS *csp_orc_sa_instr_get_by_name(char *instr_name)
return NULL;
}
-INSTR_SEMANTICS *csp_orc_sa_instr_get_by_num(int16 insno)
+INSTR_SEMANTICS *csp_orc_sa_instr_get_by_num(CSOUND *csound, int16 insno)
{
#define BUF_LENGTH 8
- INSTR_SEMANTICS *current_instr = root;
+ INSTR_SEMANTICS *current_instr = csound->instRoot;
char buf[BUF_LENGTH];
while (current_instr != NULL) {
if (current_instr->insno != -1 && current_instr->insno == insno) {
@@ -305,7 +359,7 @@ INSTR_SEMANTICS *csp_orc_sa_instr_get_by_num(int16 insno)
snprintf(buf, BUF_LENGTH, "%i", insno);
- current_instr = csp_orc_sa_instr_get_by_name(buf);
+ current_instr = csp_orc_sa_instr_get_by_name(csound, buf);
if (current_instr != NULL) {
current_instr->insno = insno;
}
diff --git a/Engine/csound_orc.l b/Engine/csound_orc.l
index 8187311..5b012b2 100644
--- a/Engine/csound_orc.l
+++ b/Engine/csound_orc.l
@@ -27,6 +27,7 @@
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
+#include <ctype.h>
#include "csoundCore.h"
#define YYSTYPE TREE*
#define YYLTYPE ORCTOKEN*
@@ -34,10 +35,12 @@
#define YY_DECL int yylex (YYLTYPE *lvalp, CSOUND *csound, yyscan_t yyscanner)
#include "csound_orcparse.h"
#include "csound_orc.h"
+#include "corfile.h"
YYSTYPE *yylval_param;
YYLTYPE *yylloc_param;
ORCTOKEN *make_string(CSOUND *, char *);
-extern ORCTOKEN *lookup_token(CSOUND *csound, char *, void *);
+extern ORCTOKEN *lookup_token(CSOUND *, char *, void *);
+extern void *fopen_path(CSOUND *, FILE **, char *, char *, char *, int);
ORCTOKEN *new_token(CSOUND *csound, int type);
ORCTOKEN *make_int(CSOUND *, char *);
ORCTOKEN *make_num(CSOUND *, char *);
@@ -49,6 +52,8 @@ void do_include(CSOUND *, int, yyscan_t);
void do_macro_arg(CSOUND *, char *, yyscan_t);
void do_macro(CSOUND *, char *, yyscan_t);
void do_umacro(CSOUND *, char *, yyscan_t);
+void do_ifdef(CSOUND *, char *, yyscan_t);
+void do_ifdef_skip_code(CSOUND *, yyscan_t);
#define udoflag csound->parserUdoflag
#define namedInstrFlag csound->parserNamedInstrFlag
//extern int udoflag;
@@ -59,15 +64,16 @@ void do_umacro(CSOUND *, char *, yyscan_t);
#define YY_EXTRA_TYPE PARSE_PARM *
#define PARM yyget_extra(yyscanner)
-#define YY_INPUT(buf,result,max_size) {\
- result = get_next_char(buf, max_size, yyg); \
- if ( UNLIKELY( result <= 0 )) \
- result = YY_NULL; \
- }
-
+/* #define YY_INPUT(buf,result,max_size) {\ */
+/* result = get_next_char(buf, max_size, yyg); \ */
+/* if ( UNLIKELY( result <= 0 )) \ */
+/* result = YY_NULL; \ */
+/* } */
+#define YY_USER_INIT csound_orcset_lineno(csound->orcLineOffset, yyscanner);
struct yyguts_t;
ORCTOKEN *do_at(CSOUND *, int, struct yyguts_t*);
+int get_next_char(char *, int, struct yyguts_t*);
%}
%option reentrant
%option bison-bridge
@@ -86,19 +92,23 @@ MACRONAMEA "$"[a-zA-Z0-9_]+\(
MACRONAMEDA "$"[a-zA-Z0-9_]+\.\(
INTGR [0-9]+
NUMBER [0-9]+\.[0-9]*(e[-+]?[0-9]+)?|\.[0-9]+(e[-+]?[0-9]+)?
-STCOM "/"\*
+STCOM \/\*
WHITE [ \t]+
OPTWHITE [ \t]*
INCLUDE "#include"
DEFINE "#define"
UNDEF "#undef"
-CONT \\[[ \t]*\n
+IFDEF #ifn?def
+ELSE #else[ \t]*(;.*)?$
+END #end(if)?[ \t]*(;.*)?\n
+CONT \\[ \t]*(;.*)?\n
XSTR "{{"
EXSTR "}}"
%x incl
%x macro
%x umacro
+%x ifdef
%x xstr
%%
@@ -106,92 +116,99 @@ EXSTR "}}"
{CONT} { csound_orcset_lineno(1+csound_orcget_lineno(yyscanner),
yyscanner);
}
-"\n" {
- return S_NL; }
-"//" { comment(yyscanner); return S_NL; }
-";" { comment(yyscanner); return S_NL; }
+"\n" { csound_orcset_lineno(1+csound_orcget_lineno(yyscanner),
+ yyscanner);
+ return NEWLINE; }
+"//" { comment(yyscanner); return NEWLINE; }
+";" { comment(yyscanner); return NEWLINE; }
{STCOM} { do_comment(yyscanner); }
-"(" { return S_LB; }
-")" { return S_RB; }
-"[" { return S_SLB; }
-"]" { return S_SRB; }
-"+" { return S_PLUS; }
-"-" { return S_MINUS; }
-"*" { return S_TIMES; }
-"/" { return S_DIV; }
-"%" { return S_MOD; }
-"\^" { return S_POW; }
-"?" { return S_Q; }
-":" { return S_COL; }
-"," { return S_COM; }
-"!" { return S_NOT; }
+"(" { return '('; }
+")" { return ')'; }
+"[" { return '['; }
+"]" { return ']'; }
+"+" { return '+'; }
+"-" { return '-'; }
+"*" { return '*'; }
+"/" { return '/'; }
+"%" { return '%'; }
+"\^" { return '^'; }
+"?" { return '?'; }
+":" { return ':'; }
+"," { return ','; }
+"!" { return '!'; }
"!=" { return S_NEQ; }
"&&" { return S_AND; }
"||" { return S_OR; }
-"<<" { return S_BITSHL; }
-">>" { return S_BITSHR; }
+"<<" { return S_BITSHIFT_LEFT; }
+">>" { return S_BITSHIFT_RIGHT; }
"<" { return S_LT; }
"<=" { return S_LE; }
"==" { return S_EQ; }
"=" { *lvalp = make_token(csound, yytext);
- (*lvalp)->type = S_ASSIGN;
- return S_ASSIGN; }
+ (*lvalp)->type = '=';
+ return '='; }
">" { return S_GT; }
">=" { return S_GE; }
-"|" { return S_BITOR; }
-"&" { return S_BITAND; }
-"#" { return S_NEQV; }
-"¬" { return S_BITNOT; }
-"~" { return S_BITNOT; }
-"@@"{OPTWHITE}{INTGR} { *lvalp = do_at(csound, 1, yyg); return T_INTGR; }
-"@"{OPTWHITE}{INTGR} { *lvalp = do_at(csound, 0, yyg); return T_INTGR; }
-"if" { return T_IF; }
-"then" { return T_THEN; }
-"ithen" { return T_ITHEN; }
-"kthen" { return T_KTHEN; }
-"elseif" { return T_ELSEIF; }
-"else" { return T_ELSE; }
-"endif" { return T_ENDIF; }
-"until" { return T_UNTIL; }
-"do" { return T_DO; }
-"od" { return T_OD; }
+"|" { return '|'; }
+"&" { return '&'; }
+"#" { return '#'; }
+"¬" { return '~'; }
+"~" { return '~'; }
+"@@"{OPTWHITE}{INTGR} { *lvalp = do_at(csound, 1, yyg); return INTEGER_TOKEN; }
+"@"{OPTWHITE}{INTGR} { *lvalp = do_at(csound, 0, yyg); return INTEGER_TOKEN; }
+"if" { return IF_TOKEN; }
+"then" { return THEN_TOKEN; }
+"ithen" { return ITHEN_TOKEN; }
+"kthen" { return KTHEN_TOKEN; }
+"elseif" { return ELSEIF_TOKEN; }
+"else" { return ELSE_TOKEN; }
+"endif" { return ENDIF_TOKEN; }
+"until" { return UNTIL_TOKEN; }
+"do" { return DO_TOKEN; }
+"od" { return OD_TOKEN; }
"goto" { *lvalp = make_token(csound, yytext);
- (*lvalp)->type = T_GOTO;
- return T_GOTO; };
+ (*lvalp)->type = GOTO_TOKEN;
+ return GOTO_TOKEN; };
"igoto" { *lvalp = make_token(csound, yytext);
- (*lvalp)->type = T_IGOTO;
- return T_IGOTO; };
+ (*lvalp)->type = IGOTO_TOKEN;
+ return IGOTO_TOKEN; };
"kgoto" { *lvalp = make_token(csound, yytext);
- (*lvalp)->type = T_KGOTO;
- return T_KGOTO; };
+ (*lvalp)->type = KGOTO_TOKEN;
+ return KGOTO_TOKEN; };
"sr" { *lvalp = make_token(csound, yytext);
- (*lvalp)->type = T_SRATE;
- return T_SRATE; }
+ (*lvalp)->type = SRATE_TOKEN;
+ return SRATE_TOKEN; }
"kr" { *lvalp = make_token(csound, yytext);
- (*lvalp)->type = T_KRATE;
- return T_KRATE; }
+ (*lvalp)->type = KRATE_TOKEN;
+ return KRATE_TOKEN; }
"ksmps" { *lvalp = make_token(csound, yytext);
- (*lvalp)->type = T_KSMPS;
- return T_KSMPS; }
+ (*lvalp)->type = KSMPS_TOKEN;
+ return KSMPS_TOKEN; }
"nchnls" { *lvalp = make_token(csound, yytext);
- (*lvalp)->type = T_NCHNLS;
- return T_NCHNLS; }
+ (*lvalp)->type = NCHNLS_TOKEN;
+ return NCHNLS_TOKEN; }
"nchnls_i" { *lvalp = make_token(csound, yytext);
- (*lvalp)->type = T_NCHNLSI;
- return T_NCHNLSI; }
+ (*lvalp)->type = NCHNLSI_TOKEN;
+ return NCHNLSI_TOKEN; }
"instr" {
namedInstrFlag = 1;
- return T_INSTR;
+ return INSTR_TOKEN;
+ }
+"endin" { return ENDIN_TOKEN; }
+"opcode" {
+ PARM->clearBufferAfterEOF = 0;
+ return UDOSTART_DEFINITION;
+ }
+"endop" {
+ PARM->clearBufferAfterEOF = PARM->isInclude;
+ *lvalp = new_token(csound, UDOEND_TOKEN); return UDOEND_TOKEN;
}
-"endin" { return T_ENDIN; }
-"opcode" { return T_UDOSTART; }
-"endop" { *lvalp = new_token(csound, T_UDOEND); return T_UDOEND; }
{LABEL} { char *pp = yytext;
while (*pp==' ' || *pp=='\t') pp++;
- *lvalp = make_label(csound, pp); return T_LABEL;
+ *lvalp = make_label(csound, pp); return LABEL_TOKEN;
}
"\{\{" {
@@ -208,7 +225,7 @@ EXSTR "}}"
PARM->xstrbuff[PARM->xstrptr] = '\0';
*lvalp = make_string(csound, PARM->xstrbuff);
free(PARM->xstrbuff);
- return T_STRCONST;
+ return STRING_TOKEN;
}
<xstr>"\n" { /* THe next two should be one case but I cannot get that to work */
@@ -232,18 +249,19 @@ EXSTR "}}"
PARM->xstrbuff[PARM->xstrptr] = '\0';
}
-{STRCONST} { *lvalp = make_string(csound, yytext); return (T_STRCONST); }
+{STRCONST} { *lvalp = make_string(csound, yytext); return (STRING_TOKEN); }
{STRCONSTe} { *lvalp = make_string(csound, yytext);
csound->Message(csound,
Str("unterminated string found on line %d >>%s<<\n"),
- csound_orcget_lineno(yyscanner), yytext);
- return (T_STRCONST); }
+ csound_orcget_lineno(yyscanner),
+ yytext);
+ return (STRING_TOKEN); }
"0dbfs" { *lvalp = make_token(csound, yytext);
- (*lvalp)->type = T_0DBFS;
+ (*lvalp)->type = ZERODBFS_TOKEN;
/* csound->Message(csound,"%d\n", (*lvalp)->type); */
- return T_0DBFS; }
+ return ZERODBFS_TOKEN; }
{IDENT} { *lvalp = lookup_token(csound, yytext, yyscanner);
/* csound->Message(csound,"%s -> %d\n",
yytext, (*lvalp)->type); */
@@ -294,13 +312,13 @@ EXSTR "}}"
}
PARM->alt_stack[PARM->macro_stack_ptr].n = 0;
PARM->alt_stack[PARM->macro_stack_ptr++].s = NULL;
- /* printf("Push buffer %p -> ", YY_CURRENT_BUFFER); */
+ /* printf("Push buffer %p -> ", YY_CURRENBUFFER_TOKEN); */
yypush_buffer_state(YY_CURRENT_BUFFER, yyscanner);
yy_scan_string(mm->body, yyscanner);
/* printf("%p\n", YY_CURRENT_BUFFER); */
}
{MACRONAMEA} {
- MACRO *mm = PARM->macros, *last = PARM->macros;
+ MACRO *mm = PARM->macros;
int c, i, j;
printf("Macro with arguments call %s\n", yytext);
yytext[yyleng-1] = '\0';
@@ -353,7 +371,7 @@ EXSTR "}}"
yy_scan_string(mm->body, yyscanner);
}
{MACRONAMEDA} {
- MACRO *mm = PARM->macros, *last = PARM->macros;
+ MACRO *mm = PARM->macros;
int c, i, j;
printf("Macro with arguments call %s\n", yytext);
yytext[yyleng-2] = '\0';
@@ -405,19 +423,20 @@ EXSTR "}}"
yy_scan_string(mm->body, yyscanner);
}
{INTGR} {
- if(udoflag == 0) {
- *lvalp = lookup_token(csound, yytext, yyscanner);
- } else if(udoflag == 1) {
- *lvalp = lookup_token(csound, yytext, yyscanner);
- (*lvalp)->type = T_UDO_ARGS;
+ if (udoflag == 0) {
+ *lvalp = make_string(csound, yytext);
+ (*lvalp)->type = UDO_ANS_TOKEN;
+ } else if (udoflag == 1) {
+ *lvalp = make_string(csound, yytext);
+ (*lvalp)->type = UDO_ARGS_TOKEN;
} else {
- *lvalp = make_int(csound, yytext); return (T_INTGR);
+ *lvalp = make_int(csound, yytext); return (INTEGER_TOKEN);
}
csound->Message(csound,"%d\n", (*lvalp)->type);
return ((*lvalp)->type);
}
-{NUMBER} { *lvalp = make_num(csound, yytext); return (T_NUMBER); }
+{NUMBER} { *lvalp = make_num(csound, yytext); return (NUMBER_TOKEN); }
{WHITE} { }
{INCLUDE} BEGIN(incl);
<incl>[ \t]* /* eat the whitespace */
@@ -432,6 +451,10 @@ EXSTR "}}"
yypop_buffer_state(yyscanner);
if ( !YY_CURRENT_BUFFER ) yyterminate();
printf("End of input; popping to %p\n", YY_CURRENT_BUFFER);
+ if (PARM->clearBufferAfterEOF)
+ PARM->lBuffer =
+ PARM->clearBufferAfterEOF =
+ PARM->isInclude = 0;
n = PARM->alt_stack[--PARM->macro_stack_ptr].n;
printf("n=%d\n", n);
if (n!=0) {
@@ -446,10 +469,10 @@ EXSTR "}}"
PARM->macros = x;
}
else {
- MACRO *nxt;
+ MACRO *nxt = y->next;
while (x->next != y) x = x->next;
while (n>0) {
- MACRO *nxt = y->next;
+ nxt = y->next;
mfree(csound, y->name); mfree(csound, y); y=nxt; n--;
}
x->next = nxt;
@@ -485,6 +508,36 @@ EXSTR "}}"
csound_orcget_lineno(yyscanner),
yytext[0],yytext[0]);
}
+{IFDEF} {
+ PARM->isIfndef = (yytext[3] == 'n'); /* #ifdef or #ifndef */
+ BEGIN(ifdef);
+ }
+<ifdef>[ \t]* /* eat the whitespace */
+<ifdef>{IDENT} {
+ do_ifdef(csound, yytext, yyscanner);
+ BEGIN(INITIAL);
+ }
+{ELSE} {
+ if (PARM->ifdefStack == NULL) {
+ csound->Message(csound, Str("#else without #if\n"));
+ csound->LongJmp(csound, 1);
+ }
+ else if (PARM->ifdefStack->isElse) {
+ csound->Message(csound, Str("#else after #else\n"));
+ csound->LongJmp(csound, 1);
+ }
+ PARM->ifdefStack->isElse = 1;
+ do_ifdef_skip_code(csound, yyscanner);
+ }
+{END} {
+ IFDEFSTACK *pp = PARM->ifdefStack;
+ if (UNLIKELY(pp == NULL)) {
+ csound->Message(csound, Str("Unmatched #end\n"));
+ csound->LongJmp(csound, 1);
+ }
+ PARM->ifdefStack = pp->prv;
+ mfree(csound, pp);
+ }
%%
@@ -500,10 +553,12 @@ void do_comment(yyscan_t yyscanner) /* Skip until * and / chars */
{
char c;
for (;;) {
- while ((c=input(yyscanner)) != '*')
- if (UNLIKELY(c=='\n')) /* skip */
- csound_orcset_lineno(1+csound_orcget_lineno(yyscanner),yyscanner);
- if ((c=input(yyscanner))=='/') return;
+ c = input(yyscanner);
+ if (UNLIKELY(c=='\n')) /* skip */
+ csound_orcset_lineno(1+csound_orcget_lineno(yyscanner),yyscanner);
+ if (c != '*') continue;
+ while ((c=input(yyscanner))=='*');
+ if (c=='/') return;
if (UNLIKELY(c=='\n'))
csound_orcset_lineno(1+csound_orcget_lineno(yyscanner),yyscanner);
}
@@ -514,6 +569,7 @@ void do_include(CSOUND *csound, int term, yyscan_t yyscanner)
char buffer[100];
int p=0;
int c;
+ CORFIL *cf;
struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
while ((c=input(yyscanner))!=term) {
buffer[p] = c;
@@ -521,14 +577,12 @@ void do_include(CSOUND *csound, int term, yyscan_t yyscanner)
}
buffer[p] = '\0';
while ((c=input(yyscanner))!='\n');
- yyin = fopen( buffer, "r" );
- if (UNLIKELY( ! yyin )) {
- csound->Message(csound, Str("Cannot open file \"%s\"\n"), buffer);
- exit(1);
- }
+ cf = copy_to_corefile(csound, buffer, "INCDIR", 0);
PARM->alt_stack[PARM->macro_stack_ptr].n = 0;
PARM->alt_stack[PARM->macro_stack_ptr++].s = NULL;
- yypush_buffer_state(yy_create_buffer( yyin, YY_BUF_SIZE, yyscanner), yyscanner);
+ PARM->isInclude = PARM->clearBufferAfterEOF = 1;
+ yypush_buffer_state(YY_CURRENT_BUFFER, yyscanner);
+ yy_scan_string(cf->body, yyscanner);
}
static inline int isNameChar(int c, int pos)
@@ -595,7 +649,7 @@ void do_macro_arg(CSOUND *csound, char *name0, yyscan_t yyscanner)
void do_macro(CSOUND *csound, char *name0, yyscan_t yyscanner)
{
MACRO *mm = (MACRO*) mmalloc(csound, sizeof(MACRO));
- int arg = 0, i, c;
+ int i, c;
int size = 100;
mm->margs = MARGS; /* Initial size */
// printf("Macro definition for %s\n", name0);
@@ -654,6 +708,74 @@ void do_umacro(CSOUND *csound, char *name0, yyscan_t yyscanner)
csound_orcset_lineno(1+csound_orcget_lineno(yyscanner),yyscanner);
}
+void do_ifdef(CSOUND *csound, char *name0, yyscan_t yyscanner)
+{
+ int c;
+ MACRO *mm;
+ IFDEFSTACK *pp;
+ pp = (IFDEFSTACK*) mcalloc(csound, sizeof(IFDEFSTACK));
+ pp->prv = PARM->ifdefStack;
+ pp->isDef = PARM->isIfndef;
+ for (mm = PARM->macros; mm != NULL; mm = mm->next) {
+ if (strcmp(name0, mm->name) == 0) {
+ pp->isDef ^= (unsigned char) 1;
+ break;
+ }
+ }
+ PARM->ifdefStack = pp;
+ pp->isSkip = pp->isDef ^ (unsigned char) 1;
+ if (pp->isSkip)
+ do_ifdef_skip_code(csound, yyscanner);
+ else
+ while ((c = input(yyscanner)) != '\n' && c != EOF);
+}
+
+void do_ifdef_skip_code(CSOUND *csound, yyscan_t yyscanner)
+{
+ int i, c, nested_ifdef = 0;
+ char *buf;
+ IFDEFSTACK *pp;
+ buf = (char*)malloc(8*sizeof(char));
+ pp = PARM->ifdefStack;
+ c = input(yyscanner);
+ for (;;) {
+ while (c!='\n') {
+ if (UNLIKELY(c == EOF)) {
+ csound->Message(csound, Str("Unmatched #if%sdef\n"),
+ PARM->isIfndef ? "n" : "");
+ csound->LongJmp(csound, 1);
+ }
+ c = input(yyscanner);
+ }
+ while (isblank(c = input(yyscanner))); /* eat the whitespace */
+ if (c == '#') {
+ for (i=0; islower(c = input(yyscanner)) && i < 7; i++)
+ buf[i] = c;
+ buf[i] = '\0';
+ if (strcmp("end", buf) == 0 || strcmp("endif", buf) == 0) {
+ if (nested_ifdef-- == 0) {
+ PARM->ifdefStack = pp->prv;
+ mfree(csound, pp);
+ break;
+ }
+ }
+ else if (strcmp("ifdef", buf) == 0 || strcmp("ifndef", buf) == 0) {
+ nested_ifdef++;
+ }
+ else if (strcmp("else", buf) == 0 && nested_ifdef == 0) {
+ if (pp->isElse) {
+ csound->Message(csound, Str("#else after #else\n"));
+ csound->LongJmp(csound, 1);
+ }
+ pp->isElse = 1;
+ break;
+ }
+ }
+ }
+ free(buf);
+ while (c != '\n' && c != EOF) c = input(yyscanner);
+}
+
ORCTOKEN *new_token(CSOUND *csound, int type)
{
ORCTOKEN *ans = (ORCTOKEN*)mcalloc(csound, sizeof(ORCTOKEN));
@@ -663,7 +785,7 @@ ORCTOKEN *new_token(CSOUND *csound, int type)
ORCTOKEN *make_token(CSOUND *csound, char *s)
{
- ORCTOKEN *ans = new_token(csound, T_STRCONST);
+ ORCTOKEN *ans = new_token(csound, STRING_TOKEN);
int len = strlen(s);
ans->lexeme = (char*)mcalloc(csound, len + 1);
strcpy(ans->lexeme, s);
@@ -672,7 +794,7 @@ ORCTOKEN *make_token(CSOUND *csound, char *s)
ORCTOKEN *make_label(CSOUND *csound, char *s)
{
- ORCTOKEN *ans = new_token(csound, T_LABEL);
+ ORCTOKEN *ans = new_token(csound, LABEL_TOKEN);
int len = strlen(s);
ans->lexeme = (char*)mcalloc(csound, len);
strncpy(ans->lexeme, s, len - 1); /* Not the trailing colon */
@@ -681,7 +803,7 @@ ORCTOKEN *make_label(CSOUND *csound, char *s)
ORCTOKEN *make_string(CSOUND *csound, char *s)
{
- ORCTOKEN *ans = new_token(csound, T_STRCONST);
+ ORCTOKEN *ans = new_token(csound, STRING_TOKEN);
int len = strlen(s);
/* Keep the quote marks */
/* ans->lexeme = (char*)mcalloc(csound, len-1); */
@@ -702,7 +824,7 @@ ORCTOKEN *do_at(CSOUND *csound, int k, struct yyguts_t *yyg)
while (*s=='@') s++;
n = atoi(s);
while (i<=n-k && i< 0x4000000) i <<= 1;
- ans = new_token(csound, T_INTGR);
+ ans = new_token(csound, INTEGER_TOKEN);
sprintf(buf, "%d", i+k);
len = strlen(buf);
ans->lexeme = (char*)mcalloc(csound, len + 1);
@@ -714,7 +836,7 @@ ORCTOKEN *do_at(CSOUND *csound, int k, struct yyguts_t *yyg)
ORCTOKEN *make_int(CSOUND *csound, char *s)
{
int n = atoi(s);
- ORCTOKEN *ans = new_token(csound, T_INTGR);
+ ORCTOKEN *ans = new_token(csound, INTEGER_TOKEN);
int len = strlen(s);
ans->lexeme = (char*)mcalloc(csound, len + 1);
strncpy(ans->lexeme, s, len);
@@ -725,7 +847,7 @@ ORCTOKEN *make_int(CSOUND *csound, char *s)
ORCTOKEN *make_num(CSOUND *csound, char *s)
{
double n = atof(s);
- ORCTOKEN *ans = new_token(csound, T_NUMBER);
+ ORCTOKEN *ans = new_token(csound, NUMBER_TOKEN);
int len = strlen(s);
ans->lexeme = (char*)mcalloc(csound, len + 1);
strncpy(ans->lexeme, s, len);
@@ -755,20 +877,20 @@ static void add_math_const_macro(CSOUND *csound, void* yyscanner,
void cs_init_math_constants_macros(CSOUND *csound, void* yyscanner)
{
PARM->macros = NULL;
- add_math_const_macro(csound, yyscanner, "E", "2.7182818284590452354");
- add_math_const_macro(csound, yyscanner, "LOG2E", "1.4426950408889634074");
- add_math_const_macro(csound, yyscanner, "LOG10E", "0.43429448190325182765");
- add_math_const_macro(csound, yyscanner, "LN2", "0.69314718055994530942");
- add_math_const_macro(csound, yyscanner, "LN10", "2.30258509299404568402");
- add_math_const_macro(csound, yyscanner, "PI", "3.14159265358979323846");
- add_math_const_macro(csound, yyscanner, "PI_2", "1.57079632679489661923");
- add_math_const_macro(csound, yyscanner, "PI_4", "0.78539816339744830962");
- add_math_const_macro(csound, yyscanner, "1_PI", "0.31830988618379067154");
- add_math_const_macro(csound, yyscanner, "2_PI", "0.63661977236758134308");
- add_math_const_macro(csound, yyscanner, "2_SQRTPI", "1.12837916709551257390");
+ add_math_const_macro(csound, yyscanner, "E", "2.71828182845904523536");
+ add_math_const_macro(csound, yyscanner, "LOG2E", "1.44269504088896340736");
+ add_math_const_macro(csound, yyscanner, "LOG10E","0.43429448190325182765");
+ add_math_const_macro(csound, yyscanner, "LN2", "0.69314718055994530942");
+ add_math_const_macro(csound, yyscanner, "LN10", "2.30258509299404568402");
+ add_math_const_macro(csound, yyscanner, "PI", "3.14159265358979323846");
+ add_math_const_macro(csound, yyscanner, "PI_2", "1.57079632679489661923");
+ add_math_const_macro(csound, yyscanner, "PI_4", "0.78539816339744830962");
+ add_math_const_macro(csound, yyscanner, "1_PI", "0.31830988618379067154");
+ add_math_const_macro(csound, yyscanner, "2_PI", "0.63661977236758134308");
+ add_math_const_macro(csound, yyscanner,"2_SQRTPI", "1.12837916709551257390");
add_math_const_macro(csound, yyscanner, "SQRT2", "1.41421356237309504880");
- add_math_const_macro(csound, yyscanner, "SQRT1_2", "0.70710678118654752440");
- add_math_const_macro(csound, yyscanner, "INF", "2147483647.0"); /* ~7 years */
+ add_math_const_macro(csound, yyscanner,"SQRT1_2","0.70710678118654752440");
+ add_math_const_macro(csound, yyscanner, "INF", "2147483647.0"); /* ~7 years */
}
void cs_init_omacros(CSOUND *csound, void *yyscanner, NAMES *nn)
@@ -813,17 +935,19 @@ void cs_init_omacros(CSOUND *csound, void *yyscanner, NAMES *nn)
}
-/* Functions for working with grabbing input one line aa time */
+#if 0
+/* Functions for working with grabbing input one line at a time */
+/* These two functions assume reading from a file */
int get_next_line(struct yyguts_t * yyg)
{
- int i;
char *p;
void *yyscanner = yyg;
PARM->nBuffer = 0;
p = fgets(yyextra->buffer, lMaxBuffer, yyin);
+ printf("get_next_line: %s\n", yyextra->buffer);
if (UNLIKELY(p == NULL)) {
if (ferror(yyin))
return -1;
@@ -843,7 +967,7 @@ int get_next_char(char *b, int maxBuffer, struct yyguts_t* yyg)
void *yyscanner = yyg;
if (UNLIKELY( feof(yyin) ))
return 0;
-
+ printf("get_next_char: %s\n", yyextra->buffer);
while ( PARM->nBuffer >= PARM->lBuffer ) {
frc = get_next_line(yyg);
if (UNLIKELY( frc != 0 ))
@@ -853,6 +977,12 @@ int get_next_char(char *b, int maxBuffer, struct yyguts_t* yyg)
b[0] = yyextra->buffer[PARM->nBuffer];
PARM->nBuffer += 1;
- return b[0]==0?0:1;
+ return b[0]=='\0'?0:1;
}
+#endif
+char *csound_orcget_current_pointer(void *yyscanner)
+{
+ struct yyguts_t *yyg = (struct yyguts_t*)yyscanner;
+ return yyg->yy_c_buf_p;
+}
diff --git a/Engine/csound_orc.y b/Engine/csound_orc.y
index c39a41b..8a46b65 100644
--- a/Engine/csound_orc.y
+++ b/Engine/csound_orc.y
@@ -27,57 +27,38 @@
%lex-param { CSOUND * csound }
%lex-param {yyscan_t *scanner}
-%token S_COM
-%token S_Q
-%token S_COL
-%token S_NOT
-%token S_PLUS
-%token S_MINUS
-%token S_TIMES
-%token S_DIV
-%token S_MOD
-%token S_POW
-%token S_NL
-%token S_LB
-%token S_RB
-%token S_SLB
-%token S_SRB
+%token NEWLINE
%token S_NEQ
%token S_AND
%token S_OR
%token S_LT
%token S_LE
%token S_EQ
-%token S_ASSIGN
%token S_TASSIGN
%token S_TABREF
%token S_GT
%token S_GE
-%token S_BITAND
-%token S_BITOR
-%token S_NEQV
-%token S_BITSHL
-%token S_BITSHR
-%token S_BITNOT
+%token S_BITSHIFT_LEFT
+%token S_BITSHIFT_RRIGHT
-%token T_LABEL
-%token T_IF
+%token LABEL_TOKEN
+%token IF_TOKEN
%token T_OPCODE0
%token T_OPCODE
-%token T_UDO
-%token T_UDOSTART
-%token T_UDOEND
-%token T_UDO_ANS
-%token T_UDO_ARGS
+%token UDO_TOKEN
+%token UDOSTART_DEFINITION
+%token UDOEND_TOKEN
+%token UDO_ANS_TOKEN
+%token UDO_ARGS_TOKEN
%token T_ERROR
%token T_FUNCTION
-%token T_INSTR
-%token T_ENDIN
+%token INSTR_TOKEN
+%token ENDIN_TOKEN
%token T_STRSET
%token T_PSET
%token T_CTRLINIT
@@ -87,17 +68,17 @@
%token T_ZAKINIT
%token T_FTGEN
%token T_INIT
-%token T_GOTO
-%token T_KGOTO
-%token T_IGOTO
-
-%token T_SRATE
-%token T_KRATE
-%token T_KSMPS
-%token T_NCHNLS
-%token T_NCHNLSI
-%token T_0DBFS
-%token T_STRCONST
+%token GOTO_TOKEN
+%token KGOTO_TOKEN
+%token IGOTO_TOKEN
+
+%token SRATE_TOKEN
+%token KRATE_TOKEN
+%token KSMPS_TOKEN
+%token NCHNLS_TOKEN
+%token NCHNLSI_TOKEN
+%token ZERODBFS_TOKEN
+%token STRING_TOKEN
%token T_IDENT
%token T_IDENT_I
@@ -117,37 +98,37 @@
%token T_IDENT_P
%token T_IDENT_B
%token T_IDENT_b
-%token T_INTGR
-%token T_NUMBER
-%token T_THEN
-%token T_ITHEN
-%token T_KTHEN
-%token T_ELSEIF
-%token T_ELSE
-%token T_ENDIF
-%token T_UNTIL
-%token T_DO
-%token T_OD
+%token INTEGER_TOKEN
+%token NUMBER_TOKEN
+%token THEN_TOKEN
+%token ITHEN_TOKEN
+%token KTHEN_TOKEN
+%token ELSEIF_TOKEN
+%token ELSE_TOKEN
+%token ENDIF_TOKEN
+%token UNTIL_TOKEN
+%token DO_TOKEN
+%token OD_TOKEN
%token T_INSTLIST
%start orcfile
%left S_AND S_OR
-%nonassoc T_THEN T_ITHEN T_KTHEN T_ELSE /* NOT SURE IF THIS IS NECESSARY */
-%left S_PLUS S_MINUS
-%left S_STAR S_SLASH S_MOD
-%left S_POW
-%left S_BITOR
-%left S_BITAND
-%left S_NEQV
-%left S_BITSHL
-%left S_BITSHR
-%right S_BITNOT
+%nonassoc THEN_TOKEN ITHEN_TOKEN KTHEN_TOKEN ELSE_TOKEN /* NOT SURE IF THIS IS NECESSARY */
+%left '+' '-'
+%left '*' '/' '%'
+%left '^'
+%left '|'
+%left '&'
+%left '#'
+%left S_BITSHIFT_LEFT
+%left S_BITSHIFT_RIGHT
+%right '~'
%right S_UNOT
%right S_UMINUS
%right S_ATAT
%right S_AT
-%left S_Q
+%left '?'
%nonassoc S_LT S_GT S_LEQ S_GEQ S_EQ S_NEQ
%token S_GOTO
%token T_HIGHEST
@@ -186,15 +167,18 @@
extern TREE* appendToTree(CSOUND * csound, TREE *first, TREE *newlast);
extern int csound_orclex(TREE**, CSOUND *, void *);
extern void print_tree(CSOUND *, char *msg, TREE *);
-extern void csound_orcerror(PARSE_PARM *, void *, CSOUND *, TREE*, char*);
+extern void csound_orcerror(PARSE_PARM *, void *, CSOUND *, TREE*, const char*);
extern void add_udo_definition(CSOUND*, char *, char *, char *);
extern ORCTOKEN *lookup_token(CSOUND*,char*,void*);
+#define LINE csound_orcget_lineno(scanner)
+extern int csound_orcget_lineno(void *);
%}
%%
orcfile : rootstatement
{
*astTree = *((TREE *)$1);
+ csound->synterrcnt = csound_orcnerrs;
//print_tree(csound, "ALL", $1);
}
;
@@ -216,55 +200,39 @@ rootstatement : rootstatement topstatement
| udodecl
;
-/* FIXME: Does not allow "instr 2,3,4,5,6" syntax */
-instlist : T_INTGR S_COM instlist
- { $$ = make_node(csound, T_INSTLIST,
- make_leaf(csound, T_INTGR, (ORCTOKEN *)$1), $3); }
- | T_IDENT S_COM instlist
+instlist : INTEGER_TOKEN ',' instlist
+ { $$ = make_node(csound,LINE, T_INSTLIST,
+ make_leaf(csound, LINE,
+ INTEGER_TOKEN, (ORCTOKEN *)$1), $3); }
+ | T_IDENT ',' instlist
{
#ifdef PARCS
csp_orc_sa_instr_add(csound, ((ORCTOKEN *)$1)->lexeme);
#endif
- $$ = make_node(csound, T_INSTLIST,
- make_leaf(csound, T_IDENT, (ORCTOKEN *)$1), $3); }
- | T_INTGR { $$ = make_leaf(csound, T_INTGR, (ORCTOKEN *)$1); }
- | T_IDENT { $$ = make_leaf(csound, T_IDENT, (ORCTOKEN *)$1); }
+ $$ = make_node(csound,LINE, T_INSTLIST,
+ make_leaf(csound, LINE,
+ T_IDENT, (ORCTOKEN *)$1), $3); }
+ | INTEGER_TOKEN { $$ = make_leaf(csound, LINE,
+ INTEGER_TOKEN, (ORCTOKEN *)$1); }
+ | T_IDENT { $$ = make_leaf(csound, LINE, T_IDENT, (ORCTOKEN *)$1); }
;
-instrdecl : T_INSTR
+instrdecl : INSTR_TOKEN
{ namedInstrFlag = 1; }
- instlist S_NL
+ instlist NEWLINE
{ namedInstrFlag = 0;
#ifdef PARCS
csp_orc_sa_instr_add_tree(csound, $3);
#endif
}
- statementlist T_ENDIN S_NL
+ statementlist ENDIN_TOKEN NEWLINE
{
- $$ = make_node(csound, T_INSTR, $3, $6);
+ $$ = make_node(csound, LINE, INSTR_TOKEN, $3, $6);
#ifdef PARCS
csp_orc_sa_instr_finalize(csound);
#endif
}
-
-/* | T_INSTR */
-/* { namedInstrFlag = 1; } */
-/* T_IDENT S_NL */
-/* { namedInstrFlag = 0; */
-/* #ifdef PARCS */
-/* csp_orc_sa_instr_add(csound, ((ORCTOKEN *)$3)->lexeme); */
-/* #endif */
-/* } */
-/* statementlist T_ENDIN S_NL */
-/* { */
-/* TREE *ident = make_leaf(csound, T_IDENT, (ORCTOKEN *)$3); */
-/* $$ = make_node(csound, T_INSTR, ident, $6); */
-/* #ifdef PARCS */
-/* csp_orc_sa_instr_finalize(csound); */
-/* #endif */
-/* } */
-
- | T_INSTR S_NL error
+ | INSTR_TOKEN NEWLINE error
{
namedInstrFlag = 0;
csound->Message(csound, Str("No number following instr\n"));
@@ -274,15 +242,15 @@ instrdecl : T_INSTR
}
;
-udodecl : T_UDOSTART
+udodecl : UDOSTART_DEFINITION
{ udoflag = -2; }
T_IDENT
{ udoflag = -1; }
- S_COM
+ ','
{ udoflag = 0;}
- T_UDO_ANS
+ UDO_ANS_TOKEN
{ udoflag = 1; }
- S_COM T_UDO_ARGS S_NL
+ ',' UDO_ARGS_TOKEN NEWLINE
{
udoflag = 2;
add_udo_definition(csound,
@@ -290,12 +258,16 @@ udodecl : T_UDOSTART
((ORCTOKEN *)$7)->lexeme,
((ORCTOKEN *)$10)->lexeme);
}
- statementlist T_UDOEND S_NL
+ statementlist UDOEND_TOKEN NEWLINE
{
- TREE *udoTop = make_leaf(csound, T_UDO, (ORCTOKEN *)NULL);
- TREE *ident = make_leaf(csound, T_IDENT, (ORCTOKEN *)$3);
- TREE *udoAns = make_leaf(csound, T_UDO_ANS, (ORCTOKEN *)$7);
- TREE *udoArgs = make_leaf(csound, T_UDO_ARGS, (ORCTOKEN *)$10);
+ TREE *udoTop = make_leaf(csound, LINE, UDO_TOKEN,
+ (ORCTOKEN *)NULL);
+ TREE *ident = make_leaf(csound, LINE, T_IDENT,
+ (ORCTOKEN *)$3);
+ TREE *udoAns = make_leaf(csound, LINE, UDO_ANS_TOKEN,
+ (ORCTOKEN *)$7);
+ TREE *udoArgs = make_leaf(csound, LINE, UDO_ARGS_TOKEN,
+ (ORCTOKEN *)$10);
udoflag = -1;
if (UNLIKELY(PARSER_DEBUG))
csound->Message(csound, "UDO COMPLETE\n");
@@ -322,10 +294,10 @@ statementlist : statementlist statement
| /* null */ { $$ = NULL; }
;
-topstatement : rident S_ASSIGN expr S_NL
+topstatement : rident '=' expr NEWLINE
{
- TREE *ans = make_leaf(csound, S_ASSIGN, (ORCTOKEN *)$2);
+ TREE *ans = make_leaf(csound,LINE, '=', (ORCTOKEN *)$2);
ans->left = (TREE *)$1;
ans->right = (TREE *)$3;
/* ans->value->lexeme = get_assignment_type(csound,
@@ -337,9 +309,9 @@ topstatement : rident S_ASSIGN expr S_NL
;
-statement : ident S_ASSIGN expr S_NL
+statement : ident '=' expr NEWLINE
{
- TREE *ans = make_leaf(csound, S_ASSIGN, (ORCTOKEN *)$2);
+ TREE *ans = make_leaf(csound,LINE, '=', (ORCTOKEN *)$2);
ans->left = (TREE *)$1;
ans->right = (TREE *)$3;
/* ans->value->lexeme = get_assignment_type(csound,
@@ -352,18 +324,18 @@ statement : ident S_ASSIGN expr S_NL
csp_orc_sa_globals_find(csound, ans->right));
#endif
}
- | T_IDENT_T S_ASSIGN T_IDENT_T S_NL
+ | T_IDENT_T '=' T_IDENT_T NEWLINE
{
ORCTOKEN *op = lookup_token(csound, "#copytab", NULL);
- TREE *ans = make_leaf(csound, T_OPCODE, op);
- ans->left = make_leaf(csound, T_IDENT_T, (ORCTOKEN *)$1);
- ans->right = make_leaf(csound, T_IDENT_T, (ORCTOKEN *)$3);
+ TREE *ans = make_leaf(csound,LINE, T_OPCODE, op);
+ ans->left = make_leaf(csound,LINE, T_IDENT_T, (ORCTOKEN *)$1);
+ ans->right = make_leaf(csound,LINE, T_IDENT_T, (ORCTOKEN *)$3);
$$ = ans;
}
- | T_IDENT_T S_SLB iexp S_SRB S_ASSIGN expr S_NL
+ | T_IDENT_T '[' iexp ']' '=' expr NEWLINE
{
- TREE *ans = make_leaf(csound, S_ASSIGN, (ORCTOKEN *)$5);
- ans->left = make_leaf(csound, T_IDENT_T, (ORCTOKEN *)$1);
+ TREE *ans = make_leaf(csound,LINE, '=', (ORCTOKEN *)$5);
+ ans->left = make_leaf(csound,LINE, T_IDENT_T, (ORCTOKEN *)$1);
ans->right = appendToTree(csound, $3, $6);
/* ans->value->lexeme = get_assignment_type(csound,
ans->left->value->lexeme, ans->right->value->lexeme); */
@@ -371,11 +343,11 @@ statement : ident S_ASSIGN expr S_NL
$$ = ans;
/* #ifdef PARCS */
/* csp_orc_sa_global_read_write_add_list(csound, */
- /* csp_orc_sa_globals_find(csound, ans->left) */
- /* csp_orc_sa_globals_find(csound, ans->right)); */
+ /* csp_orc_sa_globals_find(csound, ans->left) */
+ /* csp_orc_sa_globals_find(csound, ans->right)); */
/* #endif */
}
- | ans opcode exprlist S_NL
+ | ans opcode exprlist NEWLINE
{
$2->left = $1;
@@ -386,9 +358,10 @@ statement : ident S_ASSIGN expr S_NL
csp_orc_sa_global_read_write_add_list(csound,
csp_orc_sa_globals_find(csound, $2->left),
csp_orc_sa_globals_find(csound, $2->right));
+ csp_orc_sa_interlocks(csound, $2->value);
#endif
}
- | opcode0 exprlist S_NL
+ | opcode0 exprlist NEWLINE
{
((TREE *)$1)->left = NULL;
((TREE *)$1)->right = (TREE *)$2;
@@ -398,70 +371,85 @@ statement : ident S_ASSIGN expr S_NL
csp_orc_sa_global_read_add_list(csound,
csp_orc_sa_globals_find(csound,
$1->right));
+ csp_orc_sa_interlocks(csound, $1->value);
#endif
}
- | T_LABEL
+ | LABEL_TOKEN
{
- $$ = make_leaf(csound, T_LABEL, (ORCTOKEN *)$1);
+ $$ = make_leaf(csound,LINE, LABEL_TOKEN, (ORCTOKEN *)$1);
}
- | goto label S_NL
+ | goto label NEWLINE
{
$1->left = NULL;
- $1->right = make_leaf(csound, T_LABEL, (ORCTOKEN *)$2);
+ $1->right = make_leaf(csound, LINE,
+ LABEL_TOKEN, (ORCTOKEN *)$2);
$$ = $1;
}
- | T_IF expr goto label S_NL
+ | IF_TOKEN bexpr goto label NEWLINE
{
$3->left = NULL;
- $3->right = make_leaf(csound, T_LABEL, (ORCTOKEN *)$4);
- $$ = make_node(csound, T_IF, $2, $3);
+ $3->right = make_leaf(csound, LINE,
+ LABEL_TOKEN, (ORCTOKEN *)$4);
+ $$ = make_node(csound,LINE, IF_TOKEN, $2, $3);
}
| ifthen
- | T_UNTIL expr T_DO statementlist T_OD
+ | UNTIL_TOKEN bexpr DO_TOKEN statementlist OD_TOKEN
{
- $$ = make_leaf(csound, T_UNTIL, (ORCTOKEN *)$1);
+ $$ = make_leaf(csound,LINE, UNTIL_TOKEN, (ORCTOKEN *)$1);
$$->left = $2;
$$->right = $4;
}
- | S_NL { $$ = NULL; }
+ | NEWLINE { $$ = NULL; }
;
-
ans : ident { $$ = $1; }
- | ans S_COM ident { $$ = appendToTree(csound, $1, $3); }
+ | T_IDENT error
+ { csound->Message(csound,
+ "Unexpected untyped word %s when expecting a variable\n",
+ ((ORCTOKEN*)$1)->lexeme);
+ $$ = NULL;
+ }
+ | ans ',' ident { $$ = appendToTree(csound, $1, $3); }
+ | ans ',' T_IDENT error
+ { csound->Message(csound,
+ "Unexpected untyped word %s when expecting a variable\n",
+ ((ORCTOKEN*)$3)->lexeme);
+ $$ = appendToTree(csound, $1, NULL);
+ }
;
-ifthen : T_IF expr then S_NL statementlist T_ENDIF S_NL
+ifthen : IF_TOKEN bexpr then NEWLINE statementlist ENDIF_TOKEN NEWLINE
{
$3->right = $5;
- $$ = make_node(csound, T_IF, $2, $3);
+ $$ = make_node(csound,LINE, IF_TOKEN, $2, $3);
//print_tree(csound, "if-endif", $$);
}
- | T_IF expr then S_NL statementlist T_ELSE statementlist T_ENDIF S_NL
+ | IF_TOKEN bexpr then NEWLINE statementlist ELSE_TOKEN
+ statementlist ENDIF_TOKEN NEWLINE
{
$3->right = $5;
- $3->next = make_node(csound, T_ELSE, NULL, $7);
- $$ = make_node(csound, T_IF, $2, $3);
+ $3->next = make_node(csound,LINE, ELSE_TOKEN, NULL, $7);
+ $$ = make_node(csound,LINE, IF_TOKEN, $2, $3);
//print_tree(csound, "if-else", $$);
}
- | T_IF expr then S_NL statementlist elseiflist T_ENDIF S_NL
+ | IF_TOKEN bexpr then NEWLINE statementlist elseiflist ENDIF_TOKEN NEWLINE
{
if (UNLIKELY(PARSER_DEBUG))
csound->Message(csound, "IF-ELSEIF FOUND!\n");
$3->right = $5;
$3->next = $6;
- $$ = make_node(csound, T_IF, $2, $3);
+ $$ = make_node(csound, LINE, IF_TOKEN, $2, $3);
//print_tree(csound, "if-elseif\n", $$);
}
- | T_IF expr then S_NL statementlist elseiflist T_ELSE
- statementlist T_ENDIF S_NL
+ | IF_TOKEN bexpr then NEWLINE statementlist elseiflist ELSE_TOKEN
+ statementlist ENDIF_TOKEN NEWLINE
{
TREE * tempLastNode;
$3->right = $5;
$3->next = $6;
- $$ = make_node(csound, T_IF, $2, $3);
+ $$ = make_node(csound, LINE, IF_TOKEN, $2, $3);
tempLastNode = $$;
@@ -469,7 +457,8 @@ ifthen : T_IF expr then S_NL statementlist T_ENDIF S_NL
tempLastNode = tempLastNode->right->next;
}
- tempLastNode->right->next = make_node(csound, T_ELSE, NULL, $8);
+ tempLastNode->right->next = make_node(csound, LINE,
+ ELSE_TOKEN, NULL, $8);
//print_tree(csound, "IF TREE", $$);
}
;
@@ -478,7 +467,8 @@ elseiflist : elseiflist elseif
{
TREE * tempLastNode = $1;
- while (tempLastNode->right!=NULL && tempLastNode->right->next!=NULL) {
+ while (tempLastNode->right!=NULL &&
+ tempLastNode->right->next!=NULL) {
tempLastNode = tempLastNode->right->next;
}
@@ -488,30 +478,30 @@ elseiflist : elseiflist elseif
| elseif { $$ = $1; }
;
-elseif : T_ELSEIF expr then S_NL statementlist
+elseif : ELSEIF_TOKEN bexpr then NEWLINE statementlist
{
if (UNLIKELY(PARSER_DEBUG))
csound->Message(csound, "ELSEIF FOUND!\n");
$3->right = $5;
- $$ = make_node(csound, T_ELSEIF, $2, $3);
+ $$ = make_node(csound,LINE, ELSEIF_TOKEN, $2, $3);
//print_tree(csound, "ELSEIF", $$);
}
;
-then : T_THEN
- { $$ = make_leaf(csound, T_THEN, (ORCTOKEN *)$1); }
- | T_KTHEN
- { $$ = make_leaf(csound, T_KTHEN, (ORCTOKEN *)$1); }
- | T_ITHEN
- { $$ = make_leaf(csound, T_ITHEN, (ORCTOKEN *)$1); }
+then : THEN_TOKEN
+ { $$ = make_leaf(csound,LINE, THEN_TOKEN, (ORCTOKEN *)$1); }
+ | KTHEN_TOKEN
+ { $$ = make_leaf(csound,LINE, KTHEN_TOKEN, (ORCTOKEN *)$1); }
+ | ITHEN_TOKEN
+ { $$ = make_leaf(csound,LINE, ITHEN_TOKEN, (ORCTOKEN *)$1); }
;
-goto : T_GOTO
- { $$ = make_leaf(csound, T_GOTO, (ORCTOKEN *)$1); }
- | T_KGOTO
- { $$ = make_leaf(csound, T_KGOTO, (ORCTOKEN *)$1); }
- | T_IGOTO
- { $$ = make_leaf(csound, T_IGOTO, (ORCTOKEN *)$1); }
+goto : GOTO_TOKEN
+ { $$ = make_leaf(csound,LINE, GOTO_TOKEN, (ORCTOKEN *)$1); }
+ | KGOTO_TOKEN
+ { $$ = make_leaf(csound,LINE, KGOTO_TOKEN, (ORCTOKEN *)$1); }
+ | IGOTO_TOKEN
+ { $$ = make_leaf(csound,LINE, IGOTO_TOKEN, (ORCTOKEN *)$1); }
;
/* Allow all words as a label */
@@ -536,155 +526,175 @@ label : T_OPCODE { $$ = (TREE *)$1; }
;
-exprlist : exprlist S_COM expr
+exprlist : exprlist ',' expr
{
- /* $$ = make_node(S_COM, $1, $3); */
+ /* $$ = make_node(',', $1, $3); */
$$ = appendToTree(csound, $1, $3);
}
- | exprlist S_COM label
+ | exprlist ',' label
{
- /* $$ = make_node(S_COM, $1, $3); */
+ /* $$ = make_node(',', $1, $3); */
$$ = appendToTree(csound, $1,
- make_leaf(csound, T_LABEL, (ORCTOKEN *)$3));
+ make_leaf(csound, LINE,
+ LABEL_TOKEN, (ORCTOKEN *)$3));
}
- | exprlist S_COM error
+ | exprlist ',' error
| expr { $$ = $1; }
- | T_IDENT { $$ = make_leaf(csound, T_LABEL, (ORCTOKEN *)$1); }
+ | T_IDENT { $$ = make_leaf(csound, LINE, LABEL_TOKEN, (ORCTOKEN *)$1); }
| /* null */ { $$ = NULL; }
;
-expr : expr S_Q expr S_COL expr %prec S_Q
- { $$ = make_node(csound, S_Q, $1,
- make_node(csound, S_COL, $3, $5)); }
- | expr S_Q expr S_COL error
- | expr S_Q expr error
- | expr S_Q error
- | expr S_LE expr { $$ = make_node(csound, S_LE, $1, $3); }
+bexpr : '(' bexpr ')' { $$ = $2; }
+ | expr S_LE expr { $$ = make_node(csound, LINE, S_LE, $1, $3); }
| expr S_LE error
- | expr S_GE expr { $$ = make_node(csound, S_GE, $1, $3); }
+ | expr S_GE expr { $$ = make_node(csound, LINE, S_GE, $1, $3); }
| expr S_GE error
- | expr S_NEQ expr { $$ = make_node(csound, S_NEQ, $1, $3); }
+ | expr S_NEQ expr { $$ = make_node(csound, LINE, S_NEQ, $1, $3); }
| expr S_NEQ error
- | expr S_EQ expr { $$ = make_node(csound, S_EQ, $1, $3); }
+ | expr S_EQ expr { $$ = make_node(csound, LINE, S_EQ, $1, $3); }
| expr S_EQ error
- | expr S_ASSIGN expr { $$ = make_node(csound, S_EQ, $1, $3); }
- | expr S_ASSIGN error
- | expr S_GT expr { $$ = make_node(csound, S_GT, $1, $3); }
+ | expr '=' expr { $$ = make_node(csound, LINE, S_EQ, $1, $3); }
+ | expr '=' error
+ | expr S_GT expr { $$ = make_node(csound, LINE, S_GT, $1, $3); }
| expr S_GT error
- | expr S_LT expr { $$ = make_node(csound, S_LT, $1, $3); }
+ | expr S_LT expr { $$ = make_node(csound, LINE, S_LT, $1, $3); }
| expr S_LT error
- | expr S_AND expr { $$ = make_node(csound, S_AND, $1, $3); }
- | expr S_AND error
- | expr S_OR expr { $$ = make_node(csound, S_OR, $1, $3); }
- | expr S_OR error
- | S_NOT expr %prec S_UNOT { $$ = make_node(csound, S_UNOT, $2, NULL); }
- | S_NOT error
+ | bexpr S_AND bexpr { $$ = make_node(csound, LINE, S_AND, $1, $3); }
+ | bexpr S_AND error
+ | bexpr S_OR bexpr { $$ = make_node(csound, LINE, S_OR, $1, $3); }
+ | bexpr S_OR error
+ | '!' bexpr %prec S_UNOT { $$ = make_node(csound, LINE,
+ S_UNOT, $2, NULL); }
+ | '!' error
+ ;
+
+expr : bexpr '?' expr ':' expr %prec '?'
+ { $$ = make_node(csound,LINE, '?', $1,
+ make_node(csound, LINE, ':', $3, $5)); }
+ | bexpr '?' expr ':' error
+ | bexpr '?' expr error
+ | bexpr '?' error
| iexp { $$ = $1; }
;
-iexp : iexp S_PLUS iterm { $$ = make_node(csound, S_PLUS, $1, $3); }
- | iexp S_PLUS error
- | iexp S_MINUS iterm { $$ = make_node(csound, S_MINUS, $1, $3); }
- | iexp S_MINUS error
+iexp : iexp '+' iterm { $$ = make_node(csound, LINE, '+', $1, $3); }
+ | iexp '+' error
+ | iexp '-' iterm { $$ = make_node(csound ,LINE, '-', $1, $3); }
+ | iexp '-' error
| iterm { $$ = $1; }
;
-iterm : iterm S_TIMES ifac { $$ = make_node(csound, S_TIMES, $1, $3); }
- | iterm S_TIMES error
- | iterm S_DIV ifac { $$ = make_node(csound, S_DIV, $1, $3); }
- | iterm S_DIV error
- | iterm S_MOD ifac { $$ = make_node(csound, S_MOD, $1, $3); }
- | iterm S_MOD error
+iterm : iterm '*' ifac { $$ = make_node(csound, LINE, '*', $1, $3); }
+ | iterm '*' error
+ | iterm '/' ifac { $$ = make_node(csound, LINE, '/', $1, $3); }
+ | iterm '/' error
+ | iterm '%' ifac { $$ = make_node(csound, LINE, '%', $1, $3); }
+ | iterm '%' error
| ifac { $$ = $1; }
;
ifac : ident { $$ = $1; }
| constant { $$ = $1; }
- | T_IDENT_T S_SLB iexp S_SRB
+ | T_IDENT_T '[' iexp ']'
{
- $$ = make_node(csound, S_TABREF,
- make_leaf(csound, T_IDENT_T, (ORCTOKEN*)$1), $3);
+ $$ = make_node(csound,LINE, S_TABREF,
+ make_leaf(csound, LINE,
+ T_IDENT_T, (ORCTOKEN*)$1), $3);
}
- | S_MINUS ifac %prec S_UMINUS
+ | '-' ifac %prec S_UMINUS
{
- $$ = make_node(csound, S_UMINUS, NULL, $2);
+ $$ = make_node(csound,LINE, S_UMINUS, NULL, $2);
}
- | S_PLUS ifac %prec S_UMINUS
+ | '+' ifac %prec S_UMINUS
{
$$ = $2;
}
- | ifac S_POW ifac { $$ = make_node(csound, S_POW, $1, $3); }
- | ifac S_BITOR ifac { $$ = make_node(csound, S_BITOR, $1, $3); }
- | ifac S_BITAND ifac { $$ = make_node(csound, S_BITAND, $1, $3); }
- | ifac S_NEQV ifac { $$ = make_node(csound, S_NEQV, $1, $3); }
- | ifac S_BITSHL ifac { $$ = make_node(csound, S_BITSHL, $1, $3); }
- | ifac S_BITSHR ifac { $$ = make_node(csound, S_BITSHR, $1, $3); }
- | S_BITNOT ifac %prec S_UMINUS
- { $$ = make_node(csound, S_BITNOT, NULL, $2);}
- | S_MINUS error
- | S_LB expr S_RB { $$ = $2; }
- | S_LB expr error
- | S_LB error
- | function S_LB exprlist S_RB
+ | ifac '^' ifac { $$ = make_node(csound, LINE, '^', $1, $3); }
+ | ifac '|' ifac { $$ = make_node(csound, LINE, '|', $1, $3); }
+ | ifac '&' ifac { $$ = make_node(csound, LINE, '&', $1, $3); }
+ | ifac '#' ifac { $$ = make_node(csound, LINE, '#', $1, $3); }
+ | ifac S_BITSHIFT_LEFT ifac
+ { $$ = make_node(csound, LINE, S_BITSHIFT_LEFT, $1, $3); }
+ | ifac S_BITSHIFT_RIGHT ifac
+ { $$ = make_node(csound, LINE, S_BITSHIFT_RIGHT, $1, $3); }
+ | '~' ifac %prec S_UMINUS
+ { $$ = make_node(csound, LINE, '~', NULL, $2);}
+ | '-' error
+ | '(' expr ')' { $$ = $2; }
+ | '(' expr error
+ | '(' error
+ | function '(' exprlist ')'
{
$1->left = NULL;
$1->right = $3;
$$ = $1;
}
- | function S_LB error
+ | function '(' error
;
-function : T_FUNCTION { $$ = make_leaf(csound, T_FUNCTION, (ORCTOKEN *)$1); }
- ;
+function : T_FUNCTION {
+ printf("FUNCTION ans=%p, token=%p %p\n",
+ $1, ((ORCTOKEN *)$1)->value);
+#ifdef PARCS
+ // if ((ORCTOKEN *)$1->value != 0)
+ csp_orc_sa_interlocksf(csound, ((ORCTOKEN *)$1)->value);
+#endif
+ $$ = make_leaf(csound, LINE, T_FUNCTION, (ORCTOKEN *)$1);
+ }
-/* exprstrlist : exprstrlist S_COM expr
- { $$ = make_node(csound, S_COM, $1, $3); }
- | exprstrlist S_COM T_STRCONST
- { $$ = make_node(csound, S_COM, $1,
- make_leaf(csound, T_STRCONST, (ORCTOKEN *)$3)); }
- | exprstrlist S_COM error
- | expr { $$ = $1; }
- ;
- */
-
-rident : T_SRATE { $$ = make_leaf(csound, T_SRATE, (ORCTOKEN *)$1); }
- | T_KRATE { $$ = make_leaf(csound, T_KRATE, (ORCTOKEN *)$1); }
- | T_KSMPS { $$ = make_leaf(csound, T_KSMPS, (ORCTOKEN *)$1); }
- | T_NCHNLS { $$ = make_leaf(csound, T_NCHNLS, (ORCTOKEN *)$1); }
- | T_NCHNLSI { $$ = make_leaf(csound, T_NCHNLSI, (ORCTOKEN *)$1); }
- | T_0DBFS { $$ = make_leaf(csound, T_0DBFS, (ORCTOKEN *)$1); }
+rident : SRATE_TOKEN { $$ = make_leaf(csound, LINE,
+ SRATE_TOKEN, (ORCTOKEN *)$1); }
+ | KRATE_TOKEN { $$ = make_leaf(csound, LINE,
+ KRATE_TOKEN, (ORCTOKEN *)$1); }
+ | KSMPS_TOKEN { $$ = make_leaf(csound, LINE,
+ KSMPS_TOKEN, (ORCTOKEN *)$1); }
+ | NCHNLS_TOKEN { $$ = make_leaf(csound, LINE,
+ NCHNLS_TOKEN, (ORCTOKEN *)$1); }
+ | NCHNLSI_TOKEN { $$ = make_leaf(csound, LINE,
+ NCHNLSI_TOKEN, (ORCTOKEN *)$1); }
+ | ZERODBFS_TOKEN { $$ = make_leaf(csound, LINE,
+ ZERODBFS_TOKEN, (ORCTOKEN *)$1); }
;
-ident : T_IDENT_I { $$ = make_leaf(csound, T_IDENT_I, (ORCTOKEN *)$1); }
- | T_IDENT_K { $$ = make_leaf(csound, T_IDENT_K, (ORCTOKEN *)$1); }
- | T_IDENT_F { $$ = make_leaf(csound, T_IDENT_F, (ORCTOKEN *)$1); }
- | T_IDENT_W { $$ = make_leaf(csound, T_IDENT_W, (ORCTOKEN *)$1); }
- | T_IDENT_S { $$ = make_leaf(csound, T_IDENT_S, (ORCTOKEN *)$1); }
- | T_IDENT_T { $$ = make_leaf(csound, T_IDENT_T, (ORCTOKEN *)$1); }
- | T_IDENT_A { $$ = make_leaf(csound, T_IDENT_A, (ORCTOKEN *)$1); }
- | T_IDENT_P { $$ = make_leaf(csound, T_IDENT_P, (ORCTOKEN *)$1); }
- | gident { $$ = $1; }
+ident : T_IDENT_I { $$ = make_leaf(csound, LINE, T_IDENT_I, (ORCTOKEN *)$1); }
+ | T_IDENT_K { $$ = make_leaf(csound, LINE, T_IDENT_K, (ORCTOKEN *)$1); }
+ | T_IDENT_F { $$ = make_leaf(csound, LINE, T_IDENT_F, (ORCTOKEN *)$1); }
+ | T_IDENT_W { $$ = make_leaf(csound, LINE, T_IDENT_W, (ORCTOKEN *)$1); }
+ | T_IDENT_S { $$ = make_leaf(csound, LINE, T_IDENT_S, (ORCTOKEN *)$1); }
+ | T_IDENT_T { $$ = make_leaf(csound, LINE, T_IDENT_T, (ORCTOKEN *)$1); }
+ | T_IDENT_A { $$ = make_leaf(csound, LINE, T_IDENT_A, (ORCTOKEN *)$1); }
+ | T_IDENT_P { $$ = make_leaf(csound, LINE, T_IDENT_P, (ORCTOKEN *)$1); }
+ | gident { $$ = $1; }
;
-gident : T_IDENT_GI { $$ = make_leaf(csound, T_IDENT_GI, (ORCTOKEN *)$1); }
- | T_IDENT_GK { $$ = make_leaf(csound, T_IDENT_GK, (ORCTOKEN *)$1); }
- | T_IDENT_GF { $$ = make_leaf(csound, T_IDENT_GF, (ORCTOKEN *)$1); }
- | T_IDENT_GW { $$ = make_leaf(csound, T_IDENT_GW, (ORCTOKEN *)$1); }
- | T_IDENT_GS { $$ = make_leaf(csound, T_IDENT_GS, (ORCTOKEN *)$1); }
- | T_IDENT_GT { $$ = make_leaf(csound, T_IDENT_GS, (ORCTOKEN *)$1); }
- | T_IDENT_GA { $$ = make_leaf(csound, T_IDENT_GA, (ORCTOKEN *)$1); }
+gident : T_IDENT_GI { $$ = make_leaf(csound, LINE, T_IDENT_GI, (ORCTOKEN *)$1); }
+ | T_IDENT_GK { $$ = make_leaf(csound, LINE, T_IDENT_GK, (ORCTOKEN *)$1); }
+ | T_IDENT_GF { $$ = make_leaf(csound, LINE, T_IDENT_GF, (ORCTOKEN *)$1); }
+ | T_IDENT_GW { $$ = make_leaf(csound, LINE, T_IDENT_GW, (ORCTOKEN *)$1); }
+ | T_IDENT_GS { $$ = make_leaf(csound, LINE, T_IDENT_GS, (ORCTOKEN *)$1); }
+ | T_IDENT_GT { $$ = make_leaf(csound, LINE, T_IDENT_GS, (ORCTOKEN *)$1); }
+ | T_IDENT_GA { $$ = make_leaf(csound, LINE, T_IDENT_GA, (ORCTOKEN *)$1); }
;
-constant : T_INTGR { $$ = make_leaf(csound, T_INTGR, (ORCTOKEN *)$1); }
- | T_NUMBER { $$ = make_leaf(csound, T_NUMBER, (ORCTOKEN *)$1); }
- | T_STRCONST { $$ = make_leaf(csound, T_STRCONST, (ORCTOKEN *)$1); }
- | T_SRATE { $$ = make_leaf(csound, T_NUMBER, (ORCTOKEN *)$1); }
- | T_KRATE { $$ = make_leaf(csound, T_NUMBER, (ORCTOKEN *)$1); }
- | T_KSMPS { $$ = make_leaf(csound, T_NUMBER, (ORCTOKEN *)$1); }
- | T_NCHNLS { $$ = make_leaf(csound, T_NUMBER, (ORCTOKEN *)$1); }
- | T_NCHNLSI { $$ = make_leaf(csound, T_NUMBER, (ORCTOKEN *)$1); }
- | T_0DBFS { $$ = make_leaf(csound, T_NUMBER, (ORCTOKEN *)$1); }
+constant : INTEGER_TOKEN { $$ = make_leaf(csound, LINE,
+ INTEGER_TOKEN, (ORCTOKEN *)$1); }
+ | NUMBER_TOKEN { $$ = make_leaf(csound, LINE,
+ NUMBER_TOKEN, (ORCTOKEN *)$1); }
+ | STRING_TOKEN { $$ = make_leaf(csound, LINE,
+ STRING_TOKEN, (ORCTOKEN *)$1); }
+ | SRATE_TOKEN { $$ = make_leaf(csound, LINE,
+ NUMBER_TOKEN, (ORCTOKEN *)$1); }
+ | KRATE_TOKEN { $$ = make_leaf(csound, LINE,
+ NUMBER_TOKEN, (ORCTOKEN *)$1); }
+ | KSMPS_TOKEN { $$ = make_leaf(csound, LINE,
+ NUMBER_TOKEN, (ORCTOKEN *)$1); }
+ | NCHNLS_TOKEN { $$ = make_leaf(csound, LINE,
+ NUMBER_TOKEN, (ORCTOKEN *)$1); }
+ | NCHNLSI_TOKEN { $$ = make_leaf(csound, LINE,
+ NUMBER_TOKEN, (ORCTOKEN *)$1); }
+ | ZERODBFS_TOKEN { $$ = make_leaf(csound, LINE,
+ NUMBER_TOKEN, (ORCTOKEN *)$1); }
;
opcode0 : T_OPCODE0
@@ -692,11 +702,11 @@ opcode0 : T_OPCODE0
if (UNLIKELY(PARSER_DEBUG))
csound->Message(csound, "opcode0 $1=%p (%s)\n",
$1,((ORCTOKEN *)$1)->lexeme );
- $$ = make_leaf(csound, T_OPCODE0, (ORCTOKEN *)$1);
+ $$ = make_leaf(csound,LINE, T_OPCODE0, (ORCTOKEN *)$1);
}
;
-opcode : T_OPCODE { $$ = make_leaf(csound, T_OPCODE, (ORCTOKEN *)$1); }
+opcode : T_OPCODE { $$ = make_leaf(csound,LINE, T_OPCODE, (ORCTOKEN *)$1); }
;
%%
@@ -709,7 +719,8 @@ yyerror(char *s, ...)
va_start(ap, s);
if(yylloc.first_line)
- fprintf(stderr, "%d.%d-%d.%d: error: ", yylloc.first_line, yylloc.first_column,
+ fprintf(stderr, "%d.%d-%d.%d: error: ",
+ yylloc.first_line, yylloc.first_column,
yylloc.last_line, yylloc.last_column);
vfprintf(stderr, s, ap);
fprintf(stderr, "\n");
diff --git a/Engine/csound_orc_compile.c b/Engine/csound_orc_compile.c
index 76cef3e..78e136d 100644
--- a/Engine/csound_orc_compile.c
+++ b/Engine/csound_orc_compile.c
@@ -35,8 +35,7 @@
#include "typetabl.h"
typedef struct NAME_ {
- char *namep;
- struct NAME_ *nxt;
+ char *namep; struct NAME_ *nxt;
int type, count;
} NAME;
@@ -54,6 +53,9 @@ typedef struct {
int32 poolcount, strpool_cnt, argoffsize;
int nconsts;
int *constTbl;
+ int32 *typemask_tabl;
+ int32 *typemask_tabl_in, *typemask_tabl_out;
+ int lgprevdef;
} OTRAN_GLOBALS;
static int gexist(CSOUND *, char *), gbloffndx(CSOUND *, char *);
@@ -61,11 +63,11 @@ static int lcloffndx(CSOUND *, char *);
static int constndx(CSOUND *, const char *);
static int strconstndx(CSOUND *, const char *);
static void insprep(CSOUND *, INSTRTXT *);
-static void lgbuild(CSOUND *, char *);
+static void lgbuild(CSOUND *, char *, int inarg);
static void gblnamset(CSOUND *, char *);
static int plgndx(CSOUND *, char *);
static NAME *lclnamset(CSOUND *, char *);
- int lgexist(CSOUND *, const char *);
+/* int lgexist(CSOUND *, const char *);*/
static void delete_global_namepool(CSOUND *);
static void delete_local_namepool(CSOUND *);
static int pnum(char *s) ;
@@ -106,10 +108,59 @@ static void lblclear(CSOUND *csound)
}
#endif
+static void intyperr(CSOUND *csound, int n, char *s, char *opname,
+ char tfound, char expect, int line)
+{
+ char t[10];
+
+ switch (tfound) {
+ case 'w':
+ case 'f':
+ case 'a':
+ case 'k':
+ case 'i':
+ case 'P':
+ case 't':
+ case 'p': t[0] = tfound;
+ t[1] = '\0';
+ break;
+ case 'r':
+ case 'c': strcpy(t,"const");
+ break;
+ case 'S': strcpy(t,"string");
+ break;
+ case 'b':
+ case 'B': strcpy(t,"boolean");
+ break;
+ case '?': strcpy(t,"?");
+ break;
+ }
+ synterr(csound, Str("input arg %d '%s' of type %s not allowed when "
+ "expecting %c (for opcode %s), line %d\n"),
+ n+1, s, t, expect, opname, line);
+}
+
+static void lblrequest(CSOUND *csound, char *s)
+{
+ int req;
+
+ /* for (req=0; req<ST(lblcnt); req++) */
+ /* if (strcmp(ST(lblreq)[req].label,s) == 0) */
+ /* return; */
+ /* if (++ST(lblcnt) >= ST(lblmax)) { */
+ /* LBLREQ *tmp; */
+ /* ST(lblmax) += LBLMAX; */
+ /* tmp = mrealloc(csound, ST(lblreq), ST(lblmax) * sizeof(LBLREQ)); */
+ /* ST(lblreq) = tmp; */
+ /* } */
+ /* ST(lblreq)[req].reqline = ST(curline); */
+ /* ST(lblreq)[req].label =s; */
+}
+
static inline void resetouts(CSOUND *csound)
{
- csound->acount = csound->kcount = csound->icount = 0;
- csound->Bcount = csound->bcount = 0;
+ csound->acount = csound->kcount = csound->icount =
+ csound->Bcount = csound->bcount = 0;
}
/* Unused */
@@ -126,7 +177,7 @@ int tree_arg_list_count(TREE * root)
int count = 0;
TREE * current = root;
- while(current != NULL) {
+ while (current != NULL) {
current = current->next;
count++;
}
@@ -140,7 +191,7 @@ static OPTXT * last_optxt(OPTXT *optxt)
{
OPTXT *current = optxt;
- while(current->nxtop != NULL) {
+ while (current->nxtop != NULL) {
current = current->nxtop;
}
return current;
@@ -149,7 +200,7 @@ static OPTXT * last_optxt(OPTXT *optxt)
/**
* Append OPTXT op2 to end of OPTXT chain op1
*/
-static void append_optxt(OPTXT *op1, OPTXT *op2)
+static inline void append_optxt(OPTXT *op1, OPTXT *op2)
{
last_optxt(op1)->nxtop = op2;
}
@@ -167,7 +218,7 @@ void update_lclcount(CSOUND *csound, INSTRTXT *ip, TREE *argslist)
{
TREE * current = argslist;
- while(current != NULL) {
+ while (current != NULL) {
switch(current->type) {
case T_IDENT_S:
ip->lclscnt++;
@@ -187,8 +238,8 @@ void update_lclcount(CSOUND *csound, INSTRTXT *ip, TREE *argslist)
case T_IDENT_K:
case T_IDENT_F:
case T_IDENT_I:
- case T_NUMBER:
- case T_INTGR:
+ case NUMBER_TOKEN:
+ case INTEGER_TOKEN:
default:
ip->lclkcnt++;
if (UNLIKELY(PARSER_DEBUG))
@@ -199,7 +250,7 @@ void update_lclcount(CSOUND *csound, INSTRTXT *ip, TREE *argslist)
}
*/
-void set_xincod(CSOUND *csound, TEXT *tp, OENTRY *ep)
+void set_xincod(CSOUND *csound, TEXT *tp, OENTRY *ep, int line)
{
int n = tp->inlist->count;
char *s;
@@ -219,9 +270,12 @@ void set_xincod(CSOUND *csound, TEXT *tp, OENTRY *ep)
}
while (n--) { /* inargs: */
+ int32 tfound_m, treqd_m = 0L;
s = tp->inlist->arg[n];
if (n >= nreqd) { /* det type required */
+ csound->DebugMsg(csound, "%s(%d): type required: %c\n",
+ __FILE__, __LINE__, types[nreqd-1]);
switch (types[nreqd-1]) {
case 'M':
case 'N':
@@ -232,55 +286,62 @@ void set_xincod(CSOUND *csound, TEXT *tp, OENTRY *ep)
}
}
else treqd = types[n]; /* or given) */
+ csound->DebugMsg(csound, "%s(%d): treqd: %c\n", __FILE__, __LINE__, treqd);
if (treqd == 'l') { /* if arg takes lbl */
csound->DebugMsg(csound, "treqd = l");
- /*lblrequest(csound, s);*/ /* req a search */
+ lblrequest(csound, s); /* req a search */
continue; /* chk it later */
}
tfound = argtyp2(csound, s); /* else get arg type */
/* IV - Oct 31 2002 */
- /*tfound_m = ST(typemask_tabl)[(unsigned char) tfound];
- if (!(tfound_m & (ARGTYP_c|ARGTYP_p)) && !ST(lgprevdef) && *s != '"') {
- synterr(csound, Str("input arg '%s' used before defined"), s);
- }*/
- csound->DebugMsg(csound, "treqd %c, tfound %c", treqd, tfound);
- if (tfound == 'a' && n < 31) /* JMC added for FOG */
- /* 4 for FOF, 8 for FOG; expanded to 15 */
+ tfound_m = ST(typemask_tabl)[(unsigned char) tfound];
+ csound->DebugMsg(csound, "%s(%d): treqd: %c, tfound %c\n",
+ __FILE__, __LINE__,treqd, tfound);
+ csound->DebugMsg(csound, "treqd %c, tfound_m %d ST(lgprevdef) %d\n",
+ treqd, tfound_m);
+ if (!(tfound_m & (ARGTYP_c|ARGTYP_p)) && !ST(lgprevdef) && *s != '"') {
+ synterr(csound,
+ Str("input arg '%s' used before defined (in opcode %s),"
+ " line %d\n"),
+ s, ep->opname, line);
+ }
+ if (tfound == 'a' && n < 31) /* JMC added for FOG */
+ /* 4 for FOF, 8 for FOG; expanded to 15 */
tp->xincod |= (1 << n);
if (tfound == 'S' && n < 31)
tp->xincod_str |= (1 << n);
/* IV - Oct 31 2002: simplified code */
- /* if (!(tfound_m & ST(typemask_tabl_in)[(unsigned char) treqd])) { */
+ if (!(tfound_m & ST(typemask_tabl_in)[(unsigned char) treqd])) {
/* check for exceptional types */
- /*switch (treqd) {*/
- /*case 'Z':*/ /* indef kakaka ... */
- /*if (!(tfound_m & (n & 1 ? ARGTYP_a : ARGTYP_ipcrk)))
- intyperr(csound, n, tfound, treqd);
+ switch (treqd) {
+ case 'Z': /* indef kakaka ... */
+ if (!(tfound_m & (n & 1 ? ARGTYP_a : ARGTYP_ipcrk)))
+ intyperr(csound, n, s, ep->opname, tfound, treqd, line);
break;
- case 'x':
- treqd_m = ARGTYP_ipcr;*/ /* also allows i-rate */
- /*case 's':*/ /* a- or k-rate */
- /*treqd_m |= ARGTYP_a | ARGTYP_k;
- if (tfound_m & treqd_m) {
- if (tfound == 'a' && tp->outlist != ST(nullist)) {*/
- /*long outyp_m =*/ /* ??? */
- /*ST(typemask_tabl)[(unsigned char) argtyp(csound,
- tp->outlist->arg[0])];
- if (outyp_m & (ARGTYP_a | ARGTYP_w)) break;
+ case 'x':
+ treqd_m = ARGTYP_ipcr; /* also allows i-rate */
+ case 's': /* a- or k-rate */
+ treqd_m |= ARGTYP_a | ARGTYP_k;
+ if (tfound_m & treqd_m) {
+ if (tfound == 'a' && tp->outlist->count != 0) {
+ long outyp_m = /* ??? */
+ ST(typemask_tabl)[(unsigned char) argtyp2(csound,
+ tp->outlist->arg[0])];
+ if (outyp_m & (ARGTYP_a | ARGTYP_w)) break;
}
else
+ break;
+ }
+ default:
+ intyperr(csound, n, s, ep->opname, tfound, treqd, line);
break;
- }
- default:
- intyperr(csound, n, tfound, treqd);
- break;
- }
- }*/
+ }
+ }
}
csound->DebugMsg(csound, "xincod = %d", tp->xincod);
}
-void set_xoutcod(CSOUND *csound, TEXT *tp, OENTRY *ep)
+void set_xoutcod(CSOUND *csound, TEXT *tp, OENTRY *ep, int line)
{
int n = tp->outlist->count;
char *s;
@@ -290,7 +351,7 @@ void set_xoutcod(CSOUND *csound, TEXT *tp, OENTRY *ep)
if (nreqd < 0) /* for other opcodes */
nreqd = strlen(types = ep->outypes);
-/* if ((n != nreqd) && */ /* IV - Oct 24 2002: end of new code */
+/* if ((n != nreqd) && */ /* IV - Oct 24 2002: end of new code */
/* !(n > 0 && n < nreqd &&
(types[n] == (char) 'm' || types[n] == (char) 'z' ||
types[n] == (char) 'X' || types[n] == (char) 'N' ||
@@ -302,27 +363,30 @@ void set_xoutcod(CSOUND *csound, TEXT *tp, OENTRY *ep)
while (n--) { /* outargs: */
- /* long tfound_m;*/ /* IV - Oct 31 2002 */
+ long tfound_m; /* IV - Oct 31 2002 */
s = tp->outlist->arg[n];
treqd = types[n];
tfound = argtyp2(csound, s); /* found */
/* IV - Oct 31 2002 */
- /*tfound_m = ST(typemask_tabl)[(unsigned char) tfound];*/
+ tfound_m = ST(typemask_tabl)[(unsigned char) tfound];
/* IV - Sep 1 2002: xoutcod is the same as xincod for input */
if (tfound == 'a' && n < 31)
tp->xoutcod |= (1 << n);
if (tfound == 'S' && n < 31)
tp->xoutcod_str |= (1 << n);
csound->DebugMsg(csound, "treqd %c, tfound %c", treqd, tfound);
- /*if (tfound_m & ARGTYP_w)
+ if (tfound_m & ARGTYP_w)
if (ST(lgprevdef)) {
- synterr(csound, Str("output name previously used, "
- "type '%c' must be uniquely defined"), tfound);
- }*/
+ synterr(csound, Str("output name previously used, "
+ "type '%c' must be uniquely defined, line %d"),
+ tfound, line);
+ }
/* IV - Oct 31 2002: simplified code */
- /*if (!(tfound_m & ST(typemask_tabl_out)[(unsigned char) treqd])) {
- synterr(csound, Str("output arg '%s' illegal type"), s);
- }*/
+ if (!(tfound_m & ST(typemask_tabl_out)[(unsigned char) treqd])) {
+ synterr(csound, Str("output arg '%s' illegal type (for opcode %s),"
+ " line %d\n"),
+ s, ep->opname, line);
+ }
}
}
@@ -343,7 +407,7 @@ OPTXT *create_opcode(CSOUND *csound, TREE *root, INSTRTXT *ip)
tp = &(optxt->t);
switch(root->type) {
- case T_LABEL:
+ case LABEL_TOKEN:
/* TODO - Need to verify here or elsewhere that this label is not
already defined */
tp->opnum = LABEL;
@@ -358,12 +422,12 @@ OPTXT *create_opcode(CSOUND *csound, TREE *root, INSTRTXT *ip)
ip->opdstot += csound->opcodlst[LABEL].dsblksiz;
break;
- case T_GOTO:
- case T_IGOTO:
- case T_KGOTO:
+ case GOTO_TOKEN:
+ case IGOTO_TOKEN:
+ case KGOTO_TOKEN:
case T_OPCODE:
case T_OPCODE0:
- case S_ASSIGN:
+ case '=':
if (UNLIKELY(PARSER_DEBUG))
csound->Message(csound,
"create_opcode: Found node for opcode %s\n",
@@ -407,9 +471,11 @@ OPTXT *create_opcode(CSOUND *csound, TREE *root, INSTRTXT *ip)
if ((n = pnum(arg)) >= 0) {
if (n > ip->pmax) ip->pmax = n;
}
- else {
- lgbuild(csound, arg);
- }
+ /* VL 14/12/11 : calling lgbuild here seems to be problematic for
+ undef arg checks */
+ else {
+ lgbuild(csound, arg, 1);
+ }
}
@@ -430,7 +496,7 @@ OPTXT *create_opcode(CSOUND *csound, TREE *root, INSTRTXT *ip)
if (n > ip->pmax) ip->pmax = n;
}
else {
- lgbuild(csound, arg);
+ lgbuild(csound, arg, 0);
}
}
@@ -445,9 +511,9 @@ OPTXT *create_opcode(CSOUND *csound, TREE *root, INSTRTXT *ip)
// csound->Message(csound, "Opcode InTypes: %s\n", ep->intypes);
// csound->Message(csound, "Opcode OutTypes: %s\n", ep->outypes);
-
- set_xincod(csound, tp, ep);
- set_xoutcod(csound, tp, ep);
+
+ set_xincod(csound, tp, ep, root->line);
+ set_xoutcod(csound, tp, ep, root->line);
if (root->right != NULL) {
if (ep->intypes[0] != 'l') { /* intype defined by 1st inarg */
@@ -465,9 +531,9 @@ OPTXT *create_opcode(CSOUND *csound, TREE *root, INSTRTXT *ip)
tp->pftype = tp->intype;
}
- // csound->Message(csound,
- // Str("create_opcode[%s]: opnum for opcode: %d\n"),
- // root->value->lexeme, opnum);
+// csound->Message(csound,
+// Str("create_opcode[%s]: opnum for opcode: %d\n"),
+// root->value->lexeme, opnum);
}
break;
default:
@@ -548,49 +614,50 @@ INSTRTXT *create_instrument0(CSOUND *csound, TREE *root)
ip->t.inlist->arg[0] = strsav_string(csound, "0");
- while(current != NULL) {
+ while (current != NULL) {
- if (current->type != T_INSTR && current->type != T_UDO) {
+ if (current->type != INSTR_TOKEN && current->type != UDO_TOKEN) {
if (UNLIKELY(PARSER_DEBUG))
csound->Message(csound, "In INSTR 0: %s\n", current->value->lexeme);
- if (current->type == S_ASSIGN
+ if (current->type == '='
&& strcmp(current->value->lexeme, "=.r") == 0) {
MYFLT val = csound->pool[constndx(csound,
current->right->value->lexeme)];
- /* if (current->right->type == T_INTGR) {
+ /* if (current->right->type == INTEGER_TOKEN) {
val = FL(current->right->value->value);
} else {
val = FL(current->right->value->fvalue);
}*/
/* modify otran defaults*/
- if (current->left->type == T_SRATE) {
+ if (current->left->type == SRATE_TOKEN) {
csound->tran_sr = val;
}
- else if (current->left->type == T_KRATE) {
+ else if (current->left->type == KRATE_TOKEN) {
csound->tran_kr = val;
}
- else if (current->left->type == T_KSMPS) {
+ else if (current->left->type == KSMPS_TOKEN) {
csound->tran_ksmps = val;
}
- else if (current->left->type == T_NCHNLS) {
+ else if (current->left->type == NCHNLS_TOKEN) {
csound->tran_nchnls = current->right->value->value;
}
- else if (current->left->type == T_NCHNLSI) {
+ else if (current->left->type == NCHNLSI_TOKEN) {
csound->tran_nchnlsi = current->right->value->value;
- /* csound->Message(csound, "SETTING NCHNLS: %d\n", csound->tran_nchnls); */
+ /* csound->Message(csound, "SETTING NCHNLS: %d\n",
+ csound->tran_nchnls); */
}
- else if (current->left->type == T_0DBFS) {
+ else if (current->left->type == ZERODBFS_TOKEN) {
csound->tran_0dbfs = val;
- csound->Message(csound, "SETTING 0DBFS: %f\n", csound->tran_0dbfs);
+ /* csound->Message(csound, "SETTING 0DBFS: %f\n",
+ csound->tran_0dbfs); */
}
- /* TODO - Implement 0dbfs constant -- surely done?? */
}
op->nxtop = create_opcode(csound, current, ip);
@@ -660,7 +727,7 @@ INSTRTXT *create_instrument(CSOUND *csound, TREE *root)
* Note2: For now am not checking if root->left is a list (i.e. checking
* root->left->next is NULL or not to indicate list)
*/
- if (root->left->type == T_INTGR) { /* numbered instrument */
+ if (root->left->type == INTEGER_TOKEN) { /* numbered instrument */
int32 instrNum = (int32)root->left->value->value; /* Not used! */
c = csound->Malloc(csound, 10); /* arbritrarily chosen number of digits */
@@ -751,7 +818,8 @@ void close_instrument(CSOUND *csound, INSTRTXT * ip)
ip->lclkcnt = (ip->lclkcnt + 1) & (~1);
}
- ip->lclfixed = ip->lclkcnt + ip->lclwcnt * Wfloats * ip->lclpcnt * Pfloats;*/
+ ip->lclfixed = ip->lclkcnt +
+ ip->lclwcnt * Wfloats * ip->lclpcnt * Pfloats;*/
ip->mdepends = ip->mdepends >> 4;
@@ -796,125 +864,6 @@ void append_instrument(CSOUND * csound, INSTRTXT * instrtxt)
current->nxtinstxt = instrtxt;
}
-
-/* IV - Oct 12 2002: new function to parse arguments of opcode definitions */
-
-#if 0
-static int parse_opcode_args(CSOUND *csound, OENTRY *opc)
-{
- OPCODINFO *inm = (OPCODINFO*) opc->useropinfo;
- char *types, *otypes;
- int i, i_incnt, a_incnt, k_incnt, i_outcnt, a_outcnt, k_outcnt, err;
- int16 *a_inlist, *k_inlist, *i_inlist, *a_outlist, *k_outlist, *i_outlist;
-
- /* count the number of arguments, and check types */
- i = i_incnt = a_incnt = k_incnt = i_outcnt = a_outcnt = k_outcnt = err = 0;
- types = inm->intypes; otypes = opc->intypes;
- opc->dsblksiz = (uint16) sizeof(UOPCODE);
- if (!strcmp(types, "0"))
- types++; /* no input args */
- while (*types) {
- switch (*types) {
- case 'a':
- a_incnt++; *otypes++ = *types;
- break;
- case 'K':
- i_incnt++; /* also updated at i-time */
- case 'k':
- k_incnt++; *otypes++ = 'k';
- break;
- case 'i':
- case 'o':
- case 'p':
- case 'j':
- i_incnt++; *otypes++ = *types;
- break;
- default:
- synterr(csound, Str("invalid input type for opcode %s"), inm->name);
- err++; i--;
- }
- i++; types++;
- if (i > OPCODENUMOUTS_MAX) {
- synterr(csound, Str("too many input args for opcode %s"), inm->name);
- csound->LongJmp(csound, 1);
- }
- }
- *otypes++ = 'o'; *otypes = '\0'; /* optional arg for local ksmps */
- inm->inchns = i; /* total number of input chnls */
- inm->perf_incnt = a_incnt + k_incnt;
- opc->dsblksiz += (uint16) (sizeof(MYFLT*) * i);
- /* same for outputs */
- i = 0;
- types = inm->outtypes; otypes = opc->outypes;
- if (!strcmp(types, "0"))
- types++; /* no output args */
- while (*types) {
- if (i >= OPCODENUMOUTS_MAX) {
- synterr(csound, Str("too many output args for opcode %s"), inm->name);
- csound->LongJmp(csound, 1);
- }
- switch (*types) {
- case 'a':
- a_outcnt++; *otypes++ = *types;
- break;
- case 'K':
- i_outcnt++; /* also updated at i-time */
- case 'k':
- k_outcnt++; *otypes++ = 'k';
- break;
- case 'i':
- i_outcnt++; *otypes++ = *types;
- break;
- default:
- synterr(csound, Str("invalid output type for opcode %s"), inm->name);
- err++; i--;
- }
- i++; types++;
- }
- *otypes = '\0';
- inm->outchns = i; /* total number of output chnls */
- inm->perf_outcnt = a_outcnt + k_outcnt;
- opc->dsblksiz += (uint16) (sizeof(MYFLT*) * i);
- opc->dsblksiz = ((opc->dsblksiz + (uint16) 15)
- & (~((uint16) 15))); /* align (needed ?) */
- /* now build index lists for the various types of arguments */
- i = i_incnt + inm->perf_incnt + i_outcnt + inm->perf_outcnt;
- i_inlist = inm->in_ndx_list = (int16*) mmalloc(csound,
- sizeof(int16) * (i + 6));
- a_inlist = i_inlist + i_incnt + 1;
- k_inlist = a_inlist + a_incnt + 1;
- i = 0; types = inm->intypes;
- while (*types) {
- switch (*types++) {
- case 'a': *a_inlist++ = i; break;
- case 'k': *k_inlist++ = i; break;
- case 'K': *k_inlist++ = i; /* also updated at i-time */
- case 'i':
- case 'o':
- case 'p':
- case 'j': *i_inlist++ = i;
- }
- i++;
- }
- *i_inlist = *a_inlist = *k_inlist = -1; /* put delimiters */
- i_outlist = inm->out_ndx_list = k_inlist + 1;
- a_outlist = i_outlist + i_outcnt + 1;
- k_outlist = a_outlist + a_outcnt + 1;
- i = 0; types = inm->outtypes;
- while (*types) {
- switch (*types++) {
- case 'a': *a_outlist++ = i; break;
- case 'k': *k_outlist++ = i; break;
- case 'K': *k_outlist++ = i; /* also updated at i-time */
- case 'i': *i_outlist++ = i;
- }
- i++;
- }
- *i_outlist = *a_outlist = *k_outlist = -1; /* put delimiters */
- return err;
-}
-#endif
-
static int pnum(char *s) /* check a char string for pnum format */
/* and return the pnum ( >= 0 ) */
{ /* else return -1 */
@@ -958,7 +907,8 @@ void insert_instrtxt(CSOUND *csound, INSTRTXT *instrtxt, int32 instrNum) {
csound->instrtxtp[instrNum] = instrtxt;
}
-OPCODINFO *find_opcode_info(CSOUND *csound, char *opname) {
+OPCODINFO *find_opcode_info(CSOUND *csound, char *opname)
+{
OPCODINFO *opinfo = csound->opcodeInfo;
if (UNLIKELY(opinfo == NULL)) {
csound->Message(csound, Str("!!! csound->opcodeInfo is NULL !!!\n"));
@@ -979,8 +929,9 @@ OPCODINFO *find_opcode_info(CSOUND *csound, char *opname) {
/**
* Compile the given TREE node into structs for Csound to use
*/
-void csound_orc_compile(CSOUND *csound, TREE *root) {
- // csound->Message(csound, "Begin Compiling AST (Currently Implementing)\n");
+void csound_orc_compile(CSOUND *csound, TREE *root)
+{
+// csound->Message(csound, "Begin Compiling AST (Currently Implementing)\n");
OPARMS *O = csound->oparms;
INSTRTXT *instrtxt = NULL;
@@ -994,7 +945,7 @@ void csound_orc_compile(CSOUND *csound, TREE *root) {
strsav_create(csound);
- if (csound->otranGlobals == NULL) {
+ if (UNLIKELY(csound->otranGlobals == NULL)) {
csound->otranGlobals = csound->Calloc(csound, sizeof(OTRAN_GLOBALS));
}
csound->instrtxtp = (INSTRTXT **) mcalloc(csound, (1 + csound->maxinsno)
@@ -1019,6 +970,27 @@ void csound_orc_compile(CSOUND *csound, TREE *root) {
ST(constTbl) = (int*) mcalloc(csound, (256 + NCONSTS) * sizeof(int));
constndx(csound, "0");
+ if (!ST(typemask_tabl)) {
+ const int32 *ptr = typetabl1;
+ ST(typemask_tabl) = (int32*) mcalloc(csound, sizeof(int32) * 256);
+ ST(typemask_tabl_in) = (int32*) mcalloc(csound, sizeof(int32) * 256);
+ ST(typemask_tabl_out) = (int32*) mcalloc(csound, sizeof(int32) * 256);
+ while (*ptr) { /* basic types (both for input */
+ int32 pos = *ptr++; /* and output) */
+ ST(typemask_tabl)[pos] = ST(typemask_tabl_in)[pos] =
+ ST(typemask_tabl_out)[pos] = *ptr++;
+ }
+ ptr = typetabl2;
+ while (*ptr) { /* input types */
+ int32 pos = *ptr++;
+ ST(typemask_tabl_in)[pos] = *ptr++;
+ }
+ ptr = typetabl3;
+ while (*ptr) { /* output types */
+ int32 pos = *ptr++;
+ ST(typemask_tabl_out)[pos] = *ptr++;
+ }
+ }
instr0 = create_instrument0(csound, root);
prvinstxt = prvinstxt->nxtinstxt = instr0;
insert_instrtxt(csound, instr0, 0);
@@ -1027,10 +999,10 @@ void csound_orc_compile(CSOUND *csound, TREE *root) {
switch (current->type) {
case T_INIT:
- case S_ASSIGN:
+ case '=':
/* csound->Message(csound, "Assignment found\n"); */
break;
- case T_INSTR:
+ case INSTR_TOKEN:
/* csound->Message(csound, "Instrument found\n"); */
resetouts(csound); /* reset #out counts */
@@ -1040,12 +1012,12 @@ void csound_orc_compile(CSOUND *csound, TREE *root) {
prvinstxt = prvinstxt->nxtinstxt = instrtxt;
- /* Handle Inserting into CSOUND here by checking id's (name or
+ /* Handle Inserting into CSOUND here by checking ids (name or
* numbered) and using new insert_instrtxt?
*/
//printf("Starting to install instruments\n");
/* Temporarily using the following code */
- if (current->left->type == T_INTGR) { /* numbered instrument */
+ if (current->left->type == INTEGER_TOKEN) { /* numbered instrument */
int32 instrNum = (int32)current->left->value->value;
insert_instrtxt(csound, instrtxt, instrNum);
@@ -1054,14 +1026,14 @@ void csound_orc_compile(CSOUND *csound, TREE *root) {
TREE *p = current->left;
//printf("instlist case:\n"); /* This code is suspect */
while (p) {
- print_tree(csound, "Top of loop\n", p);
+ if (PARSER_DEBUG) print_tree(csound, "Top of loop\n", p);
if (p->left) {
//print_tree(csound, "Left\n", p->left);
- if (p->left->type == T_INTGR)
+ if (p->left->type == INTEGER_TOKEN)
insert_instrtxt(csound, instrtxt, p->left->value->value);
}
else {
- if (p->type == T_INTGR)
+ if (p->type == INTEGER_TOKEN)
insert_instrtxt(csound, instrtxt, p->value->value);
break;
}
@@ -1069,7 +1041,7 @@ void csound_orc_compile(CSOUND *csound, TREE *root) {
}
}
break;
- case T_UDO:
+ case UDO_TOKEN:
/* csound->Message(csound, "UDO found\n"); */
resetouts(csound); /* reset #out counts */
@@ -1169,7 +1141,8 @@ void csound_orc_compile(CSOUND *csound, TREE *root) {
if (UNLIKELY(p->tran_kr <= FL(0.0)))
synterr(p, Str("%s invalid control rate"), err_msg);
else if (UNLIKELY(p->tran_ksmps < FL(0.75) ||
- FLOAT_COMPARE(p->tran_ksmps, MYFLT2LRND(p->tran_ksmps))))
+ FLOAT_COMPARE(p->tran_ksmps,
+ MYFLT2LRND(p->tran_ksmps))))
synterr(p, Str("%s invalid ksmps value"), err_msg);
else if (UNLIKELY(FLOAT_COMPARE(p->tran_sr,
(double) p->tran_kr * p->tran_ksmps)))
@@ -1183,10 +1156,12 @@ void csound_orc_compile(CSOUND *csound, TREE *root) {
int thread, opnum = bp->t.opnum;
if (opnum == ENDIN) break;
if (opnum == LABEL) continue;
- if (PARSER_DEBUG) printf("Instr 0 check on opcode=%s\n", bp->t.opcod);
+ if (PARSER_DEBUG)
+ csound->DebugMsg(csound, "Instr 0 check on opcode=%s\n", bp->t.opcod);
if (UNLIKELY((thread = csound->opcodlst[opnum].thread) & 06 ||
(!thread && bp->t.pftype != 'b'))) {
- printf("***opcode=%s thread=%d pftype=%c\n", bp->t.opcod, thread, bp->t.pftype);
+ csound->DebugMsg(csound, "***opcode=%s thread=%d pftype=%c\n",
+ bp->t.opcod, thread, bp->t.pftype);
synterr(csound, Str("perf-pass statements illegal in header blk\n"));
}
}
@@ -1402,10 +1377,23 @@ static void insprep(CSOUND *csound, INSTRTXT *tp)
mfree(csound, larg);
}
+/* returns non-zero if 's' is defined in the global or local pool of names */
+
+static int lgexist2(CSOUND *csound, const char *s)
+{
+ unsigned char h = name_hash(csound, s);
+ NAME *p = NULL;
+ for (p = ST(gblNames)[h]; p != NULL && sCmp(p->namep, s); p = p->nxt);
+ if (p != NULL)
+ return 1;
+ for (p = ST(lclNames)[h]; p != NULL && sCmp(p->namep, s); p = p->nxt);
+ return (p == NULL ? 0 : 1);
+}
+
/* build pool of floating const values */
/* build lcl/gbl list of ds names, offsets */
/* (no need to save the returned values) */
-static void lgbuild(CSOUND *csound, char *s)
+static void lgbuild(CSOUND *csound, char *s, int inarg)
{
char c;
@@ -1416,7 +1404,7 @@ static void lgbuild(CSOUND *csound, char *s)
constndx(csound, s);
else if (c == '"')
strconstndx(csound, s);
- else if (!(lgexist(csound, s))) {
+ else if (!(lgexist2(csound, s)) && !inarg) {
if (c == 'g' || (c == '#' && s[1] == 'g'))
gblnamset(csound, s);
else
@@ -1777,9 +1765,14 @@ static void convert_strconst_pool(CSOUND *csound, MYFLT *dst)
#endif
char argtyp2(CSOUND *csound, char *s)
-{ /* find arg type: d, w, a, k, i, c, p, r, S, B, b, t */
- char c = *s; /* also set lgprevdef if !c && !p && !S */
+{ /* find arg type: d, w, a, k, i, c, p, r, S, B, b, t */
+ char c = *s; /* also set lgprevdef if !c && !p && !S */
+ /* VL: added this to make sure the object exists before we try to read
+ from it */
+ if (UNLIKELY(csound->otranGlobals == NULL)) {
+ csound->otranGlobals = csound->Calloc(csound, sizeof(OTRAN_GLOBALS));
+ }
/* csound->Message(csound, "\nArgtyp2: received %s\n", s); */
/*trap this before parsing for a number! */
@@ -1793,7 +1786,7 @@ char argtyp2(CSOUND *csound, char *s)
return('p'); /* pnum */
if (c == '"')
return('S'); /* quoted String */
- /* ST(lgprevdef) = lgexist(csound, s); */ /* (lgprev) */
+ ST(lgprevdef) = lgexist2(csound, s); /* (lgprev) */
if (strcmp(s,"sr") == 0 || strcmp(s,"kr") == 0 ||
strcmp(s,"0dbfs") == 0 || strcmp(s,"nchnls_i") == 0 ||
strcmp(s,"ksmps") == 0 || strcmp(s,"nchnls") == 0)
diff --git a/Engine/csound_orc_expressions.c b/Engine/csound_orc_expressions.c
index 6776969..709fe95 100644
--- a/Engine/csound_orc_expressions.c
+++ b/Engine/csound_orc_expressions.c
@@ -31,16 +31,17 @@ extern void handle_polymorphic_opcode(CSOUND*, TREE *);
extern void handle_optional_args(CSOUND *, TREE *);
extern ORCTOKEN *make_token(CSOUND *, char *);
extern ORCTOKEN *make_label(CSOUND *, char *);
+extern int find_opcode(CSOUND *csound, char *opname);
-TREE* create_boolean_expression(CSOUND*, TREE*);
-TREE * create_expression(CSOUND *, TREE *);
+TREE* create_boolean_expression(CSOUND*, TREE*, int);
+TREE * create_expression(CSOUND *, TREE *, int);
static int genlabs = 300;
char *create_out_arg(CSOUND *csound, char outype)
{
- char* s = (char *)csound->Malloc(csound, 8);
-
+ char* s = (char *)csound->Malloc(csound, 16);
+
switch(outype) {
case 'a': sprintf(s, "#a%d", csound->acount++); break;
case 'K':
@@ -145,7 +146,7 @@ TREE *create_minus_token(CSOUND *csound)
/* fprintf(stderr, "Out of memory\n"); */
exit(1);
}
- ans->type = T_INTGR;
+ ans->type = INTEGER_TOKEN;
ans->left = NULL;
ans->right = NULL;
ans->next = NULL;
@@ -186,17 +187,17 @@ TREE * create_goto_token(CSOUND *csound, char * booleanVar,
TREE *opTree, *bVar;
switch(gotoNode->type) {
- case T_KGOTO:
+ case KGOTO_TOKEN:
sprintf(op, "ckgoto");
break;
- case T_IGOTO:
+ case IGOTO_TOKEN:
sprintf(op, "cigoto");
break;
- case T_ITHEN:
+ case ITHEN_TOKEN:
sprintf(op, "cngoto");
break;
- case T_THEN:
- case T_KTHEN:
+ case THEN_TOKEN:
+ case KTHEN_TOKEN:
sprintf(op, "cngoto");
break;
default:
@@ -217,7 +218,8 @@ TREE * create_goto_token(CSOUND *csound, char * booleanVar,
return opTree;
}
-/* THIS PROBABLY NEEDS TO CHANGE TO RETURN DIFFERENT GOTO TYPES LIKE IGOTO, ETC */
+/* THIS PROBABLY NEEDS TO CHANGE TO RETURN DIFFERENT GOTO
+ TYPES LIKE IGOTO, ETC */
TREE *create_simple_goto_token(CSOUND *csound, TREE *label, int type)
{
char* op = (char *)csound->Calloc(csound, 6);
@@ -239,21 +241,21 @@ static int is_expression_node(TREE *node)
}
switch(node->type) {
- case S_PLUS:
- case S_MINUS:
- case S_TIMES:
- case S_DIV:
- case S_MOD:
- case S_POW:
+ case '+':
+ case '-':
+ case '*':
+ case '/':
+ case '%':
+ case '^':
case T_FUNCTION:
case S_UMINUS:
- case S_BITOR:
- case S_BITAND:
- case S_BITSHR:
- case S_BITSHL:
- case S_NEQV:
- case S_BITNOT:
- case S_Q:
+ case '|':
+ case '&':
+ case S_BITSHIFT_RIGHT:
+ case S_BITSHIFT_LEFT:
+ case '#':
+ case '~':
+ case '?':
case S_TABREF:
return 1;
}
@@ -281,20 +283,21 @@ static int is_boolean_expression_node(TREE *node)
return 0;
}
-static TREE *create_cond_expression(CSOUND *csound, TREE *root)
+static TREE *create_cond_expression(CSOUND *csound, TREE *root, int line)
{
- char *op = (char*)mmalloc(csound, 4), arg1, arg2, *outarg = NULL;
- char outype, *s;
- TREE *anchor = create_boolean_expression(csound, root->left), *last;
+ char *op = (char*)mmalloc(csound, 4), arg1, arg2, ans, *outarg = NULL;
+ char outype;
+ TREE *anchor = create_boolean_expression(csound, root->left, line), *last;
TREE * opTree;
- TREE *b= create_ans_token(csound, anchor->left->value->lexeme);;
+ TREE *b;
TREE *c = root->right->left, *d = root->right->right;
last = anchor;
while (last->next != NULL) {
last = last->next;
}
+ b= create_ans_token(csound, last->left->value->lexeme);
if (is_expression_node(c)) {
- last->next = create_expression(csound, c);
+ last->next = create_expression(csound, c, line);
/* TODO - Free memory of old left node
freetree */
last = last->next;
@@ -304,7 +307,7 @@ static TREE *create_cond_expression(CSOUND *csound, TREE *root)
c = create_ans_token(csound, last->left->value->lexeme);
}
if (is_expression_node(d)) {
- last->next = create_expression(csound, d);
+ last->next = create_expression(csound, d, line);
/* TODO - Free memory of old left node
freetree */
last = last->next;
@@ -316,18 +319,20 @@ static TREE *create_cond_expression(CSOUND *csound, TREE *root)
arg1 = argtyp2(csound, c->value->lexeme);
arg2 = argtyp2(csound, d->value->lexeme);
+ ans = argtyp2(csound, b->value->lexeme);
if (arg1 == 'a' || arg2 == 'a') {
strcpy(op,":a");
outype = 'a';
}
- else if (arg1 == 'k' || arg2 == 'k') {
+ else if (arg1 == 'k' || arg2 == 'k' || ans == 'B') {
strcpy(op,":k");
outype = 'k';
}
else {
strcpy(op,":i");
outype = 'i';
- }
+ }
+
outarg = create_out_arg(csound, outype);
opTree = create_opcode_token(csound, op);
opTree->left = create_ans_token(csound, outarg);
@@ -344,17 +349,18 @@ static TREE *create_cond_expression(CSOUND *csound, TREE *root)
* Create a chain of Opcode (OPTXT) text from the AST node given. Called from
* create_opcode when an expression node has been found as an argument
*/
-TREE * create_expression(CSOUND *csound, TREE *root)
+TREE * create_expression(CSOUND *csound, TREE *root, int line)
{
char *op, arg1, arg2, c, *outarg = NULL;
TREE *anchor = NULL, *last;
TREE * opTree;
+ int opnum;
/* HANDLE SUB EXPRESSIONS */
- if (root->type==S_Q) return create_cond_expression(csound, root);
+ if (root->type=='?') return create_cond_expression(csound, root, line);
if (is_expression_node(root->left)) {
- anchor = create_expression(csound, root->left);
+ anchor = create_expression(csound, root->left, line);
/* TODO - Free memory of old left node
freetree */
@@ -366,7 +372,7 @@ TREE * create_expression(CSOUND *csound, TREE *root)
}
if (is_expression_node(root->right)) {
- TREE * newRight = create_expression(csound, root->right);
+ TREE * newRight = create_expression(csound, root->right, line);
if (anchor == NULL) {
anchor = newRight;
}
@@ -395,36 +401,36 @@ TREE * create_expression(CSOUND *csound, TREE *root)
op = mcalloc(csound, 80);
switch(root->type) {
- case S_PLUS:
+ case '+':
strncpy(op, "add", 80);
outarg = set_expression_type(csound, op, arg1, arg2);
break;
- case S_MINUS:
+ case '-':
strncpy(op, "sub", 80);
outarg = set_expression_type(csound, op, arg1, arg2);
break;
- case S_TIMES:
+ case '*':
strncpy(op, "mul", 80);
outarg = set_expression_type(csound, op, arg1, arg2);
break;
- case S_MOD:
+ case '%':
strncpy(op, "mod", 80);
outarg = set_expression_type(csound, op, arg1, arg2);
break;
- case S_DIV:
+ case '/':
strncpy(op, "div", 80);
outarg = set_expression_type(csound, op, arg1, arg2);
break;
- case S_POW:
+ case '^':
{ int outype = 'i';
strncpy(op, "pow.", 80);
- if (arg1 == 'a') {
+ if (arg1 == 'a' || arg2 == 'a') {
strncat(op, "a", 80);
- outype = arg1;
+ outype = (arg1 == 'a' ? arg1 : arg2);
}
- else if (arg1 == 'k') {
+ else if (arg1 == 'k' || arg2 == 'k') {
strncat(op, "k", 80);
- outype = arg1;
+ outype = (arg1 == 'k' ? arg1 : arg2);
}
else
strncat(op, "i", 80);
@@ -432,45 +438,60 @@ TREE * create_expression(CSOUND *csound, TREE *root)
}
break;
case S_TABREF:
- strncpy(op, "tabref", 80);
- if (UNLIKELY(PARSER_DEBUG)) csound->Message(csound, "Found TABREF: %s\n", op);
+ strncpy(op, "##tabref", 80);
+ if (UNLIKELY(PARSER_DEBUG))
+ csound->Message(csound, "Found TABREF: %s\n", op);
outarg = create_out_arg(csound, 'k');
break;
case T_FUNCTION: /* assumes on single arg input */
c = arg2;
if (c == 'p' || c == 'c') c = 'i';
sprintf(op, "%s.%c", root->value->lexeme, c);
- if (UNLIKELY(PARSER_DEBUG)) csound->Message(csound, "Found OP: %s\n", op);
+ if (UNLIKELY(PARSER_DEBUG))
+ csound->Message(csound, "Found OP: %s\n", op);
+ /* VL: some non-existing functions were appearing here
+ looking for opcodes that did not exist */
+ if ((opnum = find_opcode(csound, op))==0) {
+ /* This is a little like overkill */
+ strncpy(op, "##error", 80);
+ opnum = find_opcode(csound, op);
+ csound->Warning(csound,
+ Str("error: function %s with arg type %c not found, "
+ "line %d \n"),
+ root->value->lexeme, c, line);
+ }
+ c = csound->opcodlst[opnum].outypes[0];
outarg = create_out_arg(csound, c);
break;
case S_UMINUS:
- if (UNLIKELY(PARSER_DEBUG)) csound->Message(csound, "HANDLING UNARY MINUS!");
+ if (UNLIKELY(PARSER_DEBUG))
+ csound->Message(csound, "HANDLING UNARY MINUS!");
root->left = create_minus_token(csound);
arg1 = 'i';
strncpy(op, "mul", 80);
outarg = set_expression_type(csound, op, arg1, arg2);
break;
- case S_BITOR:
+ case '|':
strncpy(op, "or", 80);
outarg = set_expression_type(csound, op, arg1, arg2);
break;
- case S_BITAND:
+ case '&':
strncpy(op, "and", 80);
outarg = set_expression_type(csound, op, arg1, arg2);
break;
- case S_BITSHR:
+ case S_BITSHIFT_RIGHT:
strncpy(op, "shr", 80);
outarg = set_expression_type(csound, op, arg1, arg2);
break;
- case S_BITSHL:
+ case S_BITSHIFT_LEFT:
strncpy(op, "shl", 80);
outarg = set_expression_type(csound, op, arg1, arg2);
break;
- case S_NEQV:
+ case '#':
strncpy(op, "xor", 80);
outarg = set_expression_type(csound, op, arg1, arg2);
break;
- case S_BITNOT:
+ case '~':
strncpy(op, "not", 80);
outarg = set_expression_type(csound, op, arg1, '\0');
break;
@@ -480,11 +501,13 @@ TREE * create_expression(CSOUND *csound, TREE *root)
opTree->right = root->left;
opTree->right->next = root->right;
opTree->left = create_ans_token(csound, outarg);
+ opTree->line = line;
//print_tree(csound, "making expression", opTree);
}
else {
opTree->right = root->right;
opTree->left = create_ans_token(csound, outarg);
+ opTree->line = line;
}
if (anchor == NULL) {
@@ -505,38 +528,39 @@ TREE * create_expression(CSOUND *csound, TREE *root)
* Create a chain of Opcode (OPTXT) text from the AST node given. Called from
* create_opcode when an expression node has been found as an argument
*/
-TREE * create_boolean_expression(CSOUND *csound, TREE *root)
+TREE * create_boolean_expression(CSOUND *csound, TREE *root, int line)
{
char *op, *outarg;
TREE *anchor = NULL, *last;
TREE * opTree;
- /* if (UNLIKELY(PARSER_DEBUG)) */csound->Message(csound, "Creating boolean expression\n");
+ /* if (UNLIKELY(PARSER_DEBUG)) */
+ csound->Message(csound, "Creating boolean expression\n");
/* HANDLE SUB EXPRESSIONS */
if (is_boolean_expression_node(root->left)) {
- anchor = create_boolean_expression(csound, root->left);
- last = anchor;
- while (last->next != NULL) {
- last = last->next;
- }
- /* TODO - Free memory of old left node
- freetree */
- root->left = create_ans_token(csound, anchor->left->value->lexeme);
+ anchor = create_boolean_expression(csound, root->left, line);
+ last = anchor;
+ while (last->next != NULL) {
+ last = last->next;
+ }
+ /* TODO - Free memory of old left node
+ freetree */
+ root->left = create_ans_token(csound, last->left->value->lexeme);
} else if (is_expression_node(root->left)) {
- anchor = create_expression(csound, root->left);
-
- /* TODO - Free memory of old left node
+ anchor = create_expression(csound, root->left, line);
+
+ /* TODO - Free memory of old left node
freetree */
- last = anchor;
- while (last->next != NULL) {
- last = last->next;
- }
- root->left = create_ans_token(csound, last->left->value->lexeme);
+ last = anchor;
+ while (last->next != NULL) {
+ last = last->next;
+ }
+ root->left = create_ans_token(csound, last->left->value->lexeme);
}
if (is_boolean_expression_node(root->right)) {
- TREE * newRight = create_boolean_expression(csound, root->right);
+ TREE * newRight = create_boolean_expression(csound, root->right, line);
if (anchor == NULL) {
anchor = newRight;
}
@@ -547,30 +571,37 @@ TREE * create_boolean_expression(CSOUND *csound, TREE *root)
}
last->next = newRight;
}
+ last = newRight;
+
+ while (last->next != NULL) {
+ last = last->next;
+ }
/* TODO - Free memory of old right node
freetree */
- root->right = create_ans_token(csound, newRight->left->value->lexeme);
- } else if (is_expression_node(root->right)) {
- TREE * newRight = create_expression(csound, root->right);
- if (anchor == NULL) {
- anchor = newRight;
- }
- else {
- last = anchor;
- while (last->next != NULL) {
- last = last->next;
- }
- last->next = newRight;
- }
- last = newRight;
-
+ root->right = create_ans_token(csound, last->left->value->lexeme);
+ }
+ else if (is_expression_node(root->right)) {
+ TREE * newRight = create_expression(csound, root->right, line);
+ if (anchor == NULL) {
+ anchor = newRight;
+ }
+ else {
+ last = anchor;
while (last->next != NULL) {
- last = last->next;
+ last = last->next;
}
+ last->next = newRight;
+ }
+ last = newRight;
- /* TODO - Free memory of old right node
+ while (last->next != NULL) {
+ last = last->next;
+ }
+
+ /* TODO - Free memory of old right node
freetree */
- root->right = create_ans_token(csound, last->left->value->lexeme);
+ root->right = create_ans_token(csound, last->left->value->lexeme);
+ root->line = line;
}
op = mcalloc(csound, 80);
@@ -606,15 +637,17 @@ TREE * create_boolean_expression(CSOUND *csound, TREE *root)
argtyp2(csound, root->left->value->lexeme),
argtyp2(csound, root->right->value->lexeme));
- outarg = get_boolean_arg(csound,
- argtyp2(csound, root->left->value->lexeme)=='k' ||
- argtyp2(csound, root->right->value->lexeme)=='k');
+ outarg = get_boolean_arg(
+ csound,
+ argtyp2(csound, root->left->value->lexeme) =='k' ||
+ argtyp2(csound, root->right->value->lexeme)=='k' ||
+ argtyp2(csound, root->left->value->lexeme) =='B' ||
+ argtyp2(csound, root->right->value->lexeme)=='B');
opTree = create_opcode_token(csound, op);
opTree->right = root->left;
opTree->right->next = root->right;
opTree->left = create_ans_token(csound, outarg);
-
if (anchor == NULL) {
anchor = opTree;
}
@@ -640,7 +673,7 @@ static TREE *create_synthetic_ident(CSOUND *csound, int32 count)
csound->Message(csound, "Creating Synthetic T_IDENT: %s\n", label);
token = make_token(csound, label);
token->type = T_IDENT;
- return make_leaf(csound, T_IDENT, token);
+ return make_leaf(csound, -1, T_IDENT, token);
}
TREE *create_synthetic_label(CSOUND *csound, int32 count)
@@ -650,7 +683,7 @@ TREE *create_synthetic_label(CSOUND *csound, int32 count)
sprintf(label, "__synthetic_%ld:", count);
if (UNLIKELY(PARSER_DEBUG))
csound->Message(csound, "Creating Synthetic label: %s\n", label);
- return make_leaf(csound, T_LABEL, make_label(csound, label));
+ return make_leaf(csound, -1, LABEL_TOKEN, make_label(csound, label));
}
/* Expands expression nodes into opcode calls
@@ -690,28 +723,31 @@ TREE *csound_orc_expand_expressions(CSOUND * csound, TREE *root)
while (current != NULL) {
switch(current->type) {
- case T_INSTR:
- if (UNLIKELY(PARSER_DEBUG)) csound->Message(csound, "Instrument found\n");
+ case INSTR_TOKEN:
+ if (UNLIKELY(PARSER_DEBUG))
+ csound->Message(csound, "Instrument found\n");
current->right = csound_orc_expand_expressions(csound, current->right);
// print_tree(csound, "AFTER", current);
break;
- case T_UDO:
+ case UDO_TOKEN:
if (UNLIKELY(PARSER_DEBUG)) csound->Message(csound, "UDO found\n");
current->right = csound_orc_expand_expressions(csound, current->right);
break;
- case T_IF:
- if (UNLIKELY(PARSER_DEBUG)) csound->Message(csound, "Found IF statement\n");
+ case IF_TOKEN:
+ if (UNLIKELY(PARSER_DEBUG))
+ csound->Message(csound, "Found IF statement\n");
{
TREE * left = current->left;
TREE * right = current->right;
TREE* last;
TREE * gotoToken;
- if (right->type == T_IGOTO ||
- right->type == T_KGOTO ||
- right->type == T_GOTO) {
- if (UNLIKELY(PARSER_DEBUG)) csound->Message(csound, "Found if-goto\n");
- expressionNodes = create_boolean_expression(csound, left);
+ if (right->type == IGOTO_TOKEN ||
+ right->type == KGOTO_TOKEN ||
+ right->type == GOTO_TOKEN) {
+ if (UNLIKELY(PARSER_DEBUG))
+ csound->Message(csound, "Found if-goto\n");
+ expressionNodes = create_boolean_expression(csound, left, right->line);
/* Set as anchor if necessary */
if (anchor == NULL) {
anchor = expressionNodes;
@@ -735,9 +771,9 @@ TREE *csound_orc_expand_expressions(CSOUND * csound, TREE *root)
current = gotoToken;
previous = last;
}
- else if (right->type == T_THEN ||
- right->type == T_ITHEN ||
- right->type == T_KTHEN) {
+ else if (right->type == THEN_TOKEN ||
+ right->type == ITHEN_TOKEN ||
+ right->type == KTHEN_TOKEN) {
int endLabelCounter = -1;
TREE *tempLeft;
TREE *tempRight;
@@ -745,7 +781,8 @@ TREE *csound_orc_expand_expressions(CSOUND * csound, TREE *root)
TREE *ifBlockCurrent = current;
TREE *ifBlockLast = NULL;
- if (UNLIKELY(PARSER_DEBUG)) csound->Message(csound, "Found if-then\n");
+ if (UNLIKELY(PARSER_DEBUG))
+ csound->Message(csound, "Found if-then\n");
if (right->next != NULL) {
endLabelCounter = genlabs++;
}
@@ -753,31 +790,33 @@ TREE *csound_orc_expand_expressions(CSOUND * csound, TREE *root)
while (ifBlockCurrent != NULL) {
tempLeft = ifBlockCurrent->left;
tempRight = ifBlockCurrent->right;
- if (ifBlockCurrent->type == T_ELSE) {
- // print_tree(csound, "ELSE case\n", ifBlockCurrent);
+ if (ifBlockCurrent->type == ELSE_TOKEN) {
+ // print_tree(csound, "ELSE case\n", ifBlockCurrent);
ifBlockLast->next =
csound_orc_expand_expressions(csound, tempRight);
while (ifBlockLast->next != NULL) {
ifBlockLast = ifBlockLast->next;
}
- // print_tree(csound, "ELSE transformed\n", ifBlockCurrent);
+ // print_tree(csound, "ELSE transformed\n", ifBlockCurrent);
break;
}
- else if (ifBlockCurrent->type == T_ELSEIF) { /* JPff code */
- // print_tree(csound, "ELSEIF case\n", ifBlockCurrent);
- ifBlockCurrent->type = T_IF;
- ifBlockCurrent = make_node(csound, T_ELSE, NULL, ifBlockCurrent);
+ else if (ifBlockCurrent->type == ELSEIF_TOKEN) { /* JPff code */
+ // print_tree(csound, "ELSEIF case\n", ifBlockCurrent);
+ ifBlockCurrent->type = IF_TOKEN;
+ ifBlockCurrent = make_node(csound, ifBlockCurrent->line, ELSE_TOKEN,
+ NULL, ifBlockCurrent);
//tempLeft = NULL;
/* ifBlockLast->next = */
/* csound_orc_expand_expressions(csound, ifBlockCurrent); */
/* while (ifBlockLast->next != NULL) { */
/* ifBlockLast = ifBlockLast->next; */
/* } */
- // print_tree(csound, "ELSEIF transformed\n", ifBlockCurrent);
+ // print_tree(csound, "ELSEIF transformed\n", ifBlockCurrent);
//break;
}
- expressionNodes = create_boolean_expression(csound, tempLeft);
+ expressionNodes =
+ create_boolean_expression(csound, tempLeft, tempLeft->line);
/* Set as anchor if necessary */
if (ifBlockStart == NULL) {
ifBlockStart = expressionNodes;
@@ -799,15 +838,15 @@ TREE *csound_orc_expand_expressions(CSOUND * csound, TREE *root)
label = create_synthetic_ident(csound, genlabs);
labelEnd = create_synthetic_label(csound, genlabs++);
tempRight->right = label;
-// printf("goto types %c %c %c %c %d\n",
-// expressionNodes->left->type, tempRight->type,
-// argtyp2(csound, last->left->value->lexeme),
-// argtyp2(csound, tempRight->value->lexeme),
-// (argtyp2(csound, last->left->value->lexeme) == 'k') ||
-// (argtyp2(csound, tempRight->value->lexeme) == 'k'));
-// print_tree(csound, "expression nodes", expressionNodes);
+// printf("goto types %c %c %c %c %d\n",
+// expressionNodes->left->type, tempRight->type,
+// argtyp2(csound, last->left->value->lexeme),
+// argtyp2(csound, tempRight->value->lexeme),
+// (argtyp2(csound, last->left->value->lexeme) == 'k') ||
+// (argtyp2(csound, tempRight->value->lexeme) == 'k'));
+// print_tree(csound, "expression nodes", expressionNodes);
gotoType = (argtyp2(csound, last->left->value->lexeme) == 'B') ||
- (argtyp2(csound, tempRight->value->lexeme) == 'k');
+ (argtyp2(csound, tempRight->value->lexeme) == 'k');
gotoToken =
create_goto_token(csound,
last->left->value->lexeme,
@@ -816,13 +855,22 @@ TREE *csound_orc_expand_expressions(CSOUND * csound, TREE *root)
/* relinking */
last->next = gotoToken;
gotoToken->next = statements;
+ /* VL: added as means of dealing with empty conditionals,
+ may need revision */
+ if(statements == NULL)
+ csound->Die(csound,
+ Str("error: non-existent statement in "
+ "conditional, line %d \n"),
+ last->right->line);
while (statements->next != NULL) {
statements = statements->next;
}
if (endLabelCounter > 0) {
TREE *endLabel = create_synthetic_ident(csound,
endLabelCounter);
- int type = (gotoType == 1) ? 0 : 1;
+ int type = (gotoType == 1) ? 0 : 2;
+ /* csound->DebugMsg(csound, "%s(%d): type = %d %d\n", */
+ /* __FILE__, __LINE__, type, gotoType); */
TREE *gotoEndLabelToken =
create_simple_goto_token(csound, endLabel, type);
if (UNLIKELY(PARSER_DEBUG))
@@ -864,28 +912,30 @@ TREE *csound_orc_expand_expressions(CSOUND * csound, TREE *root)
current = ifBlockStart;
}
else {
- csound->Message(csound, "ERROR: Neither if-goto or if-then found!!!");
+ csound->Message(csound,
+ "ERROR: Neither if-goto or if-then found on line %d!!!",
+ right->line);
}
}
break;
- case T_UNTIL:
+ case UNTIL_TOKEN:
if (UNLIKELY(PARSER_DEBUG))
csound->Message(csound, "Found UNTIL statement\n");
{
- TREE * left = current->left;
- TREE * right = current->right;
- TREE* last;
+ //TREE * left = current->left;
+ //TREE * right = current->right;
+ //TREE* last;
TREE * gotoToken;
int32 topLabelCounter = genlabs++;
int32 endLabelCounter = genlabs++;
TREE *tempLeft = current->left;
TREE *tempRight = current->right;
- TREE *ifBlockStart = current;
+ //TREE *ifBlockStart = current;
TREE *ifBlockCurrent = current;
TREE *ifBlockLast = current;
- TREE *next = current->next;
- TREE *statements, *label, *labelEnd;
+ //TREE *next = current->next;
+ TREE *statements, *labelEnd;
int type;
/* *** Stage 1: Create a top label (overwriting *** */
{ /* Change UNTIL to label and add IF */
@@ -896,7 +946,7 @@ TREE *csound_orc_expand_expressions(CSOUND * csound, TREE *root)
ifBlockCurrent->left = tempLeft;
ifBlockCurrent->right = tempRight;
ifBlockCurrent->next = current->next;
- ifBlockCurrent->type = T_IF;
+ ifBlockCurrent->type = IF_TOKEN;
current->next = t;
}
/* *** Stage 2: Boolean expression *** */
@@ -904,11 +954,11 @@ TREE *csound_orc_expand_expressions(CSOUND * csound, TREE *root)
tempRight = ifBlockCurrent->right;
expressionNodes =
ifBlockLast->next = create_boolean_expression(csound,
- ifBlockCurrent->left);
+ ifBlockCurrent->left,
+ ifBlockCurrent->line);
ifBlockLast = ifBlockLast->next;
/* *** Stage 3: Create the goto *** */
statements = tempRight; /* the body of the loop */
- label = create_synthetic_ident(csound, topLabelCounter);
labelEnd = create_synthetic_label(csound, endLabelCounter);
gotoToken =
create_goto_token(csound,
@@ -916,10 +966,10 @@ TREE *csound_orc_expand_expressions(CSOUND * csound, TREE *root)
labelEnd,
type =
((argtyp2(csound,
- expressionNodes->left->value->lexeme)=='B')
+ expressionNodes->left->value->lexeme)=='B')
||
(argtyp2(csound,
- tempRight->value->lexeme) == 'k')));
+ tempRight->value->lexeme) == 'k')));
/* relinking */
tempRight = ifBlockLast->next;
ifBlockLast->next = gotoToken;
@@ -944,13 +994,16 @@ TREE *csound_orc_expand_expressions(CSOUND * csound, TREE *root)
ifBlockCurrent = tempRight->next;
}
break;
+ case LABEL_TOKEN:
+ break;
default:
{ /* This is WRONG in optional argsq */
TREE* previousArg = NULL;
TREE* currentArg = current->right;
- if (UNLIKELY(PARSER_DEBUG)) csound->Message(csound, "Found Statement.\n");
+ if (UNLIKELY(PARSER_DEBUG))
+ csound->Message(csound, "Found Statement.\n");
- /* if (current->type == S_ASSIGN) { */
+ /* if (current->type == '=') { */
/* //csound->Message(csound, "Assignment Statement.\n"); */
/* } */
while (currentArg != NULL) {
@@ -961,7 +1014,8 @@ TREE *csound_orc_expand_expressions(CSOUND * csound, TREE *root)
char * newArg;
if (UNLIKELY(PARSER_DEBUG))
csound->Message(csound, "Found Expression.\n");
- expressionNodes = create_expression(csound, currentArg);
+ expressionNodes =
+ create_expression(csound, currentArg, currentArg->line);
/* Set as anchor if necessary */
if (anchor == NULL) {
diff --git a/Engine/csound_orc_optimize.c b/Engine/csound_orc_optimize.c
index 88d7eb6..17ff524 100644
--- a/Engine/csound_orc_optimize.c
+++ b/Engine/csound_orc_optimize.c
@@ -37,17 +37,17 @@ TREE* csound_orc_optimize(CSOUND * csound, TREE *root)
while(current != NULL) {
switch(current->type) {
- case T_INSTR:
+ case INSTR_TOKEN:
if (PARSER_DEBUG) csound->Message(csound, "Instrument found\n");
current->right = csound_orc_optimize(csound, current->right);
break;
- case T_UDO:
+ case UDO_TOKEN:
if (PARSER_DEBUG) csound->Message(csound, "UDO found\n");
break;
- case T_IF:
+ case IF_TOKEN:
break;
@@ -56,8 +56,8 @@ TREE* csound_orc_optimize(CSOUND * csound, TREE *root)
if (current->right != NULL) {
if (PARSER_DEBUG) csound->Message(csound, "Found Statement.\n");
- if (current->type == S_ASSIGN && previous != NULL) {
- /* S_ASSIGN should be guaranteed to have left and right
+ if (current->type == '=' && previous != NULL) {
+ /* '=' should be guaranteed to have left and right
* arg by the time it gets here */
if (previous->left != NULL && previous->left->value != NULL) {
if (strcmp(previous->left->value->lexeme,
diff --git a/Engine/csound_orc_semantics.c b/Engine/csound_orc_semantics.c
index c830364..b4286ce 100644
--- a/Engine/csound_orc_semantics.c
+++ b/Engine/csound_orc_semantics.c
@@ -48,42 +48,51 @@ TREE * verify_tree(CSOUND *csound, TREE *root)
//csound->Message(csound, "Verifying AST (NEED TO IMPLEMENT)\n");
// print_tree(csound, "Verify", root);
if (root==NULL) return NULL;
- if (root->left) {
- root->left = verify_tree(csound, root->left);
- if (root->right) {
- root->right= verify_tree(csound, root->right);
- if ((root->left->type == T_INTGR || root->left->type == T_NUMBER) &&
- (root->right->type == T_INTGR || root->right->type == T_NUMBER)) {
- lval = (root->left->type == T_INTGR ?
+ if (root->right) {
+ root->right = verify_tree(csound, root->right);
+ if (root->left) {
+ root->left= verify_tree(csound, root->left);
+ if ((root->left->type == INTEGER_TOKEN || root->left->type == NUMBER_TOKEN) &&
+ (root->right->type == INTEGER_TOKEN || root->right->type == NUMBER_TOKEN)) {
+ lval = (root->left->type == INTEGER_TOKEN ?
(double)root->left->value->value :root->left->value->fvalue);
- rval = (root->right->type == T_INTGR ?
+ rval = (root->right->type == INTEGER_TOKEN ?
(double)root->right->value->value :root->left->value->fvalue);
ans = root->left;
- ans->type = ans->value->type = T_NUMBER;
+ ans->type = ans->value->type = NUMBER_TOKEN;
+ /* **** Something wrong here -- subtractuon confuses memory **** */
switch (root->type) {
- case S_PLUS:
+ case '+':
ans->value->fvalue = lval+rval;
- mrealloc(csound, ans->value->lexeme, 24);
+ ans->value->lexeme =
+ (char*)mrealloc(csound, ans->value->lexeme, 24);
sprintf(ans->value->lexeme, "%f", ans->value->fvalue);
- //Memory leak!! mfree(csound, root); mfree(csound, root->right);
+ //Memory leak!!
+ //mfree(csound, root); mfree(csound root->right);
return ans;
- case S_MINUS:
+ case '-':
ans->value->fvalue = lval-rval;
- mrealloc(csound, ans->value->lexeme, 24);
+ ans->value->lexeme =
+ (char*)mrealloc(csound, ans->value->lexeme, 24);
sprintf(ans->value->lexeme, "%f", ans->value->fvalue);
- //Memory leak!! mfree(csound, root); mfree(csound, root->right);
+ //Memory leak!!
+ //mfree(csound, root); mfree(csound, root->right);
return ans;
- case S_TIMES:
+ case '*':
ans->value->fvalue = lval*rval;
- mrealloc(csound, ans->value->lexeme, 24);
+ ans->value->lexeme =
+ (char*)mrealloc(csound, ans->value->lexeme, 24);
sprintf(ans->value->lexeme, "%f", ans->value->fvalue);
- //Memory leak!! mfree(csound, root); mfree(csound, root->right);
+ //Memory leak!!
+ //mfree(csound, root); mfree(csound, root->right);
return ans;
- case S_DIV:
+ case '/':
ans->value->fvalue = lval/rval;
- mrealloc(csound, ans->value->lexeme, 24);
+ ans->value->lexeme =
+ (char*)mrealloc(csound, ans->value->lexeme, 24);
sprintf(ans->value->lexeme, "%f", ans->value->fvalue);
- //Memory leak!! mfree(csound, root); mfree(csound, root->right);
+ //Memory leak!!
+ //mfree(csound, root); mfree(csound, root->right);
return ans;
/* case S_NEQ: */
/* break; */
@@ -105,6 +114,24 @@ TREE * verify_tree(CSOUND *csound, TREE *root)
}
}
}
+ else if (root->right->type == INTEGER_TOKEN ||
+ root->right->type == NUMBER_TOKEN) {
+ switch (root->type) {
+ case S_UMINUS:
+ print_tree(csound, "root", root);
+ ans = root->right;
+ ans->value->fvalue = -(ans->type==INTEGER_TOKEN ? ans->value->value
+ : ans->value->fvalue);
+ ans->value->lexeme =
+ (char*)mrealloc(csound, ans->value->lexeme, 24);
+ sprintf(ans->value->lexeme, "%f", ans->value->fvalue);
+ ans->type = ans->value->type = NUMBER_TOKEN;
+ print_tree(csound, "ans", ans);
+ return ans;
+ default:
+ break;
+ }
+ }
}
return root;
}
@@ -113,23 +140,45 @@ TREE * verify_tree(CSOUND *csound, TREE *root)
/* BISON PARSER FUNCTION */
int csound_orcwrap()
{
- printf("END OF INPUT\n");
+ printf("\n === END OF INPUT ===\n");
return (1);
}
+extern int csound_orcget_lineno(void*);
+extern char *csound_orcget_current_pointer(void *);
/* BISON PARSER FUNCTION */
void csound_orcerror(PARSE_PARM *pp, void *yyscanner,
- CSOUND *csound, TREE *astTree, char *str)
+ CSOUND *csound, TREE *astTree, const char *str)
{
- //?? extern int yyline;
- // extern char* buffer;
-
- csound->Message(csound, Str("error: %s (token \"%s\")"),
+ char ch;
+ char *p = csound_orcget_current_pointer(yyscanner)-1;
+ int line = csound_orcget_lineno(yyscanner);
+ if (*p=='\0') line--;
+ csound->Message(csound, Str("\nerror: %s (token \"%s\")"),
str, csound_orcget_text(yyscanner));
- csound->Message(csound, Str(" line %d: %s"),
- csound_orcget_lineno(yyscanner), pp->buffer); // buffer has \n at end
+ csound->Message(csound, Str(" line %d:\n>>>"), line);
+ /* if(!strcmp(csound_orcget_text(yyscanner), "\n")) { */
+ /* csound->Message(csound, Str("error: %s (\"\\n\")"), */
+ /* str); */
+ /* csound->Message(csound, Str(" line %d:\n>>> "), */
+ /* csound_orcget_lineno(yyscanner)); */
+ /* } */
+ /* else { */
+ /* csound->Message(csound, Str("\nerror: %s (token \"%s\")"), */
+ /* str, csound_orcget_text(yyscanner)); */
+ /* csound->Message(csound, Str(" line %d:\n>>> "), */
+ /* csound_orcget_lineno(yyscanner)+1); */
+ /* } */
+ while ((ch=*--p) != '\n' && ch != '\0');
+ do {
+ ch = *++p;
+ if(ch == '\n') break;
+ csound->Message(csound, "%c", ch);
+ } while (ch != '\n' && ch != '\0');
+ csound->Message(csound, " <<<\n");
}
+
/**
* Appends TREE * node to TREE * node using ->next field in struct; walks
* down the linked list to append at end; checks for NULL's and returns
@@ -148,8 +197,8 @@ TREE* appendToTree(CSOUND * csound, TREE *first, TREE *newlast) {
/* HACK - Checks to see if first node is uninitialized (sort of)
* This occurs for rules like in topstatement where the left hand
* topstatement the first time around is not initialized to anything
- * useful; the number 400 is arbitrary, chosen as it seemed to be a value
- * higher than all the type numbers that were being printed out
+ * useful; the number 400 is arbitrary, chosen as it seemed to be a
+ * value higher than all the type numbers that were being printed out
*/
if (first->type > 400 || first-> type < 0) {
return newlast;
@@ -168,7 +217,7 @@ TREE* appendToTree(CSOUND * csound, TREE *first, TREE *newlast) {
/* USED BY PARSER TO ASSEMBLE TREE NODES */
-TREE* make_node(CSOUND *csound, int type, TREE* left, TREE* right)
+TREE* make_node(CSOUND *csound, int line, int type, TREE* left, TREE* right)
{
TREE *ans;
ans = (TREE*)mmalloc(csound, sizeof(TREE));
@@ -182,10 +231,12 @@ TREE* make_node(CSOUND *csound, int type, TREE* left, TREE* right)
ans->next = NULL;
ans->len = 2;
ans->rate = -1;
+ ans->line = line;
+ csound->DebugMsg(csound, "%s(%d) line = %d\n", __FILE__, __LINE__, line);
return ans;
}
-TREE* make_leaf(CSOUND *csound, int type, ORCTOKEN *v)
+TREE* make_leaf(CSOUND *csound, int line, int type, ORCTOKEN *v)
{
TREE *ans;
ans = (TREE*)mmalloc(csound, sizeof(TREE));
@@ -200,6 +251,8 @@ TREE* make_leaf(CSOUND *csound, int type, ORCTOKEN *v)
ans->len = 0;
ans->rate = -1;
ans->value = v;
+ ans->line = line;
+ csound->DebugMsg(csound, "%s(%d) line = %d\n", __FILE__, __LINE__, line);
return ans;
}
@@ -247,94 +300,84 @@ void print_tree_i(CSOUND *csound, TREE *l, int n)
csound->Message(csound, "TYPE: %d ", l->type);
switch (l->type) {
- case S_COM:
- csound->Message(csound,"S_COM:\n"); break;
- case S_Q:
- csound->Message(csound,"S_Q:\n"); break;
- case S_COL:
- csound->Message(csound,"S_COL:\n"); break;
- case S_NOT:
- csound->Message(csound,"S_NOT:\n"); break;
- case S_PLUS:
- csound->Message(csound,"S_PLUS:\n"); break;
- case S_MINUS:
- csound->Message(csound,"S_MINUS:\n"); break;
- case S_TIMES:
- csound->Message(csound,"S_TIMES:\n"); break;
- case S_DIV:
- csound->Message(csound,"S_DIV:\n"); break;
- case S_MOD:
- csound->Message(csound,"S_MOD:\n"); break;
- case S_POW:
- csound->Message(csound,"S_POW:\n"); break;
- case S_NL:
- csound->Message(csound,"S_NL:\n"); break;
- case S_LB:
- csound->Message(csound,"S_LB:\n"); break;
- case S_RB:
- csound->Message(csound,"S_RB:\n"); break;
+ case ',':
+ case '?':
+ case ':':
+ case '!':
+ case '+':
+ case '-':
+ case '*':
+ case '/':
+ case '%':
+ case '^':
+ case '(':
+ case ')':
+ case '=':
+ csound->Message(csound,"%c:(%d)\n", l->type, l->line); break;
+ case NEWLINE:
+ csound->Message(csound,"NEWLINE:(%d)\n", l->line); break;
case S_NEQ:
- csound->Message(csound,"S_NEQ:\n"); break;
+ csound->Message(csound,"S_NEQ:(%d)\n", l->line); break;
case S_AND:
- csound->Message(csound,"S_AND:\n"); break;
+ csound->Message(csound,"S_AND:(%d)\n", l->line); break;
case S_OR:
- csound->Message(csound,"S_OR:\n"); break;
+ csound->Message(csound,"S_OR:(%d)\n", l->line); break;
case S_LT:
- csound->Message(csound,"S_LT:\n"); break;
+ csound->Message(csound,"S_LT:(%d)\n", l->line); break;
case S_LE:
- csound->Message(csound,"S_LE:\n"); break;
+ csound->Message(csound,"S_LE:(%d)\n", l->line); break;
case S_EQ:
- csound->Message(csound,"S_EQ:\n"); break;
- case S_ASSIGN:
- csound->Message(csound,"S_ASSIGN:\n"); break;
+ csound->Message(csound,"S_EQ:(%d)\n", l->line); break;
case S_TASSIGN:
- csound->Message(csound,"S_TASSIGN:\n"); break;
+ csound->Message(csound,"S_TASSIGN:(%d)\n", l->line); break;
case S_TABREF:
- csound->Message(csound,"S_TABREF:\n"); break;
+ csound->Message(csound,"S_TABREF:(%d)\n", l->line); break;
case S_GT:
- csound->Message(csound,"S_GT:\n"); break;
+ csound->Message(csound,"S_GT:(%d)\n", l->line); break;
case S_GE:
- csound->Message(csound,"S_GE:\n"); break;
- case T_LABEL:
- csound->Message(csound,"T_LABEL: %s\n", l->value->lexeme); break;
- case T_IF:
- csound->Message(csound,"T_IF:\n"); break;
- case T_THEN:
- csound->Message(csound,"T_THEN:\n"); break;
- case T_ITHEN:
- csound->Message(csound,"T_ITHEN:\n"); break;
- case T_KTHEN:
- csound->Message(csound,"T_KTHEN:\n"); break;
- case T_ELSEIF:
- csound->Message(csound,"T_ELSEIF:\n"); break;
- case T_ELSE:
- csound->Message(csound,"T_ELSE:\n"); break;
- case T_UNTIL:
- csound->Message(csound,"T_UNTIL:\n"); break;
- case T_DO:
- csound->Message(csound,"T_DO:\n"); break;
- case T_OD:
- csound->Message(csound,"T_OD:\n"); break;
- case T_GOTO:
- csound->Message(csound,"T_GOTO:\n"); break;
- case T_IGOTO:
- csound->Message(csound,"T_IGOTO:\n"); break;
- case T_KGOTO:
- csound->Message(csound,"T_KGOTO:\n"); break;
- case T_SRATE:
- csound->Message(csound,"T_SRATE:\n"); break;
- case T_KRATE:
- csound->Message(csound,"T_KRATE:\n"); break;
- case T_KSMPS:
- csound->Message(csound,"T_KSMPS:\n"); break;
- case T_NCHNLS:
- csound->Message(csound,"T_NCHNLS:\n"); break;
- case T_NCHNLSI:
- csound->Message(csound,"T_NCHNLSI:\n"); break;
- case T_INSTR:
- csound->Message(csound,"T_INSTR:\n"); break;
- case T_STRCONST:
- csound->Message(csound,"T_STRCONST: %s\n", l->value->lexeme); break;
+ csound->Message(csound,"S_GE:(%d)\n", l->line); break;
+ case LABEL_TOKEN:
+ csound->Message(csound,"LABEL_TOKEN: %s\n", l->value->lexeme); break;
+ case IF_TOKEN:
+ csound->Message(csound,"IF_TOKEN:(%d)\n", l->line); break;
+ case THEN_TOKEN:
+ csound->Message(csound,"THEN_TOKEN:(%d)\n", l->line); break;
+ case ITHEN_TOKEN:
+ csound->Message(csound,"ITHEN_TOKEN:(%d)\n", l->line); break;
+ case KTHEN_TOKEN:
+ csound->Message(csound,"KTHEN_TOKEN:(%d)\n", l->line); break;
+ case ELSEIF_TOKEN:
+ csound->Message(csound,"ELSEIF_TOKEN:(%d)\n", l->line); break;
+ case ELSE_TOKEN:
+ csound->Message(csound,"ELSE_TOKEN:(%d)\n", l->line); break;
+ case UNTIL_TOKEN:
+ csound->Message(csound,"UNTIL_TOKEN:(%d)\n", l->line); break;
+ case DO_TOKEN:
+ csound->Message(csound,"DO_TOKEN:(%d)\n", l->line); break;
+ case OD_TOKEN:
+ csound->Message(csound,"OD_TOKEN:(%d)\n", l->line); break;
+ case GOTO_TOKEN:
+ csound->Message(csound,"GOTO_TOKEN:(%d)\n", l->line); break;
+ case IGOTO_TOKEN:
+ csound->Message(csound,"IGOTO_TOKEN:(%d)\n", l->line); break;
+ case KGOTO_TOKEN:
+ csound->Message(csound,"KGOTO_TOKEN:(%d)\n", l->line); break;
+ case SRATE_TOKEN:
+ csound->Message(csound,"SRATE_TOKEN:(%d)\n", l->line); break;
+ case KRATE_TOKEN:
+ csound->Message(csound,"KRATE_TOKEN:(%d)\n", l->line); break;
+ case ZERODBFS_TOKEN:
+ csound->Message(csound,"ZERODFFS_TOKEN:(%d)\n", l->line); break;
+ case KSMPS_TOKEN:
+ csound->Message(csound,"KSMPS_TOKEN:(%d)\n", l->line); break;
+ case NCHNLS_TOKEN:
+ csound->Message(csound,"NCHNLS_TOKEN:(%d)\n", l->line); break;
+ case NCHNLSI_TOKEN:
+ csound->Message(csound,"NCHNLSI_TOKEN:(%d)\n", l->line); break;
+ case INSTR_TOKEN:
+ csound->Message(csound,"INSTR_TOKEN:(%d)\n", l->line); break;
+ case STRING_TOKEN:
+ csound->Message(csound,"STRING_TOKEN: %s\n", l->value->lexeme); break;
case T_IDENT:
csound->Message(csound,"T_IDENT: %s\n", l->value->lexeme); break;
case T_IDENT_I:
@@ -371,14 +414,14 @@ void print_tree_i(CSOUND *csound, TREE *l, int n)
csound->Message(csound,"IDENT_B: %s\n", l->value->lexeme); break;
case T_IDENT_b:
csound->Message(csound,"IDENT_b: %s\n", l->value->lexeme); break;
- case T_INTGR:
- csound->Message(csound,"T_INTGR: %d\n", l->value->value); break;
- case T_NUMBER:
- csound->Message(csound,"T_NUMBER: %f\n", l->value->fvalue); break;
+ case INTEGER_TOKEN:
+ csound->Message(csound,"INTEGER_TOKEN: %d\n", l->value->value); break;
+ case NUMBER_TOKEN:
+ csound->Message(csound,"NUMBER_TOKEN: %f\n", l->value->fvalue); break;
case S_ANDTHEN:
- csound->Message(csound,"S_ANDTHEN:\n"); break;
+ csound->Message(csound,"S_ANDTHEN:(%d)\n", l->line); break;
case S_APPLY:
- csound->Message(csound,"S_APPLY:\n"); break;
+ csound->Message(csound,"S_APPLY:(%d)\n", l->line); break;
case T_OPCODE0:
csound->Message(csound,"T_OPCODE0: %s\n", l->value->lexeme); break;
case T_OPCODE:
@@ -386,11 +429,11 @@ void print_tree_i(CSOUND *csound, TREE *l, int n)
case T_FUNCTION:
csound->Message(csound,"T_FUNCTION: %s\n", l->value->lexeme); break;
case S_UMINUS:
- csound->Message(csound,"S_UMINUS:\n"); break;
+ csound->Message(csound,"S_UMINUS:(%d)\n", l->line); break;
case T_INSTLIST:
- csound->Message(csound,"T_INSTLIST:\n"); break;
+ csound->Message(csound,"T_INSTLIST:(%d)\n", l->line); break;
default:
- csound->Message(csound,"t:%d\n", l->type);
+ csound->Message(csound,"unknown:%d(%d)\n", l->type, l->line);
}
print_tree_i(csound, l->left,n+1);
@@ -416,32 +459,26 @@ static void print_tree_xml(CSOUND *csound, TREE *l, int n, int which)
csound->Message(csound, "<tree%s type=\"%d\" ", child[which], l->type);
switch (l->type) {
- case S_COM:
- csound->Message(csound,"name=\"S_COM\""); break;
- case S_Q:
- csound->Message(csound,"name=\"S_Q\""); break;
- case S_COL:
- csound->Message(csound,"name=\"S_COL\""); break;
- case S_NOT:
- csound->Message(csound,"name=\"S_NOT\""); break;
- case S_PLUS:
- csound->Message(csound,"name=\"S_PLUS\""); break;
- case S_MINUS:
- csound->Message(csound,"name=\"S_MINUS\""); break;
- case S_TIMES:
- csound->Message(csound,"name=\"S_TIMES\""); break;
- case S_DIV:
- csound->Message(csound,"name=\"S_DIV\""); break;
- case S_MOD:
- csound->Message(csound,"name=\"S_MOD\""); break;
- case S_POW:
- csound->Message(csound,"name=\"S_POW\""); break;
- case S_NL:
- csound->Message(csound,"name=\"S_NL\""); break;
- case S_LB:
- csound->Message(csound,"name=\"S_LB\""); break;
- case S_RB:
- csound->Message(csound,"name=\"S_RB\""); break;
+ case ',':
+ case '?':
+ case ':':
+ case '!':
+ case '+':
+ case '-':
+ case '*':
+ case '/':
+ case '%':
+ case '^':
+ case '(':
+ case ')':
+ case '=':
+ case '|':
+ case '&':
+ case '#':
+ case '~':
+ csound->Message(csound,"name=\"%c\"", l->type); break;
+ case NEWLINE:
+ csound->Message(csound,"name=\"NEWLINE\""); break;
case S_NEQ:
csound->Message(csound,"name=\"S_NEQ\""); break;
case S_AND:
@@ -454,8 +491,6 @@ static void print_tree_xml(CSOUND *csound, TREE *l, int n, int which)
csound->Message(csound,"name=\"S_LE\""); break;
case S_EQ:
csound->Message(csound,"name=\"S_EQ\""); break;
- case S_ASSIGN:
- csound->Message(csound,"name=\"S_ASSIGN\""); break;
case S_TASSIGN:
csound->Message(csound,"name=\"S_TASSIGN\""); break;
case S_TABREF:
@@ -464,58 +499,52 @@ static void print_tree_xml(CSOUND *csound, TREE *l, int n, int which)
csound->Message(csound,"name=\"S_GT\""); break;
case S_GE:
csound->Message(csound,"name=\"S_GE\""); break;
- case S_BITOR:
- csound->Message(csound,"name=\"S_BITOR\""); break;
- case S_BITAND:
- csound->Message(csound,"name=\"S_BITAND\""); break;
- case S_BITSHR:
- csound->Message(csound,"name=\"S_BITSHR\""); break;
- case S_BITSHL:
- csound->Message(csound,"name=\"S_BITSHL\""); break;
- case S_NEQV:
- csound->Message(csound,"name=\"S_NEQV\""); break;
- case S_BITNOT:
- csound->Message(csound,"name=\"S_BITNOT\""); break;
- case T_LABEL:
- csound->Message(csound,"name=\"T_LABEL\" label=\"%s\"",
+ case S_BITSHIFT_RIGHT:
+ csound->Message(csound,"name=\"S_BITSHIFT_RIGHT\""); break;
+ case S_BITSHIFT_LEFT:
+ csound->Message(csound,"name=\"S_BITSHIFT_LEFT\""); break;
+ case LABEL_TOKEN:
+ csound->Message(csound,"name=\"LABEL_TOKEN\" label=\"%s\"",
l->value->lexeme); break;
- case T_IF:
- csound->Message(csound,"name=\"T_IF\""); break;
- case T_THEN:
- csound->Message(csound,"name=\"T_THEN\""); break;
- case T_ITHEN:
- csound->Message(csound,"name=\"T_ITHEN\""); break;
- case T_KTHEN:
- csound->Message(csound,"name=\"T_KTHEN\""); break;
- case T_ELSEIF:
- csound->Message(csound,"name=\"T_ELSEIF\""); break;
- case T_ELSE:
- csound->Message(csound,"name=\"T_ELSE\""); break;
- case T_UNTIL:
- csound->Message(csound,"name=\"T_UNTIL\""); break;
- case T_DO:
- csound->Message(csound,"name=\"T_DO\""); break;
- case T_OD:
- csound->Message(csound,"name=\"T_OD\""); break;
- case T_GOTO:
- csound->Message(csound,"name=\"T_GOTO\""); break;
- case T_IGOTO:
- csound->Message(csound,"name=\"T_IGOTO\""); break;
- case T_KGOTO:
- csound->Message(csound,"name=\"T_KGOTO\""); break;
- case T_SRATE:
- csound->Message(csound,"name=\"T_SRATE\""); break;
- case T_KRATE:
- csound->Message(csound,"name=\"T_KRATE\""); break;
- case T_KSMPS:
- csound->Message(csound,"name=\"T_KSMPS\""); break;
- case T_NCHNLS:
- csound->Message(csound,"name=\"T_NCHNLS\""); break;
- case T_NCHNLSI:
- csound->Message(csound,"name=\"T_NCHNLSI\""); break;
- case T_INSTR:
- csound->Message(csound,"name=\"T_INSTR\""); break;
- case T_STRCONST:
+ case IF_TOKEN:
+ csound->Message(csound,"name=\"IF_TOKEN\""); break;
+ case THEN_TOKEN:
+ csound->Message(csound,"name=\"THEN_TOKEN\""); break;
+ case ITHEN_TOKEN:
+ csound->Message(csound,"name=\"ITHEN_TOKEN\""); break;
+ case KTHEN_TOKEN:
+ csound->Message(csound,"name=\"KTHEN_TOKEN\""); break;
+ case ELSEIF_TOKEN:
+ csound->Message(csound,"name=\"ELSEIF_TOKEN\""); break;
+ case ELSE_TOKEN:
+ csound->Message(csound,"name=\"ELSE_TOKEN\""); break;
+ case UNTIL_TOKEN:
+ csound->Message(csound,"name=\"UNTIL_TOKEN\""); break;
+ case DO_TOKEN:
+ csound->Message(csound,"name=\"DO_TOKEN\""); break;
+ case OD_TOKEN:
+ csound->Message(csound,"name=\"OD_TOKEN\""); break;
+ case GOTO_TOKEN:
+ csound->Message(csound,"name=\"GOTO_TOKEN\""); break;
+ case IGOTO_TOKEN:
+ csound->Message(csound,"name=\"IGOTO_TOKEN\""); break;
+ case KGOTO_TOKEN:
+ csound->Message(csound,"name=\"KGOTO_TOKEN\""); break;
+ case SRATE_TOKEN:
+ csound->Message(csound,"name=\"SRATE_TOKEN\""); break;
+ case KRATE_TOKEN:
+ csound->Message(csound,"name=\"KRATE_TOKEN\""); break;
+ case ZERODBFS_TOKEN:
+ csound->Message(csound,"name=\"ZERODBFS_TOKEN\""); break;
+ case KSMPS_TOKEN:
+ csound->Message(csound,"name=\"KSMPS_TOKEN\""); break;
+ case NCHNLS_TOKEN:
+ csound->Message(csound,"name=\"NCHNLS_TOKEN\""); break;
+ case NCHNLSI_TOKEN:
+ csound->Message(csound,"name=\"NCHNLSI_TOKEN\""); break;
+ case INSTR_TOKEN:
+ csound->Message(csound,"name=\"INSTR_TOKEN\""); break;
+ case STRING_TOKEN:
csound->Message(csound,"name=\"T_STRCONST\" str=\"%s\"",
l->value->lexeme); break;
case T_IDENT:
@@ -572,11 +601,11 @@ static void print_tree_xml(CSOUND *csound, TREE *l, int n, int which)
case T_IDENT_b:
csound->Message(csound,"name=\"IDENT_b\" varname=\"%s\"",
l->value->lexeme); break;
- case T_INTGR:
- csound->Message(csound,"name=\"T_INTGR\" value=\"%d\"",
+ case INTEGER_TOKEN:
+ csound->Message(csound,"name=\"INTEGER_TOKEN\" value=\"%d\"",
l->value->value); break;
- case T_NUMBER:
- csound->Message(csound,"name=\"T_NUMBER\" value=\"%f\" type=%d",
+ case NUMBER_TOKEN:
+ csound->Message(csound,"name=\"NUMBER_TOKEN\" value=\"%f\" type=%d",
l->value->fvalue, l->value->type); break;
case S_ANDTHEN:
csound->Message(csound,"name=\"S_ANDTHEN\""); break;
@@ -595,19 +624,19 @@ static void print_tree_xml(CSOUND *csound, TREE *l, int n, int which)
csound->Message(csound,"name=\"S_UMINUS\""); break;
case T_INSTLIST:
csound->Message(csound,"name=\"T_INSTLIST\""); break;
- case T_UDO:
- csound->Message(csound,"name=\"T_UDO\""); break;
- case T_UDO_ANS:
- csound->Message(csound,"name=\"T_UDO_ANS\" signature=\"%s\"",
+ case UDO_TOKEN:
+ csound->Message(csound,"name=\"UDO_TOKEN\""); break;
+ case UDO_ANS_TOKEN:
+ csound->Message(csound,"name=\"UDO_ANS_TOKEN\" signature=\"%s\"",
l->value->lexeme); break;
- case T_UDO_ARGS:
- csound->Message(csound,"name=\"T_UDO_ARGS\" signature=\"%s\"",
+ case UDO_ARGS_TOKEN:
+ csound->Message(csound,"name=\"UDO_ARGS_TOKEN\" signature=\"%s\"",
l->value->lexeme); break;
default:
- csound->Message(csound,"name=\"unknown\"");
+ csound->Message(csound,"name=\"unknown\"(%d)", l->type);
}
- csound->Message(csound, " >\n");
+ csound->Message(csound, " (%d)>\n", l->line);
print_tree_xml(csound, l->left,n+1, TREE_LEFT);
print_tree_xml(csound, l->right,n+1, TREE_RIGHT);
@@ -638,7 +667,7 @@ void print_tree(CSOUND * csound, char* msg, TREE *l)
void handle_optional_args(CSOUND *csound, TREE *l)
{
- if (l == NULL || l->type == T_LABEL) return;
+ if (l == NULL || l->type == LABEL_TOKEN) return;
int opnum = find_opcode(csound, l->value->lexeme);
OENTRY *ep = csound->opcodlst + opnum;
@@ -660,36 +689,36 @@ void handle_optional_args(CSOUND *csound, TREE *l)
switch (ep->intypes[incnt]) {
case 'O': /* Will this work? Doubtful code.... */
case 'o':
- temp = make_leaf(csound, T_INTGR, make_int(csound, "0"));
+ temp = make_leaf(csound, l->line, INTEGER_TOKEN, make_int(csound, "0"));
if (l->right==NULL) l->right = temp;
else appendToTree(csound, l->right, temp);
break;
case 'P':
case 'p':
- temp = make_leaf(csound, T_INTGR, make_int(csound, "1"));
+ temp = make_leaf(csound, l->line, INTEGER_TOKEN, make_int(csound, "1"));
if (l->right==NULL) l->right = temp;
else appendToTree(csound, l->right, temp);
break;
case 'q':
- temp = make_leaf(csound, T_INTGR, make_int(csound, "10"));
+ temp = make_leaf(csound, l->line, INTEGER_TOKEN, make_int(csound, "10"));
if (l->right==NULL) l->right = temp;
else appendToTree(csound, l->right, temp);
break;
case 'V':
case 'v':
- temp = make_leaf(csound, T_NUMBER, make_num(csound, ".5"));
+ temp = make_leaf(csound, l->line, NUMBER_TOKEN, make_num(csound, ".5"));
if (l->right==NULL) l->right = temp;
else appendToTree(csound, l->right, temp);
break;
case 'h':
- temp = make_leaf(csound, T_INTGR, make_int(csound, "127"));
+ temp = make_leaf(csound, l->line, INTEGER_TOKEN, make_int(csound, "127"));
if (l->right==NULL) l->right = temp;
else appendToTree(csound, l->right, temp);
break;
case 'J':
case 'j':
- temp = make_leaf(csound, T_INTGR, make_int(csound, "-1"));
+ temp = make_leaf(csound, l->line, INTEGER_TOKEN, make_int(csound, "-1"));
if (l->right==NULL) l->right = temp;
else appendToTree(csound, l->right, temp);
break;
@@ -699,7 +728,9 @@ void handle_optional_args(CSOUND *csound, TREE *l)
nreqd--;
break;
default:
- synterr(csound, Str("insufficient required arguments"));
+ synterr(csound,
+ Str("insufficient required arguments for opcode %s on line %d\n"),
+ ep->opname, l->line);
}
incnt++;
} while (incnt < nreqd);
@@ -707,7 +738,7 @@ void handle_optional_args(CSOUND *csound, TREE *l)
}
char tree_argtyp(CSOUND *csound, TREE *tree) {
- if (tree->type == T_INTGR || tree->type == T_NUMBER) {
+ if (tree->type == INTEGER_TOKEN || tree->type == NUMBER_TOKEN) {
return 'i';
}
@@ -715,15 +746,13 @@ char tree_argtyp(CSOUND *csound, TREE *tree) {
}
void handle_polymorphic_opcode(CSOUND* csound, TREE * tree) {
- if (tree->type == S_ASSIGN) {
+ if (tree->type == '=') {
/* BUG: tree->right->value may be NULL */
/* if (tree->right->value) */
- tree->value->lexeme = get_assignment_type(csound,
- tree->left->value->lexeme,
- tree->right/*->value->lexeme*/);
- /* else { /\* Conditional expression so broken *\/ */
- /* print_tree(csound, "Odd case\n", tree); */
- /* } */
+ tree->value->lexeme =
+ get_assignment_type(csound,
+ tree->left->value->lexeme,
+ tree->right/*->value->lexeme*/);
return;
}
else if (tree->type==0) {
@@ -755,13 +784,13 @@ void handle_polymorphic_opcode(CSOUND* csound, TREE * tree) {
if (PARSER_DEBUG) csound->Message(csound, "New Value: %s\n", str);
- /*if (find_opcode(csound, str) == 0) {*/
- /* synterr(csound, Str("failed to find %s, output arg '%s' illegal type"),
- str, ST(group)[ST(nxtest)]);*/ /* report syntax error */
- /*ST(nxtest) = 100; */ /* step way over this line */
- /*goto tstnxt;*/ /* & go to next */
- /*break;*/
- /*}*/
+ /*if (find_opcode(csound, str) == 0) {*/
+ /* synterr(csound, Str("failed to find %s, output arg '%s' illegal type"),
+ str, ST(group)[ST(nxtest)]);*/ /* report syntax error */
+ /*ST(nxtest) = 100; */ /* step way over this line */
+ /*goto tstnxt;*/ /* & go to next */
+ /*break;*/
+ /*}*/
tree->value->lexeme = (char *)mrealloc(csound, tree->value->lexeme,
strlen(str) + 1);
strcpy(tree->value->lexeme, str);
@@ -825,15 +854,14 @@ void handle_polymorphic_opcode(CSOUND* csound, TREE * tree) {
default:
csound->Message(csound, "Impossible case\n");
break;
- /*strcpy(str, ST(linopcod));*/ /* unknown code: use original opcode */
}
- /*if (!(isopcod(csound, str))) {*/
- /* if opcode is not found: report syntax error */
- /*synterr(csound, Str("failed to find %s, input arg illegal type"), str);*/
- /*ST(nxtest) = 100;*/ /* step way over this line */
- /*goto tstnxt;*/ /* & go to next */
- /*}
+ /*if (!(isopcod(csound, str))) {*/
+ /* if opcode is not found: report syntax error */
+ /*synterr(csound, Str("failed to find %s, input arg illegal type"), str);*/
+ /*ST(nxtest) = 100;*/ /* step way over this line */
+ /*goto tstnxt;*/ /* & go to next */
+ /*}
ST(linopnum) = ST(opnum);
ST(linopcod) = ST(opcod);
csound->DebugMsg(csound, Str("modified opcod: %s"), ST(opcod));*/
diff --git a/Engine/entry1.c b/Engine/entry1.c
index 9ea7b79..6bdc39b 100644
--- a/Engine/entry1.c
+++ b/Engine/entry1.c
@@ -22,6 +22,7 @@
*/
#include "entry1.h" /* ENTRY1.C */
+#include "interlocks.h"
/* thread vals, where isub=1, ksub=2, asub=4:
0 = 1 OR 2 (B out only)
@@ -121,20 +122,20 @@ OENTRY opcodlst_1[] = {
{ "pchmidib",0xffff },
{ "poisson", 0xffff },
{ "pow", 0xffff, },
-{ "tableng", 0xffff, },
+{ "tableng", 0xffff, TR },
{ "taninv2", 0xffff },
{ "timek", 0xffff, },
{ "times", 0xffff, },
{ "trirand", 0xffff },
{ "unirand", 0xffff, },
{ "weibull", 0xffff },
-{ "oscil", 0xfffe },
-{ "oscil3", 0xfffe },
-{ "oscili", 0xfffe },
+{ "oscil", 0xfffe, TW },
+{ "oscil3", 0xfffe, TW },
+{ "oscili", 0xfffe, TW },
{ "peak", 0xfffd },
{ "rtclock", 0xffff },
-{ "tablew", 0xfffe },
-{ "tablewkt",0xfffe },
+{ "tablew", 0xfffe, TW },
+{ "tablewkt",0xfffe, TW },
{ "ihold", S(LINK), 1, "", "", ihold },
{ "turnoff",S(LINK), 2, "", "", NULL, turnoff },
{ "=.r", S(ASSIGN), 1, "r", "i", rassign },
@@ -146,7 +147,7 @@ OENTRY opcodlst_1[] = {
{ "init.k", S(ASSIGNM), 1, "zzzzzzzzzzzzzzzzzzzzzzzz", "m", minit },
{ "init.a", S(ASSIGNM), 1, "mmmmmmmmmmmmmmmmmmmmmmmm", "m", mainit },
{ "init.t", S(ASSIGNM), 1, "t", "io", tinit },
-{ "tabref", S(TABREF), 3, "k", "tk", tabref_check, tabref, NULL },
+{ "##tabref", S(TABREF),3, "k", "tk", tabref_check, tabref, NULL },
{ ">", S(RELAT), 0, "B", "kk", gt, gt },
{ ">=", S(RELAT), 0, "B", "kk", ge, ge },
{ "<", S(RELAT), 0, "B", "kk", lt, lt },
@@ -329,13 +330,13 @@ OENTRY opcodlst_1[] = {
{ "expsegr",S(EXPSEG), 7, "s", "iin", xsgrset,kxpsegr,expsegr },
{ "linen", S(LINEN), 7, "s", "xiii", lnnset, klinen, linen },
{ "linenr", S(LINENR), 7, "s", "xiii", lnrset, klinenr,linenr },
-{ "envlpx", S(ENVLPX), 7, "s","xiiiiiio", evxset, knvlpx, envlpx },
-{ "envlpxr", S(ENVLPR), 7, "s","xiiiiioo", evrset, knvlpxr,envlpxr },
+{ "envlpx", S(ENVLPX), TR|7, "s","xiiiiiio", evxset, knvlpx, envlpx },
+{ "envlpxr", S(ENVLPR), TR|7, "s","xiiiiioo", evrset, knvlpxr,envlpxr },
{ "phasor", S(PHSOR), 7, "s", "xo", phsset, kphsor, phsor },
-{ "ephasor", S(EPHSOR), 5, "ss", "xko", ephsset, NULL, ephsor },
-{ "table", 0xffff },
-{ "tablei", 0xffff },
-{ "table3", 0xffff },
+{ "ephasor", S(EPHSOR), 5, "ss", "xko", ephsset, NULL, ephsor },
+{ "table", 0xffff, TR },
+{ "tablei", 0xffff, TR },
+{ "table3", 0xffff, TR },
{ "table.i", S(TABLE), 1, "i", "iiooo",itable },
{ "table.k", S(TABLE), 3, "k", "xiooo",tblset, ktable },
{ "table.a", S(TABLE), 5, "a", "xiooo",tblset, NULL, tablefn },
@@ -345,9 +346,9 @@ OENTRY opcodlst_1[] = {
{ "table3.i", S(TABLE), 1, "i", "iiooo",itabl3 },
{ "table3.k", S(TABLE), 3, "k", "xiooo",tblset, ktabl3 },
{ "table3.a", S(TABLE), 5, "a", "xiooo",tblset, NULL, tabl3 },
-{ "oscil1", S(OSCIL1), 3, "k", "ikii", ko1set, kosc1 },
-{ "oscil1i",S(OSCIL1), 3, "k", "ikii", ko1set, kosc1i },
-{ "osciln", S(OSCILN), 5, "a", "kiii", oscnset,NULL, osciln },
+{ "oscil1", S(OSCIL1), TR|3, "k", "ikii", ko1set, kosc1 },
+{ "oscil1i",S(OSCIL1), TR|3, "k", "ikii", ko1set, kosc1i },
+{ "osciln", S(OSCILN), TR|5, "a", "kiii", oscnset,NULL, osciln },
{ "oscil.kk",S(OSC), 7, "s", "kkio", oscset, koscil, osckk },
{ "oscil.ka",S(OSC), 5, "a", "kaio", oscset, NULL, oscka },
{ "oscil.ak",S(OSC), 5, "a", "akio", oscset, NULL, oscak },
@@ -360,14 +361,14 @@ OENTRY opcodlst_1[] = {
{ "oscil3.ka",S(OSC), 5, "a", "kaio", oscset, NULL, oscka3 },
{ "oscil3.ak",S(OSC), 5, "a", "akio", oscset, NULL, oscak3 },
{ "oscil3.aa",S(OSC), 5, "a", "aaio", oscset, NULL, oscaa3 },
-{ "foscil", S(FOSC), 5, "a", "xkxxkio",foscset,NULL, foscil },
-{ "foscili",S(FOSC), 5, "a", "xkxxkio",foscset,NULL, foscili },
-{ "loscil", S(LOSC), 5, "mm","xkiojoojoo",losset,NULL, loscil },
-{ "loscil3", S(LOSC), 5, "mm","xkiojoojoo",losset,NULL, loscil3 },
+{ "foscil", S(FOSC), TR|5, "a", "xkxxkio",foscset,NULL, foscil },
+{ "foscili",S(FOSC), TR|5, "a", "xkxxkio",foscset,NULL, foscili },
+{ "loscil", S(LOSC), TR|5, "mm","xkiojoojoo",losset,NULL, loscil },
+{ "loscil3", S(LOSC), TR|5, "mm","xkiojoojoo",losset,NULL, loscil3 },
{ "adsyn", S(ADSYN), 5, "a", "kkkTo", adset, NULL, adsyn },
-{ "buzz", S(BUZZ), 5, "a", "xxkio", bzzset, NULL, buzz },
-{ "gbuzz", S(GBUZZ), 5, "a", "xxkkkio",gbzset, NULL, gbuzz },
-{ "pluck", S(PLUCK), 5, "a", "kkiiioo",plukset,NULL, pluck },
+{ "buzz", S(BUZZ), TR|5, "a", "xxkio", bzzset, NULL, buzz },
+{ "gbuzz", S(GBUZZ), TR|5, "a", "xxkkkio",gbzset, NULL, gbuzz },
+{ "pluck", S(PLUCK), TR|5, "a", "kkiiioo",plukset,NULL, pluck },
{ "rand", S(RAND), 7, "s", "xvoo", rndset, krand, arand },
{ "randh", S(RANDH), 7, "s", "xxvoo", rhset, krandh, randh },
{ "randi", S(RANDI), 7, "s", "xxvoo", riset, krandi, randi },
@@ -391,20 +392,28 @@ OENTRY opcodlst_1[] = {
{ "pan", S(PAN), 5, "aaaa", "akkioo",(SUBR)panset,NULL, (SUBR)pan },
{ "soundin",S(SOUNDIN_),5,"mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm","Toooo",
sndinset, NULL, soundin },
-{ "soundout",S(SNDOUT), 5, "", "aTo", sndo1set, NULL, soundout },
-{ "soundouts",S(SNDOUTS),5, "", "aaTo", sndo1set, NULL, soundouts },
+{ "soundout",S(SNDOUT), DP|5, "", "aTo", sndo1set, NULL, soundout },
+{ "soundouts",S(SNDOUTS),DP|5, "", "aaTo", sndo1set, NULL, soundouts },
{ "in", S(INM), 4, "a", "", NULL, NULL, in },
{ "ins", S(INS), 4, "aa", "", NULL, NULL, ins },
{ "inq", S(INQ), 4, "aaaa", "", NULL, NULL, inq },
/* Note that there is code in rdorch.c that assumes that opcodes starting
with the charcters out followed by a s, q, h, o or x are in this group
***BEWARE***
+ CODE REMOVED 2011-Dec-14
*/
-{ "out", S(OUTM), 4, "", "a", NULL, NULL, out },
-{ "outs", S(OUTS), 4, "", "aa", NULL, NULL, outs },
+{ "out", S(OUTX), 4, "", "y", NULL, NULL, outall },
+{ "outs", S(OUTX), 4, "", "y", NULL, NULL, outall },
+{ "outq", S(OUTX), 4, "", "y", NULL, NULL, outall },
+{ "outh", S(OUTX), 4, "", "y", NULL, NULL, outall },
+{ "outo", S(OUTX), 4, "", "y", NULL, NULL, outall },
+{ "outx", S(OUTX), 4, "", "y", NULL, NULL, outall },
+{ "out32", S(OUTX), 4, "", "y", NULL, NULL, outall },
+/* { "out", S(OUTM), 4, "", "a", NULL, NULL, out }, */
+/* { "outs", S(OUTS), 4, "", "aa", NULL, NULL, outs }, */
{ "outs1", S(OUTM), 4, "", "a", NULL, NULL, outs1 },
{ "outs2", S(OUTM), 4, "", "a", NULL, NULL, outs2 },
-{ "outq", S(OUTQ), 4, "", "aaaa", NULL, NULL, outq },
+/* { "outq", S(OUTQ), 4, "", "aaaa", NULL, NULL, outq }, */
{ "outq1", S(OUTM), 4, "", "a", NULL, NULL, outq1 },
{ "outq2", S(OUTM), 4, "", "a", NULL, NULL, outq2 },
{ "outq3", S(OUTM), 4, "", "a", NULL, NULL, outq3 },
@@ -440,7 +449,7 @@ OENTRY opcodlst_1[] = {
{ "pow.i", S(POW), 1, "i", "iip", ipow, NULL, NULL },
{ "pow.k", S(POW), 2, "k", "kkp", NULL, ipow, NULL },
{ "pow.a", S(POW), 4, "a", "akp", NULL, NULL, apow },
-{ "oscilx", S(OSCILN),5, "a", "kiii", oscnset,NULL, osciln },
+{ "oscilx", S(OSCILN),TR|5, "a", "kiii", oscnset,NULL, osciln },
{ "linrand.i",S(PRAND), 1, "i", "k", iklinear, NULL, NULL },
{ "linrand.k",S(PRAND), 2, "k", "k", NULL, iklinear, NULL },
{ "linrand.a",S(PRAND), 4, "a", "k", NULL, NULL, alinear },
@@ -475,9 +484,11 @@ OENTRY opcodlst_1[] = {
{ "unirand.i",S(PRAND), 1, "i", "k", ikuniform, NULL, NULL },
{ "unirand.k",S(PRAND), 2, "k", "k", NULL, ikuniform, NULL},
{ "unirand.a",S(PRAND), 4, "a", "k", NULL, NULL, auniform },
-{ "diskin",S(SOUNDINEW),5, "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm", "Tkooooo",
+{ "diskin",S(SOUNDINEW),DP|5, "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm",
+ "Tkooooo",
(SUBR) newsndinset, NULL, (SUBR) soundinew },
-{ "diskin2",S(DISKIN2), 5, "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm", "Tkoooooo",
+{ "diskin2",S(DISKIN2), 5, "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm",
+ "Tkoooooo",
(SUBR) diskin2_init, (SUBR) NULL,
(SUBR) diskin2_perf },
{ "noteon", S(OUT_ON), 1, "", "iii", iout_on, NULL, NULL },
@@ -521,42 +532,46 @@ OENTRY opcodlst_1[] = {
{ "filevalid", S(FILEVALID), 1, "i", "T", filevalid, NULL, NULL },
/* { "nlalp", S(NLALP), 5, "a", "akkoo", nlalp_set, NULL, nlalp }, */
/* Robin Whittle */
-{ "tableiw", S(TABLEW),1, "", "iiiooo", (SUBR)itablew, NULL, NULL},
-{ "tablew.kk", S(TABLEW),3, "", "kkiooo",(SUBR)tblsetw,(SUBR)ktablew, NULL},
-{ "tablew.aa", S(TABLEW),5, "", "aaiooo",(SUBR)tblsetw, NULL, (SUBR)tablew},
-{ "tablewkt.kk", S(TABLEW),3, "", "kkkooo",(SUBR)tblsetwkt,(SUBR)ktablewkt,NULL},
-{ "tablewkt.aa", S(TABLEW),5, "", "aakooo",(SUBR)tblsetwkt,NULL,(SUBR)tablewkt},
+{ "tableiw", S(TABLEW),TW|1, "", "iiiooo", (SUBR)itablew, NULL, NULL},
+{ "tablew.kk", S(TABLEW),TW|3, "", "kkiooo",(SUBR)tblsetw,(SUBR)ktablew, NULL},
+{ "tablew.aa", S(TABLEW),TW|5, "", "aaiooo",(SUBR)tblsetw, NULL, (SUBR)tablew},
+{ "tablewkt.kk", S(TABLEW),TW|3, "", "kkkooo",
+ (SUBR)tblsetwkt,(SUBR)ktablewkt,NULL},
+{ "tablewkt.aa", S(TABLEW),TW|5, "", "aakooo",
+ (SUBR)tblsetwkt,NULL,(SUBR)tablewkt},
{ "tableng.i", S(TABLENG),1, "i", "i", (SUBR)itableng, NULL, NULL},
{ "tableng.k", S(TABLENG),2, "k", "k", NULL, (SUBR)tableng, NULL},
-{ "tableigpw",S(TABLENG),1, "", "i", (SUBR)itablegpw, NULL, NULL},
+{ "tableigpw",S(TABLENG),TB|1, "", "i", (SUBR)itablegpw, NULL, NULL},
{ "tablegpw", S(TABLENG),2, "", "k", NULL, (SUBR)tablegpw, NULL},
-{ "tableimix",S(TABLEMIX),1, "", "iiiiiiiii", (SUBR)itablemix, NULL, NULL},
-{ "tablemix", S(TABLEMIX),2, "", "kkkkkkkkk",
+{ "tableimix",S(TABLEMIX),TB|1, "", "iiiiiiiii", (SUBR)itablemix, NULL, NULL},
+{ "tablemix", S(TABLEMIX),TB|2, "", "kkkkkkkkk",
(SUBR)tablemixset, (SUBR)tablemix, NULL},
-{ "tableicopy",S(TABLECOPY),1, "", "ii", (SUBR)itablecopy, NULL, NULL},
-{ "tablecopy", S(TABLECOPY),2, "", "kk",
+{ "tableicopy",S(TABLECOPY),TB|1, "", "ii", (SUBR)itablecopy, NULL, NULL},
+{ "tablecopy", S(TABLECOPY),TB|2, "", "kk",
(SUBR)tablecopyset, (SUBR)tablecopy, NULL},
-{ "tablera", S(TABLERA),5, "a", "kkk", (SUBR)tableraset, NULL, (SUBR)tablera},
-{ "tablewa", S(TABLEWA),5, "k", "kak", (SUBR)tablewaset, NULL, (SUBR)tablewa},
-{ "tablekt", S(TABLE), 7, "s", "xkooo",tblsetkt, ktablekt, tablekt },
-{ "tableikt", S(TABLE), 7, "s", "xkooo",tblsetkt, ktablikt, tablikt },
-{ "zakinit", S(ZAKINIT), 1, "", "ii", (SUBR)zakinit, NULL, NULL},
-{ "zir", S(ZKR), 1, "i", "i", (SUBR)zir, NULL, NULL},
-{ "zkr", S(ZKR), 3, "k", "k", (SUBR)zkset, (SUBR)zkr, NULL},
-{ "ziw", S(ZKW), 1, "", "ii", (SUBR)ziw, NULL, NULL},
-{ "zkw", S(ZKW), 3, "", "kk", (SUBR)zkset, (SUBR)zkw, NULL},
-{ "ziwm", S(ZKWM), 1, "", "iip", (SUBR)ziwm, NULL, NULL},
-{ "zkwm", S(ZKWM), 3, "", "kkp", (SUBR)zkset, (SUBR)zkwm, NULL},
-{ "zkmod", S(ZKMOD), 2, "k", "kk", NULL, (SUBR)zkmod, NULL},
-{ "zkcl", S(ZKCL), 3, "", "kk", (SUBR)zkset, (SUBR)zkcl, NULL},
-{ "zar", S(ZAR), 5, "a", "k", (SUBR)zaset, NULL, (SUBR)zar},
-{ "zarg", S(ZARG), 5, "a", "kk", (SUBR)zaset, NULL, (SUBR)zarg},
-{ "zaw", S(ZAW), 5, "", "ak", (SUBR)zaset, NULL, (SUBR)zaw},
-{ "zawm", S(ZAWM), 5, "", "akp", (SUBR)zaset, NULL, (SUBR)zawm},
-{ "zamod", S(ZAMOD), 4, "a", "ak", NULL, NULL, (SUBR)zamod},
-{ "zacl", S(ZACL), 5, "", "kk", (SUBR)zaset, NULL, (SUBR)zacl},
-{ "inz", S(IOZ), 4, "", "k", (SUBR)zaset, NULL, (SUBR)inz },
-{ "outz", S(IOZ), 4, "", "k", (SUBR)zaset, NULL, (SUBR)outz },
+{ "tablera", S(TABLERA),TR|5, "a", "kkk",
+ (SUBR)tableraset, NULL, (SUBR)tablera},
+{ "tablewa", S(TABLEWA),TW|5, "k", "kak",
+ (SUBR)tablewaset, NULL, (SUBR)tablewa},
+{ "tablekt", S(TABLE), TR|7, "s", "xkooo",tblsetkt, ktablekt, tablekt },
+{ "tableikt", S(TABLE), TR|7, "s", "xkooo",tblsetkt, ktablikt, tablikt },
+{ "zakinit", S(ZAKINIT), ZB|1, "", "ii", (SUBR)zakinit, NULL, NULL},
+{ "zir", S(ZKR), ZR|1, "i", "i", (SUBR)zir, NULL, NULL},
+{ "zkr", S(ZKR), ZR|3, "k", "k", (SUBR)zkset, (SUBR)zkr, NULL},
+{ "ziw", S(ZKW), ZW|1, "", "ii", (SUBR)ziw, NULL, NULL},
+{ "zkw", S(ZKW), ZW|3, "", "kk", (SUBR)zkset, (SUBR)zkw, NULL},
+{ "ziwm", S(ZKWM), ZB|1, "", "iip", (SUBR)ziwm, NULL, NULL},
+{ "zkwm", S(ZKWM), ZB|3, "", "kkp", (SUBR)zkset, (SUBR)zkwm, NULL},
+{ "zkmod", S(ZKMOD), ZB|2, "k", "kk", NULL, (SUBR)zkmod, NULL},
+{ "zkcl", S(ZKCL), ZW|3, "", "kk", (SUBR)zkset, (SUBR)zkcl, NULL},
+{ "zar", S(ZAR), ZR|5, "a", "k", (SUBR)zaset, NULL, (SUBR)zar},
+{ "zarg", S(ZARG), ZB|5, "a", "kk", (SUBR)zaset, NULL, (SUBR)zarg},
+{ "zaw", S(ZAW), ZW|5, "", "ak", (SUBR)zaset, NULL, (SUBR)zaw},
+{ "zawm", S(ZAWM), ZB|5, "", "akp", (SUBR)zaset, NULL, (SUBR)zawm},
+{ "zamod", S(ZAMOD), ZB|4, "a", "ak", NULL, NULL, (SUBR)zamod},
+{ "zacl", S(ZACL), ZW|5, "", "kk", (SUBR)zaset, NULL, (SUBR)zacl},
+{ "inz", S(IOZ), ZW|4, "", "k", (SUBR)zaset, NULL, (SUBR)inz },
+{ "outz", S(IOZ), ZR|4, "", "k", (SUBR)zaset, NULL, (SUBR)outz },
{ "timek.i", S(RDTIME), 1, "i", "", (SUBR)timek, NULL, NULL },
{ "times.i", S(RDTIME), 1, "i", "", (SUBR)timesr, NULL, NULL },
{ "timek.k", S(RDTIME), 2, "k", "", NULL, (SUBR)timek, NULL },
@@ -592,18 +607,19 @@ OENTRY opcodlst_1[] = {
/* Note that there is code in rdorch.c that assumes that opcodes starting
with the charcters out followed by a s, q, h, o or x are in this group
***BEWARE***
+ CODE REMOVED 2011-Dec-14
*/
-{ "outh", S(OUTH), 4, "", "aaaaaa",NULL, NULL, outh },
-{ "outo", S(OUTO), 4, "", "aaaaaaaa",NULL,NULL, outo },
-{ "outx", S(OUTX), 4, "", "aaaaaaaaaaaaaaaa",NULL,NULL, outx },
-{ "out32", S(OUTX), 4, "", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
- NULL, NULL, outX },
+/* { "outh", S(OUTH), 4, "", "aaaaaa",NULL, NULL, outh }, */
+/* { "outo", S(OUTO), 4, "", "aaaaaaaa",NULL,NULL, outo }, */
+/* { "outx", S(OUTX), 4, "", "aaaaaaaaaaaaaaaa",NULL,NULL, outx }, */
+/* { "out32", S(OUTX), 4, "", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", */
+ /* NULL, NULL, outX }, */
{ "outch", S(OUTCH), 4, "", "Z", NULL, NULL, outch },
{ "outc", S(OUTX), 4, "", "y", NULL, NULL, outall },
-{ "cpsxpch", S(XENH), 1, "i", "iiii", cpsxpch, NULL, NULL },
-{ "cps2pch", S(XENH), 1, "i", "ii", cps2pch, NULL, NULL },
-{ "cpstun", S(CPSTUN), 2, "k", "kkk", NULL, cpstun },
-{ "cpstuni",S(CPSTUNI), 1, "i", "ii", cpstun_i, },
+{ "cpsxpch", S(XENH),TR|1, "i", "iiii", cpsxpch, NULL, NULL },
+{ "cps2pch", S(XENH),TR|1, "i", "ii", cps2pch, NULL, NULL },
+{ "cpstun", S(CPSTUN), TR|2, "k", "kkk", NULL, cpstun },
+{ "cpstuni",S(CPSTUNI), TR|1, "i", "ii", cpstun_i, },
{ "cpstmid", S(CPSTABLE), 1, "i", "i", (SUBR)cpstmid },
{ "adsr", S(LINSEG), 7, "s", "iiiio",adsrset,klnseg, linseg },
{ "madsr", S(LINSEG), 7, "s", "iiiioj", madsrset,klnsegr, linsegr },
@@ -617,11 +633,16 @@ OENTRY opcodlst_1[] = {
{ "event", S(LINEVENT), 2, "", "SUz", NULL, eventOpcode, NULL },
{ "event_i", S(LINEVENT),1, "", "STm", eventOpcodeI, NULL, NULL },
{ "lfo", S(LFO), 7, "s", "kko", lfoset, lfok, lfoa },
-{ "oscils", S(OSCILS), 5, "a", "iiio", (SUBR)oscils_set, NULL, (SUBR)oscils },
-{ "lphasor", S(LPHASOR),5, "a", "xooooooo" ,(SUBR)lphasor_set, NULL, (SUBR)lphasor },
-{ "tablexkt", S(TABLEXKT),5, "a", "xkkiooo", (SUBR)tablexkt_set, NULL, (SUBR)tablexkt },
-{ "reverb2", S(NREV2), 5, "a", "akkoojoj", (SUBR)reverbx_set,NULL,(SUBR)reverbx },
-{ "nreverb", S(NREV2), 5, "a", "akkoojoj", (SUBR)reverbx_set,NULL,(SUBR) reverbx },
+{ "oscils", S(OSCILS), 5, "a", "iiio",
+ (SUBR)oscils_set, NULL, (SUBR)oscils },
+{ "lphasor", S(LPHASOR),5, "a", "xooooooo" ,
+ (SUBR)lphasor_set, NULL, (SUBR)lphasor },
+{ "tablexkt", S(TABLEXKT),TR|5, "a", "xkkiooo",
+ (SUBR)tablexkt_set, NULL, (SUBR)tablexkt },
+{ "reverb2", S(NREV2), 5, "a", "akkoojoj",
+ (SUBR)reverbx_set,NULL,(SUBR)reverbx },
+{ "nreverb", S(NREV2), 5, "a", "akkoojoj",
+ (SUBR)reverbx_set,NULL,(SUBR) reverbx },
{ "=.f", S(FASSIGN), 2, "f", "f", NULL, fassign, NULL },
{ "init.f", S(FASSIGN), 2, "f", "f", fassign, NULL, NULL },
{ "pvsanal", S(PVSANAL), 5, "f", "aiiiioo", pvsanalset, NULL, pvsanal },
@@ -630,8 +651,8 @@ OENTRY opcodlst_1[] = {
{ "pvscross", S(PVSCROSS),3, "f", "ffkk", pvscrosset, pvscross, NULL },
{ "pvsfread", S(PVSFREAD),3, "f", "kTo", pvsfreadset, pvsfread, NULL },
{ "pvsmaska", S(PVSMASKA),3, "f", "fik", pvsmaskaset, pvsmaska, NULL },
-{ "pvsftw", S(PVSFTW), 3, "k", "fio", pvsftwset, pvsftw, NULL },
-{ "pvsftr", S(PVSFTR), 3, "", "fio", pvsftrset, pvsftr, NULL },
+{ "pvsftw", S(PVSFTW), TW|3, "k", "fio", pvsftwset, pvsftw, NULL },
+{ "pvsftr", S(PVSFTR), TR|3, "", "fio", pvsftrset, pvsftr, NULL },
{ "pvsinfo", S(PVSINFO), 1, "iiii","f", pvsinfo, NULL, NULL },
{ "octave", 0xffff },
{ "semitone", 0xffff },
@@ -671,15 +692,20 @@ OENTRY opcodlst_1[] = {
3, "", "xoh",midichannelaftertouch, midichannelaftertouch },
{ "midipitchbend", S(MIDIPITCHBEND),3, "", "xoh", midipitchbend, midipitchbend },
{ "mididefault", S(MIDIDEFAULT), 3, "", "xx", mididefault, mididefault },
-{ "invalue", 0xFFFF, 0, NULL, NULL, NULL, NULL, NULL },
+{ "invalue", 0xFFFF, CR, NULL, NULL, NULL, NULL, NULL },
{ "invalue.k", S(INVAL), 3, "k", "T", invalset, kinval, NULL },
{ "invalue.S", S(INVAL), 3, "S", "T", invalset_S, kinval_S, NULL },
-{ "outvalue", S(OUTVAL), 3, "", "TU", outvalset, koutval, NULL },
+{ "outvalue", S(OUTVAL), CW|3, "", "TU", outvalset, koutval, NULL },
/* IV - Oct 20 2002 */
{ "subinstr", S(SUBINST), 5, "mmmmmmmm", "Tm", subinstrset, NULL, subinstr },
{ "subinstrinit", S(SUBINST), 1, "", "Tm", subinstrset, NULL, NULL },
{ "nstrnum", S(NSTRNUM), 1, "i", "T", nstrnumset, NULL, NULL },
-{ "turnoff2",S(TURNOFF2),2, "", "kkk", NULL, turnoff2, NULL },
+{ "turnoff2", 0xFFFB, CW, NULL, NULL, NULL, NULL, NULL },
+{ "turnoff2.S",S(TURNOFF2),2, "", "Skk", NULL, turnoff2S, NULL },
+{ "turnoff2.c",S(TURNOFF2),2, "", "ikk", NULL, turnoff2k, NULL },
+{ "turnoff2.k",S(TURNOFF2),2, "", "kkk", NULL, turnoff2k, NULL },
+{ "turnoff2.i",S(TURNOFF2),2, "", "ikk", NULL, turnoff2k, NULL },
+{ "turnoff2.r",S(TURNOFF2),2, "", "ikk", NULL, turnoff2k, NULL },
{ "cngoto", S(CGOTO), 3, "", "Bl", ingoto, kngoto, NULL },
{ "cogoto", S(CGOTO), 3, "", "bl", iingoto, kingoto, NULL },
/* IV - Sep 8 2002 - added entries for user defined opcodes, xin, xout */
@@ -708,7 +734,8 @@ OENTRY opcodlst_1[] = {
{ "a.k", S(INTERP), 5, "a", "k", (SUBR)a_k_set,NULL, (SUBR)interp },
{ "integ", S(INDIFF), 7, "s", "xo", (SUBR)indfset,(SUBR)kntegrate,(SUBR)integrate},
{ "diff", S(INDIFF), 7, "s", "xo", (SUBR)indfset,(SUBR)kdiff, (SUBR)diff },
-{ "samphold",S(SAMPHOLD),7, "s", "xxoo", (SUBR)samphset,(SUBR)ksmphold,(SUBR)samphold},
+{ "samphold",S(SAMPHOLD),7, "s", "xxoo",
+ (SUBR)samphset,(SUBR)ksmphold,(SUBR)samphold},
{ "delay", S(DELAY), 5, "a", "aio", (SUBR)delset, NULL, (SUBR)delay },
{ "delayr", S(DELAYR), 5, "aX","io", (SUBR)delrset,NULL, (SUBR)delayr },
{ "delayw", S(DELAYW), 5, "", "a", (SUBR)delwset,NULL, (SUBR)delayw },
@@ -720,15 +747,18 @@ OENTRY opcodlst_1[] = {
{ "reverb", S(REVERB), 5, "a", "ako", (SUBR)rvbset, NULL, (SUBR)reverb },
{ "vdelay", S(VDEL), 5, "a", "axio", (SUBR)vdelset, NULL, (SUBR)vdelay },
{ "vdelay3", S(VDEL), 5, "a", "axio", (SUBR)vdelset, NULL, (SUBR)vdelay3 },
-{ "vdelayxwq",S(VDELXQ),5, "aaaa", "aaaaaiio", (SUBR)vdelxqset, NULL, (SUBR)vdelayxwq},
+{ "vdelayxwq",S(VDELXQ),5, "aaaa", "aaaaaiio",
+ (SUBR)vdelxqset, NULL, (SUBR)vdelayxwq},
{ "vdelayxws",S(VDELXS),5, "aa", "aaaiio", (SUBR)vdelxsset, NULL, (SUBR)vdelayxws},
{ "vdelayxw", S(VDELX), 5, "a", "aaiio", (SUBR)vdelxset, NULL, (SUBR)vdelayxw},
-{ "vdelayxq", S(VDELXQ),5, "aaaa", "aaaaaiio", (SUBR)vdelxqset, NULL, (SUBR)vdelayxq},
+{ "vdelayxq", S(VDELXQ),5, "aaaa", "aaaaaiio",
+ (SUBR)vdelxqset, NULL, (SUBR)vdelayxq},
{ "vdelayxs", S(VDELXS),5, "aa", "aaaiio", (SUBR)vdelxsset, NULL, (SUBR)vdelayxs},
{ "vdelayx", S(VDELX), 5, "a", "aaiio", (SUBR)vdelxset, NULL, (SUBR)vdelayx},
{ "deltapx", S(DELTAPX),5, "a", "aio", (SUBR)tapxset, NULL, (SUBR)deltapx },
{ "deltapxw", S(DELTAPX),5, "", "aaio", (SUBR)tapxset, NULL, (SUBR)deltapxw },
-{ "multitap", S(MDEL), 5, "a", "am", (SUBR)multitap_set,NULL,(SUBR)multitap_play},
+{ "multitap", S(MDEL), 5, "a", "am",
+ (SUBR)multitap_set,NULL,(SUBR)multitap_play},
{ "comb", S(COMB), 5, "a", "akioo", (SUBR)cmbset,NULL, (SUBR)comb },
{ "alpass", S(COMB), 5, "a", "akioo", (SUBR)cmbset,NULL, (SUBR)alpass },
{ "strset", S(STRSET_OP), 1, "", "iS",
@@ -807,8 +837,7 @@ OENTRY opcodlst_1[] = {
{ "loop_le.k", S(LOOP_OPS), 2, "", "kkkl", NULL, (SUBR) loop_le_p, NULL },
{ "loop_gt.k", S(LOOP_OPS), 2, "", "kkkl", NULL, (SUBR) loop_g_p, NULL },
{ "loop_ge.k", S(LOOP_OPS), 2, "", "kkkl", NULL, (SUBR) loop_ge_p, NULL },
-{ "chnget", 0xFFFF, 0, NULL, NULL,
- (SUBR) NULL, (SUBR) NULL, (SUBR) NULL },
+{ "chnget", 0xFFFF, CR },
{ "chnget.i", S(CHNGET), 1, "i", "S",
(SUBR) chnget_opcode_init_i, (SUBR) NULL, (SUBR) NULL },
{ "chnget.k", S(CHNGET), 3, "k", "S",
@@ -817,8 +846,7 @@ OENTRY opcodlst_1[] = {
(SUBR) chnget_opcode_init_a, (SUBR) NULL, (SUBR) notinit_opcode_stub },
{ "chnget.S", S(CHNGET), 1, "S", "S",
(SUBR) chnget_opcode_init_S, (SUBR) NULL, (SUBR) NULL },
-{ "chnset", 0xFFFB, 0, NULL, NULL,
- (SUBR) NULL, (SUBR) NULL, (SUBR) NULL },
+{ "chnset", 0xFFFB, CW },
{ "chnset.i", S(CHNGET), 1, "", "iS",
(SUBR) chnset_opcode_init_i, (SUBR) NULL, (SUBR) NULL },
{ "chnset.r", S(CHNGET), 1, "", "iS",
@@ -831,15 +859,15 @@ OENTRY opcodlst_1[] = {
(SUBR) chnset_opcode_init_a, (SUBR) NULL, (SUBR) notinit_opcode_stub },
{ "chnset.S", S(CHNGET), 1, "", "SS",
(SUBR) chnset_opcode_init_S, (SUBR) NULL, (SUBR) NULL },
-{ "chnmix", S(CHNGET), 5, "", "aS",
+{ "chnmix", S(CHNGET), CB|5, "", "aS",
(SUBR) chnmix_opcode_init, (SUBR) NULL, (SUBR) notinit_opcode_stub },
-{ "chnclear", S(CHNCLEAR), 5, "", "S",
+{ "chnclear", S(CHNCLEAR), CW|5, "", "S",
(SUBR) chnclear_opcode_init, (SUBR) NULL, (SUBR) notinit_opcode_stub },
-{ "chn_k", S(CHN_OPCODE_K), 1, "", "Sioooo",
+{ "chn_k", S(CHN_OPCODE_K), CW|1, "", "Sioooo",
(SUBR) chn_k_opcode_init, (SUBR) NULL, (SUBR) NULL },
-{ "chn_a", S(CHN_OPCODE), 1, "", "Si",
+{ "chn_a", S(CHN_OPCODE), CW|1, "", "Si",
(SUBR) chn_a_opcode_init, (SUBR) NULL, (SUBR) NULL },
-{ "chn_S", S(CHN_OPCODE), 1, "", "Si",
+{ "chn_S", S(CHN_OPCODE), CW|1, "", "Si",
(SUBR) chn_S_opcode_init, (SUBR) NULL, (SUBR) NULL },
{ "chnexport", 0xFFFF, 0, NULL, NULL,
(SUBR) NULL, (SUBR) NULL, (SUBR) NULL },
@@ -851,13 +879,13 @@ OENTRY opcodlst_1[] = {
(SUBR) chnexport_opcode_init, (SUBR) NULL, (SUBR) NULL },
{ "chnexport.S", S(CHNEXPORT_OPCODE), 1, "S", "Si",
(SUBR) chnexport_opcode_init, (SUBR) NULL, (SUBR) NULL },
-{ "chnparams", S(CHNPARAMS_OPCODE), 1, "iiiiii", "S",
+{ "chnparams", S(CHNPARAMS_OPCODE), CR|1, "iiiiii", "S",
(SUBR) chnparams_opcode_init, (SUBR) NULL, (SUBR) NULL },
-{ "chnrecv", S(CHNSEND), 3, "", "So",
+{ "chnrecv", S(CHNSEND), CR|3, "", "So",
(SUBR) chnrecv_opcode_init, (SUBR) notinit_opcode_stub, (SUBR) NULL },
{ "chnsend", S(CHNSEND), 3, "", "So",
(SUBR) chnsend_opcode_init, (SUBR) notinit_opcode_stub, (SUBR) NULL },
-{ "chano", 0xFFFD, 0, NULL, NULL,
+{ "chano", 0xFFFD, CW, NULL, NULL,
(SUBR) NULL, (SUBR) NULL, (SUBR) NULL },
{ "chano.k", S(ASSIGN), 2, "", "kk",
(SUBR) NULL, (SUBR) chano_opcode_perf_k, (SUBR) NULL },
@@ -865,7 +893,7 @@ OENTRY opcodlst_1[] = {
(SUBR) NULL, (SUBR) NULL, (SUBR) chano_opcode_perf_a },
{ "pvsout", S(FCHAN), 2, "", "fk",
(SUBR) NULL, (SUBR) pvsout_perf, (SUBR) NULL },
-{ "chani", 0xFFFF, 0, NULL, NULL,
+{ "chani", 0xFFFF, CR, NULL, NULL,
(SUBR) NULL, (SUBR) NULL, (SUBR) NULL },
{ "chani.k", S(ASSIGN), 2, "k", "k",
(SUBR) NULL, (SUBR) chani_opcode_perf_k, (SUBR) NULL },
@@ -880,9 +908,12 @@ OENTRY opcodlst_1[] = {
{ "remove", S(DELETEIN), 1, "", "T",
(SUBR) delete_instr, (SUBR) NULL, (SUBR) NULL },
#ifdef PARCS
-{ "##globallock", S(GLOBAL_LOCK_UNLOCK), 3, "", "k", globallock, globallock, NULL},
-{ "##globalunlock", S(GLOBAL_LOCK_UNLOCK), 3, "", "k", globalunlock, globalunlock, NULL},
+{ "##globallock", S(GLOBAL_LOCK_UNLOCK), 3, "", "k",
+ globallock, globallock, NULL},
+{ "##globalunlock", S(GLOBAL_LOCK_UNLOCK), 3, "", "k",
+ globalunlock, globalunlock, NULL},
#endif
+{ "##error",S(ERRFN), 1, "i", "i", error_fn, NULL, NULL },
{ "exprandi.i",S(PRANDI), 1, "i", "kxx", iexprndi, NULL, NULL },
{ "exprandi.k",S(PRANDI), 3, "k", "kxx", exprndiset, kexprndi, NULL },
{ "exprandi.a",S(PRANDI), 4, "a", "kxx", exprndiset, NULL, aexprndi },
@@ -892,6 +923,8 @@ OENTRY opcodlst_1[] = {
{ "gaussi.i", S(PRANDI), 1, "i", "kxx", igaussi, NULL, NULL },
{ "gaussi.k", S(PRANDI), 3, "k", "kxx", gaussiset, kgaussi, NULL },
{ "gaussi.a", S(PRANDI), 4, "a", "kxx", gaussiset, NULL, agaussi },
+{ "ftresizei", S(RESIZE), TB|1, "i", "ii", (SUBR) resize_table, NULL, NULL },
+{ "ftresize", S(RESIZE), TB|2, "k", "kk", NULL, (SUBR) resize_table, NULL },
/* terminate list */
{ NULL, 0, 0, NULL, NULL, (SUBR) NULL, (SUBR) NULL, (SUBR) NULL }
};
diff --git a/Engine/envvar.c b/Engine/envvar.c
index f47cacc..8e70fba 100644
--- a/Engine/envvar.c
+++ b/Engine/envvar.c
@@ -637,7 +637,8 @@ int csoundIsNameJustFilename(const char *name)
* conform to the conventions for the current platform (begin with ':'
* on MacOS 9 and not begin with DIRSEP on others).
*/
-char* csoundConcatenatePaths(CSOUND* csound, const char *path1, const char *path2)
+char* csoundConcatenatePaths(CSOUND* csound, const char *path1,
+ const char *path2)
{
char *result;
const char *start2;
@@ -814,7 +815,7 @@ static FILE *csoundFindFile_Std(CSOUND *csound, char **fullName,
{
FILE *f;
char *name, *name2, **searchPath;
- int len;
+ //int len;
*fullName = NULL;
if ((name = csoundConvertPathname(csound, filename)) == NULL)
@@ -845,7 +846,7 @@ static FILE *csoundFindFile_Std(CSOUND *csound, char **fullName,
if (envList != NULL && envList[0] != '\0' &&
(searchPath = csoundGetSearchPathFromEnv((CSOUND*) csound, envList))
!= NULL) {
- len = (int) strlen(name) + 1;
+ //len = (int) strlen(name) + 1;
while (*searchPath != NULL) {
name2 = csoundConcatenatePaths(csound, *searchPath, name);
f = fopen(name2, mode);
@@ -876,7 +877,7 @@ static int csoundFindFile_Fd(CSOUND *csound, char **fullName,
const char *envList)
{
char *name, *name2, **searchPath;
- int len, fd;
+ int fd;
*fullName = NULL;
if ((name = csoundConvertPathname(csound, filename)) == NULL)
@@ -907,7 +908,7 @@ static int csoundFindFile_Fd(CSOUND *csound, char **fullName,
if (envList != NULL && envList[0] != '\0' &&
(searchPath = csoundGetSearchPathFromEnv((CSOUND*) csound, envList))
!= NULL) {
- len = (int) strlen(name) + 1;
+ //len = (int) strlen(name) + 1;
while (*searchPath != NULL) {
name2 = csoundConcatenatePaths(csound, *searchPath, name);
if (!write_mode)
@@ -1062,7 +1063,7 @@ void *csoundFileOpen(CSOUND *csound, void *fd, int type,
* used as metadata to be passed to the host application's FileOpenCallback.
*
* int csFileType:
- * A value from the enumeration CSOUND_FILETYPES (see CsoundCore.h)
+ * A value from the enumeration CSOUND_FILETYPES (see soundCore.h)
* int isTemporary:
* 1 if this file will be deleted when Csound is finished.
* Otherwise, 0.
@@ -1191,7 +1192,8 @@ void *csoundFileOpenWithType(CSOUND *csound, void *fd, int type,
(type == CSFILE_STD && ((char*)param)[0] == 'w'));
if (csFileType == CSFTYPE_UNKNOWN_AUDIO && type == CSFILE_SND_R)
csFileType = sftype2csfiletype(((SF_INFO*)param)->format);
- csound->FileOpenCallback_(csound, p->fullName, csFileType, writing, isTemporary);
+ csound->FileOpenCallback_(csound, p->fullName, csFileType,
+ writing, isTemporary);
}
/* return with opaque file handle */
return (void*) p;
diff --git a/Engine/fgens.c b/Engine/fgens.c
index 99513fb..ac60537 100644
--- a/Engine/fgens.c
+++ b/Engine/fgens.c
@@ -61,11 +61,7 @@ static int gn1314(FGDATA *, FUNC *, MYFLT, MYFLT);
static int gen51(FGDATA *, FUNC *), gen52(FGDATA *, FUNC *);
static int gen53(FGDATA *, FUNC *);
static int GENUL(FGDATA *, FUNC *);
-#ifdef INC_MP3
static int gen49(FGDATA *, FUNC *);
-#else
-#define gen49 GENUL
-#endif
static const GEN or_sub[GENMAX + 1] = {
GENUL,
@@ -194,8 +190,8 @@ int hfgens(CSOUND *csound, FUNC **ftpp, const EVTBLK *evtblkp, int mode)
if (!ff.flen) {
/* defer alloc to gen01|gen23|gen28 */
ff.guardreq = 1;
- if (UNLIKELY(genum != 1 && genum != 23 && genum != 28)) {
- return fterror(&ff, Str("deferred size for GENs 1, 23 or 28 only"));
+ if (UNLIKELY(genum != 1 && genum != 23 && genum != 28 && genum != 49)) {
+ return fterror(&ff, Str("deferred size for GENs 1, 23, 28 or 49 only"));
}
if (msg_enabled)
csound->Message(csound, Str("ftable %d:\n"), ff.fno);
@@ -2081,13 +2077,13 @@ static int gen41(FGDATA *ff, FUNC *ftp) /*gab d5*/
{
MYFLT *fp = ftp->ftable, *pp = &ff->e.p[5];
int j, k, width;
- int32 tot_prob = 0;
+ MYFLT tot_prob = FL(0.0);
int nargs = ff->e.pcnt - 4;
for (j=0; j < nargs; j+=2) {
if (pp[j+1]<0)
return fterror(ff, Str("Gen41: negative probability not allowed"));
- tot_prob += (int32) pp[j+1];
+ tot_prob += pp[j+1];
}
for (j=0; j< nargs; j+=2) {
width = (int) ((pp[j+1]/tot_prob) * ff->flen +.5);
@@ -2104,16 +2100,15 @@ static int gen42(FGDATA *ff, FUNC *ftp) /*gab d5*/
{
MYFLT *fp = ftp->ftable, inc;
int j, k, width;
- int32 tot_prob = 0;
+ MYFLT tot_prob = FL(0.0);
int nargs = ff->e.pcnt - 4;
CSOUND *csound = ff->csound;
int nsw = 1;
- MYFLT *valp = &ff->e.p[2];
+ MYFLT *valp = &ff->e.p[5];
if (ff->e.pcnt>=PMAX)
csound->Warning(csound, Str("using extended arguments\n"));
for (j=0; j < nargs; j+=3) {
- tot_prob += (int32) *valp++;
if (UNLIKELY(nsw && valp>=&ff->e.p[PMAX-1]))
nsw =0, valp = &(ff->e.c.extra[1]);
valp++;
@@ -2122,8 +2117,9 @@ static int gen42(FGDATA *ff, FUNC *ftp) /*gab d5*/
valp++;
if (UNLIKELY(nsw && valp>=&ff->e.p[PMAX-1]))
nsw =0, valp = &(ff->e.c.extra[1]);
+ tot_prob += *valp++;
}
- nsw = 1; valp = &ff->e.p[2];
+ nsw = 1; valp = &ff->e.p[5];
for (j=0; j< nargs; j+=3) {
MYFLT p1, p2, p3;
p1 = *valp++;
@@ -2135,7 +2131,7 @@ static int gen42(FGDATA *ff, FUNC *ftp) /*gab d5*/
p3 = *valp++;
if (UNLIKELY(nsw && valp>=&ff->e.p[PMAX-1]))
nsw =0, valp = &(ff->e.c.extra[1]);
- width = (int) ((p3/tot_prob) * ff->flen +FL(0.5));
+ width = (int) ((p3/tot_prob) * ff->flen +FL(0.5));
inc = (p2-p1) / (MYFLT) (width-1);
for ( k=0; k < width; k++) {
*fp++ = p1+(inc*k);
@@ -2258,6 +2254,7 @@ FUNC *csoundFTFind(CSOUND *csound, MYFLT *argp)
return ftp;
}
+/* **** SOMETHING WRONG HERE __ NOT CALLED **** */
static CS_NOINLINE FUNC *gen01_defer_load(CSOUND *csound, int fno)
{
FGDATA ff;
@@ -2473,9 +2470,9 @@ static int gen01raw(FGDATA *ff, FUNC *ftp)
if (csound->oparms->msglevel & 7)
csound->Message(csound, Str(" defer length %d\n"), ff->flen - 1);
if (p->channel == ALLCHNLS)
- ff->flen *= p->nchanls;
+ ff->flen *= p->nchanls;
ff->guardreq = 1; /* presum this includes guard */
- /*ff->flen -= 1;*/ /* VL: this was causing tables to exclude last point */
+/*ff->flen -= 1;*/ /* VL: this was causing tables to exclude last point */
ftp = ftalloc(ff); /* alloc now, and */
ftp->lenmask = 0L; /* mark hdr partly filled */
/*if (p->channel==ALLCHNLS) ftp->nchanls = p->nchanls;
@@ -2498,7 +2495,7 @@ static int gen01raw(FGDATA *ff, FUNC *ftp)
SF_INSTRUMENT lpd;
int ans = sf_command(fd, SFC_GET_INSTRUMENT, &lpd, sizeof(SF_INSTRUMENT));
if (ans) {
- double natcps, gainfac;
+ double natcps;
#ifdef BETA
if ((csound->oparms_.msglevel & 7) == 7) {
csound->Message(csound,
@@ -2520,7 +2517,7 @@ static int gen01raw(FGDATA *ff, FUNC *ftp)
natcps = pow(2.0, ((double) ((int) lpd.basenote - 69)
+ (double) lpd.detune * 0.01) / 12.0) * 440.0;
/* As far as I can tell this gainfac value is never used! */
- gainfac = exp((double) lpd.gain * LOG10D20);
+ //gainfac = exp((double) lpd.gain * LOG10D20);
/* if (lpd.basenote == 0)
lpd.basenote = ftp->cvtbas; */
ftp->cpscvt = ftp->cvtbas / natcps;
@@ -2669,9 +2666,9 @@ static int gen43(FGDATA *ff, FUNC *ftp)
return OK;
}
-#ifdef INC_MP3
#include "mp3dec.h"
-static int gen49(FGDATA *ff, FUNC *ftp)
+
+static int gen49raw(FGDATA *ff, FUNC *ftp)
{
CSOUND *csound = ff->csound;
MYFLT *fp = ftp->ftable;
@@ -2685,7 +2682,6 @@ static int gen49(FGDATA *ff, FUNC *ftp)
char sfname[1024];
mpadec_info_t mpainfo;
uint32_t bufsize, bufused = 0;
- uint64_t maxsize;
uint8_t *buffer;
int size = 0x1000;
int flen;
@@ -2755,9 +2751,9 @@ static int gen49(FGDATA *ff, FUNC *ftp)
return fterror(ff, mp3dec_error(r));
}
ftp->gen01args.sample_rate = mpainfo.frequency;
- maxsize = mpainfo.decoded_sample_size
- *mpainfo.decoded_frame_samples
- *mpainfo.frames;
+ /* maxsize = mpainfo.decoded_sample_size */
+ /* *mpainfo.decoded_frame_samples */
+ /* *mpainfo.frames; */
{
char temp[80];
if (mpainfo.frequency < 16000) strcpy(temp, "MPEG-2.5 ");
@@ -2807,7 +2803,53 @@ static int gen49(FGDATA *ff, FUNC *ftp)
r |= mp3dec_uninit(mpa);
return ((r == MP3DEC_RETCODE_OK) ? OK : NOTOK);
}
-#endif
+
+static int gen49(FGDATA *ff, FUNC *ftp)
+{
+ if (UNLIKELY(ff->e.pcnt < 7)) {
+ return fterror(ff, Str("insufficient arguments"));
+ }
+ if (ff->csound->oparms->gen01defer) {
+ /* We're deferring the soundfile load until performance time,
+ so allocate the function table descriptor, save the arguments,
+ and get out */
+ ftp = ftalloc(ff);
+ ftp->gen01args.gen01 = ff->e.p[4];
+ ftp->gen01args.ifilno = ff->e.p[5];
+ ftp->gen01args.iskptim = ff->e.p[6];
+ ftp->gen01args.iformat = ff->e.p[7];
+ ftp->gen01args.channel = ff->e.p[8];
+ strcpy(ftp->gen01args.strarg, ff->e.strarg);
+ return OK;
+ }
+ return gen49raw(ff, ftp);
+}
+
+static CS_NOINLINE FUNC *gen49_defer_load(CSOUND *csound, int fno)
+{
+ FGDATA ff;
+ char strarg[SSTRSIZ];
+ FUNC *ftp = csound->flist[fno];
+
+ /* The soundfile hasn't been loaded yet, so call GEN49 */
+ strcpy(strarg, ftp->gen01args.strarg);
+ memset(&ff, 0, sizeof(FGDATA));
+ ff.fno = fno;
+ ff.e.strarg = strarg;
+ ff.e.opcod = 'f';
+ ff.e.pcnt = 8;
+ ff.e.p[1] = (MYFLT) fno;
+ ff.e.p[4] = ftp->gen01args.gen01;
+ ff.e.p[5] = ftp->gen01args.ifilno;
+ ff.e.p[6] = ftp->gen01args.iskptim;
+ ff.e.p[7] = ftp->gen01args.iformat;
+ ff.e.p[8] = ftp->gen01args.channel;
+ if (UNLIKELY(gen49raw(&ff, ftp) != 0)) {
+ csoundErrorMsg(csound, Str("Deferred load of '%s' failed"), strarg);
+ return NULL;
+ }
+ return csound->flist[fno];
+}
static int gen51(FGDATA *ff, FUNC *ftp) /* Gab 1/3/2005 */
{
@@ -3105,3 +3147,24 @@ int allocgen(CSOUND *csound, char *s, GEN fn)
return csound->genmax-1;
}
+#include "resize.h"
+
+ static int warned = 0;
+int resize_table(CSOUND *csound, RESIZE *p)
+{
+ int fsize = (int) MYFLT2LRND(*p->nsize);
+ int fno = (int) MYFLT2LRND(*p->fn);
+ FUNC *ftp;
+
+ if (warned==0) {
+ printf("WARNING: EXPERIMENTAL CODE\n");
+ warned = 1;
+ }
+ if ((ftp = csound->FTFind(csound, p->fn)) == NULL)
+ return NOTOK;
+ if (ftp->flen<fsize)
+ ftp = (FUNC*) csound->ReAlloc(csound, ftp, sizeof(FUNC)+sizeof(MYFLT)*fsize);
+ ftp->flen = fsize;
+ csound->flist[fno] = ftp;
+ return OK;
+}
diff --git a/Engine/insert.c b/Engine/insert.c
index 9197f57..f0b9ea7 100644
--- a/Engine/insert.c
+++ b/Engine/insert.c
@@ -30,7 +30,7 @@
#include "midiops.h"
#include "namedins.h" /* IV - Oct 31 2002 */
#include "pstream.h"
-extern MYFLT cpsocfrc[]; /* Needed by CPSOCTL */
+/*extern MYFLT cpsocfrc[]; */ /* Needed by CPSOCTL */
static void showallocs(CSOUND *);
static void deact(CSOUND *, INSDS *);
@@ -371,7 +371,7 @@ int MIDIinsert(CSOUND *csound, int insno, MCHNBLK *chn, MEVENT *mep)
MYFLT value = (MYFLT) ip->m_pitch;
pfields[index] = value;
if (O->msglevel & WARNMSG) {
- csound->Message(csound, " midiKey: pfield: %3d value: %3d\n",
+ csound->Message(csound, " midiKey: pfield: %3d value: %.3f\n",
pfield, (int) pfields[index]);
}
}
@@ -431,7 +431,7 @@ int MIDIinsert(CSOUND *csound, int insno, MCHNBLK *chn, MEVENT *mep)
}
else if (O->midiVelocityAmp) {
int pfield = O->midiVelocityAmp;
- int index = pfield - 1;
+ int index = pfield - 1;
MYFLT *pfields = &ip->p1;
MYFLT value = (MYFLT) ip->m_veloc;
value = value * value / FL(16239.0);
@@ -439,9 +439,28 @@ int MIDIinsert(CSOUND *csound, int insno, MCHNBLK *chn, MEVENT *mep)
pfields[index] = value;
if (UNLIKELY(O->msglevel & WARNMSG)) {
csound->Message(csound, " midiVelocityAmp: pfield: %3d value: %3d\n",
- pfield, (int) pfields[index]);
+ pfield, pfields[index]);
}
}
+ /*
+ the code above assumes &p1 is a pointer to an array of N pfields, but
+ this is wrong. It overwrites memory and uses it for passing p-field
+ values. When the overwritten memory is taken to be a pointer in the
+ loop below, the loop does not stop at the end of the opcode list
+ and causes iopadr to be garbage, leading to a segfault.
+ This happens where there is exactly one opcode in an instrument.
+ It is a nasty bug that needs to be fixed.
+
+ A possible solution is to allocate always a minimum of 5 p-fields (see line
+ approx 1809 below). The extra p-fields appear to be hanging at the end of
+ an INSDS structure, and &p1 appears to be a legal array start address.
+ This allows p4 and p5 to be mapped, but no further p-fields (possibly).
+
+ This fix is a bit of hack IMHO. But I have implemented it here, as it
+ seemingly prevents the crashes.
+
+ (JPff) a safer fix to readthe extra arg numbers
+ */
csound->curip = ip;
csound->ids = (OPDS *)ip;
@@ -962,6 +981,9 @@ int useropcdset(CSOUND *csound, UOPCODE *p)
/* initialise perf time address lists */
buf->iobufp_ptrs[0] = buf->iobufp_ptrs[1] = NULL;
buf->iobufp_ptrs[2] = buf->iobufp_ptrs[3] = NULL;
+ buf->iobufp_ptrs[4] = buf->iobufp_ptrs[5] = NULL;
+ buf->iobufp_ptrs[6] = buf->iobufp_ptrs[7] = NULL;
+
/* store parameters of input and output channels, and parent ip */
buf->uopcode_struct = (void*) p;
buf->parent_ip = p->parent_ip = parent_ip;
@@ -1081,19 +1103,33 @@ int xinset(CSOUND *csound, XIN *p)
*(tmp++) = NULL; /* put delimiter */
/* ... same for k-rate */
while (*++ndx_list >= 0) {
- *(tmp++) = *(bufs + *ndx_list); /* "from" address */
+ *(tmp++) = *(bufs + *ndx_list); /* "from" address */
*(tmp++) = *(p->args + *ndx_list);/* "to" address */
}
*(tmp++) = NULL; /* put delimiter */
- /* fsigs: we'll need to do extra work
- while (*++ndx_list >= 0) {
- *(tmp++) = *(bufs + *ndx_list);
- *(tmp++) = *(p->args + *ndx_list);
- }
- *(tmp++) = NULL; */
-
+ /* fsigs: we'll need to do extra work */
+ while (*++ndx_list >= 0) {
+ void *in, *out;
+ in = (void *)*(bufs + *ndx_list);
+ *(tmp++) = (MYFLT *) in;
+ out = (void *) *(p->args + *ndx_list);
+ *(tmp++) = (MYFLT *) out;
+ memcpy(out, in, sizeof(PVSDAT));
+ }
+ *(tmp++) = NULL;
+ /* tsigs: similar to avove */
+ while (*++ndx_list >= 0) {
+ void *in, *out;
+ in = (void *)*(bufs + *ndx_list);
+ *(tmp++) = (MYFLT *) in;
+ out = (void *) *(p->args + *ndx_list);
+ *(tmp++) = (MYFLT *) out;
+ memcpy(out, in, sizeof(TABDAT));
+ }
+ *(tmp++) = NULL;
+
/* fix for case when xout is omitted */
- *(tmp++) = NULL; *tmp = NULL;
+ *(tmp++) = NULL; *(tmp++) = NULL; *(tmp++) = NULL; *tmp = NULL;
return OK;
}
@@ -1103,7 +1139,7 @@ int xoutset(CSOUND *csound, XOUT *p)
OPCODINFO *inm;
int16 *ndx_list;
MYFLT **tmp, **bufs;
-
+
(void) csound;
buf = (OPCOD_IOBUFS*) p->h.insdshead->opcod_iobufs;
inm = buf->opcode_info;
@@ -1123,14 +1159,15 @@ int xoutset(CSOUND *csound, XOUT *p)
*(dst++) = *(src++);
*dst = '\0';
}
-
- /* skip input pointers, including the two delimiter NULLs */
+ /* skip input pointers, including the three delimiter NULLs */
tmp = buf->iobufp_ptrs;
- if (*tmp || *(tmp + 1)) tmp += (inm->perf_incnt << 1);
- tmp += 2;
+ /* VL: needs to check if there are not 4 nulls in a sequence, which
+ would indicate no a, k, f or t sigs */
+ if (*tmp || *(tmp + 1) || *(tmp + 2) || *(tmp + 3)) tmp += (inm->perf_incnt << 1);
+ tmp += 4; /* VL: this was 2, now 4 with fsigs and tsigs added */
if (*tmp || *(tmp + 1))
- return OK;
-
+ return OK;
+
/* find a-rate variables and add to list of perf-time buf ptrs ... */
while (*++ndx_list >= 0) {
*(tmp++) = *(p->args + *ndx_list);/* "from" address */
@@ -1142,13 +1179,28 @@ int xoutset(CSOUND *csound, XOUT *p)
*(tmp++) = *(p->args + *ndx_list);/* "from" address */
*(tmp++) = *(bufs + *ndx_list); /* "to" address */
}
- *tmp = NULL; /* put delimiter */
- /* fsigs: we'll need to do extra work
+ *(tmp++) = NULL; /* put delimiter */
+
+ /* fsigs: we'll need to do extra work */
+ while (*++ndx_list >= 0) {
+ void *in, *out;
+ in = (void *) *(p->args + *ndx_list);
+ *(tmp++) = (MYFLT *) in;
+ out = (void *) *(bufs + *ndx_list);
+ *(tmp++) = (MYFLT *) out;
+ memcpy(out, in, sizeof(PVSDAT));
+ }
+ *(tmp++) = NULL;
+ /* tsigs: as above */
while (*++ndx_list >= 0) {
- *(tmp++) = *(p->args + *ndx_list);
- *(tmp++) = *(bufs + *ndx_list);
+ void *in, *out;
+ in = (void *) *(p->args + *ndx_list);
+ *(tmp++) = (MYFLT *) in;
+ out = (void *) *(bufs + *ndx_list);
+ *(tmp++) = (MYFLT *) out;
+ memcpy(out, in, sizeof(TABDAT));
}
- *tmp = NULL; */
+ *tmp = NULL;
return OK;
}
@@ -1540,6 +1592,17 @@ int useropcd1(CSOUND *csound, UOPCODE *p)
while (*(++tmp)) { /* k-rate */
ptr1 = *tmp; *(*(++tmp)) = *ptr1;
}
+ /* VL: fsigs in need to be dealt with here */
+ while (*(++tmp)) {
+ ptr1 = *tmp;
+ memcpy((void *)(*(++tmp)), (void *) ptr1, sizeof(PVSDAT));
+ }
+ /* and tsigs */
+ while (*(++tmp)) {
+ ptr1 = *tmp;
+ memcpy((void *)(*(++tmp)), (void *) ptr1, sizeof(TABDAT));
+ }
+
/* run each opcode */
csound->pds = (OPDS *) (p->ip);
while ((csound->pds = csound->pds->nxtp)) {
@@ -1566,6 +1629,16 @@ int useropcd1(CSOUND *csound, UOPCODE *p)
while (*(++tmp)) { /* k-rate */
ptr1 = *tmp; *(*(++tmp)) = *ptr1;
}
+ /* VL: fsigs in need to be dealt with here */
+ while (*(++tmp)) {
+ ptr1 = *tmp;
+ memcpy((void *)(*(++tmp)), (void *) ptr1, sizeof(PVSDAT));
+ }
+ /* and tsigs */
+ while (*(++tmp)) {
+ ptr1 = *tmp;
+ memcpy((void *)(*(++tmp)), (void *) ptr1, sizeof(TABDAT));
+ }
/* run each opcode */
csound->pds = (OPDS *) (p->ip);
while ((csound->pds = csound->pds->nxtp)) {
@@ -1585,9 +1658,20 @@ int useropcd1(CSOUND *csound, UOPCODE *p)
/* k-rate outputs are copied only in the last sub-kperiod, */
/* so we do it now */
while (*(++tmp)) { /* k-rate */
- ptr1 = *tmp; *(*(++tmp)) = *ptr1;
+ ptr1 = *tmp;
+ *(*(++tmp)) = *ptr1;
}
-
+ /* VL: fsigs out need to be dealt with here */
+ while (*(++tmp)) {
+ ptr1 = *tmp;
+ memcpy((void *)(*(++tmp)), (void *)ptr1, sizeof(PVSDAT));
+ }
+ /* tsigs */
+ while (*(++tmp)) {
+ ptr1 = *tmp;
+ memcpy((void *)(*(++tmp)), (void *)ptr1, sizeof(TABDAT));
+ }
+
/* restore globals */
csound->ksmps = g_ksmps;
csound->pool[csound->poolcount + 2] = (MYFLT) g_ksmps;
@@ -1610,13 +1694,16 @@ int useropcd2(CSOUND *csound, UOPCODE *p)
OPDS *saved_pds = csound->pds;
int n;
MYFLT **tmp, *ptr1, *ptr2;
+
+ if (!(csound->pds = (OPDS*) (p->ip->nxtp))) goto endop; /* no perf code */
- if (!(csound->pds = (OPDS*) (p->ip->nxtp))) goto endop; /* no perf code */
+ //csound->Message(csound, "end input\n"); /* FOR SOME REASON the opcode has no perf code */
/* IV - Nov 16 2002: update release flag */
p->ip->relesing = p->parent_ip->relesing;
-
+
tmp = p->buf->iobufp_ptrs;
if (csound->ksmps != 1) { /* generic case for kr != sr */
+
/* copy inputs */
while (*tmp) { /* a-rate */
ptr1 = *(tmp++); ptr2 = *(tmp++);
@@ -1625,9 +1712,23 @@ int useropcd2(CSOUND *csound, UOPCODE *p)
*(ptr2++) = *(ptr1++);
} while (--n);
}
+
while (*(++tmp)) { /* k-rate */
ptr1 = *tmp; *(*(++tmp)) = *ptr1;
}
+
+ /* VL: fsigs in need to be dealt with here */
+ while (*(++tmp)) {
+ ptr1 = *tmp;
+ memcpy((void *)(*(++tmp)), (void *) ptr1, sizeof(PVSDAT));
+ }
+ /* VL: tsigs */
+ while (*(++tmp)) {
+ ptr1 = *tmp;
+ memcpy((void *)(*(++tmp)), (void *) ptr1, sizeof(TABDAT));
+ }
+
+
/* run each opcode */
do {
(*csound->pds->opadr)(csound, csound->pds);
@@ -1644,11 +1745,22 @@ int useropcd2(CSOUND *csound, UOPCODE *p)
else { /* special case for kr == sr */
/* copy inputs */
while (*tmp) { /* a-rate */
- ptr1 = *(tmp++); *(*(tmp++)) = *ptr1;
+ ptr1 = *(tmp++);
+ *(*(tmp++)) = *ptr1;
}
while (*(++tmp)) { /* k-rate */
ptr1 = *tmp; *(*(++tmp)) = *ptr1;
}
+ /* VL: fsigs in need to be dealt with here */
+ while (*(++tmp)) {
+ ptr1 = *tmp;
+ memcpy((void *)(*(++tmp)), (void *) ptr1, sizeof(PVSDAT));
+ }
+ /* VL: tsigs */
+ while (*(++tmp)) {
+ ptr1 = *tmp;
+ memcpy((void *)(*(++tmp)), (void *) ptr1, sizeof(TABDAT));
+ }
/* run each opcode */
do {
(*csound->pds->opadr)(csound, csound->pds);
@@ -1661,6 +1773,16 @@ int useropcd2(CSOUND *csound, UOPCODE *p)
while (*(++tmp)) { /* k-rate */
ptr1 = *tmp; *(*(++tmp)) = *ptr1;
}
+ /* VL: fsigs out need to be dealt with here */
+ while (*(++tmp)) {
+ ptr1 = *tmp;
+ memcpy((void *)(*(++tmp)), (void *)ptr1, sizeof(PVSDAT));
+ }
+ /* tsigs */
+ while (*(++tmp)) {
+ ptr1 = *tmp;
+ memcpy((void *)(*(++tmp)), (void *)ptr1, sizeof(TABDAT));
+ }
endop:
/* restore globals */
csound->pds = saved_pds;
@@ -1686,12 +1808,22 @@ static void instance(CSOUND *csound, int insno)
char *nxtopds, *opdslim;
MYFLT **argpp, *lclbas, *gbloffbas, *lcloffbas;
int *ndxp;
- int odebug = csound->oparms->odebug;
+ OPARMS *O = csound->oparms;
+ int odebug = O->odebug;
lopdsp = csound->lopds;
largp = (LARGNO*) csound->larg;
tp = csound->instrtxtp[insno];
- pextent = sizeof(INSDS) + tp->pextrab; /* alloc new space, */
+ /* VL: added 2 extra MYFLT pointers to the memory to account for possible
+ use by midi mapping flags */
+ n = 3;
+ if (O->midiKey>n) n = O->midiKey;
+ if (O->midiKeyCps>n) n = O->midiKeyCps;
+ if (O->midiKeyOct>n) n = O->midiKeyOct;
+ if (O->midiKeyPch>n) n = O->midiKeyPch;
+ if (O->midiVelocity>n) n = O->midiVelocity;
+ if (O->midiVelocityAmp>n) n = O->midiVelocityAmp;
+ pextent = sizeof(INSDS) + tp->pextrab + (n-3)*sizeof(MYFLT *); /* alloc new space, */
ip = (INSDS*) mcalloc(csound, (size_t) pextent + tp->localen + tp->opdstot);
ip->csound = csound;
ip->m_chnbp = (MCHNBLK*) NULL;
diff --git a/Engine/memfiles.c b/Engine/memfiles.c
index 7348e3e..61fc234 100644
--- a/Engine/memfiles.c
+++ b/Engine/memfiles.c
@@ -28,6 +28,7 @@
#include "pstream.h"
#include "namedins.h"
#include <sndfile.h>
+#include <string.h>
static int Load_File_(CSOUND *csound, const char *filnam,
char **allocp, int32 *len, int csFileType)
diff --git a/Engine/musmon.c b/Engine/musmon.c
index df9b662..bef5a64 100644
--- a/Engine/musmon.c
+++ b/Engine/musmon.c
@@ -30,6 +30,7 @@
#include "remote.h"
#include <math.h>
# include "cscore.h"
+#include "corfile.h"
#define SEGAMPS AMPLMSG
#define SORMSG RNGEMSG
@@ -39,6 +40,7 @@ extern int insert(CSOUND *, int, EVTBLK*);
extern void MidiOpen(CSOUND *);
extern void m_chn_init_all(CSOUND *);
extern void scsort(CSOUND *, FILE *, FILE *);
+extern void scsortstr(CSOUND *, CORFIL *);
extern void infoff(CSOUND*, MYFLT), orcompact(CSOUND*);
extern void beatexpire(CSOUND *, double), timexpire(CSOUND *, double);
extern void sfopenin(CSOUND *), sfopenout(CSOUND*), sfnopenout(CSOUND*);
@@ -271,14 +273,8 @@ int musmon(CSOUND *csound)
sfnopenout(csound);
}
- if (!(csound->scfp = fopen(O->playscore, "r"))) {
- if (UNLIKELY(!O->Linein)) {
- csoundDie(csound, Str("cannot reopen %s"), O->playscore);
- }
- }
- /* notify the host if it asked */
- csoundNotifyFileOpened(csound, O->playscore, CSFTYPE_SCORE_OUT, 0,
- (csound->tempStatus & csPlayScoMask)!=0);
+ corfile_flush(O->playscore);
+ //csound->scfp
if (UNLIKELY(O->usingcscore)) {
if (ST(lsect) == NULL) {
ST(lsect) = (EVENT*) mmalloc(csound, sizeof(EVENT));
@@ -307,13 +303,12 @@ int musmon(CSOUND *csound)
csoundDie(csound, Str("cannot reopen cscore.srt"));
csoundNotifyFileOpened(csound, "cscore.srt", CSFTYPE_SCORE_OUT, 1, 0);
csound->Message(csound, Str("sorting cscore.out ..\n"));
- scsort(csound, csound->scfp, csound->oscfp); /* call the sorter again */
+ csound->scorestr = copy_to_corefile(csound, "cscore.srt", NULL, 1);
+ scsortstr(csound, csound->scorestr); /* call the sorter again */
fclose(csound->scfp); csound->scfp = NULL;
+ fputs(corfile_body(csound->scstr), csound->oscfp);
fclose(csound->oscfp); csound->oscfp = NULL;
csound->Message(csound, Str("\t... done\n"));
- if (UNLIKELY(!(csound->scfp = fopen("cscore.srt", "r")))) /* rd from cscore.srt */
- csoundDie(csound, Str("cannot reopen cscore.srt"));
- csoundNotifyFileOpened(csound, "cscore.srt", CSFTYPE_SCORE_OUT, 0, 0);
csound->Message(csound, Str("playing from cscore.srt\n"));
O->usingcscore = 0;
}
@@ -388,9 +383,7 @@ PUBLIC int csoundCleanup(CSOUND *csound)
free(p);
}
orcompact(csound);
- if (csound->scfp) {
- fclose(csound->scfp); csound->scfp = NULL;
- }
+ corfile_rm(&csound->scstr);
/* print stats only if musmon was actually run */
if (UNLIKELY(csound->musmonGlobals != NULL)) {
@@ -720,7 +713,8 @@ static void process_midi_event(CSOUND *csound, MEVENT *mep, MCHNBLK *chn)
{
int n, insno = chn->insno;
if (mep->type == NOTEON_TYPE && mep->dat2) { /* midi note ON: */
- if (UNLIKELY((n = MIDIinsert(csound, insno, chn, mep)))) { /* alloc,init,activ */
+ if (UNLIKELY((n = MIDIinsert(csound, insno, chn, mep)))) {
+ /* alloc,init,activ */
csound->Message(csound,
Str("\t\t T%7.3f - note deleted. "), csound->curp2);
{
@@ -880,7 +874,7 @@ int sensevents(CSOUND *csound)
else /* else lcode */
memcpy((void*) e, (void*) &(ST(lsect)->strarg), sizeof(EVTBLK));
} else
- if (!(rdscor(csound, e))) /* or rd nxt evt from scorfil */
+ if (!(rdscor(csound, e))) /* or rd nxt evt from scstr */
e->opcod = 'e';
csound->currevent = e;
switch (e->opcod) {
@@ -1216,9 +1210,6 @@ void musmon_rewind_score(CSOUND *csound)
settempo(csound, (MYFLT) csound->oparms->cmdTempo);
else
settempo(csound, FL(60.0));
- /* rewind score file */
- if (csound->scfp != NULL)
- fseek(csound->scfp, 0L, SEEK_SET);
/* update section/overall amplitudes, reset to section 1 */
section_amps(csound, 1);
ST(sectno) = 1;
@@ -1229,6 +1220,8 @@ void musmon_rewind_score(CSOUND *csound)
csound->advanceCnt = 0;
if (csound->csoundScoreOffsetSeconds_ > FL(0.0))
csound->SetScoreOffsetSeconds(csound, csound->csoundScoreOffsetSeconds_);
+
+ corfile_rewind(csound->scstr);
}
/**
diff --git a/Engine/namedins.c b/Engine/namedins.c
index d9f35e9..b51b176 100644
--- a/Engine/namedins.c
+++ b/Engine/namedins.c
@@ -469,7 +469,7 @@ int find_opcode(CSOUND *csound, char *opname)
/* -------------------------------------------------------------------- */
/* These functions replace the functionality of strsav() in rdorch.c. */
-#define STRSPACE (8000) /* number of bytes in a buffer */
+#define STRSPACE (1000) /* number of bytes in a buffer */
typedef struct strsav_t {
struct strsav_t *nxt; /* pointer to next structure */
@@ -477,7 +477,8 @@ typedef struct strsav_t {
} STRSAV;
typedef struct strsav_space_t {
- char sp[STRSPACE]; /* string space */
+ char *sp; /* string space */
+ int size; /* Size of buffer */
int splim; /* number of bytes allocated */
struct strsav_space_t *prv; /* ptr to previous buffer */
} STRSAV_SPACE;
@@ -490,8 +491,10 @@ typedef struct strsav_space_t {
void strsav_create(CSOUND *csound)
{
if (csound->strsav_space != NULL) return; /* already allocated */
- csound->strsav_space = mcalloc(csound, sizeof(STRSAV_SPACE));
csound->strsav_str = mcalloc(csound, sizeof(STRSAV*) * 256);
+ csound->strsav_space = mcalloc(csound, sizeof(STRSAV_SPACE));
+ STRSAV_SPACE_->sp = (char*)mcalloc(csound, STRSPACE);
+ STRSAV_SPACE_->size = STRSPACE;
}
/* Locate string s in database, and return address of stored string (not */
@@ -526,21 +529,29 @@ char *strsav_string(CSOUND *csound, char *s)
n = (int) sizeof(struct strsav_t *) + (int) strlen(s) + 1; /* n bytes */
n = ((n + (int) sizeof(struct strsav_t *) - 1) /* round up for alignment */
/ (int) sizeof(struct strsav_t *)) * (int) sizeof(struct strsav_t *);
- if ((STRSAV_SPACE_->splim + n) > STRSPACE) {
+ if ((STRSAV_SPACE_->splim + n) > STRSAV_SPACE_->size) {
STRSAV_SPACE *sp;
/* not enough space, allocate new buffer */
- if (UNLIKELY(n > STRSPACE)) {
+ if (UNLIKELY(n > STRSAV_SPACE_->size)) {
/* this should not happen */
- csound->ErrorMsg(csound,
- "internal error: strsav: string length > STRSPACE");
- return NULL;
- }
- sp = (STRSAV_SPACE*) mcalloc(csound, sizeof(STRSAV_SPACE));
- sp->prv = STRSAV_SPACE_;
- csound->strsav_space = sp;
+ sp = (STRSAV_SPACE*)mcalloc(csound, sizeof(STRSAV_SPACE));
+ sp->sp =
+ (char*)mcalloc(csound, sp->size = n+STRSPACE);
+ csound->Message(csound,
+ "internal message: strsav: buffer length now %d\n",
+ sp->size);
+ }
+ else {
+ sp = (STRSAV_SPACE*) mcalloc(csound, sizeof(STRSAV_SPACE));
+ sp->sp =
+ (char*)mcalloc(csound, STRSAV_SPACE_->size = STRSPACE);
+ }
+ sp->prv = STRSAV_SPACE_;
+ csound->strsav_space = sp;
}
/* use space from buffer */
- ssp = (STRSAV*) ((char*) STRSAV_SPACE_->sp + STRSAV_SPACE_->splim);
+ // ssp = (STRSAV*) ((char*) STRSAV_SPACE_->sp + STRSAV_SPACE_->splim);
+ ssp = (STRSAV*)(&(STRSAV_SPACE_->sp)[STRSAV_SPACE_->splim]);
STRSAV_SPACE_->splim += n;
strcpy(ssp->s, s); /* save string */
/* link into chain */
@@ -1074,248 +1085,6 @@ int csoundCheckOpcodePluginFile(CSOUND *csound, const char *fname)
return 1;
}
-/* static CS_NOINLINE int csoundLoadOpcodeDB_AddFile(CSOUND *csound, */
-/* CsoundOpcodePluginFile_t *fp) */
-/* { */
-/* CsoundOpcodePluginFile_t **pp, *p; */
-/* unsigned char h; */
-
-/* pp = (CsoundOpcodePluginFile_t**) csound->pluginOpcodeFiles; */
-/* h = name_hash_2(csound, fp->fname); */
-/* p = pp[h]; */
-/* while (p) { */
-/* /\* check for a name conflict *\/ */
-/* if (!sCmp(p->fname, fp->fname)) */
-/* return -1; */
-/* p = p->nxt; */
-/* } */
-/* fp->nxt = pp[h]; */
-/* fp->isLoaded = -1; */
-/* pp[h] = fp; */
-/* return 0; */
-/* } */
-
-/* static CS_NOINLINE int csoundLoadOpcodeDB_AddOpcode(CSOUND *csound, */
-/* CsoundPluginOpcode_t *op) */
-/* { */
-/* CsoundPluginOpcode_t **pp, *p; */
-/* unsigned char h; */
-
-/* pp = (CsoundPluginOpcode_t**) csound->pluginOpcodeDB; */
-/* h = name_hash_2(csound, op->opname); */
-/* p = pp[h]; */
-/* while (p) { */
-/* /\* check for a name conflict *\/ */
-/* if (!sCmp(p->opname, op->opname)) */
-/* return -1; */
-/* p = p->nxt; */
-/* } */
-/* op->nxt = pp[h]; */
-/* pp[h] = op; */
-/* return 0; */
-/* } */
-
-/* void csoundDestroyOpcodeDB(CSOUND *csound) */
-/* { */
-/* void *p; */
-
-/* p = csound->pluginOpcodeFiles; */
-/* csound->pluginOpcodeFiles = NULL; */
-/* csound->pluginOpcodeDB = NULL; */
-/* csound->Free(csound, p); */
-/* } */
-
-/* load opcodes.dir from the specified directory, and set up database */
-
-/* int csoundLoadOpcodeDB(CSOUND *csound, const char *dname) */
-/* { */
-/* char err_msg[256]; */
-/* char *s, *sp, *fileData = (char*) NULL; */
-/* void *fd = (void*) NULL; */
-/* FILE *fp = (FILE*) NULL; */
-/* size_t i, n, fileLen, fileCnt, opcodeCnt, byteCnt; */
-/* void *p, *p1, *p2; */
-/* CsoundOpcodePluginFile_t *currentFile; */
-
-/* /\* check file name *\/ */
-/* if (dname == NULL || dname[0] == (char) 0) */
-/* return 0; */
-/* n = strlen(dname); */
-/* s = csoundConcatenatePaths(csound, dname, "opcodes.dir"); */
-/* /\* open and load file *\/ */
-/* fd = csound->FileOpen(csound, &fp, CSFILE_STD, s, "rb", NULL); */
-/* csound->Free(csound, s); */
-/* if (fd == NULL) */
-/* return 0; */
-/* if (fseek(fp, 0L, SEEK_END) != 0) { */
-/* sprintf(&(err_msg[0]), "seek error"); */
-/* goto err_return; */
-/* } */
-/* fileLen = (size_t) ftell(fp); */
-/* fseek(fp, 0L, SEEK_SET); */
-/* if (fileLen == (size_t) 0) { */
-/* csound->FileClose(csound, fd); */
-/* return 0; */
-/* } */
-/* fileData = (char*) csound->Malloc(csound, fileLen + (size_t) 1); */
-/* n = fread(fileData, (size_t) 1, fileLen, fp); */
-/* csound->FileClose(csound, fd); */
-/* fd = NULL; */
-/* if (n != fileLen) { */
-/* sprintf(&(err_msg[0]), "read error"); */
-/* goto err_return; */
-/* } */
-/* fileData[fileLen] = (char) '\n'; */
-/* /\* check syntax, and count the number of files and opcodes *\/ */
-/* fileCnt = (size_t) 0; */
-/* opcodeCnt = (size_t) 0; */
-/* byteCnt = (size_t) 0; */
-/* n = fileLen; */
-/* for (i = (size_t) 0; i <= fileLen; i++) { */
-/* if (fileData[i] == (char) ' ' || fileData[i] == (char) '\t' || */
-/* fileData[i] == (char) '\r' || fileData[i] == (char) '\n') { */
-/* if (n >= fileLen) */
-/* continue; */
-/* fileData[i] = (char) 0; */
-/* if (fileData[i - 1] != ':') { */
-/* if (!fileCnt) { */
-/* sprintf(&(err_msg[0]), "syntax error"); */
-/* goto err_return; */
-/* } */
-/* opcodeCnt++; */
-/* } */
-/* #if !(defined(LINUX) || defined(__unix__) || defined(__MACH__)) */
-/* else { */
-/* size_t j; */
-/* /\* on some platforms, file names are case insensitive *\/ */
-/* for (j = n; j < (i - 1); j++) { */
-/* if (isupper(fileData[j])) */
-/* fileData[j] = (char) tolower(fileData[j]); */
-/* } */
-/* } */
-/* #endif */
-/* n = fileLen; */
-/* continue; */
-/* } */
-/* if (n >= fileLen) */
-/* n = i; */
-/* if (!(isalnum(fileData[i]) || fileData[i] == (char) '.' || */
-/* fileData[i] == (char) '-' || fileData[i] == (char) '_')) { */
-/* if (fileData[i] == (char) ':' && i != n && i < fileLen && */
-/* (fileData[i + 1] == (char) ' ' || fileData[i + 1] == (char) '\t' || */
-/* fileData[i + 1] == (char) '\r' || fileData[i + 1] == (char) '\n')) */
-/* fileCnt++; */
-/* else { */
-/* sprintf(&(err_msg[0]), "syntax error"); */
-/* goto err_return; */
-/* } */
-/* } */
-/* else */
-/* byteCnt++; */
-/* } */
-/* /\* calculate the number of bytes to allocate *\/ */
-/* byteCnt += ((size_t) 256 * sizeof(CsoundOpcodePluginFile_t*)); */
-/* byteCnt += ((size_t) 256 * sizeof(CsoundPluginOpcode_t*)); */
-/* byteCnt += (fileCnt * sizeof(CsoundOpcodePluginFile_t)); */
-/* byteCnt = (byteCnt + (size_t) 15) & (~((size_t) 15)); */
-/* byteCnt += (opcodeCnt * sizeof(CsoundPluginOpcode_t)); */
-/* byteCnt += (fileCnt * (strlen(dname) */
-/* #if defined(WIN32) */
-/* + (size_t) 6 /\* "\\NAME.dll\0" *\/ */
-/* #elif defined(__MACH__) */
-/* + (size_t) 11 /\* "/libNAME.dylib\0" *\/ */
-/* #else */
-/* + (size_t) 8 /\* "/libNAME.so\0" *\/ */
-/* #endif */
-/* )); */
-/* byteCnt += opcodeCnt; */
-/* /\* allocate and set up database *\/ */
-/* p = csound->Calloc(csound, byteCnt); */
-/* csound->pluginOpcodeFiles = p; */
-/* n = (size_t) 256 * sizeof(CsoundOpcodePluginFile_t*); */
-/* csound->pluginOpcodeDB = (void*) &(((char*) p)[n]); */
-/* n += ((size_t) 256 * sizeof(CsoundPluginOpcode_t*)); */
-/* p1 = (void*) &(((char*) p)[n]); */
-/* n += (fileCnt * sizeof(CsoundOpcodePluginFile_t)); */
-/* n = (n + (size_t) 15) & (~((size_t) 15)); */
-/* p2 = (void*) &(((char*) p)[n]); */
-/* n += (opcodeCnt * sizeof(CsoundPluginOpcode_t)); */
-/* sp = &(((char*) p)[n]); */
-/* currentFile = (CsoundOpcodePluginFile_t*) NULL; */
-/* i = (size_t) 0; */
-/* while (i < fileLen) { */
-/* if (fileData[i] == (char) ' ' || fileData[i] == (char) '\t' || */
-/* fileData[i] == (char) '\r' || fileData[i] == (char) '\n') { */
-/* i++; */
-/* continue; */
-/* } */
-/* s = &(fileData[i]); */
-/* n = strlen(s); */
-/* i += (n + (size_t) 1); */
-/* if (s[n - 1] != (char) ':') { */
-/* /\* add opcode entry *\/ */
-/* CsoundPluginOpcode_t *op_; */
-/* op_ = (CsoundPluginOpcode_t*) p2; */
-/* p2 = (void*) ((char*) p2 + (long) sizeof(CsoundPluginOpcode_t)); */
-/* strcpy(sp, s); */
-/* op_->opname = sp; */
-/* sp += ((long) strlen(s) + 1L); */
-/* op_->fp = currentFile; */
-/* if (csoundLoadOpcodeDB_AddOpcode(csound, op_) != 0) { */
-/* sprintf(&(err_msg[0]), "duplicate opcode name"); */
-/* goto err_return; */
-/* } */
-/* } */
-/* else { */
-/* /\* add file entry *\/ */
-/* CsoundOpcodePluginFile_t *fp_; */
-/* fp_ = (CsoundOpcodePluginFile_t*) p1; */
-/* p1 = (void*) ((char*) p1 + (long) sizeof(CsoundOpcodePluginFile_t)); */
-/* s[n - 1] = (char) 0; */
-/* strcpy(sp, dname); */
-/* n = strlen(dname); */
-/* if (sp[n - 1] == (char) DIRSEP) */
-/* n--; */
-/* fp_->fullName = sp; */
-/* sp = (char*) fp_->fullName + (long) n; */
-/* #if defined(WIN32) */
-/* sprintf(sp, "\\%s.dll", s); */
-/* #elif defined(__MACH__) */
-/* sprintf(sp, "/lib%s.dylib", s); */
-/* #else */
-/* sprintf(sp, "%clib%s.so", DIRSEP, s); */
-/* #endif */
-/* fp_->fname = &(sp[1]); */
-/* sp = (char*) strchr(fp_->fname, '\0') + 1L; */
-/* if (csoundLoadOpcodeDB_AddFile(csound, fp_) != 0) { */
-/* sprintf(&(err_msg[0]), "duplicate file name"); */
-/* goto err_return; */
-/* } */
-/* currentFile = fp_; */
-/* } */
-/* if ((size_t) ((char*) sp - (char*) p) > byteCnt) */
-/* csound->Die(csound, Str(" *** internal error while " */
-/* "loading opcode database file")); */
-/* } */
-/* /\* clean up *\/ */
-/* csound->Free(csound, fileData); */
-/* /\* plugin opcode database has been successfully loaded *\/ */
-/* return 0; */
-
-/* err_return: */
-/* if (fileData) */
-/* csound->Free(csound, fileData); */
-/* if (fd) */
-/* csound->FileClose(csound, fd); */
-/* csoundDestroyOpcodeDB(csound); */
-/* csound->ErrorMsg(csound, Str(" *** error loading opcode database file: "), */
-/* Str(&(err_msg[0]))); */
-/* return -1; */
-/* } */
-
-/* load all pending opcode plugin libraries */
-/* called when listing opcodes (-z) */
-
int csoundLoadAllPluginOpcodes(CSOUND *csound)
{
CsoundOpcodePluginFile_t *p;
diff --git a/Engine/new_orc_parser.c b/Engine/new_orc_parser.c
index 5ee66c1..dc17611 100644
--- a/Engine/new_orc_parser.c
+++ b/Engine/new_orc_parser.c
@@ -27,7 +27,7 @@
#include "csound_orcparse.h"
#include "csound_orc.h"
#include "parse_param.h"
-
+#include "corfile.h"
//#include "yyguts.h"
@@ -38,6 +38,11 @@ extern void csound_orcrestart(FILE*, void *);
extern int csound_orcdebug;
extern int csound_orcparse(PARSE_PARM *, void *, CSOUND*, TREE*);
+extern void csound_orclex_init(void *);
+extern void csound_orcset_extra(void *, void *);
+extern void csound_orc_scan_string(char *, void *);
+extern void csound_orcset_lineno(int, void*);
+extern void csound_orclex_destroy(void *);
extern void init_symbtab(CSOUND*);
extern void print_tree(CSOUND *, char *, TREE *);
extern TREE* verify_tree(CSOUND *, TREE *);
@@ -46,23 +51,23 @@ extern TREE* csound_orc_optimize(CSOUND *, TREE *);
extern void csound_orc_compile(CSOUND *, TREE *);
#ifdef PARCS
extern TREE *csp_locks_insert(CSOUND *csound, TREE *root);
+void csp_locks_cache_build(CSOUND *);
+void csp_weights_calculate(CSOUND *, TREE *);
#endif
-void new_orc_parser(CSOUND *csound)
+int new_orc_parser(CSOUND *csound)
{
- void *t;
int retVal;
TREE* astTree = (TREE *)mcalloc(csound, sizeof(TREE));
OPARMS *O = csound->oparms;
PARSE_PARM pp;
- void *ttt;
// struct yyguts_t* yyg;
memset(&pp, '\0', sizeof(PARSE_PARM));
init_symbtab(csound);
- pp.buffer = (char*)csound->Malloc(csound, lMaxBuffer);
+ pp.buffer = (char*)csound->Calloc(csound, lMaxBuffer);
if (UNLIKELY(PARSER_DEBUG)) csound->Message(csound, "Testing...\n");
@@ -72,30 +77,36 @@ void new_orc_parser(CSOUND *csound)
csound_orcset_extra(&pp, pp.yyscanner);
- if (UNLIKELY((t = csound->FileOpen2(csound, &ttt, CSFILE_STD,
- csound->orchname, "rb", NULL,
- CSFTYPE_ORCHESTRA, 0)) == NULL)) {
- csound->Free(csound, pp.buffer);
- csoundDie(csound, Str("cannot open orch file %s"), csound->orchname);
- }
- csound_orcset_in(ttt, pp.yyscanner);
- csound_orcrestart(ttt, pp.yyscanner);
- csound_orcset_lineno(csound->orcLineOffset, pp.yyscanner);
+ csound_orc_scan_string(corfile_body(csound->orchstr), pp.yyscanner);
+ /* These relate to file input only */
+ /* csound_orcset_in(ttt, pp.yyscanner); */
+ /* csound_orcrestart(ttt, pp.yyscanner); */
+ //csound_orcset_lineno(csound->orcLineOffset, pp.yyscanner);
cs_init_math_constants_macros(csound, pp.yyscanner);
cs_init_omacros(csound, pp.yyscanner, csound->omacros);
retVal = csound_orcparse(&pp, pp.yyscanner, csound, astTree);
-
+ if (csound->synterrcnt) retVal = 3;
+ if (UNLIKELY(pp.ifdefStack != NULL)) {
+ csound->Message(csound, Str("Unmatched #ifdef\n"));
+ csound->LongJmp(csound, 1);
+ }
if (LIKELY(retVal == 0)) {
csound->Message(csound, "Parsing successful!\n");
}
- else if (retVal == 1){
- csound->Message(csound, "Parsing failed due to invalid input!\n");
- }
- else if (retVal == 2){
- csound->Message(csound, "Parsing failed due to memory exhaustion!\n");
+ else {
+ if (retVal == 1){
+ csound->Message(csound, "Parsing failed due to invalid input!\n");
+ }
+ else if (retVal == 2){
+ csound->Message(csound, "Parsing failed due to memory exhaustion!\n");
+ }
+ else if (retVal == 3){
+ csound->Message(csound, "Parsing failed due to %d syntax error%s!\n",
+ csound->synterrcnt, csound->synterrcnt==1?"":"s");
+ }
+ goto ending;
}
-
if (UNLIKELY(PARSER_DEBUG)) {
print_tree(csound, "AST - INITIAL\n", astTree);
}
@@ -124,6 +135,10 @@ void new_orc_parser(CSOUND *csound)
astTree = csound_orc_optimize(csound, astTree);
csound_orc_compile(csound, astTree);
+ ending:
csound->Free(csound, pp.buffer);
+ corfile_rm(&csound->orchstr);
+ csound_orclex_destroy(pp.yyscanner);
+ return retVal;
}
diff --git a/Engine/otran.c b/Engine/otran.c
index b29e930..0e8b359 100644
--- a/Engine/otran.c
+++ b/Engine/otran.c
@@ -30,6 +30,7 @@
#include "insert.h"
#include "pstream.h"
#include "namedins.h" /* IV - Oct 31 2002 */
+#include "corfile.h"
typedef struct NAME_ {
char *namep;
@@ -108,13 +109,13 @@ static int parse_opcode_args(CSOUND *csound, OENTRY *opc)
OPCODINFO *inm = (OPCODINFO*) opc->useropinfo;
char *types, *otypes;
int i, i_incnt, a_incnt, k_incnt, i_outcnt, a_outcnt, k_outcnt, err;
- int S_incnt, S_outcnt, f_outcnt, f_incnt;
+ int S_incnt, S_outcnt, f_outcnt, f_incnt, t_incnt, t_outcnt;
int16 *a_inlist, *k_inlist, *i_inlist, *a_outlist, *k_outlist, *i_outlist;
- int16 *S_inlist, *S_outlist, *f_inlist, *f_outlist;
+ int16 *S_inlist, *S_outlist, *f_inlist, *f_outlist, *t_inlist, *t_outlist;
/* count the number of arguments, and check types */
i = i_incnt = S_incnt = a_incnt = k_incnt = f_incnt = f_outcnt =
- i_outcnt = S_outcnt = a_outcnt = k_outcnt = err = 0;
+ i_outcnt = S_outcnt = a_outcnt = k_outcnt = t_incnt = t_outcnt = err = 0;
types = inm->intypes; otypes = opc->intypes;
opc->dsblksiz = (uint16) sizeof(UOPCODE);
if (!strcmp(types, "0"))
@@ -132,6 +133,9 @@ static int parse_opcode_args(CSOUND *csound, OENTRY *opc)
case 'f':
f_incnt++; *otypes++ = *types;
break;
+ case 't':
+ t_incnt++; *otypes++ = *types;
+ break;
case 'i':
case 'o':
case 'p':
@@ -153,7 +157,7 @@ static int parse_opcode_args(CSOUND *csound, OENTRY *opc)
}
*otypes++ = 'o'; *otypes = '\0'; /* optional arg for local ksmps */
inm->inchns = i; /* total number of input chnls */
- inm->perf_incnt = a_incnt + k_incnt + f_incnt;
+ inm->perf_incnt = a_incnt + k_incnt + f_incnt + t_incnt;
opc->dsblksiz += (uint16) (sizeof(MYFLT*) * i);
/* same for outputs */
i = 0;
@@ -177,6 +181,9 @@ static int parse_opcode_args(CSOUND *csound, OENTRY *opc)
case 'f':
f_outcnt++; *otypes++ = *types;
break;
+ case 't':
+ t_outcnt++; *otypes++ = *types;
+ break;
case 'i':
i_outcnt++; *otypes++ = *types;
break;
@@ -191,7 +198,7 @@ static int parse_opcode_args(CSOUND *csound, OENTRY *opc)
}
*otypes = '\0';
inm->outchns = i; /* total number of output chnls */
- inm->perf_outcnt = a_outcnt + k_outcnt + f_outcnt;
+ inm->perf_outcnt = a_outcnt + k_outcnt + f_outcnt + t_outcnt;
opc->dsblksiz += (uint16) (sizeof(MYFLT*) * i);
opc->dsblksiz = ((opc->dsblksiz + (uint16) 15)
& (~((uint16) 15))); /* align (needed ?) */
@@ -199,17 +206,19 @@ static int parse_opcode_args(CSOUND *csound, OENTRY *opc)
i = i_incnt + S_incnt + inm->perf_incnt +
i_outcnt + S_outcnt + inm->perf_outcnt;
i_inlist = inm->in_ndx_list = (int16*) mmalloc(csound,
- sizeof(int16) * (i + 10));
+ sizeof(int16) * (i + 14));
S_inlist = i_inlist + i_incnt + 1;
a_inlist = S_inlist + S_incnt + 1;
k_inlist = a_inlist + a_incnt + 1;
f_inlist = k_inlist + k_incnt + 1;
+ t_inlist = f_inlist + f_incnt + 1;
i = 0; types = inm->intypes;
while (*types) {
switch (*types++) {
case 'a': *a_inlist++ = i; break;
case 'k': *k_inlist++ = i; break;
case 'f': *f_inlist++ = i; break;
+ case 't': *t_inlist++ = i; break;
case 'K': *k_inlist++ = i; /* also updated at i-time */
case 'i':
case 'o':
@@ -219,25 +228,28 @@ static int parse_opcode_args(CSOUND *csound, OENTRY *opc)
}
i++;
}
- *i_inlist = *S_inlist = *a_inlist = *k_inlist = *f_inlist = -1; /* put delimiters */
- i_outlist = inm->out_ndx_list = f_inlist + 1;
+ *i_inlist = *S_inlist = *a_inlist = *k_inlist = *f_inlist = *t_inlist = -1; /* put delimiters */
+ i_outlist = inm->out_ndx_list = t_inlist + 1;
S_outlist = i_outlist + i_outcnt + 1;
a_outlist = S_outlist + S_outcnt + 1;
k_outlist = a_outlist + a_outcnt + 1;
f_outlist = k_outlist + k_outcnt + 1;
+ t_outlist = f_outlist + f_outcnt + 1;
i = 0; types = inm->outtypes;
while (*types) {
switch (*types++) {
case 'a': *a_outlist++ = i; break;
case 'k': *k_outlist++ = i; break;
case 'f': *f_outlist++ = i; break;
+ case 't': *t_outlist++ = i; break;
case 'K': *k_outlist++ = i; /* also updated at i-time */
case 'i': *i_outlist++ = i; break;
case 'S': *S_outlist++ = i; break;
}
i++;
}
- *i_outlist = *S_outlist = *a_outlist = *k_outlist = *f_outlist = -1; /* put delimiters */
+ *i_outlist = *S_outlist = *a_outlist = *k_outlist =
+ *f_outlist = *t_outlist = -1; /* put delimiters */
return err;
}
@@ -285,6 +297,7 @@ void otran(CSOUND *csound)
gblnamset(csound, "$ksmps");
rdorchfile(csound); /* go read orch file */
+ corfile_rm(&(csound->orchstr));
csound->pool = (MYFLT*) mmalloc(csound, NCONSTS * sizeof(MYFLT));
ST(poolcount) = 0;
@@ -352,7 +365,8 @@ void otran(CSOUND *csound)
err++; continue;
}
/* IV - Oct 31 2002: store the name */
- if (UNLIKELY(!named_instr_alloc(csound, c, ip, insno_priority))) {
+ if (UNLIKELY(!named_instr_alloc(csound, c, ip,
+ insno_priority))) {
synterr(csound, Str("instr %s redefined"), c);
err++; continue;
}
@@ -568,7 +582,8 @@ void otran(CSOUND *csound)
else if (UNLIKELY(p->tran_ksmps < FL(0.75) ||
FLOAT_COMPARE(p->tran_ksmps, MYFLT2LRND(p->tran_ksmps))))
synterr(p, Str("%s invalid ksmps value"), err_msg);
- else if (UNLIKELY(FLOAT_COMPARE(p->tran_sr, (double) p->tran_kr * p->tran_ksmps)))
+ else if (UNLIKELY(FLOAT_COMPARE(p->tran_sr,
+ (double) p->tran_kr * p->tran_ksmps)))
synterr(p, Str("%s inconsistent sr, kr, ksmps"), err_msg);
}
@@ -976,12 +991,16 @@ int lgexist(CSOUND *csound, const char *s)
{
unsigned char h = name_hash(csound, s);
NAME *p;
+
+
for (p = ST(gblNames)[h]; p != NULL && sCmp(p->namep, s); p = p->nxt);
if (p != NULL)
return 1;
for (p = ST(lclNames)[h]; p != NULL && sCmp(p->namep, s); p = p->nxt);
+
return (p == NULL ? 0 : 1);
+
}
/* builds namelist & type counts for gbl names */
diff --git a/Engine/parse_param.h b/Engine/parse_param.h
index 5a589f7..387be22 100644
--- a/Engine/parse_param.h
+++ b/Engine/parse_param.h
@@ -16,6 +16,15 @@ typedef struct MACRO { /* To store active macros */
char *arg[MARGS]; /* With these arguments */
} MACRO;
+typedef struct IFDEFSTACK_ {
+ struct IFDEFSTACK_ *prv;
+ unsigned char isDef; /* non-zero if #ifdef is true, or #ifndef */
+ /* is false */
+ unsigned char isElse; /* non-zero between #else and #endif */
+ unsigned char isSkip; /* sum of: 1: skipping code due to this */
+ /* #ifdef, 2: skipping due to parent */
+} IFDEFSTACK;
+
typedef struct parse_parm_s {
void *yyscanner;
char *buffer;
@@ -30,6 +39,10 @@ typedef struct parse_parm_s {
unsigned int macro_stack_ptr;
char *xstrbuff;
int xstrptr,xstrmax;
+ IFDEFSTACK *ifdefStack;
+ unsigned char isIfndef;
+ unsigned char isInclude;
+ unsigned char clearBufferAfterEOF;
} PARSE_PARM;
#define lMaxBuffer (1000)
diff --git a/Engine/rdorch.c b/Engine/rdorch.c
index 217b577..7c2ebe6 100644
--- a/Engine/rdorch.c
+++ b/Engine/rdorch.c
@@ -1,24 +1,24 @@
/*
- rdorch.c:
+ rdorch.c:
- Copyright (C) 1991-2002 Barry Vercoe, John ffitch, Istvan Varga
+ Copyright (C) 1991-2002 Barry Vercoe, John ffitch, Istvan Varga
- This file is part of Csound.
+ This file is part of Csound.
- The Csound Library is free software; you can redistribute it
- and/or modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
+ The Csound Library is free software; you can redistribute it
+ and/or modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
- Csound is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Lesser General Public License for more details.
+ Csound is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with Csound; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA
+ You should have received a copy of the GNU Lesser General Public
+ License along with Csound; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA
*/
#include "csoundCore.h" /* RDORCH.C */
@@ -27,6 +27,7 @@
#include "typetabl.h" /* IV - Oct 31 2002 */
#include "envvar.h"
#include <stddef.h>
+#include "corfile.h"
#ifdef sun
#define SEEK_SET 0
@@ -39,98 +40,100 @@
#define GRPMAX VARGMAX
#define LBLMAX 100
+//#define MACDEBUG (1)
+
typedef struct {
- int reqline;
- char *label;
+ int reqline;
+ char *label;
} LBLREQ;
#define MARGS (3)
typedef struct MACRO { /* To store active macros */
- char *name; /* Use is by name */
- int acnt; /* Count of arguments */
- char *body; /* The text of the macro */
- struct MACRO *next; /* Chain of active macros */
- int margs; /* amount of space for args */
- char *arg[MARGS]; /* With these arguments */
+ char *name; /* Use is by name */
+ int acnt; /* Count of arguments */
+ char *body; /* The text of the macro */
+ struct MACRO *next; /* Chain of active macros */
+ int margs; /* amount of space for args */
+ char *arg[MARGS]; /* With these arguments */
} MACRO;
typedef struct in_stack {
- int16 string;
- int16 args;
- char *body;
- FILE *file;
- void *fd;
- MACRO *mac;
- int line;
- int unget_cnt;
- char unget_buf[128];
+ int16 string;
+ int16 args;
+ char *body;
+ FILE *file;
+ void *fd;
+ MACRO *mac;
+ int line;
+ int unget_cnt;
+ char unget_buf[128];
} IN_STACK;
typedef struct iflabel { /* for if/else/endif */
- char els[256];
- char end[256];
- /* is the conditional valid at i-time ? 0: no, 1: yes, -1: unknown */
- int ithen;
- struct iflabel *prv;
+ char els[256];
+ char end[256];
+ /* is the conditional valid at i-time ? 0: no, 1: yes, -1: unknown */
+ int ithen;
+ struct iflabel *prv;
} IFLABEL;
typedef struct IFDEFSTACK_ {
- struct IFDEFSTACK_ *prv;
- unsigned char isDef; /* non-zero if #ifdef is true, or #ifndef */
- /* is false */
- unsigned char isElse; /* non-zero between #else and #endif */
- unsigned char isSkip; /* sum of: 1: skipping code due to this */
- /* #ifdef, 2: skipping due to parent */
+ struct IFDEFSTACK_ *prv;
+ unsigned char isDef; /* non-zero if #ifdef is true, or #ifndef */
+ /* is false */
+ unsigned char isElse; /* non-zero between #else and #endif */
+ unsigned char isSkip; /* sum of: 1: skipping code due to this */
+ /* #ifdef, 2: skipping due to parent */
} IFDEFSTACK;
typedef struct {
- MACRO *macros;
- int32 lenmax /* = LENMAX */; /* Length of input line buffer */
- char *ortext;
- char **linadr; /* adr of each line in text */
- int curline; /* current line being examined */
- char *collectbuf; /* splitline collect buffer */
- char **group; /* splitline local storage */
- char **grpsav; /* copy of above */
- int32 grpmax /* = GRPMAX */; /* Size of group structure */
- int opgrpno; /* grpno identified as opcode */
- int linopnum; /* data for opcode in this line */
- char *linopcod;
- int linlabels; /* count of labels this line */
- LBLREQ *lblreq;
- int lblmax;
- int lblcnt;
- int lgprevdef;
- int opnum; /* opcod data carriers */
- char *opcod; /* (line or subline) */
- ARGLST *nxtarglist, *nullist;
- IN_STACK *inputs, *str;
- FILE *fp;
- void *fd;
- int input_size, input_cnt;
- int pop; /* Number of macros to pop */
- int ingappop /* = 1 */;
- int linepos /* = -1 */;
- int32 *typemask_tabl;
- int32 *typemask_tabl_in, *typemask_tabl_out;
- int32 orchsiz;
- IFLABEL *iflabels;
- int repeatingElseifLine;
- int32 tempNum /* = 300L */;
- int repeatingElseLine;
- int16 grpcnt, nxtest /* = 1 */;
- int16 xprtstno, polcnt;
- int16 instrblk, instrcnt;
- int16 opcodblk; /* IV - Sep 8 2002 */
- int16 opcodflg; /* 1: xin, 2: xout, 4: setksmps */
- IFDEFSTACK *ifdefStack;
- TEXT optext; /* struct to be passed back to caller */
+ MACRO *macros;
+ int32 lenmax /* = LENMAX */; /* Length of input line buffer */
+ char *ortext;
+ char **linadr; /* adr of each line in text */
+ int curline; /* current line being examined */
+ char *collectbuf; /* splitline collect buffer */
+ char **group; /* splitline local storage */
+ char **grpsav; /* copy of above */
+ int32 grpmax /* = GRPMAX */; /* Size of group structure */
+ int opgrpno; /* grpno identified as opcode */
+ int linopnum; /* data for opcode in this line */
+ char *linopcod;
+ int linlabels; /* count of labels this line */
+ LBLREQ *lblreq;
+ int lblmax;
+ int lblcnt;
+ int lgprevdef;
+ int opnum; /* opcod data carriers */
+ char *opcod; /* (line or subline) */
+ ARGLST *nxtarglist, *nullist;
+ IN_STACK *inputs, *str;
+ FILE *fp;
+ void *fd;
+ int input_size, input_cnt;
+ int pop; /* Number of macros to pop */
+ int ingappop /* = 1 */;
+ int linepos /* = -1 */;
+ int32 *typemask_tabl;
+ int32 *typemask_tabl_in, *typemask_tabl_out;
+ int32 orchsiz;
+ IFLABEL *iflabels;
+ int repeatingElseifLine;
+ int32 tempNum /* = 300L */;
+ int repeatingElseLine;
+ int16 grpcnt, nxtest /* = 1 */;
+ int16 xprtstno, polcnt;
+ int16 instrblk, instrcnt;
+ int16 opcodblk; /* IV - Sep 8 2002 */
+ int16 opcodflg; /* 1: xin, 2: xout, 4: setksmps */
+ IFDEFSTACK *ifdefStack;
+ TEXT optext; /* struct to be passed back to caller */
} RDORCH_GLOBALS;
#define ST(x) (((RDORCH_GLOBALS*) csound->rdorchGlobals)->x)
#define CURLINE (csound->oparms->useCsdLineCounts ? \
- csound->orcLineOffset + ST(curline) : ST(curline))
+ csound->orcLineOffset + ST(curline) : ST(curline))
static void intyperr(CSOUND *, int, char, char);
static void printgroups(CSOUND *, int);
@@ -142,17 +145,17 @@ static void synterrp(CSOUND *, const char *, char *);
static ARGLST *copy_arglist(CSOUND *csound, ARGLST *old)
{
- size_t n = sizeof(ARGLST) + old->count * sizeof(char*) - sizeof(char*);
- ARGLST *nn = (ARGLST*) mmalloc(csound, n);
- memcpy(nn, old, n);
- memset(old, 0, n);
- return nn;
+ size_t n = sizeof(ARGLST) + old->count * sizeof(char*) - sizeof(char*);
+ ARGLST *nn = (ARGLST*) mmalloc(csound, n);
+ memcpy(nn, old, n);
+ memset(old, 0, n);
+ return nn;
}
static inline int isNameChar(int c, int pos)
{
- c = (int) ((unsigned char) c);
- return (isalpha(c) || (pos && (c == '_' || isdigit(c))));
+ c = (int) ((unsigned char) c);
+ return (isalpha(c) || (pos && (c == '_' || isdigit(c))));
}
/* Functions to read/unread chracters from
@@ -160,879 +163,903 @@ static inline int isNameChar(int c, int pos)
static inline void ungetorchar(CSOUND *csound, int c)
{
- if (LIKELY(ST(str)->unget_cnt < 128))
- ST(str)->unget_buf[ST(str)->unget_cnt++] = (char) c;
- else
- csoundDie(csound, Str("ungetorchar(): buffer overflow"));
+ if (LIKELY(ST(str)->unget_cnt < 128))
+ ST(str)->unget_buf[ST(str)->unget_cnt++] = (char) c;
+ else
+ csoundDie(csound, Str("ungetorchar(): buffer overflow"));
}
static int skiporccomment(CSOUND *csound)
{
- int c;
- int mode = 0; /* Mode = 1 after / character */
- int srccnt = 0;
+ int c;
+ int mode = 0; /* Mode = 1 after / character */
+ int srccnt = 0;
top:
- if (ST(str)->unget_cnt) {
- c = (int) ((unsigned char) ST(str)->unget_buf[--ST(str)->unget_cnt]);
- }
- else if (ST(str)->string) {
- c = *ST(str)->body++;
- if (c == '\0') {
- ST(pop) += ST(str)->args;
- ST(str)--; ST(input_cnt)--;
+ if (ST(str)->unget_cnt) {
+ c = (int) ((unsigned char) ST(str)->unget_buf[--ST(str)->unget_cnt]);
+ }
+ else if (ST(str)->string) {
+ c = *ST(str)->body++;
+ if (c == '\0') {
+ ST(pop) += ST(str)->args;
+ ST(str)--; ST(input_cnt)--;
+ ST(linepos) = -1;
+ return srccnt;
+ }
+ }
+ else {
+ c = getc(ST(str)->file);
+ if (c == EOF) {
+ if (ST(str) == &ST(inputs)[0]) {
ST(linepos) = -1;
return srccnt;
}
- }
- else {
- c = getc(ST(str)->file);
- if (c == EOF) {
- if (ST(str) == &ST(inputs)[0]) {
- ST(linepos) = -1;
- return srccnt;
- }
- if (ST(str)->fd != NULL) {
- csound->FileClose(csound, ST(str)->fd); ST(str)->fd = NULL;
- }
- ST(str)--; ST(input_cnt)--;
- ST(str)->line++; ST(linepos) = -1;
- return srccnt;
+ if (ST(str)->fd != NULL) {
+ csound->FileClose(csound, ST(str)->fd); ST(str)->fd = NULL;
}
- }
- if (c == '*') mode = 1; /* look for end of comment */
- else if (c == '/' && mode == 1) {
- return srccnt;
- }
- else mode = 0;
- if (c == '\n') {
+ ST(str)--; ST(input_cnt)--;
ST(str)->line++; ST(linepos) = -1;
- srccnt++;
+ return srccnt;
}
- goto top;
+ }
+ if (c == '*') mode = 1; /* look for end of comment */
+ else if (c == '/' && mode == 1) {
+ return srccnt;
+ }
+ else mode = 0;
+ if (c == '\n') {
+ ST(str)->line++; ST(linepos) = -1;
+ srccnt++;
+ }
+ goto top;
}
static void skiporchar(CSOUND *csound)
{
- int c;
+ int c;
top:
- if (UNLIKELY(ST(str)->unget_cnt)) {
- c = (int) ((unsigned char) ST(str)->unget_buf[--ST(str)->unget_cnt]);
- if (c == '\n') {
- ST(linepos) = -1;
- return;
- }
- goto top;
+ if (UNLIKELY(ST(str)->unget_cnt)) {
+ c = (int) ((unsigned char) ST(str)->unget_buf[--ST(str)->unget_cnt]);
+ if (c == '\n') {
+ ST(linepos) = -1;
+ return;
}
- else if (ST(str)->string) {
- c = *ST(str)->body++;
- if (c == '\n') {
- ST(str)->line++; ST(linepos) = -1;
- return;
- }
- if (c == '\0') {
- ST(pop) += ST(str)->args;
- ST(str)--; ST(input_cnt)--;
- ST(linepos) = -1;
- return;
- }
+ goto top;
+ }
+ else if (ST(str)->string) {
+ c = *ST(str)->body++;
+ if (c == '\n') {
+ ST(str)->line++; ST(linepos) = -1;
+ return;
}
- else {
- c = getc(ST(str)->file);
- if (c == '\n' || c == '\r' || c == 26) { /* MS-DOS spare ^Z */
- ST(str)->line++; ST(linepos) = -1;
- if (c == '\r') {
- if ((c = getc(ST(str)->file)) != '\n')
- ungetc(c, ST(str)->file);
+ if (c == '\0') {
+ ST(pop) += ST(str)->args;
+ ST(str)--; ST(input_cnt)--;
+ ST(linepos) = -1;
+ return;
+ }
+ }
+ else {
+ c = getc(ST(str)->file);
+ if (c == '\n' || c == '\r' || c == 26) { /* MS-DOS spare ^Z */
+ ST(str)->line++; ST(linepos) = -1;
+ if (c == '\r') {
+ if (ST(str)->string) {
+ if ((c = *ST(str)->body++) != '\n')
+ ST(str)->body--;
}
- return;
+ else if ((c = getc(ST(str)->file)) != '\n')
+ ungetc(c, ST(str)->file);
}
- if (UNLIKELY(c == EOF)) {
- if (ST(str) == &ST(inputs)[0]) {
- ST(linepos) = -1;
- return;
- }
- if (ST(str)->fd != NULL) {
- csound->FileClose(csound, ST(str)->fd); ST(str)->fd = NULL;
- }
- ST(str)--; ST(input_cnt)--;
- ST(str)->line++; ST(linepos) = -1;
+ return;
+ }
+ if (UNLIKELY(c == EOF)) {
+ if (ST(str) == &ST(inputs)[0]) {
+ ST(linepos) = -1;
return;
}
+ if (ST(str)->fd != NULL) {
+ csound->FileClose(csound, ST(str)->fd); ST(str)->fd = NULL;
+ }
+ ST(str)--; ST(input_cnt)--;
+ ST(str)->line++; ST(linepos) = -1;
+ return;
}
- ST(linepos)++;
- goto top;
+ }
+ ST(linepos)++;
+ goto top;
}
static int getorchar(CSOUND *csound)
{
- int c;
+ int c;
top:
- if (UNLIKELY(ST(str)->unget_cnt)) {
- c = (int) ((unsigned char) ST(str)->unget_buf[--ST(str)->unget_cnt]);
- if (c == '\n')
- ST(linepos) = -1;
- return c;
- }
- else if (ST(str)->string) {
- c = *ST(str)->body++;
- if (UNLIKELY(c == '\0')) {
- ST(pop) += ST(str)->args;
- ST(str)--; ST(input_cnt)--;
- goto top;
- }
+ if (UNLIKELY(ST(str)->unget_cnt)) {
+ c = (int) ((unsigned char) ST(str)->unget_buf[--ST(str)->unget_cnt]);
+ if (c == '\n')
+ ST(linepos) = -1;
+ // printf("%s(%d): %c(%.2x)\n", __FILE__, __LINE__, c,c);
+ return c;
+ }
+ else if (ST(str)->string) {
+ c = *ST(str)->body++;
+ if (UNLIKELY(c == '\0')) {
+ if (ST(str) == &ST(inputs)[0]) {
+ //corfile_rm(&(csound->orchstr));
+ // printf("%s(%d): EOF\n", __FILE__, __LINE__);
+ return EOF;
+ }
+ ST(pop) += ST(str)->args;
+ ST(str)--; ST(input_cnt)--;
+ goto top;
}
- else {
- c = getc(ST(str)->file);
- if (UNLIKELY(c == 26)) goto top; /* MS-DOS spare ^Z */
- if (UNLIKELY(c == EOF)) {
- if (ST(str) == &ST(inputs)[0]) return EOF;
- if (ST(str)->fd != NULL) {
- csound->FileClose(csound, ST(str)->fd); ST(str)->fd = NULL;
- }
- ST(str)--; ST(input_cnt)--; goto top;
- }
+ }
+ else {
+ c = getc(ST(str)->file);
+ if (UNLIKELY(c == 26)) goto top; /* MS-DOS spare ^Z */
+ if (UNLIKELY(c == EOF)) {
+ if (ST(str) == &ST(inputs)[0]) return EOF;
+ if (ST(str)->fd != NULL) {
+ csound->FileClose(csound, ST(str)->fd); ST(str)->fd = NULL;
+ }
+ ST(str)--; ST(input_cnt)--; goto top;
}
- if (c == '\r') {
- int d;
- if ((d = getc(ST(str)->file)) != '\n') {
- ungetc(d, ST(str)->file);
- }
- c = '\n';
+ }
+ if (c == '\r') {
+ int d;
+ if (ST(str)->string) {
+ if ((d = *ST(str)->body++) != '\n')
+ ST(str)->body--;
}
- if (c == '\n') {
- ST(str)->line++; ST(linepos) = -1;
+ else if ((d = getc(ST(str)->file)) != '\n') {
+ ungetc(d, ST(str)->file);
}
- else ST(linepos)++;
- if (ST(ingappop) && ST(pop)) {
- do {
- MACRO *nn = ST(macros)->next;
- int i;
+ c = '\n';
+ }
+ if (c == '\n') {
+ ST(str)->line++; ST(linepos) = -1;
+ }
+ else ST(linepos)++;
+ if (ST(ingappop) && ST(pop)) {
+ do {
+ MACRO *nn = ST(macros)->next;
+ int i;
#ifdef MACDEBUG
- csound->Message(csound, "popping %s\n", ST(macros)->name);
+ csound->Message(csound, "popping %s\n", ST(macros)->name);
#endif
- mfree(csound, ST(macros)->name); mfree(csound, ST(macros)->body);
- for (i=0; i<ST(macros)->acnt; i++)
- mfree(csound, ST(macros)->arg[i]);
- mfree(csound, ST(macros));
- ST(macros) = nn;
- ST(pop)--;
- } while (ST(pop));
- }
- return c;
+ mfree(csound, ST(macros)->name); mfree(csound, ST(macros)->body);
+ for (i=0; i<ST(macros)->acnt; i++)
+ mfree(csound, ST(macros)->arg[i]);
+ mfree(csound, ST(macros));
+ ST(macros) = nn;
+ ST(pop)--;
+ } while (ST(pop));
+ }
+ // printf("%s(%d): %c(%.2x)\n", __FILE__, __LINE__, c,c);
+ return c;
}
static int getorchar_noeof(CSOUND *csound)
{
- int c;
+ int c;
- c = getorchar(csound);
- if (UNLIKELY(c == EOF))
- lexerr(csound, Str("Unexpected end of orchestra file"));
- return c;
+ c = getorchar(csound);
+ if (UNLIKELY(c == EOF))
+ lexerr(csound, Str("Unexpected end of orchestra file"));
+ return c;
}
/* The fromScore parameter should be 1 if opening a score include file,
0 if opening an orchestra include file */
void *fopen_path(CSOUND *csound, FILE **fp, char *name, char *basename,
- char *env, int fromScore)
+ char *env, int fromScore)
{
- void *fd;
- int csftype = (fromScore ? CSFTYPE_SCO_INCLUDE : CSFTYPE_ORC_INCLUDE);
-
- /* First try to open name given */
- fd = csound->FileOpen2(csound, fp, CSFILE_STD, name, "rb", NULL,
- csftype, 0);
- if (fd != NULL)
- return fd;
- /* if that fails try in base directory */
- if (basename != NULL) {
- char *dir, *name_full;
- if ((dir = csoundSplitDirectoryFromPath(csound, basename)) != NULL) {
- name_full = csoundConcatenatePaths(csound, dir, name);
- fd = csound->FileOpen2(csound, fp, CSFILE_STD, name_full, "rb", NULL,
- csftype, 0);
- mfree(csound, dir);
- mfree(csound, name_full);
- if (fd != NULL)
- return fd;
- }
- }
- /* or use env argument */
- fd = csound->FileOpen2(csound, fp, CSFILE_STD, name, "rb", env,
- csftype, 0);
+ void *fd;
+ int csftype = (fromScore ? CSFTYPE_SCO_INCLUDE : CSFTYPE_ORC_INCLUDE);
+
+ /* First try to open name given */
+ fd = csound->FileOpen2(csound, fp, CSFILE_STD, name, "rb", NULL,
+ csftype, 0);
+ if (fd != NULL)
return fd;
+ /* if that fails try in base directory */
+ if (basename != NULL) {
+ char *dir, *name_full;
+ if ((dir = csoundSplitDirectoryFromPath(csound, basename)) != NULL) {
+ name_full = csoundConcatenatePaths(csound, dir, name);
+ fd = csound->FileOpen2(csound, fp, CSFILE_STD, name_full, "rb", NULL,
+ csftype, 0);
+ mfree(csound, dir);
+ mfree(csound, name_full);
+ if (fd != NULL)
+ return fd;
+ }
+ }
+ /* or use env argument */
+ fd = csound->FileOpen2(csound, fp, CSFILE_STD, name, "rb", env,
+ csftype, 0);
+ return fd;
}
static void add_math_const_macro(CSOUND *csound, char * name, char *body)
{
- MACRO *mm;
-
- mm = (MACRO*) mcalloc(csound, sizeof(MACRO));
- mm->name = (char*) mcalloc(csound, strlen(name) + 3);
- sprintf(mm->name, "M_%s", name);
- mm->next = ST(macros);
- ST(macros) = mm;
- mm->margs = MARGS; /* Initial size */
- mm->acnt = 0;
- mm->body = (char*) mcalloc(csound, strlen(body) + 1);
- mm->body = strcpy(mm->body, body);
+ MACRO *mm;
+
+ mm = (MACRO*) mcalloc(csound, sizeof(MACRO));
+ mm->name = (char*) mcalloc(csound, strlen(name) + 3);
+ sprintf(mm->name, "M_%s", name);
+ mm->next = ST(macros);
+ ST(macros) = mm;
+ mm->margs = MARGS; /* Initial size */
+ mm->acnt = 0;
+ mm->body = (char*) mcalloc(csound, strlen(body) + 1);
+ mm->body = strcpy(mm->body, body);
}
/**
* Add math constants from math.h as orc macros
*/
static void init_math_constants_macros(CSOUND *csound)
- {
- add_math_const_macro(csound, "E", "2.7182818284590452354");
- add_math_const_macro(csound, "LOG2E", "1.4426950408889634074");
- add_math_const_macro(csound, "LOG10E", "0.43429448190325182765");
- add_math_const_macro(csound, "LN2", "0.69314718055994530942");
- add_math_const_macro(csound, "LN10", "2.30258509299404568402");
- add_math_const_macro(csound, "PI", "3.14159265358979323846");
- add_math_const_macro(csound, "PI_2", "1.57079632679489661923");
- add_math_const_macro(csound, "PI_4", "0.78539816339744830962");
- add_math_const_macro(csound, "1_PI", "0.31830988618379067154");
- add_math_const_macro(csound, "2_PI", "0.63661977236758134308");
- add_math_const_macro(csound, "2_SQRTPI", "1.12837916709551257390");
- add_math_const_macro(csound, "SQRT2", "1.41421356237309504880");
- add_math_const_macro(csound, "SQRT1_2", "0.70710678118654752440");
- add_math_const_macro(csound, "INF", "2147483647.0"); /* ~7 years */
+{
+ add_math_const_macro(csound, "E", "2.7182818284590452354");
+ add_math_const_macro(csound, "LOG2E", "1.4426950408889634074");
+ add_math_const_macro(csound, "LOG10E", "0.43429448190325182765");
+ add_math_const_macro(csound, "LN2", "0.69314718055994530942");
+ add_math_const_macro(csound, "LN10", "2.30258509299404568402");
+ add_math_const_macro(csound, "PI", "3.14159265358979323846");
+ add_math_const_macro(csound, "PI_2", "1.57079632679489661923");
+ add_math_const_macro(csound, "PI_4", "0.78539816339744830962");
+ add_math_const_macro(csound, "1_PI", "0.31830988618379067154");
+ add_math_const_macro(csound, "2_PI", "0.63661977236758134308");
+ add_math_const_macro(csound, "2_SQRTPI", "1.12837916709551257390");
+ add_math_const_macro(csound, "SQRT2", "1.41421356237309504880");
+ add_math_const_macro(csound, "SQRT1_2", "0.70710678118654752440");
+ add_math_const_macro(csound, "INF", "2147483647.0"); /* ~7 years */
}
static void init_omacros(CSOUND *csound, NAMES *nn)
{
- while (nn) {
- char *s = nn->mac;
- char *p = strchr(s, '=');
- char *mname;
- MACRO *mm;
-
- if (p == NULL)
- p = s + strlen(s);
- if (csound->oparms->msglevel & 7)
- csound->Message(csound, Str("Macro definition for %*s\n"), p - s, s);
- s = strchr(s, ':') + 1; /* skip arg bit */
- if (UNLIKELY(s == NULL || s >= p))
- csound->Die(csound, Str("Invalid macro name for --omacro"));
- mname = (char*) mmalloc(csound, (p - s) + 1);
- strncpy(mname, s, p - s);
- mname[p - s] = '\0';
- /* check if macro is already defined */
- for (mm = ST(macros); mm != NULL; mm = mm->next) {
- if (strcmp(mm->name, mname) == 0)
- break;
- }
- if (mm == NULL) {
- mm = (MACRO*) mcalloc(csound, sizeof(MACRO));
- mm->name = mname;
- mm->next = ST(macros);
- ST(macros) = mm;
- }
- else
- mfree(csound, mname);
- mm->margs = MARGS; /* Initial size */
- mm->acnt = 0;
- if (*p != '\0')
- p++;
- mm->body = (char*) mmalloc(csound, strlen(p) + 1);
- strcpy(mm->body, p);
- nn = nn->next;
+ while (nn) {
+ char *s = nn->mac;
+ char *p = strchr(s, '=');
+ char *mname;
+ MACRO *mm;
+
+ if (p == NULL)
+ p = s + strlen(s);
+ if (csound->oparms->msglevel & 7)
+ csound->Message(csound, Str("Macro definition for %*s\n"), p - s, s);
+ s = strchr(s, ':') + 1; /* skip arg bit */
+ if (UNLIKELY(s == NULL || s >= p))
+ csound->Die(csound, Str("Invalid macro name for --omacro"));
+ mname = (char*) mmalloc(csound, (p - s) + 1);
+ strncpy(mname, s, p - s);
+ mname[p - s] = '\0';
+ /* check if macro is already defined */
+ for (mm = ST(macros); mm != NULL; mm = mm->next) {
+ if (strcmp(mm->name, mname) == 0)
+ break;
+ }
+ if (mm == NULL) {
+ mm = (MACRO*) mcalloc(csound, sizeof(MACRO));
+ mm->name = mname;
+ mm->next = ST(macros);
+ ST(macros) = mm;
}
+ else
+ mfree(csound, mname);
+ mm->margs = MARGS; /* Initial size */
+ mm->acnt = 0;
+ if (*p != '\0')
+ p++;
+ mm->body = (char*) mmalloc(csound, strlen(p) + 1);
+ strcpy(mm->body, p);
+ nn = nn->next;
+ }
}
void rdorchfile(CSOUND *csound) /* read entire orch file into txt space */
{
- int c, lincnt;
- int srccnt;
- char *cp, *endspace, *ortext;
- int linmax = LINMAX; /* Maximum number of lines */
- int heredoc = 0, openquote = 0;
-
- if (csound->rdorchGlobals == NULL) {
- csound->rdorchGlobals = csound->Calloc(csound, sizeof(RDORCH_GLOBALS));
- ST(lenmax) = LENMAX;
- ST(grpmax) = GRPMAX;
- ST(ingappop) = 1;
- ST(linepos) = -1;
- ST(tempNum) = 300L;
- ST(nxtest) = 1;
- }
- init_math_constants_macros(csound);
- init_omacros(csound, csound->omacros);
- /* IV - Oct 31 2002: create tables for easier checking for common types */
- if (!ST(typemask_tabl)) {
- const int32 *ptr = typetabl1;
- ST(typemask_tabl) = (int32*) mcalloc(csound, sizeof(int32) * 256);
- ST(typemask_tabl_in) = (int32*) mcalloc(csound, sizeof(int32) * 256);
- ST(typemask_tabl_out) = (int32*) mcalloc(csound, sizeof(int32) * 256);
- while (*ptr) { /* basic types (both for input */
- int32 pos = *ptr++; /* and output) */
- ST(typemask_tabl)[pos] = ST(typemask_tabl_in)[pos] =
- ST(typemask_tabl_out)[pos] = *ptr++;
- }
- ptr = typetabl2;
- while (*ptr) { /* input types */
- int32 pos = *ptr++;
- ST(typemask_tabl_in)[pos] = *ptr++;
- }
- ptr = typetabl3;
- while (*ptr) { /* output types */
- int32 pos = *ptr++;
+ int c, lincnt;
+ int srccnt;
+ char *cp, *endspace, *ortext;
+ int linmax = LINMAX; /* Maximum number of lines */
+ int heredoc = 0, openquote = 0;
+
+ if (csound->rdorchGlobals == NULL) {
+ csound->rdorchGlobals = csound->Calloc(csound, sizeof(RDORCH_GLOBALS));
+ ST(lenmax) = LENMAX;
+ ST(grpmax) = GRPMAX;
+ ST(ingappop) = 1;
+ ST(linepos) = -1;
+ ST(tempNum) = 300L;
+ ST(nxtest) = 1;
+ }
+ init_math_constants_macros(csound);
+ init_omacros(csound, csound->omacros);
+ /* IV - Oct 31 2002: create tables for easier checking for common types */
+ if (!ST(typemask_tabl)) {
+ const int32 *ptr = typetabl1;
+ ST(typemask_tabl) = (int32*) mcalloc(csound, sizeof(int32) * 256);
+ ST(typemask_tabl_in) = (int32*) mcalloc(csound, sizeof(int32) * 256);
+ ST(typemask_tabl_out) = (int32*) mcalloc(csound, sizeof(int32) * 256);
+ while (*ptr) { /* basic types (both for input */
+ int32 pos = *ptr++; /* and output) */
+ ST(typemask_tabl)[pos] = ST(typemask_tabl_in)[pos] =
ST(typemask_tabl_out)[pos] = *ptr++;
- }
}
- csound->Message(csound, Str("orch compiler:\n"));
- if (UNLIKELY((ST(fd) = csound->FileOpen2(csound, &ST(fp), CSFILE_STD,
- csound->orchname, "rb", NULL, CSFTYPE_ORCHESTRA,
- (csound->tempStatus & csOrcMask)!=0)) == NULL))
- csoundDie(csound, Str("cannot open orch file %s"), csound->orchname);
- if (UNLIKELY(fseek(ST(fp), 0L, SEEK_END) != 0))
- csoundDie(csound, Str("cannot find end of file %s"), csound->orchname);
- if (UNLIKELY((ST(orchsiz) = ftell(ST(fp))) <= 0))
- csoundDie(csound, Str("ftell error on %s"), csound->orchname);
- rewind(ST(fp));
- ST(inputs) = (IN_STACK*) mmalloc(csound, 20 * sizeof(IN_STACK));
- ST(input_size) = 20;
- ST(input_cnt) = 0;
- ST(str) = ST(inputs);
- ST(str)->string = 0;
- ST(str)->file = ST(fp);
- ST(str)->fd = ST(fd);
- ST(str)->body = csound->orchname;
- ST(str)->line = 1;
- ST(str)->unget_cnt = 0;
- ortext = mmalloc(csound, ST(orchsiz) + 1); /* alloc mem spaces */
- ST(linadr) = (char **) mmalloc(csound, (LINMAX + 1) * sizeof(char *));
- strsav_create(csound);
- lincnt = srccnt = 1;
- cp = ST(linadr)[1] = ortext;
- endspace = ortext + ST(orchsiz) + 1;
- strsav_string(csound, "sr");
- ST(group) = (char **)mcalloc(csound, (GRPMAX+1)*sizeof(char*));
- ST(grpsav)= (char **)mcalloc(csound, (GRPMAX+1)*sizeof(char*));
- ST(lblreq) = (LBLREQ*)mcalloc(csound, LBLMAX*sizeof(LBLREQ));
- ST(lblmax) = LBLMAX;
+ ptr = typetabl2;
+ while (*ptr) { /* input types */
+ int32 pos = *ptr++;
+ ST(typemask_tabl_in)[pos] = *ptr++;
+ }
+ ptr = typetabl3;
+ while (*ptr) { /* output types */
+ int32 pos = *ptr++;
+ ST(typemask_tabl_out)[pos] = *ptr++;
+ }
+ }
+ csound->Message(csound, Str("orch compiler:\n"));
+ ST(inputs) = (IN_STACK*) mmalloc(csound, 20 * sizeof(IN_STACK));
+ ST(input_size) = 20;
+ ST(input_cnt) = 0;
+ ST(str) = ST(inputs);
+ ST(str)->line = 1;
+ ST(str)->unget_cnt = 0;
+ if (csound->orchstr) {
+ ST(orchsiz) = corfile_length(csound->orchstr);
+ ST(str)->string = 1;
+ ST(str)->body = corfile_body(csound->orchstr);
+ ST(str)->file = NULL;
+ ST(str)->fd = NULL;
+ }
+ else {
+ /* if (UNLIKELY((ST(fd) = csound->FileOpen2(csound, &ST(fp), CSFILE_STD, */
+ /* csound->orchname, "rb", NULL, CSFTYPE_ORCHESTRA, */
+ /* (csound->tempStatus & csOrcMask)!=0)) == NULL)) */
+ csoundDie(csound, Str("cannot open orch file %s"), csound->orchname);
+ /* if (UNLIKELY(fseek(ST(fp), 0L, SEEK_END) != 0)) */
+ /* csoundDie(csound, Str("cannot find end of file %s"), csound->orchname); */
+ /* if (UNLIKELY((ST(orchsiz) = ftell(ST(fp))) <= 0)) */
+ /* csoundDie(csound, Str("ftell error on %s"), csound->orchname); */
+ /* rewind(ST(fp)); */
+ /* ST(str)->string = 0; */
+ /* ST(str)->file = ST(fp); */
+ /* ST(str)->fd = ST(fd); */
+ /* ST(str)->body = csound->orchname; */
+ }
+ ortext = mmalloc(csound, ST(orchsiz) + 1); /* alloc mem spaces */
+ ST(linadr) = (char **) mmalloc(csound, (LINMAX + 1) * sizeof(char *));
+ strsav_create(csound);
+ lincnt = srccnt = 1;
+ cp = ST(linadr)[1] = ortext;
+ endspace = ortext + ST(orchsiz) + 1;
+ strsav_string(csound, "sr");
+ ST(group) = (char **)mcalloc(csound, (GRPMAX+1)*sizeof(char*));
+ ST(grpsav)= (char **)mcalloc(csound, (GRPMAX+1)*sizeof(char*));
+ ST(lblreq) = (LBLREQ*)mcalloc(csound, LBLMAX*sizeof(LBLREQ));
+ ST(lblmax) = LBLMAX;
top:
- while ((c = getorchar(csound)) != EOF) { /* read entire orch file */
- if (cp == endspace-5) { /* Must extend */
- char *orold = ortext;
- int i;
- /* printf("Expand orch: %p (%d) %p -> ", ortext, ST(orchsiz), endspace); */
- ST(orchsiz) = ST(orchsiz) + (ST(orchsiz) >> 4) + 1L;
- ST(orchsiz) = (ST(orchsiz) + 511L) & (~511L);
- ortext = mrealloc(csound, ortext, ST(orchsiz));
- endspace = ortext + ST(orchsiz) + 1;
- /* printf("%p (%d) %p\n", ortext, ST(orchsiz), endspace); */
- if (ortext != orold) {
- ptrdiff_t adj = ortext - orold;
- for (i=1; i<=lincnt; i++)
- ST(linadr)[i] += adj; /* Relocate */
- cp += adj;
- }
+ while ((c = getorchar(csound)) != EOF) { /* read entire orch file */
+ if (cp == endspace-5) { /* Must extend */
+ char *orold = ortext;
+ int i;
+ /* printf("Expand orch: %p (%d) %p -> ", ortext, ST(orchsiz), endspace); */
+ ST(orchsiz) = ST(orchsiz) + (ST(orchsiz) >> 4) + 1L;
+ ST(orchsiz) = (ST(orchsiz) + 511L) & (~511L);
+ ortext = mrealloc(csound, ortext, ST(orchsiz));
+ endspace = ortext + ST(orchsiz) + 1;
+ /* printf("%p (%d) %p\n", ortext, ST(orchsiz), endspace); */
+ if (ortext != orold) {
+ ptrdiff_t adj = ortext - orold;
+ for (i=1; i<=lincnt; i++)
+ ST(linadr)[i] += adj; /* Relocate */
+ cp += adj;
}
- *cp++ = c;
- if (c == '{' && !openquote) {
- char c2 = getorchar(csound);
- if (c2 == '{') {
- heredoc = 1;
- *cp++ = c;
- }
- else
- ungetorchar(csound, c2);
+ }
+ *cp++ = c;
+ if (c == '{' && !openquote) {
+ char c2 = getorchar(csound);
+ if (c2 == '{') {
+ heredoc = 1;
+ *cp++ = c;
}
- else if (c == '}' && heredoc) {
- char c2 = getorchar(csound);
- if (c2 == '}') {
- heredoc = 0;
- *cp++ = c;
- }
- else
- ungetorchar(csound, c2);
+ else
+ ungetorchar(csound, c2);
+ }
+ else if (c == '}' && heredoc) {
+ char c2 = getorchar(csound);
+ if (c2 == '}') {
+ heredoc = 0;
+ *cp++ = c;
}
- if (c == ';' && !heredoc) {
+ else
+ ungetorchar(csound, c2);
+ }
+ if (c == ';' && !heredoc) {
+ skiporchar(csound);
+ *(cp - 1) = (char) (c = '\n');
+ }
+ if (c == '"' && !heredoc) {
+ openquote = !openquote;
+ }
+ if (c == '\\' && !heredoc & !openquote) { /* Continuation ? */
+ while ((c = getorchar(csound)) == ' ' || c == '\t')
+ ; /* Ignore spaces */
+ if (c == ';') { /* Comments get skipped */
skiporchar(csound);
- *(cp - 1) = (char) (c = '\n');
+ c = '\n';
}
- if (c == '"' && !heredoc) {
- openquote = !openquote;
+ if (c == '\n') {
+ cp--; /* Ignore newline */
+ srccnt++; /* record a fakeline */
+ /* lincnt++; Thsi is wrong */
}
- if (c == '\\' && !heredoc & !openquote) { /* Continuation ? */
- while ((c = getorchar(csound)) == ' ' || c == '\t')
- ; /* Ignore spaces */
- if (c == ';') { /* Comments get skipped */
- skiporchar(csound);
- c = '\n';
- }
- if (c == '\n') {
- cp--; /* Ignore newline */
- srccnt++; /* record a fakeline */
- /* lincnt++; Thsi is wrong */
- }
- else {
- *cp++ = c;
- }
+ else {
+ *cp++ = c;
}
- else if (c == '/') {
- c = getorchar(csound);
- if (c=='*') {
- srccnt += skiporccomment(csound);
- cp--; /* ?? ?? ?? */
- goto top;
- }
- else {
- ungetorchar(csound, c);
- c = '/';
- }
+ }
+ else if (c == '/') {
+ c = getorchar(csound);
+ if (c=='*') {
+ srccnt += skiporccomment(csound);
+ cp--; /* ?? ?? ?? */
+ goto top;
}
- else if (c == '\n') { /* at each new line */
- char *lp = ST(linadr)[lincnt];
- /* printf("lincnt=%d; lp=%p, ST(linadr)=%p\n", lincnt, lp, ST(linadr)); */
- while ((c = *lp) == ' ' || c == '\t')
- lp++;
- if (*lp != '\n' && *lp != ';') {
- ST(curline) = lincnt - 1;
- }
- srccnt++;
- if (++lincnt >= linmax) {
- linmax += 100;
- ST(linadr) = (char**) mrealloc(csound, ST(linadr), (linmax + 1)
- * sizeof(char*));
- }
- /* ST(srclin)[lincnt] = srccnt; unused */
- ST(linadr)[lincnt] = cp; /* record the adrs */
- }
- else if (c == '#' && ST(linepos) == 0 && !heredoc) {
- /* Start Macro definition */
- /* also deal with #include here */
- char *mname, *preprocName;
- int mlen = 40;
- int i, cnt;
- mname = (char *)malloc(mlen);
- cp--;
- parsePreproc:
- preprocName = NULL;
- i = 0;
- cnt = 0;
- mname[cnt++] = '#';
+ else {
+ ungetorchar(csound, c);
+ c = '/';
+ }
+ }
+ else if (c == '\n') { /* at each new line */
+ char *lp = ST(linadr)[lincnt];
+ /* printf("lincnt=%d; lp=%p, ST(linadr)=%p\n", lincnt, lp, ST(linadr)); */
+ while ((c = *lp) == ' ' || c == '\t')
+ lp++;
+ if (*lp != '\n' && *lp != ';') {
+ ST(curline) = lincnt - 1;
+ }
+ srccnt++;
+ if (++lincnt >= linmax) {
+ linmax += 100;
+ ST(linadr) = (char**) mrealloc(csound, ST(linadr), (linmax + 1)
+ * sizeof(char*));
+ }
+ /* ST(srclin)[lincnt] = srccnt; unused */
+ ST(linadr)[lincnt] = cp; /* record the adrs */
+ }
+ else if (c == '#' && ST(linepos) == 0 && !heredoc) {
+ /* Start Macro definition */
+ /* also deal with #include here */
+ char *mname, *preprocName;
+ int mlen = 40;
+ int i, cnt;
+ mname = (char *)malloc(mlen);
+ cp--;
+ parsePreproc:
+ preprocName = NULL;
+ i = 0;
+ cnt = 0;
+ mname[cnt++] = '#';
+ if (cnt==mlen)
+ mname = (char *)realloc(mname, mlen+=40);
+ do {
+ c = getorchar(csound);
+ if (UNLIKELY(c == EOF))
+ break;
+ mname[cnt++] = c;
if (cnt==mlen)
mname = (char *)realloc(mname, mlen+=40);
- do {
- c = getorchar(csound);
- if (UNLIKELY(c == EOF))
- break;
- mname[cnt++] = c;
- if (cnt==mlen)
+ } while ((c == ' ' || c == '\t'));
+ mname[cnt] = '\0';
+ if (c == EOF || c == '\n')
+ goto unknownPreproc;
+ preprocName = &(mname[cnt - 1]);
+ while (1) {
+ c = getorchar(csound);
+ if (c == EOF || !(isalnum(c) || c == '_'))
+ break;
+ mname[cnt++] = c;
+ if (cnt==mlen)
+ mname = (char *)realloc(mname, mlen+=40);
+ }
+ mname[cnt] = '\0';
+ if (strcmp(preprocName, "define") == 0 &&
+ !(ST(ifdefStack) != NULL && ST(ifdefStack)->isSkip)) {
+ MACRO *mm = (MACRO*) mmalloc(csound, sizeof(MACRO));
+ int arg = 0;
+ int size = 40;
+ mm->margs = MARGS; /* Initial size */
+ while (isspace((c = getorchar(csound))))
+ ;
+ while (isNameChar(c, i)) {
+ mname[i++] = c;
+ if (i==mlen)
mname = (char *)realloc(mname, mlen+=40);
- } while ((c == ' ' || c == '\t'));
- mname[cnt] = '\0';
- if (c == EOF || c == '\n')
- goto unknownPreproc;
- preprocName = &(mname[cnt - 1]);
- while (1) {
c = getorchar(csound);
- if (c == EOF || !(isalnum(c) || c == '_'))
- break;
- mname[cnt++] = c;
- if (cnt==mlen)
- mname = (char *)realloc(mname, mlen+=40);
}
- mname[cnt] = '\0';
- if (strcmp(preprocName, "define") == 0 &&
- !(ST(ifdefStack) != NULL && ST(ifdefStack)->isSkip)) {
- MACRO *mm = (MACRO*) mmalloc(csound, sizeof(MACRO));
- int arg = 0;
- int size = 40;
- mm->margs = MARGS; /* Initial size */
- while (isspace((c = getorchar(csound))))
- ;
- while (isNameChar(c, i)) {
- mname[i++] = c;
- if (i==mlen)
- mname = (char *)realloc(mname, mlen+=40);
- c = getorchar(csound);
- }
- mname[i] = '\0';
- if (csound->oparms->msglevel & 7)
- csound->Message(csound, Str("Macro definition for %s\n"), mname);
- mm->name = mmalloc(csound, i + 1);
- strcpy(mm->name, mname);
- if (c == '(') { /* arguments */
+ mname[i] = '\0';
+ if (csound->oparms->msglevel & 7)
+ csound->Message(csound, Str("Macro definition for %s\n"), mname);
+ mm->name = mmalloc(csound, i + 1);
+ strcpy(mm->name, mname);
+ if (c == '(') { /* arguments */
#ifdef MACDEBUG
- csound->Message(csound, "M-arguments: ");
+ csound->Message(csound, "M-arguments: ");
#endif
- do {
- while (isspace((c = getorchar_noeof(csound))))
- ;
- i = 0;
- while (isNameChar(c, i)) {
- mname[i++] = c;
- if (i==mlen)
- mname = (char *)realloc(mname, mlen+=40);
- c = getorchar(csound);
- }
- mname[i] = '\0';
+ do {
+ while (isspace((c = getorchar_noeof(csound))))
+ ;
+ i = 0;
+ while (isNameChar(c, i)) {
+ mname[i++] = c;
+ if (i==mlen)
+ mname = (char *)realloc(mname, mlen+=40);
+ c = getorchar(csound);
+ }
+ mname[i] = '\0';
#ifdef MACDEBUG
- csound->Message(csound, "%s\t", mname);
+ csound->Message(csound, "%s\t", mname);
#endif
- mm->arg[arg] = mmalloc(csound, i + 1);
- strcpy(mm->arg[arg++], mname);
- if (arg >= mm->margs) {
- mm = (MACRO*) mrealloc(csound, mm, sizeof(MACRO)
- + mm->margs * sizeof(char*));
- mm->margs += MARGS;
- }
- while (isspace(c))
- c = getorchar_noeof(csound);
- } while (c == '\'' || c == '#');
- if (UNLIKELY(c != ')'))
- csound->Message(csound, Str("macro error\n"));
- }
- mm->acnt = arg;
- i = 0;
- while (c != '#')
- c = getorchar_noeof(csound); /* Skip to next # */
- mm->body = (char*) mmalloc(csound, 100);
- while ((c = getorchar_noeof(csound)) != '#') {
- mm->body[i++] = c;
+ mm->arg[arg] = mmalloc(csound, i + 1);
+ strcpy(mm->arg[arg++], mname);
+ if (arg >= mm->margs) {
+ mm = (MACRO*) mrealloc(csound, mm, sizeof(MACRO)
+ + mm->margs * sizeof(char*));
+ mm->margs += MARGS;
+ }
+ while (isspace(c))
+ c = getorchar_noeof(csound);
+ } while (c == '\'' || c == '#');
+ if (UNLIKELY(c != ')'))
+ csound->Message(csound, Str("macro error\n"));
+ }
+ mm->acnt = arg;
+ i = 0;
+ while (c != '#')
+ c = getorchar_noeof(csound); /* Skip to next # */
+ mm->body = (char*) mmalloc(csound, 100);
+ while ((c = getorchar_noeof(csound)) != '#') {
+ mm->body[i++] = c;
+ if (UNLIKELY(i >= size))
+ mm->body = mrealloc(csound, mm->body, size += 100);
+ if (c == '\\') { /* allow escaped # */
+ mm->body[i++] = c = getorchar_noeof(csound);
if (UNLIKELY(i >= size))
mm->body = mrealloc(csound, mm->body, size += 100);
- if (c == '\\') { /* allow escaped # */
- mm->body[i++] = c = getorchar_noeof(csound);
- if (UNLIKELY(i >= size))
- mm->body = mrealloc(csound, mm->body, size += 100);
- }
- if (c == '\n')
- srccnt++;
}
- mm->body[i] = '\0';
- mm->next = ST(macros);
- ST(macros) = mm;
+ if (c == '\n')
+ srccnt++;
+ }
+ mm->body[i] = '\0';
+ mm->next = ST(macros);
+ ST(macros) = mm;
#ifdef MACDEBUG
- csound->Message(csound, "Macro %s with %d arguments defined\n",
- mm->name, mm->acnt);
+ csound->Message(csound, "Macro %s with %d arguments defined\n",
+ mm->name, mm->acnt);
#endif
- c = ' ';
+ c = ' ';
+ }
+ else if (strcmp(preprocName, "include") == 0 &&
+ !(ST(ifdefStack) != NULL && ST(ifdefStack)->isSkip)) {
+ int delim;
+ while (isspace(c))
+ c = getorchar(csound);
+ delim = c;
+ i = 0;
+ while ((c = getorchar_noeof(csound)) != delim) {
+ mname[i++] = c;
+ if (i==mlen)
+ mname = (char *)realloc(mname, mlen+=40);
}
- else if (strcmp(preprocName, "include") == 0 &&
- !(ST(ifdefStack) != NULL && ST(ifdefStack)->isSkip)) {
- int delim;
- while (isspace(c))
- c = getorchar(csound);
- delim = c;
- i = 0;
- while ((c = getorchar_noeof(csound)) != delim) {
- mname[i++] = c;
- if (i==mlen)
- mname = (char *)realloc(mname, mlen+=40);
- }
- mname[i] = '\0';
- do {
- c = getorchar(csound);
- } while (c != EOF && c != '\n');
+ mname[i] = '\0';
+ do {
+ c = getorchar(csound);
+ } while (c != EOF && c != '\n');
#ifdef MACDEBUG
- csound->Message(csound, "#include \"%s\"\n", mname);
+ csound->Message(csound, "#include \"%s\"\n", mname);
#endif
- ST(input_cnt)++;
- if (ST(input_cnt) >= ST(input_size)) {
- ST(input_size) += 20;
- ST(inputs) = mrealloc(csound, ST(inputs), ST(input_size)
- * sizeof(IN_STACK));
- }
- ST(str) = (IN_STACK*) ST(inputs) + (int) ST(input_cnt);
- ST(str)->string = 0;
- ST(str)->fd = fopen_path(csound, &(ST(str)->file),
- mname, csound->orchname, "INCDIR", 0);
- if (UNLIKELY(ST(str)->fd == NULL)) {
- csound->Message(csound,
- Str("Cannot open #include'd file %s\n"), mname);
- /* Should this stop things?? */
- ST(str)--; ST(input_cnt)--;
- }
- else {
- ST(str)->body = csound->GetFileName(ST(str)->fd);
- ST(str)->line = 1;
- ST(str)->unget_cnt = 0;
- ST(linepos) = -1;
+ ST(input_cnt)++;
+ if (ST(input_cnt) >= ST(input_size)) {
+ ST(input_size) += 20;
+ ST(inputs) = mrealloc(csound, ST(inputs), ST(input_size)
+ * sizeof(IN_STACK));
+ }
+ ST(str) = (IN_STACK*) ST(inputs) + (int) ST(input_cnt);
+ ST(str)->string = 0;
+ ST(str)->fd = fopen_path(csound, &(ST(str)->file),
+ mname, csound->orchname, "INCDIR", 0);
+ if (UNLIKELY(ST(str)->fd == NULL)) {
+ csound->Message(csound,
+ Str("Cannot open #include'd file %s\n"), mname);
+ /* Should this stop things?? */
+ ST(str)--; ST(input_cnt)--;
+ }
+ else {
+ ST(str)->body = csound->GetFileName(ST(str)->fd);
+ ST(str)->line = 1;
+ ST(str)->unget_cnt = 0;
+ ST(linepos) = -1;
+ }
+ }
+ else if (strcmp(preprocName, "ifdef") == 0 ||
+ strcmp(preprocName, "ifndef") == 0) {
+ MACRO *mm; /* #ifdef or #ifndef */
+ IFDEFSTACK *pp;
+ pp = (IFDEFSTACK*) mcalloc(csound, sizeof(IFDEFSTACK));
+ pp->prv = ST(ifdefStack);
+ if (strcmp(preprocName, "ifndef") == 0)
+ pp->isDef = 1;
+ while (isspace(c = getorchar(csound)))
+ ;
+ while (isNameChar(c, i)) {
+ mname[i++] = c;
+ if (i==mlen)
+ mname = (char *)realloc(mname, mlen+=40);
+ c = getorchar(csound);
+ }
+ mname[i] = '\0';
+ for (mm = ST(macros); mm != NULL; mm = mm->next) {
+ if (strcmp(mname, mm->name) == 0) {
+ pp->isDef ^= (unsigned char) 1;
+ break;
}
}
- else if (strcmp(preprocName, "ifdef") == 0 ||
- strcmp(preprocName, "ifndef") == 0) {
- MACRO *mm; /* #ifdef or #ifndef */
- IFDEFSTACK *pp;
- pp = (IFDEFSTACK*) mcalloc(csound, sizeof(IFDEFSTACK));
- pp->prv = ST(ifdefStack);
- if (strcmp(preprocName, "ifndef") == 0)
- pp->isDef = 1;
- while (isspace(c = getorchar(csound)))
- ;
- while (isNameChar(c, i)) {
- mname[i++] = c;
- if (i==mlen)
- mname = (char *)realloc(mname, mlen+=40);
+ ST(ifdefStack) = pp;
+ pp->isSkip = pp->isDef ^ (unsigned char) 1;
+ if (pp->prv != NULL && pp->prv->isSkip)
+ pp->isSkip |= (unsigned char) 2;
+ if (!pp->isSkip) {
+ while (c != '\n' && c != EOF) { /* Skip to end of line */
c = getorchar(csound);
}
- mname[i] = '\0';
- for (mm = ST(macros); mm != NULL; mm = mm->next) {
- if (strcmp(mname, mm->name) == 0) {
- pp->isDef ^= (unsigned char) 1;
- break;
- }
- }
- ST(ifdefStack) = pp;
- pp->isSkip = pp->isDef ^ (unsigned char) 1;
- if (pp->prv != NULL && pp->prv->isSkip)
- pp->isSkip |= (unsigned char) 2;
- if (!pp->isSkip) {
- while (c != '\n' && c != EOF) { /* Skip to end of line */
+ srccnt++; goto top;
+ }
+ else { /* Skip a section of code */
+ ifdefSkipCode:
+ do {
+ while (c != '\n') {
+ if (UNLIKELY(c == EOF))
+ lexerr(csound, Str("unmatched #ifdef"));
c = getorchar(csound);
}
- srccnt++; goto top;
- }
- else { /* Skip a section of code */
- ifdefSkipCode:
- do {
- while (c != '\n') {
- if (UNLIKELY(c == EOF))
- lexerr(csound, Str("unmatched #ifdef"));
- c = getorchar(csound);
- }
- srccnt++;
- c = getorchar(csound);
- } while (c != '#');
- goto parsePreproc;
- }
- }
- else if (strcmp(preprocName, "else") == 0) {
- if (ST(ifdefStack) == NULL || ST(ifdefStack)->isElse)
- lexerr(csound, Str("Unmatched #else"));
- while (c != '\n' && c != EOF)
+ srccnt++;
c = getorchar(csound);
- srccnt++;
- ST(ifdefStack)->isElse = 1;
- ST(ifdefStack)->isSkip ^= (unsigned char) 1;
- if (ST(ifdefStack)->isSkip)
- goto ifdefSkipCode;
- goto top;
+ } while (c != '#');
+ goto parsePreproc;
}
- else if (strcmp(preprocName, "end") == 0 ||
- strcmp(preprocName, "endif") == 0) {
- IFDEFSTACK *pp = ST(ifdefStack);
- if (UNLIKELY(pp == NULL))
- lexerr(csound, Str("Unmatched #endif"));
- while (c != '\n' && c != EOF) {
- c = getorchar(csound);
- }
- srccnt++;
- ST(ifdefStack) = pp->prv;
- mfree(csound, pp);
- if (ST(ifdefStack) != NULL && ST(ifdefStack)->isSkip)
- goto ifdefSkipCode;
- goto top;
+ }
+ else if (strcmp(preprocName, "else") == 0) {
+ if (ST(ifdefStack) == NULL || ST(ifdefStack)->isElse)
+ lexerr(csound, Str("Unmatched #else"));
+ while (c != '\n' && c != EOF)
+ c = getorchar(csound);
+ srccnt++;
+ ST(ifdefStack)->isElse = 1;
+ ST(ifdefStack)->isSkip ^= (unsigned char) 1;
+ if (ST(ifdefStack)->isSkip)
+ goto ifdefSkipCode;
+ goto top;
+ }
+ else if (strcmp(preprocName, "end") == 0 ||
+ strcmp(preprocName, "endif") == 0) {
+ IFDEFSTACK *pp = ST(ifdefStack);
+ if (UNLIKELY(pp == NULL))
+ lexerr(csound, Str("Unmatched #endif"));
+ while (c != '\n' && c != EOF) {
+ c = getorchar(csound);
}
- else if (strcmp(preprocName, "undef") == 0 &&
- !(ST(ifdefStack) != NULL && ST(ifdefStack)->isSkip)) {
- while (isspace(c = getorchar(csound)))
- ;
- while (isNameChar(c, i)) {
- mname[i++] = c;
- if (i==mlen)
- mname = (char *)realloc(mname, mlen+=40);
- c = getorchar(csound);
- }
- mname[i] = '\0';
- if (csound->oparms->msglevel)
- csound->Message(csound,Str("macro %s undefined\n"), mname);
- if (strcmp(mname, ST(macros)->name)==0) {
- MACRO *mm=ST(macros)->next;
- mfree(csound, ST(macros)->name); mfree(csound, ST(macros)->body);
- for (i=0; i<ST(macros)->acnt; i++)
- mfree(csound, ST(macros)->arg[i]);
- mfree(csound, ST(macros)); ST(macros) = mm;
- }
- else {
- MACRO *mm = ST(macros);
- MACRO *nn = mm->next;
- while (strcmp(mname, nn->name) != 0) {
- mm = nn; nn = nn->next;
- if (nn == NULL)
- lexerr(csound, Str("Undefining undefined macro"));
- }
- mfree(csound, nn->name); mfree(csound, nn->body);
- for (i=0; i<nn->acnt; i++)
- mfree(csound, nn->arg[i]);
- mm->next = nn->next; mfree(csound, nn);
- }
- while (c != '\n' && c != EOF)
- c = getorchar(csound); /* ignore rest of line */
- srccnt++;
+ srccnt++;
+ ST(ifdefStack) = pp->prv;
+ mfree(csound, pp);
+ if (ST(ifdefStack) != NULL && ST(ifdefStack)->isSkip)
+ goto ifdefSkipCode;
+ goto top;
+ }
+ else if (strcmp(preprocName, "undef") == 0 &&
+ !(ST(ifdefStack) != NULL && ST(ifdefStack)->isSkip)) {
+ while (isspace(c = getorchar(csound)))
+ ;
+ while (isNameChar(c, i)) {
+ mname[i++] = c;
+ if (i==mlen)
+ mname = (char *)realloc(mname, mlen+=40);
+ c = getorchar(csound);
}
- else {
- unknownPreproc:
- if (ST(ifdefStack) != NULL && ST(ifdefStack)->isSkip)
- goto ifdefSkipCode;
- if (preprocName == NULL)
- lexerr(csound, Str("Unexpected # character"));
- else
- lexerr(csound, Str("Unknown # option: '%s'"), preprocName);
+ mname[i] = '\0';
+ if (csound->oparms->msglevel)
+ csound->Message(csound,Str("macro %s undefined\n"), mname);
+ if (strcmp(mname, ST(macros)->name)==0) {
+ MACRO *mm=ST(macros)->next;
+ mfree(csound, ST(macros)->name); mfree(csound, ST(macros)->body);
+ for (i=0; i<ST(macros)->acnt; i++)
+ mfree(csound, ST(macros)->arg[i]);
+ mfree(csound, ST(macros)); ST(macros) = mm;
}
- free(mname);
- }
- else if (c == '$' && !heredoc) {
- char name[100];
- int i = 0;
- int j;
- MACRO *mm, *mm_save = NULL;
- ST(ingappop) = 0;
- while (isNameChar((c = getorchar(csound)), i)) {
- name[i++] = c; name[i] = '\0';
- mm = ST(macros);
- while (mm != NULL) { /* Find the definition */
- if (!(strcmp(name, mm->name))) {
- mm_save = mm; /* found a match, save it */
- break;
- }
- mm = mm->next;
+ else {
+ MACRO *mm = ST(macros);
+ MACRO *nn = mm->next;
+ while (strcmp(mname, nn->name) != 0) {
+ mm = nn; nn = nn->next;
+ if (nn == NULL)
+ lexerr(csound, Str("Undefining undefined macro"));
}
+ mfree(csound, nn->name); mfree(csound, nn->body);
+ for (i=0; i<nn->acnt; i++)
+ mfree(csound, nn->arg[i]);
+ mm->next = nn->next; mfree(csound, nn);
}
- mm = mm_save;
- if (UNLIKELY(mm == NULL)) {
- if (i)
- lexerr(csound,Str("Undefined macro: '%s'"), name);
- else
- lexerr(csound,Str("Macro expansion symbol ($) without macro name"));
- continue;
- }
- if ((int) strlen(mm->name) != i) {
- int cnt = i - (int) strlen(mm->name);
- csound->Warning(csound, Str("$%s matches macro name $%s"),
- name, mm->name);
- do {
- ungetorchar(csound, c);
- c = name[--i];
- } while (cnt--);
+ while (c != '\n' && c != EOF)
+ c = getorchar(csound); /* ignore rest of line */
+ srccnt++;
+ }
+ else {
+ unknownPreproc:
+ if (ST(ifdefStack) != NULL && ST(ifdefStack)->isSkip)
+ goto ifdefSkipCode;
+ if (preprocName == NULL)
+ lexerr(csound, Str("Unexpected # character"));
+ else
+ lexerr(csound, Str("Unknown # option: '%s'"), preprocName);
+ }
+ free(mname);
+ }
+ else if (c == '$' && !heredoc) {
+ char name[100];
+ int i = 0;
+ int j;
+ MACRO *mm, *mm_save = NULL;
+ ST(ingappop) = 0;
+ while (isNameChar((c = getorchar(csound)), i)) {
+ name[i++] = c; name[i] = '\0';
+ mm = ST(macros);
+ while (mm != NULL) { /* Find the definition */
+ if (!(strcmp(name, mm->name))) {
+ mm_save = mm; /* found a match, save it */
+ break;
+ }
+ mm = mm->next;
}
- else if (c != '.')
+ }
+ mm = mm_save;
+ if (UNLIKELY(mm == NULL)) {
+ if (i)
+ lexerr(csound,Str("Undefined macro: '%s'"), name);
+ else
+ lexerr(csound,Str("Macro expansion symbol ($) without macro name"));
+ continue;
+ }
+ if ((int) strlen(mm->name) != i) {
+ int cnt = i - (int) strlen(mm->name);
+ csound->Warning(csound, Str("$%s matches macro name $%s"),
+ name, mm->name);
+ do {
ungetorchar(csound, c);
+ c = name[--i];
+ } while (cnt--);
+ }
+ else if (c != '.')
+ ungetorchar(csound, c);
#ifdef MACDEBUG
- csound->Message(csound, "Found macro %s required %d arguments\n",
- mm->name, mm->acnt);
+ csound->Message(csound, "Found macro %s required %d arguments\n",
+ mm->name, mm->acnt);
#endif
- /* Should bind arguments here */
- /* How do I recognise entities?? */
- if (mm->acnt) {
- if (UNLIKELY((c = getorchar(csound)) != '('))
- lexerr(csound, Str("Syntax error in macro call"));
- for (j = 0; j < mm->acnt; j++) {
- char term = (j == mm->acnt - 1 ? ')' : '\'');
- char trm1 = (j == mm->acnt - 1 ? ')' : '#'); /* Compatability */
- MACRO *nn = (MACRO*) mmalloc(csound, sizeof(MACRO));
- int size = 100;
- nn->name = mmalloc(csound, strlen(mm->arg[j]) + 1);
- strcpy(nn->name, mm->arg[j]);
+ /* Should bind arguments here */
+ /* How do I recognise entities?? */
+ if (mm->acnt) {
+ if (UNLIKELY((c = getorchar(csound)) != '('))
+ lexerr(csound, Str("Syntax error in macro call"));
+ for (j = 0; j < mm->acnt; j++) {
+ char term = (j == mm->acnt - 1 ? ')' : '\'');
+ char trm1 = (j == mm->acnt - 1 ? ')' : '#'); /* Compatability */
+ MACRO *nn = (MACRO*) mmalloc(csound, sizeof(MACRO));
+ int size = 100;
+ nn->name = mmalloc(csound, strlen(mm->arg[j]) + 1);
+ strcpy(nn->name, mm->arg[j]);
#ifdef MACDEBUG
- csound->Message(csound, "defining argument %s ", nn->name);
+ csound->Message(csound, "defining argument %s ", nn->name);
#endif
- i = 0;
- nn->body = (char*) mmalloc(csound, 100);
- while ((c = getorchar(csound))!= term && c!=trm1) {
- if (UNLIKELY(i > 98)) {
- csound->Die(csound, Str("Missing argument terminator\n%.98s"),
- nn->body);
- }
- nn->body[i++] = c;
- if (UNLIKELY(i >= size))
- nn->body = mrealloc(csound, nn->body, size += 100);
- if (c == '\n') {
- srccnt++;
- }
+ i = 0;
+ nn->body = (char*) mmalloc(csound, 100);
+ while ((c = getorchar(csound))!= term && c!=trm1) {
+ if (UNLIKELY(i > 98)) {
+ csound->Die(csound, Str("Missing argument terminator\n%.98s"),
+ nn->body);
+ }
+ nn->body[i++] = c;
+ if (UNLIKELY(i >= size))
+ nn->body = mrealloc(csound, nn->body, size += 100);
+ if (c == '\n') {
+ srccnt++;
}
- nn->body[i] = '\0';
+ }
+ nn->body[i] = '\0';
#ifdef MACDEBUG
- csound->Message(csound, "as...#%s#\n", nn->body);
+ csound->Message(csound, "as...#%s#\n", nn->body);
#endif
- nn->acnt = 0; /* No arguments for arguments */
- nn->next = ST(macros);
- ST(macros) = nn;
- }
- }
- cp--; /* Ignore $ sign */
- ST(input_cnt)++;
- if (ST(input_cnt) >= ST(input_size)) {
- ST(input_size) += 20;
- ST(inputs) = (IN_STACK*) mrealloc(csound, ST(inputs),
- ST(input_size) * sizeof(IN_STACK));
+ nn->acnt = 0; /* No arguments for arguments */
+ nn->next = ST(macros);
+ ST(macros) = nn;
}
- ST(str) = (IN_STACK*) ST(inputs) + (int) ST(input_cnt);
- ST(str)->string = 1; ST(str)->body = mm->body; ST(str)->args = mm->acnt;
- ST(str)->mac = mm;
- ST(str)->line = 1;
- ST(str)->unget_cnt = 0;
- ST(ingappop) = 1;
- }
- }
- if (UNLIKELY(ST(ifdefStack) != NULL))
- lexerr(csound, Str("Unmatched #ifdef"));
- if (UNLIKELY(cp >= endspace)) { /* Ought to extend */
- csoundDie(csound, Str("file too large for ortext space"));
- }
- if (*(cp-1) != '\n') /* if no final NL, */
- *cp++ = '\n'; /* add one */
- else --lincnt;
- ST(linadr)[lincnt+1] = NULL; /* terminate the adrs list */
+ }
+ cp--; /* Ignore $ sign */
+ ST(input_cnt)++;
+ if (ST(input_cnt) >= ST(input_size)) {
+ ST(input_size) += 20;
+ ST(inputs) = (IN_STACK*) mrealloc(csound, ST(inputs),
+ ST(input_size) * sizeof(IN_STACK));
+ }
+ ST(str) = (IN_STACK*) ST(inputs) + (int) ST(input_cnt);
+ ST(str)->string = 1; ST(str)->body = mm->body; ST(str)->args = mm->acnt;
+ ST(str)->mac = mm;
+ ST(str)->line = 1;
+ ST(str)->unget_cnt = 0;
+ ST(ingappop) = 1;
+ }
+ }
+ if (UNLIKELY(ST(ifdefStack) != NULL))
+ lexerr(csound, Str("Unmatched #ifdef"));
+ if (UNLIKELY(cp >= endspace)) { /* Ought to extend */
+ csoundDie(csound, Str("file too large for ortext space"));
+ }
+ if (*(cp-1) != '\n') /* if no final NL, */
+ *cp++ = '\n'; /* add one */
+ else --lincnt;
+ ST(linadr)[lincnt+1] = NULL; /* terminate the adrs list */
#ifdef BETA
- csound->Message(csound,Str("%d (%d) lines read\n"),lincnt, srccnt);
+ csound->Message(csound,Str("%d (%d) lines read\n"),lincnt, srccnt);
#endif
- if (ST(fd) != NULL) {
- csound->FileClose(csound, ST(fd)); /* close the file */
- ST(fd) = NULL;
- }
- ST(curline) = 0; /* & reset to line 1 */
- ST(ortext) = ortext;
- while (ST(macros)) { /* Clear all macros */
- int i;
- mfree(csound, ST(macros)->body);
- mfree(csound, ST(macros)->name);
- for (i = 0; i < ST(macros)->acnt; i++)
- mfree(csound, ST(macros)->arg[i]);
- ST(macros) = ST(macros)->next;
- } /* nullist is a count only */
- ST(nullist) = (ARGLST *) mmalloc(csound, sizeof(ARGLST));
- ST(nullist)->count = 0;
- ST(nxtarglist) = (ARGLST*) mmalloc(csound, sizeof(ARGLST)
- + 200 * sizeof(char*));
+ if (ST(fd) != NULL) {
+ csound->FileClose(csound, ST(fd)); /* close the file */
+ ST(fd) = NULL;
+ }
+ ST(curline) = 0; /* & reset to line 1 */
+ ST(ortext) = ortext;
+ while (ST(macros)) { /* Clear all macros */
+ int i;
+ mfree(csound, ST(macros)->body);
+ mfree(csound, ST(macros)->name);
+ for (i = 0; i < ST(macros)->acnt; i++)
+ mfree(csound, ST(macros)->arg[i]);
+ ST(macros) = ST(macros)->next;
+ } /* nullist is a count only */
+ ST(nullist) = (ARGLST *) mmalloc(csound, sizeof(ARGLST));
+ ST(nullist)->count = 0;
+ ST(nxtarglist) = (ARGLST*) mmalloc(csound, sizeof(ARGLST)
+ + 200 * sizeof(char*));
}
static void extend_collectbuf(CSOUND *csound, char **cp, int grpcnt)
{
- char *nn;
- int i;
-
- i = (int) ST(lenmax);
- ST(lenmax) <<= 1;
- nn = mrealloc(csound, ST(collectbuf), ST(lenmax) + 16);
- (*cp) += (nn - ST(collectbuf)); /* Adjust pointer */
- for ( ; i < (int) ST(lenmax); i++)
- nn[i] = (char) 0;
- /* Need to correct grp vector */
- for (i = 0; i < grpcnt; i++)
- ST(group)[i] += (nn - ST(collectbuf));
- ST(collectbuf) = nn;
+ char *nn;
+ int i;
+
+ i = (int) ST(lenmax);
+ ST(lenmax) <<= 1;
+ nn = mrealloc(csound, ST(collectbuf), ST(lenmax) + 16);
+ (*cp) += (nn - ST(collectbuf)); /* Adjust pointer */
+ for ( ; i < (int) ST(lenmax); i++)
+ nn[i] = (char) 0;
+ /* Need to correct grp vector */
+ for (i = 0; i < grpcnt; i++)
+ ST(group)[i] += (nn - ST(collectbuf));
+ ST(collectbuf) = nn;
}
static void extend_group(CSOUND *csound)
{
- int32 i, j;
-
- i = ST(grpmax);
- j = i + (int32) GRPMAX;
- ST(grpmax) = (j++);
- ST(group) = (char **) mrealloc(csound, ST(group), j * sizeof(char *));
- ST(grpsav) = (char **) mrealloc(csound, ST(grpsav), j * sizeof(char *));
- while (++i < j) {
- ST(group)[i] = (char *) NULL;
- ST(grpsav)[i] = (char *) NULL;
- }
+ int32 i, j;
+
+ i = ST(grpmax);
+ j = i + (int32) GRPMAX;
+ ST(grpmax) = (j++);
+ ST(group) = (char **) mrealloc(csound, ST(group), j * sizeof(char *));
+ ST(grpsav) = (char **) mrealloc(csound, ST(grpsav), j * sizeof(char *));
+ while (++i < j) {
+ ST(group)[i] = (char *) NULL;
+ ST(grpsav)[i] = (char *) NULL;
+ }
}
/* split next orch line into atomic groups, count */
@@ -1040,1229 +1067,1234 @@ static void extend_group(CSOUND *csound)
static int splitline(CSOUND *csound)
{
- int grpcnt, prvif, prvelsif, logical, condassgn, parens;
- int c, collecting;
- char *cp, *lp, *grpp = NULL;
+ int grpcnt, prvif, prvelsif, logical, condassgn, parens;
+ int c, collecting;
+ char *cp, *lp, *grpp = NULL;
- if (ST(collectbuf) == NULL)
- ST(collectbuf) = mcalloc(csound, ST(lenmax) + 16);
+ if (ST(collectbuf) == NULL)
+ ST(collectbuf) = mcalloc(csound, ST(lenmax) + 16);
nxtlin:
- if ((lp = ST(linadr)[++ST(curline)]) == NULL) /* point at next line */
- return 0;
- csound->DebugMsg(csound, Str("LINE %d:"), CURLINE);
- ST(linlabels) = ST(opgrpno) = 0;
- grpcnt = prvif = prvelsif = logical = condassgn = parens = collecting = 0;
- cp = ST(collectbuf);
- while ((c = *lp++) != '\n') { /* for all chars this line: */
- if (cp - ST(collectbuf) >= ST(lenmax))
- extend_collectbuf(csound, &cp, grpcnt);
- if (c == ' ' || c == '\t' || c == '(') { /* spaces, tabs, (: */
- if (!ST(opgrpno) && collecting) { /* those before args */
- *cp++ = '\0'; /* can be delimiters */
- collecting = 0;
- if (strcmp(grpp, "if") == 0) { /* of if opcod, */
- strcpy(grpp, "cggoto"); /* (replace) */
+ if ((lp = ST(linadr)[++ST(curline)]) == NULL) /* point at next line */
+ return 0;
+ csound->DebugMsg(csound, Str("LINE %d:"), CURLINE);
+ ST(linlabels) = ST(opgrpno) = 0;
+ grpcnt = prvif = prvelsif = logical = condassgn = parens = collecting = 0;
+ cp = ST(collectbuf);
+ while ((c = *lp++) != '\n') { /* for all chars this line: */
+ if (cp - ST(collectbuf) >= ST(lenmax))
+ extend_collectbuf(csound, &cp, grpcnt);
+ if (c == ' ' || c == '\t' || c == '(') { /* spaces, tabs, (: */
+ if (!ST(opgrpno) && collecting) { /* those before args */
+ *cp++ = '\0'; /* can be delimiters */
+ collecting = 0;
+ if (strcmp(grpp, "if") == 0) { /* of if opcod, */
+ strcpy(grpp, "cggoto"); /* (replace) */
+ cp = grpp + 7;
+ prvif++;
+ }
+ else if (strcmp(grpp, "elseif") == 0) { /* of elseif opcod, ... */
+ /* check to see we had an 'if' before */
+ if (!ST(iflabels)) {
+ synterr(csound, Str("invalid 'elseif' statement. "
+ "must have a corresponding 'if'"));
+ goto nxtlin;
+ }
+ /* check to see we did not have an 'else' before */
+ if (UNLIKELY(!ST(iflabels)->els[0])) {
+ synterr(csound,
+ Str("'elseif' statement cannot occur after an 'else'"));
+ goto nxtlin;
+ }
+ /* 'elseif' requires 2 additional lines */
+ if (ST(repeatingElseifLine)) {
+ /* add the 'elselabel' */
+ ST(linlabels)++;
+ strcpy(grpp, ST(iflabels)->els);
+ cp = grpp + strlen(ST(iflabels)->els) + 1;
+ /* finally replace the 'elseif' with a 'goto' */
+ grpp = ST(group)[grpcnt++] = cp;
+ strcpy(grpp, "cggoto");
cp = grpp + 7;
prvif++;
+ prvelsif++;
+ ST(repeatingElseifLine) = 0;
}
- else if (strcmp(grpp, "elseif") == 0) { /* of elseif opcod, ... */
- /* check to see we had an 'if' before */
- if (!ST(iflabels)) {
- synterr(csound, Str("invalid 'elseif' statement. "
- "must have a corresponding 'if'"));
- goto nxtlin;
- }
- /* check to see we did not have an 'else' before */
- if (UNLIKELY(!ST(iflabels)->els[0])) {
- synterr(csound,
- Str("'elseif' statement cannot occur after an 'else'"));
- goto nxtlin;
- }
- /* 'elseif' requires 2 additional lines */
- if (ST(repeatingElseifLine)) {
- /* add the 'elselabel' */
- ST(linlabels)++;
- strcpy(grpp, ST(iflabels)->els);
- cp = grpp + strlen(ST(iflabels)->els) + 1;
- /* finally replace the 'elseif' with a 'goto' */
- grpp = ST(group)[grpcnt++] = cp;
- strcpy(grpp, "cggoto");
- cp = grpp + 7;
- prvif++;
- prvelsif++;
- ST(repeatingElseifLine) = 0;
- }
- else {
- /* first add a 'goto endif' for the previous if */
- if (ST(iflabels)->ithen > 0)
- strcpy(grpp, "goto");
- else
- strcpy(grpp, "kgoto");
- if (isopcod(csound, grpp))
- ST(opgrpno) = grpcnt;
- ST(group)[grpcnt] = strchr(grpp, '\0') + 1;
- grpp = ST(group)[grpcnt++];
- strcpy(grpp, ST(iflabels)->end);
- ST(curline)--; /* roll back one and parse this line again */
- ST(repeatingElseifLine)++;
- ST(linopnum) = ST(opnum); /* else save full line ops */
- ST(linopcod) = ST(opcod);
- return grpcnt;
- }
+ else {
+ /* first add a 'goto endif' for the previous if */
+ if (ST(iflabels)->ithen > 0)
+ strcpy(grpp, "goto");
+ else
+ strcpy(grpp, "kgoto");
+ if (isopcod(csound, grpp))
+ ST(opgrpno) = grpcnt;
+ ST(group)[grpcnt] = strchr(grpp, '\0') + 1;
+ grpp = ST(group)[grpcnt++];
+ strcpy(grpp, ST(iflabels)->end);
+ ST(curline)--; /* roll back one and parse this line again */
+ ST(repeatingElseifLine)++;
+ ST(linopnum) = ST(opnum); /* else save full line ops */
+ ST(linopcod) = ST(opcod);
+ return grpcnt;
}
- if (isopcod(csound, grpp)) /* ... or maybe others */
- ST(opgrpno) = grpcnt;
}
- if (c == ' ' || c == '\t')
- continue; /* now discard blanks */
- }
- else if (c == ';') {
- while ((c = *lp++) != '\n'); /* comments: gobble */
- break; /* & exit linloop */
- }
- else if (c == '/' && *lp == '*') { /* C Style comments */
- char *ll, *eol;
- ll = strstr(lp++, "*/");
- nxtl:
- eol = strchr(lp, '\n');
- if (eol != NULL && eol < ll) {
- lp = ST(linadr)[++ST(curline)];
- ll = strstr(lp, "*/");
- goto nxtl;
- }
- if (UNLIKELY(ll == NULL)) {
- synterrp(csound, lp - 2, Str("Unmatched comment"));
- lp = eol + 1; break;
- }
- lp = ll + 2;
- continue;
- }
- else if (c == '"') { /* quoted string: */
- if (grpcnt >= ST(grpmax))
- extend_group(csound);
- grpp = ST(group)[grpcnt++] = cp;
- *cp++ = c; /* cpy to nxt quote */
- do {
- loop:
- c = *lp++;
- if (c=='\\' && *lp=='"') { /* Deal with \" case */
- *cp++ = '\\';
- *cp++ = '"';
- lp++;
- goto loop;
- }
- *cp++ = c;
- } while (c != '"' && c != '\n');
- if (c == '\n')
- synterrp(csound, lp - 1, Str("unmatched quotes"));
- collecting = 1; /* & resume chking */
- continue;
+ if (isopcod(csound, grpp)) /* ... or maybe others */
+ ST(opgrpno) = grpcnt;
}
- else if (c == '{' && *lp == '{') { /* multiline quoted string: */
- if (grpcnt >= ST(grpmax))
- extend_group(csound);
- grpp = ST(group)[grpcnt++] = cp;
- c = '"'; /* cpy to nxt quote */
- do {
- *cp++ = c;
- if (cp - ST(collectbuf) >= ST(lenmax))
- extend_collectbuf(csound, &cp, grpcnt);
- c = *(++lp);
- if (c == '\n')
- ++ST(curline);
- } while (!(c == '}' && lp[1] == '}'));
- lp += 2;
- *cp++ = '"';
- collecting = 1; /* & resume chking */
- continue;
- }
- else if (c == ':' && collecting && grpcnt == ST(linlabels)+1) {
- ST(linlabels)++; /* colon in 1st grps */
- *cp++ = '\0'; /* is also delimitr */
- collecting = 0; /* (do not copy it) */
- continue;
- }
- else if (c == '=' && !ST(opgrpno)) { /* assign befor args */
- if (collecting) /* can be a delimitr */
- *cp++ = '\0';
- grpp = ST(group)[grpcnt++] = cp; /* is itslf an opcod */
+ if (c == ' ' || c == '\t')
+ continue; /* now discard blanks */
+ }
+ else if (c == ';') {
+ while ((c = *lp++) != '\n'); /* comments: gobble */
+ break; /* & exit linloop */
+ }
+ else if (c == '/' && *lp == '*') { /* C Style comments */
+ char *ll, *eol;
+ ll = strstr(lp++, "*/");
+ nxtl:
+ eol = strchr(lp, '\n');
+ if (eol != NULL && eol < ll) {
+ lp = ST(linadr)[++ST(curline)];
+ ll = strstr(lp, "*/");
+ goto nxtl;
+ }
+ if (UNLIKELY(ll == NULL)) {
+ synterrp(csound, lp - 2, Str("Unmatched comment"));
+ lp = eol + 1; break;
+ }
+ lp = ll + 2;
+ continue;
+ }
+ else if (c == '"') { /* quoted string: */
+ if (grpcnt >= ST(grpmax))
+ extend_group(csound);
+ grpp = ST(group)[grpcnt++] = cp;
+ *cp++ = c; /* cpy to nxt quote */
+ do {
+ loop:
+ c = *lp++;
+ if (c=='\\' && *lp=='"') { /* Deal with \" case */
+ *cp++ = '\\';
+ *cp++ = '"';
+ lp++;
+ goto loop;
+ }
*cp++ = c;
+ } while (c != '"' && c != '\n');
+ if (c == '\n')
+ synterrp(csound, lp - 1, Str("unmatched quotes"));
+ collecting = 1; /* & resume chking */
+ continue;
+ }
+ else if (c == '{' && *lp == '{') { /* multiline quoted string: */
+ if (grpcnt >= ST(grpmax))
+ extend_group(csound);
+ grpp = ST(group)[grpcnt++] = cp;
+ c = '"'; /* cpy to nxt quote */
+ do {
+ *cp++ = c;
+ if (cp - ST(collectbuf) >= ST(lenmax))
+ extend_collectbuf(csound, &cp, grpcnt);
+ c = *(++lp);
+ if (c == '\n')
+ ++ST(curline);
+ } while (!(c == '}' && lp[1] == '}'));
+ lp += 2;
+ *cp++ = '"';
+ collecting = 1; /* & resume chking */
+ continue;
+ }
+ else if (c == ':' && collecting && grpcnt == ST(linlabels)+1) {
+ ST(linlabels)++; /* colon in 1st grps */
+ *cp++ = '\0'; /* is also delimitr */
+ collecting = 0; /* (do not copy it) */
+ continue;
+ }
+ else if (c == '=' && !ST(opgrpno)) { /* assign befor args */
+ if (collecting) /* can be a delimitr */
*cp++ = '\0';
- isopcod(csound, grpp);
- ST(opgrpno) = grpcnt;
- collecting = 0; /* & self-delimiting */
+ grpp = ST(group)[grpcnt++] = cp; /* is itslf an opcod */
+ *cp++ = c;
+ *cp++ = '\0';
+ isopcod(csound, grpp);
+ ST(opgrpno) = grpcnt;
+ collecting = 0; /* & self-delimiting */
+ continue;
+ }
+ else if (c == ',') { /* comma: */
+ if (UNLIKELY(!collecting))
+ synterrp(csound, lp - 1, Str("misplaced comma"));
+ if (UNLIKELY(parens)) {
+ synterrp(csound, lp - 2, Str("unbalanced parens"));
+ parens = 0;
+ }
+ *cp++ = '\0'; /* terminate string */
+ collecting = logical = condassgn = 0;
+ continue;
+ }
+ if (prvif && collecting && !parens) { /* for prev "if": */
+ if (strncmp(lp-1,"goto",4) == 0) { /* if found "goto" */
+ *cp++ = '\0'; /* delimit cond */
+ lp += 3; /* & step over */
+ prvif = collecting = 0;
continue;
}
- else if (c == ',') { /* comma: */
- if (UNLIKELY(!collecting))
- synterrp(csound, lp - 1, Str("misplaced comma"));
- if (UNLIKELY(parens)) {
- synterrp(csound, lp - 2, Str("unbalanced parens"));
- parens = 0;
- }
- *cp++ = '\0'; /* terminate string */
- collecting = logical = condassgn = 0;
+ else if ((c == 'i' || c == 'k') && /* if preced i or k */
+ strncmp(lp, "goto", 4) == 0) { /* before "goto" */
+ *(ST(group)[ST(opgrpno) - 1] + 1) = c; /* modify cggoto */
+ isopcod(csound, ST(group)[ST(opgrpno) - 1]);
+ *cp++ = '\0'; /* then delimit */
+ lp += 4; /* etc */
+ prvif = collecting = 0;
continue;
}
- if (prvif && collecting && !parens) { /* for prev "if": */
- if (strncmp(lp-1,"goto",4) == 0) { /* if found "goto" */
- *cp++ = '\0'; /* delimit cond */
- lp += 3; /* & step over */
- prvif = collecting = 0;
- continue;
- }
- else if ((c == 'i' || c == 'k') && /* if preced i or k */
- strncmp(lp, "goto", 4) == 0) { /* before "goto" */
- *(ST(group)[ST(opgrpno) - 1] + 1) = c; /* modify cggoto */
- isopcod(csound, ST(group)[ST(opgrpno) - 1]);
- *cp++ = '\0'; /* then delimit */
- lp += 4; /* etc */
- prvif = collecting = 0;
- continue;
- }
- else if (strncmp(lp - 1, "then", 4) == 0) {
- struct iflabel *prv = ST(iflabels);
- /* modify cggoto */
- *(ST(group)[ST(opgrpno) - 1] + 1) = 'n';
- isopcod(csound, ST(group)[ST(opgrpno) - 1]);
- *cp++ = '\0';
- lp += 3;
- prvif = collecting = 0;
- grpp = ST(group)[grpcnt++] = cp;
- /* synthesize labels to represent an else and endif */
- if (prvelsif) { /* elseif, so we just need a new elselabel */
- sprintf(ST(iflabels)->els, "__else_%d", ST(tempNum)++);
- prvelsif = 0;
- }
- else {
- /* this is a new if, so put a whole new label struct on the stack */
- ST(iflabels) = (struct iflabel *) mmalloc(csound,
- sizeof(struct iflabel));
- ST(iflabels)->prv = prv;
- sprintf(ST(iflabels)->end, "__endif_%d",ST(tempNum)++);
- sprintf(ST(iflabels)->els, "__else_%d", ST(tempNum)++);
- }
- /* we set the 'goto' label to the 'else' label */
- strcpy(grpp, ST(iflabels)->els);
- cp = strchr(grpp, '\0');
- /* set ithen flag to unknown (getoptxt() will update it later) */
- ST(iflabels)->ithen = -1;
- continue;
+ else if (strncmp(lp - 1, "then", 4) == 0) {
+ struct iflabel *prv = ST(iflabels);
+ /* modify cggoto */
+ *(ST(group)[ST(opgrpno) - 1] + 1) = 'n';
+ isopcod(csound, ST(group)[ST(opgrpno) - 1]);
+ *cp++ = '\0';
+ lp += 3;
+ prvif = collecting = 0;
+ grpp = ST(group)[grpcnt++] = cp;
+ /* synthesize labels to represent an else and endif */
+ if (prvelsif) { /* elseif, so we just need a new elselabel */
+ sprintf(ST(iflabels)->els, "__else_%d", ST(tempNum)++);
+ prvelsif = 0;
}
- else if (strncmp(lp - 1, "ithen", 5) == 0) {
- struct iflabel *prv = ST(iflabels);
- /* modify cggoto */
- *(ST(group)[ST(opgrpno) - 1] + 1) = 'o';
- isopcod(csound, ST(group)[ST(opgrpno) - 1]);
- *cp++ = '\0';
- lp += 4;
- prvif = collecting = 0;
- grpp = ST(group)[grpcnt++] = cp;
- /* synthesize labels to represent an else and endif */
- if (prvelsif) { /* elseif, so we just need a new elselabel */
- sprintf(ST(iflabels)->els, "__else_%d",ST(tempNum)++);
- prvelsif = 0;
- }
- else {
- /* this is a new if, so put a whole new label struct on the stack */
- ST(iflabels) = (struct iflabel *)mmalloc(csound,
- sizeof(struct iflabel));
- ST(iflabels)->prv = prv;
- sprintf(ST(iflabels)->end, "__endif_%d",ST(tempNum)++);
- sprintf(ST(iflabels)->els, "__else_%d", ST(tempNum)++);
- }
- /* we set the 'goto' label to the 'else' label */
- strcpy(grpp, ST(iflabels)->els);
- cp = strchr(grpp, '\0');
- /* set ithen flag */
- ST(iflabels)->ithen = 1;
- continue;
+ else {
+ /* this is a new if, so put a whole new label struct on the stack */
+ ST(iflabels) = (struct iflabel *) mmalloc(csound,
+ sizeof(struct iflabel));
+ ST(iflabels)->prv = prv;
+ sprintf(ST(iflabels)->end, "__endif_%d",ST(tempNum)++);
+ sprintf(ST(iflabels)->els, "__else_%d", ST(tempNum)++);
}
+ /* we set the 'goto' label to the 'else' label */
+ strcpy(grpp, ST(iflabels)->els);
+ cp = strchr(grpp, '\0');
+ /* set ithen flag to unknown (getoptxt() will update it later) */
+ ST(iflabels)->ithen = -1;
+ continue;
}
- if (!collecting++) { /* remainder are */
- if (grpcnt >= ST(grpmax)) /* collectable chars */
- extend_group(csound);
+ else if (strncmp(lp - 1, "ithen", 5) == 0) {
+ struct iflabel *prv = ST(iflabels);
+ /* modify cggoto */
+ *(ST(group)[ST(opgrpno) - 1] + 1) = 'o';
+ isopcod(csound, ST(group)[ST(opgrpno) - 1]);
+ *cp++ = '\0';
+ lp += 4;
+ prvif = collecting = 0;
grpp = ST(group)[grpcnt++] = cp;
- }
- *cp++ = c; /* collect the char */
- /* establish validity: allow letters, digits, and underscore */
- /* in label, variable, and opcode names */
- if (isalnum(c) || c == '_')
- continue;
- /* other characters are valid only after an opcode */
- if (UNLIKELY(!ST(opgrpno)))
- goto char_err;
- switch (c) {
- case '<':
- case '>':
- if (*lp == c) {
- lp++; *cp++ = c; /* <<, >> */
+ /* synthesize labels to represent an else and endif */
+ if (prvelsif) { /* elseif, so we just need a new elselabel */
+ sprintf(ST(iflabels)->els, "__else_%d",ST(tempNum)++);
+ prvelsif = 0;
}
- else if (prvif || parens) /* <, <=, >=, > */
- logical++;
- else
- goto char_err;
- break;
- case '&':
- case '|':
- if (*lp == c) { /* &&, ||, &, | */
- if (UNLIKELY(!prvif && !parens))
- goto char_err;
- logical++; lp++; *cp++ = c;
+ else {
+ /* this is a new if, so put a whole new label struct on the stack */
+ ST(iflabels) = (struct iflabel *)mmalloc(csound,
+ sizeof(struct iflabel));
+ ST(iflabels)->prv = prv;
+ sprintf(ST(iflabels)->end, "__endif_%d",ST(tempNum)++);
+ sprintf(ST(iflabels)->els, "__else_%d", ST(tempNum)++);
}
- break;
- case '!':
- case '=':
- if (UNLIKELY(!prvif && !parens)) /* ==, !=, <=, >= */
- goto char_err;
+ /* we set the 'goto' label to the 'else' label */
+ strcpy(grpp, ST(iflabels)->els);
+ cp = strchr(grpp, '\0');
+ /* set ithen flag */
+ ST(iflabels)->ithen = 1;
+ continue;
+ }
+ }
+ if (!collecting++) { /* remainder are */
+ if (grpcnt >= ST(grpmax)) /* collectable chars */
+ extend_group(csound);
+ grpp = ST(group)[grpcnt++] = cp;
+ }
+ *cp++ = c; /* collect the char */
+ /* establish validity: allow letters, digits, and underscore */
+ /* in label, variable, and opcode names */
+ if (isalnum(c) || c == '_')
+ continue;
+ /* other characters are valid only after an opcode */
+ if (UNLIKELY(!ST(opgrpno)))
+ goto char_err;
+ switch (c) {
+ case '<':
+ case '>':
+ if (*lp == c) {
+ lp++; *cp++ = c; /* <<, >> */
+ }
+ else if (prvif || parens) /* <, <=, >=, > */
logical++;
- break;
- case '+': /* arithmetic and bitwise ops */
- case '-':
- case '*':
- case '/':
- case '%':
- case '^':
- case '#': /* XOR */
- case '\254': /* NOT (same as ~) */
- case '~':
- case '.':
- break;
- case '\302':
- if (*lp == '\254') /* NOT operator in UTF-8 format */
- *(cp - 1) = *lp++;
- else
- goto char_err;
- break;
- case '(':
- parens++; /* and monitor function */
- break;
- case ')':
- if (UNLIKELY(!parens)) {
- synterrp(csound, lp - 1, Str("unbalanced parens"));
- cp--;
- }
- else
- --parens;
- break;
- case '?':
- if (UNLIKELY(!logical))
- goto char_err;
- condassgn++;
- break;
- case ':':
- if (UNLIKELY(!condassgn))
- goto char_err;
- break;
- default:
+ else
goto char_err;
+ break;
+ case '&':
+ case '|':
+ if (*lp == c) { /* &&, ||, &, | */
+ if (UNLIKELY(!prvif && !parens))
+ goto char_err;
+ logical++; lp++; *cp++ = c;
}
- continue; /* loop back for next character */
- char_err:
- {
- char err_msg[64];
- sprintf(err_msg, Str("illegal character %c"), c);
- synterrp(csound, lp - 1, err_msg);
+ break;
+ case '!':
+ case '=':
+ if (UNLIKELY(!prvif && !parens)) /* ==, !=, <=, >= */
+ goto char_err;
+ logical++;
+ break;
+ case '+': /* arithmetic and bitwise ops */
+ case '-':
+ case '*':
+ case '/':
+ case '%':
+ case '^':
+ case '#': /* XOR */
+ case '\254': /* NOT (same as ~) */
+ case '~':
+ case '.':
+ break;
+ case '\302':
+ if (*lp == '\254') /* NOT operator in UTF-8 format */
+ *(cp - 1) = *lp++;
+ else
+ goto char_err;
+ break;
+ case '(':
+ parens++; /* and monitor function */
+ break;
+ case ')':
+ if (UNLIKELY(!parens)) {
+ synterrp(csound, lp - 1, Str("unbalanced parens"));
cp--;
}
+ else
+ --parens;
+ break;
+ case '?':
+ if (UNLIKELY(!logical))
+ goto char_err;
+ condassgn++;
+ break;
+ case ':':
+ if (UNLIKELY(!condassgn))
+ goto char_err;
+ break;
+ default:
+ goto char_err;
}
- *cp = '\0'; /* terminate last group */
- if (grpp && grpcnt == (ST(linlabels) + 1)) {
- /* convert an 'else' statement into 2 lines
- goto <endiflabel>
- <elselabel>
- to do this, we parse the current twice */
- if (strcmp(grpp, "else") == 0) {
- if (UNLIKELY(!ST(iflabels))) { /* 'else': check to see we had an 'if' before */
- synterr(csound, Str("invalid 'else' statement. "
- "must have a corresponding 'if'"));
- goto nxtlin;
- }
- if (ST(repeatingElseLine)) { /* add the elselabel */
- if (UNLIKELY(!ST(iflabels)->els[0])) {
- /* check to see we had not another 'else' */
- synterr(csound, Str("duplicate 'else' statement"));
- goto nxtlin;
- }
- ST(linlabels)++;
- strcpy(grpp, ST(iflabels)->els);
- ST(iflabels)->els[0] = '\0';
- ST(repeatingElseLine) = 0;
- }
- else { /* add the goto statement */
- if (ST(iflabels)->ithen > 0)
- strcpy(grpp, "goto");
- else
- strcpy(grpp, "kgoto");
- ST(linlabels) = 0; /* ignore any labels this time */
- ST(group)[0] = grpp;
- grpcnt = 1;
- if (isopcod(csound, grpp))
- ST(opgrpno) = grpcnt;
- ST(group)[grpcnt] = strchr(grpp, '\0') + 1;
- grpp = ST(group)[grpcnt++];
- strcpy(grpp, ST(iflabels)->end);
- ST(curline)--; /* roll back one and parse this line again */
- ST(repeatingElseLine) = 1;
- }
- }
- else if (strcmp(grpp, "endif") == 0) {
- /* replace 'endif' with the synthesized label */
- struct iflabel *prv;
- if (UNLIKELY(!ST(iflabels))) { /* check to see we had an 'if' before */
- synterr(csound, Str("invalid 'endif' statement. "
- "must have a corresponding 'if'"));
+ continue; /* loop back for next character */
+ char_err:
+ {
+ char err_msg[64];
+ sprintf(err_msg, Str("illegal character %c"), c);
+ synterrp(csound, lp - 1, err_msg);
+ cp--;
+ }
+ }
+ *cp = '\0'; /* terminate last group */
+ if (grpp && grpcnt == (ST(linlabels) + 1)) {
+ /* convert an 'else' statement into 2 lines
+ goto <endiflabel>
+ <elselabel>
+ to do this, we parse the current twice */
+ if (strcmp(grpp, "else") == 0) {
+ if (UNLIKELY(!ST(iflabels))) { /* 'else': check to see we had an 'if' before */
+ synterr(csound, Str("invalid 'else' statement. "
+ "must have a corresponding 'if'"));
+ goto nxtlin;
+ }
+ if (ST(repeatingElseLine)) { /* add the elselabel */
+ if (UNLIKELY(!ST(iflabels)->els[0])) {
+ /* check to see we had not another 'else' */
+ synterr(csound, Str("duplicate 'else' statement"));
goto nxtlin;
}
- if (ST(iflabels)->els[0]) {
- /* we had no 'else' statement, so we need to insert the elselabel */
- ST(linlabels)++;
- strcpy(grpp, ST(iflabels)->els);
- ST(iflabels)->els[0] = '\0';
- ST(curline)--; /* roll back one and parse this line again */
- }
- else {
- prv = ST(iflabels)->prv;
- ST(linlabels)++;
- strcpy(grpp, ST(iflabels)->end);
- mfree(csound, ST(iflabels));
- ST(iflabels) = prv;
- }
+ ST(linlabels)++;
+ strcpy(grpp, ST(iflabels)->els);
+ ST(iflabels)->els[0] = '\0';
+ ST(repeatingElseLine) = 0;
+ }
+ else { /* add the goto statement */
+ if (ST(iflabels)->ithen > 0)
+ strcpy(grpp, "goto");
+ else
+ strcpy(grpp, "kgoto");
+ ST(linlabels) = 0; /* ignore any labels this time */
+ ST(group)[0] = grpp;
+ grpcnt = 1;
+ if (isopcod(csound, grpp))
+ ST(opgrpno) = grpcnt;
+ ST(group)[grpcnt] = strchr(grpp, '\0') + 1;
+ grpp = ST(group)[grpcnt++];
+ strcpy(grpp, ST(iflabels)->end);
+ ST(curline)--; /* roll back one and parse this line again */
+ ST(repeatingElseLine) = 1;
}
}
- if (!grpcnt) /* if line was trivial, */
- goto nxtlin; /* try another */
- if (collecting && !ST(opgrpno)) { /* if still collecting, */
- if (isopcod(csound, grpp)) /* chk for opcod */
- ST(opgrpno) = grpcnt;
- }
- if (UNLIKELY(parens)) /* check balanced parens */
- synterrp(csound, lp - 1, Str("unbalanced parens"));
- if (UNLIKELY(grpcnt > ST(linlabels) && !ST(opgrpno))) { /* if no full line opcod, */
- synterr(csound, Str("no legal opcode")); /* complain & */
- goto nxtlin; /* try another */
+ else if (strcmp(grpp, "endif") == 0) {
+ /* replace 'endif' with the synthesized label */
+ struct iflabel *prv;
+ if (UNLIKELY(!ST(iflabels))) { /* check to see we had an 'if' before */
+ synterr(csound, Str("invalid 'endif' statement. "
+ "must have a corresponding 'if'"));
+ goto nxtlin;
+ }
+ if (ST(iflabels)->els[0]) {
+ /* we had no 'else' statement, so we need to insert the elselabel */
+ ST(linlabels)++;
+ strcpy(grpp, ST(iflabels)->els);
+ ST(iflabels)->els[0] = '\0';
+ ST(curline)--; /* roll back one and parse this line again */
+ }
+ else {
+ prv = ST(iflabels)->prv;
+ ST(linlabels)++;
+ strcpy(grpp, ST(iflabels)->end);
+ mfree(csound, ST(iflabels));
+ ST(iflabels) = prv;
+ }
}
- ST(linopnum) = ST(opnum); /* else save full line ops */
- ST(linopcod) = ST(opcod);
- if (UNLIKELY(csound->oparms->odebug))
- printgroups(csound, grpcnt);
- return grpcnt;
+ }
+ if (!grpcnt) /* if line was trivial, */
+ goto nxtlin; /* try another */
+ if (collecting && !ST(opgrpno)) { /* if still collecting, */
+ if (isopcod(csound, grpp)) /* chk for opcod */
+ ST(opgrpno) = grpcnt;
+ }
+ if (UNLIKELY(parens)) /* check balanced parens */
+ synterrp(csound, lp - 1, Str("unbalanced parens"));
+ if (UNLIKELY(grpcnt > ST(linlabels) && !ST(opgrpno))) { /* if no full line opcod, */
+ synterr(csound, Str("no legal opcode")); /* complain & */
+ goto nxtlin; /* try another */
+ }
+ ST(linopnum) = ST(opnum); /* else save full line ops */
+ ST(linopcod) = ST(opcod);
+ if (UNLIKELY(csound->oparms->odebug))
+ printgroups(csound, grpcnt);
+ return grpcnt;
}
static void resetouts(CSOUND *csound)
{
- csound->acount = csound->kcount = csound->icount = 0;
- csound->Bcount = csound->bcount = 0;
+ csound->acount = csound->kcount = csound->icount = 0;
+ csound->Bcount = csound->bcount = 0;
}
TEXT *getoptxt(CSOUND *csound, int *init)
{ /* get opcod and args from current line */
/* returns pntr to a TEXT struct */
- TEXT *tp;
- char c, d, str[64], *s;
- int nn, incnt, outcnt;
-
- if (*init) {
- ST(grpcnt) = 0;
- ST(nxtest) = 1;
- ST(xprtstno) = 0;
- ST(polcnt) = 0;
- ST(instrblk) = 0;
- ST(opcodblk) = 0; /* IV - Sep 8 2002 */
- ST(instrcnt) = 0;
- *init = 0;
- memset(&ST(optext), 0, sizeof(TEXT));
- }
+ TEXT *tp;
+ char c, d, str[64], *s;
+ int nn, incnt, outcnt;
+
+ if (*init) {
+ ST(grpcnt) = 0;
+ ST(nxtest) = 1;
+ ST(xprtstno) = 0;
+ ST(polcnt) = 0;
+ ST(instrblk) = 0;
+ ST(opcodblk) = 0; /* IV - Sep 8 2002 */
+ ST(instrcnt) = 0;
+ *init = 0;
+ memset(&ST(optext), 0, sizeof(TEXT));
+ }
tstnxt:
- tp = &ST(optext);
- if (ST(nxtest) >= ST(grpcnt)) { /* if done with prevline, */
- csound->argcnt_offs = 0; /* reset temporary variable index */
- if (!(ST(grpcnt) = splitline(csound))) { /* attack next line */
- /* end of orchestra, clean up */
- mfree(csound, ST(linadr)); ST(linadr) = NULL;
- mfree(csound, ST(ortext)); ST(ortext) = NULL;
- mfree(csound, ST(collectbuf)); ST(collectbuf) = NULL;
- mfree(csound, ST(group)); ST(group) = NULL;
- mfree(csound, ST(grpsav)); ST(grpsav) = NULL;
- mfree(csound, csound->tokens); csound->tokens = NULL;
- mfree(csound, csound->tokenlist); csound->tokenlist = NULL;
- mfree(csound, csound->tokenstring); csound->tokenstring = NULL;
- mfree(csound, csound->polish); csound->polish = NULL;
- csound->token = NULL;
- return (TEXT*) NULL; /* (else we're done) */
- }
- for (nn=0; nn<ST(grpcnt); nn++) /* save the group pntrs */
- ST(grpsav)[nn] = ST(group)[nn];
- ST(xprtstno) = ST(grpcnt) - 1; /* and reinit indices */
- ST(nxtest) = 0;
- tp->linenum = ST(curline);
- /* IV - Jan 27 2005 */
- if (csound->oparms->expr_opt) {
- int i = (int) ST(linlabels) + 1;
- if (((int) ST(grpcnt) - i) > 0 && ST(group)[i][0] == '=' &&
- ST(group)[i][1] == '\0') {
- /* if opcode is '=', save outarg and type for expression optimiser */
- csound->opcode_is_assign = 1;
- csound->assign_type = (int) argtyp(csound, ST(group)[ST(linlabels)]);
- csound->assign_outarg = strsav_string(csound,
- ST(group)[ST(linlabels)]);
- }
- else {
- csound->opcode_is_assign = csound->assign_type = 0;
- csound->assign_outarg = NULL;
- }
- }
+ tp = &ST(optext);
+ if (ST(nxtest) >= ST(grpcnt)) { /* if done with prevline, */
+ csound->argcnt_offs = 0; /* reset temporary variable index */
+ if (!(ST(grpcnt) = splitline(csound))) { /* attack next line */
+ /* end of orchestra, clean up */
+ mfree(csound, ST(linadr)); ST(linadr) = NULL;
+ mfree(csound, ST(ortext)); ST(ortext) = NULL;
+ mfree(csound, ST(collectbuf)); ST(collectbuf) = NULL;
+ mfree(csound, ST(group)); ST(group) = NULL;
+ mfree(csound, ST(grpsav)); ST(grpsav) = NULL;
+ mfree(csound, csound->tokens); csound->tokens = NULL;
+ mfree(csound, csound->tokenlist); csound->tokenlist = NULL;
+ mfree(csound, csound->tokenstring); csound->tokenstring = NULL;
+ mfree(csound, csound->polish); csound->polish = NULL;
+ csound->token = NULL;
+ return (TEXT*) NULL; /* (else we're done) */
}
- if (ST(linlabels)) {
- s = strsav_string(csound, ST(group)[ST(nxtest)]);
- lblfound(csound, s);
- tp->opnum = LABEL;
- tp->opcod = s;
- tp->inlist = tp->outlist = ST(nullist);
- ST(linlabels)--;
- ST(nxtest)++;
- return(tp);
- }
- if (!ST(instrcnt)) { /* send initial "instr 0" */
- tp->opnum = INSTR;
- tp->opcod = strsav_string(csound, "instr"); /* to hold global assigns */
- tp->outlist = ST(nullist);
- ST(nxtarglist)->count = 1;
- ST(nxtarglist)->arg[0] = strsav_string(csound, "0");
- tp->inlist = copy_arglist(csound, ST(nxtarglist));
- ST(instrcnt) = ST(instrblk) = 1;
- return(tp);
- } /* then at 1st real INSTR, */
- /* or OPCODE, */
- if (ST(instrcnt) == 1 && ST(instrblk) &&
- (ST(opnum) == INSTR || ST(opnum) == OPCODE)) {
- tp->opnum = ENDIN; /* send an endin to */
- tp->opcod = strsav_string(csound, "endin"); /* term instr 0 blk */
- tp->outlist = tp->inlist = ST(nullist);
- ST(instrblk) = 0;
- ST(instrcnt) = 2;
- return(tp);
- }
- while (ST(xprtstno) >= 0) { /* for each arg (last 1st): */
- if (!ST(polcnt)) {
- /* if not midst of expressn: tst nxtarg */
- ST(polcnt) = express(csound, ST(group)[ST(xprtstno)--]);
- /* IV - Feb 06 2006: if there is an if/then with an unknown rate: */
- if (ST(polcnt) > 0 && ST(iflabels) != NULL && ST(iflabels)->ithen < 0) {
- char tmp;
- /* check the output type of the expression (FIXME: is this safe ?) */
- /* if it is an i-rate conditional, set ithen flag for else/elseif */
- tmp = argtyp(csound, csound->tokenlist[0]->str);
- if (tmp == (char) 'b')
- ST(iflabels)->ithen = 1;
- else
- ST(iflabels)->ithen = 0;
- }
+ for (nn=0; nn<ST(grpcnt); nn++) /* save the group pntrs */
+ ST(grpsav)[nn] = ST(group)[nn];
+ ST(xprtstno) = ST(grpcnt) - 1; /* and reinit indices */
+ ST(nxtest) = 0;
+ tp->linenum = ST(curline);
+ /* IV - Jan 27 2005 */
+ if (csound->oparms->expr_opt) {
+ int i = (int) ST(linlabels) + 1;
+ if (((int) ST(grpcnt) - i) > 0 && ST(group)[i][0] == '=' &&
+ ST(group)[i][1] == '\0') {
+ /* if opcode is '=', save outarg and type for expression optimiser */
+ csound->opcode_is_assign = 1;
+ csound->assign_type = (int) argtyp(csound, ST(group)[ST(linlabels)]);
+ csound->assign_outarg = strsav_string(csound,
+ ST(group)[ST(linlabels)]);
}
- if (ST(polcnt) < 0) {
- /* polish but arg only: redo ptr & contin */
- ST(group)[ST(xprtstno)+1] = strsav_string(csound, csound->tokenstring);
- ST(polcnt) = 0;
- }
- else if (ST(polcnt)) {
- POLISH *pol; /* for real polish ops, */
- int n;
- pol = &(csound->polish[--ST(polcnt)]); /* grab top one */
- if (UNLIKELY(isopcod(csound, pol->opcod) == 0)) { /* and check it out */
- synterr(csound, Str("illegal opcod from expr anal"));
- goto tstnxt;
- }
- tp->opnum = ST(opnum); /* ok to send subop */
- tp->opcod = strsav_string(csound, ST(opcod));
- ST(nxtarglist)->count = outcnt = 1;
- ST(nxtarglist)->arg[0] = strsav_string(csound, pol->arg[0]);
- tp->outlist = copy_arglist(csound, ST(nxtarglist));
- n = ST(nxtarglist)->count = incnt = pol->incount;
- do ST(nxtarglist)->arg[n-1] = strsav_string(csound, pol->arg[n]);
- while (--n);
- tp->inlist = copy_arglist(csound, ST(nxtarglist));
- if (!ST(polcnt)) /* last op? hit the grp ptr */
- ST(group)[ST(xprtstno)+1] = tp->outlist->arg[0];
- goto spctst;
+ else {
+ csound->opcode_is_assign = csound->assign_type = 0;
+ csound->assign_outarg = NULL;
}
}
- if (!strcmp(ST(linopcod), "=")) { /* IV - Jan 08 2003: '=' opcode */
- if (csound->oparms->expr_opt && csound->opcode_is_assign < 0) {
- /* if optimised away, skip line */
- ST(nxtest) = ST(grpcnt); goto tstnxt;
- }
- if (ST(nxtest) < ST(opgrpno)) {
- c = argtyp(csound, ST(group)[ST(nxtest)]);
- switch (c) {
- case 'S': strcpy(str, "strcpy"); break;
- case 'a': c = argtyp(csound, ST(group)[ST(opgrpno)]);
- strcpy(str, (c == 'a' ? "=.a" : "upsamp")); break;
- case 'p': c = 'i';
- default: sprintf(str, "=.%c", c);
- }
- if (UNLIKELY(!(isopcod(csound, str)))) {
- synterr(csound,
- Str("failed to find %s, output arg '%s' illegal type"),
- str, ST(group)[ST(nxtest)]); /* report syntax error */
- ST(nxtest) = 100; /* step way over this line */
- goto tstnxt; /* & go to next */
- }
- if (strcmp(ST(group)[ST(nxtest)], ST(group)[ST(opgrpno)]) == 0) {
- /* outarg same as inarg, skip line */
- ST(nxtest) = ST(grpcnt); goto tstnxt;
- }
- ST(linopnum) = ST(opnum);
- ST(linopcod) = ST(opcod);
- csound->DebugMsg(csound, Str("modified opcod: %s"), ST(opcod));
+ }
+ if (ST(linlabels)) {
+ s = strsav_string(csound, ST(group)[ST(nxtest)]);
+ lblfound(csound, s);
+ tp->opnum = LABEL;
+ tp->opcod = s;
+ tp->inlist = tp->outlist = ST(nullist);
+ ST(linlabels)--;
+ ST(nxtest)++;
+ return(tp);
+ }
+ if (!ST(instrcnt)) { /* send initial "instr 0" */
+ tp->opnum = INSTR;
+ tp->opcod = strsav_string(csound, "instr"); /* to hold global assigns */
+ tp->outlist = ST(nullist);
+ ST(nxtarglist)->count = 1;
+ ST(nxtarglist)->arg[0] = strsav_string(csound, "0");
+ tp->inlist = copy_arglist(csound, ST(nxtarglist));
+ ST(instrcnt) = ST(instrblk) = 1;
+ return(tp);
+ } /* then at 1st real INSTR, */
+ /* or OPCODE, */
+ if (ST(instrcnt) == 1 && ST(instrblk) &&
+ (ST(opnum) == INSTR || ST(opnum) == OPCODE)) {
+ tp->opnum = ENDIN; /* send an endin to */
+ tp->opcod = strsav_string(csound, "endin"); /* term instr 0 blk */
+ tp->outlist = tp->inlist = ST(nullist);
+ ST(instrblk) = 0;
+ ST(instrcnt) = 2;
+ return(tp);
+ }
+ while (ST(xprtstno) >= 0) { /* for each arg (last 1st): */
+ if (!ST(polcnt)) {
+ /* if not midst of expressn: tst nxtarg */
+ ST(polcnt) = express(csound, ST(group)[ST(xprtstno)--]);
+ /* IV - Feb 06 2006: if there is an if/then with an unknown rate: */
+ if (ST(polcnt) > 0 && ST(iflabels) != NULL && ST(iflabels)->ithen < 0) {
+ char tmp;
+ /* check the output type of the expression (FIXME: is this safe ?) */
+ /* if it is an i-rate conditional, set ithen flag for else/elseif */
+ tmp = argtyp(csound, csound->tokenlist[0]->str);
+ if (tmp == (char) 'b')
+ ST(iflabels)->ithen = 1;
+ else
+ ST(iflabels)->ithen = 0;
}
}
- else if (ST(nxtest) < ST(opgrpno) && /* Some aopcodes do not have ans! */
- csound->opcodlst[ST(linopnum)].dsblksiz == 0xffff) {
- /* use outype to modify some opcodes flagged as translating */
+ if (ST(polcnt) < 0) {
+ /* polish but arg only: redo ptr & contin */
+ ST(group)[ST(xprtstno)+1] = strsav_string(csound, csound->tokenstring);
+ ST(polcnt) = 0;
+ }
+ else if (ST(polcnt)) {
+ POLISH *pol; /* for real polish ops, */
+ int n;
+ pol = &(csound->polish[--ST(polcnt)]); /* grab top one */
+ if (UNLIKELY(isopcod(csound, pol->opcod) == 0)) { /* and check it out */
+ synterr(csound, Str("illegal opcod from expr anal"));
+ goto tstnxt;
+ }
+ tp->opnum = ST(opnum); /* ok to send subop */
+ tp->opcod = strsav_string(csound, ST(opcod));
+ ST(nxtarglist)->count = outcnt = 1;
+ ST(nxtarglist)->arg[0] = strsav_string(csound, pol->arg[0]);
+ tp->outlist = copy_arglist(csound, ST(nxtarglist));
+ n = ST(nxtarglist)->count = incnt = pol->incount;
+ do ST(nxtarglist)->arg[n-1] = strsav_string(csound, pol->arg[n]);
+ while (--n);
+ tp->inlist = copy_arglist(csound, ST(nxtarglist));
+ if (!ST(polcnt)) /* last op? hit the grp ptr */
+ ST(group)[ST(xprtstno)+1] = tp->outlist->arg[0];
+ goto spctst;
+ }
+ }
+ if (!strcmp(ST(linopcod), "=")) { /* IV - Jan 08 2003: '=' opcode */
+ if (csound->oparms->expr_opt && csound->opcode_is_assign < 0) {
+ /* if optimised away, skip line */
+ ST(nxtest) = ST(grpcnt); goto tstnxt;
+ }
+ if (ST(nxtest) < ST(opgrpno)) {
c = argtyp(csound, ST(group)[ST(nxtest)]);
- if (c == 'p') c = 'i';
- if (c == '?') c = 'a'; /* tmp */
- sprintf(str, "%s.%c", ST(linopcod), c);
+ switch (c) {
+ case 'S': strcpy(str, "strcpy"); break;
+ case 'a': c = argtyp(csound, ST(group)[ST(opgrpno)]);
+ strcpy(str, (c == 'a' ? "=.a" : "upsamp")); break;
+ case 'p': c = 'i';
+ default: sprintf(str, "=.%c", c);
+ }
if (UNLIKELY(!(isopcod(csound, str)))) {
- synterr(csound, Str("failed to find %s, output arg '%s' illegal type"),
- str, ST(group)[ST(nxtest)]); /* report syntax error */
- ST(nxtest) = 100; /* step way over this line */
- goto tstnxt; /* & go to next */
+ synterr(csound,
+ Str("failed to find %s, output arg '%s' illegal type"),
+ str, ST(group)[ST(nxtest)]); /* report syntax error */
+ ST(nxtest) = 100; /* step way over this line */
+ goto tstnxt; /* & go to next */
+ }
+ if (strcmp(ST(group)[ST(nxtest)], ST(group)[ST(opgrpno)]) == 0) {
+ /* outarg same as inarg, skip line */
+ ST(nxtest) = ST(grpcnt); goto tstnxt;
}
ST(linopnum) = ST(opnum);
ST(linopcod) = ST(opcod);
csound->DebugMsg(csound, Str("modified opcod: %s"), ST(opcod));
}
- else if ((int) csound->opcodlst[ST(linopnum)].dsblksiz >= 0xfffb) {
- c = argtyp(csound, ST(group)[ST(opgrpno)]); /* type of first input arg */
- switch ((int) csound->opcodlst[ST(linopnum)].dsblksiz) {
- case 0xfffe: /* Two tags for OSCIL's */
- if (c != 'a') c = 'k';
- if ((d = argtyp(csound, ST(group)[ST(opgrpno)+1])) != 'a') d = 'k';
- sprintf(str, "%s.%c%c", ST(linopcod), c, d);
- break;
- case 0xfffd: /* For peak, etc. */
+ }
+ else if (ST(nxtest) < ST(opgrpno) && /* Some aopcodes do not have ans! */
+ csound->opcodlst[ST(linopnum)].dsblksiz == 0xffff) {
+ /* use outype to modify some opcodes flagged as translating */
+ c = argtyp(csound, ST(group)[ST(nxtest)]);
+ if (c == 'p') c = 'i';
+ if (c == '?') c = 'a'; /* tmp */
+ sprintf(str, "%s.%c", ST(linopcod), c);
+ if (UNLIKELY(!(isopcod(csound, str)))) {
+ synterr(csound, Str("failed to find %s, output arg '%s' illegal type"),
+ str, ST(group)[ST(nxtest)]); /* report syntax error */
+ ST(nxtest) = 100; /* step way over this line */
+ goto tstnxt; /* & go to next */
+ }
+ ST(linopnum) = ST(opnum);
+ ST(linopcod) = ST(opcod);
+ csound->DebugMsg(csound, Str("modified opcod: %s"), ST(opcod));
+ }
+ else if ((int) csound->opcodlst[ST(linopnum)].dsblksiz >= 0xfffb) {
+ c = argtyp(csound, ST(group)[ST(opgrpno)]); /* type of first input arg */
+ switch ((int) csound->opcodlst[ST(linopnum)].dsblksiz) {
+ case 0xfffe: /* Two tags for OSCIL's */
+ if (c != 'a') c = 'k';
+ if ((d = argtyp(csound, ST(group)[ST(opgrpno)+1])) != 'a') d = 'k';
+ sprintf(str, "%s.%c%c", ST(linopcod), c, d);
+ break;
+ case 0xfffd: /* For peak, etc. */
+ if (c != 'a') c = 'k';
+ sprintf(str, "%s.%c", ST(linopcod), c);
+ break;
+ case 0xfffc: /* For divz types */
+ d = argtyp(csound, ST(group)[ST(opgrpno)+1]);
+ if ((c=='i' || c=='c') && (d=='i' || d=='c'))
+ c = 'i', d = 'i';
+ else {
if (c != 'a') c = 'k';
- sprintf(str, "%s.%c", ST(linopcod), c);
- break;
- case 0xfffc: /* For divz types */
- d = argtyp(csound, ST(group)[ST(opgrpno)+1]);
- if ((c=='i' || c=='c') && (d=='i' || d=='c'))
- c = 'i', d = 'i';
- else {
- if (c != 'a') c = 'k';
- if (d != 'a') d = 'k';
- }
- sprintf(str, "%s.%c%c", ST(linopcod), c, d);
- break;
- case 0xfffb: /* determine opcode by type of first input arg */
- /* allows a, k, and i types (e.g. Inc, Dec), but not constants */
- if (ST(typemask_tabl)[(unsigned char) c] & (ARGTYP_i | ARGTYP_p))
- c = 'i';
- sprintf(str, "%s.%c", ST(linopcod), c);
- break;
- default:
- strcpy(str, ST(linopcod)); /* unknown code: use original opcode */
- }
- if (UNLIKELY(!(isopcod(csound, str)))) {
- /* if opcode is not found: report syntax error */
- synterr(csound, Str("failed to find %s, input arg illegal type"), str);
- ST(nxtest) = 100; /* step way over this line */
- goto tstnxt; /* & go to next */
- }
- ST(linopnum) = ST(opnum);
- ST(linopcod) = ST(opcod);
- csound->DebugMsg(csound, Str("modified opcod: %s"), ST(opcod));
+ if (d != 'a') d = 'k';
+ }
+ sprintf(str, "%s.%c%c", ST(linopcod), c, d);
+ break;
+ case 0xfffb: /* determine opcode by type of first input arg */
+ /* allows a, k, and i types (e.g. Inc, Dec), but not constants */
+ if (ST(typemask_tabl)[(unsigned char) c] & (ARGTYP_i | ARGTYP_p))
+ c = 'i';
+ sprintf(str, "%s.%c", ST(linopcod), c);
+ break;
+ default:
+ strcpy(str, ST(linopcod)); /* unknown code: use original opcode */
}
- tp->opnum = ST(linopnum); /* now use identified */
- tp->opcod = strsav_string(csound, ST(linopcod)); /* full line opcode */
- /* IV - Oct 24 2002: check for invalid use of setksmps */
- if (strcmp(ST(linopcod), "setksmps") == 0) {
- if (UNLIKELY(!ST(opcodblk)))
- synterr(csound,
- Str("setksmps is allowed only in user defined opcodes"));
- else if (UNLIKELY((int) ST(opcodflg) & 4))
- synterr(csound,
- Str("multiple uses of setksmps in the same opcode definition"));
- else
- ST(opcodflg) |= (int16) 4;
- }
- if (strncmp(ST(linopcod),"out",3) == 0 && /* but take case of MIDI ops */
- (ST(linopcod)[3] == '\0' || ST(linopcod)[3] == 's' ||
- ST(linopcod)[3] == 'q' || ST(linopcod)[3] == 'h' ||
- ST(linopcod)[3] == 'o' || ST(linopcod)[3] == 'x' ||
- ST(linopcod)[3] == '3' ))
- if ((csound->tran_nchnls == 1 && strcmp(ST(linopcod),"out" ) != 0) ||
- (csound->tran_nchnls == 2 && strncmp(ST(linopcod),"outs",4) != 0) ||
- (csound->tran_nchnls == 4 && strncmp(ST(linopcod),"outq",4) != 0) ||
- (csound->tran_nchnls == 6 && strncmp(ST(linopcod),"outh",4) != 0) ||
- (csound->tran_nchnls == 8 && strncmp(ST(linopcod),"outo",4) != 0) ||
- (csound->tran_nchnls == 16 && strncmp(ST(linopcod),"outx",4) != 0) ||
- (csound->tran_nchnls == 32 && strncmp(ST(linopcod),"out32",5) != 0)) {
- if (csound->tran_nchnls == 1) isopcod(csound, "out");
- else if (csound->tran_nchnls == 2) isopcod(csound, "outs");
- else if (csound->tran_nchnls == 4) isopcod(csound, "outq");
- else if (csound->tran_nchnls == 6) isopcod(csound, "outh");
- else if (csound->tran_nchnls == 8) isopcod(csound, "outo");
- else if (csound->tran_nchnls == 16) isopcod(csound, "outx");
- else if (csound->tran_nchnls == 32) isopcod(csound, "out32");
- csound->Message(csound, Str("%s inconsistent with global nchnls (%d); "
- "replaced with %s\n"),
- ST(linopcod), csound->tran_nchnls, ST(opcod));
- tp->opnum = ST(linopnum) = ST(opnum);
- tp->opcod = strsav_string(csound, ST(linopcod) = ST(opcod));
- }
- incnt = outcnt = 0;
- while (ST(nxtest) < ST(opgrpno)-1) /* create the out arglist */
- ST(nxtarglist)->arg[outcnt++] =
- strsav_string(csound, ST(group)[ST(nxtest)++]);
- ST(nxtarglist)->count = outcnt;
- if (outcnt == 0)
- tp->outlist = ST(nullist);
- else {
- tp->outlist = copy_arglist(csound, ST(nxtarglist)); /* & prep ins */
+ if (UNLIKELY(!(isopcod(csound, str)))) {
+ /* if opcode is not found: report syntax error */
+ synterr(csound, Str("failed to find %s, input arg illegal type"), str);
+ ST(nxtest) = 100; /* step way over this line */
+ goto tstnxt; /* & go to next */
}
- ST(nxtest)++;
- while (ST(nxtest) < ST(grpcnt)) /* & ensuing inargs */
- ST(nxtarglist)->arg[incnt++] =
- strsav_string(csound, ST(group)[ST(nxtest)++]);
- ST(nxtarglist)->count = incnt;
- if (incnt==0)
- tp->inlist = ST(nullist);
- else tp->inlist = copy_arglist(csound, ST(nxtarglist));
- ST(grpcnt) = 0; /* all done w. these groups */
+ ST(linopnum) = ST(opnum);
+ ST(linopcod) = ST(opcod);
+ csound->DebugMsg(csound, Str("modified opcod: %s"), ST(opcod));
+ }
+ tp->opnum = ST(linopnum); /* now use identified */
+ tp->opcod = strsav_string(csound, ST(linopcod)); /* full line opcode */
+ /* IV - Oct 24 2002: check for invalid use of setksmps */
+ if (strcmp(ST(linopcod), "setksmps") == 0) {
+ if (UNLIKELY(!ST(opcodblk)))
+ synterr(csound,
+ Str("setksmps is allowed only in user defined opcodes"));
+ else if (UNLIKELY((int) ST(opcodflg) & 4))
+ synterr(csound,
+ Str("multiple uses of setksmps in the same opcode definition"));
+ else
+ ST(opcodflg) |= (int16) 4;
+ }
+#if 0
+ /* NO LONGER USED */
+ if (strncmp(ST(linopcod),"out",3) == 0 && /* but take case of MIDI ops */
+ (ST(linopcod)[3] == '\0' || ST(linopcod)[3] == 's' ||
+ ST(linopcod)[3] == 'q' || ST(linopcod)[3] == 'h' ||
+ ST(linopcod)[3] == 'o' || ST(linopcod)[3] == 'x' ||
+ ST(linopcod)[3] == '3' ))
+ if ((csound->tran_nchnls == 1 && strcmp(ST(linopcod),"out" ) != 0) ||
+ (csound->tran_nchnls == 2 && strncmp(ST(linopcod),"outs",4) != 0) ||
+ (csound->tran_nchnls == 4 && strncmp(ST(linopcod),"outq",4) != 0) ||
+ (csound->tran_nchnls == 6 && strncmp(ST(linopcod),"outh",4) != 0) ||
+ (csound->tran_nchnls == 8 && strncmp(ST(linopcod),"outo",4) != 0) ||
+ (csound->tran_nchnls == 16 && strncmp(ST(linopcod),"outx",4) != 0) ||
+ (csound->tran_nchnls == 32 && strncmp(ST(linopcod),"out32",5) != 0)) {
+ if (csound->tran_nchnls == 1) isopcod(csound, "out");
+ else if (csound->tran_nchnls == 2) isopcod(csound, "outs");
+ else if (csound->tran_nchnls == 4) isopcod(csound, "outq");
+ else if (csound->tran_nchnls == 6) isopcod(csound, "outh");
+ else if (csound->tran_nchnls == 8) isopcod(csound, "outo");
+ else if (csound->tran_nchnls == 16) isopcod(csound, "outx");
+ else if (csound->tran_nchnls == 32) isopcod(csound, "out32");
+ csound->Message(csound, Str("%s inconsistent with global nchnls (%d); "
+ "replaced with %s\n"),
+ ST(linopcod), csound->tran_nchnls, ST(opcod));
+ tp->opnum = ST(linopnum) = ST(opnum);
+ tp->opcod = strsav_string(csound, ST(linopcod) = ST(opcod));
+ }
+#endif
+ incnt = outcnt = 0;
+ while (ST(nxtest) < ST(opgrpno)-1) /* create the out arglist */
+ ST(nxtarglist)->arg[outcnt++] =
+ strsav_string(csound, ST(group)[ST(nxtest)++]);
+ ST(nxtarglist)->count = outcnt;
+ if (outcnt == 0)
+ tp->outlist = ST(nullist);
+ else {
+ tp->outlist = copy_arglist(csound, ST(nxtarglist)); /* & prep ins */
+ }
+ ST(nxtest)++;
+ while (ST(nxtest) < ST(grpcnt)) /* & ensuing inargs */
+ ST(nxtarglist)->arg[incnt++] =
+ strsav_string(csound, ST(group)[ST(nxtest)++]);
+ ST(nxtarglist)->count = incnt;
+ if (incnt==0)
+ tp->inlist = ST(nullist);
+ else tp->inlist = copy_arglist(csound, ST(nxtarglist));
+ ST(grpcnt) = 0; /* all done w. these groups */
spctst:
- tp->xincod_str = tp->xincod = 0;
- if (tp->opnum == OPCODE) { /* IV - Sep 8 2002: added OPCODE and ENDOP */
- if (UNLIKELY(ST(opcodblk)))
- synterr(csound, Str("opcode blks cannot be nested (missing 'endop'?)"));
- else if (UNLIKELY(ST(instrblk)))
- synterr(csound, Str("opcode not allowed in instr block"));
- else ST(instrblk) = ST(opcodblk) = 1;
- ST(opcodflg) = 0;
- resetouts(csound); /* reset #out counts */
- lblclear(csound); /* restart labelist */
- }
- else if (tp->opnum == ENDOP) { /* IV - Sep 8 2002: ENDOP: */
- lblchk(csound); /* chk missed labels */
- if (UNLIKELY(!ST(instrblk)))
- synterr(csound, Str("unmatched endop"));
- else if (UNLIKELY(!ST(opcodblk)))
- synterr(csound, Str("endop not allowed in instr block"));
- else ST(instrblk) = ST(opcodblk) = 0;
- }
- else if (tp->opnum == INSTR) { /* IV - Sep 8 2002: for opcod INSTR */
- if (UNLIKELY(ST(opcodblk))) /* IV - Sep 8 2002 */
- synterr(csound, Str("instr not allowed in opcode block"));
- else if (UNLIKELY(ST(instrblk)))
+ tp->xincod_str = tp->xincod = 0;
+ if (tp->opnum == OPCODE) { /* IV - Sep 8 2002: added OPCODE and ENDOP */
+ if (UNLIKELY(ST(opcodblk)))
+ synterr(csound, Str("opcode blks cannot be nested (missing 'endop'?)"));
+ else if (UNLIKELY(ST(instrblk)))
+ synterr(csound, Str("opcode not allowed in instr block"));
+ else ST(instrblk) = ST(opcodblk) = 1;
+ ST(opcodflg) = 0;
+ resetouts(csound); /* reset #out counts */
+ lblclear(csound); /* restart labelist */
+ }
+ else if (tp->opnum == ENDOP) { /* IV - Sep 8 2002: ENDOP: */
+ lblchk(csound); /* chk missed labels */
+ if (UNLIKELY(!ST(instrblk)))
+ synterr(csound, Str("unmatched endop"));
+ else if (UNLIKELY(!ST(opcodblk)))
+ synterr(csound, Str("endop not allowed in instr block"));
+ else ST(instrblk) = ST(opcodblk) = 0;
+ }
+ else if (tp->opnum == INSTR) { /* IV - Sep 8 2002: for opcod INSTR */
+ if (UNLIKELY(ST(opcodblk))) /* IV - Sep 8 2002 */
+ synterr(csound, Str("instr not allowed in opcode block"));
+ else if (UNLIKELY(ST(instrblk)))
+ synterr(csound,
+ Str("instr blocks cannot be nested (missing 'endin'?)"));
+ else ST(instrblk) = 1;
+ resetouts(csound); /* reset #out counts */
+ lblclear(csound); /* restart labelist */
+ }
+ else if (tp->opnum == ENDIN) { /* ENDIN: */
+ lblchk(csound); /* chk missed labels */
+ if (UNLIKELY(ST(opcodblk)))
+ synterr(csound, Str("endin not allowed in opcode blk"));
+ else if (UNLIKELY(!ST(instrblk)))
+ synterr(csound, Str("unmatched endin"));
+ else ST(instrblk) = 0;
+ }
+ else { /* for all other opcodes: */
+ OENTRY *ep = csound->opcodlst + tp->opnum;
+ int n, nreqd;
+ char tfound = '\0', treqd, *types = NULL;
+ char xtypes[OPCODENUMOUTS_MAX + 1]; /* IV - Oct 24 2002 */
+
+ if (UNLIKELY(!ST(instrblk)))
+ synterr(csound, Str("misplaced opcode"));
+ /* IV - Oct 24 2002: moved argument parsing for xout here */
+ n = incnt;
+ nreqd = -1;
+ if (!strcmp(ep->opname, "xout")) {
+ if (UNLIKELY(!ST(opcodblk)))
+ synterr(csound, Str("xout is allowed only in user defined opcodes"));
+ else if (UNLIKELY((int) ST(opcodflg) & 2))
synterr(csound,
- Str("instr blocks cannot be nested (missing 'endin'?)"));
- else ST(instrblk) = 1;
- resetouts(csound); /* reset #out counts */
- lblclear(csound); /* restart labelist */
- }
- else if (tp->opnum == ENDIN) { /* ENDIN: */
- lblchk(csound); /* chk missed labels */
- if (UNLIKELY(ST(opcodblk)))
- synterr(csound, Str("endin not allowed in opcode blk"));
- else if (UNLIKELY(!ST(instrblk)))
- synterr(csound, Str("unmatched endin"));
- else ST(instrblk) = 0;
- }
- else { /* for all other opcodes: */
- OENTRY *ep = csound->opcodlst + tp->opnum;
- int n, nreqd;
- char tfound = '\0', treqd, *types = NULL;
- char xtypes[OPCODENUMOUTS_MAX + 1]; /* IV - Oct 24 2002 */
-
- if (UNLIKELY(!ST(instrblk)))
- synterr(csound, Str("misplaced opcode"));
- /* IV - Oct 24 2002: moved argument parsing for xout here */
- n = incnt;
- nreqd = -1;
- if (!strcmp(ep->opname, "xout")) {
- if (UNLIKELY(!ST(opcodblk)))
- synterr(csound, Str("xout is allowed only in user defined opcodes"));
- else if (UNLIKELY((int) ST(opcodflg) & 2))
- synterr(csound,
- Str("multiple uses of xout in the same opcode definition"));
- else {
- /* IV - Oct 24 2002: opcodeInfo always points to the most recently */
- /* defined user opcode (or named instrument) structure; in this */
- /* case, it is the current opcode definition (not very elegant, */
- /* but works) */
- char *c = csound->opcodeInfo->outtypes;
- int i = 0;
- ST(opcodflg) |= (int16) 2;
- nreqd = csound->opcodeInfo->outchns;
- /* replace opcode if needed */
- if (nreqd > OPCODENUMOUTS_LOW) {
- if (nreqd > OPCODENUMOUTS_HIGH)
- isopcod(csound, ".xout256");
- else
- isopcod(csound, ".xout64");
- ST(linopcod) = ST(opcod);
- ST(linopnum) = ST(opnum);
- tp->opcod = strsav_string(csound, ST(linopcod));
- tp->opnum = ST(linopnum);
- ep = csound->opcodlst + tp->opnum;
- csound->DebugMsg(csound, Str("modified opcod: %s"), ST(opcod));
- }
- while (c[i]) {
- switch (c[i]) {
- case 'a':
- case 'k':
- case 'f':
- case 'i': xtypes[i] = c[i]; break;
- case 'K': xtypes[i] = 'k';
- }
- i++;
- }
- xtypes[i] = '\0';
- types = &xtypes[0];
+ Str("multiple uses of xout in the same opcode definition"));
+ else {
+ /* IV - Oct 24 2002: opcodeInfo always points to the most recently */
+ /* defined user opcode (or named instrument) structure; in this */
+ /* case, it is the current opcode definition (not very elegant, */
+ /* but works) */
+ char *c = csound->opcodeInfo->outtypes;
+ int i = 0;
+ ST(opcodflg) |= (int16) 2;
+ nreqd = csound->opcodeInfo->outchns;
+ /* replace opcode if needed */
+ if (nreqd > OPCODENUMOUTS_LOW) {
+ if (nreqd > OPCODENUMOUTS_HIGH)
+ isopcod(csound, ".xout256");
+ else
+ isopcod(csound, ".xout64");
+ ST(linopcod) = ST(opcod);
+ ST(linopnum) = ST(opnum);
+ tp->opcod = strsav_string(csound, ST(linopcod));
+ tp->opnum = ST(linopnum);
+ ep = csound->opcodlst + tp->opnum;
+ csound->DebugMsg(csound, Str("modified opcod: %s"), ST(opcod));
}
- }
- if (nreqd < 0) /* for other opcodes */
- nreqd = strlen(types = ep->intypes);
- if (n > nreqd) { /* IV - Oct 24 2002: end of new code */
- if ((treqd = types[nreqd-1]) == 'n') { /* indef args: */
- if (UNLIKELY(!(incnt & 01))) /* require odd */
- synterr(csound, Str("missing or extra arg"));
- } /* IV - Sep 1 2002: added 'M' */
- else if (UNLIKELY(treqd != 'm' && treqd != 'z' && treqd != 'y' &&
- treqd != 'Z' && treqd != 'M' &&
- treqd != 'N')) /* else any no */
- synterr(csound, Str("too many input args"));
- }
- else if (incnt < nreqd) { /* or set defaults: */
- do {
- switch (types[incnt]) {
- case 'O': /* Will this work? Doubtful code.... */
- case 'o': ST(nxtarglist)->arg[incnt++] = strsav_string(csound, "0");
- break;
- case 'P':
- case 'p': ST(nxtarglist)->arg[incnt++] = strsav_string(csound, "1");
- break;
- case 'q': ST(nxtarglist)->arg[incnt++] = strsav_string(csound, "10");
- break;
- case 'V':
- case 'v': ST(nxtarglist)->arg[incnt++] = strsav_string(csound, ".5");
- break;
- case 'h': ST(nxtarglist)->arg[incnt++] = strsav_string(csound, "127");
- break;
- case 'J':
- case 'j': ST(nxtarglist)->arg[incnt++] = strsav_string(csound, "-1");
- break;
- case 'F':
- case 'M':
- case 'N':
- case 'm': nreqd--;
- break;
- default: synterr(csound, Str("insufficient required arguments"));
- goto chkin;
+ while (c[i]) {
+ switch (c[i]) {
+ case 'a':
+ case 'k':
+ case 'f':
+ case 'i': xtypes[i] = c[i]; break;
+ case 'K': xtypes[i] = 'k';
}
- } while (incnt < nreqd);
- ST(nxtarglist)->count = n = incnt; /* in extra space */
- if (tp->inlist == ST(nullist) && incnt > 0) {
- /*MWB 2/11/97 fixed bug that prevented an
- opcode with only optional arguments from
- properly loading defaults */
- tp->inlist = copy_arglist(csound, ST(nxtarglist));
+ i++;
}
+ xtypes[i] = '\0';
+ types = &xtypes[0];
}
- chkin:
- if (n>tp->inlist->count) {
- int i;
- size_t m = sizeof(ARGLST) + (n - 1) * sizeof(char*);
- tp->inlist = (ARGLST*) mrealloc(csound, tp->inlist, m);
- for (i=tp->inlist->count; i<n; i++) {
- tp->inlist->arg[i] = ST(nxtarglist)->arg[i];
- }
- tp->inlist->count = n;
- }
- while (n--) { /* inargs: */
- int32 tfound_m, treqd_m = 0L;
- s = tp->inlist->arg[n];
- if (n >= nreqd) { /* det type required */
- switch (types[nreqd-1]) {
- case 'M':
- case 'N':
- case 'Z':
- case 'y':
- case 'z': treqd = types[nreqd-1]; break;
- default: treqd = 'i'; /* (indef in-type) */
- }
- }
- else treqd = types[n]; /* or given) */
- if (treqd == 'l') { /* if arg takes lbl */
- csound->DebugMsg(csound, "treqd = l");
- lblrequest(csound, s); /* req a search */
- continue; /* chk it later */
- }
- tfound = argtyp(csound, s); /* else get arg type */
- /* IV - Oct 31 2002 */
- tfound_m = ST(typemask_tabl)[(unsigned char) tfound];
- if (UNLIKELY(!(tfound_m & (ARGTYP_c|ARGTYP_p)) &&
- !ST(lgprevdef) && *s != '"')) {
- synterr(csound, Str("input arg '%s' used before defined"), s);
+ }
+ if (nreqd < 0) /* for other opcodes */
+ nreqd = strlen(types = ep->intypes);
+ if (n > nreqd) { /* IV - Oct 24 2002: end of new code */
+ if ((treqd = types[nreqd-1]) == 'n') { /* indef args: */
+ if (UNLIKELY(!(incnt & 01))) /* require odd */
+ synterr(csound, Str("missing or extra arg"));
+ } /* IV - Sep 1 2002: added 'M' */
+ else if (UNLIKELY(treqd != 'm' && treqd != 'z' && treqd != 'y' &&
+ treqd != 'Z' && treqd != 'M' &&
+ treqd != 'N')) /* else any no */
+ synterr(csound, Str("too many input args"));
+ }
+ else if (incnt < nreqd) { /* or set defaults: */
+ do {
+ switch (types[incnt]) {
+ case 'O': /* Will this work? Doubtful code.... */
+ case 'o': ST(nxtarglist)->arg[incnt++] = strsav_string(csound, "0");
+ break;
+ case 'P':
+ case 'p': ST(nxtarglist)->arg[incnt++] = strsav_string(csound, "1");
+ break;
+ case 'q': ST(nxtarglist)->arg[incnt++] = strsav_string(csound, "10");
+ break;
+ case 'V':
+ case 'v': ST(nxtarglist)->arg[incnt++] = strsav_string(csound, ".5");
+ break;
+ case 'h': ST(nxtarglist)->arg[incnt++] = strsav_string(csound, "127");
+ break;
+ case 'J':
+ case 'j': ST(nxtarglist)->arg[incnt++] = strsav_string(csound, "-1");
+ break;
+ case 'F':
+ case 'M':
+ case 'N':
+ case 'm': nreqd--;
+ break;
+ default: synterr(csound, Str("insufficient required arguments"));
+ goto chkin;
}
- csound->DebugMsg(csound, "treqd %c, tfound %c", treqd, tfound);
- if (tfound == 'a' && n < 31) /* JMC added for FOG */
- /* 4 for FOF, 8 for FOG; expanded to 15 */
- tp->xincod |= (1 << n);
- if (tfound == 'S' && n < 31)
- tp->xincod_str |= (1 << n);
- /* IV - Oct 31 2002: simplified code */
- if (!(tfound_m & ST(typemask_tabl_in)[(unsigned char) treqd])) {
- /* check for exceptional types */
- switch (treqd) {
- case 'I':
- treqd_m = ARGTYP_i;
- break;
- case 'Z': /* indef kakaka ... */
- if (UNLIKELY(!(tfound_m & (n & 1 ? ARGTYP_a : ARGTYP_ipcrk))))
- intyperr(csound, n, tfound, treqd);
- break;
- case 'x':
- treqd_m = ARGTYP_ipcr; /* also allows i-rate */
- case 's': /* a- or k-rate */
- treqd_m |= ARGTYP_a | ARGTYP_k;
- if (tfound_m & treqd_m) {
- if (tfound == 'a' && tp->outlist != ST(nullist)) {
- int32 outyp_m = /* ??? */
- ST(typemask_tabl)[(unsigned char) argtyp(csound,
- tp->outlist->arg[0])];
- if (outyp_m & (ARGTYP_a | ARGTYP_w | ARGTYP_f)) break;
- }
- else
- break;
- }
- default:
- intyperr(csound, n, tfound, treqd);
- break;
- }
+ } while (incnt < nreqd);
+ ST(nxtarglist)->count = n = incnt; /* in extra space */
+ if (tp->inlist == ST(nullist) && incnt > 0) {
+ /*MWB 2/11/97 fixed bug that prevented an
+ opcode with only optional arguments from
+ properly loading defaults */
+ tp->inlist = copy_arglist(csound, ST(nxtarglist));
+ }
+ }
+ chkin:
+ if (n>tp->inlist->count) {
+ int i;
+ size_t m = sizeof(ARGLST) + (n - 1) * sizeof(char*);
+ tp->inlist = (ARGLST*) mrealloc(csound, tp->inlist, m);
+ for (i=tp->inlist->count; i<n; i++) {
+ tp->inlist->arg[i] = ST(nxtarglist)->arg[i];
+ }
+ tp->inlist->count = n;
+ }
+ while (n--) { /* inargs: */
+ int32 tfound_m, treqd_m = 0L;
+ s = tp->inlist->arg[n];
+ if (n >= nreqd) { /* det type required */
+ switch (types[nreqd-1]) {
+ case 'M':
+ case 'N':
+ case 'Z':
+ case 'y':
+ case 'z': treqd = types[nreqd-1]; break;
+ default: treqd = 'i'; /* (indef in-type) */
}
}
- csound->DebugMsg(csound, "xincod = %d", tp->xincod);
- /* IV - Sep 1 2002: added 'X' type, and xoutcod */
- tp->xoutcod_str = tp->xoutcod = 0;
- /* IV - Oct 24 2002: moved argument parsing for xin here */
- n = outcnt;
- nreqd = -1;
- if (!strcmp(ep->opname, "xin")) {
- if (UNLIKELY(!ST(opcodblk)))
- synterr(csound, Str("xin is allowed only in user defined opcodes"));
- else if (UNLIKELY((int) ST(opcodflg) & 1))
- synterr(csound,
- Str("multiple uses of xin in the same opcode definition"));
- else {
- /* IV - Oct 24 2002: opcodeInfo always points to the most recently */
- /* defined user opcode (or named instrument) structure; in this */
- /* case, it is the current opcode definition (not very elegant, */
- /* but works) */
- char *c = csound->opcodeInfo->intypes;
- int i = 0;
- ST(opcodflg) |= (int16) 1;
- nreqd = csound->opcodeInfo->inchns;
- /* replace opcode if needed */
- if (nreqd > OPCODENUMOUTS_LOW) {
- if (nreqd > OPCODENUMOUTS_HIGH)
- isopcod(csound, ".xin256");
- else
- isopcod(csound, ".xin64");
- ST(linopcod) = ST(opcod);
- ST(linopnum) = ST(opnum);
- tp->opcod = strsav_string(csound, ST(linopcod));
- tp->opnum = ST(linopnum);
- ep = csound->opcodlst + tp->opnum;
- csound->DebugMsg(csound, Str("modified opcod: %s"), ST(opcod));
- }
- while (c[i]) {
- switch (c[i]) {
- case 'a': xtypes[i] = c[i]; break;
- case 'f': xtypes[i] = c[i]; break;
- case 'k':
- case 'P':
- case 'K': xtypes[i] = 'k'; break;
- case 'S': xtypes[i] = 'S'; break;
- default: xtypes[i] = 'i';
+ else treqd = types[n]; /* or given) */
+ if (treqd == 'l') { /* if arg takes lbl */
+ csound->DebugMsg(csound, "treqd = l");
+ lblrequest(csound, s); /* req a search */
+ continue; /* chk it later */
+ }
+ tfound = argtyp(csound, s); /* else get arg type */
+ /* IV - Oct 31 2002 */
+
+ tfound_m = ST(typemask_tabl)[(unsigned char) tfound];
+ if (UNLIKELY(!(tfound_m & (ARGTYP_c|ARGTYP_p)) &&
+ !ST(lgprevdef) && *s != '"')) {
+ synterr(csound, Str("input arg '%s' used before defined \n"), s);
+ }
+ csound->DebugMsg(csound, "treqd %c, tfound %c", treqd, tfound);
+ if (tfound == 'a' && n < 31) /* JMC added for FOG */
+ /* 4 for FOF, 8 for FOG; expanded to 15 */
+ tp->xincod |= (1 << n);
+ if (tfound == 'S' && n < 31)
+ tp->xincod_str |= (1 << n);
+ /* IV - Oct 31 2002: simplified code */
+ if (!(tfound_m & ST(typemask_tabl_in)[(unsigned char) treqd])) {
+ /* check for exceptional types */
+ switch (treqd) {
+ case 'I':
+ treqd_m = ARGTYP_i;
+ break;
+ case 'Z': /* indef kakaka ... */
+ if (UNLIKELY(!(tfound_m & (n & 1 ? ARGTYP_a : ARGTYP_ipcrk))))
+ intyperr(csound, n, tfound, treqd);
+ break;
+ case 'x':
+ treqd_m = ARGTYP_ipcr; /* also allows i-rate */
+ case 's': /* a- or k-rate */
+ treqd_m |= ARGTYP_a | ARGTYP_k;
+ if (tfound_m & treqd_m) {
+ if (tfound == 'a' && tp->outlist != ST(nullist)) {
+ int32 outyp_m = /* ??? */
+ ST(typemask_tabl)[(unsigned char) argtyp(csound,
+ tp->outlist->arg[0])];
+ if (outyp_m & (ARGTYP_a | ARGTYP_w | ARGTYP_f)) break;
}
- i++;
+ else
+ break;
}
- xtypes[i] = '\0';
- types = &xtypes[0];
+ default:
+ intyperr(csound, n, tfound, treqd);
+ break;
}
}
- if (nreqd < 0) /* for other opcodes */
- nreqd = strlen(types = ep->outypes);
- if (UNLIKELY((n != nreqd) && /* IV - Oct 24 2002: end of new code */
- !(n > 0 && n < nreqd &&
- (types[n] == 'm' || types[n] == 'z' || types[n] == 'I' ||
- types[n] == 'X' || types[n] == 'N' || types[n] == 'F')))) {
- synterr(csound, Str("illegal no of output args"));
- if (n > nreqd)
- n = nreqd;
- }
- while (n--) { /* outargs: */
- int32 tfound_m; /* IV - Oct 31 2002 */
- s = tp->outlist->arg[n];
- treqd = types[n];
- tfound = argtyp(csound, s); /* found */
- /* IV - Oct 31 2002 */
- tfound_m = ST(typemask_tabl)[(unsigned char) tfound];
- /* IV - Sep 1 2002: xoutcod is the same as xincod for input */
- if (tfound == 'a' && n < 31)
- tp->xoutcod |= (1 << n);
- if (tfound == 'S' && n < 31)
- tp->xoutcod_str |= (1 << n);
- csound->DebugMsg(csound, "treqd %c, tfound %c", treqd, tfound);
- if (tfound_m & ARGTYP_w)
- if (UNLIKELY(ST(lgprevdef))) {
- synterr(csound, Str("output name previously used, "
- "type '%c' must be uniquely defined"), tfound);
+ }
+ csound->DebugMsg(csound, "xincod = %d", tp->xincod);
+ /* IV - Sep 1 2002: added 'X' type, and xoutcod */
+ tp->xoutcod_str = tp->xoutcod = 0;
+ /* IV - Oct 24 2002: moved argument parsing for xin here */
+ n = outcnt;
+ nreqd = -1;
+ if (!strcmp(ep->opname, "xin")) {
+ if (UNLIKELY(!ST(opcodblk)))
+ synterr(csound, Str("xin is allowed only in user defined opcodes"));
+ else if (UNLIKELY((int) ST(opcodflg) & 1))
+ synterr(csound,
+ Str("multiple uses of xin in the same opcode definition"));
+ else {
+ /* IV - Oct 24 2002: opcodeInfo always points to the most recently */
+ /* defined user opcode (or named instrument) structure; in this */
+ /* case, it is the current opcode definition (not very elegant, */
+ /* but works) */
+ char *c = csound->opcodeInfo->intypes;
+ int i = 0;
+ ST(opcodflg) |= (int16) 1;
+ nreqd = csound->opcodeInfo->inchns;
+ /* replace opcode if needed */
+ if (nreqd > OPCODENUMOUTS_LOW) {
+ if (nreqd > OPCODENUMOUTS_HIGH)
+ isopcod(csound, ".xin256");
+ else
+ isopcod(csound, ".xin64");
+ ST(linopcod) = ST(opcod);
+ ST(linopnum) = ST(opnum);
+ tp->opcod = strsav_string(csound, ST(linopcod));
+ tp->opnum = ST(linopnum);
+ ep = csound->opcodlst + tp->opnum;
+ csound->DebugMsg(csound, Str("modified opcod: %s"), ST(opcod));
+ }
+ while (c[i]) {
+ switch (c[i]) {
+ case 'a': xtypes[i] = c[i]; break;
+ case 'f': xtypes[i] = c[i]; break;
+ case 'k':
+ case 'P':
+ case 'K': xtypes[i] = 'k'; break;
+ case 'S': xtypes[i] = 'S'; break;
+ default: xtypes[i] = 'i';
}
- /* IV - Oct 31 2002: simplified code */
- if (UNLIKELY(!(tfound_m & ST(typemask_tabl_out)[(unsigned char) treqd]))) {
- synterr(csound, Str("output arg '%s' illegal type"), s);
+ i++;
}
+ xtypes[i] = '\0';
+ types = &xtypes[0];
}
- if (incnt) {
- if (ep->intypes[0] != 'l') /* intype defined by 1st inarg */
- tp->intype = argtyp(csound, tp->inlist->arg[0]);
- else tp->intype = 'l'; /* (unless label) */
+ }
+ if (nreqd < 0) /* for other opcodes */
+ nreqd = strlen(types = ep->outypes);
+ if (UNLIKELY((n != nreqd) && /* IV - Oct 24 2002: end of new code */
+ !(n > 0 && n < nreqd &&
+ (types[n] == 'm' || types[n] == 'z' || types[n] == 'I' ||
+ types[n] == 'X' || types[n] == 'N' || types[n] == 'F')))) {
+ synterr(csound, Str("illegal no of output args"));
+ if (n > nreqd)
+ n = nreqd;
+ }
+ while (n--) { /* outargs: */
+ int32 tfound_m; /* IV - Oct 31 2002 */
+ s = tp->outlist->arg[n];
+ treqd = types[n];
+ tfound = argtyp(csound, s); /* found */
+ /* IV - Oct 31 2002 */
+ tfound_m = ST(typemask_tabl)[(unsigned char) tfound];
+ /* IV - Sep 1 2002: xoutcod is the same as xincod for input */
+ if (tfound == 'a' && n < 31)
+ tp->xoutcod |= (1 << n);
+ if (tfound == 'S' && n < 31)
+ tp->xoutcod_str |= (1 << n);
+ csound->DebugMsg(csound, "treqd %c, tfound %c", treqd, tfound);
+ if (tfound_m & ARGTYP_w)
+ if (UNLIKELY(ST(lgprevdef))) {
+ synterr(csound, Str("output name previously used, "
+ "type '%c' must be uniquely defined"), tfound);
+ }
+ /* IV - Oct 31 2002: simplified code */
+ if (UNLIKELY(!(tfound_m & ST(typemask_tabl_out)[(unsigned char) treqd]))) {
+ synterr(csound, Str("output arg '%s' illegal type"), s);
}
- if (outcnt) /* pftype defined by outarg */
- tp->pftype = tfound;
- else tp->pftype = tp->intype; /* else by 1st inarg */
}
- return(tp); /* return the text blk */
+ if (incnt) {
+ if (ep->intypes[0] != 'l') /* intype defined by 1st inarg */
+ tp->intype = argtyp(csound, tp->inlist->arg[0]);
+ else tp->intype = 'l'; /* (unless label) */
+ }
+ if (outcnt) /* pftype defined by outarg */
+ tp->pftype = tfound;
+ else tp->pftype = tp->intype; /* else by 1st inarg */
+ }
+ return(tp); /* return the text blk */
}
static void intyperr(CSOUND *csound, int n, char tfound, char expect)
{
- char *s = ST(grpsav)[ST(opgrpno) + n];
- char t[10];
-
- switch (tfound) {
- case 'w':
- case 'f':
- case 'a':
- case 'k':
- case 'i':
- case 'P':
- case 'p': t[0] = tfound;
- t[1] = '\0';
- break;
- case 'r':
- case 'c': strcpy(t,"const");
- break;
- case 'S': strcpy(t,"string");
- break;
- case 'b':
- case 'B': strcpy(t,"boolean");
- break;
- case '?': strcpy(t,"?");
- break;
- }
- synterr(csound, Str("input arg '%s' of type %s "
- "not allowed when expecting %c"), s, t, expect);
+ char *s = ST(grpsav)[ST(opgrpno) + n];
+ char t[10];
+
+ switch (tfound) {
+ case 'w':
+ case 'f':
+ case 'a':
+ case 'k':
+ case 'i':
+ case 'P':
+ case 'p': t[0] = tfound;
+ t[1] = '\0';
+ break;
+ case 'r':
+ case 'c': strcpy(t,"const");
+ break;
+ case 'S': strcpy(t,"string");
+ break;
+ case 'b':
+ case 'B': strcpy(t,"boolean");
+ break;
+ case '?': strcpy(t,"?");
+ break;
+ }
+ synterr(csound, Str("input arg '%s' of type %s "
+ "not allowed when expecting %c"), s, t, expect);
}
static int isopcod(CSOUND *csound, char *s)
{ /* tst a string against opcodlst */
- int n; /* & set op carriers if matched */
+ int n; /* & set op carriers if matched */
- if (!(n = find_opcode(csound, s))) return (0); /* IV - Oct 31 2002 */
- ST(opnum) = n; /* on corr match, */
- ST(opcod) = csound->opcodlst[n].opname; /* set op carriers */
+ if (!(n = find_opcode(csound, s))) return (0); /* IV - Oct 31 2002 */
+ ST(opnum) = n; /* on corr match, */
+ ST(opcod) = csound->opcodlst[n].opname; /* set op carriers */
- return(1); /* & report success */
+ return(1); /* & report success */
}
static int pnum(char *s) /* check a char string for pnum format */
- /* and return the pnum ( >= 0 ) */
+/* and return the pnum ( >= 0 ) */
{ /* else return -1 */
- int n;
+ int n;
- if (*s == 'p' || *s == 'P')
- if (sscanf(++s, "%d", &n))
- return(n);
- return(-1);
+ if (*s == 'p' || *s == 'P')
+ if (sscanf(++s, "%d", &n))
+ return(n);
+ return(-1);
}
char argtyp(CSOUND *csound, char *s)
{ /* find arg type: d, w, a, k, i, c, p, r, S, B, b */
- char c = *s; /* also set lgprevdef if !c && !p && !S */
-
- /*trap this before parsing for a number! */
- /* two situations: defined at header level: 0dbfs = 1.0
- * and returned as a value: idb = 0dbfs
- */
- if ((c >= '1' && c <= '9') || c == '.' || c == '-' || c == '+' ||
- (c == '0' && strcmp(s, "0dbfs") != 0))
- return('c'); /* const */
- if (pnum(s) >= 0)
- return('p'); /* pnum */
- if (c == '"')
- return('S'); /* quoted String */
- ST(lgprevdef) = lgexist(csound, s); /* (lgprev) */
- if (strcmp(s,"sr") == 0 || strcmp(s,"kr") == 0 ||
- strcmp(s,"0dbfs") == 0 || strcmp(s,"nchnls_i") == 0 ||
- strcmp(s,"ksmps") == 0 || strcmp(s,"nchnls") == 0)
- return('r'); /* rsvd */
- if (c == 'w') /* N.B. w NOT YET #TYPE OR GLOBAL */
- return(c);
- if (c == '#')
- c = *(++s);
- if (c == 'g')
- c = *(++s);
- if (strchr("akiBbfS", c) != NULL)
- return(c);
- else return('?');
+ char c = *s; /* also set lgprevdef if !c && !p && !S */
+
+
+ /*trap this before parsing for a number! */
+ /* two situations: defined at header level: 0dbfs = 1.0
+ * and returned as a value: idb = 0dbfs
+ */
+ if ((c >= '1' && c <= '9') || c == '.' || c == '-' || c == '+' ||
+ (c == '0' && strcmp(s, "0dbfs") != 0))
+ return('c'); /* const */
+ if (pnum(s) >= 0)
+ return('p'); /* pnum */
+ if (c == '"')
+ return('S'); /* quoted String */
+ ST(lgprevdef) = lgexist(csound, s); /* (lgprev) */
+ if (strcmp(s,"sr") == 0 || strcmp(s,"kr") == 0 ||
+ strcmp(s,"0dbfs") == 0 || strcmp(s,"nchnls_i") == 0 ||
+ strcmp(s,"ksmps") == 0 || strcmp(s,"nchnls") == 0)
+ return('r'); /* rsvd */
+ if (c == 'w') /* N.B. w NOT YET #TYPE OR GLOBAL */
+ return(c);
+ if (c == '#')
+ c = *(++s);
+ if (c == 'g')
+ c = *(++s);
+ if (strchr("akiBbfS", c) != NULL)
+ return(c);
+ else return('?');
}
static void lblclear(CSOUND *csound)
{
- ST(lblcnt) = 0;
+ ST(lblcnt) = 0;
}
static void lblrequest(CSOUND *csound, char *s)
{
- int req;
-
- for (req=0; req<ST(lblcnt); req++)
- if (strcmp(ST(lblreq)[req].label,s) == 0)
- return;
- if (++ST(lblcnt) >= ST(lblmax)) {
- LBLREQ *tmp;
- ST(lblmax) += LBLMAX;
- tmp = mrealloc(csound, ST(lblreq), ST(lblmax) * sizeof(LBLREQ));
- ST(lblreq) = tmp;
- }
- ST(lblreq)[req].reqline = ST(curline);
- ST(lblreq)[req].label =s;
+ int req;
+
+ for (req=0; req<ST(lblcnt); req++)
+ if (strcmp(ST(lblreq)[req].label,s) == 0)
+ return;
+ if (++ST(lblcnt) >= ST(lblmax)) {
+ LBLREQ *tmp;
+ ST(lblmax) += LBLMAX;
+ tmp = mrealloc(csound, ST(lblreq), ST(lblmax) * sizeof(LBLREQ));
+ ST(lblreq) = tmp;
+ }
+ ST(lblreq)[req].reqline = ST(curline);
+ ST(lblreq)[req].label =s;
}
static void lblfound(CSOUND *csound, char *s)
{
- int req;
-
- for (req=0; req<ST(lblcnt); req++ )
- if (strcmp(ST(lblreq)[req].label,s) == 0) {
- if (UNLIKELY(ST(lblreq)[req].reqline == 0))
- synterr(csound, Str("duplicate label"));
- goto noprob;
- }
- if (++ST(lblcnt) >= ST(lblmax)) {
- LBLREQ *tmp;
- ST(lblmax) += LBLMAX;
- tmp = mrealloc(csound, ST(lblreq), ST(lblmax) * sizeof(LBLREQ));
- ST(lblreq) = tmp;
- }
- ST(lblreq)[req].label = s;
-noprob:
- ST(lblreq)[req].reqline = 0;
+ int req;
+
+ for (req=0; req<ST(lblcnt); req++ )
+ if (strcmp(ST(lblreq)[req].label,s) == 0) {
+ if (UNLIKELY(ST(lblreq)[req].reqline == 0))
+ synterr(csound, Str("duplicate label"));
+ goto noprob;
+ }
+ if (++ST(lblcnt) >= ST(lblmax)) {
+ LBLREQ *tmp;
+ ST(lblmax) += LBLMAX;
+ tmp = mrealloc(csound, ST(lblreq), ST(lblmax) * sizeof(LBLREQ));
+ ST(lblreq) = tmp;
+ }
+ ST(lblreq)[req].label = s;
+ noprob:
+ ST(lblreq)[req].reqline = 0;
}
static void lblchk(CSOUND *csound)
{
- int req;
- int n;
-
- for (req=0; req<ST(lblcnt); req++ )
- if (UNLIKELY((n = ST(lblreq)[req].reqline))) {
- char *s;
- csound->Message(csound, Str("error line %d. unknown label:\n"), n);
- s = ST(linadr)[n];
- do {
- csound->Message(csound, "%c", *s);
- } while (*s++ != '\n');
- csound->synterrcnt++;
- }
+ int req;
+ int n;
+
+ for (req=0; req<ST(lblcnt); req++ )
+ if (UNLIKELY((n = ST(lblreq)[req].reqline))) {
+ char *s;
+ csound->Message(csound, Str("error line %d. unknown label:\n"), n);
+ s = ST(linadr)[n];
+ do {
+ csound->Message(csound, "%c", *s);
+ } while (*s++ != '\n');
+ csound->synterrcnt++;
+ }
}
void synterr(CSOUND *csound, const char *s, ...)
{
- va_list args;
- char *cp;
- int c;
+ va_list args;
- csound->MessageS(csound, CSOUNDMSG_ERROR, Str("error: "));
- va_start(args, s);
- csound->MessageV(csound, CSOUNDMSG_ERROR, s, args);
- va_end(args);
+ csound->MessageS(csound, CSOUNDMSG_ERROR, Str("error: "));
+ va_start(args, s);
+ csound->MessageV(csound, CSOUNDMSG_ERROR, s, args);
+ va_end(args);
- /* FIXME - Removed temporarily for debugging
- * This function may not be necessary at all in the end if some of this is
- * done in the parser
- */
- if (ST(linadr) != NULL && (cp = ST(linadr)[ST(curline)]) != NULL
+ /* FIXME - Removed temporarily for debugging
+ * This function may not be necessary at all in the end if some of this is
+ * done in the parser
+ */
+#ifdef never
+ if (ST(linadr) != NULL && (cp = ST(linadr)[ST(curline)]) != NULL
#if defined(ENABLE_NEW_PARSER)
- && !csound->oparms->newParser
+ && !csound->oparms->newParser
#endif
- ) {
- csound->MessageS(csound, CSOUNDMSG_ERROR,
- Str(", line %d:\n"), CURLINE);
- do {
- csound->MessageS(csound, CSOUNDMSG_ERROR, "%c", (c = *cp++));
- } while (c != '\n');
- }
- else {
- csound->MessageS(csound, CSOUNDMSG_ERROR, "\n");
- }
- csound->synterrcnt++;
+ ) {
+ csound->MessageS(csound, CSOUNDMSG_ERROR,
+ Str(", line %d:\n"), CURLINE);
+ do {
+ csound->MessageS(csound, CSOUNDMSG_ERROR, "%c", (c = *cp++));
+ } while (c != '\n');
+ }
+ else {
+ csound->MessageS(csound, CSOUNDMSG_ERROR, "\n");
+ }
+#endif
+ csound->synterrcnt++;
}
static void synterrp(CSOUND *csound, const char *errp, char *s)
{
- char *cp;
-
- synterr(csound, s);
- cp = ST(linadr)[ST(curline)];
- while (cp < errp) {
- int ch = *cp++;
- if (ch != '\t') ch = ' ';
- csound->MessageS(csound, CSOUNDMSG_ERROR, "%c", ch);
- }
- csound->ErrorMsg(csound, "^");
+ char *cp;
+
+ synterr(csound, s);
+ cp = ST(linadr)[ST(curline)];
+ while (cp < errp) {
+ int ch = *cp++;
+ if (ch != '\t') ch = ' ';
+ csound->MessageS(csound, CSOUNDMSG_ERROR, "%c", ch);
+ }
+ csound->ErrorMsg(csound, "^");
}
static void lexerr(CSOUND *csound, const char *s, ...)
{
- IN_STACK *curr = ST(str);
- va_list args;
-
- va_start(args, s);
- csound->ErrMsgV(csound, Str("error: "), s, args);
- va_end(args);
-
- while (curr != ST(inputs)) {
- if (curr->string) {
- MACRO *mm = ST(macros);
- while (mm != curr->mac) mm = mm->next;
- csound->ErrorMsg(csound, Str("called from line %d of macro %s"),
- curr->line, mm->name);
- }
- else {
- csound->ErrorMsg(csound, Str("in line %d of file input %s"),
- curr->line, curr->body);
- }
- curr--;
+ IN_STACK *curr = ST(str);
+ va_list args;
+
+ va_start(args, s);
+ csound->ErrMsgV(csound, Str("error: "), s, args);
+ va_end(args);
+
+ while (curr != ST(inputs)) {
+ if (curr->string) {
+ MACRO *mm = ST(macros);
+ while (mm != curr->mac) mm = mm->next;
+ csound->ErrorMsg(csound, Str("called from line %d of macro %s"),
+ curr->line, mm->name);
}
- csound->LongJmp(csound, 1);
+ else {
+ csound->ErrorMsg(csound, Str("in line %d of file input %s"),
+ curr->line, curr->body);
+ }
+ curr--;
+ }
+ csound->LongJmp(csound, 1);
}
static void printgroups(CSOUND *csound, int grpcnt)
{ /* debugging aid (onto stdout) */
- char c, *cp = ST(group)[0];
-
- csound->Message(csound, "groups:\t");
- while (grpcnt--) {
- csound->Message(csound, "%s ", cp);
- while ((c = *cp++));
- }
- csound->Message(csound, "\n");
+ char c, *cp = ST(group)[0];
+
+ csound->Message(csound, "groups:\t");
+ while (grpcnt--) {
+ csound->Message(csound, "%s ", cp);
+ while ((c = *cp++));
+ }
+ csound->Message(csound, "\n");
}
diff --git a/Engine/rdscor.c b/Engine/rdscor.c
index e211434..4c4542e 100644
--- a/Engine/rdscor.c
+++ b/Engine/rdscor.c
@@ -1,7 +1,7 @@
/*
rdscor.c:
- Copyright (C) 1991, 1997 Barry Vercoe, John ffitch
+ Copyright (C) 2011 John ffitch (after Barry Vercoe)
This file is part of Csound.
@@ -21,23 +21,24 @@
02111-1307 USA
*/
-#include "csoundCore.h" /* RDSCOR.C */
+#include "csoundCore.h" /* RDSCORSTR.C */
+#include "corfile.h"
static void dumpline(CSOUND *);
static void flushline(CSOUND *csound) /* flush scorefile to next newline */
{
int c;
- FILE *xx = csound->scfp;
- while ((c = getc(xx)) != EOF && c != '\n')
+ while ((c = corfile_getc(csound->scstr)) != '0' && c != '\n')
;
}
static int scanflt(CSOUND *csound, MYFLT *pfld)
{ /* read a MYFLT from scorefile; return 1 if OK, else 0 */
int c;
- FILE *xx = csound->scfp;
- while ((c = getc(xx)) == ' ' || c == '\t') /* skip leading white space */
+
+ while ((c = corfile_getc(csound->scstr)) == ' ' ||
+ c == '\t') /* skip leading white space */
;
if (c == ';') { /* Comments terminate line */
flushline(csound);
@@ -48,8 +49,8 @@ static int scanflt(CSOUND *csound, MYFLT *pfld)
if (csound->scnt0==0) {
if ((sstrp = csound->sstrbuf) == NULL)
sstrp = csound->sstrbuf = mmalloc(csound, SSTRSIZ);
- while ((c = getc(xx)) != '"') {
- if (c=='\\') c = getc(xx);
+ while ((c = corfile_getc(csound->scstr)) != '"') {
+ if (c=='\\') c = corfile_getc(csound->scstr);
*sstrp++ = c;
}
*sstrp++ = '\0';
@@ -61,8 +62,8 @@ static int scanflt(CSOUND *csound, MYFLT *pfld)
printf("***Entering dubious code; n=%d\n", n);
if ((sstrp = csound->sstrbuf0[n]) == NULL)
sstrp = csound->sstrbuf0[n] = mmalloc(csound, SSTRSIZ);
- while ((c = getc(xx)) != '"') {
- if (c=='\\') c = getc(xx);
+ while ((c = corfile_getc(csound->scstr)) != '"') {
+ if (c=='\\') c = corfile_getc(csound->scstr);
*sstrp++ = c;
}
*sstrp++ = '\0';
@@ -74,48 +75,48 @@ static int scanflt(CSOUND *csound, MYFLT *pfld)
return(1);
}
if (UNLIKELY(!((c>='0' && c<='9') || c=='+' || c=='-' || c=='.'))) {
- ungetc(c, csound->scfp);
+ corfile_ungetc(csound->scstr);
csound->Message(csound,
Str("ERROR: illegal character %c(%.2x) in scoreline: "),
c, c);
dumpline(csound);
return(0);
}
- ungetc(c, csound->scfp);
-#ifdef USE_DOUBLE
- fscanf(csound->scfp, "%lf", pfld);
-#else
- fscanf(csound->scfp, "%f", pfld);
-#endif
+ corfile_ungetc(csound->scstr);
+ {
+ MYFLT ans = corfile_get_flt(csound->scstr);
+ *pfld = ans;
+ //printf("%s(%d):%lf %lf\n", __FILE__, __LINE__, ans, *pfld);
+ }
return(1);
}
static void dumpline(CSOUND *csound) /* print the line while flushing it */
{
int c;
- FILE *xx = csound->scfp;
- while ((c = getc(xx)) != EOF && c != '\n') {
+ while ((c = corfile_getc(csound->scstr)) != '\0' && c != '\n') {
csound->Message(csound, "%c", c);
}
csound->Message(csound, Str("\n\tremainder of line flushed\n"));
}
int rdscor(CSOUND *csound, EVTBLK *e) /* read next score-line from scorefile */
- /* & maintain section warped status */
-{ /* presumes good format if warped */
+ /* & maintain section warped status */
+{ /* presumes good format if warped */
MYFLT *pp, *plim;
int c;
- FILE *xx = csound->scfp;
- if (xx == NULL || feof(xx)) { /* if no concurrent scorefile */
+ if (csound->scstr == NULL ||
+ csound->scstr->body[0] == '\0') { /* if no concurrent scorefile */
+ csound->Message(csound, "THIS SHOULD NOT HAPPEN -- CONTACT jpff");
e->opcod = 'f'; /* return an 'f 0 3600' */
e->p[1] = FL(0.0);
- e->p[2] = FL(3600.0);
- e->p2orig = FL(3600.0);
+ e->p[2] = FL(INF);
+ e->p2orig = FL(INF);
e->pcnt = 2;
return(1);
}
- while ((c = getc(xx)) != EOF) { /* else read the real score */
+ while ((c = corfile_getc(csound->scstr)) != '\0') { /* else read the real score */
csound->scnt0 = 0;
switch (c) {
case ' ':
@@ -135,12 +136,13 @@ int rdscor(CSOUND *csound, EVTBLK *e) /* read next score-line from scorefile */
pp = &e->p[0];
plim = &e->p[PMAX]; /* caution, irregular format */
while (1) {
- while ((c = getc(xx))==' ' || c=='\t'); /* eat whitespace */
+ while ((c = corfile_getc(csound->scstr))==' ' ||
+ c=='\t'); /* eat whitespace */
if (c == ';') { flushline(csound); break; } /* comments? skip */
- if (c == '\n' || c == EOF) break; /* newline? done */
- ungetc(c, csound->scfp); /* pfld: back up */
+ if (c == '\n' || c == '\0') break; /* newline? done */
+ corfile_ungetc(csound->scstr); /* pfld: back up */
if (!scanflt(csound, ++pp)) break; /* & read value */
- if (UNLIKELY(pp >= plim)) {
+ if (UNLIKELY(pp >= plim)) {
csound->Message(csound, Str("ERROR: too many pfields: "));
dumpline(csound);
break;
@@ -161,12 +163,18 @@ int rdscor(CSOUND *csound, EVTBLK *e) /* read next score-line from scorefile */
e->c.extra = NULL;
pp = &e->p[0];
plim = &e->p[PMAX];
- if (getc(xx) != '\n' && scanflt(csound, ++pp)) /* p1 */
- if (getc(xx) != '\n' && scanflt(csound, &e->p2orig)) /* p2 orig */
- if (getc(xx) != '\n' && scanflt(csound, ++pp)) /* p2 warp */
- if (getc(xx) != '\n' && scanflt(csound, &e->p3orig)) /* p3 */
- if (getc(xx) != '\n' && scanflt(csound, ++pp)) /* p3 warp */
- while (getc(xx) != '\n' && scanflt(csound, ++pp))
+ if (corfile_getc(csound->scstr) != '\n' &&
+ scanflt(csound, ++pp)) /* p1 */
+ if (corfile_getc(csound->scstr) != '\n' &&
+ scanflt(csound, &e->p2orig)) /* p2 orig */
+ if (corfile_getc(csound->scstr) != '\n' &&
+ scanflt(csound, ++pp)) /* p2 warp */
+ if (corfile_getc(csound->scstr) != '\n' &&
+ scanflt(csound, &e->p3orig)) /* p3 */
+ if (corfile_getc(csound->scstr) != '\n' &&
+ scanflt(csound, ++pp)) /* p3 warp */
+ while (corfile_getc(csound->scstr) != '\n' &&
+ scanflt(csound, ++pp))
/* p4.... */
if (pp >= plim) {
MYFLT *q;
@@ -177,20 +185,21 @@ int rdscor(CSOUND *csound, EVTBLK *e) /* read next score-line from scorefile */
e->c.extra = (MYFLT*)realloc(e->c.extra,sizeof(MYFLT)*PMAX);
e->c.extra[0] = PMAX-2;
q = e->c.extra;
- while ((getc(xx) != '\n') && (scanflt(csound, &q[c++]))) {
+ while ((corfile_getc(csound->scstr) != '\n') &&
+ (scanflt(csound, &q[c++]))) {
if (c > (int) e->c.extra[0]) {
fprintf(stderr, "and more extra p-fields [%d](%d)%d\n",
c, (int) e->c.extra[0],
sizeof(MYFLT)*((int)e->c.extra[0]+PMAX) );
q = e->c.extra =
(MYFLT *)realloc(e->c.extra,
- sizeof(MYFLT)*((int) e->c.extra[0]+PMAX));
+ sizeof(MYFLT)*((int) e->c.extra[0]+PMAX));
e->c.extra[0] = e->c.extra[0]+PMAX-1;
}
}
e->c.extra[0] = c;
/* flushline(csound); */
- goto setp;
+ goto setp;
}
setp:
if (!csound->csoundIsScorePending_ && e->opcod == 'i') {
@@ -209,6 +218,7 @@ int rdscor(CSOUND *csound, EVTBLK *e) /* read next score-line from scorefile */
return 1;
}
}
+ corfile_rm(&(csound->scstr));
return 0;
}
diff --git a/Engine/scsort.c b/Engine/scsort.c
index 07bc2cc..8713b4d 100644
--- a/Engine/scsort.c
+++ b/Engine/scsort.c
@@ -22,8 +22,9 @@
*/
#include "csoundCore.h" /* SCSORT.C */
+#include "corfile.h"
-extern void sort(CSOUND*), twarp(CSOUND*), swrite(CSOUND*);
+extern void sort(CSOUND*), twarp(CSOUND*), swrite(CSOUND*), swritestr(CSOUND*);
extern void sfree(CSOUND *csound);
extern void sread_init(CSOUND *csound);
extern int sread(CSOUND *csound);
@@ -48,3 +49,26 @@ void scsort(CSOUND *csound, FILE *scin, FILE *scout)
sfree(csound); /* return all memory used */
}
+extern void sread_initstr(CSOUND *);
+void scsortstr(CSOUND *csound, CORFIL *scin)
+{
+ int n;
+ int m = 0;
+
+ csound->scoreout = NULL;
+ csound->scstr = corfile_create_w();
+ csound->sectcnt = 0;
+ sread_initstr(csound);
+
+ while ((n = sread(csound)) > 0) {
+ sort(csound);
+ twarp(csound);
+ swritestr(csound);
+ m++;
+ }
+ if (m==0) corfile_puts("f0 2147483647.0\ne\n", csound->scstr);
+ else corfile_puts("e\n", csound->scstr);
+ corfile_flush(csound->scstr);
+ sfree(csound); /* return all memory used */
+}
+
diff --git a/Engine/sort.c b/Engine/sort.c
index f78c39a..5ad1121 100644
--- a/Engine/sort.c
+++ b/Engine/sort.c
@@ -57,7 +57,7 @@ Adapted from Delphi implementation of Dijkstra's algorithm.
#define FALSE (0)
#endif
-inline int ordering(SRTBLK *a, SRTBLK *b)
+static inline int ordering(SRTBLK *a, SRTBLK *b)
{
char cb = b->text[0], ca = a->text[0];
MYFLT tmp;
@@ -66,7 +66,6 @@ inline int ordering(SRTBLK *a, SRTBLK *b)
if (ca=='w') return TRUE;
if (cb=='w') return FALSE;
if (cb=='t') return FALSE;
- /* printf("SORT: ap2=%f, bp2=%f tmp=%f\n", a->newp2, b->newp2); */
tmp = b->newp2 - a->newp2;
if (tmp < 0) return FALSE;
if (tmp > 0) return TRUE;
@@ -253,11 +252,12 @@ void sort(CSOUND *csound)
case 'a':
bp->preced = 'e';
break;
+ case 'e':
+ // bp->newp2 ;
case 'q':
case 'w':
case 't':
case 's':
- case 'e':
bp->preced = 'a';
break;
default:
diff --git a/Engine/sread.c b/Engine/sread.c
index c407a25..e75dc5a 100644
--- a/Engine/sread.c
+++ b/Engine/sread.c
@@ -25,6 +25,7 @@
#include <math.h> /* for fabs() */
#include <ctype.h>
#include "namedins.h" /* IV - Oct 31 2002 */
+#include "corfile.h"
#define MEMSIZ 16384 /* size of memory requests from system */
#define MARGIN 4096 /* minimum remaining before new request */
@@ -32,34 +33,33 @@
#define RPTDEPTH 40 /* size of repeat_n arrays (39 loop levels) */
#define MARGS (3)
+//#define MACDEBUG (1)
typedef struct MACRO { /* To store active macros */
char *name; /* Use is by name */
int acnt; /* Count of arguments */
- char *body; /* The text of the macro */
+ CORFIL *body; /* The text of the macro */
struct MACRO *next; /* Chain of active macros */
int margs; /* ammount of space for args */
char *arg[MARGS]; /* With these arguments */
} MACRO;
typedef struct in_stack_s { /* Stack of active inputs */
- int16 string; /* Flag to say if string or file */
- int16 is_marked_repeat; /* 1 if this input created by 'n' statement */
- int16 args; /* Argument count for macro */
- char *body; /* String */
- FILE *file; /* File case only */
- void *fd;
- MACRO *mac;
- int line;
- int unget_cnt;
- char unget_buf[128];
+ // int16 string; /* Flag to say if string or file */
+ int16 is_marked_repeat; /* 1 if this input created by 'n' stmnt */
+ int16 args; /* Argument count for macro */
+ CORFIL *cf; /* In core file */
+ // FILE *file; /* File case only */
+ void *fd; /* for closing stream */
+ MACRO *mac;
+ int line;
} IN_STACK;
typedef struct marked_sections {
- char *name;
- int32 posit;
- int line;
- char *file;
+ char *name;
+ int32 posit;
+ int line;
+ char *file;
} MARKED_SECTIONS;
typedef struct {
@@ -84,14 +84,14 @@ typedef struct {
MARKED_SECTIONS names[30], *current_name;
char repeat_name_n[RPTDEPTH][NAMELEN];
int repeat_cnt_n[RPTDEPTH];
- int32 repeat_point_n[RPTDEPTH];
+ int32 repeat_point_n[RPTDEPTH];
int repeat_inc_n /* = 1 */;
MACRO *repeat_mm_n[RPTDEPTH];
int repeat_index;
/* Variable for repeat sections */
char repeat_name[NAMELEN];
int repeat_cnt;
- int32 repeat_point;
+ int32 repeat_point;
int repeat_inc /* = 1 */;
MACRO *repeat_mm;
} SREAD_GLOBALS;
@@ -212,40 +212,28 @@ static void print_input_backtrace(CSOUND *csound, int needLFs,
do {
if (curr == ST(inputs)) lastinput = 1;
- if (curr->string) { /* macro input */
- if (UNLIKELY(!curr->mac || !curr->mac->name))
- csoundDie(csound, Str("Internal error in print_input_backtrace()"));
- switch(lastsource) {
- case 0: m = Str(" included from line %d of macro %s%s"); break;
- case 1: m = Str(" called from line %d of macro %s%s"); break;
- default:
- case 2: m = Str(" in line %d of macro %s%s"); break;
- }
- msgfunc(csound, m, (lastsource == 0 ? curr->line - 1 : curr->line),
- curr->mac->name, lf); /* #include is one line before */
+ if (UNLIKELY(!curr->mac || !curr->mac->name))
+ csoundDie(csound, Str("Internal error in print_input_backtrace()"));
+ switch(lastsource) {
+ case 0: m = Str(" included from line %d of macro %s%s"); break;
+ case 1: m = Str(" called from line %d of macro %s%s"); break;
+ default:
+ case 2: m = Str(" in line %d of macro %s%s"); break;
}
- else { /* file input */
- switch(lastsource) {
- case 0: m = Str(" included from line %d of file input %s%s"); break;
- case 1: m = Str(" called from line %d of file input %s%s"); break;
- default:
- case 2: m = Str(" in line %d of file input %s%s"); break;
- }
- if (lastinput && csound->oparms->useCsdLineCounts && csound->csdname) {
- /* print name & line # of CSD instead of temp sco */
- msgfunc(csound, m,
- (lastsource == 0 ? csound->scoLineOffset + curr->line - 1 :
- csound->scoLineOffset + curr->line), csound->csdname, lf);
- }
- else {
- msgfunc(csound, m, (lastsource == 0 ? curr->line - 1 : curr->line),
- curr->body, lf); /* #include is one line before */
- }
+ msgfunc(csound, m, (lastsource == 0 ? curr->line - 1 : curr->line),
+ curr->mac->name, lf); /* #include is one line before */
+ if (lastinput && csound->oparms->useCsdLineCounts && csound->csdname) {
+ /* print name & line # of CSD instead of temp sco */
+ msgfunc(csound, m,
+ (lastsource == 0 ? csound->scoLineOffset + curr->line - 1 :
+ csound->scoLineOffset + curr->line), csound->csdname, lf);
}
- lastsource = curr->string;
- curr--;
- }
- while (!lastinput);
+ else {
+ msgfunc(csound, m, (lastsource == 0 ? curr->line - 1 : curr->line),
+ corfile_tell(curr->cf), lf); /* #include is one line before */
+ }
+ } while (!lastsource);
+ curr--;
return;
}
@@ -278,9 +266,13 @@ static int undefine_score_macro(CSOUND *csound, const char *name)
if (strcmp(name, ST(macros)->name) == 0) {
mm = ST(macros)->next;
+ if (strcmp(ST(macros)->name, "[") != 0)
+ corfile_rm(&(ST(macros)->body));
mfree(csound, ST(macros)->name);
- mfree(csound, ST(macros)->body);
- for (i = 0; i < ST(macros)->acnt; i++)
+ #ifdef MACDEBUG
+ printf("%s(%d): corfile is %p\n", __FILE__, __LINE__, ST(macros)->body);
+ #endif
+ for (i = 0; i < ST(macros)->acnt; i++)
mfree(csound, ST(macros)->arg[i]);
mfree(csound, ST(macros));
ST(macros) = mm;
@@ -296,7 +288,7 @@ static int undefine_score_macro(CSOUND *csound, const char *name)
}
}
mfree(csound, nn->name);
- mfree(csound, nn->body);
+ corfile_rm(&nn->body);
for (i = 0; i < nn->acnt; i++)
mfree(csound, nn->arg[i]);
mm->next = nn->next;
@@ -316,44 +308,36 @@ static inline int isNameChar(int c, int pos)
static inline void ungetscochar(CSOUND *csound, int c)
{
- if (LIKELY(ST(str)->unget_cnt < 128))
- ST(str)->unget_buf[ST(str)->unget_cnt++] = (char) c;
- else
- csoundDie(csound, Str("ungetscochar(): buffer overflow"));
+ corfile_ungetc(ST(str)->cf);
+ ST(str)->cf->body[(ST(str)->cf)->p] = (char)c;
}
static int getscochar(CSOUND *csound, int expand)
{ /* Read a score character, expanding macros if flag set */
int c;
top:
- if (ST(str)->unget_cnt) {
- c = (int) ((unsigned char) ST(str)->unget_buf[--ST(str)->unget_cnt]);
- if (c == '\n')
- ST(linepos) = -1;
- return c;
- }
- else if (ST(str)->string) {
- c = *ST(str)->body++;
- if (c == '\0') {
- ST(pop) += ST(str)->args;
- ST(str)--; ST(input_cnt)--;
- goto top;
+ c = corfile_getc(ST(str)->cf);
+ if (c == EOF) {
+ if (ST(str) == &ST(inputs)[0]) {
+ corfile_ungetc(ST(str)->cf); /* to ensure repeated EOF */
+ return EOF;
}
- }
- else {
- c = getc(ST(str)->file);
- if (UNLIKELY(c == EOF)) {
- if (ST(str) == &ST(inputs)[0])
- return EOF;
- if (ST(str)->fd != NULL) {
- csound->FileClose(csound, ST(str)->fd); ST(str)->fd = NULL;
- }
- ST(str)--; ST(input_cnt)--; goto top;
+ if (ST(str)->mac == 0) {
+ corfile_rm(&(ST(str)->cf)); /* No longer needed */
}
+ else {
+ corfile_rewind(ST(str)->cf);
+ }
+ ST(pop) += ST(str)->args;
+ ST(str)--; ST(input_cnt)--;
+ goto top;
}
+#ifdef MACDEBUG
+ printf("%s(%d): character = %c(%.2d)\n", __FILE__, __LINE__, c, c);
+#endif
if (c == '\r') { /* can only occur in files, and not in macros */
- if ((c = getc(ST(str)->file)) != '\n')
- ungetc(c, ST(str)->file); /* For macintosh */
+ if ((c = corfile_getc(ST(str)->cf)) != '\n')
+ corfile_ungetc(ST(str)->cf);
c = '\n';
}
if (c == '\n') {
@@ -419,21 +403,21 @@ static int getscochar(CSOUND *csound, int expand)
char term = (j == mm->acnt - 1 ? ')' : '\'');
char trm1 = (j == mm->acnt - 1 ? ')' : '#');
MACRO* nn = (MACRO*) mmalloc(csound, sizeof(MACRO));
- unsigned int size = 100;
nn->name = mmalloc(csound, strlen(mm->arg[j])+1);
strcpy(nn->name, mm->arg[j]);
#ifdef MACDEBUG
csound->Message(csound,"defining argument %s ", nn->name);
#endif
- i = 0;
- nn->body = (char*) mmalloc(csound, 100);
+ nn->body = corfile_create_w();
+#ifdef MACDEBUG
+ printf("%s(%d): creating\n", __FILE__, __LINE__, nn->body);
+#endif
while ((c = getscochar(csound, 1))!= term && c != trm1) {
- nn->body[i++] = c;
- if (i>= size) nn->body = mrealloc(csound, nn->body, size += 100);
+ corfile_putc(c, nn->body);
}
- nn->body[i]='\0';
+ corfile_rewind(nn->body);
#ifdef MACDEBUG
- csound->Message(csound,"as...#%s#\n", nn->body);
+ csound->Message(csound,"as...#%s#\n", corfile_body(nn->body));
#endif
nn->acnt = 0; /* No arguments for arguments */
nn->next = ST(macros);
@@ -449,12 +433,13 @@ static int getscochar(CSOUND *csound, int expand)
ST(str) = &ST(inputs)[old]; /* In case it moves */
}
ST(str)++;
- ST(str)->string = 1; ST(str)->body = mm->body; ST(str)->args = mm->acnt;
+ ST(str)->fd = ST(str)->cf = mm->body; ST(str)->args = mm->acnt;
ST(str)->is_marked_repeat = 0;
- ST(str)->mac = mm; ST(str)->line = 1; ST(str)->unget_cnt = 0;
+ ST(str)->mac = mm; ST(str)->line = 1;
#ifdef MACDEBUG
csound->Message(csound,
- "Macro %s definded as >>%s<<\n", mm->name, mm->body);
+ "Macro %s definded as >>%s<<\n",
+ mm->name, corfile_body(mm->body));
#endif
ST(ingappop) = 1;
goto top;
@@ -616,8 +601,10 @@ static int getscochar(CSOUND *csound, int expand)
MACRO *nn = (MACRO*) mmalloc(csound, sizeof(MACRO));
nn->name = mmalloc(csound, 2);
strcpy(nn->name, "[");
- nn->body = (char*) mmalloc(csound, strlen(buffer) + 1);
- strcpy(nn->body, buffer);
+ nn->body = corfile_create_r(buffer);
+#ifdef MACDEBUG
+ printf("%s(%d): creating arg %p\n", __FILE__, __LINE__, nn->body);
+#endif
nn->acnt = 0; /* No arguments for arguments */
nn->next = ST(macros);
ST(macros) = nn;
@@ -630,11 +617,12 @@ static int getscochar(CSOUND *csound, int expand)
ST(str) = &ST(inputs)[old]; /* In case it moves */
}
ST(str)++;
- ST(str)->string = 1; ST(str)->body = nn->body; ST(str)->args = 0;
+ ST(str)->cf = nn->body; ST(str)->args = 0;
+ ST(str)->fd = NULL;
ST(str)->is_marked_repeat = 0;
- ST(str)->mac = NULL; ST(str)->line = 1; ST(str)->unget_cnt = 0;
+ ST(str)->mac = NULL; ST(str)->line = 1;
#ifdef MACDEBUG
- csound->Message(csound,"[] defined as >>%s<<\n", nn->body);
+ csound->Message(csound,"[] defined as >>%s<<\n", corfile_body(nn->body));
#endif
ST(ingappop) = 1;
goto top;
@@ -654,13 +642,13 @@ static int nested_repeat(CSOUND *csound) /* gab A9*/
c[j]=' ';
c[j+1]='\0';
}
- if (csound->oparms->msglevel)
+ if (csound->oparms->msglevel & TIMEMSG)
csound->Message(csound,Str("%s Nested LOOP terminated, level:%d\n"),
c,ST(repeat_index));
}
else {
- if (csound->oparms->msglevel)
+ if (csound->oparms->msglevel & TIMEMSG)
csound->Message(csound,Str("External LOOP terminated, level:%d\n"),
ST(repeat_index));
}
@@ -669,10 +657,34 @@ static int nested_repeat(CSOUND *csound) /* gab A9*/
}
else {
int i;
- fseek(ST(str)->file, ST(repeat_point_n)[ST(repeat_index)], SEEK_SET);
- sscanf(ST(repeat_mm_n)[ST(repeat_index)]->body, "%d", &i);
+ corfile_set(ST(str)->cf,ST(repeat_point_n)[ST(repeat_index)]);
+ sscanf(corfile_current(ST(repeat_mm_n)[ST(repeat_index)]->body),
+ "%d", &i);
+#ifdef MACDEBUG
+ printf("%s(%d) reset point to %d\n", __FILE__, __LINE__,
+ ST(repeat_point_n)[ST(repeat_index)], i);
+ printf("%s(%d) corefile: %s %d %d\n", __FILE__, __LINE__,
+ ST(repeat_mm_n)[ST(repeat_index)]->body->body,
+ ST(repeat_mm_n)[ST(repeat_index)]->body->p,
+ ST(repeat_mm_n)[ST(repeat_index)]->body->len);
+#endif
i = i + ST(repeat_inc_n);
- sprintf(ST(repeat_mm_n)[ST(repeat_index)]->body, "%d", i);
+ {
+ char buffer[128];
+ sprintf(buffer, "%d", i);
+#ifdef MACDEBUG
+ printf("%s(%d) new i = %s\n", __FILE__, __LINE__, buffer);
+#endif
+ corfile_reset(ST(repeat_mm_n)[ST(repeat_index)]->body);
+ corfile_puts(buffer, ST(repeat_mm_n)[ST(repeat_index)]->body);
+ corfile_rewind(ST(repeat_mm_n)[ST(repeat_index)]->body);
+#ifdef MACDEBUG
+ printf("%s(%d) corefile: %s %d %d\n", __FILE__, __LINE__,
+ ST(repeat_mm_n)[ST(repeat_index)]->body->body,
+ ST(repeat_mm_n)[ST(repeat_index)]->body->p,
+ ST(repeat_mm_n)[ST(repeat_index)]->body->len);
+#endif
+ }
if (ST(repeat_index) > 1) {
char c[41];
int j;
@@ -680,12 +692,12 @@ static int nested_repeat(CSOUND *csound) /* gab A9*/
c[j]=' ';
c[j+1]='\0';
}
- if (csound->oparms->msglevel)
+ if (csound->oparms->msglevel & TIMEMSG)
csound->Message(csound,Str("%s Nested LOOP section (%d) Level:%d\n"),
c, i, ST(repeat_index));
}
else {
- if (csound->oparms->msglevel)
+ if (csound->oparms->msglevel & TIMEMSG)
csound->Message(csound,Str(" External LOOP section (%d) Level:%d\n"),
i, ST(repeat_index));
}
@@ -699,20 +711,25 @@ static int do_repeat(CSOUND *csound)
ST(repeat_cnt)--;
if (ST(repeat_cnt) == 0) { /* Expired */
/* Delete macro (assuming there is any) */
- if (csound->oparms->msglevel)
+ if (csound->oparms->msglevel & TIMEMSG)
csound->Message(csound, Str("Loop terminated\n"));
if (ST(repeat_name)[0] != '\0')
undefine_score_macro(csound, ST(repeat_name));
ST(repeat_name)[0] = '\0';
}
else {
- int i;
- fseek(ST(str)->file, ST(repeat_point), SEEK_SET);
+ int i, n;
+ corfile_set(ST(str)->cf, ST(repeat_point));
if (ST(repeat_name)[0] != '\0') {
- sscanf(ST(repeat_mm)->body, "%d", &i);
+ sscanf(corfile_current(ST(repeat_mm)->body), "%d%n", &i, &n);
i = i + ST(repeat_inc);
- sprintf(ST(repeat_mm)->body, "%d", i);
- if (csound->oparms->msglevel)
+ corfile_seek(ST(repeat_mm)->body, n, SEEK_CUR);
+ {
+ char buffer[128];
+ sprintf(buffer, "%d", i);
+ corfile_puts(buffer, ST(repeat_mm)->body);
+ }
+ if (csound->oparms->msglevel & TIMEMSG)
csound->Message(csound, Str("Repeat section (%d)\n"), i);
}
else
@@ -762,15 +779,19 @@ static void init_smacros(CSOUND *csound, NAMES *nn)
mm->acnt = 0;
if (*p != '\0')
p++;
- mm->body = (char*) mmalloc(csound, strlen(p) + 1);
- strcpy(mm->body, p);
+ mm->body = corfile_create_r(p);
+#ifdef MACDEBUG
+ printf("%s(%d): init %s %p\n", __FILE__, __LINE__, mm->name, mm->body);
+#endif
nn = nn->next;
}
mm = (MACRO*) mcalloc(csound, sizeof(MACRO));
mm->name = (char*)mmalloc(csound,4);
strcpy(mm->name, "INF");
- mm->body = (char*)mmalloc(csound,14);
- strcpy(mm->body, "2147483647.0");
+ mm->body = corfile_create_r("2147483647.0");
+#ifdef MACDEBUG
+ printf("%s(%d): INF %p\n", __FILE__, __LINE__, mm->body);
+#endif
mm->next = ST(macros);
ST(macros) = mm;
}
@@ -782,11 +803,24 @@ void sread_init(CSOUND *csound)
ST(input_size) = 20;
ST(input_cnt) = 0;
ST(str) = ST(inputs);
- ST(str)->file = csound->scorein;
ST(str)->fd = NULL;
- ST(str)->string = 0; ST(str)->body = csound->scorename;
+ ST(str)->cf = csound->scstr;
ST(str)->is_marked_repeat = 0;
- ST(str)->line = 1; ST(str)->unget_cnt = 0; ST(str)->mac = NULL;
+ ST(str)->line = 1; ST(str)->mac = NULL;
+ init_smacros(csound, csound->smacros);
+}
+
+void sread_initstr(CSOUND *csound)
+{
+ sread_alloc_globals(csound);
+ ST(inputs) = (IN_STACK*) mmalloc(csound, 20 * sizeof(IN_STACK));
+ ST(input_size) = 20;
+ ST(input_cnt) = 0;
+ ST(str) = ST(inputs);
+ ST(str)->fd = NULL;
+ ST(str)->fd = ST(str)->cf = csound->scorestr;
+ ST(str)->is_marked_repeat = 0;
+ ST(str)->line = 1; ST(str)->mac = NULL;
init_smacros(csound, csound->smacros);
}
@@ -827,7 +861,7 @@ int sread(CSOUND *csound) /* called from main, reads from SCOREIN */
char *old_nxp = ST(nxp)-2;
getpfld(csound);
ST(clock_base) = stof(csound, ST(sp));
- if (csound->oparms->msglevel)
+ if (csound->oparms->msglevel & TIMEMSG)
csound->Message(csound,Str("Clockbase = %f\n"), ST(clock_base));
flushlin(csound);
ST(op) = getop(csound);
@@ -858,6 +892,7 @@ int sread(CSOUND *csound) /* called from main, reads from SCOREIN */
ST(bp)->p1val = ST(bp)->p2val = ST(bp)->newp2 = (MYFLT) tt;
}
}
+ else ST(bp)->p1val = ST(bp)->p2val = ST(bp)->newp2 = FL(0.0);
}
/* If we are in a repeat of a marked section ('n' statement),
we must pop those inputs before doing an 'r' repeat. */
@@ -893,71 +928,69 @@ int sread(CSOUND *csound) /* called from main, reads from SCOREIN */
case '{':
{
char *old_nxp = ST(nxp)-2;
+ int c, i;
ST(repeat_index)++;
if (UNLIKELY(ST(repeat_index) >= RPTDEPTH))
scorerr(csound, Str("Loops are nested too deeply"));
- if (UNLIKELY(ST(str)->string)) {
- /* seems too dangerous at this point to continue -- akozar */
- scorerr(csound, Str("Loop cannot start inside of a macro"));
- ST(repeat_index)--;
- flushlin(csound); /* Ignore rest of line */
+ ST(repeat_mm_n)[ST(repeat_index)] =
+ (MACRO*)mmalloc(csound, sizeof(MACRO));
+ ST(repeat_cnt_n)[ST(repeat_index)] = 0;
+ do {
+ c = getscochar(csound, 1);
+ } while (c==' '||c=='\t');
+ while (isdigit(c)) {
+ ST(repeat_cnt_n)[ST(repeat_index)] =
+ 10 * ST(repeat_cnt_n)[ST(repeat_index)] + c - '0';
+ c = getscochar(csound, 1);
}
- else {
- int c, i;
- ST(repeat_mm_n)[ST(repeat_index)] =
- (MACRO*)mmalloc(csound, sizeof(MACRO));
- ST(repeat_cnt_n)[ST(repeat_index)] = 0;
- do {
- c = getscochar(csound, 1);
- } while (c==' '||c=='\t');
- while (isdigit(c)) {
- ST(repeat_cnt_n)[ST(repeat_index)] =
- 10 * ST(repeat_cnt_n)[ST(repeat_index)] + c - '0';
- c = getscochar(csound, 1);
- }
- if (UNLIKELY(ST(repeat_cnt_n)[ST(repeat_index)] <= 0
- || (c != ' ' && c != '\t' && c != '\n')))
- scorerr(csound, Str("{: invalid repeat count"));
- if (ST(repeat_index) > 1) {
- char st[41];
- int j;
- for (j = 0; j < ST(repeat_index); j++) {
- st[j] = ' ';
- st[j+1] = '\0';
- }
- if (csound->oparms->msglevel)
- csound->Message(csound, Str("%s Nested LOOP=%d Level:%d\n"),
- st, ST(repeat_cnt_n)[ST(repeat_index)],
- ST(repeat_index));
- }
- else {
- if (csound->oparms->msglevel)
- csound->Message(csound, Str("External LOOP=%d Level:%d\n"),
- ST(repeat_cnt_n)[ST(repeat_index)],
- ST(repeat_index));
- }
- while (c == ' ' || c == '\t') {
- c = getscochar(csound, 1);
- }
- for (i = 0; isNameChar(c, i) && i < (NAMELEN-1); i++) {
- ST(repeat_name_n)[ST(repeat_index)][i] = c;
- c = getscochar(csound, 1);
+ if (UNLIKELY(ST(repeat_cnt_n)[ST(repeat_index)] <= 0
+ || (c != ' ' && c != '\t' && c != '\n')))
+ scorerr(csound, Str("{: invalid repeat count"));
+ if (ST(repeat_index) > 1) {
+ char st[41];
+ int j;
+ for (j = 0; j < ST(repeat_index); j++) {
+ st[j] = ' ';
+ st[j+1] = '\0';
}
- ST(repeat_name_n)[ST(repeat_index)][i] = '\0';
- ungetscochar(csound, c);
- /* Define macro for counter */
- ST(repeat_mm_n)[ST(repeat_index)]->name =
- mmalloc(csound, strlen(ST(repeat_name_n)[ST(repeat_index)])+1);
- strcpy(ST(repeat_mm_n)[ST(repeat_index)]->name,
- ST(repeat_name_n)[ST(repeat_index)]);
- ST(repeat_mm_n)[ST(repeat_index)]->acnt = 0;
- ST(repeat_mm_n)[ST(repeat_index)]->body = (char*)mmalloc(csound, 12);
- sprintf(ST(repeat_mm_n)[ST(repeat_index)]->body, "%d", 0);
- ST(repeat_mm_n)[ST(repeat_index)]->next = ST(macros);
- ST(macros) = ST(repeat_mm_n)[ST(repeat_index)];
- flushlin(csound); /* Ignore rest of line */
- ST(repeat_point_n)[ST(repeat_index)] = ftell(ST(str)->file);
+ if (csound->oparms->msglevel & TIMEMSG)
+ csound->Message(csound, Str("%s Nested LOOP=%d Level:%d\n"),
+ st, ST(repeat_cnt_n)[ST(repeat_index)],
+ ST(repeat_index));
+ }
+ else {
+ if (csound->oparms->msglevel & TIMEMSG)
+ csound->Message(csound, Str("External LOOP=%d Level:%d\n"),
+ ST(repeat_cnt_n)[ST(repeat_index)],
+ ST(repeat_index));
+ }
+ while (c == ' ' || c == '\t') {
+ c = getscochar(csound, 1);
+ }
+ for (i = 0; isNameChar(c, i) && i < (NAMELEN-1); i++) {
+ ST(repeat_name_n)[ST(repeat_index)][i] = c;
+ c = getscochar(csound, 1);
}
+ ST(repeat_name_n)[ST(repeat_index)][i] = '\0';
+ ungetscochar(csound, c);
+ /* Define macro for counter */
+ ST(repeat_mm_n)[ST(repeat_index)]->name =
+ mmalloc(csound, strlen(ST(repeat_name_n)[ST(repeat_index)])+1);
+ strcpy(ST(repeat_mm_n)[ST(repeat_index)]->name,
+ ST(repeat_name_n)[ST(repeat_index)]);
+ ST(repeat_mm_n)[ST(repeat_index)]->acnt = 0;
+ ST(repeat_mm_n)[ST(repeat_index)]->body = corfile_create_r("0");
+#ifdef MACDEBUG
+ printf("%s(%d): repeat %s zero %p\n", __FILE__, __LINE__,
+ ST(repeat_name_n)[ST(repeat_index)],
+ ST(repeat_mm_n)[ST(repeat_index)]->body);
+#endif
+ ST(repeat_mm_n)[ST(repeat_index)]->next = ST(macros);
+ ST(macros) = ST(repeat_mm_n)[ST(repeat_index)];
+ flushlin(csound); /* Ignore rest of line */
+ ST(repeat_point_n)[ST(repeat_index)] =
+ corfile_tell(ST(str)->cf);
+
/* { does not start a new section - akozar */
/* ST(clock_base) = FL(0.0);
ST(warp_factor) = FL(1.0);
@@ -1000,12 +1033,7 @@ int sread(CSOUND *csound) /* called from main, reads from SCOREIN */
*(ST(nxp)-2) = 's'; *ST(nxp)++ = LF;
if (ST(nxp) >= ST(memend)) /* if this memblk exhausted */
expand_nxp(csound);
- if (UNLIKELY(ST(str)->string)) {
- sreaderr(csound,Str("Repeat cannot start inside of a macro "
- "(ignored)"));
- flushlin(csound); /* Ignore rest of line */
- }
- else {
+ {
int c, i;
ST(repeat_cnt) = 0;
do {
@@ -1017,7 +1045,7 @@ int sread(CSOUND *csound) /* called from main, reads from SCOREIN */
}
if (UNLIKELY(ST(repeat_cnt) <= 0 || (c != ' ' && c != '\t' && c != '\n')))
scorerr(csound, Str("r: invalid repeat count"));
- if (csound->oparms->msglevel)
+ if (csound->oparms->msglevel & TIMEMSG)
csound->Message(csound, Str("Repeats=%d\n"), ST(repeat_cnt));
while (c == ' ' || c == '\t') {
c = getscochar(csound, 1);
@@ -1035,12 +1063,14 @@ int sread(CSOUND *csound) /* called from main, reads from SCOREIN */
ST(repeat_mm)->name = mmalloc(csound, strlen(ST(repeat_name)) + 1);
strcpy(ST(repeat_mm)->name, ST(repeat_name));
ST(repeat_mm)->acnt = 0;
- ST(repeat_mm)->body = (char*)mmalloc(csound, 8);
- sprintf(ST(repeat_mm)->body, "%d", 1); /* Set value */
+ ST(repeat_mm)->body = corfile_create_r("1");
+#ifdef MACDEBUG
+ printf("%s(%d): 1 %p\n", __FILE__, __LINE__,ST(repeat_mm)->body);
+#endif
ST(repeat_mm)->next = ST(macros);
ST(macros) = ST(repeat_mm);
}
- ST(repeat_point) = ftell(ST(str)->file);
+ ST(repeat_point) = corfile_tell(ST(str)->cf);
}
ST(clock_base) = FL(0.0);
ST(warp_factor) = FL(1.0);
@@ -1059,7 +1089,7 @@ int sread(CSOUND *csound) /* called from main, reads from SCOREIN */
}
buff[i] = '\0';
if (c != '\n' && c != EOF) flushlin(csound);
- if (csound->oparms->msglevel)
+ if (csound->oparms->msglevel & TIMEMSG)
csound->Message(csound,Str("Named section >>>%s<<<\n"), buff);
for (j=0; j<=ST(next_name); j++)
if (strcmp(buff, ST(names)[j].name)==0) break;
@@ -1069,22 +1099,15 @@ int sread(CSOUND *csound) /* called from main, reads from SCOREIN */
strcpy(ST(names)[j].name, buff);
}
else mfree(csound, ST(names)[j].file);
- if (!ST(str)->string) {
- ST(names)[ST(next_name)].posit = ftell(ST(str)->file);
- ST(names)[ST(next_name)].line = ST(str)->line;
- ST(names)[ST(next_name)].file = mmalloc(csound,
- strlen(ST(str)->body) + 1);
- strcpy(ST(names)[ST(next_name)].file, ST(str)->body);
- if (csound->oparms->msglevel)
- csound->Message(csound,Str("%d: File %s position %ld\n"),
- ST(next_name), ST(names)[ST(next_name)].file,
- ST(names)[ST(next_name)].posit);
- }
- else {
- csound->Message(csound,
- Str("Ignoring name %s not in file\n"), buff);
- ST(names)[j].name[0] = '\0'; /* Destroy name */
- }
+ ST(names)[ST(next_name)].posit = corfile_tell(ST(str)->cf);
+ ST(names)[ST(next_name)].line = ST(str)->line;
+ ST(names)[ST(next_name)].file =
+ mmalloc(csound, strlen(corfile_body(ST(str)->cf)) + 1);
+ strcpy(ST(names)[ST(next_name)].file, corfile_body(ST(str)->cf));
+ if (csound->oparms->msglevel & TIMEMSG)
+ csound->Message(csound,Str("%d: File %s position %ld\n"),
+ ST(next_name), ST(names)[ST(next_name)].file,
+ ST(names)[ST(next_name)].posit);
ST(op) = getop(csound);
ST(nxp) = old_nxp;
*ST(nxp)++ = ST(op); /* Undo this line */
@@ -1120,19 +1143,11 @@ int sread(CSOUND *csound) /* called from main, reads from SCOREIN */
ST(str) = &ST(inputs)[old]; /* In case it moves */
}
ST(str)++;
- ST(str)->string = 0;
ST(str)->is_marked_repeat = 1;
- ST(str)->fd = fopen_path(csound, &(ST(str)->file),
- ST(names)[i].file, NULL, NULL, 1);
- /* RWD 3:2000 */
- if (UNLIKELY(ST(str)->fd == NULL)) {
- csoundDie(csound, Str("cannot open input file %s"),
- ST(names)[i].file);
- }
- ST(str)->body = csound->GetFileName(ST(str)->fd);
+ ST(str)->cf = copy_to_corefile(csound, ST(names)[i].file, NULL, 1);
+// ST(str)->cf = corfile_create_r(csound->GetFileName(ST(str)->fd));
ST(str)->line = ST(names)[i].line;
- ST(str)->unget_cnt = 0;
- fseek(ST(str)->file, ST(names)[i].posit, SEEK_SET);
+ corfile_set(ST(str)->cf, ST(names)[i].posit);
}
ST(op) = getop(csound);
ST(nxp) = old_nxp;
@@ -1145,7 +1160,7 @@ int sread(CSOUND *csound) /* called from main, reads from SCOREIN */
char *old_nxp = ST(nxp)-2;
getpfld(csound);
ST(warp_factor) = stof(csound, ST(sp));
- if (csound->oparms->msglevel)
+ if (csound->oparms->msglevel & TIMEMSG)
csound->Message(csound, Str("Warp_factor = %f\n"), ST(warp_factor));
flushlin(csound);
ST(op) = getop(csound);
@@ -1471,12 +1486,10 @@ void sfree(CSOUND *csound) /* free all sorter allocated space */
ST(curmem) = NULL;
}
while (ST(str) != &ST(inputs)[0]) {
- if (!ST(str)->string && ST(str)->fd != NULL) {
- csound->FileClose(csound, ST(str)->fd);
- ST(str)->fd = NULL;
- }
+ corfile_rm(&(ST(str)->cf));
ST(str)--;
}
+ corfile_rm(&(csound->scorestr));
}
static void flushlin(CSOUND *csound)
@@ -1551,7 +1564,6 @@ static int sget1(CSOUND *csound) /* get first non-white, non-comment char */
while (isspace((c = getscochar(csound, 1))));
if (c == 'd') {
int arg = 0;
- int size = 100;
MACRO *mm = (MACRO*) mmalloc(csound, sizeof(MACRO));
mm->margs = MARGS;
if (UNLIKELY(!check_preproc_name(csound, "define"))) {
@@ -1568,7 +1580,7 @@ static int sget1(CSOUND *csound) /* get first non-white, non-comment char */
c = getscochar(csound, 1);
}
mname[i] = '\0';
- if (csound->oparms->msglevel)
+ if (csound->oparms->msglevel & TIMEMSG)
csound->Message(csound, Str("Macro definition for %s\n"), mname);
mm->name = mmalloc(csound, i + 1);
strcpy(mm->name, mname);
@@ -1599,26 +1611,25 @@ static int sget1(CSOUND *csound) /* get first non-white, non-comment char */
}
}
mm->acnt = arg;
- i = 0;
while ((c = getscochar(csound, 1)) != '#'); /* Skip to next # */
- mm->body = (char*)mmalloc(csound, 100);
+ mm->body = corfile_create_w();
+#ifdef MACDEBUG
+ printf("%s(%d): macro %s %p\n", __FILE__, __LINE__, mname, mm->body);
+#endif
while ((c = getscochar(csound, 0)) != '#') { /* Do not expand here!! */
- mm->body[i++] = c;
- if (UNLIKELY(i>= size))
- mm->body = mrealloc(csound, mm->body, size += 100);
+ corfile_putc(c, mm->body);
if (c=='\\') {
- mm->body[i++] = getscochar(csound, 0); /* Allow escaped # */
- if (UNLIKELY(i>= size))
- mm->body = mrealloc(csound, mm->body, size += 100);
+ corfile_putc(getscochar(csound, 0), mm->body); /* Allow escaped # */
}
if (c=='\n') ST(lincnt)++;
}
- mm->body[i]='\0';
+ corfile_rewind(mm->body);
mm->next = ST(macros);
ST(macros) = mm;
#ifdef MACDEBUG
csound->Message(csound, Str("Macro %s with %d arguments defined\n"),
mm->name, mm->acnt);
+ csound->Message(csound, "with body %s\n", corfile_body(mm->body));
#endif
c = ' ';
flushlin(csound);
@@ -1651,19 +1662,16 @@ static int sget1(CSOUND *csound) /* get first non-white, non-comment char */
ST(str) = &ST(inputs)[old]; /* In case it moves */
}
ST(str)++;
- ST(str)->string = 0;
ST(str)->is_marked_repeat = 0;
- ST(str)->fd = fopen_path(csound, &(ST(str)->file), mname,
- csound->scorename, "INCDIR", 1);
- if (ST(str)->fd == NULL) {
+ ST(str)->cf = copy_to_corefile(csound, mname, "INCDIR", 1);
+ if (ST(str)->cf == NULL) {
ST(str)--;
ST(str)->line--; /* include was one line earlier */
ST(linepos) = 0;
scorerr(csound, Str("Cannot open #include'd file %s"), mname);
}
else {
- ST(str)->body = csound->GetFileName(ST(str)->fd);
- ST(str)->line = 1; ST(str)->unget_cnt = 0;
+ ST(str)->line = 1;
free(mname);
goto srch;
}
@@ -1682,7 +1690,7 @@ static int sget1(CSOUND *csound) /* get first non-white, non-comment char */
c = getscochar(csound, 1);
}
mname[i] = '\0';
- if (csound->oparms->msglevel)
+ if (csound->oparms->msglevel & TIMEMSG)
csound->Message(csound, Str("macro %s undefined\n"), mname);
undefine_score_macro(csound, mname);
while (c != '\n' && c != EOF)
diff --git a/Engine/swritestr.c b/Engine/swritestr.c
new file mode 100644
index 0000000..3c3d46c
--- /dev/null
+++ b/Engine/swritestr.c
@@ -0,0 +1,542 @@
+/*
+ swritestr.c:
+
+ Copyright (C) 2011 John ffitch (after Barry Vercoe)
+
+ This file is part of Csound.
+
+ The Csound Library is free software; you can redistribute it
+ and/or modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ Csound is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with Csound; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA
+*/
+
+#include "csoundCore.h" /* SWRITESTR.C */
+#include <math.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include "corfile.h"
+
+static SRTBLK *nxtins(SRTBLK *), *prvins(SRTBLK *);
+static char *pfout(CSOUND *,SRTBLK *, char *, int, int);
+static char *nextp(CSOUND *,SRTBLK *, char *, int, int);
+static char *prevp(CSOUND *,SRTBLK *, char *, int, int);
+static char *ramp(CSOUND *,SRTBLK *, char *, int, int);
+static char *expramp(CSOUND *,SRTBLK *, char *, int, int);
+static char *randramp(CSOUND *,SRTBLK *, char *, int, int);
+static char *pfStr(CSOUND *,char *, int, int);
+static char *fpnum(CSOUND *,char *, int, int);
+
+static void fltout(CSOUND *csound, MYFLT n)
+{
+ char buffer[1024];
+ sprintf(buffer, "%.6f", n);
+ corfile_puts(buffer, csound->scstr);
+}
+
+void swritestr(CSOUND *csound)
+{
+ SRTBLK *bp;
+ char *p, c, isntAfunc;
+ int lincnt, pcnt=0;
+
+ if (UNLIKELY((bp = csound->frstbp) == NULL))
+ return;
+
+ lincnt = 0;
+ if ((c = bp->text[0]) != 'w'
+ && c != 's' && c != 'e') { /* if no warp stmnt but real data, */
+ /* create warp-format indicator */
+ corfile_puts("w 0 60\n", csound->scstr);
+ lincnt++;
+ }
+ nxtlin:
+ lincnt++; /* now for each line: */
+ p = bp->text;
+ c = *p++;
+ isntAfunc = 1;
+ switch (c) {
+ case 'f':
+ isntAfunc = 0;
+ case 'q':
+ case 'i':
+ case 'a':
+ corfile_putc(c, csound->scstr);
+ corfile_putc(*p++, csound->scstr);
+ while ((c = *p++) != SP && c != LF)
+ corfile_putc(c, csound->scstr); /* put p1 */
+ corfile_putc(c, csound->scstr);
+ if (c == LF)
+ break;
+ fltout(csound, bp->p2val); /* put p2val, */
+ corfile_putc(SP, csound->scstr);
+ fltout(csound, bp->newp2); /* newp2, */
+ while ((c = *p++) != SP && c != LF)
+ ;
+ corfile_putc(c, csound->scstr); /* and delim */
+ if (c == LF)
+ break;
+ if (isntAfunc) {
+ fltout(csound, bp->p3val); /* put p3val, */
+ corfile_putc(SP, csound->scstr);
+ fltout(csound, bp->newp3); /* newp3, */
+ while ((c = *p++) != SP && c != LF)
+ ;
+ }
+ else { /*make sure p3s (table length) are ints */
+ char temp[256];
+ sprintf(temp,"%d ",(int32)bp->p3val); /* put p3val */
+ fpnum(csound,temp, lincnt, pcnt);
+ corfile_putc(SP, csound->scstr);
+ sprintf(temp,"%d ",(int32)bp->newp3); /* put newp3 */
+ fpnum(csound,temp, lincnt, pcnt);
+ while ((c = *p++) != SP && c != LF)
+ ;
+ }
+ pcnt = 3;
+ while (c != LF) {
+ pcnt++;
+ corfile_putc(SP, csound->scstr);
+ p = pfout(csound,bp,p,lincnt,pcnt); /* now put each pfield */
+ c = *p++;
+ }
+ corfile_putc('\n', csound->scstr);
+ break;
+ case 's':
+ case 'e':
+ if (bp->pcnt > 0) {
+ char buffer[80];
+ sprintf(buffer, "f 0 %f %f\n", bp->p2val, bp->newp2);
+ corfile_puts(buffer, csound->scstr);
+ }
+ corfile_putc(c, csound->scstr);
+ corfile_putc(LF, csound->scstr);
+ break;
+ case 'w':
+ case 't':
+ corfile_putc(c, csound->scstr);
+ while ((c = *p++) != LF) /* put entire line */
+ corfile_putc(c, csound->scstr);
+ corfile_putc(LF, csound->scstr);
+ break;
+ default:
+ csound->Message(csound,
+ Str("swrite: unexpected opcode, section %d line %d\n"),
+ csound->sectcnt, lincnt);
+ break;
+ }
+ if ((bp = bp->nxtblk) != NULL)
+ goto nxtlin;
+}
+
+static char *pfout(CSOUND *csound, SRTBLK *bp, char *p,int lincnt, int pcnt)
+{
+ switch (*p) {
+ case 'n':
+ p = nextp(csound, bp,p, lincnt, pcnt);
+ break;
+ case 'p':
+ p = prevp(csound, bp,p, lincnt, pcnt);
+ break;
+ case '<':
+ case '>':
+ p = ramp(csound, bp,p, lincnt, pcnt);
+ break;
+ case '(':
+ case ')':
+ p = expramp(csound, bp, p, lincnt, pcnt);
+ break;
+ case '~':
+ p = randramp(csound, bp, p, lincnt, pcnt);
+ break;
+ case '"':
+ p = pfStr(csound, p, lincnt, pcnt);
+ break;
+ default:
+ p = fpnum(csound, p, lincnt, pcnt);
+ break;
+ }
+ return(p);
+}
+
+static SRTBLK *nxtins(SRTBLK *bp) /* find nxt note with same p1 */
+{
+ MYFLT p1;
+
+ p1 = bp->p1val;
+ while ((bp = bp->nxtblk) != NULL
+ && (bp->p1val != p1 || bp->text[0] != 'i'))
+ ;
+ return(bp);
+}
+
+static SRTBLK *prvins(SRTBLK *bp) /* find prv note with same p1 */
+{
+ MYFLT p1;
+
+ p1 = bp->p1val;
+ while ((bp = bp->prvblk) != NULL
+ && (bp->p1val != p1 || bp->text[0] != 'i'))
+ ;
+ return(bp);
+}
+
+static char *nextp(CSOUND *csound, SRTBLK *bp, char *p, int lincnt, int pcnt)
+{
+ char *q;
+ int n;
+
+ q = p;
+ p++; /* 1st char */
+ if (UNLIKELY(*p++ != 'p')) /* 2nd char */
+ goto error;
+ n = 999;
+ if (isdigit(*p))
+ n = *p++ - '0';
+ if (isdigit(*p)) /* n is np subscript no */
+ n = 10*n + (*p++ - '0');
+ if (UNLIKELY(*p != SP && *p != LF))
+ goto error;
+ if (LIKELY((bp = nxtins(bp)) != NULL /* for nxtins, same p1 */
+ && n <= bp->pcnt)) {
+ q = bp->text;
+ while (n--)
+ while (*q++ != SP) /* go find the pfield */
+ ;
+ pfout(csound,bp,q,lincnt,pcnt); /* and put it out */
+ }
+ else {
+ error:
+ csound->Message(csound,Str("swrite: output, sect%d line%d p%d makes"
+ " illegal reference to "),
+ csound->sectcnt,lincnt,pcnt);
+ while (q < p)
+ csound->Message(csound,"%c", *q++);
+ while (*p != SP && *p != LF)
+ csound->Message(csound,"%c", *p++);
+ csound->Message(csound,Str(" Zero substituted\n"));
+ corfile_putc('0', csound->scstr);
+ }
+ return(p);
+}
+
+static char *prevp(CSOUND *csound, SRTBLK *bp, char *p, int lincnt, int pcnt)
+{
+ char *q;
+ int n;
+
+ q = p;
+ p++; /* 1st char */
+ if (UNLIKELY(*p++ != 'p')) /* 2nd char */
+ goto error;
+ n = 999;
+ if (isdigit(*p))
+ n = *p++ - '0';
+ if (isdigit(*p)) /* n is np subscript no */
+ n = 10*n + (*p++ - '0');
+ if (UNLIKELY(*p != SP && *p != LF))
+ goto error;
+ if (LIKELY((bp = prvins(bp)) != NULL /* for prvins, same p1, */
+ && n <= bp->pcnt)) {
+ q = bp->text;
+ while (n--)
+ while (*q++ != SP) /* go find the pfield */
+ ;
+ pfout(csound,bp,q,lincnt,pcnt); /* and put it out */
+ }
+ else {
+ error:
+ csound->Message(csound,
+ Str("swrite: output, sect%d line%d p%d makes illegal reference to "),
+ csound->sectcnt,lincnt,pcnt);
+ while (q < p)
+ csound->Message(csound,"%c", *q++);
+ while (*p != SP && *p != LF)
+ csound->Message(csound,"%c", *p++);
+ csound->Message(csound,Str(" Zero substituted\n"));
+ corfile_putc('0', csound->scstr);
+ }
+ return(p);
+}
+
+static char *ramp(CSOUND *csound, SRTBLK *bp, char *p, int lincnt, int pcnt)
+ /* NB np's may reference a ramp but ramps must terminate in valid nums */
+{
+ char *q;
+ char *psav;
+ SRTBLK *prvbp, *nxtbp;
+ MYFLT pval, qval, rval, p2span;
+ extern MYFLT stof(CSOUND *, char *);
+ int pnum, n;
+
+ psav = ++p;
+ if (UNLIKELY(*psav != SP && *psav != LF))
+ goto error1;
+ pnum = 0;
+ q = bp->text;
+ while (q < p)
+ if (*q++ == SP)
+ pnum++;
+ prvbp = bp;
+ backup:
+ if (LIKELY((prvbp = prvins(prvbp)) != NULL)) {
+ p = prvbp->text;
+ n = pnum;
+ while (n--)
+ while (*p++ != SP)
+ ;
+ if (*p == '>' || *p == '<')
+ goto backup;
+ }
+ else goto error2;
+ nxtbp = bp;
+ forwrd:
+ if (LIKELY((nxtbp = nxtins(nxtbp)) != NULL)) {
+ q = nxtbp->text;
+ n = pnum;
+ while (n--)
+ while (*q++ != SP)
+ ;
+ if (*q == '>' || *q == '<')
+ goto forwrd;
+ }
+ else goto error2;
+ pval = stof(csound, p); /* the error msgs generated by stof */
+ qval = stof(csound, q); /* are misleading */
+ if (UNLIKELY((p2span = nxtbp->newp2 - prvbp->newp2) <= 0))
+ goto error2;
+ rval = (qval - pval) * (bp->newp2 - prvbp->newp2) / p2span + pval;
+ fltout(csound, rval);
+ return(psav);
+
+ error1:
+ csound->Message(csound,
+ Str("swrite: output, sect%d line%d p%d has illegal ramp symbol\n"),
+ csound->sectcnt,lincnt,pcnt);
+ goto put0;
+ error2:
+ csound->Message(csound, Str("swrite: output, sect%d line%d p%d ramp "
+ "has illegal forward or backward ref\n"),
+ csound->sectcnt, lincnt, pcnt);
+ put0:
+ corfile_putc('0', csound->scstr);
+ return(psav);
+}
+
+static char *expramp(CSOUND *csound, SRTBLK *bp, char *p, int lincnt, int pcnt)
+ /* NB np's may reference a ramp but ramps must terminate in valid nums */
+{
+ char *q;
+ char *psav;
+ SRTBLK *prvbp, *nxtbp;
+ MYFLT pval, qval, rval;
+ double p2span;
+ extern MYFLT stof(CSOUND *, char *);
+ int pnum, n;
+
+ psav = ++p;
+ if (UNLIKELY(*psav != SP && *psav != LF))
+ goto error1;
+ pnum = 0;
+ q = bp->text;
+ while (q < p)
+ if (*q++ == SP)
+ pnum++;
+ prvbp = bp;
+ backup:
+ if (LIKELY((prvbp = prvins(prvbp)) != NULL)) {
+ p = prvbp->text;
+ n = pnum;
+ while (n--)
+ while (*p++ != SP)
+ ;
+ if (*p == '}' || *p == '{' || *p == '(' || *p == ')')
+ goto backup;
+ }
+ else goto error2;
+ nxtbp = bp;
+ forwrd:
+ if (LIKELY((nxtbp = nxtins(nxtbp)) != NULL)) {
+ q = nxtbp->text;
+ n = pnum;
+ while (n--)
+ while (*q++ != SP)
+ ;
+ if (*q == '}' || *q == '{' || *q == '(' || *q == ')')
+ goto forwrd;
+ }
+ else goto error2;
+ pval = stof(csound, p); /* the error msgs generated by stof */
+ qval = stof(csound, q); /* are misleading */
+ p2span = (double)(nxtbp->newp2 - prvbp->newp2);
+/* printf("pval=%f qval=%f span = %f\n", pval, qval, p2span); */
+ rval = pval * (MYFLT)pow((double)(qval/pval),
+ (double)(bp->newp2 - prvbp->newp2) / p2span);
+/* printf("rval=%f bp->newp2=%f prvbp->newp2-%f\n",
+ rval, bp->newp2, prvbp->newp2); */
+ fltout(csound, rval);
+ return(psav);
+
+ error1:
+ csound->Message(csound,Str("swrite: output, sect%d line%d p%d has illegal"
+ " expramp symbol\n"),
+ csound->sectcnt,lincnt,pcnt);
+ goto put0;
+ error2:
+ csound->Message(csound, Str("swrite: output, sect%d line%d p%d expramp "
+ "has illegal forward or backward ref\n"),
+ csound->sectcnt, lincnt, pcnt);
+ put0:
+ corfile_putc('0', csound->scstr);
+ return(psav);
+}
+
+static char *randramp(CSOUND *csound,
+ SRTBLK *bp, char *p, int lincnt, int pcnt)
+ /* NB np's may reference a ramp but ramps must terminate in valid nums */
+{
+ char *q;
+ char *psav;
+ SRTBLK *prvbp, *nxtbp;
+ MYFLT pval, qval, rval;
+ extern MYFLT stof(CSOUND *, char *);
+ int pnum, n;
+
+ psav = ++p;
+ if (UNLIKELY(*psav != SP && *psav != LF))
+ goto error1;
+ pnum = 0;
+ q = bp->text;
+ while (q < p)
+ if (*q++ == SP)
+ pnum++;
+ prvbp = bp;
+ backup:
+ if (LIKELY((prvbp = prvins(prvbp)) != NULL)) {
+ p = prvbp->text;
+ n = pnum;
+ while (n--)
+ while (*p++ != SP)
+ ;
+ if (UNLIKELY(*p == '~'))
+ goto backup;
+ }
+ else goto error2;
+ nxtbp = bp;
+ forwrd:
+ if (LIKELY((nxtbp = nxtins(nxtbp)) != NULL)) {
+ q = nxtbp->text;
+ n = pnum;
+ while (n--)
+ while (*q++ != SP)
+ ;
+ if (*q == '~')
+ goto forwrd;
+ }
+ else goto error2;
+ pval = stof(csound, p); /* the error msgs generated by stof */
+ qval = stof(csound, q); /* are misleading */
+ rval = (MYFLT) (((double) (csound->Rand31(&(csound->randSeed1)) - 1)
+ / 2147483645.0) * ((double) qval - (double) pval)
+ + (double) pval);
+ fltout(csound, rval);
+ return(psav);
+
+ error1:
+ csound->Message(csound,Str("swrite: output, sect%d line%d p%d has illegal"
+ " expramp symbol\n"),
+ csound->sectcnt,lincnt,pcnt);
+ goto put0;
+ error2:
+ csound->Message(csound,Str("swrite: output, sect%d line%d p%d expramp has"
+ " illegal forward or backward ref\n"),
+ csound->sectcnt,lincnt,pcnt);
+ put0:
+ corfile_putc('0', csound->scstr);
+ return(psav);
+}
+
+static char *pfStr(CSOUND *csound, char *p, int lincnt, int pcnt)
+{ /* moves quoted ascii string to SCOREOUT file */
+ char *q = p; /* with no internal format chk */
+ corfile_putc(*p++, csound->scstr);
+ while (*p != '"')
+ corfile_putc(*p++, csound->scstr);
+ corfile_putc(*p++, csound->scstr);
+ if (UNLIKELY(*p != SP && *p != LF)) {
+ csound->Message(csound, Str("swrite: output, sect%d line%d p%d "
+ "has illegally terminated string "),
+ csound->sectcnt, lincnt, pcnt);
+ while (q < p)
+ csound->Message(csound,"%c", *q++);
+ while (*p != SP && *p != LF)
+ csound->Message(csound,"%c", *p++);
+ csound->Message(csound,"\n");
+ }
+ return(p);
+}
+
+static char *fpnum(CSOUND *csound,
+ char *p, int lincnt, int pcnt) /* moves ascii string */
+ /* to SCOREOUT file with fpnum format chk */
+{
+ char *q;
+ int dcnt;
+
+ q = p;
+ if (*p == '+')
+ p++;
+ if (*p == '-')
+ corfile_putc(*p++, csound->scstr);
+ dcnt = 0;
+ while (isdigit(*p)) {
+ // printf("*p=%c\n", *p);
+ corfile_putc(*p++, csound->scstr);
+ dcnt++;
+ }
+ // printf("%d:output: %s<<\n", __LINE__, csound->scstr);
+ if (*p == '.')
+ corfile_putc(*p++, csound->scstr);
+ while (isdigit(*p)) {
+ corfile_putc(*p++, csound->scstr);
+ dcnt++;
+ }
+ // printf("%d:output: %s<<\n", __LINE__, csound->scstr);
+ if (*p == 'E' || *p == 'e') { /* Allow exponential notation */
+ corfile_putc(*p++, csound->scstr);
+ dcnt++;
+ if (*p == '+' || *p == '-') {
+ corfile_putc(*p++, csound->scstr);
+ dcnt++;
+ }
+ while (isdigit(*p)) {
+ corfile_putc(*p++, csound->scstr);
+ dcnt++;
+ }
+ }
+ // printf("%d:output: %s<<\n", __LINE__, csound->scstr);
+ if (UNLIKELY((*p != SP && *p != LF) || !dcnt)) {
+ csound->Message(csound,Str("swrite: output, sect%d line%d p%d has "
+ "illegal number "),
+ csound->sectcnt,lincnt,pcnt);
+ while (q < p)
+ csound->Message(csound,"%c", *q++);
+ while (*p != SP && *p != LF)
+ csound->Message(csound,"%c", *p++);
+ csound->Message(csound,Str(" String truncated\n"));
+ if (!dcnt)
+ corfile_putc('0', csound->scstr);
+ }
+ return(p);
+}
+
diff --git a/Engine/symbtab.c b/Engine/symbtab.c
index aba492f..36b86fd 100644
--- a/Engine/symbtab.c
+++ b/Engine/symbtab.c
@@ -30,6 +30,7 @@
#include "csound_orcparse.h"
#include "insert.h"
#include "namedins.h"
+#include "interlocks.h"
#ifndef PARSER_DEBUG
#define PARSER_DEBUG (0)
@@ -41,6 +42,8 @@ ORCTOKEN** symbtab;
#define namedInstrFlag csound->parserNamedInstrFlag
ORCTOKEN *add_token(CSOUND *csound, char *s, int type);
+static ORCTOKEN *add_token_p(CSOUND *csound, char *s, int type, int val);
+extern int csound_orcget_lineno(void*);
int get_opcode_type(OENTRY *ep)
{
@@ -136,10 +139,10 @@ void init_symbtab(CSOUND *csound)
add_token(csound, "ampdbfs", T_FUNCTION);
add_token(csound, "dbamp", T_FUNCTION);
add_token(csound, "dbfsamp", T_FUNCTION);
- add_token(csound, "ftlen", T_FUNCTION);
- add_token(csound, "ftsr", T_FUNCTION);
- add_token(csound, "ftlptim", T_FUNCTION);
- add_token(csound, "ftchnls", T_FUNCTION);
+ add_token_p(csound, "ftlen", T_FUNCTION, TR);
+ add_token_p(csound, "ftsr", T_FUNCTION, TR);
+ add_token_p(csound, "ftlptim", T_FUNCTION, TR);
+ add_token_p(csound, "ftchnls", T_FUNCTION, TR);
add_token(csound, "i", T_FUNCTION);
add_token(csound, "k", T_FUNCTION);
add_token(csound, "cpsoct", T_FUNCTION);
@@ -147,27 +150,27 @@ void init_symbtab(CSOUND *csound)
add_token(csound, "cpspch", T_FUNCTION);
add_token(csound, "pchoct", T_FUNCTION);
add_token(csound, "octcps", T_FUNCTION);
- add_token(csound, "nsamp", T_FUNCTION);
+ add_token_p(csound, "nsamp", T_FUNCTION, TR);
add_token(csound, "powoftwo", T_FUNCTION);
add_token(csound, "logbtwo", T_FUNCTION);
add_token(csound, "a", T_FUNCTION);
- add_token(csound, "tb0", T_FUNCTION);
- add_token(csound, "tb1", T_FUNCTION);
- add_token(csound, "tb2", T_FUNCTION);
- add_token(csound, "tb3", T_FUNCTION);
- add_token(csound, "tb4", T_FUNCTION);
- add_token(csound, "tb5", T_FUNCTION);
- add_token(csound, "tb6", T_FUNCTION);
- add_token(csound, "tb7", T_FUNCTION);
- add_token(csound, "tb8", T_FUNCTION);
- add_token(csound, "tb9", T_FUNCTION);
- add_token(csound, "tb10", T_FUNCTION);
- add_token(csound, "tb11", T_FUNCTION);
- add_token(csound, "tb12", T_FUNCTION);
- add_token(csound, "tb13", T_FUNCTION);
- add_token(csound, "tb14", T_FUNCTION);
- add_token(csound, "tb15", T_FUNCTION);
- add_token(csound, "urd", T_FUNCTION);
+ add_token_p(csound, "tb0", T_FUNCTION, TR);
+ add_token_p(csound, "tb1", T_FUNCTION, TR);
+ add_token_p(csound, "tb2", T_FUNCTION, TR);
+ add_token_p(csound, "tb3", T_FUNCTION, TR);
+ add_token_p(csound, "tb4", T_FUNCTION, TR);
+ add_token_p(csound, "tb5", T_FUNCTION, TR);
+ add_token_p(csound, "tb6", T_FUNCTION, TR);
+ add_token_p(csound, "tb7", T_FUNCTION, TR);
+ add_token_p(csound, "tb8", T_FUNCTION, TR);
+ add_token_p(csound, "tb9", T_FUNCTION, TR);
+ add_token_p(csound, "tb10", T_FUNCTION, TR);
+ add_token_p(csound, "tb11", T_FUNCTION, TR);
+ add_token_p(csound, "tb12", T_FUNCTION, TR);
+ add_token_p(csound, "tb13", T_FUNCTION, TR);
+ add_token_p(csound, "tb14", T_FUNCTION, TR);
+ add_token_p(csound, "tb15", T_FUNCTION, TR);
+ add_token_p(csound, "urd", T_FUNCTION, TR);
add_token(csound, "not", T_FUNCTION);
add_token(csound, "cent", T_FUNCTION);
add_token(csound, "octave", T_FUNCTION);
@@ -175,6 +178,9 @@ void init_symbtab(CSOUND *csound)
add_token(csound, "cpsmidinn", T_FUNCTION);
add_token(csound, "octmidinn", T_FUNCTION);
add_token(csound, "pchmidinn", T_FUNCTION);
+ add_token(csound, "db", T_FUNCTION);
+ add_token(csound, "p", T_FUNCTION);
+ add_token(csound, "##error", T_FUNCTION);
}
static unsigned int hash(char *s)
@@ -216,12 +222,19 @@ ORCTOKEN *add_token(CSOUND *csound, char *s, int type)
return ans;
}
+static ORCTOKEN *add_token_p(CSOUND *csound, char *s, int type, int val)
+{
+ ORCTOKEN *ans = add_token(csound, s, type);
+ ans->value = val;
+ return ans;
+}
+
int isUDOArgList(char *s)
{
int len = strlen(s) - 1;
while (len >= 0) {
- if (UNLIKELY(strchr("aijkKopS0", s[len]) == NULL)) {
+ if (UNLIKELY(strchr("aijkftKopS0", s[len]) == NULL)) {
/* printf("Invalid char '%c' in '%s'", *p, s); */
return 0;
}
@@ -235,7 +248,7 @@ int isUDOAnsList(char *s)
int len = strlen(s) - 1;
while (len >= 0) {
- if (UNLIKELY(strchr("aikSK0", s[len]) == NULL)) {
+ if (UNLIKELY(strchr("aikftSK0", s[len]) == NULL)) {
return 0;
}
len--;
@@ -255,11 +268,11 @@ ORCTOKEN *lookup_token(CSOUND *csound, char *s, void *yyscanner)
if (udoflag == 0) {
if (isUDOAnsList(s)) {
- ans = new_token(csound, T_UDO_ANS);
+ ans = new_token(csound, UDO_ANS_TOKEN);
ans->lexeme = (char*)mmalloc(csound, 1+strlen(s));
strcpy(ans->lexeme, s);
- ans->next = symbtab[h];
- symbtab[h] = ans;
+// ans->next = symbtab[h];
+// symbtab[h] = ans;
//printf("Found UDO Answer List\n");
return ans;
}
@@ -267,11 +280,11 @@ ORCTOKEN *lookup_token(CSOUND *csound, char *s, void *yyscanner)
if (udoflag == 1) {
if (isUDOArgList(s)) {
- ans = new_token(csound, T_UDO_ARGS);
+ ans = new_token(csound, UDO_ARGS_TOKEN);
ans->lexeme = (char*)mmalloc(csound, 1+strlen(s));
strcpy(ans->lexeme, s);
- ans->next = symbtab[h];
- symbtab[h] = ans;
+// ans->next = symbtab[h];
+// symbtab[h] = ans;
//printf("Found UDO Arg List\n");
return ans;
}
@@ -282,27 +295,26 @@ ORCTOKEN *lookup_token(CSOUND *csound, char *s, void *yyscanner)
if (PARSER_DEBUG)
csound->Message(csound, "Looking up token for: %d: %d: %s : %s\n",
hash("reverb"), hash("a4"), s, a->lexeme);
- }
+ }
if (strcmp(a->lexeme, s)==0) {
ans = (ORCTOKEN*)mmalloc(csound, sizeof(ORCTOKEN));
memcpy(ans, a, sizeof(ORCTOKEN));
ans->next = NULL;
ans->lexeme = (char *)mmalloc(csound, strlen(a->lexeme) + 1);
strcpy(ans->lexeme, a->lexeme);
-
return ans;
}
a = a->next;
}
-
+
ans = new_token(csound, T_IDENT);
ans->lexeme = (char*)mmalloc(csound, 1+strlen(s));
strcpy(ans->lexeme, s);
//ans->next = symbtab[h];
- if (PARSER_DEBUG)
- csound->Message(csound, "NamedInstrFlag: %d\n", namedInstrFlag);
+ /* if (PARSER_DEBUG) */
+ /* csound->Message(csound, "NamedInstrFlag: %d\n", namedInstrFlag); */
if (udoflag == -2 || namedInstrFlag == 1) {
return ans;
@@ -353,6 +365,7 @@ ORCTOKEN *lookup_token(CSOUND *csound, char *s, void *yyscanner)
/* UDO code below was from otran, broken out and modified for new parser by
* SYY
*/
+/* VL -- I have made the modifications below to allow for f-sigs & t-sigs and on line 224 and 238*/
/* IV - Oct 12 2002: new function to parse arguments of opcode definitions */
static int parse_opcode_args(CSOUND *csound, OENTRY *opc)
@@ -360,13 +373,13 @@ static int parse_opcode_args(CSOUND *csound, OENTRY *opc)
OPCODINFO *inm = (OPCODINFO*) opc->useropinfo;
char *types, *otypes;
int i, i_incnt, a_incnt, k_incnt, i_outcnt, a_outcnt, k_outcnt, err;
- int S_incnt, S_outcnt;
+ int S_incnt, S_outcnt, f_outcnt, f_incnt, t_incnt, t_outcnt;
int16 *a_inlist, *k_inlist, *i_inlist, *a_outlist, *k_outlist, *i_outlist;
- int16 *S_inlist, *S_outlist;
-
+ int16 *S_inlist, *S_outlist, *f_inlist, *f_outlist, *t_inlist, *t_outlist;
+
/* count the number of arguments, and check types */
- i = i_incnt = S_incnt = a_incnt = k_incnt =
- i_outcnt = S_outcnt = a_outcnt = k_outcnt = err = 0;
+ i = i_incnt = S_incnt = a_incnt = k_incnt = f_incnt = f_outcnt =
+ i_outcnt = S_outcnt = a_outcnt = k_outcnt = t_incnt = t_outcnt = err = 0;
types = inm->intypes; otypes = opc->intypes;
opc->dsblksiz = (uint16) sizeof(UOPCODE);
if (!strcmp(types, "0"))
@@ -381,6 +394,12 @@ static int parse_opcode_args(CSOUND *csound, OENTRY *opc)
case 'k':
k_incnt++; *otypes++ = 'k';
break;
+ case 'f':
+ f_incnt++; *otypes++ = *types;
+ break;
+ case 't':
+ t_incnt++; *otypes++ = *types;
+ break;
case 'i':
case 'o':
case 'p':
@@ -402,7 +421,7 @@ static int parse_opcode_args(CSOUND *csound, OENTRY *opc)
}
*otypes++ = 'o'; *otypes = '\0'; /* optional arg for local ksmps */
inm->inchns = i; /* total number of input chnls */
- inm->perf_incnt = a_incnt + k_incnt;
+ inm->perf_incnt = a_incnt + k_incnt + f_incnt + t_incnt;
opc->dsblksiz += (uint16) (sizeof(MYFLT*) * i);
/* same for outputs */
i = 0;
@@ -423,6 +442,12 @@ static int parse_opcode_args(CSOUND *csound, OENTRY *opc)
case 'k':
k_outcnt++; *otypes++ = 'k';
break;
+ case 'f':
+ f_outcnt++; *otypes++ = *types;
+ break;
+ case 't':
+ t_outcnt++; *otypes++ = *types;
+ break;
case 'i':
i_outcnt++; *otypes++ = *types;
break;
@@ -437,7 +462,7 @@ static int parse_opcode_args(CSOUND *csound, OENTRY *opc)
}
*otypes = '\0';
inm->outchns = i; /* total number of output chnls */
- inm->perf_outcnt = a_outcnt + k_outcnt;
+ inm->perf_outcnt = a_outcnt + k_outcnt + f_outcnt + t_outcnt;
opc->dsblksiz += (uint16) (sizeof(MYFLT*) * i);
opc->dsblksiz = ((opc->dsblksiz + (uint16) 15)
& (~((uint16) 15))); /* align (needed ?) */
@@ -445,15 +470,19 @@ static int parse_opcode_args(CSOUND *csound, OENTRY *opc)
i = i_incnt + S_incnt + inm->perf_incnt +
i_outcnt + S_outcnt + inm->perf_outcnt;
i_inlist = inm->in_ndx_list = (int16*) mmalloc(csound,
- sizeof(int16) * (i + 8));
+ sizeof(int16) * (i + 14));
S_inlist = i_inlist + i_incnt + 1;
a_inlist = S_inlist + S_incnt + 1;
k_inlist = a_inlist + a_incnt + 1;
+ f_inlist = k_inlist + k_incnt + 1;
+ t_inlist = f_inlist + f_incnt + 1;
i = 0; types = inm->intypes;
while (*types) {
switch (*types++) {
case 'a': *a_inlist++ = i; break;
case 'k': *k_inlist++ = i; break;
+ case 'f': *f_inlist++ = i; break;
+ case 't': *t_inlist++ = i; break;
case 'K': *k_inlist++ = i; /* also updated at i-time */
case 'i':
case 'o':
@@ -463,23 +492,31 @@ static int parse_opcode_args(CSOUND *csound, OENTRY *opc)
}
i++;
}
- *i_inlist = *S_inlist = *a_inlist = *k_inlist = -1; /* put delimiters */
- i_outlist = inm->out_ndx_list = k_inlist + 1;
+
+ /* put delimiters */
+ *i_inlist = *S_inlist = *a_inlist = *k_inlist = *f_inlist = *t_inlist = -1;
+ i_outlist = inm->out_ndx_list = t_inlist + 1;
S_outlist = i_outlist + i_outcnt + 1;
a_outlist = S_outlist + S_outcnt + 1;
k_outlist = a_outlist + a_outcnt + 1;
+ f_outlist = k_outlist + k_outcnt + 1;
+ t_outlist = f_outlist + f_outcnt + 1;
i = 0; types = inm->outtypes;
while (*types) {
switch (*types++) {
case 'a': *a_outlist++ = i; break;
case 'k': *k_outlist++ = i; break;
+ case 'f': *f_outlist++ = i; break;
+ case 't': *t_outlist++ = i; break;
case 'K': *k_outlist++ = i; /* also updated at i-time */
case 'i': *i_outlist++ = i; break;
case 'S': *S_outlist++ = i; break;
}
i++;
}
- *i_outlist = *S_outlist = *a_outlist = *k_outlist = -1; /* put delimiters */
+
+ *i_outlist = *S_outlist = *a_outlist = *k_outlist =
+ *f_outlist = *t_outlist = -1; /* put delimiters */
return err;
}
diff --git a/Engine/typetabl.h b/Engine/typetabl.h
index e4088bc..d3a1a81 100644
--- a/Engine/typetabl.h
+++ b/Engine/typetabl.h
@@ -41,6 +41,7 @@
#define ARGTYP_B 0x00000200L /* boolean (k-rate) */
#define ARGTYP_b 0x00000400L /* boolean (i-rate) */
#define ARGTYP_l 0x00000800L /* label */
+#define ARGTYP_t 0x00001000L /* table */
/* some common type combinations to save typing */
@@ -57,6 +58,7 @@ static const int32 typetabl1[/*25*/] = {
'p', ARGTYP_p, 'c', ARGTYP_c, 'r', ARGTYP_r,
'S', ARGTYP_S, 'w', ARGTYP_w, 'f', ARGTYP_f,
'B', ARGTYP_B, 'b', ARGTYP_b, 'l', ARGTYP_l,
+ 't', ARGTYP_t,
0L
};
@@ -90,6 +92,7 @@ static const int32 typetabl3[/*17*/] = {
'N', (ARGTYP_S | ARGTYP_a | ARGTYP_k | ARGTYP_i | ARGTYP_p),
'I', (ARGTYP_S | ARGTYP_i | ARGTYP_p),
'F', ARGTYP_f,
+ 't', ARGTYP_t,
0L
};
diff --git a/H/aops.h b/H/aops.h
index d2cf3b4..acfc684 100644
--- a/H/aops.h
+++ b/H/aops.h
@@ -131,33 +131,38 @@ typedef struct {
typedef struct {
OPDS h;
- MYFLT *asig;
-} OUTM;
+ MYFLT *asig[VARGMAX];
+} OUTX;
typedef struct {
OPDS h;
- MYFLT *asig1, *asig2;
-} OUTS;
+ MYFLT *asig;
+} OUTM;
-typedef struct {
- OPDS h;
- MYFLT *asig1, *asig2, *asig3, *asig4;
-} OUTQ;
+/* typedef struct { */
+/* OPDS h; */
+/* MYFLT *asig1, *asig2; */
+/* } OUTS; */
-typedef struct {
- OPDS h;
- MYFLT *asig1, *asig2, *asig3, *asig4, *asig5, *asig6;
-} OUTH;
+/* typedef struct { */
+/* OPDS h; */
+/* MYFLT *asig1, *asig2, *asig3, *asig4; */
+/* } OUTQ; */
-typedef struct {
- OPDS h;
- MYFLT *asig1, *asig2, *asig3, *asig4, *asig5, *asig6, *asig7, *asig8;
-} OUTO;
+/* typedef struct { */
+/* OPDS h; */
+/* MYFLT *asig1, *asig2, *asig3, *asig4, *asig5, *asig6; */
+/* } OUTH; */
-typedef struct {
- OPDS h;
- MYFLT *asig[VARGMAX];
-} OUTX;
+/* typedef struct { */
+/* OPDS h; */
+/* MYFLT *asig1, *asig2, *asig3, *asig4, *asig5, *asig6, *asig7, *asig8; */
+/* } OUTO; */
+
+/* typedef struct { */
+/* OPDS h; */
+/* MYFLT *asig[VARGMAX]; */
+/* } OUTX; */
typedef struct {
OPDS h;
@@ -192,3 +197,8 @@ typedef struct {
AUXCH channelName;
} OUTVAL;
+typedef struct {
+ OPDS h;
+ MYFLT *res, *arg;
+} ERRFN;
+
diff --git a/H/corfile.h b/H/corfile.h
new file mode 100644
index 0000000..163ca8e
--- /dev/null
+++ b/H/corfile.h
@@ -0,0 +1,55 @@
+/*
+ corfiles.h:
+
+ Copyright (C) 2011 John ffitch
+
+ This file is part of Csound.
+
+ The Csound Library is free software; you can redistribute it
+ and/or modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ Csound is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with Csound; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA
+*/
+
+#ifndef __corfil
+
+#define __corfil
+
+CORFIL *corfile_create_w(void);
+CORFIL *corfile_create_r(char *text);
+void corfile_putc(int c, CORFIL *f);
+void corfile_puts(char *s, CORFIL *f);
+void corfile_flush(CORFIL *f);
+void corfile_rm(CORFIL **ff);
+int corfile_getc(CORFIL *f);
+void corfile_ungetc(CORFIL *f);
+#define corfile_ungetc(f) (--f->p)
+MYFLT corfile_get_flt(CORFIL *f);
+void corfile_reset(CORFIL *f);
+#define corfile_reset(f) (f->body[f->p=0]='\0')
+void corfile_rewind(CORFIL *f);
+#define corfile_rewind(f) (f->p=0)
+int corfile_tell(CORFIL *f);
+#define corfile_tell(f) (f->p)
+char *corfile_body(CORFIL *f);
+#define corfile_body(f) (f->body)
+char *corfile_current(CORFIL *f);
+#define corfile_current(f) (f->body+f->p)
+CORFIL *copy_to_corefile(CSOUND *, char *, char *, int);
+int corfile_length(CORFIL *f);
+#define corfile_length(f) (strlen(f->body))
+void corfile_set(CORFIL *f, int n);
+#define corfile_set(f,n) (f->p = n)
+void corfile_seek(CORFIL *f, int n, int dir);
+
+#endif
diff --git a/H/cs_par_base.h b/H/cs_par_base.h
index 8015a55..24ba4a1 100644
--- a/H/cs_par_base.h
+++ b/H/cs_par_base.h
@@ -46,18 +46,18 @@
#define TIMER_START(val, name) \
csound->InitTimerStruct(& val ## _timer); \
csound->Message(csound, name "Start: %f\n", \
- csound->GetRealTime(& val ## _timer));
+ csound->GetRealTime(& val ## _timer))
#define TIMER_END(val, name) \
csound->Message(csound, name "End: %f\n", \
- csound->GetRealTime(& val ## _timer));
+ csound->GetRealTime(& val ## _timer))
#define TIMER_T_START(val, index, name) \
csound->InitTimerStruct(& val ## _timer); \
csound->Message(csound, "[%i] " name "Start: %f\n", \
- index, csound->GetRealTime(& val ## _timer));
+ index, csound->GetRealTime(& val ## _timer))
#define TIMER_T_END(val, index, name) \
csound->Message(csound, "[%i] " name "End: %f\n", \
- index, csound->GetRealTime(& val ## _timer));
+ index, csound->GetRealTime(& val ## _timer))
#else
#define TIMER_INIT(val, name)
#define TIMER_START(val, name)
@@ -168,8 +168,8 @@ int csp_set_exists(CSOUND *csound, struct set_t *set, void *data);
int csp_set_print(CSOUND *csound, struct set_t *set);
/* get a count and access members */
-int inline csp_set_count(CSOUND *csound, struct set_t *set);
-int inline csp_set_get_num(CSOUND *csound, struct set_t *set, int num, void **data);
+extern int inline csp_set_count(CSOUND *csound, struct set_t *set);
+extern int inline csp_set_get_num(CSOUND *csound, struct set_t *set, int num, void **data);
/*
* set union and intersection
diff --git a/H/cs_par_dispatch.h b/H/cs_par_dispatch.h
index 08fc482..eac62ae 100644
--- a/H/cs_par_dispatch.h
+++ b/H/cs_par_dispatch.h
@@ -11,9 +11,9 @@ TREE *csp_locks_insert(CSOUND * csound, TREE *root);
/* build the cache of global locks */
void csp_locks_cache_build(CSOUND *csound);
/* lock global with index */
-void inline csp_locks_lock(CSOUND * csound, int global_index);
+extern void inline csp_locks_lock(CSOUND * csound, int global_index);
/* unlock global with index */
-void inline csp_locks_unlock(CSOUND * csound, int global_index);
+extern void inline csp_locks_unlock(CSOUND * csound, int global_index);
/* fetch a weight for opcode name */
uint32_t csp_opcode_weight_fetch(CSOUND *csound, char *name);
@@ -107,7 +107,7 @@ void csp_dag_build(CSOUND *csound, DAG **dag, INSDS *chain);
void csp_dag_print(CSOUND *csound, DAG *dag);
/* return 1 if the DAG is completely consume */
-int inline csp_dag_is_finished(CSOUND *csound, DAG *dag);
+extern int inline csp_dag_is_finished(CSOUND *csound, DAG *dag);
/* get a node from the dag
* update_hdl should be passed into consume_update when the node has
* been performed */
diff --git a/H/cs_par_orc_semantics.h b/H/cs_par_orc_semantics.h
index 4aa0e2d..fef5bdf 100644
--- a/H/cs_par_orc_semantics.h
+++ b/H/cs_par_orc_semantics.h
@@ -52,7 +52,14 @@ void csp_orc_sa_global_read_add_list(CSOUND *csound, struct set_t *list);
struct set_t *csp_orc_sa_globals_find(CSOUND *csound, TREE *node);
/* find an instrument from the instruments parsed */
-struct instr_semantics_t *csp_orc_sa_instr_get_by_name(char *instr_name);
-struct instr_semantics_t *csp_orc_sa_instr_get_by_num(int16 insno);
+struct instr_semantics_t
+ *csp_orc_sa_instr_get_by_name(CSOUND *csound, char *instr_name);
+struct instr_semantics_t
+ *csp_orc_sa_instr_get_by_num(CSOUND *csound, int16 insno);
+
+/* interlocks */
+void csp_orc_sa_interlocks(CSOUND *, ORCTOKEN *);
+void csp_orc_sa_interlocksf(CSOUND *, int);
+
#endif /* end of include guard: __CSOUND_ORC_SEMANTIC_ANALYSIS_H__ */
diff --git a/H/cs_par_structs.h b/H/cs_par_structs.h
new file mode 100644
index 0000000..4265f49
--- /dev/null
+++ b/H/cs_par_structs.h
@@ -0,0 +1,37 @@
+/*
+ csoundCore.h:
+
+ Copyright (C) 2011 John ffitch and Chris Wilson
+
+ This file is part of Csound.
+
+ The Csound Library is free software; you can redistribute it
+ and/or modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ Csound is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with Csound; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA
+*/
+
+
+/* global variables lock support */
+struct global_var_lock_t;
+
+struct opcode_weight_cache_entry_t;
+
+struct dag_node_t;
+
+struct dag_cache_entry_t;
+#define DAG_2_CACHE_SIZE (128)
+#define OPCODE_WEIGHT_CACHE_SIZE (128)
+
+struct instr_semantics_t;
+
diff --git a/H/csdl.h b/H/csdl.h
index 24d490d..c1fde42 100644
--- a/H/csdl.h
+++ b/H/csdl.h
@@ -29,6 +29,8 @@
#endif
#include "csoundCore.h"
+#include "interlocks.h"
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -54,8 +56,15 @@ PUBLIC const char *csoundModuleErrorCodeToString(int);
PUBLIC int csoundModuleInfo(void);
#define LINKAGE \
-PUBLIC long csound_opcode_init(CSOUND *csound, OENTRY **ep) \
-{ (void) csound; *ep = localops; return (long) sizeof(localops); } \
+PUBLIC long csound_opcode_init(CSOUND *csound, OENTRY **ep) \
+{ (void) csound; *ep = localops; return (long) sizeof(localops); } \
+PUBLIC int csoundModuleInfo(void) \
+{ return ((CS_APIVERSION << 16) + (CS_APISUBVER << 8) + (int) sizeof(MYFLT)); }
+
+#undef LINKAGE1
+#define LINKAGE1(name) \
+PUBLIC long csound_opcode_init(CSOUND *csound, OENTRY **ep) \
+{ (void) csound; *ep = name; return (long) (sizeof(name)); } \
PUBLIC int csoundModuleInfo(void) \
{ return ((CS_APIVERSION << 16) + (CS_APISUBVER << 8) + (int) sizeof(MYFLT)); }
@@ -65,6 +74,13 @@ PUBLIC NGFENS *csound_fgen_init(CSOUND *csound) \
PUBLIC int csoundModuleInfo(void) \
{ return ((CS_APIVERSION << 16) + (CS_APISUBVER << 8) + (int) sizeof(MYFLT)); }
+#undef FLINKAGE1
+#define FLINKAGE1(name) \
+PUBLIC NGFENS *csound_fgen_init(CSOUND *csound) \
+{ (void) csound; return name; } \
+PUBLIC int csoundModuleInfo(void) \
+{ return ((CS_APIVERSION << 16) + (CS_APISUBVER << 8) + (int) sizeof(MYFLT)); }
+
#ifdef __cplusplus
}
#endif
diff --git a/H/csmodule.h b/H/csmodule.h
index 65f6f56..33d42a4 100644
--- a/H/csmodule.h
+++ b/H/csmodule.h
@@ -76,32 +76,37 @@
extern "C" {
#endif
-/* ------------------------ INTERNAL API FUNCTIONS ------------------------ */
-
-/**
- * Load plugin libraries for Csound instance 'csound', and call
- * pre-initialisation functions.
- * Return value is CSOUND_SUCCESS if there was no error, CSOUND_ERROR if
- * some modules could not be loaded or initialised, and CSOUND_MEMORY
- * if a memory allocation failure has occured.
- */
-int csoundLoadModules(CSOUND *csound);
-
-/**
- * Call initialisation functions of all loaded modules that have a
- * csoundModuleInit symbol, for Csound instance 'csound'.
- * Return value is CSOUND_SUCCESS if there was no error, and CSOUND_ERROR if
- * some modules could not be initialised.
- */
-int csoundInitModules(CSOUND *csound);
-
-/**
- * Call destructor functions of all loaded modules that have a
- * csoundModuleDestroy symbol, for Csound instance 'csound'.
- * Return value is CSOUND_SUCCESS if there was no error, and
- * CSOUND_ERROR if some modules could not be de-initialised.
- */
-int csoundDestroyModules(CSOUND *csound);
+ /* ------------------------ INTERNAL API FUNCTIONS ------------------------ */
+
+ /**
+ * Load plugin libraries for Csound instance 'csound', and call
+ * pre-initialisation functions.
+ * Return value is CSOUND_SUCCESS if there was no error, CSOUND_ERROR if
+ * some modules could not be loaded or initialised, and CSOUND_MEMORY
+ * if a memory allocation failure has occured.
+ */
+ int csoundLoadModules(CSOUND *csound);
+
+ /**
+ * Call initialisation functions of all loaded modules that have a
+ * csoundModuleInit symbol, for Csound instance 'csound'.
+ * Return value is CSOUND_SUCCESS if there was no error, and CSOUND_ERROR if
+ * some modules could not be initialised.
+ */
+ int csoundInitModules(CSOUND *csound);
+
+ /**
+ * Call destructor functions of all loaded modules that have a
+ * csoundModuleDestroy symbol, for Csound instance 'csound'.
+ * Return value is CSOUND_SUCCESS if there was no error, and
+ * CSOUND_ERROR if some modules could not be de-initialised.
+ */
+ int csoundDestroyModules(CSOUND *csound);
+
+ /**
+ * Initialise opcodes not in entry1.c
+ */
+ int csoundInitSaticModules(CSOUND *csound);
#ifdef __cplusplus
}
diff --git a/H/csound.h b/H/csound.h
index 779932b..c35bafd 100644
--- a/H/csound.h
+++ b/H/csound.h
@@ -1400,25 +1400,6 @@ extern "C" {
# define CSOUND_SPIN_UNLOCK
#endif
-#elif defined(__GNUC__) && defined(HAVE_PTHREAD_SPIN_LOCK)
-# if defined(SWIG)
-#define csoundSpinLock(spinlock) \
- { \
- pthread_spin_lock((pthread_spinlock_t *)spinlock); \
- }
-#define csoundSpinUnLock(spinlock) \
- { \
- pthread_spin_unlock((pthread_spinlock_t *)spinlock); \
- }
-# define CSOUND_SPIN_LOCK static int32_t spinlock = 0; csoundSpinLock(&spinlock);
-# define CSOUND_SPIN_UNLOCK csoundSpinUnLock(&spinlock);
-# else
-# define csoundSpinLock(spinlock)
-# define csoundSpinUnLock(spinlock)
-# define CSOUND_SPIN_LOCK
-# define CSOUND_SPIN_UNLOCK
-#endif
-
#elif defined(__GNUC__) && defined(HAVE_SYNC_LOCK_TEST_AND_SET)
# define csoundSpinLock(spinlock) \
@@ -1438,13 +1419,13 @@ extern "C" {
#ifndef SWIG
#include <libkern/OSAtomic.h>
-#define csoundSpinLock(spinlock) \
- { \
- OSSpinLockLock(spinlock); \
+#define csoundSpinLock(spinlock) \
+ { \
+ OSSpinLockLock(spinlock); \
}
#define csoundSpinUnLock(spinlock) \
- { \
- OSSpinLockUnlock(spinlock); \
+ { \
+ OSSpinLockUnlock(spinlock); \
}
#define CSOUND_SPIN_LOCK static int32_t spinlock = 0; csoundSpinLock(&spinlock);
diff --git a/H/csoundCore.h b/H/csoundCore.h
index adcf3b4..eda4c5f 100644
--- a/H/csoundCore.h
+++ b/H/csoundCore.h
@@ -31,10 +31,11 @@
#include "sysdep.h"
#ifdef PARCS
#include <pthread.h>
-#endif
+#include "cs_par_structs.h"
+#endif /* PARCS */
#include <stdarg.h>
#include <setjmp.h>
-
+
/*
#include <sndfile.h>
JPff: But this gives warnings in many files as rewriteheader expects
@@ -60,7 +61,7 @@ util/xtrct.c
#ifdef __cplusplus
extern "C" {
-#endif
+#endif /* __cplusplus */
#ifdef __MACH__
#define BARRIER_SERIAL_THREAD (-1)
@@ -72,8 +73,8 @@ typedef struct {
#ifndef PTHREAD_BARRIER_SERIAL_THREAD
#define pthread_barrier_t barrier_t
-#endif
-#endif
+#endif /* PTHREAD_BARRIER_SERIAL_THREAd */
+#endif /* __MACH__ */
#define OK (0)
@@ -118,7 +119,7 @@ typedef struct {
(n<<8 & 0xFF0000L) | (n<<24 & 0xFF000000L))
#define OCTRES 8192
-#define CPSOCTL(n) ((MYFLT)(1 << ((int)(n) >> 13)) * cpsocfrc[(int)(n) & 8191])
+#define CPSOCTL(n) ((MYFLT)(1 << ((int)(n) >> 13)) * csound->cpsocfrc[(int)(n) & 8191])
#define LOBITS 10
#define LOFACT 1024
@@ -152,7 +153,7 @@ typedef struct {
#ifndef PI
#define PI (3.141592653589793238462643383279502884197)
-#endif
+#endif /* pi */
#define TWOPI (6.283185307179586476925286766559005768394)
#define PI_F ((MYFLT) PI)
#define TWOPI_F ((MYFLT) TWOPI)
@@ -168,6 +169,12 @@ typedef struct {
cause confusion
#define printf use_csoundMessage_instead_of_printf
*/
+ typedef struct CORFIL {
+ char *body;
+ int len;
+ int p;
+ } CORFIL;
+
typedef struct {
int odebug;
int sfread, sfwrite, sfheader, filetyp;
@@ -182,7 +189,8 @@ typedef struct {
int rewrt_hdr, heartbeat, gen01defer;
int expr_opt; /* IV - Jan 27 2005: for --expression-opt */
float sr_override, kr_override;
- char *infilename, *outfilename, *playscore;
+ char *infilename, *outfilename;
+ CORFIL *playscore;
char *Linename, *Midiname, *FMidiname;
char *Midioutname; /* jjk 09252000 - MIDI output device, -Q option */
char *FMidioutname;
@@ -196,7 +204,7 @@ typedef struct {
#ifdef ENABLE_NEW_PARSER
int newParser; /* SYY - July 30, 2006: for --new-parser */
int calculateWeights;
-#endif
+#endif /* ENABLE_NEW_PARSE */
} OPARMS;
typedef struct arglst {
@@ -243,9 +251,9 @@ typedef struct {
int lclpcnt, lclscnt;
int lclfixed, optxtcount;
int16 muted;
- int32 localen;
- int32 opdstot; /* Total size of opds structs in instr */
- int32 *inslist; /* Only used in parsing (?) */
+ int32 localen;
+ int32 opdstot; /* Total size of opds structs in instr */
+ int32 *inslist; /* Only used in parsing (?) */
MYFLT *psetdata; /* Used for pset opcode */
struct insds * instance; /* Chain of allocated instances of
this instrument */
@@ -719,11 +727,11 @@ typedef struct {
/* These are used to set/clear bits in csound->tempStatus.
If the bit is set, it indicates that the given file is
a temporary. */
-extern const uint32_t csOrcMask;
-extern const uint32_t csScoInMask;
-extern const uint32_t csScoSortMask;
-extern const uint32_t csMidiScoMask;
-extern const uint32_t csPlayScoMask;
+ extern const uint32_t csOrcMask;
+ extern const uint32_t csScoInMask;
+ extern const uint32_t csScoSortMask;
+ extern const uint32_t csMidiScoMask;
+ extern const uint32_t csPlayScoMask;
#endif /* __BUILDING_LIBCSOUND */
/**
@@ -731,6 +739,7 @@ extern const uint32_t csPlayScoMask;
* to run one instance of Csound.
*/
+
struct CSOUND_ {
/* Csound API function pointers (320 total) */
int (*GetVersion)(void);
@@ -1030,7 +1039,8 @@ extern const uint32_t csPlayScoMask;
void (*Stop)(CSOUND *);
void *(*GetNamedGens)(CSOUND *);
/* SUBR dummyfn_1; */
- SUBR dummyfn_2[76];
+ MYFLT (*Pow2)(CSOUND *, MYFLT a);
+ SUBR dummyfn_2[75];
int dither_output;
void *flgraphGlobals;
char *delayederrormessages;
@@ -1062,7 +1072,7 @@ extern const uint32_t csPlayScoMask;
pthread_spinlock_t spoutlock, spinlock;
#else
int spoutlock, spinlock;
-#endif
+#endif /* defined(HAVE_PTHREAD_SPIN_LOCK) && defined(PARCS) */
/* Widgets */
void *widgetGlobals;
/** reserved for std opcode library */
@@ -1082,6 +1092,7 @@ extern const uint32_t csPlayScoMask;
void *rtRecord_userdata;
void *rtPlay_userdata;
char *orchname, *scorename;
+ CORFIL *orchstr, *scorestr;
int holdrand;
/** max. length of string variables + 1 */
int strVarMaxLen;
@@ -1099,7 +1110,7 @@ extern const uint32_t csPlayScoMask;
pthread_spinlock_t memlock;
#else
int memlock;
-#endif
+#endif /* defined(HAVE_PTHREAD_SPIN_LOCK) && defined(PARCS */
int floatsize;
int inchnls; /* Not fully used yet -- JPff */
int dummyint[7];
@@ -1152,6 +1163,7 @@ extern const uint32_t csPlayScoMask;
int Linefd;
void *csoundCallbacks_;
FILE* scfp;
+ CORFIL *scstr;
FILE* oscfp;
MYFLT maxamp[MAXCHNLS];
MYFLT smaxamp[MAXCHNLS];
@@ -1330,6 +1342,19 @@ extern const uint32_t csPlayScoMask;
struct dag_t *multiThreadedDag;
pthread_barrier_t *barrier1;
pthread_barrier_t *barrier2;
+ /* Statics from cs_par_dispatch; */
+ struct global_var_lock_t *global_var_lock_root;
+ struct global_var_lock_t **global_var_lock_cache;
+ int global_var_lock_count;
+ int opcode_weight_cache_ctr;
+ struct opcode_weight_cache_entry_t
+ *opcode_weight_cache[OPCODE_WEIGHT_CACHE_SIZE];
+ int opcode_weight_have_cache;
+ struct dag_cache_entry_t *cache[DAG_2_CACHE_SIZE];
+ /* statics from cs_par_orc_semantic_analysis */
+ struct instr_semantics_t *instCurr;
+ struct instr_semantics_t *instRoot;
+ int inInstr;
#endif
uint32_t tempStatus; /* keeps track of which files are temps */
int orcLineOffset; /* 1 less than 1st orch line in the CSD */
@@ -1342,7 +1367,8 @@ extern const uint32_t csPlayScoMask;
char *sstrbuf0[3]; /* For extra strings in scores */
int sstrlen0[3]; /* lengths for extra strings */
int genlabs; /* Count for generated labels */
-
+ MYFLT *powerof2; /* pow2 table */
+ MYFLT *cpsocfrc; /* cps conv table */
#endif /* __BUILDING_LIBCSOUND */
};
@@ -1351,9 +1377,16 @@ extern const uint32_t csPlayScoMask;
* in order to enable C++ to #include this file.
*/
+#define LINKAGE1(name) \
+PUBLIC long name##_init(CSOUND *csound, OENTRY **ep) \
+{ (void) csound; *ep = name; return (long) (sizeof(name)); }
+
+#define FLINKAGE1(name) \
+PUBLIC NGFENS* name##_init(CSOUND *csound) \
+{ (void) csound; return name; }
+
#ifdef __cplusplus
}
-#endif
+#endif /* __cplusplus */
#endif /* CSOUNDCORE_H */
-
diff --git a/H/csound_orc.h b/H/csound_orc.h
index bb43e5e..416fb23 100644
--- a/H/csound_orc.h
+++ b/H/csound_orc.h
@@ -7,6 +7,7 @@ typedef struct TREE {
ORCTOKEN *value;
int rate;
int len;
+ int line;
struct TREE *left;
struct TREE *right;
struct TREE *next;
@@ -24,8 +25,8 @@ enum {
#define PARSER_DEBUG (0)
#endif
-TREE* make_node(CSOUND *, int, TREE*, TREE*);
-TREE* make_leaf(CSOUND *,int, ORCTOKEN*);
+TREE* make_node(CSOUND *, int, int, TREE*, TREE*);
+TREE* make_leaf(CSOUND *, int, int, ORCTOKEN*);
ORCTOKEN* make_int(CSOUND *,char *);
ORCTOKEN* make_num(CSOUND *,char *);
ORCTOKEN *make_token(CSOUND *csound, char *s);
diff --git a/H/entry1.h b/H/entry1.h
index 25759ec..010c4f3 100644
--- a/H/entry1.h
+++ b/H/entry1.h
@@ -55,6 +55,7 @@
#include "bus.h"
#include "pstream.h"
#include "remote.h"
+#include "resize.h"
#ifdef PARCS
#include "cs_par_ops.h"
#endif
@@ -220,13 +221,14 @@ int inq(CSOUND *, void *), inh(CSOUND *, void *);
int ino(CSOUND *, void *), in16(CSOUND *, void *);
int in32(CSOUND *, void *);
int inch_opcode(CSOUND *, void *), inall_opcode(CSOUND *, void *);
-int out(CSOUND *, void *), outs(CSOUND *, void *);
+int outmultiple(CSOUND *, void *);
+/* int out(CSOUND *, void *), outs(CSOUND *, void *); */
int outs1(CSOUND *, void *), outs2(CSOUND *, void *);
-int outq(CSOUND *, void *);
+/* int outq(CSOUND *, void *); */
int outq1(CSOUND *, void *), outq2(CSOUND *, void *);
int outq3(CSOUND *, void *), outq4(CSOUND *, void *);
-int outh(CSOUND *, void *), outo(CSOUND *, void *);
-int outx(CSOUND *, void *), outX(CSOUND *, void *);
+/* int outh(CSOUND *, void *), outo(CSOUND *, void *); */
+/* int outx(CSOUND *, void *), outX(CSOUND *, void *); */
int outch(CSOUND *, void *), outall(CSOUND *, void *);
int igoto(CSOUND *, void *), kgoto(CSOUND *, void *);
int icgoto(CSOUND *, void *), kcgoto(CSOUND *, void *);
@@ -371,7 +373,7 @@ int setksmpsset(CSOUND *, void *);
int xinset(CSOUND *, void *), xoutset(CSOUND *, void *);
int ingoto(CSOUND *, void *), kngoto(CSOUND *, void *);
int iingoto(CSOUND *, void *), kingoto(CSOUND *, void *);
-int nstrnumset(CSOUND *, void *), turnoff2(CSOUND *, void *);
+int nstrnumset(CSOUND *, void *), turnoff2k(CSOUND *, void *), turnoff2S(CSOUND *, void *) ;
int loop_l_i(CSOUND *, void *), loop_le_i(CSOUND *, void *);
int loop_g_i(CSOUND *, void *), loop_ge_i(CSOUND *, void *);
int loop_l_p(CSOUND *, void *), loop_le_p(CSOUND *, void *);
@@ -392,3 +394,5 @@ int kgaussi(CSOUND *, void *), agaussi(CSOUND *, void *);
int lsgset_bkpt(CSOUND *csound, void *p);
int xsgset_bkpt(CSOUND *csound, void *p);
int xsgset_bkpt(CSOUND *csound, void *p), xsgset2b(CSOUND *, void *);
+int resize_table(CSOUND *csound, void *p);
+int error_fn(CSOUND *csound, void *p);
diff --git a/H/insert.h b/H/insert.h
index 750f937..25bcb4d 100644
--- a/H/insert.h
+++ b/H/insert.h
@@ -56,7 +56,7 @@ typedef struct {
OPCODINFO *opcode_info;
void *uopcode_struct;
INSDS *parent_ip;
- MYFLT *iobufp_ptrs[4]; /* expandable IV - Oct 26 2002 */
+ MYFLT *iobufp_ptrs[12]; /* expandable IV - Oct 26 2002 */ /* was 8 */
} OPCOD_IOBUFS;
typedef struct { /* IV - Oct 16 2002 */
diff --git a/H/interlocks.h b/H/interlocks.h
new file mode 100644
index 0000000..8d0328d
--- /dev/null
+++ b/H/interlocks.h
@@ -0,0 +1,39 @@
+/*
+ interlocks.h:
+
+ Copyright (C) 2011 John ffitch
+
+ This file is part of Csound.
+
+ The Csound Library is free software; you can redistribute it
+ and/or modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ Csound is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with Csound; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA
+*/
+
+#define ZR (0x0100)
+#define ZW (0x0200)
+#define ZB (0x0300)
+
+#define TR (0x0400)
+#define TW (0x0800)
+#define TB (0x0c00)
+
+#define CR (0x1000)
+#define CW (0x2000)
+#define CB (0x3000)
+
+#define SB (0x4000)
+
+#define DP (0x8000)
+
diff --git a/H/midiout.h b/H/midiout.h
index 30c2b22..bd15264 100644
--- a/H/midiout.h
+++ b/H/midiout.h
@@ -87,37 +87,37 @@ typedef struct {
typedef struct {
OPDS h;
MYFLT *chn,*num, *value, *min, *max;
- int last_value;
+ int last_value, lastchn, lastctrl;
} OUT_CONTR;
typedef struct {
OPDS h;
MYFLT *chn, *msb_num, *lsb_num, *value, *min, *max;
- int last_value;
+ int last_value, lastchn, lastctrl;
} OUT_CONTR14;
typedef struct {
OPDS h;
MYFLT *chn, *value, *min, *max;
- int last_value;
+ int last_value, lastchn;
} OUT_PB;
typedef struct {
OPDS h;
MYFLT *chn, *value, *min, *max;
- int last_value;
+ int last_value, lastchn;
} OUT_ATOUCH;
typedef struct {
OPDS h;
MYFLT *chn, *prog_num, *min, *max;
- int last_prog_num;
+ int last_prog_num, lastchn;
} OUT_PCHG;
typedef struct {
OPDS h;
MYFLT *chn, *num, *value, *min, *max;
- int last_value;
+ int last_value, lastchn, lastctrl;
} OUT_POLYATOUCH;
typedef struct {
diff --git a/H/mp3dec.h b/H/mp3dec.h
index 9cf45bb..f4a6085 100644
--- a/H/mp3dec.h
+++ b/H/mp3dec.h
@@ -22,6 +22,7 @@
#ifndef __MP3DEC_H
#define __MP3DEC_H
+#include <stdint.h>
#include "mpadec.h"
#define MP3DEC_RETCODE_OK 0
diff --git a/H/prototyp.h b/H/prototyp.h
index 5d32176..a36cfc1 100644
--- a/H/prototyp.h
+++ b/H/prototyp.h
@@ -57,6 +57,7 @@ void reverbinit(CSOUND *);
void dispinit(CSOUND *);
int init0(CSOUND *);
void scsort(CSOUND *, FILE *, FILE *);
+void scsortstr(CSOUND *, CORFIL *);
int scxtract(CSOUND *, FILE *, FILE *, FILE *);
int rdscor(CSOUND *, EVTBLK *);
int musmon(CSOUND *);
diff --git a/H/resize.h b/H/resize.h
new file mode 100644
index 0000000..fff9433
--- /dev/null
+++ b/H/resize.h
@@ -0,0 +1,6 @@
+typedef struct {
+ OPDS h;
+ MYFLT *size; /* Ansser */
+ MYFLT *fn; /* which table */
+ MYFLT *nsize; /* new size */
+} RESIZE;
diff --git a/H/version.h b/H/version.h
index d1c1833..61c263e 100644
--- a/H/version.h
+++ b/H/version.h
@@ -33,26 +33,26 @@
/* Define to the full name and version of this package. */
#ifndef PARCS
-#define CS_PACKAGE_STRING "Csound 5.14"
+#define CS_PACKAGE_STRING "Csound 5.15"
#else /* PARCS */
-#define CS_PACKAGE_STRING "ParCsound 5.14"
+#define CS_PACKAGE_STRING "ParCsound 5.15"
#endif /* PARCS */
/* Define to the one symbol short name of this package. */
#define CS_PACKAGE_TARNAME "csound"
/* Define to the version of this package. */
-#define CS_PACKAGE_VERSION "5.14"
+#define CS_PACKAGE_VERSION "5.15"
#define CS_VERSION (5)
-#define CS_SUBVER (14)
-#define CS_PATCHLEVEL (2)
+#define CS_SUBVER (15)
+#define CS_PATCHLEVEL (0)
#define CS_APIVERSION 2 /* should be increased anytime a new version
contains changes that an older host will
not be able to handle -- most likely this
will be a change to an API function or
the CSOUND struct */
-#define CS_APISUBVER 5 /* for minor changes that will still allow
+#define CS_APISUBVER 6 /* for minor changes that will still allow
compatiblity with older hosts */
#endif /* CSOUND_VERSION_H */
diff --git a/How_to_Build_Csound_on_Windows.doc b/How_to_Build_Csound_on_Windows.doc
index c77a4cb..abc1a4d 100644
Binary files a/How_to_Build_Csound_on_Windows.doc and b/How_to_Build_Csound_on_Windows.doc differ
diff --git a/InOut/CMakeLists.txt b/InOut/CMakeLists.txt
index a06922e..aa25ef2 100644
--- a/InOut/CMakeLists.txt
+++ b/InOut/CMakeLists.txt
@@ -8,7 +8,9 @@ option(USE_PORTAUDIO "Build the PortAudio I/O module" ON)
option(USE_PORTMIDI "Build the PortMIDI I/O module" ON)
option(USE_JACK "Build the jack I/O module and opcodes" ON)
option(USE_ALSA "Build the ALSA I/O module" ON)
-option(USE_COREAUDIO "Build the CoreAudio I/O module" ON)
+# option(USE_COREAUDIO "Build the CoreAudio I/O module" ON)
+option(USE_COREMIDI "Build the CoreMIDI I/O Module" ON)
+option(USE_AUDIOUNIT "Build teh CoreAudio AudioUnit I/O module (requires CoreAudio)" ON)
option(USE_FLTK "Use FLTK for graphs and widget opcodes" ON)
option(BUILD_VIRTUAL_KEYBOARD "Build Virtual MIDI keyboard" ON)
@@ -16,28 +18,40 @@ option(BUILD_VIRTUAL_KEYBOARD "Build Virtual MIDI keyboard" ON)
if(USE_ALSA)
find_library(ALSA_LIBRARY asound)
- find_file(ALSA_HEADER alsa/asoundlib.h)
+ check_include_file(alsa/asoundlib.h ALSA_HEADER)
endif()
if(USE_PORTAUDIO)
find_library(PORTAUDIO_LIBRARY portaudio)
- find_file(PORTAUDIO_HEADER portaudio.h)
+ check_include_file(portaudio.h PORTAUDIO_HEADER)
endif()
if(USE_PORTMIDI)
find_library(PORTMIDI_LIBRARY portmidi)
find_library(PORTTIME_LIBRARY porttime)
- find_file(PORTMIDI_HEADER portmidi.h)
+ check_include_file(portmidi.h PORTMIDI_HEADER)
endif()
if(USE_JACK)
find_library(JACK_LIBRARY jack)
find_library(JACKDMP_LIBRARY jackdmp)
- find_file(JACK_HEADER jack/jack.h)
+ check_include_file(jack/jack.h JACK_HEADER)
endif()
if(USE_PULSEAUDIO)
find_library(PULSEAUDIO_LIBRARY pulse)
find_library(PULSESIMPLE_LIBRARY pulse-simple)
- find_file(PULSEAUDIO_HEADER pulse/simple.h)
-endif()
-if(USE_COREAUDIO)
+ check_include_file(pulse/simple.h PULSEAUDIO_HEADER)
+endif()
+# if(USE_COREAUDIO)
+# find_path(COREAUDIO_INCLUDE_PATH CoreAudio.h)
+# find_library(COREAUDIO_LIBRARY CoreAudio)
+# endif()
+if(USE_COREMIDI)
+ find_path(COREMIDI_INCLUDE_PATH CoreMidi.h)
+ find_library(COREMIDI_LIBRARY CoreMidi)
+ find_library(COREFOUNDATION_LIBRARY CoreFoundation)
+endif()
+if(USE_AUDIOUNIT)
+ find_path(AUDIOUNIT_INCLUDE_PATH AudioUnit.h)
+ find_library(AUDIOUNIT_LIBRARY AudioUnit)
+ find_library(COREFOUNDATION_LIBRARY CoreFoundation)
find_path(COREAUDIO_INCLUDE_PATH CoreAudio.h)
find_library(COREAUDIO_LIBRARY CoreAudio)
endif()
@@ -47,11 +61,25 @@ endif()
# BUILD TARGETS
-check_deps(USE_COREAUDIO APPLE COREAUDIO_INCLUDE_PATH COREAUDIO_LIBRARY)
-if(USE_COREAUDIO)
- make_plugin(rtcoreaudio rtcoreaudio.c)
- include_directories(${COREAUDIO_INCLUDE_PATH})
- target_link_libraries(rtcoreaudio ${COREAUDIO_LIBRARY})
+# check_deps(USE_COREAUDIO APPLE COREAUDIO_INCLUDE_PATH COREAUDIO_LIBRARY)
+# if(USE_COREAUDIO)
+# make_plugin(rtcoreaudio rtcoreaudio.c)
+# include_directories(${COREAUDIO_INCLUDE_PATH})
+# target_link_libraries(rtcoreaudio ${COREAUDIO_LIBRARY})
+# endif()
+
+check_deps(USE_COREMIDI APPLE COREMIDI_INCLUDE_PATH COREMIDI_LIBRARY COREFOUNDATION_LIBRARY)
+if(USE_COREMIDI)
+ make_plugin(cmidi cmidi.c)
+ include_directories(${COREMIDI_INCLUDE_PATH})
+ target_link_libraries(cmidi ${COREMIDI_LIBRARY} ${COREFOUNDATION_LIBRARY})
+endif()
+
+check_deps(USE_AUDIOUNIT APPLE COREAUDIO_INCLUDE_PATH COREAUDIO_LIBRARY AUDIOUNIT_INCLUDE_PATH AUDIOUNIT_LIBRARY COREFOUNDATION_LIBRARY)
+if(USE_AUDIOUNIT)
+ make_plugin(rtauhal rtauhal.c)
+ include_directories(${AUDIOUNIT_INCLUDE_PATH})
+ target_link_libraries(rtauhal ${AUDIOUNIT_LIBRARY} ${COREFOUNDATION_LIBRARY} ${COREAUDIO_LIBRARY})
endif()
check_deps(USE_ALSA ALSA_HEADER ALSA_LIBRARY PTHREAD_LIBRARY)
diff --git a/InOut/FL_graph.cpp b/InOut/FL_graph.cpp
index f20c0a7..1ec008d 100644
--- a/InOut/FL_graph.cpp
+++ b/InOut/FL_graph.cpp
@@ -96,7 +96,7 @@ void flgraph_init(CSOUND *csound)
/*ST(menu) = (Fl_Menu_Item*) csound->Calloc(csound,
- sizeof(Fl_Menu_Item)*(1+NUMOFWINDOWS));*/
+ sizeof(Fl_Menu_Item)*(1+NUMOFWINDOWS));*/
/* VL: moved menu object to be built at each new compilation */
}
@@ -212,7 +212,7 @@ void add_graph(CSOUND *csound, WINDAT *wdptr)
for (m = 0; m < NUMOFWINDOWS; m++) { // If text the same use slot
if(ST(menu) != NULL) {
if (ST(menu)[m].text != NULL && wdptr->caption != NULL){
- if(strcmp(wdptr->caption, ST(menu)[m].text) == 0) {
+ if(strcmp(wdptr->caption, ST(menu)[m].text) == 0) {
replacing = 1;
goto replace;
}
@@ -317,7 +317,7 @@ extern "C" {
{
for (int i = 0; i < NUMOFWINDOWS; i++) {
WINDAT *n = (WINDAT*) ST(menu)[i].user_data_;
- if (n != NULL && n->windid == m) {
+ if (n != NULL && ((uintptr_t) n == m ||n->windid == m)) {
free(n->fdata);
free(n);
free((void*) ST(menu)[i].text);
@@ -332,16 +332,16 @@ extern "C" {
{
if (ST(form) && ST(graph_created) == 1) {
- if (ST(form)->shown() && !(getFLTKFlags(csound) & 256)) {
- const char *env = csound->GetEnv(csound, "CSNOSTOP");
- if (env == NULL || strcmp(env, "yes") != 0) {
- ST(end)->show();
+ if (ST(form)->shown() && !(getFLTKFlags(csound) & 256)) {
+ const char *env = csound->GetEnv(csound, "CSNOSTOP");
+ if (env == NULL || strcmp(env, "yes") != 0) {
+ ST(end)->show();
// print click-Exit message in most recently active window
- while (ST(end)->value() == 0 && ST(form)->shown()) {
- Fl_wait_locked(csound, 0.03);
- }
+ while (ST(end)->value() == 0 && ST(form)->shown()) {
+ Fl_wait_locked(csound, 0.03);
}
- }
+ }
+ }
delete ST(form);
ST(form) = (Fl_Window *) 0;
@@ -356,7 +356,7 @@ extern "C" {
WINDAT *n = (WINDAT*) ST(menu)[i].user_data_;
if (n)
kill_graph(csound, (uintptr_t) ((void*) n));
- }
+ }
if(ST(menu)){
delete ST(menu);
ST(menu) = (Fl_Menu_Item *) 0;
diff --git a/InOut/cmidi.c b/InOut/cmidi.c
new file mode 100644
index 0000000..8917e15
--- /dev/null
+++ b/InOut/cmidi.c
@@ -0,0 +1,261 @@
+/*
+ cmidi.c:
+
+ Copyright (C) 2011 V Lazzarini
+
+ This file is part of Csound.
+
+ The Csound Library is free software; you can redistribute it
+ and/or modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ Csound is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with Csound; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA
+*/
+
+/* Realtime MIDI using coremidi */
+
+
+#include <CoreMidi/CoreMidi.h>
+#include <CoreAudio/HostTime.h>
+#include <CoreFoundation/CoreFoundation.h>
+#include "csdl.h" /* CMIDI.C */
+#include "csGblMtx.h"
+#include "midiops.h"
+#include "oload.h"
+
+
+
+
+/* MIDI message queue size */
+#define DSIZE 4096
+
+/* MIDI data struct */
+typedef struct {
+ Byte status;
+ Byte data1;
+ Byte data2;
+ Byte flag;
+} MIDIdata;
+
+/* user data for MIDI callbacks */
+typedef struct _cdata {
+ MIDIdata *mdata;
+ int p; int q;
+ MIDIClientRef mclient;
+} cdata;
+
+
+/* coremidi callback, called when MIDI data is available */
+void ReadProc(const MIDIPacketList *pktlist, void *refcon, void *srcConnRefCon){
+
+ cdata *data = (cdata *)refcon;
+ MIDIdata *mdata = data->mdata;
+ int *p = &data->p, i, j;
+ MIDIPacket *packet = &((MIDIPacketList *)pktlist)->packet[0];
+ Byte *curpack;
+
+ for (i = 0; i < pktlist->numPackets; i++) {
+ for(j=0; j < packet->length; j+=3){
+ curpack = packet->data+j;
+ memcpy(&mdata[*p], curpack, 3);
+ mdata[*p].flag = 1;
+ (*p)++;
+ if(*p == DSIZE) *p = 0;
+ }
+ packet = MIDIPacketNext(packet);
+ }
+
+}
+
+/* csound MIDI input open callback, sets the device for input */
+static int MidiInDeviceOpen(CSOUND *csound, void **userData, const char *dev)
+{
+ int k, endpoints, dest;
+ CFStringRef name = NULL, cname = NULL, pname = NULL;
+ CFStringEncoding defaultEncoding = CFStringGetSystemEncoding();
+ MIDIClientRef mclient = (MIDIClientRef) 0;
+ MIDIPortRef mport = (MIDIPortRef) 0;
+ MIDIEndpointRef endpoint;
+ MIDIdata *mdata = (MIDIdata *) malloc(DSIZE*sizeof(MIDIdata));
+ OSStatus ret;
+ cdata *refcon = (cdata *) malloc(sizeof(cdata));
+ memset(mdata, 0, sizeof(MIDIdata)*DSIZE);
+ refcon->mdata = mdata;
+ refcon->p = 0;
+ refcon->q = 0;
+
+ /* MIDI client */
+ cname = CFStringCreateWithCString(NULL, "my client", defaultEncoding);
+ ret = MIDIClientCreate(cname, NULL, NULL, &mclient);
+ if(!ret){
+ /* MIDI input port */
+ pname = CFStringCreateWithCString(NULL, "inport", defaultEncoding);
+ ret = MIDIInputPortCreate(mclient, pname, ReadProc, refcon, &mport);
+ if(!ret){
+ /* sources, we connect to all available input sources */
+ endpoints = MIDIGetNumberOfSources();
+ csound->Message(csound, "%d MIDI sources in system \n", endpoints);
+ if(!strcmp(dev,"all")) {
+ csound->Message(csound, "receiving from all sources \n");
+ for(k=0; k < endpoints; k++){
+ endpoint = MIDIGetSource(k);
+ long srcRefCon = (long) endpoint;
+ MIDIPortConnectSource(mport, endpoint, (void *) srcRefCon);
+ MIDIObjectGetStringProperty(endpoint, kMIDIPropertyName, &name);
+ csound->Message(csound, "connecting midi device %d: %s \n", k,
+ CFStringGetCStringPtr(name, defaultEncoding));
+ }
+ }
+ else{
+ k = atoi(dev);
+ if(k < endpoints){
+ endpoint = MIDIGetSource(k);
+ long srcRefCon = (long) endpoint;
+ MIDIPortConnectSource(mport, endpoint, (void *) srcRefCon);
+ MIDIObjectGetStringProperty(endpoint, kMIDIPropertyName, &name);
+ csound->Message(csound, "connecting midi device %d: %s \n", k,
+ CFStringGetCStringPtr(name, defaultEncoding));
+ }
+ else csound->Message(csound, "MIDI device number %d is out-of-range, not connected \n", k);
+ }
+
+ }
+ }
+ refcon->mclient = mclient;
+ *userData = (void*) refcon;
+ if(name) CFRelease(name);
+ if(pname) CFRelease(pname);
+ if(cname) CFRelease(cname);
+ /* report success */
+ return 0;
+}
+
+static int MidiOutDeviceOpen(CSOUND *csound, void **userData, const char *dev)
+{
+ /*stub for the moment */
+ csound->Message(csound, "output not implemented yet in CoreMIDI \n");
+ return 0;
+}
+
+/* used to distinguish between 1 and 2-byte messages */
+static const int datbyts[8] = { 2, 2, 2, 2, 1, 1, 2, 0 };
+
+/* csound MIDI read callback, called every k-cycle */
+static int MidiDataRead(CSOUND *csound, void *userData,
+ unsigned char *mbuf, int nbytes)
+{
+ cdata *data = (cdata *)userData;
+ MIDIdata *mdata = data->mdata;
+ int *q = &data->q, st, d1, d2, n = 0;
+
+ /* check if there is new data in circular queue */
+ while (mdata[*q].flag) {
+ st = (int) mdata[*q].status;
+ d1 = (int) mdata[*q].data1;
+ d2 = (int) mdata[*q].data2;
+
+ if (st < 0x80) goto next;
+
+ if (st >= 0xF0 &&
+ !(st == 0xF8 || st == 0xFA || st == 0xFB ||
+ st == 0xFC || st == 0xFF)) goto next;
+
+ nbytes -= (datbyts[(st - 0x80) >> 4] + 1);
+ if (nbytes < 0) break;
+
+ /* write to csound midi buffer */
+ n += (datbyts[(st - 0x80) >> 4] + 1);
+ switch (datbyts[(st - 0x80) >> 4]) {
+ case 0:
+ *mbuf++ = (unsigned char) st;
+ break;
+ case 1:
+ *mbuf++ = (unsigned char) st;
+ *mbuf++ = (unsigned char) d1;
+ break;
+ case 2:
+ *mbuf++ = (unsigned char) st;
+ *mbuf++ = (unsigned char) d1;
+ *mbuf++ = (unsigned char) d2;
+ break;
+ }
+ /* mark as read */
+ next:
+ mdata[*q].flag = 0;
+ (*q)++;
+ if(*q==DSIZE) *q = 0;
+
+ }
+
+ /* return the number of bytes read */
+ return n;
+}
+
+/* csound close device callback */
+static int MidiInDeviceClose(CSOUND *csound, void *userData)
+{
+ cdata * data = (cdata *)userData;
+ MIDIClientDispose(data->mclient);
+ free(data->mdata);
+ free(data);
+ return 0;
+}
+
+static int MidiDataWrite(CSOUND *csound, void *userData,
+ const unsigned char *mbuf, int nbytes)
+{
+ /* stub at the moment */
+ return nbytes;
+}
+
+
+
+static int MidiOutDeviceClose(CSOUND *csound, void *userData)
+{
+ /* sutb at the mement */
+ return 0;
+}
+
+/* module interface functions */
+
+PUBLIC int csoundModuleCreate(CSOUND *csound)
+{
+ /* nothing to do, report success */
+ csound->Message(csound, Str("CoreMIDI real time MIDI plugin for Csound\n"));
+ return 0;
+}
+
+PUBLIC int csoundModuleInit(CSOUND *csound)
+{
+ char *drv;
+
+ drv = (char*) (csound->QueryGlobalVariable(csound, "_RTMIDI"));
+ if (drv == NULL)
+ return 0;
+ if (!(strcmp(drv, "coremidi") == 0 || strcmp(drv, "CoreMidi") == 0 ||
+ strcmp(drv, "CoreMIDI") == 0 || strcmp(drv, "cm") == 0))
+ return 0;
+ csound->Message(csound, Str("rtmidi: CoreMIDI module enabled\n"));
+ csound->SetExternalMidiInOpenCallback(csound, MidiInDeviceOpen);
+ csound->SetExternalMidiReadCallback(csound, MidiDataRead);
+ csound->SetExternalMidiInCloseCallback(csound, MidiInDeviceClose);
+ csound->SetExternalMidiOutOpenCallback(csound, MidiOutDeviceOpen);
+ csound->SetExternalMidiWriteCallback(csound, MidiDataWrite);
+ csound->SetExternalMidiOutCloseCallback(csound, MidiOutDeviceClose);
+ return 0;
+}
+
+PUBLIC int csoundModuleInfo(void)
+{
+ /* does not depend on MYFLT type */
+ return ((CS_APIVERSION << 16) + (CS_APISUBVER << 8));
+}
diff --git a/InOut/libmpadec/layer1.c b/InOut/libmpadec/layer1.c
new file mode 100644
index 0000000..2311bba
--- /dev/null
+++ b/InOut/libmpadec/layer1.c
@@ -0,0 +1,155 @@
+/*
+ * mpadec - MPEG audio decoder
+ * Copyright (C) 2002-2004 Dmitriy Startsev (dstartsev at rambler.ru)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/* $Id: layer1.c,v 1.1.1.1 2004/07/27 02:57:18 metal_man Exp $ */
+
+#include "mpadec_internal.h"
+
+extern const uint32_t bitmask[17];
+extern alloc_table_t *alloc_tables[5];
+
+extern unsigned getbits(mpadec_t mpadec, int n);
+extern uint16_t update_crc(uint16_t init, uint8_t *buf, int length);
+
+static void I_decode_bitalloc(mpadec_t mpadec, uint8_t *bit_alloc,
+ uint8_t *scalefac)
+{
+ register struct mpadec_t *mpa = (struct mpadec_t *)mpadec;
+ uint8_t *ba = bit_alloc, *scf = scalefac;
+ uint32_t crclen = mpa->bytes_left;
+
+ if (mpa->frame.channels > 1) {
+ unsigned i, jsbound = mpa->frame.jsbound;
+ for (i = jsbound; i; i--) {
+ *ba++ = (uint8_t)GETBITS(4);
+ *ba++ = (uint8_t)GETBITS(4);
+ }
+ for (i = (SBLIMIT - jsbound); i; i--) *ba++ = (uint8_t)GETBITS(4);
+ if (mpa->config.crc && mpa->frame.CRC) {
+ crclen -= mpa->bytes_left;
+ mpa->crc = update_crc(mpa->crc, mpa->next_byte - crclen,
+ ((crclen << 3) - mpa->bits_left));
+ if (mpa->crc != mpa->frame.crc) mpa->error = TRUE;
+ }
+ ba = bit_alloc;
+ for (i = jsbound; i; i--) {
+ if (*ba++) *scf++ = (uint8_t)GETBITS(6);
+ if (*ba++) *scf++ = (uint8_t)GETBITS(6);
+ }
+ for (i = (SBLIMIT - jsbound); i; i--) {
+ if (*ba++) {
+ *scf++ = (uint8_t)GETBITS(6);
+ *scf++ = (uint8_t)GETBITS(6);
+ }
+ }
+ } else {
+ register unsigned i;
+ for (i = SBLIMIT; i; i--) *ba++ = (uint8_t)GETBITS(4);
+ if (mpa->config.crc && mpa->frame.CRC) {
+ crclen -= mpa->bytes_left;
+ mpa->crc = update_crc(mpa->crc, mpa->next_byte - crclen,
+ ((crclen << 3) - mpa->bits_left));
+ if (mpa->crc != mpa->frame.crc) mpa->error = TRUE;
+ }
+ ba = bit_alloc;
+ for (i = SBLIMIT; i; i--) if (*ba++) *scf++ = (uint8_t)GETBITS(6);
+ }
+}
+
+static void I_decode_samples(mpadec_t mpadec, uint8_t *bit_alloc,
+ uint8_t *scalefac, MYFLT fraction[2][SBLIMIT])
+{
+ register struct mpadec_t *mpa = (struct mpadec_t *)mpadec;
+ uint8_t *ba = bit_alloc, *scf = scalefac;
+ unsigned i, n;
+
+ if (mpa->frame.channels > 1) {
+ unsigned jsbound = mpa->frame.jsbound;
+ MYFLT *f0 = fraction[0], *f1 = fraction[1];
+ for (i = jsbound; i; i--) {
+ if ((n = *ba++) != 0)
+ *f0++ = (((-1)<<n)+GETBITS(n + 1) + 1)*mpa->tables.muls[n + 1][*scf++];
+ else *f0++ = 0.0;
+ if ((n = *ba++) != 0)
+ *f1++ = (((-1)<<n) + GETBITS(n + 1) + 1)*mpa->tables.muls[n + 1][*scf++];
+ else *f1++ = 0.0;
+ }
+ for (i = (SBLIMIT - jsbound); i; i--) {
+ if ((n = *ba++) != 0) {
+ register MYFLT tmp = (((-1) << n) + GETBITS(n + 1) + 1);
+ *f0++ = tmp*mpa->tables.muls[n + 1][*scf++];
+ *f1++ = tmp*mpa->tables.muls[n + 1][*scf++];
+ } else *f0++ = *f1++ = 0.0;
+ }
+ for (i = (SBLIMIT - mpa->frame.downsample_sblimit); i; i--)
+ *--f0 = *--f1 = 0.0;
+ } else {
+ MYFLT *f0 = fraction[0];
+ for (i = SBLIMIT; i; i--) {
+ if ((n = *ba++) != 0)
+ *f0++ = (((-1)<<n) + GETBITS(n + 1) + 1)*mpa->tables.muls[n + 1][*scf++];
+ else *f0++ = 0.0;
+ }
+ for (i = (SBLIMIT - mpa->frame.downsample_sblimit); i; i--) *--f0 = 0.0;
+ }
+}
+
+void decode_layer1(mpadec_t mpadec, uint8_t *buffer)
+{
+ register struct mpadec_t *mpa = (struct mpadec_t *)mpadec;
+ int i, j, single;
+ MYFLT fraction[2][SBLIMIT];
+ uint8_t bit_alloc[2*SBLIMIT];
+ uint8_t scalefac[2*SBLIMIT];
+
+ mpa->error = FALSE;
+ mpa->bits_left = 0;
+ mpa->frame.jsbound =
+ (uint8_t)((mpa->frame.mode == MPG_MD_JOINT_STEREO) ?
+ ((mpa->frame.mode_ext + 1) << 2) : SBLIMIT);
+ if (mpa->frame.channels > 1) switch (mpa->config.mode) {
+ case MPADEC_CONFIG_MONO: single = 0; break;
+ case MPADEC_CONFIG_CHANNEL1: single = 1; break;
+ case MPADEC_CONFIG_CHANNEL2: single = 2; break;
+ default: single = -1; break;
+ } else single = 1;
+ I_decode_bitalloc(mpa, bit_alloc, scalefac);
+ for (i = 0; i < SCALE_BLOCK; i++) {
+ I_decode_samples(mpa, bit_alloc, scalefac, fraction);
+ if (!single)
+ for (j = 0; j < SBLIMIT; j++)
+ fraction[0][j] = 0.5*(fraction[0][j] + fraction[1][j]);
+ if (single < 0) {
+ mpa->synth_func(mpa, fraction[0], 0, buffer);
+ mpa->synth_func(mpa, fraction[1], 1, buffer);
+ } else if (!single) {
+ mpa->synth_func(mpa, fraction[0], 0, buffer);
+ } else {
+ mpa->synth_func(mpa, fraction[single - 1], 0, buffer);
+ }
+ buffer += mpa->synth_size;
+ }
+ {
+ register unsigned n = mpa->bits_left >> 3;
+ mpa->next_byte -= n;
+ mpa->bytes_left += n;
+ mpa->reservoir_size = 0;
+ }
+}
+
diff --git a/InOut/libmpadec/layer2.c b/InOut/libmpadec/layer2.c
new file mode 100644
index 0000000..f3aaad7
--- /dev/null
+++ b/InOut/libmpadec/layer2.c
@@ -0,0 +1,240 @@
+/*
+ * mpadec - MPEG audio decoder
+ * Copyright (C) 2002-2004 Dmitriy Startsev (dstartsev at rambler.ru)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/* $Id: layer2.c,v 1.2 2009/03/01 15:27:05 jpff Exp $ */
+
+#include "mpadec_internal.h"
+
+extern const uint32_t bitmask[17];
+extern alloc_table_t *alloc_tables[5];
+
+extern unsigned getbits(mpadec_t mpadec, int n);
+extern uint16_t update_crc(uint16_t init, uint8_t *buf, int length);
+
+static void II_decode_bitalloc(mpadec_t mpadec, uint8_t *bit_alloc,
+ uint8_t *scalefac)
+{
+ register struct mpadec_t *mpa = (struct mpadec_t *)mpadec;
+ alloc_table_t *alloc = mpa->frame.alloc_table;
+ uint8_t *scfsi, *ba = bit_alloc, *scf = scalefac;
+ unsigned i, step, sblimit2, sblimit = mpa->frame.sblimit;
+ uint32_t crclen = mpa->bytes_left;
+ uint8_t scfsi_buf[2*SBLIMIT];
+
+ if (mpa->frame.channels > 1) {
+ unsigned jsbound = mpa->frame.jsbound;
+ sblimit2 = sblimit << 1;
+ for (i = jsbound; i; i--, alloc += (1 << step)) {
+ step = alloc->bits;
+ *ba++ = (uint8_t)GETBITS(step);
+ *ba++ = (uint8_t)GETBITS(step);
+ }
+ for (i = sblimit - jsbound; i; i--, alloc += (1 << step)) {
+ step = alloc->bits;
+ ba[0] = (uint8_t)GETBITS(step);
+ ba[1] = ba[0];
+ ba += 2;
+ }
+ ba = bit_alloc;
+ scfsi = scfsi_buf;
+ for (i = sblimit2; i; i--) if (*ba++) *scfsi++ = (uint8_t)GETBITS(2);
+ } else {
+ sblimit2 = sblimit;
+ for (i = sblimit; i; i--, alloc += (1 << step)) {
+ step = alloc->bits;
+ *ba++ = (uint8_t)GETBITS(step);
+ }
+ ba = bit_alloc;
+ scfsi = scfsi_buf;
+ for (i = sblimit; i; i--) if (*ba++) *scfsi++ = (uint8_t)GETBITS(2);
+ }
+ if (mpa->config.crc && mpa->frame.CRC) {
+ crclen -= mpa->bytes_left;
+ mpa->crc = update_crc(mpa->crc, mpa->next_byte - crclen,
+ ((crclen << 3) - mpa->bits_left));
+ if (mpa->crc != mpa->frame.crc) mpa->error = TRUE;
+ }
+ ba = bit_alloc;
+ scfsi = scfsi_buf;
+ for (i = sblimit2; i; i--) {
+ if (*ba++) {
+ switch (*scfsi++) {
+ case 0:
+ scf[0] = (uint8_t)GETBITS(6);
+ scf[1] = (uint8_t)GETBITS(6);
+ scf[2] = (uint8_t)GETBITS(6);
+ break;
+ case 1:
+ scf[0] = (uint8_t)GETBITS(6);
+ scf[1] = scf[0];
+ scf[2] = (uint8_t)GETBITS(6);
+ break;
+ case 2:
+ scf[0] = (uint8_t)GETBITS(6);
+ scf[1] = scf[2] = scf[0];
+ break;
+ default:
+ scf[0] = (uint8_t)GETBITS(6);
+ scf[1] = (uint8_t)GETBITS(6);
+ scf[2] = scf[1];
+ break;
+ }
+ scf += 3;
+ }
+ }
+}
+
+static void II_decode_samples(mpadec_t mpadec, uint8_t *bit_alloc,
+ uint8_t *scalefac, MYFLT fraction[2][4][SBLIMIT],
+ int x1)
+{
+ register struct mpadec_t *mpa = (struct mpadec_t *)mpadec;
+ alloc_table_t *alloc = mpa->frame.alloc_table, *alloc2;
+ uint8_t *ba = bit_alloc, *scf = scalefac;
+ unsigned i, j, k, step, sblimit = mpa->frame.sblimit;
+ unsigned jsbound = mpa->frame.jsbound;
+
+ for (i = 0; i < jsbound; i++, alloc += (1 << step)) {
+ step = alloc->bits;
+ for (j = 0; j < (unsigned)mpa->frame.channels; j++) {
+ unsigned b = *ba++; int d;
+ if (b) {
+ alloc2 = alloc + b;
+ k = alloc2->bits;
+ d = alloc2->d;
+ if (d < 0) {
+ register MYFLT cm = mpa->tables.muls[k][scf[x1]];
+ fraction[j][0][i] = ((MYFLT)((int)GETBITS(k) + d))*cm;
+ fraction[j][1][i] = ((MYFLT)((int)GETBITS(k) + d))*cm;
+ fraction[j][2][i] = ((MYFLT)((int)GETBITS(k) + d))*cm;
+ } else {
+ unsigned idx = GETBITS(k), m = scf[x1];
+ uint8_t *tab = (mpa->tables.mp2tables[d] + 3*idx);
+ fraction[j][0][i] = mpa->tables.muls[*tab++][m];
+ fraction[j][1][i] = mpa->tables.muls[*tab++][m];
+ fraction[j][2][i] = mpa->tables.muls[*tab][m];
+ }
+ scf += 3;
+ } else fraction[j][0][i] = fraction[j][1][i] = fraction[j][2][i] = 0.0;
+ }
+ }
+ for (i = jsbound; i < sblimit; i++, alloc += (1 << step)) {
+ unsigned b = ba[1]; int d;
+ step = alloc->bits;
+ ba += 2;
+ if (b) {
+ alloc2 = alloc + b;
+ k = alloc2->bits;
+ d = alloc2->d;
+ if (d < 0) {
+ register MYFLT cm = mpa->tables.muls[k][scf[x1 + 3]];
+ fraction[1][0][i] = fraction[0][0][i] = ((MYFLT)((int)GETBITS(k) + d))*cm;
+ fraction[1][1][i] = fraction[0][1][i] = ((MYFLT)((int)GETBITS(k) + d))*cm;
+ fraction[1][2][i] = fraction[0][2][i] = ((MYFLT)((int)GETBITS(k) + d))*cm;
+ cm = mpa->tables.muls[k][scf[x1]];
+ fraction[0][0][i] *= cm;
+ fraction[0][1][i] *= cm;
+ fraction[0][2][i] *= cm;
+ } else {
+ unsigned idx = GETBITS(k), m1 = scf[x1], m2 = scf[x1 + 3];
+ uint8_t *tab = (mpa->tables.mp2tables[d] + 3*idx);
+ fraction[0][0][i] = mpa->tables.muls[*tab][m1];
+ fraction[1][0][i] = mpa->tables.muls[*tab++][m2];
+ fraction[0][1][i] = mpa->tables.muls[*tab][m1];
+ fraction[1][1][i] = mpa->tables.muls[*tab++][m2];
+ fraction[0][2][i] = mpa->tables.muls[*tab][m1];
+ fraction[1][2][i] = mpa->tables.muls[*tab][m2];
+ }
+ scf += 6;
+ } else fraction[0][0][i] = fraction[0][1][i] = fraction[0][2][i] =
+ fraction[1][0][i] = fraction[1][1][i] = fraction[1][2][i] = 0.0;
+ }
+ if (sblimit > (unsigned)mpa->frame.downsample_sblimit)
+ sblimit = mpa->frame.downsample_sblimit;
+ for (i = sblimit; i < SBLIMIT; i++)
+ for (j = 0; j < (unsigned)mpa->frame.channels; j++)
+ fraction[j][0][i] = fraction[j][1][i] = fraction[j][2][i] = 0.0;
+}
+
+void decode_layer2(mpadec_t mpadec, uint8_t *buffer)
+{
+ register struct mpadec_t *mpa = (struct mpadec_t *)mpadec;
+ int i, j, table, single;
+ MYFLT fraction[2][4][SBLIMIT];
+ uint8_t bit_alloc[2*SBLIMIT];
+ uint8_t scalefac[3*2*SBLIMIT];
+ static uint8_t sblimits[5] = { 27 , 30 , 8, 12 , 30 };
+ static uint8_t translate[3][2][16] =
+ { { { 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 1, 1, 1, 1, 1, 0 },
+ { 0, 2, 2, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 } },
+ { { 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
+ { { 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 1, 1, 1, 1, 1, 0 },
+ { 0, 3, 3, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 } } };
+
+ mpa->error = FALSE;
+ mpa->bits_left = 0;
+ if (mpa->frame.LSF) table = 4;
+ else
+ table =
+ translate[mpa->frame.frequency_index]
+ [2 - mpa->frame.channels][mpa->frame.bitrate_index];
+ mpa->frame.alloc_table = alloc_tables[table];
+ mpa->frame.sblimit = sblimits[table];
+ mpa->frame.jsbound =
+ (uint8_t)((mpa->frame.mode == MPG_MD_JOINT_STEREO) ?
+ ((mpa->frame.mode_ext + 1) << 2) : mpa->frame.sblimit);
+ if (mpa->frame.channels > 1)
+ switch (mpa->config.mode) {
+ case MPADEC_CONFIG_MONO: single = 0; break;
+ case MPADEC_CONFIG_CHANNEL1: single = 1; break;
+ case MPADEC_CONFIG_CHANNEL2: single = 2; break;
+ default: single = -1; break;
+ } else single = 1;
+ II_decode_bitalloc(mpa, bit_alloc, scalefac);
+ for (i = 0; i < SCALE_BLOCK; i++) {
+ II_decode_samples(mpa, bit_alloc, scalefac, fraction, i >> 2);
+ if (!single) for (j = 0; j < 3; j++) {
+ register int k;
+ for (k = 0; k < SBLIMIT; k++)
+ fraction[0][j][k] = 0.5*(fraction[0][j][k] + fraction[1][j][k]);
+ }
+ if (single < 0) {
+ for (j = 0; j < 3; j++, buffer += mpa->synth_size) {
+ mpa->synth_func(mpa, fraction[0][j], 0, buffer);
+ mpa->synth_func(mpa, fraction[1][j], 1, buffer);
+ }
+ } else if (!single) {
+ for (j = 0; j < 3; j++, buffer += mpa->synth_size) {
+ mpa->synth_func(mpa, fraction[0][j], 0, buffer);
+ }
+ } else {
+ for (j = 0; j < 3; j++, buffer += mpa->synth_size) {
+ mpa->synth_func(mpa, fraction[single - 1][j], 0, buffer);
+ }
+ }
+ }
+ {
+ register unsigned n = mpa->bits_left >> 3;
+ mpa->next_byte -= n;
+ mpa->bytes_left += n;
+ mpa->reservoir_size = 0;
+ }
+}
+
diff --git a/InOut/libmpadec/layer3.c b/InOut/libmpadec/layer3.c
new file mode 100644
index 0000000..cdd931e
--- /dev/null
+++ b/InOut/libmpadec/layer3.c
@@ -0,0 +1,1026 @@
+
+/*
+ * mpadec - MPEG audio decoder
+ * Copyright (C) 2002-2004 Dmitriy Startsev (dstartsev at rambler.ru)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/* $Id: layer3.c,v 1.3 2009/03/01 15:27:05 jpff Exp $ */
+
+#include "mpadec_internal.h"
+
+extern const uint32_t bitmask[17];
+extern bandinfo_t band_info[];
+extern newhuff_t hufft[], hufftc[];
+extern const MYFLT newcos[8];
+extern const MYFLT tfcos36[9];
+extern const MYFLT tfcos12[3];
+extern const MYFLT cs[8];
+extern const MYFLT ca[8];
+
+extern uint32_t getbits(mpadec_t mpadec, unsigned n);
+extern uint16_t update_crc(uint16_t init, uint8_t *buf, int length);
+
+static int decode_layer3_sideinfo(mpadec_t mpadec)
+{
+ register struct mpadec_t *mpa = (struct mpadec_t *)mpadec;
+ int ch, gr, ms_stereo, powdiff, databits = 0;
+ static const uint8_t tabs[2][5] = { { 2, 9, 5, 3, 4 }, { 1, 8, 1, 2, 9 } };
+ const uint8_t *tab = tabs[mpa->frame.LSF];
+
+ ms_stereo = ((mpa->frame.mode == MPG_MD_JOINT_STEREO) &&
+ (mpa->frame.mode_ext & 2));
+ powdiff = ((mpa->frame.channels > 1) &&
+ (mpa->config.mode == MPADEC_CONFIG_MONO)) ? 4 : 0;
+ mpa->sideinfo.main_data_begin = GETBITS(tab[1]);
+ if (mpa->frame.channels == 1) mpa->sideinfo.private_bits = GETBITS(tab[2]);
+ else mpa->sideinfo.private_bits = GETBITS(tab[3]);
+ if (!mpa->frame.LSF) {
+ for (ch = 0; ch < mpa->frame.channels; ch++) {
+ mpa->sideinfo.ch[ch].gr[0].scfsi = -1;
+ mpa->sideinfo.ch[ch].gr[1].scfsi = GETBITS(4);
+ }
+ }
+ for (gr = 0; gr < tab[0]; gr++) {
+ for (ch = 0; ch < mpa->frame.channels; ch++) {
+ register grinfo_t *grinfo = &mpa->sideinfo.ch[ch].gr[gr];
+ grinfo->part2_3_length = GETBITS(12);
+ grinfo->big_values = GETBITS(9);
+ databits += grinfo->part2_3_length;
+ if (grinfo->big_values > 288) grinfo->big_values = 288;
+ grinfo->pow2gain = mpa->tables.gainpow2 + 256 - GETBITS(8) + powdiff;
+ if (ms_stereo) grinfo->pow2gain += 2;
+ grinfo->scalefac_compress = GETBITS(tab[4]);
+ if (GETBITS(1)) {
+ grinfo->block_type = (uint8_t)GETBITS(2);
+ grinfo->mixed_block_flag = (uint8_t)GETBITS(1);
+ grinfo->table_select[0] = GETBITS(5);
+ grinfo->table_select[1] = GETBITS(5);
+ grinfo->table_select[2] = 0;
+ grinfo->full_gain[0] = grinfo->pow2gain + (GETBITS(3) << 3);
+ grinfo->full_gain[1] = grinfo->pow2gain + (GETBITS(3) << 3);
+ grinfo->full_gain[2] = grinfo->pow2gain + (GETBITS(3) << 3);
+ if (!grinfo->block_type) {
+ mpa->error = TRUE;
+ return 0;
+ } else mpa->error = FALSE;
+ if (mpa->frame.LSF) {
+ if (grinfo->block_type == 2) {
+ if (grinfo->mixed_block_flag) {
+ if (mpa->frame.frequency_index == 8) grinfo->region1start = 48;
+ else grinfo->region1start = 48 >> 1;
+ } else {
+ if (mpa->frame.frequency_index == 8) grinfo->region1start = 36;
+ else grinfo->region1start = 36 >> 1;
+ }
+ } else {
+ if (mpa->frame.frequency_index == 8) grinfo->region1start = 54;
+ else grinfo->region1start = 54 >> 1;
+ }
+ } else grinfo->region1start = 36 >> 1;
+ grinfo->region2start = 576 >> 1;
+ } else {
+ grinfo->block_type = 0;
+ grinfo->mixed_block_flag = 0;
+ grinfo->table_select[0] = GETBITS(5);
+ grinfo->table_select[1] = GETBITS(5);
+ grinfo->table_select[2] = GETBITS(5);
+ {
+ register int tmp = GETBITS(4);
+ grinfo->region1start =
+ band_info[mpa->frame.frequency_index].long_idx[tmp + 1] >> 1;
+ tmp += GETBITS(3);
+ grinfo->region2start =
+ band_info[mpa->frame.frequency_index].long_idx[tmp + 2] >> 1;
+ }
+ }
+ if (!mpa->frame.LSF) grinfo->preflag = (uint8_t)GETBITS(1);
+ grinfo->scalefac_scale = (uint8_t)GETBITS(1);
+ grinfo->count1table_select = (uint8_t)GETBITS(1);
+ }
+ }
+ databits -= 8*mpa->sideinfo.main_data_begin;
+ return databits;
+}
+
+static int III_get_scale_factors(mpadec_t mpadec, grinfo_t *gr_info, int32_t *scf)
+{
+ register struct mpadec_t *mpa = (struct mpadec_t *)mpadec;
+ register grinfo_t *grinfo = gr_info;
+ int numbits = 0;
+ static uint8_t slen[2][16] =
+ { {0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4},
+ {0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3} };
+ static uint8_t stab[3][6][4] =
+ { { { 6, 5, 5,5 } , { 6, 5, 7,3 } , { 11,10,0,0} ,
+ { 7, 7, 7,0 } , { 6, 6, 6,3 } , { 8, 8,5,0} } ,
+ { { 9, 9, 9,9 } , { 9, 9,12,6 } , { 18,18,0,0} ,
+ {12,12,12,0 } , {12, 9, 9,6 } , { 15,12,9,0} } ,
+ { { 6, 9, 9,9 } , { 6, 9,12,6 } , { 15,18,0,0} ,
+ { 6,15,12,0 } , { 6,12, 9,6 } , { 6,18,9,0} } };
+
+ if (!mpa->frame.LSF) {
+ int i, num0 = slen[0][grinfo->scalefac_compress],
+ num1 = slen[1][grinfo->scalefac_compress];
+ if (grinfo->block_type == 2) {
+ i = 18; numbits = 18*(num0 + num1);
+ if (grinfo->mixed_block_flag) {
+ i--;
+ numbits -= num0;
+ }
+ for (; i; i--) *scf++ = GETBITS(num0);
+ for (i = 18; i; i--) *scf++ = GETBITS(num1);
+ scf[0] = scf[1] = scf[2] = 0;
+ } else {
+ if (grinfo->scfsi < 0) {
+ for (i = 11; i; i--) *scf++ = GETBITS(num0);
+ for (i = 10; i; i--) *scf++ = GETBITS(num1);
+ numbits = 10*(num0 + num1) + num0;
+ *scf = 0;
+ } else {
+ numbits = 0;
+ if (!(grinfo->scfsi & 8)) {
+ for (i = 6; i; i--) *scf++ = GETBITS(num0);
+ numbits += 6*num0;
+ } else scf += 6;
+ if (!(grinfo->scfsi & 4)) {
+ for (i = 5; i; i--) *scf++ = GETBITS(num0);
+ numbits += 5*num0;
+ } else scf += 5;
+ if (!(grinfo->scfsi & 2)) {
+ for (i = 5; i; i--) *scf++ = GETBITS(num1);
+ numbits += 5*num1;
+ } else scf += 5;
+ if (!(grinfo->scfsi & 1)) {
+ for (i = 5; i; i--) *scf++ = GETBITS(num1);
+ numbits += 5*num1;
+ } else scf += 5;
+ *scf = 0;
+ }
+ }
+ } else {
+ int i, j, n = 0;
+ unsigned s_len; uint8_t *pnt;
+ if ((mpa->frame.mode == MPG_MD_JOINT_STEREO) && (mpa->frame.mode_ext & 1)) {
+ s_len = mpa->tables.i_slen2[grinfo->scalefac_compress >> 1];
+ } else s_len = mpa->tables.n_slen2[grinfo->scalefac_compress];
+ grinfo->preflag = (uint8_t)((s_len >> 15) & 1);
+ if (grinfo->block_type == 2) n = grinfo->mixed_block_flag ? 2 : 1;
+ pnt = stab[n][(s_len >> 12) & 7];
+ for (i = 0; i < 4; i++) {
+ int num = s_len & 7;
+ s_len >>= 3;
+ if (num) {
+ for (j = 0; j < (int)pnt[i]; j++) *scf++ = GETBITS(num);
+ numbits += pnt[i]*num;
+ } else for (j = 0; j < (int)pnt[i]; j++) *scf++ = 0;
+ }
+ for (i = (n << 1) + 1; i; i--) *scf++ = 0;
+ }
+ return numbits;
+}
+
+static int III_decode_samples(mpadec_t mpadec, grinfo_t *gr_info, MYFLT xr[SBLIMIT][SSLIMIT], int32_t *scf, int part2bits)
+{
+ register struct mpadec_t *mpa = (struct mpadec_t *)mpadec;
+ register grinfo_t *grinfo = gr_info;
+ int shift = 1 + grinfo->scalefac_scale, l[3], l3;
+ int part2remain = grinfo->part2_3_length - part2bits;
+ MYFLT *xrptr = (MYFLT *)xr; int32_t *me;
+ static uint8_t pretab1[22] =
+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 3, 3, 2, 0 };
+ static uint8_t pretab2[22] =
+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
+
+ l3 = ((576 >> 1) - grinfo->big_values) >> 1;
+ if (grinfo->big_values <= grinfo->region1start) {
+ l[0] = grinfo->big_values;
+ l[1] = l[2] = 0;
+ } else {
+ l[0] = grinfo->region1start;
+ if (grinfo->big_values <= grinfo->region2start) {
+ l[1] = grinfo->big_values - l[0]; l[2] = 0;
+ } else {
+ l[1] = grinfo->region2start - l[0];
+ l[2] = grinfo->big_values - grinfo->region2start;
+ }
+ }
+ if (grinfo->block_type == 2) {
+ int32_t i, max[4], step = 0, lwin = 0, cb = 0;
+ register MYFLT v = 0.0;
+ register int32_t *m, mc;
+
+ if (grinfo->mixed_block_flag) {
+ max[3] = -1;
+ max[0] = max[1] = max[2] = 2;
+ m = mpa->tables.map[mpa->frame.frequency_index][0];
+ me = mpa->tables.mapend[mpa->frame.frequency_index][0];
+ } else {
+ max[0] = max[1] = max[2] = max[3] = -1;
+ m = mpa->tables.map[mpa->frame.frequency_index][1];
+ me = mpa->tables.mapend[mpa->frame.frequency_index][1];
+ }
+ mc = 0;
+ for (i = 0; i < 2; i++) {
+ int lp = l[i];
+ newhuff_t *h = hufft + grinfo->table_select[i];
+ for (; lp; lp--, mc--) {
+ register int x, y;
+ if (!mc) {
+ mc = *m++;
+ xrptr = ((MYFLT *)xr) + (*m++);
+ lwin = *m++;
+ cb = *m++;
+ if (lwin == 3) {
+ v = grinfo->pow2gain[(*scf++) << shift];
+ step = 1;
+ } else {
+ v = grinfo->full_gain[lwin][(*scf++) << shift];
+ step = 3;
+ }
+ }
+ {
+ register int16_t *val = h->table;
+ while ((y = *val++) < 0) {
+ if (GETBITS(1)) val -= y;
+ part2remain--;
+ }
+ x = y >> 4;
+ y &= 0x0F;
+ }
+ if ((x == 15) && h->linbits) {
+ max[lwin] = cb;
+ part2remain -= h->linbits + 1;
+ x += GETBITS(h->linbits);
+ if (GETBITS(1)) *xrptr = -mpa->tables.ispow[x]*v;
+ else *xrptr = mpa->tables.ispow[x]*v;
+ } else if (x) {
+ max[lwin] = cb;
+ if (GETBITS(1)) *xrptr = -mpa->tables.ispow[x]*v;
+ else *xrptr = mpa->tables.ispow[x]*v;
+ part2remain--;
+ } else *xrptr = 0.0;
+ xrptr += step;
+ if ((y == 15) && h->linbits) {
+ max[lwin] = cb;
+ part2remain -= h->linbits + 1;
+ y += GETBITS(h->linbits);
+ if (GETBITS(1)) *xrptr = -mpa->tables.ispow[y]*v;
+ else *xrptr = mpa->tables.ispow[y]*v;
+ } else if (y) {
+ max[lwin] = cb;
+ if (GETBITS(1)) *xrptr = -mpa->tables.ispow[y]*v;
+ else *xrptr = mpa->tables.ispow[y]*v;
+ part2remain--;
+ } else *xrptr = 0.0;
+ xrptr += step;
+ }
+ }
+ for (; l3 && (part2remain > 0); l3--) {
+ newhuff_t *h = hufftc + grinfo->count1table_select;
+ register int16_t *val = h->table, a;
+ while ((a = *val++) < 0) {
+ part2remain--;
+ if (part2remain < 0) {
+ part2remain++;
+ a = 0;
+ break;
+ }
+ if (GETBITS(1)) val -= a;
+ }
+ for (i = 0; i < 4; i++) {
+ if (!(i & 1)) {
+ if (!mc) {
+ mc = *m++;
+ xrptr = ((MYFLT *)xr) + (*m++);
+ lwin = *m++;
+ cb = *m++;
+ if (lwin == 3) {
+ v = grinfo->pow2gain[(*scf++) << shift];
+ step = 1;
+ } else {
+ v = grinfo->full_gain[lwin][(*scf++) << shift];
+ step = 3;
+ }
+ }
+ mc--;
+ }
+ if (a & (8 >> i)) {
+ max[lwin] = cb;
+ part2remain--;
+ if (part2remain < 0) {
+ part2remain++;
+ break;
+ }
+ if (GETBITS(1)) *xrptr = -v;
+ else *xrptr = v;
+ } else *xrptr = 0.0;
+ xrptr += step;
+ }
+ }
+ if (lwin < 3) {
+ while (1) {
+ for (; mc > 0; mc--) {
+ xrptr[0] = xrptr[3] = 0.0;
+ xrptr += 6;
+ }
+ if (m >= me) break;
+ mc = *m++;
+ xrptr = ((MYFLT *)xr) + (*m++);
+ if ((*m++) == 0) break;
+ m++;
+ }
+ }
+ grinfo->maxband[0] = max[0] + 1;
+ grinfo->maxband[1] = max[1] + 1;
+ grinfo->maxband[2] = max[2] + 1;
+ grinfo->maxbandl = max[3] + 1;
+ {
+ int rmax = max[0] > max[1] ? max[0] : max[1];
+ rmax = (rmax > max[2] ? rmax : max[2]) + 1;
+ grinfo->maxb =
+ rmax ? mpa->tables.short_limit[mpa->frame.frequency_index][rmax] :
+ mpa->tables.long_limit[mpa->frame.frequency_index][max[3] + 1];
+ }
+ } else {
+ uint8_t *pretab = grinfo->preflag ? pretab1 : pretab2;
+ int32_t i, max = -1, cb = 0, mc = 0;
+ int32_t *m = mpa->tables.map[mpa->frame.frequency_index][2];
+ register MYFLT v = 0.0;
+
+ for (i = 0; i < 3; i++) {
+ int lp = l[i];
+ newhuff_t *h = hufft + grinfo->table_select[i];
+ for (; lp; lp--, mc--) {
+ register int x, y;
+ if (!mc) {
+ mc = *m++;
+ cb = *m++;
+ if (cb == 21) v = 0.0;
+ else v = grinfo->pow2gain[((*scf++) + (*pretab++)) << shift];
+ }
+ {
+ register int16_t *val = h->table;
+ while ((y = *val++) < 0) {
+ if (GETBITS(1)) val -= y;
+ part2remain--;
+ }
+ x = y >> 4;
+ y &= 0x0F;
+ }
+ if ((x == 15) && h->linbits) {
+ max = cb;
+ part2remain -= h->linbits + 1;
+ x += GETBITS(h->linbits);
+ if (GETBITS(1)) *xrptr++ = -mpa->tables.ispow[x]*v;
+ else *xrptr++ = mpa->tables.ispow[x]*v;
+ } else if (x) {
+ max = cb;
+ if (GETBITS(1)) *xrptr++ = -mpa->tables.ispow[x]*v;
+ else *xrptr++ = mpa->tables.ispow[x]*v;
+ part2remain--;
+ } else *xrptr++ = 0.0;
+ if ((y == 15) && h->linbits) {
+ max = cb;
+ part2remain -= h->linbits + 1;
+ y += GETBITS(h->linbits);
+ if (GETBITS(1)) *xrptr++ = -mpa->tables.ispow[y]*v;
+ else *xrptr++ = mpa->tables.ispow[y]*v;
+ } else if (y) {
+ max = cb;
+ if (GETBITS(1)) *xrptr++ = -mpa->tables.ispow[y]*v;
+ else *xrptr++ = mpa->tables.ispow[y]*v;
+ part2remain--;
+ } else *xrptr++ = 0.0;
+ }
+ }
+ for (; l3 && (part2remain > 0); l3--) {
+ newhuff_t *h = hufftc + grinfo->count1table_select;
+ register int16_t *val = h->table, a;
+ while ((a = *val++) < 0) {
+ part2remain--;
+ if (part2remain < 0) {
+ part2remain++;
+ a = 0;
+ break;
+ }
+ if (GETBITS(1)) val -= a;
+ }
+ for (i = 0; i < 4; i++) {
+ if (!(i & 1)) {
+ if (!mc) {
+ mc = *m++;
+ cb = *m++;
+ v = grinfo->pow2gain[((*scf++) + (*pretab++)) << shift];
+ }
+ mc--;
+ }
+ if (a & (8 >> i)) {
+ max = cb;
+ part2remain--;
+ if (part2remain < 0) {
+ part2remain++;
+ break;
+ }
+ if (GETBITS(1)) *xrptr++ = -v;
+ else *xrptr++ = v;
+ } else *xrptr++ = 0.0;
+ }
+ }
+ grinfo->maxbandl = max + 1;
+ grinfo->maxb = mpa->tables.long_limit[mpa->frame.frequency_index][max + 1];
+ }
+ while (xrptr < &xr[SBLIMIT][0]) *xrptr++ = 0.0;
+ while (part2remain > 0) {
+ register unsigned tmp, i = (part2remain > 16) ? 16 : part2remain;
+ tmp = GETBITS(i);
+ part2remain -= i;
+ i = tmp;
+ }
+ mpa->error = (uint8_t)((part2remain < 0) ? TRUE : FALSE);
+ return mpa->error;
+}
+
+static void III_i_stereo(mpadec_t mpadec, grinfo_t *gr_info,
+ MYFLT xrbuf[2][SBLIMIT][SSLIMIT], int32_t *scalefac)
+{
+ register struct mpadec_t *mpa = (struct mpadec_t *)mpadec;
+ register grinfo_t *grinfo = gr_info;
+ MYFLT (*xr)[SBLIMIT*SSLIMIT] = (MYFLT (*)[SBLIMIT*SSLIMIT])xrbuf;
+ bandinfo_t *bi = &band_info[mpa->frame.frequency_index];
+ int tab = mpa->frame.LSF + (grinfo->scalefac_compress & mpa->frame.LSF);
+ int ms_stereo = ((mpa->frame.mode == MPG_MD_JOINT_STEREO) &&
+ (mpa->frame.mode_ext & 2)) ? TRUE : FALSE;
+ const MYFLT *tab1, *tab2;
+
+ tab1 = mpa->tables.istabs[tab][ms_stereo][0];
+ tab2 = mpa->tables.istabs[tab][ms_stereo][1];
+ if (grinfo->block_type == 2) {
+ int lwin, do_l = grinfo->mixed_block_flag;
+ for (lwin = 0; lwin < 3; lwin++) {
+ int32_t is_p, sb, idx, sfb = grinfo->maxband[lwin];
+ if (sfb > 3) do_l = FALSE;
+ for (; sfb < 12; sfb++) {
+ is_p = scalefac[3*sfb + lwin - grinfo->mixed_block_flag];
+ if (is_p != 7) {
+ MYFLT t1 = tab1[is_p], t2 = tab2[is_p];
+ sb = bi->short_diff[sfb];
+ idx = bi->short_idx[sfb] + lwin;
+ for (; sb; sb--, idx += 3) {
+ register MYFLT v = xr[0][idx];
+ xr[0][idx] = v*t1;
+ xr[1][idx] = v*t2;
+ }
+ }
+ }
+ is_p = scalefac[3*11 + lwin - grinfo->mixed_block_flag];
+ sb = bi->short_diff[12];
+ idx = bi->short_idx[12] + lwin;
+ if (is_p != 7) {
+ MYFLT t1 = tab1[is_p], t2 = tab2[is_p];
+ for (; sb; sb--, idx += 3) {
+ register MYFLT v = xr[0][idx];
+ xr[0][idx] = v*t1;
+ xr[1][idx] = v*t2;
+ }
+ }
+ }
+ if (do_l) {
+ int sfb = grinfo->maxbandl;
+ int idx = bi->long_idx[sfb];
+ for (; sfb < 8; sfb++) {
+ int sb = bi->long_diff[sfb];
+ int is_p = scalefac[sfb];
+ if (is_p != 7) {
+ MYFLT t1 = tab1[is_p], t2 = tab2[is_p];
+ for (; sb; sb--, idx++) {
+ register MYFLT v = xr[0][idx];
+ xr[0][idx] = v*t1;
+ xr[1][idx] = v*t2;
+ }
+ } else idx += sb;
+ }
+ }
+ } else {
+ int sfb = grinfo->maxbandl;
+ int is_p, idx = bi->long_idx[sfb];
+ for (; sfb < 21; sfb++) {
+ int sb = bi->long_diff[sfb];
+ is_p = scalefac[sfb];
+ if (is_p != 7) {
+ MYFLT t1 = tab1[is_p], t2 = tab2[is_p];
+ for (; sb; sb--, idx++) {
+ register MYFLT v = xr[0][idx];
+ xr[0][idx] = v*t1;
+ xr[1][idx] = v*t2;
+ }
+ } else idx += sb;
+ }
+ is_p = scalefac[20];
+ if (is_p != 7) {
+ int sb = bi->long_diff[21];
+ MYFLT t1 = tab1[is_p], t2 = tab2[is_p];
+ for (; sb; sb--, idx++) {
+ register MYFLT v = xr[0][idx];
+ xr[0][idx] = v*t1;
+ xr[1][idx] = v*t2;
+ }
+ }
+ }
+}
+
+static void III_antialias(grinfo_t *gr_info, MYFLT xr[SBLIMIT][SSLIMIT])
+{
+ register grinfo_t *grinfo = gr_info;
+ int sblim;
+
+ if (grinfo->block_type == 2) {
+ if (!grinfo->mixed_block_flag) return;
+ sblim = 1;
+ } else sblim = grinfo->maxb - 1;
+ {
+ int sb;
+ MYFLT *xr1 = (MYFLT *)xr[1];
+ for (sb = sblim; sb; sb--, xr1 += 10) {
+ int ss;
+ MYFLT *xr2 = xr1;
+ for (ss = 0; ss < 8; ss++) {
+ register MYFLT bu = *--xr2, bd = *xr1;
+ *xr2 = bu*cs[ss] - bd*ca[ss];
+ *xr1++ = bd*cs[ss] + bu*ca[ss];
+ }
+ }
+ }
+}
+
+static void dct36(register MYFLT *in, register MYFLT *out1,
+ register MYFLT *out2, register MYFLT *w, register MYFLT *ts)
+{
+ MYFLT tmp[18];
+
+ {
+ in[17] += in[16]; in[16] += in[15]; in[15] += in[14];
+ in[14] += in[13]; in[13] += in[12]; in[12] += in[11];
+ in[11] += in[10]; in[10] += in[9]; in[9] += in[8];
+ in[8] += in[7]; in[7] += in[6]; in[6] += in[5];
+ in[5] += in[4]; in[4] += in[3]; in[3] += in[2];
+ in[2] += in[1]; in[1] += in[0];
+
+ in[17] += in[15]; in[15] += in[13]; in[13] += in[11]; in[11] += in[9];
+ in[9] += in[7]; in[7] += in[5]; in[5] += in[3]; in[3] += in[1];
+
+ {
+ MYFLT t3;
+ {
+ MYFLT t0, t1, t2;
+
+ t0 = newcos[7]*(in[8] + in[16] - in[4]);
+ t1 = newcos[7]*in[12];
+ t3 = in[0];
+ t2 = t3 - t1 - t1;
+ tmp[1] = tmp[7] = t2 - t0;
+ tmp[4] = t2 + t0 + t0;
+ t3 += t1;
+ t2 = newcos[6]*(in[10] + in[14] - in[2]);
+ tmp[1] -= t2;
+ tmp[7] += t2;
+ }
+ {
+ MYFLT t0, t1, t2;
+
+ t0 = newcos[0]*(in[4] + in[8]);
+ t1 = newcos[1]*(in[8] - in[16]);
+ t2 = newcos[2]*(in[4] + in[16]);
+ tmp[2] = tmp[6] = t3 - t0 - t2;
+ tmp[0] = tmp[8] = t3 + t0 + t1;
+ tmp[3] = tmp[5] = t3 - t1 + t2;
+ }
+ }
+ {
+ MYFLT t1, t2, t3;
+
+ t1 = newcos[3]*(in[2] + in[10]);
+ t2 = newcos[4]*(in[10] - in[14]);
+ t3 = newcos[6]*in[6];
+ {
+ MYFLT t0 = t1 + t2 + t3;
+ tmp[0] += t0;
+ tmp[8] -= t0;
+ }
+ t2 -= t3;
+ t1 -= t3;
+ t3 = newcos[5]*(in[2] + in[14]);
+ t1 += t3;
+ tmp[3] += t1;
+ tmp[5] -= t1;
+ t2 -= t3;
+ tmp[2] += t2;
+ tmp[6] -= t2;
+ }
+ {
+ MYFLT t0, t1, t2, t3, t4, t5, t6, t7;
+
+ t1 = newcos[7]*in[13];
+ t2 = newcos[7]*(in[9] + in[17] - in[5]);
+ t3 = in[1] + t1;
+ t4 = in[1] - t1 - t1;
+ t5 = t4 - t2;
+ t0 = newcos[0]*(in[5] + in[9]);
+ t1 = newcos[1]*(in[9] - in[17]);
+ tmp[13] = (t4 + t2 + t2)*tfcos36[17 - 13];
+ t2 = newcos[2]*(in[5] + in[17]);
+ t6 = t3 - t0 - t2;
+ t0 += t3 + t1;
+ t3 += t2 - t1;
+ t2 = newcos[3]*(in[3] + in[11]);
+ t4 = newcos[4]*(in[11] - in[15]);
+ t7 = newcos[6]*in[7];
+ t1 = t2 + t4 + t7;
+ tmp[17] = (t0 + t1)*tfcos36[17 - 17];
+ tmp[9] = (t0 - t1)*tfcos36[17 - 9];
+ t1 = newcos[5]*(in[3] + in[15]);
+ t2 += t1 - t7;
+ tmp[14] = (t3 + t2)*tfcos36[17 - 14];
+ t0 = newcos[6]*(in[11] + in[15] - in[3]);
+ tmp[12] = (t3 - t2)*tfcos36[17 - 12];
+ t4 -= t1 + t7;
+ tmp[16] = (t5 - t0)*tfcos36[17 - 16];
+ tmp[10] = (t5 + t0)*tfcos36[17 - 10];
+ tmp[15] = (t6 + t4)*tfcos36[17 - 15];
+ tmp[11] = (t6 - t4)*tfcos36[17 - 11];
+ }
+ }
+#define DCT36_MACRO(v) { \
+ register MYFLT tmpval = tmp[(v)] + tmp[17 - (v)]; \
+ out2[9 + (v)] = tmpval*w[27 + (v)]; \
+ out2[8 - (v)] = tmpval*w[26 - (v)]; \
+ tmpval = tmp[(v)] - tmp[17 - (v)]; \
+ ts[SBLIMIT*(8 - (v))] = out1[8 - (v)] + tmpval*w[8 - (v)]; \
+ ts[SBLIMIT*(9 + (v))] = out1[9 + (v)] + tmpval*w[9 + (v)]; \
+ }
+ {
+ DCT36_MACRO(0);
+ DCT36_MACRO(1);
+ DCT36_MACRO(2);
+ DCT36_MACRO(3);
+ DCT36_MACRO(4);
+ DCT36_MACRO(5);
+ DCT36_MACRO(6);
+ DCT36_MACRO(7);
+ DCT36_MACRO(8);
+ }
+#undef DCT36_MACRO
+}
+
+
+static void dct12(register MYFLT *in, register MYFLT *out1,
+ register MYFLT *out2, register MYFLT *w, register MYFLT *ts)
+{
+#define DCT12_PART1 in5 = in[5*3]; \
+ in5 += (in4 = in[4*3]); \
+ in4 += (in3 = in[3*3]); \
+ in3 += (in2 = in[2*3]); \
+ in2 += (in1 = in[1*3]); \
+ in1 += (in0 = in[0*3]); \
+ in5 += in3; in3 += in1; \
+ in2 *= newcos[6]; \
+ in3 *= newcos[6];
+
+#define DCT12_PART2 in0 += in4*newcos[7]; \
+ in4 = in0 + in2; \
+ in0 -= in2; \
+ in1 += in5*newcos[7]; \
+ in5 = (in1 + in3)*tfcos12[0]; \
+ in1 = (in1 - in3)*tfcos12[2]; \
+ in3 = in4 + in5; \
+ in4 -= in5; \
+ in2 = in0 + in1; \
+ in0 -= in1;
+
+ {
+ MYFLT in0, in1, in2, in3, in4, in5;
+
+ ts[0*SBLIMIT] = out1[0]; ts[1*SBLIMIT] = out1[1]; ts[2*SBLIMIT] = out1[2];
+ ts[3*SBLIMIT] = out1[3]; ts[4*SBLIMIT] = out1[4]; ts[5*SBLIMIT] = out1[5];
+
+ DCT12_PART1
+
+ {
+ register MYFLT tmp0, tmp1 = in0 - in4;
+ {
+ register MYFLT tmp2 = (in1 - in5)*tfcos12[1];
+ tmp0 = tmp1 + tmp2;
+ tmp1 -= tmp2;
+ }
+ ts[(17 - 1)*SBLIMIT] = out1[17 - 1] + tmp0*w[11 - 1];
+ ts[(12 + 1)*SBLIMIT] = out1[12 + 1] + tmp0*w[6 + 1];
+ ts[(6 + 1)*SBLIMIT] = out1[6 + 1] + tmp1*w[1];
+ ts[(11 - 1)*SBLIMIT] = out1[11 - 1] + tmp1*w[5 - 1];
+ }
+
+ DCT12_PART2
+
+ ts[(17 - 0)*SBLIMIT] = out1[17 - 0] + in2*w[11 - 0];
+ ts[(12 + 0)*SBLIMIT] = out1[12 + 0] + in2*w[6 + 0];
+ ts[(12 + 2)*SBLIMIT] = out1[12 + 2] + in3*w[6 + 2];
+ ts[(17 - 2)*SBLIMIT] = out1[17 - 2] + in3*w[11 - 2];
+ ts[(6 + 0)*SBLIMIT] = out1[6 + 0] + in0*w[0];
+ ts[(11 - 0)*SBLIMIT] = out1[11 - 0] + in0*w[5 - 0];
+ ts[(6 + 2)*SBLIMIT] = out1[6 + 2] + in4*w[2];
+ ts[(11 - 2)*SBLIMIT] = out1[11 - 2] + in4*w[5 - 2];
+ }
+ in++;
+ {
+ MYFLT in0, in1, in2, in3, in4, in5;
+
+ DCT12_PART1
+
+ {
+ register MYFLT tmp0, tmp1 = in0 - in4;
+ {
+ register MYFLT tmp2 = (in1 - in5)*tfcos12[1];
+ tmp0 = tmp1 + tmp2;
+ tmp1 -= tmp2;
+ }
+ out2[5 - 1] = tmp0*w[11 - 1];
+ out2[0 + 1] = tmp0*w[6 + 1];
+ ts[(12 + 1)*SBLIMIT] += tmp1*w[0 + 1];
+ ts[(17 - 1)*SBLIMIT] += tmp1*w[5 - 1];
+ }
+
+ DCT12_PART2
+
+ out2[5 - 0] = in2*w[11 - 0];
+ out2[0 + 0] = in2*w[6 + 0];
+ out2[0 + 2] = in3*w[6 + 2];
+ out2[5 - 2] = in3*w[11 - 2];
+ ts[(12 + 0)*SBLIMIT] += in0*w[0];
+ ts[(17 - 0)*SBLIMIT] += in0*w[5 - 0];
+ ts[(12 + 2)*SBLIMIT] += in4*w[2];
+ ts[(17 - 2)*SBLIMIT] += in4*w[5 - 2];
+ }
+ in++;
+ {
+ MYFLT in0, in1, in2, in3, in4, in5;
+
+ out2[12] = out2[13] = out2[14] = out2[15] = out2[16] = out2[17] = 0.0;
+
+ DCT12_PART1
+
+ {
+ register MYFLT tmp0, tmp1 = in0 - in4;
+ {
+ register MYFLT tmp2 = (in1 - in5)*tfcos12[1];
+ tmp0 = tmp1 + tmp2;
+ tmp1 -= tmp2;
+ }
+ out2[11 - 1] = tmp0*w[11 - 1];
+ out2[6 + 1] = tmp0*w[6 + 1];
+ out2[0 + 1] += tmp1*w[1];
+ out2[5 - 1] += tmp1*w[5 - 1];
+ }
+
+ DCT12_PART2
+
+ out2[11 - 0] = in2*w[11 - 0];
+ out2[6 + 0] = in2*w[6 + 0];
+ out2[6 + 2] = in3*w[6 + 2];
+ out2[11 - 2] = in3*w[11 - 2];
+ out2[0 + 0] += in0*w[0];
+ out2[5 - 0] += in0*w[5 - 0];
+ out2[0 + 2] += in4*w[2];
+ out2[5 - 2] += in4*w[5 - 2];
+ }
+#undef DCT12_PART1
+#undef DCT12_PART2
+}
+
+static void III_hybrid(mpadec_t mpadec, grinfo_t *gr_info,
+ MYFLT fs_in[SBLIMIT][SSLIMIT],
+ MYFLT ts_out[SSLIMIT][SBLIMIT], int channel)
+{
+ register struct mpadec_t *mpa = (struct mpadec_t *)mpadec;
+ register grinfo_t *grinfo = gr_info;
+ MYFLT *tsptr = (MYFLT *)ts_out;
+ MYFLT *out1, *out2;
+ unsigned bt = grinfo->block_type, sb = 0;
+
+ {
+ register unsigned b = mpa->hybrid_block[channel];
+ out1 = mpa->hybrid_buffers[b][channel];
+ b ^= 1;
+ out2 = mpa->hybrid_buffers[b][channel];
+ mpa->hybrid_block[channel] = (uint8_t)b;
+ }
+ if (grinfo->mixed_block_flag) {
+ sb = 2;
+ dct36(fs_in[0], out1, out2, mpa->tables.win[0][0], tsptr);
+ dct36(fs_in[1], out1 + SSLIMIT, out2 + SSLIMIT,
+ mpa->tables.win[1][0], tsptr + 1);
+ out1 += 36; out2 += 36; tsptr += 2;
+ }
+ if (bt == 2) {
+ for (; sb < grinfo->maxb; sb += 2, out1 += 36, out2 += 36, tsptr += 2) {
+ dct12(fs_in[sb], out1, out2, mpa->tables.win[0][2], tsptr);
+ dct12(fs_in[sb + 1], out1 + SSLIMIT, out2 + SSLIMIT,
+ mpa->tables.win[1][2], tsptr + 1);
+ }
+ } else {
+ for (; sb < grinfo->maxb; sb += 2, out1 += 36, out2 += 36, tsptr += 2) {
+ dct36(fs_in[sb], out1, out2, mpa->tables.win[0][bt], tsptr);
+ dct36(fs_in[sb + 1], out1 + SSLIMIT, out2 + SSLIMIT,
+ mpa->tables.win[1][bt], tsptr + 1);
+ }
+ }
+ for (; sb < SBLIMIT; sb++, tsptr++) {
+ register int i;
+ for (i = 0; i < SSLIMIT; i++) {
+ tsptr[i*SBLIMIT] = *out1++;
+ *out2++ = 0.0;
+ }
+ }
+}
+
+void decode_layer3(mpadec_t mpadec, uint8_t *buffer)
+{
+ register struct mpadec_t *mpa = (struct mpadec_t *)mpadec;
+ uint8_t *saved_next_byte = mpa->next_byte;
+ uint32_t saved_bytes_left = mpa->bytes_left;
+ int32_t dbits, scalefacs[2][39];
+ int ch, gr, ss, i_stereo, ms_stereo, single, channels,
+ granules = mpa->frame.LSF ? 1 : 2;
+
+ mpa->error = FALSE;
+ mpa->bits_left = 0;
+ if (mpa->config.crc && mpa->frame.CRC) {
+ mpa->crc = update_crc(mpa->crc, mpa->next_byte, mpa->ssize << 3);
+ if (mpa->crc != mpa->frame.crc) mpa->error = TRUE;
+ }
+ dbits = decode_layer3_sideinfo(mpa);
+ mpa->dsize = (((dbits < 0) ? 0 : dbits) + 7) >> 3;
+ mpa->next_byte = saved_next_byte + mpa->ssize;
+ mpa->bytes_left = saved_bytes_left - mpa->ssize;
+ mpa->bits_left = 0;
+ saved_next_byte = NULL;
+ saved_bytes_left = mpa->bytes_left;
+ if (mpa->error) mpa->sideinfo.main_data_begin = mpa->reservoir_size + 1;
+ if (mpa->sideinfo.main_data_begin) {
+ if (mpa->sideinfo.main_data_begin <= mpa->reservoir_size) {
+ uint8_t *ptr = mpa->reservoir + mpa->reservoir_size;
+ uint32_t tmp = mpa->frame.frame_size - mpa->hsize - mpa->ssize;
+ if (tmp > (sizeof(mpa->reservoir) - mpa->reservoir_size))
+ tmp = sizeof(mpa->reservoir) - mpa->reservoir_size;
+ saved_next_byte = mpa->next_byte;
+ memcpy(ptr, mpa->next_byte, tmp);
+ mpa->next_byte = ptr - mpa->sideinfo.main_data_begin;
+ mpa->bytes_left = mpa->sideinfo.main_data_begin + tmp;
+ } else {
+ uint32_t tmp = mpa->frame.frame_size - mpa->hsize - mpa->ssize;
+ if (tmp > 512) {
+ mpa->next_byte += tmp - 512;
+ mpa->bytes_left -= tmp - 512;
+ tmp = 512;
+ }
+ if ((mpa->reservoir_size) && (mpa->reservoir_size > 512)) {
+ memmove(mpa->reservoir, mpa->reservoir + mpa->reservoir_size - 512, 512);
+ mpa->reservoir_size = 512;
+ }
+ memcpy(mpa->reservoir + mpa->reservoir_size, mpa->next_byte, tmp);
+ mpa->reservoir_size += tmp;
+ mpa->next_byte += tmp;
+ mpa->bytes_left -= tmp;
+ memset(buffer, 0, mpa->frame.decoded_size);
+ mpa->error = TRUE;
+ return;
+ }
+ }
+ if (mpa->frame.mode == MPG_MD_JOINT_STEREO) {
+ i_stereo = mpa->frame.mode_ext & 1;
+ ms_stereo = (mpa->frame.mode_ext & 2) >> 1;
+ } else i_stereo = ms_stereo = 0;
+ if (mpa->frame.channels > 1) switch (mpa->config.mode) {
+ case MPADEC_CONFIG_MONO: single = 0; break;
+ case MPADEC_CONFIG_CHANNEL1: single = 1; break;
+ case MPADEC_CONFIG_CHANNEL2: single = 2; break;
+ default: single = -1; break;
+ } else single = 1;
+ channels = (single < 0) ? 2 : 1;
+ for (gr = 0; gr < granules; gr++) {
+ grinfo_t *grinfo = &mpa->sideinfo.ch[0].gr[gr];
+ int32_t part2bits = III_get_scale_factors(mpa, grinfo, scalefacs[0]);
+ if (III_decode_samples(mpa, grinfo, mpa->hybrid_in[0], scalefacs[0],
+ part2bits)) {
+ unsigned size = mpa->frame.decoded_size;
+ if (!mpa->frame.LSF && gr) size >>= 1;
+ memset(buffer, 0, size);
+ mpa->error = TRUE;
+ goto done;
+ }
+ if (mpa->frame.channels > 1) {
+ grinfo = &mpa->sideinfo.ch[1].gr[gr];
+ part2bits = III_get_scale_factors(mpa, grinfo, scalefacs[1]);
+ if (III_decode_samples(mpa, grinfo, mpa->hybrid_in[1], scalefacs[1],
+ part2bits)) {
+ unsigned size = mpa->frame.decoded_size;
+ if (!mpa->frame.LSF && gr) size >>= 1;
+ memset(buffer, 0, size);
+ mpa->error = TRUE;
+ goto done;
+ }
+ if (ms_stereo) {
+ MYFLT *in0 = (MYFLT *)(mpa->hybrid_in[0]),
+ *in1 = (MYFLT *)(mpa->hybrid_in[1]);
+ unsigned i, maxb = mpa->sideinfo.ch[0].gr[gr].maxb;
+ if (mpa->sideinfo.ch[1].gr[gr].maxb > maxb)
+ maxb = mpa->sideinfo.ch[1].gr[gr].maxb;
+ for (i = 0; i < SSLIMIT*maxb; i++) {
+ register MYFLT tmp0 = in0[i];
+ register MYFLT tmp1 = in1[i];
+ in0[i] = tmp0 + tmp1;
+ in1[i] = tmp0 - tmp1;
+ }
+ }
+ if (i_stereo) III_i_stereo(mpa, grinfo, mpa->hybrid_in, scalefacs[1]);
+ if (i_stereo || ms_stereo || !single) {
+ if (grinfo->maxb > mpa->sideinfo.ch[0].gr[gr].maxb)
+ mpa->sideinfo.ch[0].gr[gr].maxb = grinfo->maxb;
+ else grinfo->maxb = mpa->sideinfo.ch[0].gr[gr].maxb;
+ }
+ if (!single) {
+ register unsigned i;
+ MYFLT *in0 = (MYFLT *)(mpa->hybrid_in[0]),
+ *in1 = (MYFLT *)(mpa->hybrid_in[1]);
+ for (i = 0; i < SSLIMIT*grinfo->maxb; i++, in0++)
+ *in0 = (*in0 + *in1++);
+ } else if (single == 2) {
+ register unsigned i;
+ MYFLT *in0 = (MYFLT *)(mpa->hybrid_in[0]),
+ *in1 = (MYFLT *)(mpa->hybrid_in[1]);
+ for (i = 0; i < SSLIMIT*grinfo->maxb; i++, in0++) *in0 = *in1++;
+ }
+ }
+ for (ch = 0; ch < channels; ch++) {
+ grinfo = &mpa->sideinfo.ch[ch].gr[gr];
+ III_antialias(grinfo, mpa->hybrid_in[ch]);
+ III_hybrid(mpa, grinfo, mpa->hybrid_in[ch], mpa->hybrid_out[ch], ch);
+ }
+ if (single < 0) {
+ for (ss = 0; ss < SSLIMIT; ss++, buffer += mpa->synth_size) {
+ mpa->synth_func(mpa, mpa->hybrid_out[0][ss], 0, buffer);
+ mpa->synth_func(mpa, mpa->hybrid_out[1][ss], 1, buffer);
+ }
+ } else {
+ for (ss = 0; ss < SSLIMIT; ss++, buffer += mpa->synth_size) {
+ mpa->synth_func(mpa, mpa->hybrid_out[0][ss], 0, buffer);
+ }
+ }
+ }
+ done:
+ {
+ register unsigned n = mpa->bits_left >> 3;
+ mpa->next_byte -= n;
+ mpa->bytes_left += n;
+ if (saved_next_byte) {
+ uint32_t tmp = mpa->frame.frame_size - mpa->hsize - mpa->ssize;
+ if (mpa->bytes_left) {
+ if (mpa->bytes_left > 512) {
+ mpa->next_byte += mpa->bytes_left - 512;
+ mpa->bytes_left = 512;
+ }
+ memmove(mpa->reservoir, mpa->next_byte, mpa->bytes_left);
+ mpa->reservoir_size = mpa->bytes_left;
+ } else mpa->reservoir_size = 0;
+ mpa->next_byte = saved_next_byte + tmp;
+ mpa->bytes_left = saved_bytes_left - tmp;
+ } else {
+ uint32_t tmp = mpa->frame.frame_size - mpa->hsize - mpa->ssize;
+ mpa->reservoir_size = 0;
+ if (tmp > (saved_bytes_left - mpa->bytes_left)) {
+ tmp -= saved_bytes_left - mpa->bytes_left;
+ if (tmp > 512) {
+ mpa->next_byte += tmp - 512;
+ mpa->bytes_left -= tmp - 512;
+ tmp = 512;
+ }
+ memcpy(mpa->reservoir, mpa->next_byte, tmp);
+ mpa->reservoir_size = tmp;
+ mpa->next_byte += tmp;
+ mpa->bytes_left -= tmp;
+ }
+ }
+ }
+}
+
diff --git a/InOut/libmpadec/mp3dec.c b/InOut/libmpadec/mp3dec.c
new file mode 100644
index 0000000..ee3d577
--- /dev/null
+++ b/InOut/libmpadec/mp3dec.c
@@ -0,0 +1,342 @@
+/*
+ * mpadec - MPEG audio decoder
+ * Copyright (C) 2002-2004 Dmitriy Startsev (dstartsev at rambler.ru)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/* $Id: mp3dec.c,v 1.6 2009/03/01 15:27:05 jpff Exp $ */
+
+#include "csoundCore.h"
+#include "mp3dec_internal.h"
+
+mp3dec_t mp3dec_init(void)
+{
+ register struct mp3dec_t *mp3 =
+ (struct mp3dec_t *)malloc(sizeof(struct mp3dec_t));
+
+ if (!mp3) return NULL;
+ memset(mp3, 0, sizeof(struct mp3dec_t));
+ mp3->size = sizeof(struct mp3dec_t);
+ mp3->fd = -1;
+ mp3->mpadec = mpadec_init();
+ if (!mp3->mpadec) {
+ free(mp3);
+ return NULL;
+ }
+ return mp3;
+}
+
+int mp3dec_init_file(mp3dec_t mp3dec, int fd, int64_t length, int nogap)
+{
+ register struct mp3dec_t *mp3 = (struct mp3dec_t *)mp3dec;
+ int64_t tmp; int r;
+
+ if (!mp3 || (mp3->size != sizeof(struct mp3dec_t)) || !mp3->mpadec)
+ return MP3DEC_RETCODE_INVALID_HANDLE;
+ if (fd < 0) {
+ mp3dec_reset(mp3);
+ return MP3DEC_RETCODE_INVALID_PARAMETERS;
+ }
+ if (mp3->flags & MP3DEC_FLAG_INITIALIZED) close(mp3->fd);
+ mp3->fd = fd;
+ mp3->flags = MP3DEC_FLAG_SEEKABLE;
+ mp3->stream_offset = mp3->stream_size = mp3->stream_position = 0;
+ mp3->in_buffer_offset = mp3->in_buffer_used = 0;
+ mp3->out_buffer_offset = mp3->out_buffer_used = 0;
+ tmp = lseek(fd, 0, SEEK_CUR);
+ if (tmp >= 0) mp3->stream_offset = tmp;
+ else mp3->flags &= ~MP3DEC_FLAG_SEEKABLE;
+ if (mp3->flags & MP3DEC_FLAG_SEEKABLE) {
+ tmp = lseek(fd, 0, SEEK_END);
+ if (tmp >= 0) {
+ mp3->stream_size = tmp;
+ lseek(fd, mp3->stream_offset, SEEK_SET);
+ } else mp3->flags &= ~MP3DEC_FLAG_SEEKABLE;
+ }
+ if (mp3->stream_size > mp3->stream_offset) {
+ mp3->stream_size -= mp3->stream_offset;
+ if (length && (length < mp3->stream_size)) mp3->stream_size = length;
+ } else mp3->stream_size = length;
+ r = read(fd, mp3->in_buffer, 4);
+ if (r < 4) {
+ mp3dec_reset(mp3);
+ return ((r < 0) ? MP3DEC_RETCODE_INVALID_PARAMETERS :
+ MP3DEC_RETCODE_NOT_MPEG_STREAM);
+ } else mp3->in_buffer_used = r;
+ if (mp3->flags & MP3DEC_FLAG_SEEKABLE)
+ tmp = lseek(fd, mp3->stream_offset, SEEK_SET); else tmp = -1;
+ if (tmp < 0) {
+ int32_t n = sizeof(mp3->in_buffer) - mp3->in_buffer_used;
+ mp3->flags &= ~MP3DEC_FLAG_SEEKABLE;
+ if (mp3->stream_size && (n > (mp3->stream_size - mp3->in_buffer_used)))
+ n = (int32_t)(mp3->stream_size - mp3->in_buffer_used);
+ n = read(fd, mp3->in_buffer + mp3->in_buffer_used, n);
+ if (n < 0) n = 0;
+ mp3->in_buffer_used += n;
+ mp3->stream_position = mp3->in_buffer_used;
+ } else {
+ int32_t n = sizeof(mp3->in_buffer);
+ if (mp3->stream_size && (n > mp3->stream_size)) n = (int32_t)mp3->stream_size;
+ n = read(fd, mp3->in_buffer, n);
+ if (n < 0) n = 0;
+ mp3->stream_position = mp3->in_buffer_used = n;
+ }
+ if (mp3->in_buffer_used < 4) {
+ mp3dec_reset(mp3);
+ return MP3DEC_RETCODE_NOT_MPEG_STREAM;
+ }
+ if (nogap) {
+ mpadec_decode(mp3->mpadec, mp3->in_buffer, mp3->in_buffer_used,
+ mp3->out_buffer, sizeof(mp3->out_buffer),
+ &mp3->in_buffer_offset, &mp3->out_buffer_used);
+ mp3->in_buffer_used -= mp3->in_buffer_offset;
+ if (!mp3->out_buffer_used) {
+ mpadec_reset(mp3->mpadec);
+ mp3->in_buffer_used += mp3->in_buffer_offset;
+ mp3->in_buffer_offset = 0;
+ }
+ } else mpadec_reset(mp3->mpadec);
+ if (!mp3->out_buffer_used) {
+ r = mpadec_decode(mp3->mpadec, mp3->in_buffer, mp3->in_buffer_used,
+ NULL, 0, &mp3->in_buffer_offset, NULL);
+ mp3->in_buffer_used -= mp3->in_buffer_offset;
+ if (r != MPADEC_RETCODE_OK) {
+ mp3dec_reset(mp3);
+ return MP3DEC_RETCODE_NOT_MPEG_STREAM;
+ }
+ }
+ if ((mpadec_get_info(mp3->mpadec, &mp3->mpainfo,
+ MPADEC_INFO_STREAM) != MPADEC_RETCODE_OK) ||
+ (mpadec_get_info(mp3->mpadec, &mp3->taginfo,
+ MPADEC_INFO_TAG) != MPADEC_RETCODE_OK)) {
+ mp3dec_reset(mp3);
+ return MP3DEC_RETCODE_NOT_MPEG_STREAM;
+ }
+ if (mp3->taginfo.flags & 2)
+ if (!mp3->stream_size || (mp3->stream_size > mp3->taginfo.bytes))
+ mp3->stream_size = mp3->taginfo.bytes;
+ if (mp3->taginfo.flags & 1) {
+ mp3->mpainfo.frames = mp3->taginfo.frames;
+ if (mp3->mpainfo.frames && mp3->mpainfo.frame_samples) {
+ mp3->mpainfo.bitrate = (int32_t)
+ ((MYFLT)(((MYFLT)mp3->stream_size*(MYFLT)mp3->mpainfo.frequency + 0.5)/
+ ((MYFLT)125.0*mp3->mpainfo.frame_samples*mp3->mpainfo.frames)));
+ }
+ } else if (mp3->mpainfo.bitrate && mp3->mpainfo.frame_samples) {
+ mp3->mpainfo.frames = (int32_t)
+ ((MYFLT)(((MYFLT)mp3->stream_size*(MYFLT)mp3->mpainfo.frequency + 0.5)/
+ ((MYFLT)125.0*mp3->mpainfo.frame_samples*mp3->mpainfo.bitrate)));
+ }
+ mp3->mpainfo.duration =
+ (mp3->mpainfo.frames*mp3->mpainfo.frame_samples +
+ (mp3->mpainfo.frequency >> 1))/mp3->mpainfo.frequency;
+ mp3->flags |= MP3DEC_FLAG_INITIALIZED;
+ return MP3DEC_RETCODE_OK;
+}
+
+int mp3dec_uninit(mp3dec_t mp3dec)
+{
+ register struct mp3dec_t *mp3 = (struct mp3dec_t *)mp3dec;
+
+ if (!mp3 || (mp3->size != sizeof(struct mp3dec_t)) || !mp3->mpadec)
+ return MP3DEC_RETCODE_INVALID_HANDLE;
+ if (mp3->flags & MP3DEC_FLAG_INITIALIZED) close(mp3->fd);
+ mp3->fd = -1;
+ mp3->flags = 0;
+ mpadec_uninit(mp3->mpadec);
+ mp3->size = 0;
+ return MP3DEC_RETCODE_OK;
+}
+
+int mp3dec_reset(mp3dec_t mp3dec)
+{
+ register struct mp3dec_t *mp3 = (struct mp3dec_t *)mp3dec;
+
+ if (!mp3 || (mp3->size != sizeof(struct mp3dec_t)) || !mp3->mpadec)
+ return MP3DEC_RETCODE_INVALID_HANDLE;
+ if (mp3->flags & MP3DEC_FLAG_INITIALIZED) close(mp3->fd);
+ mp3->fd = -1;
+ mp3->flags = 0;
+ mpadec_reset(mp3->mpadec);
+ mp3->stream_offset = mp3->stream_size = mp3->stream_position = 0;
+ mp3->in_buffer_offset = mp3->in_buffer_used = 0;
+ mp3->out_buffer_offset = mp3->out_buffer_used = 0;
+ memset(&mp3->mpainfo, 0, sizeof(mp3->mpainfo));
+ memset(&mp3->taginfo, 0, sizeof(mp3->taginfo));
+ return MP3DEC_RETCODE_OK;
+}
+
+int mp3dec_configure(mp3dec_t mp3dec, mpadec_config_t *cfg)
+{
+ register struct mp3dec_t *mp3 = (struct mp3dec_t *)mp3dec;
+
+ if (!mp3 || (mp3->size != sizeof(struct mp3dec_t)) || !mp3->mpadec)
+ return MP3DEC_RETCODE_INVALID_HANDLE;
+ mp3->out_buffer_offset = mp3->out_buffer_used = 0;
+ if (mpadec_configure(mp3->mpadec, cfg) != MPADEC_RETCODE_OK)
+ return MP3DEC_RETCODE_INVALID_PARAMETERS;
+ return MP3DEC_RETCODE_OK;
+}
+
+int mp3dec_get_info(mp3dec_t mp3dec, void *info, int info_type)
+{
+ register struct mp3dec_t *mp3 = (struct mp3dec_t *)mp3dec;
+
+ if (!mp3 || (mp3->size != sizeof(struct mp3dec_t)) || !mp3->mpadec)
+ return MP3DEC_RETCODE_INVALID_HANDLE;
+ if (!info) return MP3DEC_RETCODE_INVALID_PARAMETERS;
+ if (mp3->flags & MP3DEC_FLAG_INITIALIZED) {
+ switch (info_type) {
+ case MPADEC_INFO_STREAM:
+ memcpy(info, &mp3->mpainfo, sizeof(mp3->mpainfo)); break;
+ case MPADEC_INFO_TAG:
+ memcpy(info, &mp3->taginfo, sizeof(mp3->taginfo)); break;
+ case MPADEC_INFO_CONFIG:
+ default:
+ if (mpadec_get_info(mp3->mpadec, info, info_type) != MPADEC_RETCODE_OK)
+ return MP3DEC_RETCODE_INVALID_PARAMETERS;
+ }
+ } else return MP3DEC_RETCODE_BAD_STATE;
+ return MP3DEC_RETCODE_OK;
+}
+
+int mp3dec_decode(mp3dec_t mp3dec, uint8_t *buf, uint32_t bufsize, uint32_t *used)
+{
+ register struct mp3dec_t *mp3 = (struct mp3dec_t *)mp3dec;
+ uint32_t n, src_used, dst_used; int r;
+
+ if (used) *used = 0;
+ if (!mp3 || (mp3->size != sizeof(struct mp3dec_t)) || !mp3->mpadec)
+ return MP3DEC_RETCODE_INVALID_HANDLE;
+ if (!(mp3->flags & MP3DEC_FLAG_INITIALIZED)) return MP3DEC_RETCODE_BAD_STATE;
+ if (!buf) return MP3DEC_RETCODE_INVALID_PARAMETERS;
+ while (bufsize) {
+ if (mp3->out_buffer_used) {
+ n = (bufsize < mp3->out_buffer_used) ? bufsize : mp3->out_buffer_used;
+ memcpy(buf, mp3->out_buffer + mp3->out_buffer_offset, n);
+ mp3->out_buffer_offset += n;
+ mp3->out_buffer_used -= n;
+ buf += n;
+ bufsize -= n;
+ if (used) *used += n;
+ }
+ if (!bufsize) break;
+ if (mp3->in_buffer_used > 4) {
+ r = mpadec_decode(mp3->mpadec, mp3->in_buffer + mp3->in_buffer_offset,
+ mp3->in_buffer_used, buf, bufsize, &src_used, &dst_used);
+ mp3->in_buffer_offset += src_used;
+ mp3->in_buffer_used -= src_used;
+ buf += dst_used;
+ bufsize -= dst_used;
+ if (used) *used += dst_used;
+ if (!bufsize) break;
+ if (r == MPADEC_RETCODE_BUFFER_TOO_SMALL) {
+ mp3->out_buffer_offset = mp3->out_buffer_used = 0;
+ mpadec_decode(mp3->mpadec, mp3->in_buffer + mp3->in_buffer_offset,
+ mp3->in_buffer_used, mp3->out_buffer,
+ sizeof(mp3->out_buffer), &src_used, &mp3->out_buffer_used);
+ mp3->in_buffer_offset += src_used;
+ mp3->in_buffer_used -= src_used;
+ continue;
+ }
+ }
+ if (mp3->in_buffer_used && mp3->in_buffer_offset)
+ memmove(mp3->in_buffer, mp3->in_buffer + mp3->in_buffer_offset,
+ mp3->in_buffer_used);
+ mp3->in_buffer_offset = 0;
+ n = sizeof(mp3->in_buffer) - mp3->in_buffer_used;
+ if (mp3->stream_size && (n > (mp3->stream_size - mp3->stream_position)))
+ n = (int32_t)(mp3->stream_size - mp3->stream_position);
+ if (n) r = read(mp3->fd, mp3->in_buffer + mp3->in_buffer_used, n);
+ else r = 0;
+ if (r < 0) r = 0;
+ mp3->in_buffer_used += r;
+ mp3->stream_position += r;
+ if (mp3->stream_position > mp3->stream_size)
+ mp3->stream_position = mp3->stream_size;
+ if (!r) break;
+ }
+ return MP3DEC_RETCODE_OK;
+}
+
+int mp3dec_seek(mp3dec_t mp3dec, int64_t pos, int units)
+{
+ register struct mp3dec_t *mp3 = (struct mp3dec_t *)mp3dec;
+ int64_t newpos;
+
+ if (!mp3 || (mp3->size != sizeof(struct mp3dec_t)) || !mp3->mpadec)
+ return MP3DEC_RETCODE_INVALID_HANDLE;
+ if (!(mp3->flags & MP3DEC_FLAG_INITIALIZED)) return MP3DEC_RETCODE_BAD_STATE;
+ if (!(mp3->flags & MP3DEC_FLAG_SEEKABLE)) return MP3DEC_RETCODE_SEEK_FAILED;
+ if (units == MP3DEC_SEEK_BYTES) {
+ newpos = (pos < mp3->stream_size) ? pos : mp3->stream_size;
+ newpos = lseek(mp3->fd, mp3->stream_offset + newpos, SEEK_SET);
+ if (newpos < 0) return MP3DEC_RETCODE_SEEK_FAILED;
+ mp3->stream_position = newpos - mp3->stream_offset;
+ mp3->in_buffer_offset = mp3->in_buffer_used = 0;
+ mp3->out_buffer_offset = mp3->out_buffer_used = 0;
+ } else if (units == MP3DEC_SEEK_SAMPLES) {
+ MYFLT fsize =
+ (MYFLT)(125.0*mp3->mpainfo.bitrate*mp3->mpainfo.decoded_frame_samples)/
+ (MYFLT)mp3->mpainfo.decoded_frequency;
+ newpos = (int64_t)
+ ((MYFLT)pos*fsize/(MYFLT)mp3->mpainfo.decoded_frame_samples);
+ if (newpos > mp3->stream_size) newpos = mp3->stream_size;
+ pos = (pos%mp3->mpainfo.decoded_frame_samples)*
+ mp3->mpainfo.decoded_sample_size;
+ newpos = lseek(mp3->fd, mp3->stream_offset + newpos, SEEK_SET);
+ if (newpos < 0) return MP3DEC_RETCODE_SEEK_FAILED;
+ mp3->stream_position = newpos - mp3->stream_offset;
+ mp3->in_buffer_offset = mp3->in_buffer_used = 0;
+ mp3->out_buffer_offset = mp3->out_buffer_used = 0;
+ {
+ uint8_t temp[8*1152];
+ mp3dec_decode(mp3, temp, (uint32_t)pos, NULL);
+ }
+ } else if (units == MP3DEC_SEEK_SECONDS) {
+ if (pos > mp3->mpainfo.duration) pos = mp3->mpainfo.duration;
+ if (mp3->taginfo.flags & 4) {
+ int32_t n = (int32_t)((100*pos + (mp3->mpainfo.duration >> 1))/
+ mp3->mpainfo.duration);
+ if (n > 99) newpos = mp3->stream_size;
+ else newpos = (mp3->taginfo.toc[n]*mp3->stream_size)/255;
+ }
+ else newpos =
+ (pos*mp3->stream_size + (mp3->mpainfo.duration >> 1))/
+ mp3->mpainfo.duration;
+ if (newpos > mp3->stream_size) newpos = mp3->stream_size;
+ newpos = lseek(mp3->fd, mp3->stream_offset + newpos, SEEK_SET);
+ if (newpos < 0) return MP3DEC_RETCODE_SEEK_FAILED;
+ mp3->stream_position = newpos - mp3->stream_offset;
+ mp3->in_buffer_offset = mp3->in_buffer_used = 0;
+ mp3->out_buffer_offset = mp3->out_buffer_used = 0;
+ } else return MP3DEC_RETCODE_INVALID_PARAMETERS;
+ return MP3DEC_RETCODE_OK;
+}
+
+char *mp3dec_error(int code)
+{
+ static char *mp3_errors[] = { "No error",
+ "Invalid handle",
+ "Bad decoder state",
+ "Invalid parameters",
+ "Not an MPEG audio stream",
+ "Seek failed",
+ "Unknown error" };
+ if (code > MP3DEC_RETCODE_UNKNOWN) code = MP3DEC_RETCODE_UNKNOWN;
+ return mp3_errors[code];
+}
+
diff --git a/InOut/libmpadec/mp3dec_internal.h b/InOut/libmpadec/mp3dec_internal.h
new file mode 100644
index 0000000..12fdede
--- /dev/null
+++ b/InOut/libmpadec/mp3dec_internal.h
@@ -0,0 +1,50 @@
+/*
+ * mpadec - MPEG audio decoder
+ * Copyright (C) 2002-2004 Dmitriy Startsev (dstartsev at rambler.ru)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/* $Id: mp3dec_internal.h,v 1.2 2004/08/02 09:38:09 metal_man Exp $ */
+
+#ifndef __MP3DEC_INTERNAL_H
+#define __MP3DEC_INTERNAL_H
+
+#include "mpadec_config.h"
+#include "mp3dec.h"
+
+#define MP3DEC_FLAG_INITIALIZED 1
+#define MP3DEC_FLAG_SEEKABLE 2
+
+struct mp3dec_t {
+ uint32_t size;
+ mpadec_t mpadec;
+ int32_t fd;
+ uint32_t flags;
+ int64_t stream_offset;
+ int64_t stream_size;
+ int64_t stream_position;
+ mpadec_info_t mpainfo;
+ mp3tag_info_t taginfo;
+ uint32_t in_buffer_offset;
+ uint32_t in_buffer_used;
+ uint32_t out_buffer_offset;
+ uint32_t out_buffer_used;
+ uint8_t in_buffer[0x10000];
+ uint8_t out_buffer[8*1152];
+};
+
+#endif
+
diff --git a/InOut/libmpadec/mpadec.c b/InOut/libmpadec/mpadec.c
new file mode 100644
index 0000000..a305f67
--- /dev/null
+++ b/InOut/libmpadec/mpadec.c
@@ -0,0 +1,795 @@
+/*
+ * mpadec - MPEG audio decoder
+ * Copyright (C) 2002-2004 Dmitriy Startsev (dstartsev at rambler.ru)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/* $Id: mpadec.c,v 1.3 2009/03/01 15:27:05 jpff Exp $ */
+
+#include <stdlib.h>
+#include "csoundCore.h"
+#include "mpadec_internal.h"
+
+extern const uint16_t crc_table[256];
+extern void *synth_table[2][2][4][4];
+
+const uint32_t bitmask[17] = { 0x0000, 0x0001, 0x0003, 0x0007, 0x000F, 0x001F, 0x003F, 0x007F,
+ 0x00FF, 0x01FF, 0x03FF, 0x07FF, 0x0FFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF };
+
+const int32_t frequency_table[9] = { 44100, 48000, 32000, 22050, 24000, 16000, 11025, 12000, 8000 };
+
+const int16_t bitrate_table[2][3][16] = {
+ { { 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 560 },
+ { 0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 448 },
+ { 0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384 } },
+ { { 0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 320 },
+ { 0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, 192 },
+ { 0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160, 192 } }
+};
+
+extern void init_tables(mpadec_t mpadec, MYFLT scale, int32_t sblimit);
+extern void decode_layer1(mpadec_t mpadec, uint8_t *buffer);
+extern void decode_layer2(mpadec_t mpadec, uint8_t *buffer);
+extern void decode_layer3(mpadec_t mpadec, uint8_t *buffer);
+
+uint32_t getbits(mpadec_t mpadec, unsigned n)
+{
+ register struct mpadec_t *mpa = (struct mpadec_t *)mpadec;
+
+ while ((mpa->bits_left <= 24) && mpa->bytes_left) {
+ mpa->bit_buffer = (mpa->bit_buffer << 8) | *mpa->next_byte++;
+ mpa->bits_left += (uint8_t)8;
+ mpa->bytes_left--;
+ }
+ while (mpa->bits_left <= 24) {
+ mpa->bit_buffer = (mpa->bit_buffer << 8);
+ mpa->bits_left += (uint8_t)8;
+ }
+ mpa->bits_left -= (uint8_t)n;
+ return (mpa->bit_buffer >> mpa->bits_left) & bitmask[n];
+}
+
+uint16_t update_crc(uint16_t init, uint8_t *buf, int length)
+{
+ register uint32_t crc = (uint32_t)init, tmp;
+ register int l = length;
+ register uint8_t *b = buf;
+
+ for (; l >= 8; l -= 8) crc = (crc << 8) ^ crc_table[((crc >> 8) ^ (*b++)) & 0xFF];
+ tmp = (uint32_t)(*b) << 8;
+ while (l--) {
+ tmp <<= 1;
+ crc <<= 1;
+ if ((crc ^ tmp) & 0x10000) crc ^= 0x8005;
+ }
+ return (uint16_t)crc;
+}
+
+static uint32_t detect_frame_size(mpadec_t mpadec)
+{
+ register struct mpadec_t *mpa = (struct mpadec_t *)mpadec;
+ register uint8_t *buf = mpa->next_byte;
+ uint32_t i = mpa->bytes_left, hdr = 0;
+
+ if (i < (mpa->frame.frame_size + 4)) return 0;
+ buf += mpa->frame.frame_size;
+ i -= mpa->frame.frame_size;
+ while (i >= 4) {
+ register uint32_t tmp = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3];
+ if (((tmp & 0xFFE00000) == 0xFFE00000) && (tmp & (3 << 17)) && ((tmp & (3 << 10)) != (3 << 10))) {
+ if ((mpa->frame.layer == (uint8_t)(4 - ((tmp >> 17) & 3))) &&
+ (mpa->frame.frequency_index == (((tmp >> 10) & 3) + 3*(mpa->frame.LSF + mpa->frame.MPEG25))) &&
+ (mpa->frame.channels == ((((tmp >> 6) & 3) == MPG_MD_MONO) ? 1 : 2))) {
+ if (mpa->config.dblsync) {
+ uint32_t fs = mpa->bytes_left - i - mpa->frame.padding + ((tmp >> 9) & 1);
+ if (i >= (fs + 4)) {
+ buf += fs;
+ tmp = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3];
+ buf -= fs;
+ if (((tmp & 0xFFE00000) == 0xFFE00000) && (tmp & (3 << 17)) && ((tmp & (3 << 10)) != (3 << 10))) {
+ if ((mpa->frame.layer == (uint8_t)(4 - ((tmp >> 17) & 3))) &&
+ (mpa->frame.frequency_index == (((tmp >> 10) & 3) + 3*(mpa->frame.LSF + mpa->frame.MPEG25))) &&
+ (mpa->frame.channels == ((((tmp >> 6) & 3) == MPG_MD_MONO) ? 1 : 2))) {
+ hdr = tmp;
+ break;
+ }
+ }
+ } else return 0;
+ } else {
+ hdr = tmp;
+ break;
+ }
+ }
+ }
+ buf++; i--;
+ }
+ return (hdr ? (mpa->bytes_left - i) : 0);
+}
+
+static int decode_header(mpadec_t mpadec, uint32_t header)
+{
+ register struct mpadec_t *mpa = (struct mpadec_t *)mpadec;
+ unsigned int layer, bridx, fridx;
+
+ layer = 4 - ((header >> 17) & 3);
+ bridx = ((header >> 12) & 0x0F);
+ fridx = ((header >> 10) & 3);
+ if ((fridx == 3) || (layer == 4) || ((layer != 3) && !bridx)) return FALSE;
+ if (header & (1 << 20)) {
+ mpa->frame.LSF = (uint8_t)((header & (1 << 19)) ? FALSE : TRUE);
+ mpa->frame.MPEG25 = FALSE;
+ } else mpa->frame.LSF = mpa->frame.MPEG25 = TRUE;
+ mpa->frame.layer = (uint8_t)layer;
+ mpa->frame.bitrate_index = bridx;
+ mpa->frame.bitrate = bitrate_table[mpa->frame.LSF][layer - 1][bridx];
+ mpa->frame.frequency_index = (fridx += 3*(mpa->frame.LSF + mpa->frame.MPEG25));
+ mpa->frame.frequency = frequency_table[fridx];
+ mpa->frame.decoded_frequency = mpa->frame.frequency >> mpa->config.quality;
+ mpa->frame.CRC = (uint8_t)(((header >> 16) & 1) ^ 1);
+ mpa->frame.padding = ((header >> 9) & 1);
+ mpa->frame.extension = (uint8_t)((header >> 8) & 1);
+ mpa->frame.mode = (uint8_t)((header >> 6) & 3);
+ mpa->frame.mode_ext = (uint8_t)((header >> 4) & 3);
+ mpa->frame.copyright = (uint8_t)((header >> 3) & 1);
+ mpa->frame.original = (uint8_t)((header >> 2) & 1);
+ mpa->frame.emphasis = (uint8_t)(header & 3);
+ mpa->frame.channels = (uint8_t)((mpa->frame.mode == MPG_MD_MONO) ? 1 : 2);
+ switch (mpa->config.mode) {
+ case MPADEC_CONFIG_CHANNEL1:
+ case MPADEC_CONFIG_CHANNEL2:
+ case MPADEC_CONFIG_MONO: mpa->frame.decoded_channels = 1; break;
+ case MPADEC_CONFIG_STEREO: mpa->frame.decoded_channels = 2; break;
+ default: mpa->frame.decoded_channels = mpa->frame.channels;
+ }
+ mpa->free_format = FALSE;
+ switch (mpa->frame.layer) {
+ case 1: mpa->frame.frame_samples = 384;
+ mpa->frame.frame_size = (12000*mpa->frame.bitrate/mpa->frame.frequency + mpa->frame.padding) << 2;
+ mpa->ssize = 0;
+ break;
+ case 2: mpa->frame.frame_samples = 1152;
+ mpa->frame.frame_size = 144000*mpa->frame.bitrate/mpa->frame.frequency + mpa->frame.padding;
+ mpa->ssize = 0;
+ break;
+ case 3: mpa->frame.frame_samples = 1152 >> mpa->frame.LSF;
+ if (mpa->frame.LSF) mpa->ssize = (mpa->frame.channels > 1) ? 17 : 9;
+ else mpa->ssize = (mpa->frame.channels > 1) ? 32 : 17;
+ if (mpa->frame.bitrate_index) {
+ mpa->frame.frame_size = 144000*mpa->frame.bitrate/(mpa->frame.frequency << mpa->frame.LSF) + mpa->frame.padding;
+ mpa->prev_frame_size = 0;
+ } else {
+ register uint32_t div = 125*mpa->frame.frame_samples;
+ if (!mpa->prev_frame_size) {
+ mpa->frame.frame_size = (mpa->frame.CRC ? 6 : 4) + mpa->ssize + mpa->frame.padding;
+ mpa->prev_frame_size = detect_frame_size(mpa);
+ if (mpa->prev_frame_size) mpa->prev_frame_size -= mpa->frame.padding;
+ }
+ mpa->frame.frame_size = mpa->prev_frame_size + mpa->frame.padding;
+ mpa->frame.bitrate = (mpa->frame.frame_size*mpa->frame.frequency + (div >> 1))/div;
+ mpa->free_format = TRUE;
+ }
+ break;
+ }
+ mpa->frame.decoded_samples = mpa->frame.frame_samples >> mpa->config.quality;
+ mpa->frame.downsample = FALSE;
+ mpa->frame.downsample_sblimit = SBLIMIT;
+ mpa->frame.decoded_size = mpa->frame.decoded_samples*mpa->frame.decoded_channels;
+ switch (mpa->config.format) {
+ case MPADEC_CONFIG_24BIT: mpa->frame.decoded_size *= 3; break;
+ case MPADEC_CONFIG_32BIT:
+ case MPADEC_CONFIG_FLOAT: mpa->frame.decoded_size <<= 2; break;
+ default: mpa->frame.decoded_size <<= 1; break;
+ }
+ mpa->hsize = mpa->frame.CRC ? 6 : 4;
+ if (mpa->frame.frame_size < (mpa->hsize + mpa->ssize)) mpa->frame.frame_size = mpa->hsize + mpa->ssize;
+ mpa->dsize = mpa->frame.frame_size - (mpa->hsize + mpa->ssize);
+ return TRUE;
+}
+
+static uint32_t sync_buffer(mpadec_t mpadec)
+{
+ register struct mpadec_t *mpa = (struct mpadec_t *)mpadec;
+ register uint8_t *buf = mpa->next_byte;
+ uint32_t retval = 0, i = mpa->bytes_left;
+
+ if (mpa->state == MPADEC_STATE_START) {
+ while (i >= 4) {
+ register uint32_t tmp = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3];
+ if (((tmp & 0xFFE00000) == 0xFFE00000) && (tmp & (3 << 17)) && ((tmp & (3 << 10)) != (3 << 10))) {
+ if (mpa->config.dblsync) {
+ if (decode_header(mpa, tmp)) {
+ if ((i < (mpa->frame.frame_size + 4)) || (mpa->free_format && !mpa->prev_frame_size)) break;
+ else {
+ register uint32_t tmp2 = (buf[mpa->frame.frame_size] << 24) | (buf[mpa->frame.frame_size + 1] << 16) | (buf[mpa->frame.frame_size + 2] << 8) | buf[mpa->frame.frame_size + 3];
+ if (((tmp2 & 0xFFE00000) == 0xFFE00000) && (tmp2 & (3 << 17)) && ((tmp2 & (3 << 10)) != (3 << 10))) {
+ if ((mpa->frame.layer == (uint8_t)(4 - ((tmp2 >> 17) & 3))) &&
+ (mpa->frame.frequency_index == (((tmp2 >> 10) & 3) + 3*(mpa->frame.LSF + mpa->frame.MPEG25))) &&
+ (mpa->frame.channels == ((((tmp2 >> 6) & 3) == MPG_MD_MONO) ? 1 : 2))) {
+ retval = tmp;
+ break;
+ }
+ }
+ }
+ }
+ } else {
+ retval = tmp;
+ break;
+ }
+ }
+ buf++; i--;
+ }
+ } else {
+ while (i >= 4) {
+ register uint32_t tmp = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3];
+ if (((tmp & 0xFFE00000) == 0xFFE00000) && (tmp & (3 << 17)) && ((tmp & (3 << 10)) != (3 << 10))) {
+ if ((mpa->frame.layer == (uint8_t)(4 - ((tmp >> 17) & 3))) &&
+ (mpa->frame.frequency_index == (((tmp >> 10) & 3) + 3*(mpa->frame.LSF + mpa->frame.MPEG25))) &&
+ (mpa->frame.channels == ((((tmp >> 6) & 3) == MPG_MD_MONO) ? 1 : 2))) {
+ retval = tmp;
+ break;
+ }
+ }
+ buf++; i--;
+ }
+ }
+ if (i < mpa->bytes_left) {
+ i = mpa->bytes_left - i;
+ mpa->next_byte = buf;;
+ mpa->bytes_left -= i;
+ if (i >= 512) {
+ mpa->reservoir_size = 0;
+ i = 512;
+ }
+ memcpy(mpa->reservoir + mpa->reservoir_size, mpa->next_byte - i, i);
+ mpa->reservoir_size += i;
+ }
+ return retval;
+}
+
+static int first_frame(mpadec_t mpadec)
+{
+ register struct mpadec_t *mpa = (struct mpadec_t *)mpadec;
+ int i, skip = FALSE;
+ uint32_t framesize; MYFLT scale;
+
+ if (mpa->frame.channels > 1) i = ((mpa->config.mode == MPADEC_CONFIG_STEREO) || (mpa->config.mode == MPADEC_CONFIG_AUTO)) ? 3 : 2;
+ else i = (mpa->config.mode == MPADEC_CONFIG_STEREO) ? 1 : 0;
+ mpa->synth_func = synth_table[mpa->config.quality][mpa->config.endian][mpa->config.format][i];
+ mpa->sample_size = mpa->frame.decoded_channels;
+ switch (mpa->config.format) {
+ case MPADEC_CONFIG_24BIT: mpa->sample_size *= 3; scale = 0x800000; break;
+ case MPADEC_CONFIG_32BIT: mpa->sample_size <<= 2; scale = 0x80000000; break;
+ case MPADEC_CONFIG_FLOAT: mpa->sample_size <<= 2; scale = 1; break;
+ default: mpa->sample_size <<= 1; scale = 0x8000; break;
+ }
+ mpa->synth_size = (mpa->sample_size << 5) >> mpa->config.quality;
+ if (mpa->config.replaygain != MPADEC_CONFIG_REPLAYGAIN_CUSTOM) {
+ mpa->config.gain = 0.0;
+ mpa->replay_gain = 1.0;
+ }
+ mpa->skip_samples = 0;
+ mpa->padding_samples = 0;
+ mpa->decoded_frames = 0;
+ mpa->decoded_samples = 0;
+ memset(&mpa->tag_info, 0, sizeof(mpa->tag_info));
+ framesize = (mpa->frame.frame_size < mpa->bytes_left) ? mpa->frame.frame_size : mpa->bytes_left;
+ if ((mpa->frame.layer == 3) && (framesize >= (mpa->ssize + 124))) {
+ register uint8_t *buf = mpa->next_byte + 4 + mpa->ssize;
+ if (((buf[0] == 'X') && (buf[1] == 'i') && (buf[2] == 'n') && (buf[3] == 'g')) ||
+ ((buf[0] == 'I') && (buf[1] == 'n') && (buf[2] == 'f') && (buf[3] == 'o'))) {
+ skip = TRUE;
+ mpa->next_byte += framesize;
+ mpa->bytes_left -= framesize;
+ buf += 4;
+ mpa->tag_info.flags = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3];
+ buf += 4;
+ if (mpa->tag_info.flags & 1) {
+ mpa->tag_info.frames = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3];
+ buf += 4;
+ };
+ if (mpa->tag_info.flags & 2) {
+ mpa->tag_info.bytes = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3];
+ buf += 4;
+ };
+ if (mpa->tag_info.flags & 4) {
+ memcpy(mpa->tag_info.toc, buf, 100);
+ buf += 100;
+ };
+ if (mpa->tag_info.flags & 8) buf += 4;
+ mpa->tag_info.flags &= 7;
+ if (framesize >= mpa->ssize + 160) {
+ buf += 15;
+ mpa->tag_info.replay_gain[0] = ((buf[0] << 8) | buf[1]) & 0x1FF;
+ if (buf[0] & 2) mpa->tag_info.replay_gain[0] = -mpa->tag_info.replay_gain[0];
+ buf += 2;
+ mpa->tag_info.replay_gain[1] = ((buf[0] << 8) | buf[1]) & 0x1FF;
+ if (buf[0] & 2) mpa->tag_info.replay_gain[1] = -mpa->tag_info.replay_gain[1];
+ buf += 4;
+ mpa->tag_info.enc_delay = (buf[0] << 4) | ((buf[1] >> 4) & 0x0F);
+ mpa->tag_info.enc_padding = ((buf[1] & 0x0F) << 8) | buf[2];
+ if (((mpa->tag_info.enc_delay < 0) || (mpa->tag_info.enc_delay > 3000)) ||
+ ((mpa->tag_info.enc_padding < 0) || (mpa->tag_info.enc_padding > 3000))) {
+ mpa->tag_info.replay_gain[0] = mpa->tag_info.replay_gain[1] = 0;
+ mpa->tag_info.enc_delay = 0;
+ mpa->tag_info.enc_padding = 0;
+ } else {
+ if (mpa->config.replaygain == MPADEC_CONFIG_REPLAYGAIN_RADIO) {
+ mpa->config.gain = ((MYFLT)mpa->tag_info.replay_gain[0])/10.0;
+ } else if (mpa->config.replaygain == MPADEC_CONFIG_REPLAYGAIN_AUDIOPHILE) {
+ mpa->config.gain = ((MYFLT)mpa->tag_info.replay_gain[1])/10.0;
+ }
+ }
+ mpa->skip_samples = mpa->tag_info.enc_delay;
+ mpa->padding_samples = mpa->tag_info.enc_padding;
+ }
+ }
+ }
+ mpa->replay_gain = pow(10.0, mpa->config.gain/20.0);
+ if (mpa->config.replaygain != MPADEC_CONFIG_REPLAYGAIN_NONE) scale *= mpa->replay_gain;
+ init_tables(mpa, scale, SBLIMIT >> mpa->config.quality);
+ if (mpa->frame.layer == 3) {
+ mpa->skip_samples += 529;
+ if ((mpa->tag_info.flags & 1) && (mpa->padding_samples > 529)) mpa->padding_samples -= 529;
+ else mpa->padding_samples = 0;
+ } else {
+ mpa->skip_samples += 241;
+ mpa->padding_samples = 0;
+ }
+ mpa->padding_start = mpa->tag_info.frames*mpa->frame.frame_samples;
+ if (mpa->padding_start > mpa->padding_samples) mpa->padding_start -= mpa->padding_samples;
+ else mpa->padding_start = 0;
+ mpa->state = MPADEC_STATE_DECODE;
+ return skip;
+}
+
+mpadec_t mpadec_init(void)
+{
+ register struct mpadec_t *mpa = (struct mpadec_t *)malloc(sizeof(struct mpadec_t));
+ uint8_t temp[2];
+
+ if (!mpa) return NULL;
+ memset(mpa, 0, sizeof(struct mpadec_t));
+ mpa->size = sizeof(struct mpadec_t);
+ *((int16_t *)temp) = 1;
+ mpa->config.quality = MPADEC_CONFIG_FULL_QUALITY;
+ mpa->config.mode = MPADEC_CONFIG_AUTO;
+ mpa->config.format = MPADEC_CONFIG_16BIT;
+ mpa->config.endian = (uint8_t)((uint8_t)temp[0] ? MPADEC_CONFIG_LITTLE_ENDIAN : MPADEC_CONFIG_BIG_ENDIAN);
+ mpa->config.replaygain = MPADEC_CONFIG_REPLAYGAIN_NONE;
+ mpa->config.skip = TRUE;
+ mpa->config.crc = TRUE;
+ mpa->config.dblsync = TRUE;
+ mpa->config.gain = 0.0;
+ mpa->replay_gain = 1.0;
+ init_tables(mpa, 0x8000, SBLIMIT);
+ mpa->synth_bufoffs = 1;
+ mpa->state = MPADEC_STATE_START;
+ return mpa;
+}
+
+int mpadec_uninit(mpadec_t mpadec)
+{
+ register struct mpadec_t *mpa = (struct mpadec_t *)mpadec;
+
+ if (mpa && (mpa->size == sizeof(struct mpadec_t))) {
+ mpa->size = mpa->state = 0;
+ free(mpa);
+ return MPADEC_RETCODE_OK;
+ } else return MPADEC_RETCODE_INVALID_HANDLE;
+}
+
+int mpadec_reset(mpadec_t mpadec)
+{
+ register struct mpadec_t *mpa = (struct mpadec_t *)mpadec;
+
+ if (mpa && (mpa->size == sizeof(struct mpadec_t))) {
+ memset(mpa->hybrid_in, 0, sizeof(mpa->hybrid_in));
+ memset(mpa->hybrid_out, 0, sizeof(mpa->hybrid_out));
+ memset(mpa->hybrid_buffers, 0, sizeof(mpa->hybrid_buffers));
+ memset(mpa->synth_buffers, 0, sizeof(mpa->synth_buffers));
+ mpa->hybrid_block[0] = mpa->hybrid_block[1] = 0;
+ mpa->synth_bufoffs = 1;
+ memset(&mpa->tag_info, 0, sizeof(mpa->tag_info));
+ if (mpa->config.replaygain != MPADEC_CONFIG_REPLAYGAIN_CUSTOM) mpa->config.gain = 0.0;
+ mpa->prev_frame_size = 0;
+ mpa->free_format = FALSE;
+ mpa->error = FALSE;
+ mpa->reservoir_size = 0;
+ mpa->replay_gain = 1.0;
+ mpa->skip_samples = 0;
+ mpa->padding_samples = 0;
+ mpa->decoded_frames = 0;
+ mpa->decoded_samples = 0;
+ mpa->state = MPADEC_STATE_START;
+ return MPADEC_RETCODE_OK;
+ } else return MPADEC_RETCODE_INVALID_HANDLE;
+}
+
+int mpadec_configure(mpadec_t mpadec, mpadec_config_t *cfg)
+{
+ register struct mpadec_t *mpa = (struct mpadec_t *)mpadec;
+ int32_t i, sblimit; MYFLT scale;
+
+ if (mpa && (mpa->size == sizeof(struct mpadec_t))) {
+ if (!cfg) return MPADEC_RETCODE_INVALID_PARAMETERS;
+ if ((cfg->quality > MPADEC_CONFIG_HALF_QUALITY) || (cfg->mode > MPADEC_CONFIG_CHANNEL2) ||
+ (cfg->format > MPADEC_CONFIG_FLOAT) || (cfg->endian > MPADEC_CONFIG_BIG_ENDIAN) ||
+ (cfg->replaygain > MPADEC_CONFIG_REPLAYGAIN_CUSTOM)) return MPADEC_RETCODE_INVALID_PARAMETERS;
+ mpa->config.quality = cfg->quality;
+ mpa->config.mode = cfg->mode;
+ mpa->config.format = cfg->format;
+ mpa->config.endian = cfg->endian;
+ mpa->config.replaygain = cfg->replaygain;
+ mpa->config.skip = (uint8_t)(cfg->skip ? TRUE : FALSE);
+ mpa->config.crc = (uint8_t)(cfg->crc ? TRUE : FALSE);
+ mpa->config.dblsync = (uint8_t)(cfg->dblsync ? TRUE : FALSE);
+ if (mpa->config.replaygain == MPADEC_CONFIG_REPLAYGAIN_CUSTOM) {
+ mpa->config.gain = cfg->gain;
+ } else {
+ mpa->config.gain = 0.0;
+ if (mpa->tag_info.flags) {
+ if (mpa->config.replaygain == MPADEC_CONFIG_REPLAYGAIN_RADIO) {
+ mpa->config.gain = ((MYFLT)mpa->tag_info.replay_gain[0])/10.0;
+ } else if (mpa->config.replaygain == MPADEC_CONFIG_REPLAYGAIN_AUDIOPHILE) {
+ mpa->config.gain = ((MYFLT)mpa->tag_info.replay_gain[1])/10.0;
+ }
+ }
+ }
+ mpa->replay_gain = pow(10.0, mpa->config.gain/20.0);
+ switch (mpa->config.format) {
+ case MPADEC_CONFIG_24BIT: scale = 0x800000; break;
+ case MPADEC_CONFIG_32BIT: scale = 0x80000000; break;
+ case MPADEC_CONFIG_FLOAT: scale = 1; break;
+ default: scale = 0x8000; break;
+ }
+ sblimit = SBLIMIT >> mpa->config.quality;
+ if (mpa->config.replaygain != MPADEC_CONFIG_REPLAYGAIN_NONE) scale *= mpa->replay_gain;
+ init_tables(mpa, scale, sblimit);
+ if ((mpa->state > MPADEC_STATE_START) && mpa->header) {
+ decode_header(mpa, mpa->header);
+ if (mpa->frame.channels < 2) i = (mpa->config.mode == MPADEC_CONFIG_STEREO) ? 1 : 0;
+ else i = ((mpa->config.mode == MPADEC_CONFIG_STEREO) || (mpa->config.mode == MPADEC_CONFIG_AUTO)) ? 3 : 2;
+ mpa->synth_func = synth_table[mpa->config.quality][mpa->config.endian][mpa->config.format][i];
+ mpa->sample_size = mpa->frame.decoded_channels;
+ switch (mpa->config.format) {
+ case MPADEC_CONFIG_24BIT: mpa->sample_size *= 3; break;
+ case MPADEC_CONFIG_32BIT:
+ case MPADEC_CONFIG_FLOAT: mpa->sample_size <<= 2; break;
+ default: mpa->sample_size <<= 1; break;
+ }
+ mpa->synth_size = (mpa->sample_size << 5) >> mpa->config.quality;
+ } else mpa->state = MPADEC_STATE_START;
+ return MPADEC_RETCODE_OK;
+ } else return MPADEC_RETCODE_INVALID_HANDLE;
+}
+
+int mpadec_get_info(mpadec_t mpadec, void *info, int info_type)
+{
+ register struct mpadec_t *mpa = (struct mpadec_t *)mpadec;
+
+ if (!mpa || (mpa->size != sizeof(struct mpadec_t))) return MPADEC_RETCODE_INVALID_HANDLE;
+ if (!info) return MPADEC_RETCODE_INVALID_PARAMETERS;
+ if (info_type == MPADEC_INFO_CONFIG) {
+ register mpadec_config_t *cfg = (mpadec_config_t *)info;
+ cfg->quality = mpa->config.quality;
+ cfg->mode = mpa->config.mode;
+ cfg->format = mpa->config.format;
+ cfg->endian = mpa->config.endian;
+ cfg->replaygain = mpa->config.replaygain;
+ cfg->skip = mpa->config.skip;
+ cfg->crc = mpa->config.crc;
+ cfg->dblsync = mpa->config.dblsync;
+ cfg->gain = mpa->config.gain;
+ } else if (info_type == MPADEC_INFO_TAG) {
+ register mp3tag_info_t *tag = (mp3tag_info_t *)info;
+ if (mpa->state < MPADEC_STATE_DECODE) {
+ memset(tag, 0, sizeof(mp3tag_info_t));
+ return MPADEC_RETCODE_BAD_STATE;
+ } else memcpy(tag, &mpa->tag_info, sizeof(mpa->tag_info));
+ } else if (info_type == MPADEC_INFO_STREAM) {
+ register mpadec_info_t *inf = (mpadec_info_t *)info;
+ if (mpa->state < MPADEC_STATE_DECODE) {
+ memset(inf, 0, sizeof(mpadec_info_t));
+ return MPADEC_RETCODE_BAD_STATE;
+ } else {
+ inf->layer = mpa->frame.layer;
+ inf->channels = mpa->frame.channels;
+ inf->frequency = mpa->frame.frequency;
+ inf->bitrate = mpa->frame.bitrate;
+ inf->mode = mpa->frame.mode;
+ inf->copyright = mpa->frame.copyright;
+ inf->original = mpa->frame.original;
+ inf->emphasis = mpa->frame.emphasis;
+ inf->decoded_channels = mpa->frame.decoded_channels;
+ inf->decoded_frequency = mpa->frame.decoded_frequency;
+ inf->decoded_sample_size = mpa->sample_size;
+ inf->frame_size = mpa->frame.frame_size;
+ inf->frame_samples = mpa->frame.frame_samples;
+ inf->decoded_frame_samples = mpa->frame.decoded_samples;
+ if (mpa->tag_info.flags & 1) {
+ inf->frames = mpa->tag_info.frames;
+ inf->duration = (mpa->tag_info.frames*mpa->frame.frame_samples + (mpa->frame.frequency >> 1))/mpa->frame.frequency;
+ } else {
+ inf->frames = 0;
+ inf->duration = 0;
+ }
+ }
+ } else return MPADEC_RETCODE_INVALID_PARAMETERS;
+ return MPADEC_RETCODE_OK;
+}
+
+int mpadec_decode(mpadec_t mpadec, uint8_t *srcbuf, uint32_t srcsize, uint8_t *dstbuf, uint32_t dstsize, uint32_t *srcused, uint32_t *dstused)
+{
+ register struct mpadec_t *mpa = (struct mpadec_t *)mpadec;
+ int retcode = MPADEC_RETCODE_OK;
+ uint32_t decoded_size = 0;
+
+ if (srcused) *srcused = 0;
+ if (dstused) *dstused = 0;
+ if (!dstbuf) dstsize = 0;
+ if (!mpa || (mpa->size != sizeof(struct mpadec_t))) return MPADEC_RETCODE_INVALID_HANDLE;
+ if (mpa->state < MPADEC_STATE_START) return MPADEC_RETCODE_BAD_STATE;
+ if (!srcbuf || ((mpa->state > MPADEC_STATE_START) && !dstbuf )) return MPADEC_RETCODE_INVALID_PARAMETERS;
+ mpa->next_byte = srcbuf;
+ mpa->bytes_left = srcsize;
+ while (mpa->bytes_left >= 4) {
+ mpa->error = FALSE;
+ mpa->bits_left = 0;
+ mpa->header = sync_buffer(mpa);
+ if (!mpa->header) {
+ if (!decoded_size) retcode = MPADEC_RETCODE_NO_SYNC;
+ break;
+ }
+ decode_header(mpa, mpa->header);
+ if ((mpa->bytes_left < mpa->frame.frame_size) || (mpa->free_format && !mpa->prev_frame_size)) {
+ retcode = MPADEC_RETCODE_NEED_MORE_DATA;
+ break;
+ }
+ if (mpa->state == MPADEC_STATE_START) {
+ if (first_frame(mpa)) continue;
+ } else if ((mpa->frame.layer == 3) && (mpa->frame.frame_size >= (mpa->ssize + 12))) {
+ register uint8_t *buf = mpa->next_byte + 4 + mpa->ssize;
+ if (((buf[0] == 'X') && (buf[1] == 'i') && (buf[2] == 'n') && (buf[3] == 'g')) ||
+ ((buf[0] == 'I') && (buf[1] == 'n') && (buf[2] == 'f') && (buf[3] == 'o'))) {
+ mpa->next_byte += mpa->frame.frame_size;
+ mpa->bytes_left -= mpa->frame.frame_size;
+ continue;
+ }
+ }
+ if (dstsize < mpa->frame.decoded_size) {
+ retcode = MPADEC_RETCODE_BUFFER_TOO_SMALL;
+ break;
+ }
+ if (mpa->config.crc && mpa->frame.CRC) {
+ mpa->frame.crc = (uint16_t)((mpa->next_byte[4] << 8) | mpa->next_byte[5]);
+ mpa->crc = update_crc(0xFFFF, mpa->next_byte + 2, 16);
+ }
+ mpa->next_byte += mpa->hsize;
+ mpa->bytes_left -= mpa->hsize;
+ switch (mpa->frame.layer) {
+ case 1: decode_layer1(mpa, dstbuf); break;
+ case 2: decode_layer2(mpa, dstbuf); break;
+ case 3: decode_layer3(mpa, dstbuf); break;
+ }
+ if (mpa->config.crc && mpa->error) memset(dstbuf, 0, mpa->frame.decoded_size);
+ dstbuf += mpa->frame.decoded_size;
+ dstsize -= mpa->frame.decoded_size;
+ decoded_size += mpa->frame.decoded_size;
+ mpa->decoded_samples += mpa->frame.frame_samples;
+ mpa->decoded_frames++;
+ if (mpa->config.skip) {
+ if (mpa->skip_samples) {
+ if (mpa->skip_samples >= mpa->frame.frame_samples) {
+ dstbuf -= mpa->frame.decoded_size;
+ dstsize += mpa->frame.decoded_size;
+ decoded_size -= mpa->frame.decoded_size;
+ mpa->skip_samples -= mpa->frame.frame_samples;
+ } else {
+ uint32_t tmp = mpa->frame.frame_samples - mpa->skip_samples;
+ tmp = mpa->sample_size*(tmp >> mpa->config.quality);
+ memmove(dstbuf - mpa->frame.decoded_size, dstbuf - tmp, tmp);
+ dstbuf -= mpa->frame.decoded_size - tmp;
+ dstsize += mpa->frame.decoded_size - tmp;
+ decoded_size -= mpa->frame.decoded_size - tmp;
+ mpa->skip_samples = 0;
+ }
+ } else if ((mpa->padding_samples) && (mpa->decoded_samples > mpa->padding_start)) {
+ uint32_t tmp = mpa->decoded_samples - mpa->padding_start;
+ if (tmp > mpa->padding_samples) tmp = mpa->padding_samples;
+ mpa->padding_start += tmp;
+ mpa->padding_samples -= tmp;
+ tmp = mpa->sample_size*(tmp >> mpa->config.quality);
+ dstbuf -= tmp;
+ dstsize += tmp;
+ decoded_size -= tmp;
+ }
+ }
+ }
+ if (srcused) *srcused = srcsize - mpa->bytes_left;
+ if (dstused) *dstused = decoded_size;
+ if ((retcode == MPADEC_RETCODE_OK) && mpa->bytes_left) retcode = MPADEC_RETCODE_NEED_MORE_DATA;
+ if (!dstbuf && (retcode == MPADEC_RETCODE_BUFFER_TOO_SMALL)) retcode = MPADEC_RETCODE_OK;
+ return retcode;
+}
+
+char *mpadec_error(int code)
+{
+ static char *mpa_errors[] = { "No error",
+ "Invalid handle",
+ "Not enough memory",
+ "Bad decoder state",
+ "Invalid parameters",
+ "Need more data",
+ "Output buffer too small",
+ "Unable to synchronize",
+ "Unknown error" };
+ if (code > MPADEC_RETCODE_UNKNOWN) code = MPADEC_RETCODE_UNKNOWN;
+ return mpa_errors[code];
+}
+
+mpadec2_t mpadec2_init(void)
+{
+ register struct mpadec2_t *mpa = (struct mpadec2_t *)malloc(sizeof(struct mpadec2_t));
+
+ if (!mpa) return NULL;
+ mpa->size = sizeof(struct mpadec2_t);
+ mpa->buffers = NULL;
+ mpa->in_buffer_offset = mpa->in_buffer_used = 0;
+ mpa->out_buffer_offset = mpa->out_buffer_used = 0;
+ mpa->mpadec = mpadec_init();
+ if (!mpa->mpadec) {
+ free(mpa);
+ return NULL;
+ }
+ return mpa;
+}
+
+int mpadec2_uninit(mpadec2_t mpadec)
+{
+ register struct mpadec2_t *mpa = (struct mpadec2_t *)mpadec;
+
+ if (mpa && (mpa->size == sizeof(struct mpadec2_t))) {
+ struct mpabuffer_t *buf = mpa->buffers, *tmp;
+ while (buf) {
+ tmp = buf;
+ buf = buf->next;
+ free(tmp);
+ }
+ mpadec_uninit(mpa->mpadec);
+ free(mpa);
+ return MPADEC_RETCODE_OK;
+ } else return MPADEC_RETCODE_INVALID_HANDLE;
+}
+
+int mpadec2_reset(mpadec2_t mpadec)
+{
+ register struct mpadec2_t *mpa = (struct mpadec2_t *)mpadec;
+
+ if (mpa && (mpa->size == sizeof(struct mpadec2_t))) {
+ struct mpabuffer_t *buf = mpa->buffers, *tmp;
+ while (buf) {
+ tmp = buf;
+ buf = buf->next;
+ free(tmp);
+ }
+ mpa->buffers = NULL;
+ mpa->in_buffer_offset = mpa->in_buffer_used = 0;
+ mpa->out_buffer_offset = mpa->out_buffer_used = 0;
+ mpadec_reset(mpa->mpadec);
+ return MPADEC_RETCODE_OK;
+ } else return MPADEC_RETCODE_INVALID_HANDLE;
+}
+
+int mpadec2_configure(mpadec2_t mpadec, mpadec_config_t *cfg)
+{
+ register struct mpadec2_t *mpa = (struct mpadec2_t *)mpadec;
+
+ if (!mpa || (mpa->size != sizeof(struct mpadec2_t))) return MPADEC_RETCODE_INVALID_HANDLE;
+ mpa->out_buffer_offset = mpa->out_buffer_used = 0;
+ return (mpadec_configure(mpa->mpadec, cfg));
+}
+
+int mpadec2_get_info(mpadec2_t mpadec, void *info, int info_type)
+{
+ register struct mpadec2_t *mpa = (struct mpadec2_t *)mpadec;
+
+ if (!mpa || (mpa->size != sizeof(struct mpadec2_t))) return MPADEC_RETCODE_INVALID_HANDLE;
+ return (mpadec_get_info(mpa->mpadec, info, info_type));
+}
+
+int mpadec2_decode(mpadec2_t mpadec, uint8_t *srcbuf, uint32_t srcsize, uint8_t *dstbuf, uint32_t dstsize, uint32_t *dstused)
+{
+ register struct mpadec2_t *mpa = (struct mpadec2_t *)mpadec;
+ uint32_t n, src_used, dst_used; int r;
+
+ if (dstused) *dstused = 0;
+ if (!mpa || (mpa->size != sizeof(struct mpadec2_t))) return MPADEC_RETCODE_INVALID_HANDLE;
+ if (((struct mpadec_t *)mpa->mpadec)->state < MPADEC_STATE_START) return MPADEC_RETCODE_BAD_STATE;
+ if (srcbuf && srcsize) {
+ struct mpabuffer_t *last = mpa->buffers, *buf;
+ if (last) {
+ while (last->next) last = last->next;
+ if ((last->offset + last->used) < last->size) {
+ n = last->size - (last->offset + last->used);
+ if (n > srcsize) n = srcsize;
+ memcpy(last->buffer + last->offset + last->used, srcbuf, n);
+ last->used += n;
+ srcbuf += n;
+ srcsize -= n;
+ }
+ }
+ if (srcsize) {
+ n = (srcsize > 4096) ? srcsize : 4096;
+ buf = (struct mpabuffer_t *)malloc(n + sizeof(struct mpabuffer_t));
+ if (buf) {
+ buf->size = n;
+ buf->offset = buf->used = 0;
+ buf->buffer = (uint8_t *)buf + sizeof(struct mpabuffer_t);
+ buf->next = NULL;
+ memcpy(buf->buffer, srcbuf, srcsize);
+ buf->used = srcsize;
+ if (last) last->next = buf; else mpa->buffers = buf;
+ } else return MPADEC_RETCODE_NOT_ENOUGH_MEMORY;
+ }
+ }
+ if (!dstbuf || !dstsize) return MPADEC_RETCODE_OK;
+ while (dstsize) {
+ struct mpabuffer_t *buf = mpa->buffers;
+ if (mpa->out_buffer_used) {
+ n = (dstsize < mpa->out_buffer_used) ? dstsize : mpa->out_buffer_used;
+ memcpy(dstbuf, mpa->out_buffer + mpa->out_buffer_offset, n);
+ mpa->out_buffer_offset += n;
+ mpa->out_buffer_used -= n;
+ dstbuf += n;
+ dstsize -= n;
+ if (dstused) *dstused += n;
+ }
+ if (!dstsize) break;
+ if (mpa->in_buffer_used && mpa->in_buffer_offset) memmove(mpa->in_buffer, mpa->in_buffer + mpa->in_buffer_offset, mpa->in_buffer_used);
+ mpa->in_buffer_offset = 0;
+ while (buf && (mpa->in_buffer_used < sizeof(mpa->in_buffer))) {
+ if (buf->used) {
+ n = sizeof(mpa->in_buffer) - mpa->in_buffer_used;
+ if (n > buf->used) n = buf->used;
+ memcpy(mpa->in_buffer + mpa->in_buffer_offset + mpa->in_buffer_used, buf->buffer + buf->offset, n);
+ buf->offset += n;
+ buf->used -= n;
+ mpa->in_buffer_used += n;
+ }
+ if (!buf->used) {
+ struct mpabuffer_t *tmp = buf;
+ buf = buf->next;
+ free(tmp);
+ }
+ }
+ mpa->buffers = buf;
+ r = mpadec_decode(mpa->mpadec, mpa->in_buffer + mpa->in_buffer_offset, mpa->in_buffer_used, dstbuf, dstsize, &src_used, &dst_used);
+ mpa->in_buffer_offset += src_used;
+ mpa->in_buffer_used -= src_used;
+ dstbuf += dst_used;
+ dstsize -= dst_used;
+ if (dstused) *dstused += dst_used;
+ if (r == MPADEC_RETCODE_BUFFER_TOO_SMALL) {
+ mpa->out_buffer_offset = mpa->out_buffer_used = 0;
+ mpadec_decode(mpa->mpadec, mpa->in_buffer + mpa->in_buffer_offset, mpa->in_buffer_used, mpa->out_buffer, sizeof(mpa->out_buffer), &src_used, &mpa->out_buffer_used);
+ mpa->in_buffer_offset += src_used;
+ mpa->in_buffer_used -= src_used;
+ if (!mpa->out_buffer_used) break;
+ } else if (!mpa->buffers) break;
+ }
+ return MPADEC_RETCODE_OK;
+}
+
diff --git a/InOut/libmpadec/mpadec_config.h b/InOut/libmpadec/mpadec_config.h
new file mode 100644
index 0000000..4f54755
--- /dev/null
+++ b/InOut/libmpadec/mpadec_config.h
@@ -0,0 +1,86 @@
+
+/* Hardware architecture */
+//#define ARCH_ALPHA
+//#define ARCH_PPC
+//#define ARCH_SPARC
+#define ARCH_X86
+//#define ARCH_AMD64
+//#define ARCH_IA64
+
+#ifdef WIN32
+#define HAVE_IO_H
+#define HAVE_CONIO_H
+#undef OSS
+#else
+#define HAVE_INTTYPES_H
+#endif
+
+#define FLOAT MYFLT
+
+#include "sysdep.h"
+
+/*#ifdef HAVE_INTTYPES_H
+#include <inttypes.h>
+#else
+typedef signed char int8_t;
+typedef unsigned char uint8_t;
+typedef signed short int16_t;
+typedef unsigned short uint16_t;
+#if defined(__BORLANDC__) || defined(_MSC_VER)
+typedef signed __int64 int64_t;
+typedef unsigned __int64 uint64_t;
+#elif defined(__GNUC__)
+typedef signed long long int64_t;
+typedef unsigned long long uint64_t;
+#endif
+#if defined(ARCH_AMD64) || defined(ARCH_IA64) || defined(ARCH_ALPHA)
+typedef signed int int32_t;
+typedef unsigned int uint32_t;
+typedef int64_t intptr_t;
+typedef uint64_t uintptr_t;
+#else
+typedef signed long int32_t;
+typedef unsigned long uint32_t;
+typedef int32_t intptr_t;
+typedef uint32_t uintptr_t;
+#endif
+#endif
+*/
+
+#undef PACKED
+#ifdef __GNUC__
+#define PACKED __attribute__((packed))
+#else
+#define PACKED
+#endif
+
+#include <string.h>
+#include <memory.h>
+#include <math.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef HAVE_IO_H
+#include <io.h>
+#endif
+
+#undef FALSE
+#undef TRUE
+#define FALSE 0
+#define TRUE 1
+
+#ifndef O_BINARY
+#define O_BINARY 0
+#endif
+
+#ifdef WIN32
+#define strcasecmp stricmp
+#endif
+
+#ifndef M_PI
+#define M_PI 3.14159265358979323846
+#endif
+#ifndef M_SQRT2
+#define M_SQRT2 1.41421356237309504880
+#endif
+
diff --git a/InOut/libmpadec/mpadec_internal.h b/InOut/libmpadec/mpadec_internal.h
new file mode 100644
index 0000000..d21950d
--- /dev/null
+++ b/InOut/libmpadec/mpadec_internal.h
@@ -0,0 +1,212 @@
+/*
+ * mpadec - MPEG audio decoder
+ * Copyright (C) 2002-2004 Dmitriy Startsev (dstartsev at rambler.ru)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/* $Id: mpadec_internal.h,v 1.1.1.1 2004/07/27 02:57:55 metal_man Exp $ */
+
+#ifndef __MPADEC_INTERNAL_H
+#define __MPADEC_INTERNAL_H
+
+#include "mpadec_config.h"
+#include "mpadec.h"
+
+#define MPADEC_STATE_UNDEFINED 0
+#define MPADEC_STATE_START 1
+#define MPADEC_STATE_DECODE 2
+
+#define MPG_MD_STEREO 0
+#define MPG_MD_JOINT_STEREO 1
+#define MPG_MD_DUAL_CHANNEL 2
+#define MPG_MD_MONO 3
+
+#define SBLIMIT 32
+#define SSLIMIT 18
+#define SCALE_BLOCK 12
+
+typedef struct {
+ FLOAT decwin[512 + 32];
+ FLOAT muls[27][64];
+ FLOAT gainpow2[256 + 122];
+ FLOAT ispow[8207];
+ FLOAT win[2][4][36];
+ FLOAT *istabs[3][2][2];
+ FLOAT tan1_1[16];
+ FLOAT tan2_1[16];
+ FLOAT tan1_2[16];
+ FLOAT tan2_2[16];
+ FLOAT pow1_1[2][16];
+ FLOAT pow2_1[2][16];
+ FLOAT pow1_2[2][16];
+ FLOAT pow2_2[2][16];
+ int32_t long_limit[9][23];
+ int32_t short_limit[9][14];
+ int32_t n_slen2[512];
+ int32_t i_slen2[256];
+ int32_t mapbuf0[9][152];
+ int32_t mapbuf1[9][156];
+ int32_t mapbuf2[9][44];
+ int32_t *map[9][3];
+ int32_t *mapend[9][3];
+ uint8_t *mp2tables[10];
+ uint8_t grp3tab[32*3];
+ uint8_t grp5tab[128*3];
+ uint8_t grp9tab[1024*3];
+} mpadec_tables_t;
+
+typedef struct {
+ uint16_t bits;
+ int16_t d;
+} alloc_table_t;
+
+typedef struct {
+ uint32_t linbits;
+ int16_t *table;
+} newhuff_t;
+
+typedef struct {
+ int16_t long_idx[23];
+ int16_t long_diff[22];
+ int16_t short_idx[14];
+ int16_t short_diff[13];
+} bandinfo_t;
+
+typedef struct {
+ uint8_t layer;
+ uint8_t mode;
+ uint8_t channels;
+ uint8_t decoded_channels;
+ uint8_t LSF;
+ uint8_t MPEG25;
+ uint8_t CRC;
+ uint8_t extension;
+ uint8_t mode_ext;
+ uint8_t copyright;
+ uint8_t original;
+ uint8_t emphasis;
+ uint8_t jsbound;
+ uint8_t sblimit;
+ uint8_t downsample;
+ uint8_t downsample_sblimit;
+ uint16_t crc;
+ uint16_t rsvd;
+ uint32_t padding;
+ uint32_t bitrate_index;
+ uint32_t frequency_index;
+ uint32_t bitrate;
+ uint32_t frequency;
+ uint32_t frame_size;
+ uint32_t frame_samples;
+ uint32_t decoded_frequency;
+ uint32_t decoded_samples;
+ uint32_t decoded_size;
+ alloc_table_t *alloc_table;
+} frameinfo_t;
+
+typedef struct {
+ int32_t scfsi;
+ uint32_t part2_3_length;
+ uint32_t big_values;
+ uint32_t scalefac_compress;
+ uint8_t block_type;
+ uint8_t mixed_block_flag;
+ uint8_t preflag;
+ uint8_t scalefac_scale;
+ uint32_t table_select[3];
+ uint32_t subblock_gain[3];
+ uint32_t maxband[3];
+ uint32_t maxbandl;
+ uint32_t maxb;
+ uint32_t region1start;
+ uint32_t region2start;
+ uint32_t count1table_select;
+ FLOAT *full_gain[3];
+ FLOAT *pow2gain;
+} grinfo_t;
+
+typedef struct {
+ uint32_t main_data_begin;
+ uint32_t private_bits;
+ struct {
+ grinfo_t gr[2];
+ } ch[2];
+} sideinfo_t;
+
+struct mpadec_t {
+ uint32_t size;
+ uint32_t state;
+ uint8_t *next_byte;
+ uint32_t bytes_left;
+ uint32_t bit_buffer;
+ uint8_t bits_left;
+ uint8_t error;
+ uint8_t free_format;
+ uint8_t pad1;
+ uint32_t sample_size;
+ uint32_t prev_frame_size;
+ uint32_t header;
+ uint32_t hsize;
+ uint32_t ssize;
+ uint32_t dsize;
+ uint16_t crc;
+ uint16_t pad2;
+ uint32_t skip_samples;
+ uint32_t padding_samples;
+ uint32_t padding_start;
+ uint32_t decoded_frames;
+ uint32_t decoded_samples;
+ mp3tag_info_t tag_info;
+ uint32_t synth_size;
+ FLOAT replay_gain;
+ void (*synth_func)(void *mpadec, FLOAT block[SBLIMIT], int channel, uint8_t *buffer);
+ uint32_t reservoir_size;
+ uint8_t reservoir[2048];
+ frameinfo_t frame;
+ sideinfo_t sideinfo;
+ mpadec_config_t config;
+ mpadec_tables_t tables;
+ uint32_t synth_bufoffs;
+ uint8_t hybrid_block[4];
+ FLOAT hybrid_in[2][SBLIMIT][SSLIMIT];
+ FLOAT hybrid_out[2][SSLIMIT][SBLIMIT];
+ FLOAT hybrid_buffers[2][2][SBLIMIT*SSLIMIT];
+ FLOAT synth_buffers[2][2][0x110];
+};
+
+struct mpabuffer_t {
+ uint32_t size;
+ uint32_t offset;
+ uint32_t used;
+ uint8_t *buffer;
+ struct mpabuffer_t *next;
+};
+
+struct mpadec2_t {
+ uint32_t size;
+ mpadec_t mpadec;
+ struct mpabuffer_t *buffers;
+ uint32_t in_buffer_offset;
+ uint32_t in_buffer_used;
+ uint32_t out_buffer_offset;
+ uint32_t out_buffer_used;
+ uint8_t in_buffer[0x10000];
+ uint8_t out_buffer[8*1152];
+};
+
+#define GETBITS(n) ((mpa->bits_left >= (uint8_t)(n)) ? ((mpa->bit_buffer >> (mpa->bits_left -= (uint8_t)(n))) & bitmask[n]) : getbits(mpa, n))
+
+#endif
diff --git a/InOut/libmpadec/synth.c b/InOut/libmpadec/synth.c
new file mode 100644
index 0000000..2cea51f
--- /dev/null
+++ b/InOut/libmpadec/synth.c
@@ -0,0 +1,1440 @@
+/*
+ * mpadec - MPEG audio decoder
+ * Copyright (C) 2002-2004 Dmitriy Startsev (dstartsev at rambler.ru)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/* $Id: synth.c,v 1.3 2004/08/03 05:22:22 metal_man Exp $ */
+
+#include "mpadec_internal.h"
+
+#define ROUND(x) (floor((x) + 0.5))
+#define LROUND(x) ((int32_t)(ROUND(x)))
+#define LLROUND(x) ((int64_t)(ROUND(x)))
+
+static const MYFLT costab[32] = {
+ 0.50060299823519630134550410676638, 0.50547095989754365998444458560696,
+ 0.51544730992262454697495130564925, 0.53104259108978417447573393235719,
+ 0.55310389603444452782938083813705, 0.58293496820613387367383070125262,
+ 0.62250412303566481615725615676281, 0.67480834145500574602596871104104,
+ 0.74453627100229844977698119197295, 0.83934964541552703873926374662543,
+ 0.97256823786196069369768941405256, 1.16943993343288495515577028404220,
+ 1.48416461631416627724332693742810, 2.05778100995341155085655447971040,
+ 3.40760841846871878570119133345910, 10.1900081235480568112121092010360,
+ 0.50241928618815570551167011928012, 0.52249861493968888062857531905669,
+ 0.56694403481635770368053791515488, 0.64682178335999012954836011165200,
+ 0.78815462345125022473398248719742, 1.06067768599034747134045174723310,
+ 1.72244709823833392781591536415660, 5.10114861868916385810624549234540,
+ 0.50979557910415916894193980398784, 0.60134488693504528054372182390922,
+ 0.89997622313641570463850954094189, 2.56291544774150617879608629617770,
+ 0.54119610014619698439972320536639, 1.30656296487637652785664317342720,
+ 0.70710678118654752440084436210485, 0.0
+};
+
+static void dct64(MYFLT *outptr0, MYFLT *outptr1, MYFLT *samples)
+{
+ MYFLT tmp1[32], tmp2[32];
+
+ {
+ register MYFLT *in = samples;
+
+ tmp1[0] = in[0] + in[31];
+ tmp1[1] = in[1] + in[30];
+ tmp1[31] = (in[0] - in[31])*costab[0];
+ tmp1[30] = (in[1] - in[30])*costab[1];
+
+ tmp1[2] = in[2] + in[29];
+ tmp1[3] = in[3] + in[28];
+ tmp1[29] = (in[2] - in[29])*costab[2];
+ tmp1[28] = (in[3] - in[28])*costab[3];
+
+ tmp1[4] = in[4] + in[27];
+ tmp1[5] = in[5] + in[26];
+ tmp1[27] = (in[4] - in[27])*costab[4];
+ tmp1[26] = (in[5] - in[26])*costab[5];
+
+ tmp1[6] = in[6] + in[25];
+ tmp1[7] = in[7] + in[24];
+ tmp1[25] = (in[6] - in[25])*costab[6];
+ tmp1[24] = (in[7] - in[24])*costab[7];
+
+ tmp1[8] = in[8] + in[23];
+ tmp1[9] = in[9] + in[22];
+ tmp1[23] = (in[8] - in[23])*costab[8];
+ tmp1[22] = (in[9] - in[22])*costab[9];
+
+ tmp1[10] = in[10] + in[21];
+ tmp1[11] = in[11] + in[20];
+ tmp1[21] = (in[10] - in[21])*costab[10];
+ tmp1[20] = (in[11] - in[20])*costab[11];
+
+ tmp1[12] = in[12] + in[19];
+ tmp1[13] = in[13] + in[18];
+ tmp1[19] = (in[12] - in[19])*costab[12];
+ tmp1[18] = (in[13] - in[18])*costab[13];
+
+ tmp1[14] = in[14] + in[17];
+ tmp1[15] = in[15] + in[16];
+ tmp1[17] = (in[14] - in[17])*costab[14];
+ tmp1[16] = (in[15] - in[16])*costab[15];
+ }
+ {
+ tmp2[0] = tmp1[0] + tmp1[15];
+ tmp2[1] = tmp1[1] + tmp1[14];
+ tmp2[15] = (tmp1[0] - tmp1[15])*costab[16 + 0];
+ tmp2[14] = (tmp1[1] - tmp1[14])*costab[16 + 1];
+
+ tmp2[2] = tmp1[2] + tmp1[13];
+ tmp2[3] = tmp1[3] + tmp1[12];
+ tmp2[13] = (tmp1[2] - tmp1[13])*costab[16 + 2];
+ tmp2[12] = (tmp1[3] - tmp1[12])*costab[16 + 3];
+
+ tmp2[4] = tmp1[4] + tmp1[11];
+ tmp2[5] = tmp1[5] + tmp1[10];
+ tmp2[11] = (tmp1[4] - tmp1[11])*costab[16 + 4];
+ tmp2[10] = (tmp1[5] - tmp1[10])*costab[16 + 5];
+
+ tmp2[6] = tmp1[6] + tmp1[9];
+ tmp2[7] = tmp1[7] + tmp1[8];
+ tmp2[9] = (tmp1[6] - tmp1[9])*costab[16 + 6];
+ tmp2[8] = (tmp1[7] - tmp1[8])*costab[16 + 7];
+
+ tmp2[16] = tmp1[16] + tmp1[31];
+ tmp2[17] = tmp1[17] + tmp1[30];
+ tmp2[31] = (tmp1[31] - tmp1[16])*costab[16 + 0];
+ tmp2[30] = (tmp1[30] - tmp1[17])*costab[16 + 1];
+
+ tmp2[18] = tmp1[18] + tmp1[29];
+ tmp2[19] = tmp1[19] + tmp1[28];
+ tmp2[29] = (tmp1[29] - tmp1[18])*costab[16 + 2];
+ tmp2[28] = (tmp1[28] - tmp1[19])*costab[16 + 3];
+
+ tmp2[20] = tmp1[20] + tmp1[27];
+ tmp2[21] = tmp1[21] + tmp1[26];
+ tmp2[27] = (tmp1[27] - tmp1[20])*costab[16 + 4];
+ tmp2[26] = (tmp1[26] - tmp1[21])*costab[16 + 5];
+
+ tmp2[22] = tmp1[22] + tmp1[25];
+ tmp2[23] = tmp1[23] + tmp1[24];
+ tmp2[25] = (tmp1[25] - tmp1[22])*costab[16 + 6];
+ tmp2[24] = (tmp1[24] - tmp1[23])*costab[16 + 7];
+ }
+ {
+ tmp1[0] = tmp2[0] + tmp2[7];
+ tmp1[7] = (tmp2[0] - tmp2[7])*costab[16 + 8 + 0];
+ tmp1[1] = tmp2[1] + tmp2[6];
+ tmp1[6] = (tmp2[1] - tmp2[6])*costab[16 + 8 + 1];
+ tmp1[2] = tmp2[2] + tmp2[5];
+ tmp1[5] = (tmp2[2] - tmp2[5])*costab[16 + 8 + 2];
+ tmp1[3] = tmp2[3] + tmp2[4];
+ tmp1[4] = (tmp2[3] - tmp2[4])*costab[16 + 8 + 3];
+
+ tmp1[8] = tmp2[8] + tmp2[15];
+ tmp1[15] = (tmp2[15] - tmp2[8])*costab[16 + 8 + 0];
+ tmp1[9] = tmp2[9] + tmp2[14];
+ tmp1[14] = (tmp2[14] - tmp2[9])*costab[16 + 8 + 1];
+ tmp1[10] = tmp2[10] + tmp2[13];
+ tmp1[13] = (tmp2[13] - tmp2[10])*costab[16 + 8 + 2];
+ tmp1[11] = tmp2[11] + tmp2[12];
+ tmp1[12] = (tmp2[12] - tmp2[11])*costab[16 + 8 + 3];
+
+ tmp1[16] = tmp2[16] + tmp2[23];
+ tmp1[23] = (tmp2[16] - tmp2[23])*costab[16 + 8 + 0];
+ tmp1[17] = tmp2[17] + tmp2[22];
+ tmp1[22] = (tmp2[17] - tmp2[22])*costab[16 + 8 + 1];
+ tmp1[18] = tmp2[18] + tmp2[21];
+ tmp1[21] = (tmp2[18] - tmp2[21])*costab[16 + 8 + 2];
+ tmp1[19] = tmp2[19] + tmp2[20];
+ tmp1[20] = (tmp2[19] - tmp2[20])*costab[16 + 8 + 3];
+
+ tmp1[24] = tmp2[24] + tmp2[31];
+ tmp1[31] = (tmp2[31] - tmp2[24])*costab[16 + 8 + 0];
+ tmp1[25] = tmp2[25] + tmp2[30];
+ tmp1[30] = (tmp2[30] - tmp2[25])*costab[16 + 8 + 1];
+ tmp1[26] = tmp2[26] + tmp2[29];
+ tmp1[29] = (tmp2[29] - tmp2[26])*costab[16 + 8 + 2];
+ tmp1[27] = tmp2[27] + tmp2[28];
+ tmp1[28] = (tmp2[28] - tmp2[27])*costab[16 + 8 + 3];
+ }
+ {
+ tmp2[0] = tmp1[0] + tmp1[3];
+ tmp2[3] = (tmp1[0] - tmp1[3])*costab[16 + 8 + 4 + 0];
+ tmp2[1] = tmp1[1] + tmp1[2];
+ tmp2[2] = (tmp1[1] - tmp1[2])*costab[16 + 8 + 4 + 1];
+
+ tmp2[4] = tmp1[4] + tmp1[7];
+ tmp2[7] = (tmp1[7] - tmp1[4])*costab[16 + 8 + 4 + 0];
+ tmp2[5] = tmp1[5] + tmp1[6];
+ tmp2[6] = (tmp1[6] - tmp1[5])*costab[16 + 8 + 4 + 1];
+
+ tmp2[8] = tmp1[8] + tmp1[11];
+ tmp2[11] = (tmp1[8] - tmp1[11])*costab[16 + 8 + 4 + 0];
+ tmp2[9] = tmp1[9] + tmp1[10];
+ tmp2[10] = (tmp1[9] - tmp1[10])*costab[16 + 8 + 4 + 1];
+
+ tmp2[12] = tmp1[12] + tmp1[15];
+ tmp2[15] = (tmp1[15] - tmp1[12])*costab[16 + 8 + 4 + 0];
+ tmp2[13] = tmp1[13] + tmp1[14];
+ tmp2[14] = (tmp1[14] - tmp1[13])*costab[16 + 8 + 4 + 1];
+
+ tmp2[16] = tmp1[16] + tmp1[19];
+ tmp2[19] = (tmp1[16] - tmp1[19])*costab[16 + 8 + 4 + 0];
+ tmp2[17] = tmp1[17] + tmp1[18];
+ tmp2[18] = (tmp1[17] - tmp1[18])*costab[16 + 8 + 4 + 1];
+
+ tmp2[20] = tmp1[20] + tmp1[23];
+ tmp2[23] = (tmp1[23] - tmp1[20])*costab[16 + 8 + 4 + 0];
+ tmp2[21] = tmp1[21] + tmp1[22];
+ tmp2[22] = (tmp1[22] - tmp1[21])*costab[16 + 8 + 4 + 1];
+
+ tmp2[24] = tmp1[24] + tmp1[27];
+ tmp2[27] = (tmp1[24] - tmp1[27])*costab[16 + 8 + 4 + 0];
+ tmp2[25] = tmp1[25] + tmp1[26];
+ tmp2[26] = (tmp1[25] - tmp1[26])*costab[16 + 8 + 4 + 1];
+
+ tmp2[28] = tmp1[28] + tmp1[31];
+ tmp2[31] = (tmp1[31] - tmp1[28])*costab[16 + 8 + 4 + 0];
+ tmp2[29] = tmp1[29] + tmp1[30];
+ tmp2[30] = (tmp1[30] - tmp1[29])*costab[16 + 8 + 4 + 1];
+ }
+ {
+ tmp1[0] = tmp2[0] + tmp2[1];
+ tmp1[1] = (tmp2[0] - tmp2[1])*costab[16 + 8 + 4 + 2];
+ tmp1[2] = tmp2[2] + tmp2[3];
+ tmp1[3] = (tmp2[3] - tmp2[2])*costab[16 + 8 + 4 + 2];
+ tmp1[2] += tmp1[3];
+
+ tmp1[4] = tmp2[4] + tmp2[5];
+ tmp1[5] = (tmp2[4] - tmp2[5])*costab[16 + 8 + 4 + 2];
+ tmp1[6] = tmp2[6] + tmp2[7];
+ tmp1[7] = (tmp2[7] - tmp2[6])*costab[16 + 8 + 4 + 2];
+ tmp1[6] += tmp1[7];
+ tmp1[4] += tmp1[6];
+ tmp1[6] += tmp1[5];
+ tmp1[5] += tmp1[7];
+
+ tmp1[8] = tmp2[8] + tmp2[9];
+ tmp1[9] = (tmp2[8] - tmp2[9])*costab[16 + 8 + 4 + 2];
+ tmp1[10] = tmp2[10] + tmp2[11];
+ tmp1[11] = (tmp2[11] - tmp2[10])*costab[16 + 8 + 4 + 2];
+ tmp1[10] += tmp1[11];
+
+ tmp1[12] = tmp2[12] + tmp2[13];
+ tmp1[13] = (tmp2[12] - tmp2[13])*costab[16 + 8 + 4 + 2];
+ tmp1[14] = tmp2[14] + tmp2[15];
+ tmp1[15] = (tmp2[15] - tmp2[14])*costab[16 + 8 + 4 + 2];
+ tmp1[14] += tmp1[15];
+ tmp1[12] += tmp1[14];
+ tmp1[14] += tmp1[13];
+ tmp1[13] += tmp1[15];
+
+ tmp1[16] = tmp2[16] + tmp2[17];
+ tmp1[17] = (tmp2[16] - tmp2[17])*costab[16 + 8 + 4 + 2];
+ tmp1[18] = tmp2[18] + tmp2[19];
+ tmp1[19] = (tmp2[19] - tmp2[18])*costab[16 + 8 + 4 + 2];
+ tmp1[18] += tmp1[19];
+
+ tmp1[20] = tmp2[20] + tmp2[21];
+ tmp1[21] = (tmp2[20] - tmp2[21])*costab[16 + 8 + 4 + 2];
+ tmp1[22] = tmp2[22] + tmp2[23];
+ tmp1[23] = (tmp2[23] - tmp2[22])*costab[16 + 8 + 4 + 2];
+ tmp1[22] += tmp1[23];
+ tmp1[20] += tmp1[22];
+ tmp1[22] += tmp1[21];
+ tmp1[21] += tmp1[23];
+
+ tmp1[24] = tmp2[24] + tmp2[25];
+ tmp1[25] = (tmp2[24] - tmp2[25])*costab[16 + 8 + 4 + 2];
+ tmp1[26] = tmp2[26] + tmp2[27];
+ tmp1[27] = (tmp2[27] - tmp2[26])*costab[16 + 8 + 4 + 2];
+ tmp1[26] += tmp1[27];
+
+ tmp1[28] = tmp2[28] + tmp2[29];
+ tmp1[29] = (tmp2[28] - tmp2[29])*costab[16 + 8 + 4 + 2];
+ tmp1[30] = tmp2[30] + tmp2[31];
+ tmp1[31] = (tmp2[31] - tmp2[30])*costab[16 + 8 + 4 + 2];
+ tmp1[30] += tmp1[31];
+ tmp1[28] += tmp1[30];
+ tmp1[30] += tmp1[29];
+ tmp1[29] += tmp1[31];
+ }
+ {
+ register MYFLT tmp, *out0 = outptr0, *out1 = outptr1;
+
+ out0[16*16] = tmp1[0];
+ out0[12*16] = tmp1[4];
+ out0[8*16] = tmp1[2];
+ out0[4*16] = tmp1[6];
+ out0[0*16] = tmp1[1];
+ out1[0*16] = tmp1[1];
+ out1[4*16] = tmp1[5];
+ out1[8*16] = tmp1[3];
+ out1[12*16] = tmp1[7];
+
+ out0[14*16] = tmp1[8] + tmp1[12];
+ out0[10*16] = tmp1[12] + tmp1[10];
+ out0[6*16] = tmp1[10] + tmp1[14];
+ out0[2*16] = tmp1[14] + tmp1[9];
+ out1[2*16] = tmp1[9] + tmp1[13];
+ out1[6*16] = tmp1[13] + tmp1[11];
+ out1[10*16] = tmp1[11] + tmp1[15];
+ out1[14*16] = tmp1[15];
+
+ tmp = tmp1[24] + tmp1[28];
+ out0[15*16] = tmp + tmp1[16];
+ out0[13*16] = tmp + tmp1[20];
+ tmp = tmp1[28] + tmp1[26];
+ out0[11*16] = tmp + tmp1[20];
+ out0[9*16] = tmp + tmp1[18];
+ tmp = tmp1[26] + tmp1[30];
+ out0[7*16] = tmp + tmp1[18];
+ out0[5*16] = tmp + tmp1[22];
+ tmp = tmp1[30] + tmp1[25];
+ out0[3*16] = tmp + tmp1[22];
+ out0[1*16] = tmp + tmp1[17];
+ tmp = tmp1[25] + tmp1[29];
+ out1[1*16] = tmp + tmp1[17];
+ out1[3*16] = tmp + tmp1[21];
+ tmp = tmp1[29] + tmp1[27];
+ out1[5*16] = tmp + tmp1[21];
+ out1[7*16] = tmp + tmp1[19];
+ tmp = tmp1[27] + tmp1[31];
+ out1[9*16] = tmp + tmp1[19];
+ out1[11*16] = tmp + tmp1[23];
+ out1[13*16] = tmp1[23] + tmp1[31];
+ out1[15*16] = tmp1[31];
+ }
+}
+
+static void synth_full(mpadec_t mpadec, MYFLT *bandptr, int channel, MYFLT *buffer)
+{
+ register struct mpadec_t *mpa = (struct mpadec_t *)mpadec;
+ unsigned bo;
+ MYFLT *b0, (*buf)[0x110];
+
+ if (!channel) {
+ mpa->synth_bufoffs--;
+ mpa->synth_bufoffs &= 0x0F;
+ buf = mpa->synth_buffers[0];
+ } else buf = mpa->synth_buffers[1];
+ if (mpa->synth_bufoffs & 1) {
+ b0 = buf[0];
+ bo = mpa->synth_bufoffs;
+ dct64(buf[1] + ((mpa->synth_bufoffs + 1) & 0x0F),
+ buf[0] + mpa->synth_bufoffs, bandptr);
+ } else {
+ b0 = buf[1];
+ bo = mpa->synth_bufoffs + 1;
+ dct64(buf[0] + mpa->synth_bufoffs, buf[1] + (mpa->synth_bufoffs + 1), bandptr);
+ }
+ {
+ register int i;
+ register MYFLT *out = buffer;
+ register MYFLT *win = mpa->tables.decwin + (16 - bo);
+
+ for (i = 16; i; i--, win += 32, b0 += 16) {
+ register MYFLT sum = win[0]*b0[0];
+ sum -= win[1]*b0[1];
+ sum += win[2]*b0[2];
+ sum -= win[3]*b0[3];
+ sum += win[4]*b0[4];
+ sum -= win[5]*b0[5];
+ sum += win[6]*b0[6];
+ sum -= win[7]*b0[7];
+ sum += win[8]*b0[8];
+ sum -= win[9]*b0[9];
+ sum += win[10]*b0[10];
+ sum -= win[11]*b0[11];
+ sum += win[12]*b0[12];
+ sum -= win[13]*b0[13];
+ sum += win[14]*b0[14];
+ sum -= win[15]*b0[15];
+ *out++ = sum;
+ }
+ {
+ register MYFLT sum = win[0]*b0[0];
+ sum += win[2]*b0[2];
+ sum += win[4]*b0[4];
+ sum += win[6]*b0[6];
+ sum += win[8]*b0[8];
+ sum += win[10]*b0[10];
+ sum += win[12]*b0[12];
+ sum += win[14]*b0[14];
+ *out++ = sum;
+ win -= 32; b0 -= 16;
+ }
+ win += (bo << 1);
+ for (i = 15; i; i--, win -= 32, b0 -= 16)
+ {
+ register MYFLT sum = -win[-1]*b0[0];
+ sum -= win[-2]*b0[1];
+ sum -= win[-3]*b0[2];
+ sum -= win[-4]*b0[3];
+ sum -= win[-5]*b0[4];
+ sum -= win[-6]*b0[5];
+ sum -= win[-7]*b0[6];
+ sum -= win[-8]*b0[7];
+ sum -= win[-9]*b0[8];
+ sum -= win[-10]*b0[9];
+ sum -= win[-11]*b0[10];
+ sum -= win[-12]*b0[11];
+ sum -= win[-13]*b0[12];
+ sum -= win[-14]*b0[13];
+ sum -= win[-15]*b0[14];
+ sum -= win[-0]*b0[15];
+ *out++ = sum;
+ }
+ }
+}
+
+static void synth_half(mpadec_t mpadec, MYFLT *bandptr, int channel, MYFLT *buffer)
+{
+ register struct mpadec_t *mpa = (struct mpadec_t *)mpadec;
+ unsigned bo;
+ MYFLT *b0, (*buf)[0x110];
+
+ if (!channel) {
+ mpa->synth_bufoffs--;
+ mpa->synth_bufoffs &= 0x0F;
+ buf = mpa->synth_buffers[0];
+ } else buf = mpa->synth_buffers[1];
+ if (mpa->synth_bufoffs & 1) {
+ b0 = buf[0];
+ bo = mpa->synth_bufoffs;
+ dct64(buf[1] + ((mpa->synth_bufoffs + 1) & 0x0F),
+ buf[0] + mpa->synth_bufoffs, bandptr);
+ } else {
+ b0 = buf[1];
+ bo = mpa->synth_bufoffs + 1;
+ dct64(buf[0] + mpa->synth_bufoffs,
+ buf[1] + (mpa->synth_bufoffs + 1), bandptr);
+ }
+ {
+ register int i;
+ register MYFLT *out = buffer;
+ register MYFLT *win = mpa->tables.decwin + (16 - bo);
+
+ for (i = 8; i; i--, win += 64, b0 += 32) {
+ register MYFLT sum = win[0]*b0[0];
+ sum -= win[1]*b0[1];
+ sum += win[2]*b0[2];
+ sum -= win[3]*b0[3];
+ sum += win[4]*b0[4];
+ sum -= win[5]*b0[5];
+ sum += win[6]*b0[6];
+ sum -= win[7]*b0[7];
+ sum += win[8]*b0[8];
+ sum -= win[9]*b0[9];
+ sum += win[10]*b0[10];
+ sum -= win[11]*b0[11];
+ sum += win[12]*b0[12];
+ sum -= win[13]*b0[13];
+ sum += win[14]*b0[14];
+ sum -= win[15]*b0[15];
+ *out++ = sum;
+ }
+ {
+ register MYFLT sum = win[0]*b0[0];
+ sum += win[2]*b0[2];
+ sum += win[4]*b0[4];
+ sum += win[6]*b0[6];
+ sum += win[8]*b0[8];
+ sum += win[10]*b0[10];
+ sum += win[12]*b0[12];
+ sum += win[14]*b0[14];
+ *out++ = sum;
+ win -= 64; b0 -= 32;
+ }
+ win += (bo << 1);
+ for (i = 7; i; i--, win -= 64, b0 -= 32)
+ {
+ register MYFLT sum = -win[-1]*b0[0];
+ sum -= win[-2]*b0[1];
+ sum -= win[-3]*b0[2];
+ sum -= win[-4]*b0[3];
+ sum -= win[-5]*b0[4];
+ sum -= win[-6]*b0[5];
+ sum -= win[-7]*b0[6];
+ sum -= win[-8]*b0[7];
+ sum -= win[-9]*b0[8];
+ sum -= win[-10]*b0[9];
+ sum -= win[-11]*b0[10];
+ sum -= win[-12]*b0[11];
+ sum -= win[-13]*b0[12];
+ sum -= win[-14]*b0[13];
+ sum -= win[-15]*b0[14];
+ sum -= win[-0]*b0[15];
+ *out++ = sum;
+ }
+ }
+}
+
+/* Full quality */
+
+/* 16 bit, little-endian */
+
+static void synth_full16lmm(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register int16_t *out = (int16_t *)buffer;
+ MYFLT buf[SBLIMIT];
+
+ synth_full(mpadec, bandptr, channel, buf);
+ for (i = 0; i < SBLIMIT; i++, out++) {
+ register int32_t tmp = LROUND(buf[i]);
+ if (tmp > 32767) tmp = 32767; else if (tmp < -32768) tmp = -32768;
+ ((uint8_t *)out)[0] = (uint8_t)tmp;
+ ((int8_t *)out)[1] = (int8_t)(tmp >> 8);
+ }
+}
+
+#define synth_full16lsm synth_full16lmm
+
+static void synth_full16lms(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register int16_t *out = (int16_t *)buffer;
+ MYFLT buf[SBLIMIT];
+
+ synth_full(mpadec, bandptr, channel, buf);
+ for (i = 0; i < SBLIMIT; i++, out += 2) {
+ register int32_t tmp = LROUND(buf[i]);
+ if (tmp > 32767) tmp = 32767; else if (tmp < -32768) tmp = -32768;
+ ((uint8_t *)out)[0] = ((uint8_t *)out)[2] = (uint8_t)tmp;
+ ((int8_t *)out)[1] = ((int8_t *)out)[3] = (int8_t)(tmp >> 8);
+ }
+}
+
+static void synth_full16lss(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register int16_t *out = (int16_t *)buffer;
+ MYFLT buf[SBLIMIT];
+
+ synth_full(mpadec, bandptr, channel, buf);
+ if (channel) out++;
+ for (i = 0; i < SBLIMIT; i++, out += 2) {
+ register int32_t tmp = LROUND(buf[i]);
+ if (tmp > 32767) tmp = 32767; else if (tmp < -32768) tmp = -32768;
+ ((uint8_t *)out)[0] = (uint8_t)tmp;
+ ((int8_t *)out)[1] = (int8_t)(tmp >> 8);
+ }
+}
+
+/* 16 bit, big-endian */
+
+static void synth_full16bmm(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register int16_t *out = (int16_t *)buffer;
+ MYFLT buf[SBLIMIT];
+
+ synth_full(mpadec, bandptr, channel, buf);
+ for (i = 0; i < SBLIMIT; i++, out++) {
+ register int32_t tmp = LROUND(buf[i]);
+ if (tmp > 32767) tmp = 32767;
+ else if (tmp < -32768) tmp = -32768;
+ ((uint8_t *)out)[1] = (uint8_t)tmp;
+ ((int8_t *)out)[0] = (int8_t)(tmp >> 8);
+ }
+}
+
+#define synth_full16bsm synth_full16bmm
+
+static void synth_full16bms(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register int16_t *out = (int16_t *)buffer;
+ MYFLT buf[SBLIMIT];
+
+ synth_full(mpadec, bandptr, channel, buf);
+ for (i = 0; i < SBLIMIT; i++, out += 2) {
+ register int32_t tmp = LROUND(buf[i]);
+ if (tmp > 32767) tmp = 32767; else if (tmp < -32768) tmp = -32768;
+ ((uint8_t *)out)[1] = ((uint8_t *)out)[3] = (uint8_t)tmp;
+ ((int8_t *)out)[0] = ((int8_t *)out)[2] = (int8_t)(tmp >> 8);
+ }
+}
+
+static void synth_full16bss(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register int16_t *out = (int16_t *)buffer;
+ MYFLT buf[SBLIMIT];
+
+ synth_full(mpadec, bandptr, channel, buf);
+ if (channel) out++;
+ for (i = 0; i < SBLIMIT; i++, out += 2) {
+ register int32_t tmp = LROUND(buf[i]);
+ if (tmp > 32767) tmp = 32767; else if (tmp < -32768) tmp = -32768;
+ ((uint8_t *)out)[1] = (uint8_t)tmp;
+ ((int8_t *)out)[0] = (int8_t)(tmp >> 8);
+ }
+}
+
+/* 24 bit, little-endian */
+
+static void synth_full24lmm(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register uint8_t *out = (uint8_t *)buffer;
+ MYFLT buf[SBLIMIT];
+
+ synth_full(mpadec, bandptr, channel, buf);
+ for (i = 0; i < SBLIMIT; i++, out += 3) {
+ register int32_t tmp = LROUND(buf[i]);
+ if (tmp > 0x7FFFFF) tmp = 0x7FFFFF;
+ else if (tmp < -0x800000) tmp = -0x800000;
+ ((uint8_t *)out)[0] = (uint8_t)tmp;
+ ((uint8_t *)out)[1] = (uint8_t)(tmp >> 8);
+ ((int8_t *)out)[2] = (int8_t)(tmp >> 16);
+ }
+}
+
+#define synth_full24lsm synth_full24lmm
+
+static void synth_full24lms(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register uint8_t *out = (uint8_t *)buffer;
+ MYFLT buf[SBLIMIT];
+
+ synth_full(mpadec, bandptr, channel, buf);
+ for (i = 0; i < SBLIMIT; i++, out += 6) {
+ register int32_t tmp = LROUND(buf[i]);
+ if (tmp > 0x7FFFFF) tmp = 0x7FFFFF;
+ else if (tmp < -0x800000) tmp = -0x800000;
+ ((uint8_t *)out)[0] = ((uint8_t *)out)[3] = (uint8_t)tmp;
+ ((uint8_t *)out)[1] = ((uint8_t *)out)[4] = (uint8_t)(tmp >> 8);
+ ((int8_t *)out)[2] = ((int8_t *)out)[5] = (int8_t)(tmp >> 16);
+ }
+}
+
+static void synth_full24lss(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register uint8_t *out = (uint8_t *)buffer;
+ MYFLT buf[SBLIMIT];
+
+ synth_full(mpadec, bandptr, channel, buf);
+ if (channel) out += 3;
+ for (i = 0; i < SBLIMIT; i++, out += 6) {
+ register int32_t tmp = LROUND(buf[i]);
+ if (tmp > 0x7FFFFF) tmp = 0x7FFFFF;
+ else if (tmp < -0x800000) tmp = -0x800000;
+ ((uint8_t *)out)[0] = (uint8_t)tmp;
+ ((uint8_t *)out)[1] = (uint8_t)(tmp >> 8);
+ ((int8_t *)out)[2] = (int8_t)(tmp >> 16);
+ }
+}
+
+/* 24 bit, big-endian */
+
+static void synth_full24bmm(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register uint8_t *out = (uint8_t *)buffer;
+ MYFLT buf[SBLIMIT];
+
+ synth_full(mpadec, bandptr, channel, buf);
+ for (i = 0; i < SBLIMIT; i++, out += 3) {
+ register int32_t tmp = LROUND(buf[i]);
+ if (tmp > 0x7FFFFF) tmp = 0x7FFFFF;
+ else if (tmp < -0x800000) tmp = -0x800000;
+ ((uint8_t *)out)[2] = (uint8_t)tmp;
+ ((uint8_t *)out)[1] = (uint8_t)(tmp >> 8);
+ ((int8_t *)out)[0] = (int8_t)(tmp >> 16);
+ }
+}
+
+#define synth_full24bsm synth_full24bmm
+
+static void synth_full24bms(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register uint8_t *out = (uint8_t *)buffer;
+ MYFLT buf[SBLIMIT];
+
+ synth_full(mpadec, bandptr, channel, buf);
+ for (i = 0; i < SBLIMIT; i++, out += 6) {
+ register int32_t tmp = LROUND(buf[i]);
+ if (tmp > 0x7FFFFF) tmp = 0x7FFFFF;
+ else if (tmp < -0x800000) tmp = -0x800000;
+ ((uint8_t *)out)[2] = ((uint8_t *)out)[5] = (uint8_t)tmp;
+ ((uint8_t *)out)[1] = ((uint8_t *)out)[4] = (uint8_t)(tmp >> 8);
+ ((int8_t *)out)[0] = ((int8_t *)out)[3] = (int8_t)(tmp >> 16);
+ }
+}
+
+static void synth_full24bss(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register uint8_t *out = (uint8_t *)buffer;
+ MYFLT buf[SBLIMIT];
+
+ synth_full(mpadec, bandptr, channel, buf);
+ if (channel) out += 3;
+ for (i = 0; i < SBLIMIT; i++, out += 6) {
+ register int32_t tmp = LROUND(buf[i]);
+ if (tmp > 0x7FFFFF) tmp = 0x7FFFFF;
+ else if (tmp < -0x800000) tmp = -0x800000;
+ ((uint8_t *)out)[2] = (uint8_t)tmp;
+ ((uint8_t *)out)[1] = (uint8_t)(tmp >> 8);
+ ((int8_t *)out)[0] = (int8_t)(tmp >> 16);
+ }
+}
+
+/* 32 bit , little-endian */
+
+static void synth_full32lmm(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register int32_t *out = (int32_t *)buffer;
+ MYFLT buf[SBLIMIT];
+
+ synth_full(mpadec, bandptr, channel, buf);
+ for (i = 0; i < SBLIMIT; i++, out++) {
+ register int64_t tmp = LLROUND(buf[i]);
+ if (tmp > 0x7FFFFFFF) tmp = 0x7FFFFFFF;
+ else if (tmp < (-0x7FFFFFFF - 1)) tmp = (-0x7FFFFFFF - 1);
+ ((uint8_t *)out)[0] = (uint8_t)tmp;
+ ((uint8_t *)out)[1] = (uint8_t)(tmp >> 8);
+ ((uint8_t *)out)[2] = (uint8_t)(tmp >> 16);
+ ((int8_t *)out)[3] = (int8_t)(tmp >> 24);
+ }
+}
+
+#define synth_full32lsm synth_full32lmm
+
+static void synth_full32lms(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register int32_t *out = (int32_t *)buffer;
+ MYFLT buf[SBLIMIT];
+
+ synth_full(mpadec, bandptr, channel, buf);
+ for (i = 0; i < SBLIMIT; i++, out += 2) {
+ register int64_t tmp = LLROUND(buf[i]);
+ if (tmp > 0x7FFFFFFF) tmp = 0x7FFFFFFF;
+ else if (tmp < (-0x7FFFFFFF - 1)) tmp = (-0x7FFFFFFF - 1);
+ ((uint8_t *)out)[0] = ((uint8_t *)out)[4] = (uint8_t)tmp;
+ ((uint8_t *)out)[1] = ((uint8_t *)out)[5] = (uint8_t)(tmp >> 8);
+ ((uint8_t *)out)[2] = ((uint8_t *)out)[6] = (uint8_t)(tmp >> 16);
+ ((int8_t *)out)[3] = ((int8_t *)out)[7] = (int8_t)(tmp >> 24);
+ }
+}
+
+static void synth_full32lss(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register int32_t *out = (int32_t *)buffer;
+ MYFLT buf[SBLIMIT];
+
+ synth_full(mpadec, bandptr, channel, buf);
+ if (channel) out++;
+ for (i = 0; i < SBLIMIT; i++, out += 2) {
+ register int64_t tmp = LLROUND(buf[i]);
+ if (tmp > 0x7FFFFFFF) tmp = 0x7FFFFFFF;
+ else if (tmp < (-0x7FFFFFFF - 1)) tmp = (-0x7FFFFFFF - 1);
+ ((uint8_t *)out)[0] = (uint8_t)tmp;
+ ((uint8_t *)out)[1] = (uint8_t)(tmp >> 8);
+ ((uint8_t *)out)[2] = (uint8_t)(tmp >> 16);
+ ((int8_t *)out)[3] = (int8_t)(tmp >> 24);
+ }
+}
+
+/* 32 bit, big-endian */
+
+static void synth_full32bmm(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register int32_t *out = (int32_t *)buffer;
+ MYFLT buf[SBLIMIT];
+
+ synth_full(mpadec, bandptr, channel, buf);
+ for (i = 0; i < SBLIMIT; i++, out++) {
+ register int64_t tmp = LLROUND(buf[i]);
+ if (tmp > 0x7FFFFFFF) tmp = 0x7FFFFFFF;
+ else if (tmp < (-0x7FFFFFFF - 1)) tmp = (-0x7FFFFFFF - 1);
+ ((uint8_t *)out)[3] = (uint8_t)tmp;
+ ((uint8_t *)out)[2] = (uint8_t)(tmp >> 8);
+ ((uint8_t *)out)[1] = (uint8_t)(tmp >> 16);
+ ((int8_t *)out)[0] = (int8_t)(tmp >> 24);
+ }
+}
+
+#define synth_full32bsm synth_full32bmm
+
+static void synth_full32bms(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register int32_t *out = (int32_t *)buffer;
+ MYFLT buf[SBLIMIT];
+
+ synth_full(mpadec, bandptr, channel, buf);
+ for (i = 0; i < SBLIMIT; i++, out += 2) {
+ register int64_t tmp = LLROUND(buf[i]);
+ if (tmp > 0x7FFFFFFF) tmp = 0x7FFFFFFF;
+ else if (tmp < (-0x7FFFFFFF - 1)) tmp = (-0x7FFFFFFF - 1);
+ ((uint8_t *)out)[3] = ((uint8_t *)out)[7] = (uint8_t)tmp;
+ ((uint8_t *)out)[2] = ((uint8_t *)out)[6] = (uint8_t)(tmp >> 8);
+ ((uint8_t *)out)[1] = ((uint8_t *)out)[5] = (uint8_t)(tmp >> 16);
+ ((int8_t *)out)[0] = ((int8_t *)out)[4] = (int8_t)(tmp >> 24);
+ }
+}
+
+static void synth_full32bss(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register int32_t *out = (int32_t *)buffer;
+ MYFLT buf[SBLIMIT];
+
+ synth_full(mpadec, bandptr, channel, buf);
+ if (channel) out++;
+ for (i = 0; i < SBLIMIT; i++, out += 2) {
+ register int64_t tmp = LLROUND(buf[i]);
+ if (tmp > 0x7FFFFFFF) tmp = 0x7FFFFFFF;
+ else if (tmp < (-0x7FFFFFFF - 1)) tmp = (-0x7FFFFFFF - 1);
+ ((uint8_t *)out)[3] = (uint8_t)tmp;
+ ((uint8_t *)out)[2] = (uint8_t)(tmp >> 8);
+ ((uint8_t *)out)[1] = (uint8_t)(tmp >> 16);
+ ((int8_t *)out)[0] = (int8_t)(tmp >> 24);
+ }
+}
+
+/* 32 bit floating-point, little-endian */
+
+static void synth_full32flmm(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register float *out = (float *)buffer;
+ MYFLT buf[SBLIMIT];
+
+ synth_full(mpadec, bandptr, channel, buf);
+ for (i = 0; i < SBLIMIT; i++, out++) {
+ int32_t tmp;
+ *((float *)(&tmp)) = (float)buf[i];
+ ((uint8_t *)out)[0] = (uint8_t)tmp;
+ ((uint8_t *)out)[1] = (uint8_t)(tmp >> 8);
+ ((uint8_t *)out)[2] = (uint8_t)(tmp >> 16);
+ ((int8_t *)out)[3] = (int8_t)(tmp >> 24);
+ }
+}
+
+#define synth_full32flsm synth_full32flmm
+
+static void synth_full32flms(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register float *out = (float *)buffer;
+ MYFLT buf[SBLIMIT];
+
+ synth_full(mpadec, bandptr, channel, buf);
+ for (i = 0; i < SBLIMIT; i++, out += 2) {
+ int32_t tmp;
+ *((float *)(&tmp)) = (float)buf[i];
+ ((uint8_t *)out)[0] = ((uint8_t *)out)[4] = (uint8_t)tmp;
+ ((uint8_t *)out)[1] = ((uint8_t *)out)[5] = (uint8_t)(tmp >> 8);
+ ((uint8_t *)out)[2] = ((uint8_t *)out)[6] = (uint8_t)(tmp >> 16);
+ ((int8_t *)out)[3] = ((int8_t *)out)[7] = (int8_t)(tmp >> 24);
+ }
+}
+
+static void synth_full32flss(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register float *out = (float *)buffer;
+ MYFLT buf[SBLIMIT];
+
+ synth_full(mpadec, bandptr, channel, buf);
+ if (channel) out++;
+ for (i = 0; i < SBLIMIT; i++, out += 2) {
+ int32_t tmp;
+ *((float *)(&tmp)) = (float)buf[i];
+ ((uint8_t *)out)[0] = (uint8_t)tmp;
+ ((uint8_t *)out)[1] = (uint8_t)(tmp >> 8);
+ ((uint8_t *)out)[2] = (uint8_t)(tmp >> 16);
+ ((int8_t *)out)[3] = (int8_t)(tmp >> 24);
+ }
+}
+
+/* 32 bit floating-point, big-endian */
+
+static void synth_full32fbmm(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register float *out = (float *)buffer;
+ MYFLT buf[SBLIMIT];
+
+ synth_full(mpadec, bandptr, channel, buf);
+ for (i = 0; i < SBLIMIT; i++, out++) {
+ int32_t tmp;
+ *((float *)(&tmp)) = (float)buf[i];
+ ((uint8_t *)out)[3] = (uint8_t)tmp;
+ ((uint8_t *)out)[2] = (uint8_t)(tmp >> 8);
+ ((uint8_t *)out)[1] = (uint8_t)(tmp >> 16);
+ ((int8_t *)out)[0] = (int8_t)(tmp >> 24);
+ }
+}
+
+#define synth_full32fbsm synth_full32fbmm
+
+static void synth_full32fbms(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register float *out = (float *)buffer;
+ MYFLT buf[SBLIMIT];
+
+ synth_full(mpadec, bandptr, channel, buf);
+ for (i = 0; i < SBLIMIT; i++, out += 2) {
+ int32_t tmp;
+ *((float *)(&tmp)) = (float)buf[i];
+ ((uint8_t *)out)[3] = ((uint8_t *)out)[7] = (uint8_t)tmp;
+ ((uint8_t *)out)[2] = ((uint8_t *)out)[6] = (uint8_t)(tmp >> 8);
+ ((uint8_t *)out)[1] = ((uint8_t *)out)[5] = (uint8_t)(tmp >> 16);
+ ((int8_t *)out)[0] = ((int8_t *)out)[4] = (int8_t)(tmp >> 24);
+ }
+}
+
+static void synth_full32fbss(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register float *out = (float *)buffer;
+ MYFLT buf[SBLIMIT];
+
+ synth_full(mpadec, bandptr, channel, buf);
+ if (channel) out++;
+ for (i = 0; i < SBLIMIT; i++, out += 2) {
+ int32_t tmp;
+ *((float *)(&tmp)) = (float)buf[i];
+ ((uint8_t *)out)[3] = (uint8_t)tmp;
+ ((uint8_t *)out)[2] = (uint8_t)(tmp >> 8);
+ ((uint8_t *)out)[1] = (uint8_t)(tmp >> 16);
+ ((int8_t *)out)[0] = (int8_t)(tmp >> 24);
+ }
+}
+
+/* Half quality */
+
+/* 16 bit, little-endian */
+
+static void synth_half16lmm(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register int16_t *out = (int16_t *)buffer;
+ MYFLT buf[SBLIMIT/2];
+
+ synth_half(mpadec, bandptr, channel, buf);
+ for (i = 0; i < SBLIMIT/2; i++, out++) {
+ register int32_t tmp = LROUND(buf[i]);
+ if (tmp > 32767) tmp = 32767; else if (tmp < -32768) tmp = -32768;
+ ((uint8_t *)out)[0] = (uint8_t)tmp;
+ ((int8_t *)out)[1] = (int8_t)(tmp >> 8);
+ }
+}
+
+#define synth_half16lsm synth_half16lmm
+
+static void synth_half16lms(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register int16_t *out = (int16_t *)buffer;
+ MYFLT buf[SBLIMIT/2];
+
+ synth_half(mpadec, bandptr, channel, buf);
+ for (i = 0; i < SBLIMIT/2; i++, out += 2) {
+ register int32_t tmp = LROUND(buf[i]);
+ if (tmp > 32767) tmp = 32767; else if (tmp < -32768) tmp = -32768;
+ ((uint8_t *)out)[0] = ((uint8_t *)out)[2] = (uint8_t)tmp;
+ ((int8_t *)out)[1] = ((int8_t *)out)[3] = (int8_t)(tmp >> 8);
+ }
+}
+
+static void synth_half16lss(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register int16_t *out = (int16_t *)buffer;
+ MYFLT buf[SBLIMIT/2];
+
+ synth_half(mpadec, bandptr, channel, buf);
+ if (channel) out++;
+ for (i = 0; i < SBLIMIT/2; i++, out += 2) {
+ register int32_t tmp = LROUND(buf[i]);
+ if (tmp > 32767) tmp = 32767; else if (tmp < -32768) tmp = -32768;
+ ((uint8_t *)out)[0] = (uint8_t)tmp;
+ ((int8_t *)out)[1] = (int8_t)(tmp >> 8);
+ }
+}
+
+/* 16 bit, big-endian */
+
+static void synth_half16bmm(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register int16_t *out = (int16_t *)buffer;
+ MYFLT buf[SBLIMIT/2];
+
+ synth_half(mpadec, bandptr, channel, buf);
+ for (i = 0; i < SBLIMIT/2; i++, out++) {
+ register int32_t tmp = LROUND(buf[i]);
+ if (tmp > 32767) tmp = 32767; else if (tmp < -32768) tmp = -32768;
+ ((uint8_t *)out)[1] = (uint8_t)tmp;
+ ((int8_t *)out)[0] = (int8_t)(tmp >> 8);
+ }
+}
+
+#define synth_half16bsm synth_half16bmm
+
+static void synth_half16bms(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register int16_t *out = (int16_t *)buffer;
+ MYFLT buf[SBLIMIT/2];
+
+ synth_half(mpadec, bandptr, channel, buf);
+ for (i = 0; i < SBLIMIT/2; i++, out += 2) {
+ register int32_t tmp = LROUND(buf[i]);
+ if (tmp > 32767) tmp = 32767; else if (tmp < -32768) tmp = -32768;
+ ((uint8_t *)out)[1] = ((uint8_t *)out)[3] = (uint8_t)tmp;
+ ((int8_t *)out)[0] = ((int8_t *)out)[2] = (int8_t)(tmp >> 8);
+ }
+}
+
+static void synth_half16bss(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register int16_t *out = (int16_t *)buffer;
+ MYFLT buf[SBLIMIT/2];
+
+ synth_half(mpadec, bandptr, channel, buf);
+ if (channel) out++;
+ for (i = 0; i < SBLIMIT/2; i++, out += 2) {
+ register int32_t tmp = LROUND(buf[i]);
+ if (tmp > 32767) tmp = 32767; else if (tmp < -32768) tmp = -32768;
+ ((uint8_t *)out)[1] = (uint8_t)tmp;
+ ((int8_t *)out)[0] = (int8_t)(tmp >> 8);
+ }
+}
+
+/* 24 bit, little-endian */
+
+static void synth_half24lmm(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register uint8_t *out = (uint8_t *)buffer;
+ MYFLT buf[SBLIMIT/2];
+
+ synth_half(mpadec, bandptr, channel, buf);
+ for (i = 0; i < SBLIMIT/2; i++, out += 3) {
+ register int32_t tmp = LROUND(buf[i]);
+ if (tmp > 0x7FFFFF) tmp = 0x7FFFFF;
+ else if (tmp < -0x800000) tmp = -0x800000;
+ ((uint8_t *)out)[0] = (uint8_t)tmp;
+ ((uint8_t *)out)[1] = (uint8_t)(tmp >> 8);
+ ((int8_t *)out)[2] = (int8_t)(tmp >> 16);
+ }
+}
+
+#define synth_half24lsm synth_half24lmm
+
+static void synth_half24lms(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register uint8_t *out = (uint8_t *)buffer;
+ MYFLT buf[SBLIMIT/2];
+
+ synth_half(mpadec, bandptr, channel, buf);
+ for (i = 0; i < SBLIMIT/2; i++, out += 6) {
+ register int32_t tmp = LROUND(buf[i]);
+ if (tmp > 0x7FFFFF) tmp = 0x7FFFFF;
+ else if (tmp < -0x800000) tmp = -0x800000;
+ ((uint8_t *)out)[0] = ((uint8_t *)out)[3] = (uint8_t)tmp;
+ ((uint8_t *)out)[1] = ((uint8_t *)out)[4] = (uint8_t)(tmp >> 8);
+ ((int8_t *)out)[2] = ((int8_t *)out)[5] = (int8_t)(tmp >> 16);
+ }
+}
+
+static void synth_half24lss(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register uint8_t *out = (uint8_t *)buffer;
+ MYFLT buf[SBLIMIT/2];
+
+ synth_half(mpadec, bandptr, channel, buf);
+ if (channel) out += 3;
+ for (i = 0; i < SBLIMIT/2; i++, out += 6) {
+ register int32_t tmp = LROUND(buf[i]);
+ if (tmp > 0x7FFFFF) tmp = 0x7FFFFF;
+ else if (tmp < -0x800000) tmp = -0x800000;
+ ((uint8_t *)out)[0] = (uint8_t)tmp;
+ ((uint8_t *)out)[1] = (uint8_t)(tmp >> 8);
+ ((int8_t *)out)[2] = (int8_t)(tmp >> 16);
+ }
+}
+
+/* 24 bit, big-endian */
+
+static void synth_half24bmm(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register uint8_t *out = (uint8_t *)buffer;
+ MYFLT buf[SBLIMIT/2];
+
+ synth_half(mpadec, bandptr, channel, buf);
+ for (i = 0; i < SBLIMIT/2; i++, out += 3) {
+ register int32_t tmp = LROUND(buf[i]);
+ if (tmp > 0x7FFFFF) tmp = 0x7FFFFF;
+ else if (tmp < -0x800000) tmp = -0x800000;
+ ((uint8_t *)out)[2] = (uint8_t)tmp;
+ ((uint8_t *)out)[1] = (uint8_t)(tmp >> 8);
+ ((int8_t *)out)[0] = (int8_t)(tmp >> 16);
+ }
+}
+
+#define synth_half24bsm synth_half24bmm
+
+static void synth_half24bms(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register uint8_t *out = (uint8_t *)buffer;
+ MYFLT buf[SBLIMIT/2];
+
+ synth_half(mpadec, bandptr, channel, buf);
+ for (i = 0; i < SBLIMIT/2; i++, out += 6) {
+ register int32_t tmp = LROUND(buf[i]);
+ if (tmp > 0x7FFFFF) tmp = 0x7FFFFF;
+ else if (tmp < -0x800000) tmp = -0x800000;
+ ((uint8_t *)out)[2] = ((uint8_t *)out)[5] = (uint8_t)tmp;
+ ((uint8_t *)out)[1] = ((uint8_t *)out)[4] = (uint8_t)(tmp >> 8);
+ ((int8_t *)out)[0] = ((int8_t *)out)[3] = (int8_t)(tmp >> 16);
+ }
+}
+
+static void synth_half24bss(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register uint8_t *out = (uint8_t *)buffer;
+ MYFLT buf[SBLIMIT/2];
+
+ synth_half(mpadec, bandptr, channel, buf);
+ if (channel) out += 3;
+ for (i = 0; i < SBLIMIT/2; i++, out += 6) {
+ register int32_t tmp = LROUND(buf[i]);
+ if (tmp > 0x7FFFFF) tmp = 0x7FFFFF;
+ else if (tmp < -0x800000) tmp = -0x800000;
+ ((uint8_t *)out)[2] = (uint8_t)tmp;
+ ((uint8_t *)out)[1] = (uint8_t)(tmp >> 8);
+ ((int8_t *)out)[0] = (int8_t)(tmp >> 16);
+ }
+}
+
+/* 32 bit, little-endian */
+
+static void synth_half32lmm(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register int32_t *out = (int32_t *)buffer;
+ MYFLT buf[SBLIMIT/2];
+
+ synth_half(mpadec, bandptr, channel, buf);
+ for (i = 0; i < SBLIMIT/2; i++, out++) {
+ register int64_t tmp = LLROUND(buf[i]);
+ if (tmp > 0x7FFFFFFF) tmp = 0x7FFFFFFF;
+ else if (tmp < (-0x7FFFFFFF - 1)) tmp = (-0x7FFFFFFF - 1);
+ ((uint8_t *)out)[0] = (uint8_t)tmp;
+ ((uint8_t *)out)[1] = (uint8_t)(tmp >> 8);
+ ((uint8_t *)out)[2] = (uint8_t)(tmp >> 16);
+ ((int8_t *)out)[3] = (int8_t)(tmp >> 24);
+ }
+}
+
+#define synth_half32lsm synth_half32lmm
+
+static void synth_half32lms(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register int32_t *out = (int32_t *)buffer;
+ MYFLT buf[SBLIMIT/2];
+
+ synth_half(mpadec, bandptr, channel, buf);
+ for (i = 0; i < SBLIMIT/2; i++, out += 2) {
+ register int64_t tmp = LLROUND(buf[i]);
+ if (tmp > 0x7FFFFFFF) tmp = 0x7FFFFFFF;
+ else if (tmp < (-0x7FFFFFFF - 1)) tmp = (-0x7FFFFFFF - 1);
+ ((uint8_t *)out)[0] = ((uint8_t *)out)[4] = (uint8_t)tmp;
+ ((uint8_t *)out)[1] = ((uint8_t *)out)[5] = (uint8_t)(tmp >> 8);
+ ((uint8_t *)out)[2] = ((uint8_t *)out)[6] = (uint8_t)(tmp >> 16);
+ ((int8_t *)out)[3] = ((int8_t *)out)[7] = (int8_t)(tmp >> 24);
+ }
+}
+
+static void synth_half32lss(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register int32_t *out = (int32_t *)buffer;
+ MYFLT buf[SBLIMIT/2];
+
+ synth_half(mpadec, bandptr, channel, buf);
+ if (channel) out++;
+ for (i = 0; i < SBLIMIT/2; i++, out += 2) {
+ register int64_t tmp = LLROUND(buf[i]);
+ if (tmp > 0x7FFFFFFF) tmp = 0x7FFFFFFF;
+ else if (tmp < (-0x7FFFFFFF - 1)) tmp = (-0x7FFFFFFF - 1);
+ ((uint8_t *)out)[0] = (uint8_t)tmp;
+ ((uint8_t *)out)[1] = (uint8_t)(tmp >> 8);
+ ((uint8_t *)out)[2] = (uint8_t)(tmp >> 16);
+ ((int8_t *)out)[3] = (int8_t)(tmp >> 24);
+ }
+}
+
+/* 32 bit, big-endian */
+
+static void synth_half32bmm(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register int32_t *out = (int32_t *)buffer;
+ MYFLT buf[SBLIMIT/2];
+
+ synth_half(mpadec, bandptr, channel, buf);
+ for (i = 0; i < SBLIMIT/2; i++, out++) {
+ register int64_t tmp = LLROUND(buf[i]);
+ if (tmp > 0x7FFFFFFF) tmp = 0x7FFFFFFF;
+ else if (tmp < (-0x7FFFFFFF - 1)) tmp = (-0x7FFFFFFF - 1);
+ ((uint8_t *)out)[3] = (uint8_t)tmp;
+ ((uint8_t *)out)[2] = (uint8_t)(tmp >> 8);
+ ((uint8_t *)out)[1] = (uint8_t)(tmp >> 16);
+ ((int8_t *)out)[0] = (int8_t)(tmp >> 24);
+ }
+}
+
+#define synth_half32bsm synth_half32bmm
+
+static void synth_half32bms(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register int32_t *out = (int32_t *)buffer;
+ MYFLT buf[SBLIMIT/2];
+
+ synth_half(mpadec, bandptr, channel, buf);
+ for (i = 0; i < SBLIMIT/2; i++, out += 2) {
+ register int64_t tmp = LLROUND(buf[i]);
+ if (tmp > 0x7FFFFFFF) tmp = 0x7FFFFFFF;
+ else if (tmp < (-0x7FFFFFFF - 1)) tmp = (-0x7FFFFFFF - 1);
+ ((uint8_t *)out)[3] = ((uint8_t *)out)[7] = (uint8_t)tmp;
+ ((uint8_t *)out)[2] = ((uint8_t *)out)[6] = (uint8_t)(tmp >> 8);
+ ((uint8_t *)out)[1] = ((uint8_t *)out)[5] = (uint8_t)(tmp >> 16);
+ ((int8_t *)out)[0] = ((int8_t *)out)[4] = (int8_t)(tmp >> 24);
+ }
+}
+
+static void synth_half32bss(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register int32_t *out = (int32_t *)buffer;
+ MYFLT buf[SBLIMIT/2];
+
+ synth_half(mpadec, bandptr, channel, buf);
+ if (channel) out++;
+ for (i = 0; i < SBLIMIT/2; i++, out += 2) {
+ register int64_t tmp = LLROUND(buf[i]);
+ if (tmp > 0x7FFFFFFF) tmp = 0x7FFFFFFF;
+ else if (tmp < (-0x7FFFFFFF - 1)) tmp = (-0x7FFFFFFF - 1);
+ ((uint8_t *)out)[3] = (uint8_t)tmp;
+ ((uint8_t *)out)[2] = (uint8_t)(tmp >> 8);
+ ((uint8_t *)out)[1] = (uint8_t)(tmp >> 16);
+ ((int8_t *)out)[0] = (int8_t)(tmp >> 24);
+ }
+}
+
+/* 32 bit floating-point, little-endian */
+
+static void synth_half32flmm(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register float *out = (float *)buffer;
+ MYFLT buf[SBLIMIT/2];
+
+ synth_half(mpadec, bandptr, channel, buf);
+ for (i = 0; i < SBLIMIT/2; i++, out++) {
+ int32_t tmp;
+ *((float *)(&tmp)) = (float)buf[i];
+ ((uint8_t *)out)[0] = (uint8_t)tmp;
+ ((uint8_t *)out)[1] = (uint8_t)(tmp >> 8);
+ ((uint8_t *)out)[2] = (uint8_t)(tmp >> 16);
+ ((int8_t *)out)[3] = (int8_t)(tmp >> 24);
+ }
+}
+
+#define synth_half32flsm synth_half32flmm
+
+static void synth_half32flms(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register float *out = (float *)buffer;
+ MYFLT buf[SBLIMIT/2];
+
+ synth_half(mpadec, bandptr, channel, buf);
+ for (i = 0; i < SBLIMIT/2; i++, out += 2) {
+ int32_t tmp;
+ *((float *)(&tmp)) = (float)buf[i];
+ ((uint8_t *)out)[0] = ((uint8_t *)out)[4] = (uint8_t)tmp;
+ ((uint8_t *)out)[1] = ((uint8_t *)out)[5] = (uint8_t)(tmp >> 8);
+ ((uint8_t *)out)[2] = ((uint8_t *)out)[6] = (uint8_t)(tmp >> 16);
+ ((int8_t *)out)[3] = ((int8_t *)out)[7] = (int8_t)(tmp >> 24);
+ }
+}
+
+static void synth_half32flss(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register float *out = (float *)buffer;
+ MYFLT buf[SBLIMIT/2];
+
+ synth_half(mpadec, bandptr, channel, buf);
+ if (channel) out++;
+ for (i = 0; i < SBLIMIT/2; i++, out += 2) {
+ int32_t tmp;
+ *((float *)(&tmp)) = (float)buf[i];
+ ((uint8_t *)out)[0] = (uint8_t)tmp;
+ ((uint8_t *)out)[1] = (uint8_t)(tmp >> 8);
+ ((uint8_t *)out)[2] = (uint8_t)(tmp >> 16);
+ ((int8_t *)out)[3] = (int8_t)(tmp >> 24);
+ }
+}
+
+/* 32 bit floating-point, big-endian */
+
+static void synth_half32fbmm(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register float *out = (float *)buffer;
+ MYFLT buf[SBLIMIT/2];
+
+ synth_half(mpadec, bandptr, channel, buf);
+ for (i = 0; i < SBLIMIT/2; i++, out++) {
+ int32_t tmp;
+ *((float *)(&tmp)) = (float)buf[i];
+ ((uint8_t *)out)[3] = (uint8_t)tmp;
+ ((uint8_t *)out)[2] = (uint8_t)(tmp >> 8);
+ ((uint8_t *)out)[1] = (uint8_t)(tmp >> 16);
+ ((int8_t *)out)[0] = (int8_t)(tmp >> 24);
+ }
+}
+
+#define synth_half32fbsm synth_half32fbmm
+
+static void synth_half32fbms(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register float *out = (float *)buffer;
+ MYFLT buf[SBLIMIT/2];
+
+ synth_half(mpadec, bandptr, channel, buf);
+ for (i = 0; i < SBLIMIT/2; i++, out += 2) {
+ int32_t tmp;
+ *((float *)(&tmp)) = (float)buf[i];
+ ((uint8_t *)out)[3] = ((uint8_t *)out)[7] = (uint8_t)tmp;
+ ((uint8_t *)out)[2] = ((uint8_t *)out)[6] = (uint8_t)(tmp >> 8);
+ ((uint8_t *)out)[1] = ((uint8_t *)out)[5] = (uint8_t)(tmp >> 16);
+ ((int8_t *)out)[0] = ((int8_t *)out)[4] = (int8_t)(tmp >> 24);
+ }
+}
+
+static void synth_half32fbss(mpadec_t mpadec, MYFLT *bandptr,
+ int channel, uint8_t *buffer)
+{
+ register int i;
+ register float *out = (float *)buffer;
+ MYFLT buf[SBLIMIT/2];
+
+ synth_half(mpadec, bandptr, channel, buf);
+ if (channel) out++;
+ for (i = 0; i < SBLIMIT/2; i++, out += 2) {
+ int32_t tmp;
+ *((float *)(&tmp)) = (float)buf[i];
+ ((uint8_t *)out)[3] = (uint8_t)tmp;
+ ((uint8_t *)out)[2] = (uint8_t)(tmp >> 8);
+ ((uint8_t *)out)[1] = (uint8_t)(tmp >> 16);
+ ((int8_t *)out)[0] = (int8_t)(tmp >> 24);
+ }
+}
+
+void *synth_table[2][2][4][4] = {
+ { { { synth_full16lmm, synth_full16lms, synth_full16lsm, synth_full16lss },
+ { synth_full24lmm, synth_full24lms, synth_full24lsm, synth_full24lss },
+ { synth_full32lmm, synth_full32lms, synth_full32lsm, synth_full32lss },
+ { synth_full32flmm, synth_full32flms, synth_full32flsm, synth_full32flss } },
+ { { synth_full16bmm, synth_full16bms, synth_full16bsm, synth_full16bss },
+ { synth_full24bmm, synth_full24bms, synth_full24bsm, synth_full24bss },
+ { synth_full32bmm, synth_full32bms, synth_full32bsm, synth_full32bss },
+ { synth_full32fbmm, synth_full32fbms, synth_full32fbsm, synth_full32fbss } } },
+ { { { synth_half16lmm, synth_half16lms, synth_half16lsm, synth_half16lss },
+ { synth_half24lmm, synth_half24lms, synth_half24lsm, synth_half24lss },
+ { synth_half32lmm, synth_half32lms, synth_half32lsm, synth_half32lss },
+ { synth_half32flmm, synth_half32flms, synth_half32flsm, synth_half32flss } },
+ { { synth_half16bmm, synth_half16bms, synth_half16bsm, synth_half16bss },
+ { synth_half24bmm, synth_half24bms, synth_half24bsm, synth_half24bss },
+ { synth_half32bmm, synth_half32bms, synth_half32bsm, synth_half32bss },
+ { synth_half32fbmm, synth_half32fbms, synth_half32fbsm, synth_half32fbss } } }
+};
+
diff --git a/InOut/libmpadec/tables.c b/InOut/libmpadec/tables.c
new file mode 100644
index 0000000..ce28b00
--- /dev/null
+++ b/InOut/libmpadec/tables.c
@@ -0,0 +1,823 @@
+/*
+ * mpadec - MPEG audio decoder
+ * Copyright (C) 2002-2004 Dmitriy Startsev (dstartsev at rambler.ru)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/* $Id: tables.c,v 1.1.1.1 2004/07/27 02:58:48 metal_man Exp $ */
+
+#include <math.h>
+#include "csoundCore.h"
+#include "mpadec_internal.h"
+
+const uint16_t crc_table[256] = {
+ 0x0000, 0x8005, 0x800F, 0x000A, 0x801B, 0x001E, 0x0014, 0x8011,
+ 0x8033, 0x0036, 0x003C, 0x8039, 0x0028, 0x802D, 0x8027, 0x0022,
+ 0x8063, 0x0066, 0x006C, 0x8069, 0x0078, 0x807D, 0x8077, 0x0072,
+ 0x0050, 0x8055, 0x805F, 0x005A, 0x804B, 0x004E, 0x0044, 0x8041,
+ 0x80C3, 0x00C6, 0x00CC, 0x80C9, 0x00D8, 0x80DD, 0x80D7, 0x00D2,
+ 0x00F0, 0x80F5, 0x80FF, 0x00FA, 0x80EB, 0x00EE, 0x00E4, 0x80E1,
+ 0x00A0, 0x80A5, 0x80AF, 0x00AA, 0x80BB, 0x00BE, 0x00B4, 0x80B1,
+ 0x8093, 0x0096, 0x009C, 0x8099, 0x0088, 0x808D, 0x8087, 0x0082,
+ 0x8183, 0x0186, 0x018C, 0x8189, 0x0198, 0x819D, 0x8197, 0x0192,
+ 0x01B0, 0x81B5, 0x81BF, 0x01BA, 0x81AB, 0x01AE, 0x01A4, 0x81A1,
+ 0x01E0, 0x81E5, 0x81EF, 0x01EA, 0x81FB, 0x01FE, 0x01F4, 0x81F1,
+ 0x81D3, 0x01D6, 0x01DC, 0x81D9, 0x01C8, 0x81CD, 0x81C7, 0x01C2,
+ 0x0140, 0x8145, 0x814F, 0x014A, 0x815B, 0x015E, 0x0154, 0x8151,
+ 0x8173, 0x0176, 0x017C, 0x8179, 0x0168, 0x816D, 0x8167, 0x0162,
+ 0x8123, 0x0126, 0x012C, 0x8129, 0x0138, 0x813D, 0x8137, 0x0132,
+ 0x0110, 0x8115, 0x811F, 0x011A, 0x810B, 0x010E, 0x0104, 0x8101,
+ 0x8303, 0x0306, 0x030C, 0x8309, 0x0318, 0x831D, 0x8317, 0x0312,
+ 0x0330, 0x8335, 0x833F, 0x033A, 0x832B, 0x032E, 0x0324, 0x8321,
+ 0x0360, 0x8365, 0x836F, 0x036A, 0x837B, 0x037E, 0x0374, 0x8371,
+ 0x8353, 0x0356, 0x035C, 0x8359, 0x0348, 0x834D, 0x8347, 0x0342,
+ 0x03C0, 0x83C5, 0x83CF, 0x03CA, 0x83DB, 0x03DE, 0x03D4, 0x83D1,
+ 0x83F3, 0x03F6, 0x03FC, 0x83F9, 0x03E8, 0x83ED, 0x83E7, 0x03E2,
+ 0x83A3, 0x03A6, 0x03AC, 0x83A9, 0x03B8, 0x83BD, 0x83B7, 0x03B2,
+ 0x0390, 0x8395, 0x839F, 0x039A, 0x838B, 0x038E, 0x0384, 0x8381,
+ 0x0280, 0x8285, 0x828F, 0x028A, 0x829B, 0x029E, 0x0294, 0x8291,
+ 0x82B3, 0x02B6, 0x02BC, 0x82B9, 0x02A8, 0x82AD, 0x82A7, 0x02A2,
+ 0x82E3, 0x02E6, 0x02EC, 0x82E9, 0x02F8, 0x82FD, 0x82F7, 0x02F2,
+ 0x02D0, 0x82D5, 0x82DF, 0x02DA, 0x82CB, 0x02CE, 0x02C4, 0x82C1,
+ 0x8243, 0x0246, 0x024C, 0x8249, 0x0258, 0x825D, 0x8257, 0x0252,
+ 0x0270, 0x8275, 0x827F, 0x027A, 0x826B, 0x026E, 0x0264, 0x8261,
+ 0x0220, 0x8225, 0x822F, 0x022A, 0x823B, 0x023E, 0x0234, 0x8231,
+ 0x8213, 0x0216, 0x021C, 0x8219, 0x0208, 0x820D, 0x8207, 0x0202
+};
+
+const MYFLT newcos[8] = {
+ 0.93969262078590838405410927732473, -0.17364817766693034885171662676931,
+ -0.76604444311897803520239265055542, 0.98480775301220805936674302458952,
+ -0.34202014332566873304409961468226, -0.64278760968653932632264340990726,
+ 0.86602540378443864676372317075294, 0.5
+};
+
+const MYFLT tfcos36[9] = {
+ 0.50190991877167369479228784572231, 0.51763809020504152469779767524810,
+ 0.55168895948124587824344735167135, 0.61038729438072803416729403213053,
+ 0.70710678118654752440084436210485, 0.87172339781054900991884170836219,
+ 1.18310079157624925896683916310440, 1.93185165257813657349948639945780,
+ 5.73685662283492756457461251791420
+};
+
+const MYFLT tfcos12[3] = {
+ 0.5176380902050415246977976752481, 0.70710678118654752440084436210485,
+ 1.9318516525781365734994863994578
+};
+
+const MYFLT cs[8] = {
+ 0.85749292571254418689325777610964, 0.88174199731770518177557399759066,
+ 0.94962864910273289204833276115398, 0.98331459249179014599030200066392,
+ 0.99551781606758576429088040422867, 0.99916055817814750452934664352117,
+ 0.99989919524444704626703489425565, 0.99999315507028023572010150517204
+};
+
+const MYFLT ca[8] = {
+ -0.5144957554275265121359546656657900, -0.4717319685649722722499320887110000,
+ -0.3133774542039018543759498111808100, -0.1819131996109811770082058701228300,
+ -0.0945741925264206476076336384017240, -0.0409655828853040476857032123843680,
+ -0.0141985685724711480569918954984300, -0.0036999746737600368721643755691366
+};
+
+bandinfo_t band_info[9] = {
+ /* MPEG 1.0 */
+ { { 0, 4, 8, 12, 16, 20, 24, 30, 36, 44, 52, 62, 74, 90, 110, 134, 162, 196, 238, 288, 342, 418, 576 },
+ { 4, 4, 4, 4, 4, 4, 6, 6, 8, 8, 10, 12, 16, 20, 24, 28, 34, 42, 50, 54, 76, 158 },
+ { 0, 4*3, 8*3, 12*3, 16*3, 22*3, 30*3, 40*3, 52*3, 66*3, 84*3, 106*3, 136*3, 192*3 },
+ { 4, 4, 4, 4, 6, 8, 10, 12, 14, 18, 22, 30, 56 } },
+ { { 0, 4, 8, 12, 16, 20, 24, 30, 36, 42, 50, 60, 72, 88, 106, 128, 156, 190, 230, 276, 330, 384, 576 },
+ { 4, 4, 4, 4, 4, 4, 6, 6, 6, 8, 10, 12, 16, 18, 22, 28, 34, 40, 46, 54, 54, 192 },
+ { 0, 4*3, 8*3, 12*3, 16*3, 22*3, 28*3, 38*3, 50*3, 64*3, 80*3, 100*3, 126*3, 192*3 },
+ { 4, 4, 4, 4, 6, 6, 10, 12, 14, 16, 20, 26, 66 } },
+ { { 0, 4, 8, 12, 16, 20, 24, 30, 36, 44, 54, 66, 82, 102, 126, 156, 194, 240, 296, 364, 448, 550, 576 },
+ { 4, 4, 4, 4, 4, 4, 6, 6, 8, 10, 12, 16, 20, 24, 30, 38, 46, 56, 68, 84, 102, 26 },
+ { 0, 4*3, 8*3, 12*3, 16*3, 22*3, 30*3, 42*3, 58*3, 78*3, 104*3, 138*3, 180*3, 192*3 },
+ { 4, 4, 4, 4, 6, 8, 12, 16, 20, 26, 34, 42, 12 } },
+ /* MPEG 2.0 */
+ { { 0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464, 522, 576 },
+ { 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16, 20, 24, 28, 32, 38, 46, 52, 60, 68, 58, 54 },
+ { 0, 4*3, 8*3, 12*3, 18*3, 24*3, 32*3, 42*3, 56*3, 74*3, 100*3, 132*3, 174*3, 192*3 },
+ { 4, 4, 4, 6, 6, 8, 10, 14, 18, 26, 32, 42, 18 } },
+ { { 0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 114, 136, 162, 194, 232, 278, 330, 394, 464, 540, 576 },
+ { 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16, 18, 22, 26, 32, 38, 46, 52, 64, 70, 76, 36 },
+ { 0, 4*3, 8*3, 12*3, 18*3, 26*3, 36*3, 48*3, 62*3, 80*3, 104*3, 136*3, 180*3, 192*3 },
+ { 4, 4, 4, 6, 8, 10, 12, 14, 18, 24, 32, 44, 12 } },
+ { { 0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464, 522, 576 },
+ { 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16, 20, 24, 28, 32, 38, 46, 52, 60, 68, 58, 54 },
+ { 0, 4*3, 8*3, 12*3, 18*3, 26*3, 36*3, 48*3, 62*3, 80*3, 104*3, 134*3, 174*3, 192*3 },
+ { 4, 4, 4, 6, 8, 10, 12, 14, 18, 24, 30, 40, 18 } },
+ /* MPEG 2.5 */
+ { { 0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464, 522, 576 },
+ { 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16, 20, 24, 28, 32, 38, 46, 52, 60, 68, 58, 54 },
+ { 0, 12, 24, 36, 54, 78, 108, 144, 186, 240, 312, 402, 522, 576 },
+ { 4, 4, 4, 6, 8, 10, 12, 14, 18, 24, 30, 40, 18 } },
+ { { 0, 6, 12, 18, 24, 30, 36, 44, 54, 66, 80, 96, 116, 140, 168, 200, 238, 284, 336, 396, 464, 522, 576 },
+ { 6, 6, 6, 6, 6, 6, 8, 10, 12, 14, 16, 20, 24, 28, 32, 38, 46, 52, 60, 68, 58, 54 },
+ { 0, 12, 24, 36, 54, 78, 108, 144, 186, 240, 312, 402, 522, 576 },
+ { 4, 4, 4, 6, 8, 10, 12, 14, 18, 24, 30, 40, 18 } },
+ { { 0, 12, 24, 36, 48, 60, 72, 88, 108, 132, 160, 192, 232, 280, 336, 400, 476, 566, 568, 570, 572, 574, 576 },
+ { 12, 12, 12, 12, 12, 12, 16, 20, 24, 28, 32, 40, 48, 56, 64, 76, 90, 2, 2, 2, 2, 2 },
+ { 0, 24, 48, 72, 108, 156, 216, 288, 372, 480, 486, 492, 498, 576 },
+ { 8, 8, 8, 12, 16, 20, 24, 28, 36, 2, 2, 2, 26 } },
+};
+
+static alloc_table_t alloc_0[] = {
+ {4,0}, {5,3}, {3,-3}, {4,-7}, {5,-15}, {6,-31}, {7,-63}, {8,-127}, {9,-255}, {10,-511},
+ {11,-1023}, {12,-2047}, {13,-4095}, {14,-8191}, {15,-16383}, {16,-32767},
+ {4,0}, {5,3}, {3,-3}, {4,-7}, {5,-15}, {6,-31}, {7,-63}, {8,-127}, {9,-255}, {10,-511},
+ {11,-1023}, {12,-2047}, {13,-4095}, {14,-8191}, {15,-16383}, {16,-32767},
+ {4,0}, {5,3}, {3,-3}, {4,-7}, {5,-15}, {6,-31}, {7,-63}, {8,-127}, {9,-255}, {10,-511},
+ {11,-1023}, {12,-2047}, {13,-4095}, {14,-8191}, {15,-16383}, {16,-32767},
+ {4,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63}, {8,-127},
+ {9,-255}, {10,-511}, {11,-1023}, {12,-2047}, {13,-4095}, {16,-32767},
+ {4,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63}, {8,-127},
+ {9,-255}, {10,-511}, {11,-1023}, {12,-2047}, {13,-4095}, {16,-32767},
+ {4,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63}, {8,-127},
+ {9,-255}, {10,-511}, {11,-1023}, {12,-2047}, {13,-4095}, {16,-32767},
+ {4,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63}, {8,-127},
+ {9,-255}, {10,-511}, {11,-1023}, {12,-2047}, {13,-4095}, {16,-32767},
+ {4,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63}, {8,-127},
+ {9,-255}, {10,-511}, {11,-1023}, {12,-2047}, {13,-4095}, {16,-32767},
+ {4,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63}, {8,-127},
+ {9,-255}, {10,-511}, {11,-1023}, {12,-2047}, {13,-4095}, {16,-32767},
+ {4,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63}, {8,-127},
+ {9,-255}, {10,-511}, {11,-1023}, {12,-2047}, {13,-4095}, {16,-32767},
+ {4,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63}, {8,-127},
+ {9,-255}, {10,-511}, {11,-1023}, {12,-2047}, {13,-4095}, {16,-32767},
+ {3,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {16,-32767},
+ {3,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {16,-32767},
+ {3,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {16,-32767},
+ {3,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {16,-32767},
+ {3,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {16,-32767},
+ {3,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {16,-32767},
+ {3,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {16,-32767},
+ {3,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {16,-32767},
+ {3,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {16,-32767},
+ {3,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {16,-32767},
+ {3,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {16,-32767},
+ {3,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {16,-32767},
+ {2,0}, {5,3}, {7,5}, {16,-32767},
+ {2,0}, {5,3}, {7,5}, {16,-32767},
+ {2,0}, {5,3}, {7,5}, {16,-32767},
+ {2,0}, {5,3}, {7,5}, {16,-32767}
+};
+
+static alloc_table_t alloc_1[] = {
+ {4,0}, {5,3}, {3,-3}, {4,-7}, {5,-15}, {6,-31}, {7,-63}, {8,-127}, {9,-255}, {10,-511},
+ {11,-1023}, {12,-2047}, {13,-4095}, {14,-8191}, {15,-16383}, {16,-32767},
+ {4,0}, {5,3}, {3,-3}, {4,-7}, {5,-15}, {6,-31}, {7,-63}, {8,-127}, {9,-255}, {10,-511},
+ {11,-1023}, {12,-2047}, {13,-4095}, {14,-8191}, {15,-16383}, {16,-32767},
+ {4,0}, {5,3}, {3,-3}, {4,-7}, {5,-15}, {6,-31}, {7,-63}, {8,-127}, {9,-255}, {10,-511},
+ {11,-1023}, {12,-2047}, {13,-4095}, {14,-8191}, {15,-16383}, {16,-32767},
+ {4,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63}, {8,-127},
+ {9,-255}, {10,-511}, {11,-1023}, {12,-2047}, {13,-4095}, {16,-32767},
+ {4,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63}, {8,-127},
+ {9,-255}, {10,-511}, {11,-1023}, {12,-2047}, {13,-4095}, {16,-32767},
+ {4,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63}, {8,-127},
+ {9,-255}, {10,-511}, {11,-1023}, {12,-2047}, {13,-4095}, {16,-32767},
+ {4,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63}, {8,-127},
+ {9,-255}, {10,-511}, {11,-1023}, {12,-2047}, {13,-4095}, {16,-32767},
+ {4,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63}, {8,-127},
+ {9,-255}, {10,-511}, {11,-1023}, {12,-2047}, {13,-4095}, {16,-32767},
+ {4,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63}, {8,-127},
+ {9,-255}, {10,-511}, {11,-1023}, {12,-2047}, {13,-4095}, {16,-32767},
+ {4,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63}, {8,-127},
+ {9,-255}, {10,-511}, {11,-1023}, {12,-2047}, {13,-4095}, {16,-32767},
+ {4,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63}, {8,-127},
+ {9,-255}, {10,-511}, {11,-1023}, {12,-2047}, {13,-4095}, {16,-32767},
+ {3,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {16,-32767},
+ {3,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {16,-32767},
+ {3,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {16,-32767},
+ {3,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {16,-32767},
+ {3,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {16,-32767},
+ {3,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {16,-32767},
+ {3,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {16,-32767},
+ {3,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {16,-32767},
+ {3,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {16,-32767},
+ {3,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {16,-32767},
+ {3,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {16,-32767},
+ {3,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {16,-32767},
+ {2,0}, {5,3}, {7,5}, {16,-32767},
+ {2,0}, {5,3}, {7,5}, {16,-32767},
+ {2,0}, {5,3}, {7,5}, {16,-32767},
+ {2,0}, {5,3}, {7,5}, {16,-32767},
+ {2,0}, {5,3}, {7,5}, {16,-32767},
+ {2,0}, {5,3}, {7,5}, {16,-32767},
+ {2,0}, {5,3}, {7,5}, {16,-32767}
+};
+
+static alloc_table_t alloc_2[] = {
+ {4,0}, {5,3}, {7,5}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63}, {8,-127}, {9,-255},
+ {10,-511}, {11,-1023}, {12,-2047}, {13,-4095}, {14,-8191}, {15,-16383},
+ {4,0}, {5,3}, {7,5}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63}, {8,-127}, {9,-255},
+ {10,-511}, {11,-1023}, {12,-2047}, {13,-4095}, {14,-8191}, {15,-16383},
+ {3,0}, {5,3}, {7,5}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63},
+ {3,0}, {5,3}, {7,5}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63},
+ {3,0}, {5,3}, {7,5}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63},
+ {3,0}, {5,3}, {7,5}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63},
+ {3,0}, {5,3}, {7,5}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63},
+ {3,0}, {5,3}, {7,5}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63}
+};
+
+static alloc_table_t alloc_3[] = {
+ {4,0}, {5,3}, {7,5}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63}, {8,-127}, {9,-255},
+ {10,-511}, {11,-1023}, {12,-2047}, {13,-4095}, {14,-8191}, {15,-16383},
+ {4,0}, {5,3}, {7,5}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63}, {8,-127}, {9,-255},
+ {10,-511}, {11,-1023}, {12,-2047}, {13,-4095}, {14,-8191}, {15,-16383},
+ {3,0}, {5,3}, {7,5}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63},
+ {3,0}, {5,3}, {7,5}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63},
+ {3,0}, {5,3}, {7,5}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63},
+ {3,0}, {5,3}, {7,5}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63},
+ {3,0}, {5,3}, {7,5}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63},
+ {3,0}, {5,3}, {7,5}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63},
+ {3,0}, {5,3}, {7,5}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63},
+ {3,0}, {5,3}, {7,5}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63},
+ {3,0}, {5,3}, {7,5}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63},
+ {3,0}, {5,3}, {7,5}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63}
+};
+
+static alloc_table_t alloc_4[] = {
+ {4,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63}, {8,-127},
+ {9,-255}, {10,-511}, {11,-1023}, {12,-2047}, {13,-4095}, {14,-8191},
+ {4,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63}, {8,-127},
+ {9,-255}, {10,-511}, {11,-1023}, {12,-2047}, {13,-4095}, {14,-8191},
+ {4,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63}, {8,-127},
+ {9,-255}, {10,-511}, {11,-1023}, {12,-2047}, {13,-4095}, {14,-8191},
+ {4,0}, {5,3}, {7,5}, {3,-3}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63}, {8,-127},
+ {9,-255}, {10,-511}, {11,-1023}, {12,-2047}, {13,-4095}, {14,-8191},
+ {3,0}, {5,3}, {7,5}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63},
+ {3,0}, {5,3}, {7,5}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63},
+ {3,0}, {5,3}, {7,5}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63},
+ {3,0}, {5,3}, {7,5}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63},
+ {3,0}, {5,3}, {7,5}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63},
+ {3,0}, {5,3}, {7,5}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63},
+ {3,0}, {5,3}, {7,5}, {10,9}, {4,-7}, {5,-15}, {6,-31}, {7,-63},
+ {2,0}, {5,3}, {7,5}, {10,9},
+ {2,0}, {5,3}, {7,5}, {10,9},
+ {2,0}, {5,3}, {7,5}, {10,9},
+ {2,0}, {5,3}, {7,5}, {10,9},
+ {2,0}, {5,3}, {7,5}, {10,9},
+ {2,0}, {5,3}, {7,5}, {10,9},
+ {2,0}, {5,3}, {7,5}, {10,9},
+ {2,0}, {5,3}, {7,5}, {10,9},
+ {2,0}, {5,3}, {7,5}, {10,9},
+ {2,0}, {5,3}, {7,5}, {10,9},
+ {2,0}, {5,3}, {7,5}, {10,9},
+ {2,0}, {5,3}, {7,5}, {10,9},
+ {2,0}, {5,3}, {7,5}, {10,9},
+ {2,0}, {5,3}, {7,5}, {10,9},
+ {2,0}, {5,3}, {7,5}, {10,9},
+ {2,0}, {5,3}, {7,5}, {10,9},
+ {2,0}, {5,3}, {7,5}, {10,9},
+ {2,0}, {5,3}, {7,5}, {10,9},
+ {2,0}, {5,3}, {7,5}, {10,9}
+};
+
+alloc_table_t *alloc_tables[5] = { alloc_0, alloc_1, alloc_2, alloc_3, alloc_4 };
+
+static int16_t tab0[] = { 0 };
+
+static int16_t tab1[] = { -5, -3, -1, 17, 1, 16, 0 };
+
+static int16_t tab2[] = {
+ -15, -11, -9, -5, -3, -1, 34, 2, 18, -1, 33, 32, 17, -1, 1,
+ 16, 0
+};
+
+static int16_t tab3[] = {
+ -13, -11, -9, -5, -3, -1, 34, 2, 18, -1, 33, 32, 16, 17, -1,
+ 1, 0
+};
+
+static int16_t tab5[] = {
+ -29, -25, -23, -15, -7, -5, -3, -1, 51, 35, 50, 49, -3, -1, 19,
+ 3, -1, 48, 34, -3, -1, 18, 33, -1, 2, 32, 17, -1, 1, 16,
+ 0
+};
+
+static int16_t tab6[] = {
+ -25, -19, -13, -9, -5, -3, -1, 51, 3, 35, -1, 50, 48, -1, 19,
+ 49, -3, -1, 34, 2, 18, -3, -1, 33, 32, 1, -1, 17, -1, 16,
+ 0
+};
+
+static int16_t tab7[] = {
+ -69, -65, -57, -39, -29, -17, -11, -7, -3, -1, 85, 69, -1, 84, 83,
+ -1, 53, 68, -3, -1, 37, 82, 21, -5, -1, 81, -1, 5, 52, -1,
+ 80, -1, 67, 51, -5, -3, -1, 36, 66, 20, -1, 65, 64, -11, -7,
+ -3, -1, 4, 35, -1, 50, 3, -1, 19, 49, -3, -1, 48, 34, 18,
+ -5, -1, 33, -1, 2, 32, 17, -1, 1, 16, 0
+};
+
+static int16_t tab8[] = {
+ -65, -63, -59, -45, -31, -19, -13, -7, -5, -3, -1, 85, 84, 69, 83,
+ -3, -1, 53, 68, 37, -3, -1, 82, 5, 21, -5, -1, 81, -1, 52,
+ 67, -3, -1, 80, 51, 36, -5, -3, -1, 66, 20, 65, -3, -1, 4,
+ 64, -1, 35, 50, -9, -7, -3, -1, 19, 49, -1, 3, 48, 34, -1,
+ 2, 32, -1, 18, 33, 17, -3, -1, 1, 16, 0
+};
+
+static int16_t tab9[] = {
+ -63, -53, -41, -29, -19, -11, -5, -3, -1, 85, 69, 53, -1, 83, -1,
+ 84, 5, -3, -1, 68, 37, -1, 82, 21, -3, -1, 81, 52, -1, 67,
+ -1, 80, 4, -7, -3, -1, 36, 66, -1, 51, 64, -1, 20, 65, -5,
+ -3, -1, 35, 50, 19, -1, 49, -1, 3, 48, -5, -3, -1, 34, 2,
+ 18, -1, 33, 32, -3, -1, 17, 1, -1, 16, 0
+};
+
+static int16_t tab10[] = {
+ -125, -121, -111, -83, -55, -35, -21, -13, -7, -3, -1, 119, 103, -1, 118,
+ 87, -3, -1, 117, 102, 71, -3, -1, 116, 86, -1, 101, 55, -9, -3,
+ -1, 115, 70, -3, -1, 85, 84, 99, -1, 39, 114, -11, -5, -3, -1,
+ 100, 7, 112, -1, 98, -1, 69, 53, -5, -1, 6, -1, 83, 68, 23,
+ -17, -5, -1, 113, -1, 54, 38, -5, -3, -1, 37, 82, 21, -1, 81,
+ -1, 52, 67, -3, -1, 22, 97, -1, 96, -1, 5, 80, -19, -11, -7,
+ -3, -1, 36, 66, -1, 51, 4, -1, 20, 65, -3, -1, 64, 35, -1,
+ 50, 3, -3, -1, 19, 49, -1, 48, 34, -7, -3, -1, 18, 33, -1,
+ 2, 32, 17, -1, 1, 16, 0
+};
+
+static int16_t tab11[] = {
+ -121, -113, -89, -59, -43, -27, -17, -7, -3, -1, 119, 103, -1, 118, 117,
+ -3, -1, 102, 71, -1, 116, -1, 87, 85, -5, -3, -1, 86, 101, 55,
+ -1, 115, 70, -9, -7, -3, -1, 69, 84, -1, 53, 83, 39, -1, 114,
+ -1, 100, 7, -5, -1, 113, -1, 23, 112, -3, -1, 54, 99, -1, 96,
+ -1, 68, 37, -13, -7, -5, -3, -1, 82, 5, 21, 98, -3, -1, 38,
+ 6, 22, -5, -1, 97, -1, 81, 52, -5, -1, 80, -1, 67, 51, -1,
+ 36, 66, -15, -11, -7, -3, -1, 20, 65, -1, 4, 64, -1, 35, 50,
+ -1, 19, 49, -5, -3, -1, 3, 48, 34, 33, -5, -1, 18, -1, 2,
+ 32, 17, -3, -1, 1, 16, 0
+};
+
+static int16_t tab12[] = {
+ -115, -99, -73, -45, -27, -17, -9, -5, -3, -1, 119, 103, 118, -1, 87,
+ 117, -3, -1, 102, 71, -1, 116, 101, -3, -1, 86, 55, -3, -1, 115,
+ 85, 39, -7, -3, -1, 114, 70, -1, 100, 23, -5, -1, 113, -1, 7,
+ 112, -1, 54, 99, -13, -9, -3, -1, 69, 84, -1, 68, -1, 6, 5,
+ -1, 38, 98, -5, -1, 97, -1, 22, 96, -3, -1, 53, 83, -1, 37,
+ 82, -17, -7, -3, -1, 21, 81, -1, 52, 67, -5, -3, -1, 80, 4,
+ 36, -1, 66, 20, -3, -1, 51, 65, -1, 35, 50, -11, -7, -5, -3,
+ -1, 64, 3, 48, 19, -1, 49, 34, -1, 18, 33, -7, -5, -3, -1,
+ 2, 32, 0, 17, -1, 1, 16
+};
+
+static int16_t tab13[] = {
+ -509, -503, -475, -405, -333, -265, -205, -153, -115, -83, -53, -35, -21, -13, -9,
+ -7, -5, -3, -1, 254, 252, 253, 237, 255, -1, 239, 223, -3, -1, 238,
+ 207, -1, 222, 191, -9, -3, -1, 251, 206, -1, 220, -1, 175, 233, -1,
+ 236, 221, -9, -5, -3, -1, 250, 205, 190, -1, 235, 159, -3, -1, 249,
+ 234, -1, 189, 219, -17, -9, -3, -1, 143, 248, -1, 204, -1, 174, 158,
+ -5, -1, 142, -1, 127, 126, 247, -5, -1, 218, -1, 173, 188, -3, -1,
+ 203, 246, 111, -15, -7, -3, -1, 232, 95, -1, 157, 217, -3, -1, 245,
+ 231, -1, 172, 187, -9, -3, -1, 79, 244, -3, -1, 202, 230, 243, -1,
+ 63, -1, 141, 216, -21, -9, -3, -1, 47, 242, -3, -1, 110, 156, 15,
+ -5, -3, -1, 201, 94, 171, -3, -1, 125, 215, 78, -11, -5, -3, -1,
+ 200, 214, 62, -1, 185, -1, 155, 170, -1, 31, 241, -23, -13, -5, -1,
+ 240, -1, 186, 229, -3, -1, 228, 140, -1, 109, 227, -5, -1, 226, -1,
+ 46, 14, -1, 30, 225, -15, -7, -3, -1, 224, 93, -1, 213, 124, -3,
+ -1, 199, 77, -1, 139, 184, -7, -3, -1, 212, 154, -1, 169, 108, -1,
+ 198, 61, -37, -21, -9, -5, -3, -1, 211, 123, 45, -1, 210, 29, -5,
+ -1, 183, -1, 92, 197, -3, -1, 153, 122, 195, -7, -5, -3, -1, 167,
+ 151, 75, 209, -3, -1, 13, 208, -1, 138, 168, -11, -7, -3, -1, 76,
+ 196, -1, 107, 182, -1, 60, 44, -3, -1, 194, 91, -3, -1, 181, 137,
+ 28, -43, -23, -11, -5, -1, 193, -1, 152, 12, -1, 192, -1, 180, 106,
+ -5, -3, -1, 166, 121, 59, -1, 179, -1, 136, 90, -11, -5, -1, 43,
+ -1, 165, 105, -1, 164, -1, 120, 135, -5, -1, 148, -1, 119, 118, 178,
+ -11, -3, -1, 27, 177, -3, -1, 11, 176, -1, 150, 74, -7, -3, -1,
+ 58, 163, -1, 89, 149, -1, 42, 162, -47, -23, -9, -3, -1, 26, 161,
+ -3, -1, 10, 104, 160, -5, -3, -1, 134, 73, 147, -3, -1, 57, 88,
+ -1, 133, 103, -9, -3, -1, 41, 146, -3, -1, 87, 117, 56, -5, -1,
+ 131, -1, 102, 71, -3, -1, 116, 86, -1, 101, 115, -11, -3, -1, 25,
+ 145, -3, -1, 9, 144, -1, 72, 132, -7, -5, -1, 114, -1, 70, 100,
+ 40, -1, 130, 24, -41, -27, -11, -5, -3, -1, 55, 39, 23, -1, 113,
+ -1, 85, 7, -7, -3, -1, 112, 54, -1, 99, 69, -3, -1, 84, 38,
+ -1, 98, 53, -5, -1, 129, -1, 8, 128, -3, -1, 22, 97, -1, 6,
+ 96, -13, -9, -5, -3, -1, 83, 68, 37, -1, 82, 5, -1, 21, 81,
+ -7, -3, -1, 52, 67, -1, 80, 36, -3, -1, 66, 51, 20, -19, -11,
+ -5, -1, 65, -1, 4, 64, -3, -1, 35, 50, 19, -3, -1, 49, 3,
+ -1, 48, 34, -3, -1, 18, 33, -1, 2, 32, -3, -1, 17, 1, 16,
+ 0
+};
+
+static int16_t tab15[] = {
+ -495, -445, -355, -263, -183, -115, -77, -43, -27, -13, -7, -3, -1, 255, 239,
+ -1, 254, 223, -1, 238, -1, 253, 207, -7, -3, -1, 252, 222, -1, 237,
+ 191, -1, 251, -1, 206, 236, -7, -3, -1, 221, 175, -1, 250, 190, -3,
+ -1, 235, 205, -1, 220, 159, -15, -7, -3, -1, 249, 234, -1, 189, 219,
+ -3, -1, 143, 248, -1, 204, 158, -7, -3, -1, 233, 127, -1, 247, 173,
+ -3, -1, 218, 188, -1, 111, -1, 174, 15, -19, -11, -3, -1, 203, 246,
+ -3, -1, 142, 232, -1, 95, 157, -3, -1, 245, 126, -1, 231, 172, -9,
+ -3, -1, 202, 187, -3, -1, 217, 141, 79, -3, -1, 244, 63, -1, 243,
+ 216, -33, -17, -9, -3, -1, 230, 47, -1, 242, -1, 110, 240, -3, -1,
+ 31, 241, -1, 156, 201, -7, -3, -1, 94, 171, -1, 186, 229, -3, -1,
+ 125, 215, -1, 78, 228, -15, -7, -3, -1, 140, 200, -1, 62, 109, -3,
+ -1, 214, 227, -1, 155, 185, -7, -3, -1, 46, 170, -1, 226, 30, -5,
+ -1, 225, -1, 14, 224, -1, 93, 213, -45, -25, -13, -7, -3, -1, 124,
+ 199, -1, 77, 139, -1, 212, -1, 184, 154, -7, -3, -1, 169, 108, -1,
+ 198, 61, -1, 211, 210, -9, -5, -3, -1, 45, 13, 29, -1, 123, 183,
+ -5, -1, 209, -1, 92, 208, -1, 197, 138, -17, -7, -3, -1, 168, 76,
+ -1, 196, 107, -5, -1, 182, -1, 153, 12, -1, 60, 195, -9, -3, -1,
+ 122, 167, -1, 166, -1, 192, 11, -1, 194, -1, 44, 91, -55, -29, -15,
+ -7, -3, -1, 181, 28, -1, 137, 152, -3, -1, 193, 75, -1, 180, 106,
+ -5, -3, -1, 59, 121, 179, -3, -1, 151, 136, -1, 43, 90, -11, -5,
+ -1, 178, -1, 165, 27, -1, 177, -1, 176, 105, -7, -3, -1, 150, 74,
+ -1, 164, 120, -3, -1, 135, 58, 163, -17, -7, -3, -1, 89, 149, -1,
+ 42, 162, -3, -1, 26, 161, -3, -1, 10, 160, 104, -7, -3, -1, 134,
+ 73, -1, 148, 57, -5, -1, 147, -1, 119, 9, -1, 88, 133, -53, -29,
+ -13, -7, -3, -1, 41, 103, -1, 118, 146, -1, 145, -1, 25, 144, -7,
+ -3, -1, 72, 132, -1, 87, 117, -3, -1, 56, 131, -1, 102, 71, -7,
+ -3, -1, 40, 130, -1, 24, 129, -7, -3, -1, 116, 8, -1, 128, 86,
+ -3, -1, 101, 55, -1, 115, 70, -17, -7, -3, -1, 39, 114, -1, 100,
+ 23, -3, -1, 85, 113, -3, -1, 7, 112, 54, -7, -3, -1, 99, 69,
+ -1, 84, 38, -3, -1, 98, 22, -3, -1, 6, 96, 53, -33, -19, -9,
+ -5, -1, 97, -1, 83, 68, -1, 37, 82, -3, -1, 21, 81, -3, -1,
+ 5, 80, 52, -7, -3, -1, 67, 36, -1, 66, 51, -1, 65, -1, 20,
+ 4, -9, -3, -1, 35, 50, -3, -1, 64, 3, 19, -3, -1, 49, 48,
+ 34, -9, -7, -3, -1, 18, 33, -1, 2, 32, 17, -3, -1, 1, 16,
+ 0
+};
+
+static int16_t tab16[] = {
+ -509, -503, -461, -323, -103, -37, -27, -15, -7, -3, -1, 239, 254, -1, 223,
+ 253, -3, -1, 207, 252, -1, 191, 251, -5, -1, 175, -1, 250, 159, -3,
+ -1, 249, 248, 143, -7, -3, -1, 127, 247, -1, 111, 246, 255, -9, -5,
+ -3, -1, 95, 245, 79, -1, 244, 243, -53, -1, 240, -1, 63, -29, -19,
+ -13, -7, -5, -1, 206, -1, 236, 221, 222, -1, 233, -1, 234, 217, -1,
+ 238, -1, 237, 235, -3, -1, 190, 205, -3, -1, 220, 219, 174, -11, -5,
+ -1, 204, -1, 173, 218, -3, -1, 126, 172, 202, -5, -3, -1, 201, 125,
+ 94, 189, 242, -93, -5, -3, -1, 47, 15, 31, -1, 241, -49, -25, -13,
+ -5, -1, 158, -1, 188, 203, -3, -1, 142, 232, -1, 157, 231, -7, -3,
+ -1, 187, 141, -1, 216, 110, -1, 230, 156, -13, -7, -3, -1, 171, 186,
+ -1, 229, 215, -1, 78, -1, 228, 140, -3, -1, 200, 62, -1, 109, -1,
+ 214, 155, -19, -11, -5, -3, -1, 185, 170, 225, -1, 212, -1, 184, 169,
+ -5, -1, 123, -1, 183, 208, 227, -7, -3, -1, 14, 224, -1, 93, 213,
+ -3, -1, 124, 199, -1, 77, 139, -75, -45, -27, -13, -7, -3, -1, 154,
+ 108, -1, 198, 61, -3, -1, 92, 197, 13, -7, -3, -1, 138, 168, -1,
+ 153, 76, -3, -1, 182, 122, 60, -11, -5, -3, -1, 91, 137, 28, -1,
+ 192, -1, 152, 121, -1, 226, -1, 46, 30, -15, -7, -3, -1, 211, 45,
+ -1, 210, 209, -5, -1, 59, -1, 151, 136, 29, -7, -3, -1, 196, 107,
+ -1, 195, 167, -1, 44, -1, 194, 181, -23, -13, -7, -3, -1, 193, 12,
+ -1, 75, 180, -3, -1, 106, 166, 179, -5, -3, -1, 90, 165, 43, -1,
+ 178, 27, -13, -5, -1, 177, -1, 11, 176, -3, -1, 105, 150, -1, 74,
+ 164, -5, -3, -1, 120, 135, 163, -3, -1, 58, 89, 42, -97, -57, -33,
+ -19, -11, -5, -3, -1, 149, 104, 161, -3, -1, 134, 119, 148, -5, -3,
+ -1, 73, 87, 103, 162, -5, -1, 26, -1, 10, 160, -3, -1, 57, 147,
+ -1, 88, 133, -9, -3, -1, 41, 146, -3, -1, 118, 9, 25, -5, -1,
+ 145, -1, 144, 72, -3, -1, 132, 117, -1, 56, 131, -21, -11, -5, -3,
+ -1, 102, 40, 130, -3, -1, 71, 116, 24, -3, -1, 129, 128, -3, -1,
+ 8, 86, 55, -9, -5, -1, 115, -1, 101, 70, -1, 39, 114, -5, -3,
+ -1, 100, 85, 7, 23, -23, -13, -5, -1, 113, -1, 112, 54, -3, -1,
+ 99, 69, -1, 84, 38, -3, -1, 98, 22, -1, 97, -1, 6, 96, -9,
+ -5, -1, 83, -1, 53, 68, -1, 37, 82, -1, 81, -1, 21, 5, -33,
+ -23, -13, -7, -3, -1, 52, 67, -1, 80, 36, -3, -1, 66, 51, 20,
+ -5, -1, 65, -1, 4, 64, -1, 35, 50, -3, -1, 19, 49, -3, -1,
+ 3, 48, 34, -3, -1, 18, 33, -1, 2, 32, -3, -1, 17, 1, 16,
+ 0
+};
+
+static int16_t tab24[] = {
+ -451, -117, -43, -25, -15, -7, -3, -1, 239, 254, -1, 223, 253, -3, -1,
+ 207, 252, -1, 191, 251, -5, -1, 250, -1, 175, 159, -1, 249, 248, -9,
+ -5, -3, -1, 143, 127, 247, -1, 111, 246, -3, -1, 95, 245, -1, 79,
+ 244, -71, -7, -3, -1, 63, 243, -1, 47, 242, -5, -1, 241, -1, 31,
+ 240, -25, -9, -1, 15, -3, -1, 238, 222, -1, 237, 206, -7, -3, -1,
+ 236, 221, -1, 190, 235, -3, -1, 205, 220, -1, 174, 234, -15, -7, -3,
+ -1, 189, 219, -1, 204, 158, -3, -1, 233, 173, -1, 218, 188, -7, -3,
+ -1, 203, 142, -1, 232, 157, -3, -1, 217, 126, -1, 231, 172, 255, -235,
+ -143, -77, -45, -25, -15, -7, -3, -1, 202, 187, -1, 141, 216, -5, -3,
+ -1, 14, 224, 13, 230, -5, -3, -1, 110, 156, 201, -1, 94, 186, -9,
+ -5, -1, 229, -1, 171, 125, -1, 215, 228, -3, -1, 140, 200, -3, -1,
+ 78, 46, 62, -15, -7, -3, -1, 109, 214, -1, 227, 155, -3, -1, 185,
+ 170, -1, 226, 30, -7, -3, -1, 225, 93, -1, 213, 124, -3, -1, 199,
+ 77, -1, 139, 184, -31, -15, -7, -3, -1, 212, 154, -1, 169, 108, -3,
+ -1, 198, 61, -1, 211, 45, -7, -3, -1, 210, 29, -1, 123, 183, -3,
+ -1, 209, 92, -1, 197, 138, -17, -7, -3, -1, 168, 153, -1, 76, 196,
+ -3, -1, 107, 182, -3, -1, 208, 12, 60, -7, -3, -1, 195, 122, -1,
+ 167, 44, -3, -1, 194, 91, -1, 181, 28, -57, -35, -19, -7, -3, -1,
+ 137, 152, -1, 193, 75, -5, -3, -1, 192, 11, 59, -3, -1, 176, 10,
+ 26, -5, -1, 180, -1, 106, 166, -3, -1, 121, 151, -3, -1, 160, 9,
+ 144, -9, -3, -1, 179, 136, -3, -1, 43, 90, 178, -7, -3, -1, 165,
+ 27, -1, 177, 105, -1, 150, 164, -17, -9, -5, -3, -1, 74, 120, 135,
+ -1, 58, 163, -3, -1, 89, 149, -1, 42, 162, -7, -3, -1, 161, 104,
+ -1, 134, 119, -3, -1, 73, 148, -1, 57, 147, -63, -31, -15, -7, -3,
+ -1, 88, 133, -1, 41, 103, -3, -1, 118, 146, -1, 25, 145, -7, -3,
+ -1, 72, 132, -1, 87, 117, -3, -1, 56, 131, -1, 102, 40, -17, -7,
+ -3, -1, 130, 24, -1, 71, 116, -5, -1, 129, -1, 8, 128, -1, 86,
+ 101, -7, -5, -1, 23, -1, 7, 112, 115, -3, -1, 55, 39, 114, -15,
+ -7, -3, -1, 70, 100, -1, 85, 113, -3, -1, 54, 99, -1, 69, 84,
+ -7, -3, -1, 38, 98, -1, 22, 97, -5, -3, -1, 6, 96, 53, -1,
+ 83, 68, -51, -37, -23, -15, -9, -3, -1, 37, 82, -1, 21, -1, 5,
+ 80, -1, 81, -1, 52, 67, -3, -1, 36, 66, -1, 51, 20, -9, -5,
+ -1, 65, -1, 4, 64, -1, 35, 50, -1, 19, 49, -7, -5, -3, -1,
+ 3, 48, 34, 18, -1, 33, -1, 2, 32, -3, -1, 17, 1, -1, 16,
+ 0
+};
+
+static int16_t tab_c0[] = {
+ -29, -21, -13, -7, -3, -1, 11, 15, -1, 13, 14, -3, -1, 7, 5,
+ 9, -3, -1, 6, 3, -1, 10, 12, -3, -1, 2, 1, -1, 4, 8,
+ 0
+};
+
+static int16_t tab_c1[] = {
+ -15, -7, -3, -1, 15, 14, -1, 13, 12, -3, -1, 11, 10, -1, 9,
+ 8, -7, -3, -1, 7, 6, -1, 5, 4, -3, -1, 3, 2, -1, 1,
+ 0
+};
+
+newhuff_t hufft[] = {
+ { 0, tab0 }, { 0, tab1 }, { 0, tab2 }, { 0, tab3 },
+ { 0, tab0 }, { 0, tab5 }, { 0, tab6 }, { 0, tab7 },
+ { 0, tab8 }, { 0, tab9 }, { 0, tab10 }, { 0, tab11 },
+ { 0, tab12 }, { 0, tab13 }, { 0, tab0 }, { 0, tab15 },
+ { 1, tab16 }, { 2, tab16 }, { 3, tab16 }, { 4, tab16 },
+ { 6, tab16 }, { 8, tab16 }, { 10, tab16 }, { 13, tab16 },
+ { 4, tab24 }, { 5, tab24 }, { 6, tab24 }, { 7, tab24 },
+ { 8, tab24 }, { 9, tab24 }, { 11, tab24 }, { 13, tab24 }
+};
+
+newhuff_t hufftc[] = { { 0, tab_c0 }, { 0, tab_c1 } };
+
+static int32_t intwinbase[] = {
+ 0, -1, -1, -1, -1, -1, -1, -2, -2, -2,
+ -2, -3, -3, -4, -4, -5, -5, -6, -7, -7,
+ -8, -9, -10, -11, -13, -14, -16, -17, -19, -21,
+ -24, -26, -29, -31, -35, -38, -41, -45, -49, -53,
+ -58, -63, -68, -73, -79, -85, -91, -97, -104, -111,
+ -117, -125, -132, -139, -147, -154, -161, -169, -176, -183,
+ -190, -196, -202, -208, -213, -218, -222, -225, -227, -228,
+ -228, -227, -224, -221, -215, -208, -200, -189, -177, -163,
+ -146, -127, -106, -83, -57, -29, 2, 36, 72, 111,
+ 153, 197, 244, 294, 347, 401, 459, 519, 581, 645,
+ 711, 779, 848, 919, 991, 1064, 1137, 1210, 1283, 1356,
+ 1428, 1498, 1567, 1634, 1698, 1759, 1817, 1870, 1919, 1962,
+ 2001, 2032, 2057, 2075, 2085, 2087, 2080, 2063, 2037, 2000,
+ 1952, 1893, 1822, 1739, 1644, 1535, 1414, 1280, 1131, 970,
+ 794, 605, 402, 185, -45, -288, -545, -814, -1095, -1388,
+ -1692, -2006, -2330, -2663, -3004, -3351, -3705, -4063, -4425, -4788,
+ -5153, -5517, -5879, -6237, -6589, -6935, -7271, -7597, -7910, -8209,
+ -8491, -8755, -8998, -9219, -9416, -9585, -9727, -9838, -9916, -9959,
+ -9966, -9935, -9863, -9750, -9592, -9389, -9139, -8840, -8492, -8092,
+ -7640, -7134, -6574, -5959, -5288, -4561, -3776, -2935, -2037, -1082,
+ -70, 998, 2122, 3300, 4533, 5818, 7154, 8540, 9975, 11455,
+ 12980, 14548, 16155, 17799, 19478, 21189, 22929, 24694, 26482, 28289,
+ 30112, 31947, 33791, 35640, 37489, 39336, 41176, 43006, 44821, 46617,
+ 48390, 50137, 51853, 53534, 55178, 56778, 58333, 59838, 61289, 62684,
+ 64019, 65290, 66494, 67629, 68692, 69679, 70590, 71420, 72169, 72835,
+ 73415, 73908, 74313, 74630, 74856, 74992, 75038
+};
+
+static void make_synth_window(mpadec_t mpadec, MYFLT scale)
+{
+ register struct mpadec_t *mpa = (struct mpadec_t *)mpadec;
+ register int i, j, k;
+
+ scale = -scale;
+ for (i = 0, j = 0, k = 0; i < 256; i++, j++, k += 32) {
+ if (k < (512 + 16)) mpa->tables.decwin[k] = mpa->tables.decwin[k + 16] = ((MYFLT)intwinbase[j]/65536.0)*scale;
+ if ((i & 31) == 31) k -= 1023;
+ if ((i & 63) == 63) scale = -scale;
+ }
+ for (; i < 512; i++, j--, k += 32) {
+ if (k < (512 + 16)) mpa->tables.decwin[k] = mpa->tables.decwin[k + 16] = ((MYFLT)intwinbase[j]/65536.0)*scale;
+ if ((i & 31) == 31) k -= 1023;
+ if ((i & 63) == 63) scale = -scale;
+ }
+}
+
+static void init_limits(mpadec_t mpadec, int32_t sblimit)
+{
+ register struct mpadec_t *mpa = (struct mpadec_t *)mpadec;
+ register int i, j;
+
+ for (i = 0; i < 9; i++) {
+ for (j = 0; j < 23; j++) {
+ mpa->tables.long_limit[i][j] = (band_info[i].long_idx[j] + 7)/SSLIMIT + 1;
+ if (mpa->tables.long_limit[i][j] > sblimit) mpa->tables.long_limit[i][j] = sblimit;
+ }
+ for (j = 0; j < 14; j++) {
+ mpa->tables.short_limit[i][j] = (band_info[i].short_idx[j] - 1)/SSLIMIT + 1;
+ if (mpa->tables.short_limit[i][j] > sblimit) mpa->tables.short_limit[i][j] = sblimit;
+ }
+ }
+}
+
+static void init_layer2(mpadec_t mpadec)
+{
+ register struct mpadec_t *mpa = (struct mpadec_t *)mpadec;
+ int i, j, k; uint8_t *tab;
+ static MYFLT mulmul[27] = { 0.0, -2.0/3.0, 2.0/3.0, 2.0/7.0, 2.0/15.0, 2.0/31.0, 2.0/63.0,
+ 2.0/127.0, 2.0/255.0, 2.0/511.0, 2.0/1023.0, 2.0/2047.0,
+ 2.0/4095.0, 2.0/8191.0, 2.0/16383.0, 2.0/32767.0, 2.0/65535.0,
+ -4.0/5.0, -2.0/5.0, 2.0/5.0, 4.0/5.0, -8.0/9.0,
+ -4.0/9.0, -2.0/9.0, 2.0/9.0, 4.0/9.0, 8.0/9.0 };
+ static uint8_t base[3][9] = { { 1, 0, 2, }, { 17, 18, 0, 19, 20, },
+ { 21, 1, 22, 23, 0, 24, 25, 2, 26 } };
+
+ tab = mpa->tables.grp3tab;
+ for (i = 0; i < 3; i++)
+ for (j = 0; j < 3; j++)
+ for (k = 0; k < 3; k++, tab += 3) {
+ tab[0] = base[0][k];
+ tab[1] = base[0][j];
+ tab[2] = base[0][i];
+ }
+ tab = mpa->tables.grp5tab;
+ for (i = 0; i < 5; i++)
+ for (j = 0; j < 5; j++)
+ for (k = 0; k < 5; k++, tab += 3) {
+ tab[0] = base[1][k];
+ tab[1] = base[1][j];
+ tab[2] = base[1][i];
+ }
+ tab = mpa->tables.grp9tab;
+ for (i = 0; i < 9; i++)
+ for (j = 0; j < 9; j++)
+ for (k = 0; k < 9; k++, tab += 3) {
+ tab[0] = base[2][k];
+ tab[1] = base[2][j];
+ tab[2] = base[2][i];
+ }
+ mpa->tables.mp2tables[0] = mpa->tables.mp2tables[1] = mpa->tables.mp2tables[2] = NULL;
+ mpa->tables.mp2tables[3] = mpa->tables.grp3tab;
+ mpa->tables.mp2tables[4] = NULL;
+ mpa->tables.mp2tables[5] = mpa->tables.grp5tab;
+ mpa->tables.mp2tables[6] = mpa->tables.mp2tables[7] = mpa->tables.mp2tables[8] = NULL;
+ mpa->tables.mp2tables[9] = mpa->tables.grp9tab;
+ for (i = 0; i < 27; i++) {
+ for (j = 0, k = 3; j < 63; j++, k--) mpa->tables.muls[i][j] = mulmul[i]*pow(2.0, (MYFLT)k/3.0);
+ mpa->tables.muls[i][63] = 0.0;
+ }
+}
+
+static void init_layer3(mpadec_t mpadec)
+{
+ register struct mpadec_t *mpa = (struct mpadec_t *)mpadec;
+ int i, j, k, l;
+
+ for (i = -256; i < 122; i++) mpa->tables.gainpow2[i + 256] = pow(2.0, -0.25*(i + 210));
+ for (i = 0; i < 8207; i++) mpa->tables.ispow[i] = pow(i, 4.0/3.0);
+ for (i = 0; i < 18; i++) {
+ mpa->tables.win[0][0][i] = mpa->tables.win[0][1][i] = 0.5*sin((2*i + 1)*M_PI/72.0)/cos((2*i + 19)*M_PI/72.0);
+ mpa->tables.win[0][0][i + 18] = mpa->tables.win[0][3][i + 18] = 0.5*sin((2*(i + 18) + 1)*M_PI/72.0)/cos((2*(i + 18) + 19)*M_PI/72.0);
+ }
+ for (i = 0; i < 6; i++) {
+ mpa->tables.win[0][1][i + 18] = 0.5/cos((2*(i + 18) + 19)*M_PI/72.0);
+ mpa->tables.win[0][3][i + 12] = 0.5/cos((2*(i + 12) + 19)*M_PI/72.0);
+ mpa->tables.win[0][1][i + 24] = 0.5*sin((2*i + 13)*M_PI/24.0)/cos((2*(i + 24) + 19)*M_PI/72.0);
+ mpa->tables.win[0][1][i + 30] = mpa->tables.win[0][3][i] = 0.0;
+ mpa->tables.win[0][3][i + 6] = 0.5*sin((2*i + 1)*M_PI/24.0)/cos((2*(i + 6) + 19)*M_PI/72.0);
+ }
+ for (i = 0; i < 12; i++) {
+ mpa->tables.win[0][2][i] = 0.5*sin((2*i + 1)*M_PI/24.0)/cos((2*i + 7)*M_PI/24.0);
+ }
+ for (i = 0; i < 4; i++) {
+ int len = (i == 2) ? 12 : 36;
+ for (j = 0; j < len; j += 2) {
+ mpa->tables.win[1][i][j] = mpa->tables.win[0][i][j];
+ mpa->tables.win[1][i][j + 1] = -mpa->tables.win[0][i][j + 1];
+ }
+ }
+ for (i = 0; i < 16; i++) {
+ MYFLT tmp = tan(i*M_PI/12.0);
+ mpa->tables.tan1_1[i] = tmp/(1.0 + tmp);
+ mpa->tables.tan2_1[i] = 1.0/(1.0 + tmp);
+ mpa->tables.tan1_2[i] = M_SQRT2*tmp/(1.0 + tmp);
+ mpa->tables.tan2_2[i] = M_SQRT2/(1.0 + tmp);
+ for (j = 0; j < 2; j++) {
+ MYFLT base = pow(2.0, -0.25*(j + 1));
+ MYFLT p1 = 1.0, p2 = 1.0;
+ if (i > 0) {
+ if (i & 1) p1 = pow(base, 0.5*(i + 1));
+ else p2 = pow(base, 0.5*i);
+ }
+ mpa->tables.pow1_1[j][i] = p1;
+ mpa->tables.pow2_1[j][i] = p2;
+ mpa->tables.pow1_2[j][i] = M_SQRT2*p1;
+ mpa->tables.pow2_2[j][i] = M_SQRT2*p2;
+ }
+ }
+ mpa->tables.istabs[0][0][0] = mpa->tables.tan1_1;
+ mpa->tables.istabs[0][0][1] = mpa->tables.tan2_1;
+ mpa->tables.istabs[0][1][0] = mpa->tables.tan1_2;
+ mpa->tables.istabs[0][1][1] = mpa->tables.tan2_2;
+ mpa->tables.istabs[1][0][0] = mpa->tables.pow1_1[0];
+ mpa->tables.istabs[1][0][1] = mpa->tables.pow2_1[0];
+ mpa->tables.istabs[1][1][0] = mpa->tables.pow1_2[0];
+ mpa->tables.istabs[1][1][1] = mpa->tables.pow2_2[0];
+ mpa->tables.istabs[2][0][0] = mpa->tables.pow1_1[1];
+ mpa->tables.istabs[2][0][1] = mpa->tables.pow2_1[1];
+ mpa->tables.istabs[2][1][0] = mpa->tables.pow1_2[1];
+ mpa->tables.istabs[2][1][1] = mpa->tables.pow2_2[1];
+ for (i = 0; i < 9; i++) {
+ bandinfo_t *bi = &band_info[i];
+ int32_t *mp, cb, lwin; int16_t *bdf;
+ mp = mpa->tables.map[i][0] = mpa->tables.mapbuf0[i];
+ bdf = bi->long_diff;
+ for (cb = 0, j = 0; cb < 8; cb++, j += *bdf++, mp += 4) {
+ mp[0] = (*bdf) >> 1;
+ mp[1] = j;
+ mp[2] = 3;
+ mp[3] = cb;
+ }
+ bdf = bi->short_diff + 3;
+ for (cb = 3; cb < 13; cb++) {
+ int l = (*bdf++) >> 1;
+ for (lwin = 0; lwin < 3; lwin++, mp += 4) {
+ mp[0] = l;
+ mp[1] = j + lwin;
+ mp[2] = lwin;
+ mp[3] = cb;
+ }
+ j += 6*l;
+ }
+ mpa->tables.mapend[i][0] = mp;
+ mp = mpa->tables.map[i][1] = mpa->tables.mapbuf1[i];
+ bdf = bi->short_diff;
+ for (cb = 0, j = 0; cb < 13; cb++) {
+ int l = (*bdf++) >> 1;
+ for (lwin = 0; lwin < 3; lwin++, mp += 4) {
+ mp[0] = l;
+ mp[1] = j + lwin;
+ mp[2] = lwin;
+ mp[3] = cb;
+ }
+ j += 6*l;
+ }
+ mpa->tables.mapend[i][1] = mp;
+ mp = mpa->tables.map[i][2] = mpa->tables.mapbuf2[i];
+ bdf = bi->long_diff;
+ for (cb = 0; cb < 22; cb++, mp += 2) {
+ mp[0] = (*bdf++) >> 1;
+ mp[1] = cb;
+ }
+ mpa->tables.mapend[i][2] = mp;
+ }
+ for (i = 0; i < 5; i++) {
+ for (j = 0; j < 6; j++) {
+ for (k = 0; k < 6; k++) {
+ register int n = k + 6*j + 36*i;
+ mpa->tables.i_slen2[n] = i | (j << 3) | (k << 6) | (3 << 12);
+ }
+ }
+ }
+ for (i = 0; i < 4; i++) {
+ for (j = 0; j < 4; j++) {
+ for (k = 0; k < 4; k++) {
+ register int n = k + 4*j + 16*i;
+ mpa->tables.i_slen2[n + 180] = i | (j << 3) | (k << 6) | (4 << 12);
+ }
+ }
+ }
+ for (i = 0; i < 4; i++) {
+ for (j = 0; j < 3; j++) {
+ register int n = j + 3*i;
+ mpa->tables.i_slen2[n + 244] = i | (j << 3) | (5 << 12);
+ mpa->tables.n_slen2[n + 500] = i | (j << 3) | (2 << 12) | (1 << 15);
+ }
+ }
+ for (i = 0; i < 5; i++) {
+ for (j = 0; j < 5; j++) {
+ for (k = 0; k < 4; k++) {
+ for (l = 0; l < 4; l++) {
+ register int n = l + 4*k + 16*j + 80*i;
+ mpa->tables.n_slen2[n] = i | (j << 3) | (k << 6) | (l << 9);
+ }
+ }
+ }
+ }
+ for (i = 0; i < 5; i++) {
+ for (j = 0; j < 5; j++) {
+ for (k = 0; k < 4; k++) {
+ register int n = k + 4*j + 20*i;
+ mpa->tables.n_slen2[n + 400] = i | (j << 3) | (k << 6) | (1 << 12);
+ }
+ }
+ }
+}
+
+void init_tables(mpadec_t mpadec, MYFLT scale, int32_t sblimit)
+{
+ register struct mpadec_t *mpa = (struct mpadec_t *)mpadec;
+
+ if (mpa->state < MPADEC_STATE_START) {
+ init_layer2(mpa);
+ init_layer3(mpa);
+ }
+ init_limits(mpa, sblimit);
+ make_synth_window(mpa, scale);
+}
+
diff --git a/InOut/libsnd.c b/InOut/libsnd.c
index e6f8237..4477421 100644
--- a/InOut/libsnd.c
+++ b/InOut/libsnd.c
@@ -569,10 +569,16 @@ void sfopenin(CSOUND *csound) /* init for continuous soundin */
/* calc inbufsize reqd */
ST(inbufsiz) = (unsigned) (O->inbufsamps * sizeof(MYFLT));
ST(inbuf) = (MYFLT*) mcalloc(csound, ST(inbufsiz)); /* alloc inbuf space */
+ if (ST(pipdevout) == 2)
+ csound->Message(csound,
+ Str("reading %d sample blks of %d-bit floats from %s \n"),
+ O->inbufsamps * O->sfsampsize, sizeof(MYFLT)*8, sfname);
+ else {
csound->Message(csound,
Str("reading %d-byte blks of %s from %s (%s)\n"),
O->inbufsamps * (int) sfsampsize(FORMAT2SF(O->informat)),
getstrformat(O->informat), sfname, type2string(fileType));
+ }
ST(isfopen) = 1;
}
@@ -730,16 +736,20 @@ void sfopenout(CSOUND *csound) /* init for sound out */
/* calc outbuf size & alloc bufspace */
ST(outbufsiz) = O->outbufsamps * sizeof(MYFLT);
ST(outbufp) = ST(outbuf) = mmalloc(csound, ST(outbufsiz));
- csound->Message(csound, Str("writing %d-byte blks of %s to %s"),
+ if (ST(pipdevout) == 2)
+ csound->Message(csound,
+ Str("writing %d sample blks of %d-bit floats to %s \n"),
+ O->outbufsamps, sizeof(MYFLT)*8, ST(sfoutname));
+ else {
+ csound->Message(csound, Str("writing %d-byte blks of %s to %s"),
O->outbufsamps * O->sfsampsize,
getstrformat(O->outformat), ST(sfoutname));
- if (ST(pipdevout) == 2)
- /* realtime output has no header */
- csound->Message(csound, "\n");
- else if (O->sfheader == 0)
+
+ if (O->sfheader == 0)
csound->Message(csound, Str(" (raw)\n"));
else
csound->Message(csound, " (%s)\n", type2string(O->filetyp));
+ }
ST(osfopen) = 1;
ST(outbufrem) = O->outbufsamps;
}
@@ -800,16 +810,21 @@ void sfcloseout(CSOUND *csound)
#endif
report:
- csound->Message(csound, Str("%ld %d-byte soundblks of %s written to %s"),
- csound->nrecs, O->outbufsamps * O->sfsampsize,
- getstrformat(O->outformat), ST(sfoutname));
- if (ST(pipdevout) == 2)
- /* realtime output has no header */
- csound->Message(csound, "\n");
- else if (O->sfheader == 0)
- csound->Message(csound, Str(" (raw)\n"));
- else
- csound->Message(csound, " (%s)\n", type2string(O->filetyp));
+ if (ST(pipdevout) == 2) {
+ csound->Message(csound,
+ Str("%ld %d sample blks of %d-bit floats written to %s\n"),
+ csound->nrecs, O->outbufsamps,
+ sizeof(MYFLT)*8, ST(sfoutname));
+ }
+ else {
+ csound->Message(csound, Str("%ld %d sample blks of %s written to %s"),
+ O->outbufsamps, O->outbufsamps * O->sfsampsize,
+ getstrformat(O->outformat), ST(sfoutname));
+ if (O->sfheader == 0)
+ csound->Message(csound, Str(" (raw)\n"));
+ else
+ csound->Message(csound, " (%s)\n", type2string(O->filetyp));
+ }
ST(osfopen) = 0;
}
@@ -927,4 +942,3 @@ PUBLIC MYFLT *csoundGetOutputBuffer(CSOUND *csound)
return NULL;
return ST(outbuf);
}
-
diff --git a/InOut/midisend.c b/InOut/midisend.c
index 084561c..665ef97 100644
--- a/InOut/midisend.c
+++ b/InOut/midisend.c
@@ -28,7 +28,7 @@
typedef struct midiOutFile_s {
FILE *f;
void *fd;
- unsigned long prv_tick;
+ unsigned int prv_tick;
size_t nBytes;
unsigned char prv_status;
} midiOutFile_t;
@@ -39,13 +39,12 @@ static const unsigned char midiMsgBytes[32] = {
};
/* header for type 0 (1 track) MIDI file with 1/3 ms time resolution */
-
static const unsigned char midiOutFile_header[25] = {
0x4D, 0x54, 0x68, 0x64, /* "MThd" */
0x00, 0x00, 0x00, 0x06, /* header length */
0x00, 0x00, /* file type */
0x00, 0x01, /* number of tracks */
- 0xE7, 0x78, /* tick time (1/25 sec / 120) */
+ 0x19, 0x78, /* tick time (1/25 sec / 120), VL this was 0xE7, which was wrong, changed to 0x19 0x78*/
0x4D, 0x54, 0x72, 0x6B, /* "MTrk" */
0x00, 0x00, 0x00, 0x00, /* track length (updated later) */
/* -------------------------------------------------------- */
@@ -60,7 +59,7 @@ static CS_NOINLINE void
unsigned char buf[8];
double s;
midiOutFile_t *p = (midiOutFile_t *) csound->midiGlobals->midiOutFileData;
- unsigned long t, prv;
+ unsigned int t, prv;
int ndx = 0;
if (nbytes < 2)
@@ -68,13 +67,13 @@ static CS_NOINLINE void
s = csound->icurTime/csound->esr;
if (csound->ids == NULL && csound->pds != NULL)
s -= csound->ksmps/csound->esr;
- s *= 3000.0;
+ s *= 13040.; /* VL NOV 11: this was 3000.0, which was wrong; 13040.0 was arrived at by experimentation */
#ifdef HAVE_C99
- t = (unsigned long) lrint(s);
+ t = (unsigned int) lrint(s);
#else
- t = (unsigned long) ((long) (s + 0.5));
+ t = (unsigned int) ((int) (s + 0.5));
#endif
- t = ((long) t >= 0L ? t : 0UL);
+ t = ((int) t >= 0L ? t : 0UL);
prv = p->prv_tick;
p->prv_tick = t;
t -= prv;
diff --git a/InOut/pmidi.c b/InOut/pmidi.c
index da36328..c344276 100644
--- a/InOut/pmidi.c
+++ b/InOut/pmidi.c
@@ -195,7 +195,7 @@ static int OpenMidiInDevice_(CSOUND *csound, void **userData, const char *dev)
PmDeviceInfo *info;
// PortMidiStream *midistream;
pmall_data *data = NULL;
- pmall_data *next;
+ pmall_data *next = NULL;
if (start_portmidi(csound) != 0)
@@ -207,7 +207,7 @@ static int OpenMidiInDevice_(CSOUND *csound, void **userData, const char *dev)
if (dev == NULL || dev[0] == '\0')
devnum =
portMidi_getPackedDeviceID((int)Pm_GetDefaultInputDeviceID(), 0);
- else if (UNLIKELY(dev[0] < '0' || dev[0] > '9' && dev[0] != 'a')) {
+ else if (UNLIKELY((dev[0] < '0' || dev[0] > '9') && dev[0] != 'a')) {
portMidiErrMsg(csound,
Str("error: must specify a device number (>=0) or"
" 'a' for all, not a name"));
diff --git a/InOut/rtalsa.c b/InOut/rtalsa.c
index a468b36..36ae308 100644
--- a/InOut/rtalsa.c
+++ b/InOut/rtalsa.c
@@ -702,9 +702,9 @@ static alsaMidiInputDevice* open_midi_device(CSOUND *csound, const char *s)
// This is the function which contains code from amidi
static int midi_in_open(CSOUND *csound, void **userData, const char *devName)
{
- alsaMidiInputDevice *dev, *newdev, *olddev;
- const char *s = "hw:0,0";
- int card, err;
+ alsaMidiInputDevice *dev = NULL, *newdev, *olddev;
+ //const char *s = "hw:0,0";
+ int card;
int device;
snd_ctl_t *ctl;
char* name;
@@ -836,7 +836,7 @@ static int midi_in_read(CSOUND *csound,
static int midi_in_close(CSOUND *csound, void *userData)
{
- int ret, retval = 0;
+ int ret = 0, retval = 0;
alsaMidiInputDevice *olddev, *dev = NULL;
(void) csound;
dev = (alsaMidiInputDevice*) userData;
diff --git a/InOut/rtauhal.c b/InOut/rtauhal.c
new file mode 100644
index 0000000..a011627
--- /dev/null
+++ b/InOut/rtauhal.c
@@ -0,0 +1,554 @@
+/*
+ rtauhal.c:
+
+ Copyright (C) 2011 Victor Lazzarini
+
+ This file is part of Csound.
+
+ The Csound Library is free software; you can redistribute it
+ and/or modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ Csound is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with Csound; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA
+*/
+
+#include <CoreMidi/CoreMidi.h>
+#include <AudioUnit/AudioUnit.h>
+#include <CoreAudio/AudioHardware.h>
+#include <CoreFoundation/CoreFoundation.h>
+#include <unistd.h>
+#include <stdint.h>
+#include "csdl.h"
+#include "soundio.h"
+
+#if !defined(MAC_OS_X_VERSION_10_6)
+/* the API was changed for 10.6, these make it backwards compatible */
+typedef ComponentInstance AudioComponentInstance;
+typedef Component AudioComponent;
+typedef ComponentDescription AudioComponentDescription;
+#define AudioComponentFindNext FindNextComponent
+#define AudioComponentInstanceNew OpenAComponent
+#define AudioComponentInstanceDispose CloseComponent
+typedef float AudioUnitSampleType;
+#endif
+
+
+typedef struct csdata_ {
+ AudioDeviceID dev;
+ AudioStreamBasicDescription format;
+ int inBufSamples;
+ int outBufSamples;
+ int currentInputIndex;
+ int currentOutputIndex;
+ MYFLT *inputBuffer;
+ MYFLT *outputBuffer;
+ void *auLock_in; /* thread lock for au callback */
+ void *clientLock_in; /* thread lock for rtrecord */
+ void *auLock_out; /* thread lock for au callback */
+ void *clientLock_out; /* thread lock for rtplay */
+ csRtAudioParams *inParm;
+ csRtAudioParams *outParm;
+ int onchnls, inchnls;
+ AudioComponentInstance outunit;
+ AudioComponentInstance inunit;
+ CSOUND *csound;
+ AudioBufferList *inputdata;
+ int disp;
+ int isInputRunning;
+ int isOutputRunning;
+ AudioDeviceID defdevin;
+ AudioDeviceID defdevout;
+} csdata;
+
+OSStatus Csound_Input(void *inRefCon,
+ AudioUnitRenderActionFlags *ioActionFlags,
+ const AudioTimeStamp *inTimeStamp,
+ UInt32 inBusNumber,
+ UInt32 inNumberFrames,
+ AudioBufferList *ioData);
+
+OSStatus Csound_Render(void *inRefCon,
+ AudioUnitRenderActionFlags *ioActionFlags,
+ const AudioTimeStamp *inTimeStamp,
+ UInt32 dump,
+ UInt32 inNumberFrames,
+ AudioBufferList *ioData);
+
+int AuHAL_open(CSOUND *csound, const csRtAudioParams * parm,
+ csdata *cdata, int isInput)
+{
+ UInt32 psize, devnum, devnos;
+ AudioDeviceID *sysdevs;
+ AudioDeviceID dev;
+ AudioStreamBasicDescription format;
+ int i;
+ UInt32 bufframes, nchnls;
+ double srate;
+ UInt32 enableIO, maxFPS;
+ AudioComponent HALOutput;
+ AudioComponentInstance *aunit;
+ AudioComponentDescription cd = {kAudioUnitType_Output,
+ kAudioUnitSubType_HALOutput,
+ kAudioUnitManufacturer_Apple, 0, 0};
+ AudioObjectPropertyAddress prop = {
+ kAudioObjectPropertyName,
+ kAudioObjectPropertyScopeGlobal,
+ kAudioObjectPropertyElementMaster
+ };
+ CFStringRef devName;
+ CFStringEncoding defaultEncoding = CFStringGetSystemEncoding();
+
+ prop.mSelector = (isInput ?
+ kAudioHardwarePropertyDefaultInputDevice :
+ kAudioHardwarePropertyDefaultOutputDevice );
+
+ psize = sizeof(AudioDeviceID);
+ AudioObjectGetPropertyData(kAudioObjectSystemObject,
+ &prop, 0, NULL, &psize, &dev);
+
+ if(isInput) cdata->defdevin = dev;
+ else cdata->defdevout = dev;
+
+ prop.mSelector = kAudioHardwarePropertyDevices;
+
+ AudioObjectGetPropertyDataSize(kAudioObjectSystemObject,
+ &prop, 0, NULL, &psize);
+ devnos = psize / sizeof(AudioDeviceID);
+ sysdevs = (AudioDeviceID *) malloc(psize);
+
+ AudioObjectGetPropertyData(kAudioObjectSystemObject,
+ &prop, 0, NULL, &psize, sysdevs);
+ if(cdata->disp){
+ csound->Message(csound,
+ "==========================================================\n"
+ "AuHAL Module: found %d device(s):\n", (int) devnos);
+ for (i = 0; i < devnos; i++) {
+ psize = sizeof(CFStringRef);
+ prop.mSelector = kAudioObjectPropertyName;
+ AudioObjectGetPropertyData(sysdevs[i],
+ &prop, 0, NULL, &psize, &devName);
+ csound->Message(csound, "=> AuHAL device %d: %s \n", i,
+ CFStringGetCStringPtr(devName, defaultEncoding));
+ CFRelease(devName);
+
+ }
+ cdata->disp = 0;
+ }
+ if (parm->devName != NULL) {
+ devnum = atoi(parm->devName);
+ if (devnum >= 0 && devnum < devnos)
+ dev = sysdevs[devnum];
+ prop.mSelector = (isInput ?
+ kAudioHardwarePropertyDefaultInputDevice :
+ kAudioHardwarePropertyDefaultOutputDevice );
+ AudioObjectSetPropertyData(kAudioObjectSystemObject, &prop,
+ 0, NULL, sizeof(AudioDeviceID), &dev);
+
+ free(sysdevs);
+ }
+ psize = sizeof(CFStringRef);
+ prop.mSelector = kAudioObjectPropertyName;
+ AudioObjectGetPropertyData(dev,
+ &prop, 0, NULL, &psize, &devName);
+ if(isInput)
+ csound->Message(csound, Str("selected input device: %s \n"),
+ CFStringGetCStringPtr(devName, defaultEncoding));
+ else
+ csound->Message(csound, Str("selected output device: %s \n"),
+ CFStringGetCStringPtr(devName, defaultEncoding));
+
+ CFRelease(devName);
+
+ srate = csound->GetSr(csound);
+ if(!isInput){
+ nchnls =cdata->onchnls = parm->nChannels;
+ bufframes = csound->GetOutputBufferSize(csound)/nchnls;
+ }
+ else {
+ nchnls = cdata->inchnls = parm->nChannels;
+ bufframes = csound->GetInputBufferSize(csound)/nchnls;
+ }
+
+ /* although the SR is set in the stream properties,
+ we also need to set the device to match */
+ prop.mSelector = kAudioDevicePropertyNominalSampleRate;
+ psize = sizeof(double);
+ AudioObjectSetPropertyData(dev, &prop, 0, NULL, psize, &srate);
+
+ double sr;
+ AudioObjectGetPropertyData(dev, &prop, 0, NULL, &psize, &sr);
+ if(sr != srate) {
+ csound->Die(csound,
+ "could not set SR, tried %.1f, got %.1f \n", srate, sr);
+ }
+
+ HALOutput = AudioComponentFindNext(NULL, &cd);
+ if(isInput){
+ AudioComponentInstanceNew(HALOutput, &(cdata->inunit));
+ enableIO = 1;
+ AudioUnitSetProperty(cdata->inunit, kAudioOutputUnitProperty_EnableIO,
+ kAudioUnitScope_Input, 1, &enableIO, sizeof(enableIO));
+ enableIO = 0;
+ AudioUnitSetProperty(cdata->inunit, kAudioOutputUnitProperty_EnableIO,
+ kAudioUnitScope_Output, 0, &enableIO, sizeof(enableIO));
+ psize = sizeof(AudioDeviceID);
+ /* for input, select device AFTER enabling IO */
+ AudioUnitSetProperty(cdata->inunit,kAudioOutputUnitProperty_CurrentDevice,
+ kAudioUnitScope_Global, isInput, &dev, psize);
+ aunit = &(cdata->inunit);
+ } else {
+ AudioComponentInstanceNew(HALOutput, &(cdata->outunit));
+ psize = sizeof(AudioDeviceID);
+ /* for output, select device BEFORE enabling IO */
+ AudioUnitSetProperty(cdata->outunit, kAudioOutputUnitProperty_CurrentDevice,
+ kAudioUnitScope_Global, isInput, &dev, psize);
+ enableIO = 1;
+ AudioUnitSetProperty(cdata->outunit, kAudioOutputUnitProperty_EnableIO,
+ kAudioUnitScope_Output, 0, &enableIO, sizeof(enableIO));
+ enableIO = 0;
+ AudioUnitSetProperty(cdata->outunit, kAudioOutputUnitProperty_EnableIO,
+ kAudioUnitScope_Input, 1, &enableIO, sizeof(enableIO));
+ aunit = &(cdata->outunit);
+ }
+ /* now set the buffer size */
+ psize = sizeof(AudioDeviceID);
+ AudioUnitGetProperty(*aunit, kAudioOutputUnitProperty_CurrentDevice,
+ kAudioUnitScope_Global, isInput, &dev, &psize);
+ prop.mSelector = kAudioDevicePropertyBufferFrameSize;
+ psize = 4;
+ AudioObjectSetPropertyData(dev, &prop, 0, NULL, psize, &bufframes);
+ psize = sizeof(maxFPS);
+ AudioUnitGetProperty(*aunit, kAudioUnitProperty_MaximumFramesPerSlice,
+ kAudioUnitScope_Global, isInput, &maxFPS, &psize);
+ AudioUnitSetProperty(*aunit, kAudioUnitProperty_MaximumFramesPerSlice,
+ kAudioUnitScope_Global, isInput, &bufframes,
+ sizeof(UInt32));
+ /* set the stream properties */
+ psize = sizeof(AudioStreamBasicDescription);
+ AudioUnitGetProperty(*aunit, kAudioUnitProperty_StreamFormat,
+ (isInput ? kAudioUnitScope_Output : kAudioUnitScope_Input),
+ isInput, &format, &psize);
+ format.mSampleRate = srate;
+ format.mFormatID = kAudioFormatLinearPCM;
+ format.mFormatFlags = kAudioFormatFlagsCanonical |
+ kLinearPCMFormatFlagIsNonInterleaved;
+ format.mBytesPerPacket = sizeof(AudioUnitSampleType);
+ format.mFramesPerPacket = 1;
+ format.mBytesPerFrame = sizeof(AudioUnitSampleType);
+ format.mChannelsPerFrame = nchnls;
+ format.mBitsPerChannel = sizeof(AudioUnitSampleType)*8;
+ AudioUnitSetProperty(*aunit, kAudioUnitProperty_StreamFormat,
+ (isInput ? kAudioUnitScope_Output : kAudioUnitScope_Input),
+ isInput, &format,
+ sizeof(AudioStreamBasicDescription));
+ /* set the callbacks and open the device */
+ if(!isInput) {
+ AURenderCallbackStruct output;
+ output.inputProc = Csound_Render;
+ output.inputProcRefCon = cdata;
+ AudioUnitSetProperty(*aunit, kAudioUnitProperty_SetRenderCallback,
+ kAudioUnitScope_Input, isInput, &output, sizeof(output));
+ AudioUnitInitialize(*aunit);
+ AudioOutputUnitStart(*aunit);
+
+ csound->Message(csound,
+ "AuHAL module: output device open with %d buffer frames\n"
+ "======================================================\n",
+ bufframes);
+ }
+ else {
+ AURenderCallbackStruct input;
+ AudioBufferList *CAInputData =
+ (AudioBufferList*)malloc(sizeof(UInt32)
+ + cdata->inchnls * sizeof(AudioBuffer));
+ CAInputData->mNumberBuffers = cdata->inchnls;
+ for (i = 0; i < cdata->inchnls; i++) {
+ CAInputData->mBuffers[i].mNumberChannels = 1;
+ CAInputData->mBuffers[i].mDataByteSize =
+ bufframes * sizeof(AudioUnitSampleType);
+ CAInputData->mBuffers[i].mData =
+ calloc(bufframes, sizeof(AudioUnitSampleType));
+ }
+ cdata->inputdata = CAInputData;
+
+ input.inputProc = Csound_Input;
+ input.inputProcRefCon = cdata;
+ AudioUnitSetProperty(*aunit, kAudioOutputUnitProperty_SetInputCallback,
+ kAudioUnitScope_Input, isInput, &input, sizeof(input));
+ AudioUnitInitialize(*aunit);
+ AudioOutputUnitStart(*aunit);
+ csound->Message(csound,
+ "AuHAL module: input device open with %d buffer frames\n"
+ "==============================================\n",
+ bufframes);
+
+ }
+
+ return 0;
+
+}
+
+/* open for audio input */
+static int recopen_(CSOUND *csound, const csRtAudioParams * parm)
+{
+ csdata *cdata;
+
+ if (csound->rtRecord_userdata != NULL)
+ return 0;
+
+ /* allocate structure */
+
+ if(csound->rtPlay_userdata != NULL)
+ cdata = (csdata *) csound->rtPlay_userdata;
+ else {
+ cdata = (csdata *) calloc(1, sizeof(csdata));
+ cdata->disp = 1;
+ }
+
+ cdata->inunit = NULL;
+ cdata->auLock_in = csound->CreateThreadLock();
+ cdata->clientLock_in = csound->CreateThreadLock();
+ csound->WaitThreadLock(cdata->auLock_in, (size_t) 500);
+ csound->WaitThreadLock(cdata->clientLock_in, (size_t) 500);
+ csound->rtRecord_userdata = (void *) cdata;
+ cdata->inParm = (csRtAudioParams *) parm;
+ cdata->csound = cdata->csound;
+ cdata->inputBuffer =
+ (MYFLT *) calloc (csound->GetInputBufferSize(csound), sizeof(MYFLT));
+ cdata->isInputRunning = 1;
+ return AuHAL_open(csound, parm, cdata, 1);
+}
+
+/* open for audio output */
+static int playopen_(CSOUND *csound, const csRtAudioParams * parm)
+{
+ csdata *cdata;
+ if(csound->rtRecord_userdata != NULL)
+ cdata = (csdata *) csound->rtRecord_userdata;
+ else {
+ cdata = (csdata *) calloc(1, sizeof(csdata));
+ cdata->disp = 1;
+ }
+ cdata->outunit = NULL;
+ cdata->auLock_out = csound->CreateThreadLock();
+ cdata->clientLock_out = csound->CreateThreadLock();
+ csound->WaitThreadLock(cdata->auLock_out, (size_t) 500);
+ csound->WaitThreadLock(cdata->clientLock_out, (size_t) 500);
+
+ csound->rtPlay_userdata = (void *) cdata;
+ cdata->outParm = (csRtAudioParams *) parm;
+ cdata->csound = csound;
+ cdata->outputBuffer =
+ (MYFLT *) calloc (csound->GetOutputBufferSize(csound), sizeof(MYFLT));
+ cdata->isOutputRunning = 1;
+ return AuHAL_open(csound, parm, cdata, 0);
+}
+
+OSStatus Csound_Input(void *inRefCon,
+ AudioUnitRenderActionFlags *ioActionFlags,
+ const AudioTimeStamp *inTimeStamp,
+ UInt32 inBusNumber,
+ UInt32 inNumberFrames,
+ AudioBufferList *ioData)
+{
+ csdata *cdata = (csdata *) inRefCon;
+ CSOUND *csound = cdata->csound;
+ int inchnls = cdata->inchnls;
+ MYFLT *inputBuffer = cdata->inputBuffer;
+ int j,k;
+ AudioUnitSampleType *buffer;
+ if(!cdata->isInputRunning) return 0;
+ csound->WaitThreadLock(cdata->auLock_in,10);
+ AudioUnitRender(cdata->inunit, ioActionFlags, inTimeStamp, inBusNumber,
+ inNumberFrames, cdata->inputdata);
+ for (k = 0; k < inchnls; k++){
+ buffer = (AudioUnitSampleType *) cdata->inputdata->mBuffers[k].mData;
+ for(j=0; j < inNumberFrames; j++){
+ inputBuffer[j*inchnls+k] = buffer[j];
+ }
+ }
+ csound->NotifyThreadLock(cdata->clientLock_in);
+
+ return 0;
+}
+
+static int rtrecord_(CSOUND *csound, MYFLT *inbuff_, int nbytes)
+{
+ csdata *cdata;
+ cdata = (csdata *) *(csound->GetRtRecordUserData(csound));
+ csound->WaitThreadLock(cdata->clientLock_in, (size_t) 500);
+ memcpy(inbuff_,cdata->inputBuffer,nbytes);
+ csound->NotifyThreadLock(cdata->auLock_in);
+ return nbytes;
+}
+
+OSStatus Csound_Render(void *inRefCon,
+ AudioUnitRenderActionFlags *ioActionFlags,
+ const AudioTimeStamp *inTimeStamp,
+ UInt32 inBusNumber,
+ UInt32 inNumberFrames,
+ AudioBufferList *ioData)
+{
+
+ csdata *cdata = (csdata *) inRefCon;
+ CSOUND *csound = cdata->csound;
+ int onchnls = cdata->onchnls;;
+ MYFLT *outputBuffer = cdata->outputBuffer;
+ int j,k;
+ AudioUnitSampleType *buffer;
+
+ if(!cdata->isOutputRunning) return 0;
+ csound->WaitThreadLock(cdata->auLock_out, 10);
+ for (k = 0; k < onchnls; k++) {
+ buffer = (AudioUnitSampleType *) ioData->mBuffers[k].mData;
+ for(j=0; j < inNumberFrames; j++){
+ buffer[j] = (AudioUnitSampleType) outputBuffer[j*onchnls+k] ;
+ }
+ }
+ csound->NotifyThreadLock(cdata->clientLock_out);
+
+ return 0;
+}
+
+static void rtplay_(CSOUND *csound, const MYFLT *outbuff_, int nbytes)
+{
+
+ csdata *cdata;
+ cdata = (csdata *) *(csound->GetRtPlayUserData(csound));
+ csound->WaitThreadLock(cdata->clientLock_out, (size_t) 500);
+ memcpy(cdata->outputBuffer,outbuff_,nbytes);
+ csound->NotifyThreadLock(cdata->auLock_out);
+
+}
+
+/* close the I/O device entirely */
+/* called only when both complete */
+
+static void rtclose_(CSOUND *csound)
+{
+ csdata *cdata;
+ cdata = (csdata *) *(csound->GetRtRecordUserData(csound));
+ if(cdata == NULL)
+ cdata = (csdata *) *(csound->GetRtPlayUserData(csound));
+
+ if (cdata != NULL) {
+ usleep(1000*csound->GetOutputBufferSize(csound)/
+ (csound->GetSr(csound)*csound->GetNchnls(csound)));
+
+ if(cdata->inunit != NULL){
+ AudioOutputUnitStop(cdata->inunit);
+ AudioUnitUninitialize(cdata->inunit);
+ AudioComponentInstanceDispose(cdata->inunit);
+ }
+ cdata->isInputRunning = 0;
+
+ if(cdata->outunit != NULL){
+ AudioOutputUnitStop(cdata->outunit);
+ AudioUnitUninitialize(cdata->outunit);
+ AudioComponentInstanceDispose(cdata->outunit);
+ }
+ cdata->isOutputRunning = 0;
+
+ if (cdata->clientLock_in != NULL) {
+ csound->NotifyThreadLock(cdata->clientLock_in);
+ csound->DestroyThreadLock(cdata->clientLock_in);
+ cdata->clientLock_in = NULL;
+ }
+ if (cdata->auLock_in != NULL) {
+ csound->NotifyThreadLock(cdata->auLock_in);
+ csound->DestroyThreadLock(cdata->auLock_in);
+ cdata->auLock_in = NULL;
+ }
+
+ if (cdata->clientLock_out != NULL) {
+ csound->NotifyThreadLock(cdata->clientLock_out);
+ csound->DestroyThreadLock(cdata->clientLock_out);
+ cdata->clientLock_in = NULL;
+ }
+
+ if (cdata->auLock_out != NULL) {
+ csound->NotifyThreadLock(cdata->auLock_out);
+ csound->DestroyThreadLock(cdata->auLock_out);
+ cdata->auLock_out = NULL;
+ }
+
+
+ if (cdata->outputBuffer != NULL) {
+ free(cdata->outputBuffer);
+ cdata->outputBuffer = NULL;
+ }
+ if (cdata->inputBuffer != NULL) {
+ free(cdata->inputBuffer);
+ cdata->inputBuffer = NULL;
+ }
+ csound->rtRecord_userdata = NULL;
+ csound->rtPlay_userdata = NULL;
+
+ if(cdata->inputdata) {
+ int i;
+ for (i = 0; i < cdata->inchnls; i++)
+ free(cdata->inputdata->mBuffers[i].mData);
+ free(cdata->inputdata);
+ }
+
+ if(cdata->defdevin) {
+ AudioObjectPropertyAddress prop = {
+ kAudioHardwarePropertyDefaultInputDevice,
+ kAudioObjectPropertyScopeGlobal,
+ kAudioObjectPropertyElementMaster
+ };
+ UInt32 psize = sizeof(AudioDeviceID);
+ AudioObjectSetPropertyData(kAudioObjectSystemObject,
+ &prop, 0, NULL, psize, &cdata->defdevin);
+ }
+ if(cdata->defdevout) {
+ AudioObjectPropertyAddress prop = {
+ kAudioHardwarePropertyDefaultOutputDevice,
+ kAudioObjectPropertyScopeGlobal,
+ kAudioObjectPropertyElementMaster
+ };
+ UInt32 psize = sizeof(AudioDeviceID);
+ AudioObjectSetPropertyData(kAudioObjectSystemObject,
+ &prop, 0, NULL, psize, &cdata->defdevout);
+ }
+ free(cdata);
+ csound->Message(csound, Str("AuHAL module: device closed\n"));
+
+ }
+}
+
+int csoundModuleInit(CSOUND *csound)
+{
+ char *drv;
+ drv = (char *) csound->QueryGlobalVariable(csound, "_RTAUDIO");
+ if (drv == NULL)
+ return 0;
+ if (!(strcmp(drv, "auhal") == 0 || strcmp(drv, "AuHal") == 0 ||
+ strcmp(drv, "AUHAL") == 0 ||
+ strcmp(drv, "coreaudio") == 0 || strcmp(drv, "CoreAudio") == 0 ||
+ strcmp(drv, "COREAUDIO") == 0))
+ return 0;
+ if (csound->oparms->msglevel & 0x400)
+ csound->Message(csound, Str("rtaudio: coreaaudio-AuHAL module enabled\n"));
+ csound->SetPlayopenCallback(csound, playopen_);
+ csound->SetRecopenCallback(csound, recopen_);
+ csound->SetRtplayCallback(csound, rtplay_);
+ csound->SetRtrecordCallback(csound, rtrecord_);
+ csound->SetRtcloseCallback(csound, rtclose_);
+ return 0;
+}
+
+int csoundModuleCreate(CSOUND *csound)
+{
+ CSOUND *p = csound;
+ return 0;
+}
diff --git a/InOut/rtcoreaudio.c b/InOut/rtcoreaudio.c
index b63807d..cda1a95 100644
--- a/InOut/rtcoreaudio.c
+++ b/InOut/rtcoreaudio.c
@@ -21,6 +21,9 @@
02111-1307 USA
*/
+/* this code is deprecated, has been substituted by the rtauhal.c module */
+
+
#include <CoreAudio.h>
#include <unistd.h>
#include <stdint.h>
@@ -45,7 +48,11 @@ typedef struct devparams_ {
float srate;
int nchns;
int isNInterleaved;
+#if defined(MAC_OS_X_VERSION_10_5) && (MAC_OS_X_VERSION_MIN_REQUIRED>=MAC_OS_X_VERSION_10_5)
AudioDeviceIOProcID procID;
+#else
+ int procID;
+#endif
} DEVPARAMS;
/* module interface functions */
diff --git a/InOut/rtjack.c b/InOut/rtjack.c
index 84f703a..faa6cda 100644
--- a/InOut/rtjack.c
+++ b/InOut/rtjack.c
@@ -531,7 +531,7 @@ static void rtJack_CopyDevParams(RtJackGlobals *p, char **devName,
/* connection yet; this is a somewhat hackish solution... */
if (p->client == (jack_client_t*) NULL) {
useTmpClient = 1;
- client_ = jack_client_new(&(p->clientName[0]));
+ client_ = jack_client_open(&(p->clientName[0]), JackNullOption, NULL);
}
else
client_ = p->client;
diff --git a/InOut/virtual_keyboard/FLTKKeyboard.cpp b/InOut/virtual_keyboard/FLTKKeyboard.cpp
index ccb5e23..c02a34c 100644
--- a/InOut/virtual_keyboard/FLTKKeyboard.cpp
+++ b/InOut/virtual_keyboard/FLTKKeyboard.cpp
@@ -27,10 +27,11 @@
#include <FL/fl_draw.H>
#include "FLTKKeyboard.hpp"
-FLTKKeyboard::FLTKKeyboard(CSOUND *csound, int X, int Y, int W, int H, const char *L)
+FLTKKeyboard::FLTKKeyboard(CSOUND *csound, SliderBank *sliderBank, int X, int Y, int W, int H, const char *L)
: Fl_Widget(X, Y, W, H, L) {
this->csound = csound;
+ this->sliderBank = sliderBank;
this->mutex = csound->Create_Mutex(0);
FLTKKeyboard *o = this;
@@ -202,6 +203,51 @@ int FLTKKeyboard::getMIDIKey(int xVal, int yVal) {
}
+void FLTKKeyboard::handleControl(int key) {
+ int index;
+
+ switch(key) {
+ case '1':
+ index = 0;
+ break;
+ case '2':
+ index = 1;
+ break;
+ case '3':
+ index = 2;
+ break;
+ case '4':
+ index = 3;
+ break;
+ case '5':
+ index = 4;
+ break;
+ case '6':
+ index = 5;
+ break;
+ case '7':
+ index = 6;
+ break;
+ case '8':
+ index = 7;
+ break;
+ case '9':
+ index = 8;
+ break;
+ case '0':
+ index = 9;
+ break;
+ default:
+ return;
+ }
+ if(Fl::event_shift()) {
+ sliderBank->incrementSlider(index, -1);
+ } else {
+ sliderBank->incrementSlider(index, 1);
+ }
+ return;
+}
+
void FLTKKeyboard::handleKey(int key, int value) {
int index = -1;
@@ -297,6 +343,10 @@ void FLTKKeyboard::handleKey(int key, int value) {
return;
}
+ if(Fl::event_shift()) {
+ index += 29;
+ }
+
if(index < 0) {
return;
}
@@ -394,7 +444,11 @@ int FLTKKeyboard::handle(int event) {
return 1;
case FL_KEYDOWN:
//csound->Message(csound, "Key Down: Code: %d\n", Fl::event_key());
- handleKey(Fl::event_key(), 1);
+ if(Fl::event_ctrl() && sliderBank != NULL) {
+ handleControl(Fl::event_key());
+ } else {
+ handleKey(Fl::event_key(), 1);
+ }
Fl::focus(this);
this->redraw();
return 1;
diff --git a/InOut/virtual_keyboard/FLTKKeyboard.hpp b/InOut/virtual_keyboard/FLTKKeyboard.hpp
index b5bd309..35d4b98 100644
--- a/InOut/virtual_keyboard/FLTKKeyboard.hpp
+++ b/InOut/virtual_keyboard/FLTKKeyboard.hpp
@@ -27,10 +27,11 @@
#include <FL/Fl.H>
#include <FL/Fl_Widget.H>
#include "csdl.h"
+#include "SliderBank.hpp"
class FLTKKeyboard : public Fl_Widget {
public:
- FLTKKeyboard(CSOUND *csound, int X, int Y, int W, int H, const char *L);
+ FLTKKeyboard(CSOUND *csound, SliderBank *sliderBank, int X, int Y, int W, int H, const char *L);
~FLTKKeyboard();
int handle(int event);
void draw();
@@ -41,16 +42,18 @@ public:
void unlock();
void allNotesOff();
int aNotesOff;
-private:
int octave;
+private:
int getMIDIKey(int x, int y);
int lastMidiKey;
int isWhiteKey(int key);
int getMidiValForWhiteKey(int whiteKeyNum);
void handleKey(int key, int value);
+ void handleControl(int key);
CSOUND *csound;
void * mutex;
+ SliderBank *sliderBank;
};
#endif /*FLTKKEYBOARD_HPP_*/
diff --git a/InOut/virtual_keyboard/FLTKKeyboardWidget.cpp b/InOut/virtual_keyboard/FLTKKeyboardWidget.cpp
index 0915e15..08149de 100644
--- a/InOut/virtual_keyboard/FLTKKeyboardWidget.cpp
+++ b/InOut/virtual_keyboard/FLTKKeyboardWidget.cpp
@@ -69,11 +69,24 @@ static void programChange(Fl_Widget *widget, void * v) {
win->unlock();
}
+static void octaveChange(Fl_Widget *widget, void * v) {
+ Fl_Choice *choice = (Fl_Choice *)widget;
+ FLTKKeyboardWidget *win = (FLTKKeyboardWidget *)v;
+
+ win->lock();
+
+ win->keyboard->octave = (int)choice->value() + 1;
+
+ win->unlock();
+}
+
FLTKKeyboardWidget::FLTKKeyboardWidget(CSOUND *csound,
const char *deviceMap,
int X, int Y, int w, int h)
: Fl_Group(X, Y, w, h)
{
+ char octave[2];
+ octave[1] = 0;
this->csound = csound;
this->mutex = csound->Create_Mutex(0);
@@ -89,13 +102,15 @@ FLTKKeyboardWidget::FLTKKeyboardWidget(CSOUND *csound,
int row2 = row1 + 20;
int row3 = row2 + 20;
- int x1 = (int)(baseX + ((60 / 624.0) * w));
- int x2 = (int)(baseX + ((180 / 624.0) * w));
- int x3 = (int)(baseX + ((420 / 624.0) * w));
+ int x1 = (int)(baseX + ((60 / 754.0) * w));
+ int x2 = (int)(baseX + ((180 / 754.0) * w));
+ int x3 = (int)(baseX + ((420 / 754.0) * w));
+ int x4 = (int)(baseX + ((670 / 754.0) * w));
- int w1 = (int)((80 / 624.0) * w);
- int w2 = (int)((180 / 624.0) * w);
- int w3 = (int)((200 / 624.0) * w);
+ int w1 = (int)((80 / 754.0) * w);
+ int w2 = (int)((180 / 754.0) * w);
+ int w3 = (int)((200 / 754.0) * w);
+ int w4 = (int)((80 / 754.0) * w);
//624, 120
@@ -107,6 +122,7 @@ FLTKKeyboardWidget::FLTKKeyboardWidget(CSOUND *csound,
this->bankChoice = new Fl_Choice(x2, row1, w2, 20, "Bank");
this->programChoice = new Fl_Choice(x3, row1, w3, 20, "Program");
+ this->octaveChoice = new Fl_Choice(x4, row1, w4, 20, "Octave");
bankChoice->clear();
@@ -118,14 +134,23 @@ FLTKKeyboardWidget::FLTKKeyboardWidget(CSOUND *csound,
setProgramNames();
+ octaveChoice->clear();
+
+ for(unsigned int i = 1; i < 8; i++) {
+ octave[0] = i + 48;
+ octaveChoice->add(octave);
+ }
+
+ octaveChoice->value(4);
+
this->bankChoice->callback((Fl_Callback*)bankChange, this);
this->programChoice->callback((Fl_Callback*)programChange, this);
-
+ this->octaveChoice->callback((Fl_Callback*)octaveChange, this);
this->allNotesOffButton = new Fl_Button(baseX, row2, w, 20, "All Notes Off");
this->allNotesOffButton->callback((Fl_Callback*) allNotesOff, this);
- this->keyboard = new FLTKKeyboard(csound, baseX, row3, w, h - 40, "Keyboard");
+ this->keyboard = new FLTKKeyboard(csound, NULL, baseX, row3, w, h - 40, "Keyboard");
this->end();
diff --git a/InOut/virtual_keyboard/FLTKKeyboardWidget.hpp b/InOut/virtual_keyboard/FLTKKeyboardWidget.hpp
index e7bebc0..0d2f2c3 100644
--- a/InOut/virtual_keyboard/FLTKKeyboardWidget.hpp
+++ b/InOut/virtual_keyboard/FLTKKeyboardWidget.hpp
@@ -44,6 +44,7 @@ public:
Fl_Spinner *channelSpinner;
Fl_Choice *bankChoice;
Fl_Choice *programChoice;
+ Fl_Choice *octaveChoice;
KeyboardMapping *keyboardMapping;
diff --git a/InOut/virtual_keyboard/FLTKKeyboardWindow.cpp b/InOut/virtual_keyboard/FLTKKeyboardWindow.cpp
index c4829e4..277b036 100644
--- a/InOut/virtual_keyboard/FLTKKeyboardWindow.cpp
+++ b/InOut/virtual_keyboard/FLTKKeyboardWindow.cpp
@@ -71,11 +71,24 @@ static void programChange(Fl_Widget *widget, void * v) {
win->unlock();
}
+static void octaveChange(Fl_Widget *widget, void * v) {
+ Fl_Choice *choice = (Fl_Choice *)widget;
+ FLTKKeyboardWindow *win = (FLTKKeyboardWindow *)v;
+
+ win->lock();
+
+ win->keyboard->octave = (int)choice->value() + 1;
+
+ win->unlock();
+}
+
FLTKKeyboardWindow::FLTKKeyboardWindow(CSOUND *csound,
const char *deviceMap,
int W, int H, const char *L = 0)
: Fl_Double_Window(W, H, L)
{
+ char octave[2];
+ octave[1] = 0;
this->csound = csound;
this->mutex = csound->Create_Mutex(0);
@@ -98,6 +111,7 @@ FLTKKeyboardWindow::FLTKKeyboardWindow(CSOUND *csound,
this->bankChoice = new Fl_Choice(180, row2, 180, 20, "Bank");
this->programChoice = new Fl_Choice(420, row2, 200, 20, "Program");
+ this->octaveChoice = new Fl_Choice(670, row2, 80, 20, "Octave");
bankChoice->clear();
@@ -109,14 +123,23 @@ FLTKKeyboardWindow::FLTKKeyboardWindow(CSOUND *csound,
setProgramNames();
+ octaveChoice->clear();
+
+ for(unsigned int i = 1; i < 8; i++) {
+ octave[0] = i + 48;
+ octaveChoice->add(octave);
+ }
+
+ octaveChoice->value(4);
+
this->bankChoice->callback((Fl_Callback*)bankChange, this);
this->programChoice->callback((Fl_Callback*)programChange, this);
-
+ this->octaveChoice->callback((Fl_Callback*)octaveChange, this);
this->allNotesOffButton = new Fl_Button(0, row3, W, 20, "All Notes Off");
this->allNotesOffButton->callback((Fl_Callback*) allNotesOff, this);
- this->keyboard = new FLTKKeyboard(csound, 0, row4, W, 80, "Keyboard");
+ this->keyboard = new FLTKKeyboard(csound, this->sliderBank, 0, row4, W, 80, "Keyboard");
this->end();
diff --git a/InOut/virtual_keyboard/FLTKKeyboardWindow.hpp b/InOut/virtual_keyboard/FLTKKeyboardWindow.hpp
index 2dd8499..f97ff16 100644
--- a/InOut/virtual_keyboard/FLTKKeyboardWindow.hpp
+++ b/InOut/virtual_keyboard/FLTKKeyboardWindow.hpp
@@ -45,6 +45,7 @@ public:
Fl_Spinner *channelSpinner;
Fl_Choice *bankChoice;
Fl_Choice *programChoice;
+ Fl_Choice *octaveChoice;
KeyboardMapping *keyboardMapping;
SliderBank *sliderBank;
diff --git a/InOut/virtual_keyboard/SliderBank.cpp b/InOut/virtual_keyboard/SliderBank.cpp
index ae9a5e5..bcdf2dd 100644
--- a/InOut/virtual_keyboard/SliderBank.cpp
+++ b/InOut/virtual_keyboard/SliderBank.cpp
@@ -23,6 +23,19 @@
#include "SliderBank.hpp"
+#include <FL/Fl.H>
+#include <FL/Fl_Double_Window.H>
+
+int WheelSlider::handle(int event) {
+ int res = Fl_Value_Slider::handle(event);
+ if (event == FL_MOUSEWHEEL) {
+ int dy = Fl::event_dy();
+ value(clamp(round(increment(value(), -dy))));
+ return 1;
+ }
+ return res;
+}
+
static void spinnerCallback(Fl_Widget *widget, void *v) {
Fl_Spinner *spinner = (Fl_Spinner *)widget;
SliderBank *sliderBank = (SliderBank *)v;
@@ -70,7 +83,7 @@ SliderBank::SliderBank(CSOUND *csound,
x = 10;
y = 10 + (i * 25);
} else {
- x = 317;
+ x = 382;
y = 10 + ((i - 5) * 25);
}
@@ -83,7 +96,7 @@ SliderBank::SliderBank(CSOUND *csound,
spinner->callback((Fl_Callback*)spinnerCallback, this);
- Fl_Value_Slider *slider = new Fl_Value_Slider(x + 70, y, 227, 20);
+ WheelSlider *slider = new WheelSlider(x + 70, y, 292, 20);
sliders[i] = slider;
slider->type(FL_HOR_SLIDER);
slider->maximum(127);
@@ -123,6 +136,11 @@ SliderData * SliderBank::getSliderData() {
return &sliderData[channel];
}
+void SliderBank::incrementSlider(int index, int n) {
+ Fl_Slider* slider = sliders[index];
+ slider->value(slider->clamp(slider->round(slider->increment(slider->value(), n))));
+}
+
void SliderBank::lock() {
if(mutex) {
csound->LockMutex(mutex);
diff --git a/InOut/virtual_keyboard/SliderBank.hpp b/InOut/virtual_keyboard/SliderBank.hpp
index 16bf117..cde4f6f 100644
--- a/InOut/virtual_keyboard/SliderBank.hpp
+++ b/InOut/virtual_keyboard/SliderBank.hpp
@@ -31,6 +31,14 @@
#include "csdl.h"
#include "SliderData.hpp"
+class WheelSlider: public Fl_Value_Slider
+{
+ int handle(int);
+public:
+ WheelSlider(int x, int y, int w, int h, const char *l=0) :
+ Fl_Value_Slider (x,y,w,h,l) {}
+};
+
class SliderBank : public Fl_Group
{
public:
@@ -43,15 +51,16 @@ public:
void setChannel(int channel);
SliderData *getSliderData();
+ void incrementSlider(int index, int n);
+
void lock();
void unlock();
- Fl_Value_Slider* sliders[10];
+ WheelSlider* sliders[10];
Fl_Spinner* spinners[10];
private:
int channel;
SliderData sliderData[16];
};
-
#endif /*SLIDERBANK_HPP_*/
diff --git a/InOut/virtual_keyboard/virtual_keyboard.cpp b/InOut/virtual_keyboard/virtual_keyboard.cpp
index 4218ac2..801ff7b 100644
--- a/InOut/virtual_keyboard/virtual_keyboard.cpp
+++ b/InOut/virtual_keyboard/virtual_keyboard.cpp
@@ -36,7 +36,7 @@ static std::map<CSOUND *, FLTKKeyboardWidget *> keyboardWidgets;
static FLTKKeyboardWindow *createWindow(CSOUND *csound, const char *dev) {
return new FLTKKeyboardWindow(csound, dev,
- 624, 270, "Csound Virtual Keyboard");
+ 754, 270, "Csound Virtual Keyboard");
}
static FLTKKeyboardWidget *createWidget(CSOUND *csound, const char *dev,
@@ -431,7 +431,7 @@ PUBLIC int csoundModuleInit(CSOUND *csound)
"FLTK_Flags") == (void*) 0) {
if (csound->CreateGlobalVariable(csound,
"FLTK_Flags", sizeof(int)) != 0)
- csound->Die(csound,
+ csound->Die(csound, "%s",
Str("virtual_keyboard.cpp: error allocating FLTK flags"));
}
diff --git a/InOut/widgets.cpp b/InOut/widgets.cpp
index f15da1f..d269db0 100644
--- a/InOut/widgets.cpp
+++ b/InOut/widgets.cpp
@@ -884,13 +884,14 @@ void Fl_Value_Slider_Input::input_cb(Fl_Widget*, void* v) {
void Fl_Value_Slider_Input::draw(void)
{
int sxx = x(), syy = y(), sww = w(), shh = h();
- int bww = w();
+ //int bww = w();
int X = x(), Y = y(), W = w(), H = h();
int border_size=Fl::box_dx(box());
if (horizontal()) {
- bww = textboxsize(); sxx += textboxsize(); sww -= textboxsize();
+ //bww = textboxsize();
+ sxx += textboxsize(); sww -= textboxsize();
input.resize(X,Y,W-sww,shh);
}
else {
@@ -1078,7 +1079,8 @@ SNAPSHOT::SNAPSHOT (vector<ADDR_SET_VALUE>& valuators, int snapGroup)
opcode_name = fld->opcode_name = ((OPDS *) (v.opcode))->optext->t.opcod;
if (UNLIKELY(opcode_name.c_str() == NULL))
{
- csound->InitError(csound,Str("Invalid snapshot. Perhaps you modified "
+ csound->InitError(csound, "%s",
+ Str("Invalid snapshot. Perhaps you modified "
"orchestra widget code after you saved "
"the snapshot bank."));
goto err;
@@ -1463,7 +1465,8 @@ extern "C" {
table[index*numfields+j] = snap.fields[j].value;
}
}
- else return csound->InitError(csound, Str("FLsetsnap: invalid table"));
+ else return csound->InitError(csound, "%s",
+ Str("FLsetsnap: invalid table"));
}
else { // else store it into snapshot bank
if ((int) ST(snapshots)[group].size() < index+1)
@@ -1513,8 +1516,8 @@ extern "C" {
{
int n;
Fl_lock(csound);
- n = fl_choice(Str("Saving could overwrite the old file.\n"
- "Are you sure you want to save ?"),
+ n = fl_choice("%s", Str("Saving could overwrite the old file.\n"
+ "Are you sure you want to save ?"),
Str("No"), Str("Yes"), NULL);
Fl_unlock(csound);
if (!n)
@@ -1524,7 +1527,8 @@ extern "C" {
csound->strarg2name(csound, s, p->filename, "snap.", p->XSTRCODE);
s2 = csound->FindOutputFile(csound, s, "SNAPDIR");
if (UNLIKELY(s2 == NULL))
- return csound->InitError(csound, Str("FLsavesnap: cannot open file"));
+ return csound->InitError(csound, "%s",
+ Str("FLsavesnap: cannot open file"));
strcpy(s, s2);
csound->Free(csound, s2);
filename = s;
@@ -1577,7 +1581,8 @@ extern "C" {
csound->strarg2name(csound, s, p->filename, "snap.", p->XSTRCODE);
s2 = csound->FindInputFile(csound, s, "SNAPDIR");
if (UNLIKELY(s2 == NULL))
- return csound->InitError(csound, Str("FLloadsnap: cannot open file"));
+ return csound->InitError(csound, "%s",
+ Str("FLloadsnap: cannot open file"));
strcpy(s, s2);
csound->Free(csound, s2);
filename = s;
@@ -1622,6 +1627,7 @@ extern "C" {
if (UNLIKELY(!(opc_orig == opc))) {
//return csound->InitError(csound,
csound->Message(csound,
+ "%s",
Str("unmatched widget, probably due to a "
"modified orchestra. Modifying an "
"orchestra makes it incompatible with "
@@ -2122,7 +2128,8 @@ static void fl_callbackExecButton(Fl_Button* w, void *a)
_exit(0);
} else if (UNLIKELY(pId < 0)) {
- p->csound->Message(p->csound, Str("Error: Unable to fork process\n"));
+ p->csound->Message(p->csound, "%s",
+ Str("Error: Unable to fork process\n"));
}
csound->Free(csound, command);
@@ -2542,12 +2549,14 @@ extern "C" {
ST(stack_count)--;
ADDR_STACK adrstk = ST(AddrStack).back();
if (UNLIKELY(strcmp( adrstk.h->optext->t.opcod, "FLpanel")))
- return csound->InitError(csound, Str("FLpanel_end: invalid stack pointer: "
- "verify its placement"));
+ return csound->InitError(csound, "%s",
+ Str("FLpanel_end: invalid stack pointer: "
+ "verify its placement"));
if (UNLIKELY(adrstk.count != ST(stack_count)))
- return csound->InitError(csound, Str("FLpanel_end: invalid stack count: "
- "verify FLpanel/FLpanel_end count and"
- " placement"));
+ return csound->InitError(csound, "%s",
+ Str("FLpanel_end: invalid stack count: "
+ "verify FLpanel/FLpanel_end count and"
+ " placement"));
((Fl_Window*) adrstk.WidgAddress)->end();
ST(AddrStack).pop_back();
return OK;
@@ -2570,12 +2579,14 @@ extern "C" {
ADDR_STACK adrstk = ST(AddrStack).back();
if (UNLIKELY(strcmp( adrstk.h->optext->t.opcod, "FLscroll")))
return
- csound->InitError(csound, Str("FLscroll_end: invalid stack pointer: "
- "verify its placement"));
+ csound->InitError(csound, "%s",
+ Str("FLscroll_end: invalid stack pointer: "
+ "verify its placement"));
if (UNLIKELY(adrstk.count != ST(stack_count)))
- return csound->InitError(csound, Str("FLscroll_end: invalid stack count: "
- "verify FLscroll/FLscroll_end count "
- "and placement"));
+ return csound->InitError(csound, "%s",
+ Str("FLscroll_end: invalid stack count: "
+ "verify FLscroll/FLscroll_end count "
+ "and placement"));
((Fl_Scroll*) adrstk.WidgAddress)->end();
ST(AddrStack).pop_back();
@@ -2601,10 +2612,12 @@ extern "C" {
ADDR_STACK adrstk = ST(AddrStack).back();
if (UNLIKELY(strcmp( adrstk.h->optext->t.opcod, "FLtabs")))
return
- csound->InitError(csound, Str("FLscroll_end: invalid stack pointer: "
+ csound->InitError(csound, "%s",
+ Str("FLscroll_end: invalid stack pointer: "
"verify its placement"));
if (UNLIKELY(adrstk.count != ST(stack_count)))
- return csound->InitError(csound, Str("FLtabs_end: invalid stack count: "
+ return csound->InitError(csound, "%s",
+ Str("FLtabs_end: invalid stack count: "
"verify FLtabs/FLtabs_end count and "
"placement"));
((Fl_Scroll*) adrstk.WidgAddress)->end();
@@ -2648,12 +2661,14 @@ extern "C" {
ST(stack_count)--;
ADDR_STACK adrstk = ST(AddrStack).back();
if (UNLIKELY(strcmp( adrstk.h->optext->t.opcod, "FLgroup")))
- return csound->InitError(csound, Str("FLgroup_end: invalid stack pointer: "
- "verify its placement"));
+ return csound->InitError(csound, "%s",
+ Str("FLgroup_end: invalid stack pointer: "
+ "verify its placement"));
if (UNLIKELY(adrstk.count != ST(stack_count)))
- return csound->InitError(csound, Str("FLgroup_end: invalid stack count: "
- "verify FLgroup/FLgroup_end count and"
- " placement"));
+ return csound->InitError(csound, "%s",
+ Str("FLgroup_end: invalid stack count: "
+ "verify FLgroup/FLgroup_end count and"
+ " placement"));
((Fl_Scroll*) adrstk.WidgAddress)->end();
ST(AddrStack).pop_back();
@@ -2662,13 +2677,17 @@ extern "C" {
//-----------
- static int StartPack(CSOUND *csound, FLSCROLL *p)
+ static int StartPack(CSOUND *csound, FLPACK *p)
{
Fl_Pack *o = new Fl_Pack ((int) *p->ix, (int) *p->iy,
(int) *p->iwidth, (int) *p->iheight);
- //fl_window->resizable(o);
- o->box(FL_ENGRAVED_FRAME);
- o->spacing(15);
+ Fl_Boxtype borderType;
+ int iborder = (int)*p->iborder;
+ // fl_window->resizable(o);
+ if (iborder<0 || iborder>7) borderType = FL_FLAT_BOX;
+ else borderType = BOX_TABLE[iborder];
+ o->type((int)*p->itype);
+ o->spacing((int)*p->ispace);
ADDR_STACK adrstk(&p->h,o,ST(stack_count));
ST(AddrStack).push_back(adrstk);
@@ -2681,12 +2700,14 @@ extern "C" {
ST(stack_count)--;
ADDR_STACK adrstk = ST(AddrStack).back();
if (UNLIKELY(strcmp( adrstk.h->optext->t.opcod, "FLpack")))
- return csound->InitError(csound, Str("FLpack_end: invalid stack pointer: "
- "verify its placement"));
+ return csound->InitError(csound, "%s",
+ Str("FLpack_end: invalid stack pointer: "
+ "verify its placement"));
if (UNLIKELY(adrstk.count != ST(stack_count)))
- return csound->InitError(csound, Str("FLpack_end: invalid stack count: "
- "verify FLpack/FLpack_end count and "
- "placement"));
+ return csound->InitError(csound, "%s",
+ Str("FLpack_end: invalid stack count: "
+ "verify FLpack/FLpack_end count and "
+ "placement"));
((Fl_Pack*) adrstk.WidgAddress)->end();
ST(AddrStack).pop_back();
@@ -2837,7 +2858,8 @@ extern "C" {
widgetType = fl_getWidgetTypeFromOpcodeName(csound, v.opcode);
if (UNLIKELY(widgetType == 4)) {
- csound->InitError(csound, Str("FLvalue cannot be set by FLsetVal.\n"));
+ csound->InitError(csound, "%s",
+ Str("FLvalue cannot be set by FLsetVal.\n"));
return NOTOK;
}
if (widgetType < 0)
@@ -2873,7 +2895,8 @@ extern "C" {
widgetType = fl_getWidgetTypeFromOpcodeName(csound, v.opcode);
if (UNLIKELY(widgetType == 4)) {
- csound->InitError(csound, Str("FLvalue cannot be set by FLsetVal\n"));
+ csound->InitError(csound, "%s",
+ Str("FLvalue cannot be set by FLsetVal\n"));
return NOTOK;
}
if (widgetType < 0)
@@ -3238,7 +3261,7 @@ extern "C" {
itype = itype - 20;
}
if (UNLIKELY(itype > 10 && iexp == EXP_)) {
- csound->Warning(csound,
+ csound->Warning(csound, "%s",
Str("FLslider exponential, using non-labeled slider"));
itype -= 10;
}
@@ -3260,7 +3283,7 @@ extern "C" {
case 4: o->type(FL_VERT_SLIDER); break;
case 5: o->type(FL_HOR_NICE_SLIDER); o->box(FL_FLAT_BOX); break;
case 6: o->type(FL_VERT_NICE_SLIDER); o->box(FL_FLAT_BOX); break;
- default: return csound->InitError(csound,
+ default: return csound->InitError(csound, "%s",
Str("FLslider: invalid slider type"));
}
if (plastic) o->box(FL_PLASTIC_DOWN_BOX);
@@ -3273,8 +3296,9 @@ extern "C" {
break;
case EXP_ : //exponential
if (UNLIKELY(min == 0 || max == 0))
- return csound->InitError(csound, Str("FLslider: zero is illegal "
- "in exponential operations"));
+ return csound->InitError(csound, "%s",
+ Str("FLslider: zero is illegal "
+ "in exponential operations"));
range = max - min;
o->range(0,range);
#if defined(sun)
@@ -3334,7 +3358,8 @@ extern "C" {
csound->zklast > (long)(*p->inumsliders + *p->ioutablestart_ndx)))
outable = csound->zkstart + (long) *p->ioutablestart_ndx;
else {
- return csound->InitError(csound, Str("invalid ZAK space allocation"));
+ return csound->InitError(csound, "%s",
+ Str("invalid ZAK space allocation"));
}
}
else {
@@ -3448,8 +3473,9 @@ extern "C" {
case EXP_ : //exponential
if (UNLIKELY(min == 0 || max == 0))
return
- csound->InitError(csound, Str("FLslidBnk: zero is illegal "
- "in exponential operations"));
+ csound->InitError(csound, "%s",
+ Str("FLslidBnk: zero is illegal "
+ "in exponential operations"));
range = max - min;
o->range(0,range);
#if defined(sun)
@@ -3545,8 +3571,9 @@ extern "C" {
o->xbounds(*p->iminx,*p->imaxx); break;
case EXP_: //exponential
{ if (UNLIKELY(*p->iminx == 0 || *p->imaxx == 0))
- return csound->InitError(csound, Str("FLjoy X axe: zero is illegal "
- "in exponential operations"));
+ return csound->InitError(csound, "%s",
+ Str("FLjoy X axe: zero is illegal "
+ "in exponential operations"));
MYFLT range = *p->imaxx - *p->iminx;
o->xbounds(0,range);
#if defined(sun)
@@ -3578,8 +3605,9 @@ extern "C" {
o->ybounds(*p->imaxy,*p->iminy); break;
case EXP_ : //exponential
{ if (UNLIKELY(*p->iminy == 0 || *p->imaxy == 0))
- return csound->InitError(csound, Str("FLjoy X axe: zero is illegal "
- "in exponential operations"));
+ return csound->InitError(csound, "%s",
+ Str("FLjoy X axe: zero is illegal "
+ "in exponential operations"));
MYFLT range = *p->imaxy - *p->iminy;
o->ybounds(range,0);
#if defined(sun)
@@ -3672,7 +3700,8 @@ extern "C" {
o->box(_FL_OSHADOW_BOX);
break;
default:
- return csound->InitError(csound, Str("FLknob: invalid knob type"));
+ return csound->InitError(csound, "%s",
+ Str("FLknob: invalid knob type"));
}
widget_attributes(csound, o);
o->align(FL_ALIGN_BOTTOM | FL_ALIGN_WRAP);
@@ -3687,8 +3716,9 @@ extern "C" {
{
MYFLT min = p->min = *p->imin, max = *p->imax;
if (UNLIKELY(min == 0 || max == 0))
- return csound->InitError(csound, Str("FLknob: zero is illegal "
- "in exponential operations"));
+ return csound->InitError(csound, "%s",
+ Str("FLknob: zero is illegal "
+ "in exponential operations"));
MYFLT range = max - min;
o->range(0,range);
#if defined(sun)
@@ -3828,7 +3858,8 @@ extern "C" {
}
break;
default:
- return csound->InitError(csound, Str("FLbutton: invalid button type"));
+ return csound->InitError(csound, "%s",
+ Str("FLbutton: invalid button type"));
}
Fl_Button *o = w;
o->align(FL_ALIGN_WRAP);
@@ -3860,8 +3891,9 @@ extern "C" {
ADDR_STACK adrstk = ST(AddrStack).back();
if (UNLIKELY(strcmp( adrstk.h->optext->t.opcod, "FLpanel")))
- return csound->InitError(csound, Str("FLcloseButton: invalid stack"
- " pointer: verify its placement"));
+ return csound->InitError(csound, "%s",
+ Str("FLcloseButton: invalid stack"
+ " pointer: verify its placement"));
o->callback((Fl_Callback*) fl_callbackCloseButton,
(void*) adrstk.WidgAddress);
@@ -3951,8 +3983,9 @@ extern "C" {
w->down_box(FL_PLASTIC_DOWN_BOX);
}
break;
- default: return csound->InitError(csound, Str("FLbuttonBank: "
- "invalid button type"));
+ default: return csound->InitError(csound, "%s",
+ Str("FLbuttonBank: "
+ "invalid button type"));
}
widget_attributes(csound, w);
w->type(FL_RADIO_BUTTON);
@@ -4056,7 +4089,8 @@ extern "C" {
o->type(FL_VERTICAL);
break;
default:
- return csound->InitError(csound, Str("FLroller: invalid roller type"));
+ return csound->InitError(csound, "%s",
+ Str("FLroller: invalid roller type"));
}
widget_attributes(csound, o);
o->step(istep);
@@ -4069,8 +4103,9 @@ extern "C" {
{
MYFLT min = p->min, max = *p->imax;
if (UNLIKELY(min == 0 || max == 0))
- return csound->InitError(csound, Str("FLslider: zero is illegal "
- "in exponential operations"));
+ return csound->InitError(csound, "%s",
+ Str("FLslider: zero is illegal "
+ "in exponential operations"));
MYFLT range = max - min;
o->range(0,range);
#if defined(sun)
@@ -4251,8 +4286,9 @@ extern "C" {
static int fl_hvsbox(CSOUND *csound,FL_HVSBOX *p)
{
if (UNLIKELY(*p->numlinesX < 2 || *p->numlinesY < 2))
- return csound->InitError(csound, Str("FLhvsBox: a square area must be"
- " delimited by 2 lines at least"));
+ return csound->InitError(csound, "%s",
+ Str("FLhvsBox: a square area must be"
+ " delimited by 2 lines at least"));
HVS_BOX *o = new HVS_BOX((int) *p->numlinesX,(int) *p->numlinesY,
(int) *p->ix,(int) *p->iy,
@@ -4299,10 +4335,12 @@ extern "C" {
if (LIKELY((ftp = csound->FTFind(csound,p->ifn)) != NULL))
p->table = ftp->ftable;
else {
- return csound->InitError(csound, Str("FLkeyIn: invalid table number"));
+ return csound->InitError(csound, "%s",
+ Str("FLkeyIn: invalid table number"));
}
if (UNLIKELY(ftp->flen < 512)) {
- return csound->InitError(csound, Str("FLkeyIn: table too short!"));
+ return csound->InitError(csound, "%s",
+ Str("FLkeyIn: table too short!"));
}
}
else p->flag = 0;
@@ -4396,7 +4434,8 @@ extern "C" {
csound->zklast>(long)(*p->inumsliders + *p->ioutablestart_ndx)))
outable = csound->zkstart + (long) *p->ioutablestart_ndx;
else {
- return csound->InitError(csound, Str("invalid ZAK space allocation"));
+ return csound->InitError(csound, "%s",
+ Str("invalid ZAK space allocation"));
}
}
else {
@@ -4519,8 +4558,9 @@ extern "C" {
case EXP_ : //exponential
if (UNLIKELY(min == 0 || max == 0))
return
- csound->InitError(csound, Str("FLvslidBnk: zero is illegal "
- "in exponential operations"));
+ csound->InitError(csound, "%s",
+ Str("FLvslidBnk: zero is illegal "
+ "in exponential operations"));
range = max - min;
o->range(range,0);
#if defined(sun)
@@ -4607,7 +4647,8 @@ extern "C" {
csound->zklast>(long)(*p->inumsliders + *p->ioutablestart_ndx)))
outable = csound->zkstart + (long) *p->ioutablestart_ndx;
else {
- return csound->InitError(csound, Str("invalid ZAK space allocation"));
+ return csound->InitError(csound, "%s",
+ Str("invalid ZAK space allocation"));
}
}
else {
@@ -4644,7 +4685,7 @@ extern "C" {
slider_type = slider_type - 20;
}
if (UNLIKELY(slider_type > 10 && iexp == EXP_)) {
- csound->Warning(csound,
+ csound->Warning(csound, "%s",
Str("FLslider exponential, using non-labeled slider"));
slider_type -= 10;
}
@@ -4695,8 +4736,9 @@ extern "C" {
case EXP_ : //exponential
if (UNLIKELY(min == 0 || max == 0))
return
- csound->InitError(csound, Str("FLsliderBank: zero is illegal "
- "in exponential operations"));
+ csound->InitError(csound, "%s",
+ Str("FLsliderBank: zero is illegal "
+ "in exponential operations"));
range = max - min;
o->range(0,range);
#if defined(sun)
@@ -4784,7 +4826,8 @@ extern "C" {
csound->zklast>(long)(*p->inumsliders + *p->ioutablestart_ndx)))
outable = csound->zkstart + (long) *p->ioutablestart_ndx;
else {
- return csound->InitError(csound, Str("invalid ZAK space allocation"));
+ return csound->InitError(csound, "%s",
+ Str("invalid ZAK space allocation"));
}
}
else {
@@ -4822,8 +4865,9 @@ extern "C" {
slider_type -= 20;
}
if (UNLIKELY(slider_type > 10 && iexp == EXP_)) {
- csound->Warning(csound, Str("FLslidBnk2: FLslider exponential, "
- "using non-labeled slider"));
+ csound->Warning(csound, "%s",
+ Str("FLslidBnk2: FLslider exponential, "
+ "using non-labeled slider"));
slider_type -= 10;
}
if (slider_type <= 10)
@@ -4872,8 +4916,9 @@ extern "C" {
case EXP_ : //exponential
if (UNLIKELY(min == 0 || max == 0))
return
- csound->InitError(csound, Str("FLsliderBank: zero is illegal "
- "in exponential operations"));
+ csound->InitError(csound, "%s",
+ Str("FLsliderBank: zero is illegal "
+ "in exponential operations"));
range = max - min;
o->range(range,0);
#if defined(sun)
@@ -4952,23 +4997,25 @@ extern "C" {
if (LIKELY((ftp = csound->FTFind(csound, p->ifn)) != NULL))
table = ftp->ftable;
else {
- return csound->InitError(csound, Str("FLsldBnkSet: invalid table number"));
+ return csound->InitError(csound, "%s",
+ Str("FLsldBnkSet: invalid table number"));
}
// *startInd, *startSlid, *numSlid
if (UNLIKELY( ftp->flen < startInd + numslid)) {
- return csound->InitError(csound, Str("FLslidBnkSet: table too short!"));
+ return csound->InitError(csound, "%s",
+ Str("FLslidBnkSet: table too short!"));
}
FLSLIDERBANK *q = (FLSLIDERBANK *)ST(AddrSetValue)[ (int) *p->ihandle].opcode;
if (LIKELY((ftp = csound->FTFind(csound, q->ioutable)) != NULL))
outable = ftp->ftable;
else {
- return csound->InitError(csound,
+ return csound->InitError(csound, "%s",
Str("FLsldBnkSet: invalid outable number"));
}
if (numslid == 0) numslid = (int)(q->elements - *p->startSlid);
if (UNLIKELY( q->elements > startSlid + numslid)) {
- return csound->InitError(csound,
+ return csound->InitError(csound, "%s",
Str("FLslidBnkSet: too many sliders to reset!"));
}
for (int j = startSlid, k = startInd; j< numslid + startSlid; j++, k++) {
@@ -4992,8 +5039,9 @@ extern "C" {
}
break;
default:
- return csound->InitError(csound, Str("FLslidBnkSet: "
- "function mapping not available"));
+ return csound->InitError(csound, "%s",
+ Str("FLslidBnkSet: "
+ "function mapping not available"));
}
FLlock();
@@ -5015,11 +5063,13 @@ extern "C" {
if (LIKELY((ftp = csound->FTFind(csound, p->ifn)) != NULL))
table = ftp->ftable;
else {
- return csound->InitError(csound, Str("FLsldBnkSet: invalid table number"));
+ return csound->InitError(csound, "%s",
+ Str("FLsldBnkSet: invalid table number"));
}
// *startInd, *startSlid, *numSlid
if (UNLIKELY( ftp->flen < startInd + numslid)) {
- return csound->InitError(csound, Str("FLslidBnkSet: table too short!"));
+ return csound->InitError(csound, "%s",
+ Str("FLslidBnkSet: table too short!"));
}
FLSLIDERBANK2 *q =
(FLSLIDERBANK2 *)ST(AddrSetValue)[ (int) *p->ihandle].opcode;
@@ -5027,13 +5077,13 @@ extern "C" {
if (LIKELY((ftp = csound->FTFind(csound, q->ioutable)) != NULL))
outable = ftp->ftable;
else {
- return csound->InitError(csound,
+ return csound->InitError(csound, "%s",
Str("FLsldBnkSet: invalid outable number"));
}
if (numslid == 0) numslid = (int)(q->elements - *p->startSlid);
if (UNLIKELY( q->elements > startSlid + numslid)) {
- return csound->InitError(csound,
+ return csound->InitError(csound, "%s",
Str("FLslidBnkSet: too many sliders to reset!"));
}
@@ -5061,9 +5111,10 @@ extern "C" {
{
// val = table[k];
if (UNLIKELY(val < 0 || val > 1)) { // input range must be 0 to 1
- csound->PerfError(csound, Str("FLslidBnk2Setk: value out of range: "
- "function mapping requires a 0 to 1 "
- "range for input"));
+ csound->PerfError(csound, "%s",
+ Str("FLslidBnk2Setk: value out of range: "
+ "function mapping requires a 0 to 1 "
+ "range for input"));
}
}
//{
@@ -5090,24 +5141,26 @@ extern "C" {
if (LIKELY((ftp = csound->FTFind(csound, p->ifn)) != NULL))
p->table = ftp->ftable;
else {
- return csound->InitError(csound, Str("FLsldBnkSetk: invalid table number"));
+ return csound->InitError(csound, "%s",
+ Str("FLsldBnkSetk: invalid table number"));
}
// *startInd, *startSlid, *numSlid
if (UNLIKELY( ftp->flen < p->startind + p->numslid)) {
- return csound->InitError(csound, Str("FLslidBnkSetk: table too short!"));
+ return csound->InitError(csound, "%s",
+ Str("FLslidBnkSetk: table too short!"));
}
p->q = (FLSLIDERBANK2 *) ST(AddrSetValue)[ (int) *p->ihandle].opcode;
if (LIKELY((ftp = csound->FTFind(csound, p->q->ioutable)) != NULL))
p->outable = ftp->ftable;
else {
- return csound->InitError(csound,
+ return csound->InitError(csound, "%s",
Str("FLsldBnkSetk: invalid outable number"));
}
if (p->numslid == 0) p->numslid = p->q->elements - p->startslid;
if (UNLIKELY( p->q->elements < p->startslid + p->numslid)) {
- return csound->InitError(csound,
+ return csound->InitError(csound, "%s",
Str("FLslidBnkSetk: too many sliders to reset!"));
}
return OK;
@@ -5146,9 +5199,10 @@ extern "C" {
{
val = table[k];
if (UNLIKELY(val < 0 || val > 1)) { // input range must be 0 to 1
- csound->PerfError(csound, Str("FLslidBnk2Setk: value out of range:"
- " function mapping requires a 0 to 1"
- " range for input"));
+ csound->PerfError(csound, "%s",
+ Str("FLslidBnk2Setk: value out of range:"
+ " function mapping requires a 0 to 1"
+ " range for input"));
}
}
}
@@ -5175,25 +5229,26 @@ extern "C" {
if (LIKELY((ftp = csound->FTFind(csound, p->ifn)) != NULL))
p->table = ftp->ftable;
else {
- return csound->InitError(csound,
+ return csound->InitError(csound, "%s",
Str("FLslidBnkSetk: invalid table number"));
}
// *startInd, *startSlid, *numSlid
if (UNLIKELY( ftp->flen < p->startind + p->numslid)) {
- return csound->InitError(csound, Str("FLslidBnkSetk: table too short!"));
+ return csound->InitError(csound, "%s",
+ Str("FLslidBnkSetk: table too short!"));
}
p->q = (FLSLIDERBANK *) ST(AddrSetValue)[ (int) *p->ihandle].opcode;
if (LIKELY((ftp = csound->FTFind(csound, p->q->ioutable)) != NULL))
p->outable = ftp->ftable;
else {
- return csound->InitError(csound,
+ return csound->InitError(csound, "%s",
Str("FLslidBnkSetk: invalid outable number"));
}
if (p->numslid == 0) p->numslid = p->q->elements - p->startslid;
if (UNLIKELY( p->q->elements < p->startslid + p->numslid)) {
- return csound->InitError(csound,
+ return csound->InitError(csound, "%s",
Str("FLslidBnkSetk: too many sliders to reset!"));
}
return OK;
@@ -5232,7 +5287,7 @@ extern "C" {
{
val = table[k];
if (UNLIKELY(val < 0 || val > 1)) { // input range must be 0 to 1
- csound->PerfError(csound,
+ csound->PerfError(csound, "%s",
Str("FLslidBnk2Setk: value out of range: "
"function mapping requires a 0 to 1 range "
"for input"));
@@ -5265,6 +5320,7 @@ extern "C" {
p->expx = EXP_;
if (UNLIKELY(*p->ioutx_min == 0 || *p->ioutx_max==0))
return csound->InitError(csound,
+ "%s",
Str("FLxyin: none of X limits can be zero in"
" exponential mode!"));
p->basex = pow((double) (*p->ioutx_max / *p->ioutx_min),
@@ -5291,8 +5347,9 @@ extern "C" {
case -1: // EXP
p->expy = EXP_;
if (UNLIKELY(*p->iouty_min == 0 || *p->iouty_max==0))
- return csound->InitError(csound, Str("FLxyin: none of Y limits can "
- "be zero in exponential mode!"));
+ return csound->InitError(csound, "%s",
+ Str("FLxyin: none of Y limits can "
+ "be zero in exponential mode!"));
p->basey = pow((double) (*p->iouty_max / *p->iouty_min),
(double) (1/p->rangey));
break;
@@ -5590,7 +5647,7 @@ const OENTRY widgetOpcodes_[] = {
(SUBR) EndScroll, (SUBR) NULL, (SUBR) NULL },
{ (char*)"FLscroll_end",S(FLSCROLLEND), 1, (char*)"", (char*)"",
(SUBR) EndScroll, (SUBR) NULL, (SUBR) NULL },
- { (char*)"FLpack", S(FLPACK), 1, (char*)"", (char*)"iiii",
+ { (char*)"FLpack", S(FLPACK), 1, (char*)"", (char*)"iiiiooo",
(SUBR) StartPack, (SUBR) NULL, (SUBR) NULL },
{ (char*)"FLpackEnd", S(FLPACKEND), 1, (char*)"", (char*)"",
(SUBR) EndPack, (SUBR) NULL, (SUBR) NULL },
diff --git a/InOut/widgets.h b/InOut/widgets.h
index bda52ff..5495c77 100644
--- a/InOut/widgets.h
+++ b/InOut/widgets.h
@@ -263,7 +263,7 @@ typedef struct {
typedef struct {
OPDS h;
- MYFLT *iwidth, *iheight, *ix, *iy;
+ MYFLT *iwidth, *iheight, *ix, *iy, *itype, *ispace, *iborder;
} FLPACK;
typedef struct {
diff --git a/InOut/winEPS.c b/InOut/winEPS.c
index d0f6871..6a1668c 100644
--- a/InOut/winEPS.c
+++ b/InOut/winEPS.c
@@ -333,7 +333,7 @@ void PS_DrawGraph(CSOUND *csound, WINDAT *wdptr)
winEPS_globals_t *pp;
int iskip = (wdptr->npts < MyPS_WIDTH ?
1 : (int)(wdptr->npts / MyPS_WIDTH));
- MYFLT xmin, ymin, ymax, xx, yy, dx, dy, fnts;
+ MYFLT ymin, ymax, xx, yy, dx, dy, fnts;
char cxmin[20], cxmax[20], cymin[20], cymax[20];
int i;
@@ -357,7 +357,7 @@ void PS_DrawGraph(CSOUND *csound, WINDAT *wdptr)
/**
* Get labels for axis limits, then draw the axis
*/
- xmin = FL(0.0);
+ //xmin = FL(0.0);
/* xmax = FL(1.0) * wdptr->npts; */
sprintf(cxmin, "%d", 0);
sprintf(cxmax, "%ld", wdptr->npts);
diff --git a/InOut/winFLTK.c b/InOut/winFLTK.c
index 380ff7e..c6a4cec 100644
--- a/InOut/winFLTK.c
+++ b/InOut/winFLTK.c
@@ -74,13 +74,12 @@ PUBLIC int csoundModuleInit(CSOUND *csound)
"FLTK_Flags") == (void*) 0) {
if (csound->CreateGlobalVariable(csound,
"FLTK_Flags", sizeof(int)) != 0)
- csound->Die(csound,
+ csound->Die(csound, "%s",
Str("widgets.cpp: error allocating FLTK flags"));
initFlags = 1;
}
fltkFlags = getFLTKFlagsPtr(csound);
- if (csound->oparms->displays &&
- ((*fltkFlags) & 2) == 0 &&
+ if (((*fltkFlags) & 2) == 0 &&
!(csound->oparms->graphsoff || csound->oparms->postscript)) {
#ifdef LINUX
Display *dpy = XOpenDisplay(NULL);
@@ -103,7 +102,7 @@ PUBLIC int csoundModuleInit(CSOUND *csound)
csound->SetKillXYinCallback(csound, KillXYin_FLTK);
/* seemed to crash, but not anymore... */
csound->RegisterResetCallback(csound, NULL, widget_reset);
- csound->Message(csound, "graph init \n");
+ csound->Message(csound, "graph init \n");
}
#ifdef LINUX
@@ -116,7 +115,7 @@ PUBLIC int csoundModuleInit(CSOUND *csound)
#endif
(*fltkFlags) |= 28;
}
- if (!((*fltkFlags) & 129)) {
+ if (!((*fltkFlags) & 129))
for ( ; ep->opname != NULL; ep++) {
if (csound->AppendOpcode(csound, ep->opname,
(int)ep->dsblksiz, (int)ep->thread,
@@ -127,7 +126,6 @@ PUBLIC int csoundModuleInit(CSOUND *csound)
return -1;
}
}
- }
else if (!((*fltkFlags) & 128)) {
for ( ; ep->opname != NULL; ep++) {
if (csound->AppendOpcode(
@@ -143,7 +141,8 @@ PUBLIC int csoundModuleInit(CSOUND *csound)
}
}
- widget_init(csound);
+ if (!(csound->oparms->graphsoff || csound->oparms->postscript))
+ widget_init(csound);
return 0;
}
diff --git a/OOps/aops.c b/OOps/aops.c
index 0ada732..d5896e7 100644
--- a/OOps/aops.c
+++ b/OOps/aops.c
@@ -27,6 +27,8 @@
#include <math.h>
#include <time.h>
+#define POW2TABSIZI 4096
+#define POW2MAX 24.0
#define EIPT3 (25.0/3.0)
#define LOGTWO (0.69314718055994530942)
#define STEPS (32768)
@@ -35,26 +37,49 @@
#define MIDINOTE0 (3.00) /* Lowest midi note is 3.00 in oct & pch formats */
/* static lookup tables, initialised once at start-up; also used by midi ops */
-MYFLT cpsocfrc[OCTRES] = { FL(0.0) };
-static MYFLT powerof2[4096];
+/* MYFLT cpsocfrc[OCTRES] = { FL(0.0) }; */
+/* static MYFLT powerof2[POW2TABSIZI]; */
/* initialise the tables, called by csoundInitialize() */
-void aops_init_tables(void)
+/*void aops_init_tables(void)
{
int i;
for (i = 0; i < OCTRES; i++)
cpsocfrc[i] = POWER(FL(2.0), (MYFLT)i / OCTRES) * ONEPT;
- for (i = 0; i < 4096; i++)
- powerof2[i] = POWER(FL(2.0), (MYFLT)i * (MYFLT)(1.0/4096.0) - FL(15.0));
-}
+ for (i = 0; i < POW2TABSIZI; i++)
+ powerof2[i] = POWER(FL(2.0), (MYFLT)i * (MYFLT)(1.0/POW2TABSIZI) - FL(POW2MAX));
+}*/
-static inline MYFLT pow2(MYFLT a)
+/* initialise the tables, called by csoundPreCompile() */
+void csound_aops_init_tables(CSOUND *csound)
{
- int n = (int)MYFLT2LRND(a * FL(4096.0)) + 61440; /* 4096 * 15 */
- return ((MYFLT) (1 << (n >> 12)) * powerof2[n & 4095]);
+ int i;
+ if(csound->cpsocfrc==NULL)csound->cpsocfrc = (MYFLT *) csound->Malloc(csound, sizeof(MYFLT)*OCTRES);
+ if(csound->powerof2==NULL) csound->powerof2 = (MYFLT *) csound->Malloc(csound, sizeof(MYFLT)*POW2TABSIZI);
+ for (i = 0; i < OCTRES; i++)
+ csound->cpsocfrc[i] = POWER(FL(2.0), (MYFLT)i / OCTRES) * ONEPT;
+ for (i = 0; i < POW2TABSIZI; i++)
+ csound->powerof2[i] = POWER(FL(2.0), (MYFLT)i * (MYFLT)(1.0/POW2TABSIZI) - FL(POW2MAX));
}
+
+MYFLT csoundPow2(CSOUND *csound, MYFLT a){
+
+ if(a > POW2MAX) a = POW2MAX;
+ else if(a < -POW2MAX) a = -POW2MAX;
+ int n = (int)MYFLT2LRND(a * FL(POW2TABSIZI)) + POW2MAX*POW2TABSIZI; /* 4096 * 15 */
+ return ((MYFLT) (1UL << (n >> 12)) * csound->powerof2[n & (POW2TABSIZI-1)]);
+
+}
+
+
+/*static inline MYFLT pow2(MYFLT a)
+{
+ int n = (int)MYFLT2LRND(a * FL(POW2TABSIZI)) + POW2MAX*POW2TABSIZI;
+ return ((MYFLT) (1 << (n >> 12)) * powerof2[n & (POW2TABSIZI-1)]);
+}*/
+
int rassign(CSOUND *csound, ASSIGN *p)
{
/* already assigned by otran */
@@ -181,7 +206,7 @@ int tassign(CSOUND *csound, ASSIGNT *p)
int tabref_check(CSOUND *csound, TABREF *p)
{
if (UNLIKELY(p->tab->data==NULL))
- return csound->InitError(csound, Str("Vector notinitialised\n"));
+ return csound->InitError(csound, Str("Vector not initialised\n"));
return OK;
}
@@ -956,7 +981,7 @@ int logbasetwo_set(CSOUND *csound, EVAL *p)
int powoftwo(CSOUND *csound, EVAL *p)
{
- *p->r = pow2(*p->a);
+ *p->r = csound->Pow2(csound,*p->a);
return OK;
}
@@ -964,7 +989,7 @@ int powoftwoa(CSOUND *csound, EVAL *p)
{ /* by G.Maldonado, liberalised by JPff */
int n, nsmps = csound->ksmps;
for (n = 0; n < nsmps; n++)
- p->r[n] = pow2(p->a[n]);
+ p->r[n] = csound->Pow2(csound,p->a[n]);
return OK;
}
@@ -974,7 +999,7 @@ int powoftwoa(CSOUND *csound, EVAL *p)
int semitone(CSOUND *csound, EVAL *p)
{
MYFLT a = *p->a*ONEd12;
- *p->r = pow2(a);
+ *p->r = csound->Pow2(csound,a);
return OK;
}
@@ -987,7 +1012,7 @@ int asemitone(CSOUND *csound, EVAL *p) /* JPff */
r = p->r;
for (n=0; n<nsmps; n++) {
MYFLT aa = (a[n])*ONEd12;
- r[n] = pow2(aa);
+ r[n] = csound->Pow2(csound,aa);
}
return OK;
}
@@ -995,7 +1020,7 @@ int asemitone(CSOUND *csound, EVAL *p) /* JPff */
int cent(CSOUND *csound, EVAL *p)
{
MYFLT a = *p->a*ONEd1200;
- *p->r = pow2(a);
+ *p->r = csound->Pow2(csound,a);
return OK;
}
@@ -1008,7 +1033,7 @@ int acent(CSOUND *csound, EVAL *p) /* JPff */
r = p->r;
for (n=0; n<nsmps; n++) {
MYFLT aa = (a[n])*ONEd1200;
- r[n] = pow2(aa);
+ r[n] = csound->Pow2(csound,aa);
}
return OK;
}
@@ -1017,7 +1042,7 @@ int acent(CSOUND *csound, EVAL *p) /* JPff */
int db(CSOUND *csound, EVAL *p)
{
- *p->r = pow2(*p->a*LOG2_10D20);
+ *p->r = csound->Pow2(csound,*p->a*LOG2_10D20);
return OK;
}
@@ -1030,7 +1055,7 @@ int dba(CSOUND *csound, EVAL *p) /* JPff */
r = p->r;
for (n=0; n<nsmps; n++) {
MYFLT aa = a[n];
- r[n] = pow2(aa*LOG2_10D20);
+ r[n] = csound->Pow2(csound,aa*LOG2_10D20);
}
return OK;
}
@@ -1246,6 +1271,7 @@ int inall_opcode(CSOUND *csound, INALL *p)
return OK;
}
+#if 0
int out(CSOUND *csound, OUTM *p)
{
int n;
@@ -1317,6 +1343,7 @@ int outq(CSOUND *csound, OUTQ *p)
CSOUND_SPOUT_SPINUNLOCK
return OK;
}
+#endif
int outs1(CSOUND *csound, OUTM *p)
{
@@ -1488,6 +1515,7 @@ int outq4(CSOUND *csound, OUTM *p)
return OK;
}
+#if 0
int outh(CSOUND *csound, OUTH *p)
{
MYFLT *sp = csound->spout, *ap1 = p->asig1, *ap2 = p->asig2, *ap3 = p->asig3,
@@ -1558,6 +1586,7 @@ int outo(CSOUND *csound, OUTO *p)
CSOUND_SPOUT_SPINUNLOCK
return OK;
}
+#endif
static int outn(CSOUND *csound, int n, OUTX *p)
{
@@ -1588,6 +1617,7 @@ static int outn(CSOUND *csound, int n, OUTX *p)
return OK;
}
+#if 0
int outx(CSOUND *csound, OUTX *p)
{
return outn(csound, 16, p);
@@ -1597,6 +1627,7 @@ int outX(CSOUND *csound, OUTX *p)
{
return outn(csound, 32, p);
}
+#endif
int outall(CSOUND *csound, OUTX *p) /* Output a list of channels */
{
@@ -1798,3 +1829,8 @@ int is_infa(CSOUND *csound, ASSIGN *p)
*p->r = ans*sign;
return OK;
}
+
+int error_fn(CSOUND *csound, ERRFN *p)
+{
+ return csound->InitError(csound, Str("Unknown functuon called"));
+}
diff --git a/OOps/bus.c b/OOps/bus.c
index 11f4e3c..93955b9 100644
--- a/OOps/bus.c
+++ b/OOps/bus.c
@@ -942,10 +942,10 @@ static int chnset_opcode_perf_k(CSOUND *csound, CHNGET *p)
static int chnset_opcode_perf_a(CSOUND *csound, CHNGET *p)
{
- int *lock = p->lock; /* Need lock for the channel */
- csoundSpinLock(lock);
+ /* Need lock for the channel */
+ csoundSpinLock(p->lock);
memcpy(p->fp, p->arg, sizeof(MYFLT)*csound->ksmps);
- csoundSpinUnLock(lock);
+ csoundSpinUnLock(p->lock);
return OK;
}
@@ -955,12 +955,12 @@ static int chnmix_opcode_perf(CSOUND *csound, CHNGET *p)
{
int i = 0;
int n = csound->ksmps;
- int *lock = p->lock; /* Need lock for the channel */
- csoundSpinLock(lock);
+ /* Need lock for the channel */
+ csoundSpinLock(p->lock);
for (i=0; i<n; i++) {
p->fp[i] += p->arg[i];
}
- csoundSpinUnLock(lock);
+ csoundSpinUnLock(p->lock);
return OK;
}
@@ -968,10 +968,10 @@ static int chnmix_opcode_perf(CSOUND *csound, CHNGET *p)
static int chnclear_opcode_perf(CSOUND *csound, CHNCLEAR *p)
{
- int *lock = p->lock; /* Need lock for the channel */
- csoundSpinLock(lock);
+ /* Need lock for the channel */
+ csoundSpinLock(p->lock);
memset(p->fp, 0, csound->ksmps*sizeof(MYFLT));
- csoundSpinUnLock(lock);
+ csoundSpinUnLock(p->lock);
return OK;
}
diff --git a/OOps/cmath.c b/OOps/cmath.c
index 04831a8..796ee2e 100644
--- a/OOps/cmath.c
+++ b/OOps/cmath.c
@@ -266,12 +266,13 @@ static MYFLT poissrand(CSOUND *csound, MYFLT lambda)
int auniform(CSOUND *csound, PRAND *p) /* Uniform distribution */
{
- MYFLT *out = p->out, *endp = p->out + csound->ksmps;
+ MYFLT *out = p->out;
+ int n, nsmps = csound->ksmps;
double scale = (double)*p->arg1 * (1.0 / 4294967295.03125);
- do {
- *(out++) = (MYFLT)((double)csoundRandMT(&(csound->randState_)) * scale);
- } while (out < endp);
+ for (n=0; n>nsmps; n++) {
+ out[n] = (MYFLT)((double)csoundRandMT(&(csound->randState_)) * scale);
+ }
return OK;
}
@@ -326,12 +327,6 @@ int exprndiset(CSOUND *csound, PRANDI *p)
return OK;
}
-int iexprndi(CSOUND *csound, PRANDI *p)
-{
- exprndiset(csound, p);
- return kexprndi(csound, p);
-}
-
int kexprndi(CSOUND *csound, PRANDI *p)
{ /* rslt = (num1 + diff*phs) * amp */
/* IV - Jul 11 2002 */
@@ -346,6 +341,12 @@ int kexprndi(CSOUND *csound, PRANDI *p)
return OK;
}
+int iexprndi(CSOUND *csound, PRANDI *p)
+{
+ exprndiset(csound, p);
+ return kexprndi(csound, p);
+}
+
int aexprndi(CSOUND *csound, PRANDI *p)
{
int32 phs = p->phs, inc;
@@ -448,12 +449,6 @@ int gaussiset(CSOUND *csound, PRANDI *p)
return OK;
}
-int igaussi(CSOUND *csound, PRANDI *p)
-{
- gaussiset(csound, p);
- return kgaussi(csound, p);
-}
-
int kgaussi(CSOUND *csound, PRANDI *p)
{ /* rslt = (num1 + diff*phs) * amp */
/* IV - Jul 11 2002 */
@@ -468,6 +463,12 @@ int kgaussi(CSOUND *csound, PRANDI *p)
return OK;
}
+int igaussi(CSOUND *csound, PRANDI *p)
+{
+ gaussiset(csound, p);
+ return kgaussi(csound, p);
+}
+
int agaussi(CSOUND *csound, PRANDI *p)
{
int32 phs = p->phs, inc;
@@ -531,12 +532,6 @@ int cauchyiset(CSOUND *csound, PRANDI *p)
return OK;
}
-int icauchyi(CSOUND *csound, PRANDI *p)
-{
- cauchyiset(csound, p);
- return kcauchyi(csound, p);
-}
-
int kcauchyi(CSOUND *csound, PRANDI *p)
{ /* rslt = (num1 + diff*phs) * amp */
/* IV - Jul 11 2002 */
@@ -551,6 +546,12 @@ int kcauchyi(CSOUND *csound, PRANDI *p)
return OK;
}
+int icauchyi(CSOUND *csound, PRANDI *p)
+{
+ cauchyiset(csound, p);
+ return kcauchyi(csound, p);
+}
+
int acauchyi(CSOUND *csound, PRANDI *p)
{
int32 phs = p->phs, inc;
diff --git a/OOps/goto_ops.c b/OOps/goto_ops.c
index 3fd2ed9..a79d467 100644
--- a/OOps/goto_ops.c
+++ b/OOps/goto_ops.c
@@ -27,6 +27,7 @@
#include "oload.h"
#include "insert.h" /* for goto's */
#include "aops.h" /* for cond's */
+extern int32 strarg2insno(CSOUND *, void *p, int is_string);
int igoto(CSOUND *csound, GOTO *p)
{
@@ -166,16 +167,19 @@ int turnoff(CSOUND *csound, LINK *p) /* terminate the current instrument */
}
/* turnoff2 opcode */
-
-int turnoff2(CSOUND *csound, TURNOFF2 *p)
+int turnoff2(CSOUND *csound, TURNOFF2 *p, int isStringArg)
{
MYFLT p1;
INSDS *ip, *ip2, *nip;
int mode, insno, allow_release;
- if (*(p->kInsNo) <= FL(0.0))
+ if(isStringArg){
+ p1 = (MYFLT) strarg2insno(csound, p->kInsNo, (p->XSTRCODE & 1));
+ } else p1 = *(p->kInsNo);
+
+ if (p1 <= FL(0.0))
return OK; /* not triggered */
- p1 = *(p->kInsNo);
+
insno = (int) p1;
if (UNLIKELY(insno < 1 || insno > (int) csound->maxinsno ||
csound->instrtxtp[insno] == NULL)) {
@@ -233,6 +237,14 @@ int turnoff2(CSOUND *csound, TURNOFF2 *p)
return OK;
}
+int turnoff2S(CSOUND *csound, TURNOFF2 *p){
+ return turnoff2(csound, p, 1);
+}
+
+int turnoff2k(CSOUND *csound, TURNOFF2 *p){
+ return turnoff2(csound, p, 0);
+}
+
int loop_l_i(CSOUND *csound, LOOP_OPS *p)
{
/* if ((indxvar += iincr) < ilimit) igoto l */
diff --git a/OOps/midiinterop.c b/OOps/midiinterop.c
index f8e532c..75484fc 100644
--- a/OOps/midiinterop.c
+++ b/OOps/midiinterop.c
@@ -28,7 +28,7 @@
#define dv127 (FL(1.0)/FL(127.0))
/* aops.c, table for CPSOCTL */
-extern MYFLT cpsocfrc[];
+/* extern MYFLT cpsocfrc[]; */
int midinoteoff(CSOUND *csound, MIDINOTEON *p)
{
diff --git a/OOps/midiops.c b/OOps/midiops.c
index 2612d14..77c39ef 100644
--- a/OOps/midiops.c
+++ b/OOps/midiops.c
@@ -30,7 +30,7 @@
#define dv127 (FL(1.0)/FL(127.0))
/* aops.c, table for CPSOCTL */
-extern MYFLT cpsocfrc[];
+/*extern MYFLT cpsocfrc[];*/
extern int m_chinsno(CSOUND *csound, int chan, int insno, int reset_ctls);
diff --git a/OOps/midiout.c b/OOps/midiout.c
index 99096e1..5bbd61f 100644
--- a/OOps/midiout.c
+++ b/OOps/midiout.c
@@ -308,11 +308,13 @@ int out_controller (CSOUND *csound, OUT_CONTR *p)
value = (int)((*p->value - min) * FL(127.0) / (*p->max - min));
value = (value < 128) ? value : 127;
value = (value > -1) ? value : 0;
- if (value != p->last_value) {
+ if (value != p->last_value || *p->chn != p->lastchn || *p->num != p->lastctrl) {
/* csound->Message(csound, "out contr value: %d\n", value); */
control_change(csound, (int)*p->chn-1,(int)*p->num ,value);
p->last_value = value;
- }
+ p->lastchn = *p->chn;
+ p->lastctrl = *p->num;
+ }
}
return OK;
}
@@ -326,10 +328,11 @@ int out_aftertouch (CSOUND *csound, OUT_ATOUCH *p)
value = (int)((*p->value - min) * FL(127.0) / (*p->max - min));
value = value < 128 ? value : 127;
value = value > -1 ? value : 0;
- if (value != p->last_value) {
+ if (value != p->last_value || *p->chn != p->lastchn) {
after_touch(csound, (int)*p->chn-1, value);
p->last_value = value;
- }
+ p->lastchn = *p->chn;
+ }
}
return OK;
}
@@ -341,10 +344,12 @@ int out_poly_aftertouch (CSOUND *csound, OUT_POLYATOUCH *p)
value = (int)((*p->value - min) * FL(127.0) / (*p->max - min));
value = value < 128 ? value : 127;
value = value > -1 ? value : 0;
- if (value != p->last_value) {
+ if (value != p->last_value || *p->chn != p->lastchn || *p->num != p->lastctrl) {
poly_after_touch(csound, (int)*p->chn-1, (int)*p->num, value);
p->last_value = value;
- }
+ p->lastchn = *p->chn;
+ p->lastctrl = *p->num;
+}
return OK;
}
@@ -358,10 +363,11 @@ int out_progchange (CSOUND *csound, OUT_PCHG *p)
prog_num = (int)((*p->prog_num - min) * FL(127.0) / (*p->max - min));
prog_num = prog_num < 128 ? prog_num : 127;
prog_num = prog_num > -1 ? prog_num : 0;
- if (prog_num != p->last_prog_num) {
+ if (prog_num != p->last_prog_num || *p->chn != p->lastchn) {
program_change(csound, (int)*p->chn-1, prog_num);
p->last_prog_num = prog_num;
- }
+ p->lastchn = *p->chn;
+ }
}
return OK;
}
@@ -377,14 +383,16 @@ int out_controller14 (CSOUND *csound, OUT_CONTR14 *p)
value = (value < 16384) ? value : 16383;
value = (value > -1) ? value : 0;
- if (value != p->last_value) {
+ if (value != p->last_value || *p->chn != p->lastchn || *p->msb_num != p->lastctrl) {
unsigned int msb = value >> 7;
unsigned int lsb = value & 0x7F;
csound->Warning(csound, Str("out contr14 msb:%x lsb:%x\n"), msb, lsb);
control_change(csound, (int)*p->chn-1, (int)*p->msb_num, msb);
control_change(csound, (int)*p->chn-1, (int)*p->lsb_num, lsb);
p->last_value = value;
- }
+ p->lastchn = *p->chn;
+ p->lastctrl = *p->msb_num;
+ }
}
return OK;
}
@@ -402,12 +410,13 @@ int out_pitch_bend(CSOUND *csound, OUT_PB *p)
value = (int)((*p->value - min) * FL(16383.0) / (*p->max - min));
value = (value < 16384 ? value : 16383);
value = (value > -1 ? value : 0);
- if (value != p->last_value) {
+ if (value != p->last_value || *p->chn != p->lastchn ) {
unsigned int msb = value >> 7;
unsigned int lsb = value & 0x7F;
pitch_bend(csound, (int)*p->chn - 1, lsb, msb);
p->last_value = value;
- }
+ p->lastchn = *p->chn;
+ }
}
return OK;
}
diff --git a/OOps/pvsanal.c b/OOps/pvsanal.c
index 5eaf64b..19d9577 100644
--- a/OOps/pvsanal.c
+++ b/OOps/pvsanal.c
@@ -268,7 +268,7 @@ static void generate_frame(CSOUND *csound, PVSANAL *p)
int32 analWinLen = p->fsig->winsize/2;
int32 synWinLen = analWinLen;
float *ofp; /* RWD MUST be 32bit */
- MYFLT *fp,*oi,*i0,*i1;
+ MYFLT *fp;
MYFLT *anal = (MYFLT *) (p->analbuf.auxp);
MYFLT *input = (MYFLT *) (p->input.auxp);
MYFLT *analWindow = (MYFLT *) (p->analwinbuf.auxp) + analWinLen;
@@ -677,11 +677,11 @@ int pvsynthset(CSOUND *csound, PVSYNTH *p)
{
MYFLT *analwinhalf;
MYFLT *synwinhalf;
- MYFLT sum, olapratio;
+ MYFLT sum;
int32 halfwinsize,buflen;
int i,nBins,Mf,Lf;
double IO;
-
+
/* get params from input fsig */
/* we TRUST they are legal */
int32 N = p->fsig->N;
@@ -728,14 +728,15 @@ int pvsynthset(CSOUND *csound, PVSYNTH *p)
synwinhalf = (MYFLT *) (p->synwinbuf.auxp) + halfwinsize;
-
+
/* synthesis windows */
if (M <= N) {
if (UNLIKELY(PVS_CreateWindow(csound, synwinhalf, wintype, M) != OK))
return NOTOK;
-
+
for (i = 1; i <= halfwinsize; i++)
*(synwinhalf - i) = *(synwinhalf + i - Lf);
+
sum = FL(0.0);
for (i = -halfwinsize; i <= halfwinsize; i++)
@@ -748,7 +749,7 @@ int pvsynthset(CSOUND *csound, PVSYNTH *p)
sum = FL(0.0);
/* no timescaling, so I(nterpolation) will always = D(ecimation) = overlap */
for (i = -halfwinsize; i <= halfwinsize; i+=overlap)
- sum += *(synwinhalf + i) * *(synwinhalf + i);
+ sum += *(synwinhalf + i) * *(synwinhalf + i);
}
else {
/* have to make analysis window to get amp scaling */
@@ -792,6 +793,7 @@ int pvsynthset(CSOUND *csound, PVSYNTH *p)
*(synwinhalf - i) = *(synwinhalf + i - Lf);
}
+
if (!(N & (N - 1L)))
sum = csound->GetInverseRealFFTScale(csound, (int) N) / sum;
else
@@ -799,7 +801,7 @@ int pvsynthset(CSOUND *csound, PVSYNTH *p)
for (i = -halfwinsize; i <= halfwinsize; i++)
*(synwinhalf + i) *= sum;
-
+
/* p->invR = FL(1.0) / csound->esr; */
p->RoverTwoPi = p->arate / TWOPI_F;
p->TwoPioverR = TWOPI_F / p->arate;
@@ -810,6 +812,7 @@ int pvsynthset(CSOUND *csound, PVSYNTH *p)
p->outptr = 0;
p->nextOut = (MYFLT *) (p->output.auxp);
p->buflen = buflen;
+
return OK;
}
@@ -826,9 +829,9 @@ static MYFLT synth_tick(CSOUND *csound, PVSYNTH *p)
static void process_frame(CSOUND *csound, PVSYNTH *p)
{
- int n,i,j,k,ii,NO,NO2;
+ int i,j,k,ii,NO,NO2;
float *anal; /* RWD MUST be 32bit */
- MYFLT *syn,*bsyn,*i0,*i1,*output;
+ MYFLT *syn,*bsyn,*output;
MYFLT *oldOutPhase = (MYFLT *) (p->oldOutPhase.auxp);
int32 N = p->fsig->N;
MYFLT *obufptr,*outbuf,*synWindow;
@@ -940,7 +943,6 @@ static void process_frame(CSOUND *csound, PVSYNTH *p)
obufptr = outbuf;
for (i = 0; i < p->IOi;) { /* shift out next IOi values */
- int j;
int todo = (p->IOi-i <= output+p->buflen - p->nextOut ?
p->IOi-i : output+p->buflen - p->nextOut);
/*outfloats(nextOut, todo, ofd);*/
diff --git a/OOps/remote.c b/OOps/remote.c
index 01a6018..a6237a0 100644
--- a/OOps/remote.c
+++ b/OOps/remote.c
@@ -29,7 +29,10 @@
#include <sys/ioctl.h>
#ifdef LINUX
#include <linux/if.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
#include <arpa/inet.h>
+extern int inet_aton (const char *, struct in_addr *);
#endif
#include <net/if.h>
#endif
diff --git a/OOps/ugens1.c b/OOps/ugens1.c
index e800fc2..1b82a3d 100644
--- a/OOps/ugens1.c
+++ b/OOps/ugens1.c
@@ -341,7 +341,8 @@ int lsgrset(CSOUND *csound, LINSEG *p)
int32 relestim;
lsgset(csound,p);
relestim = (p->cursegp + p->segsrem - 1)->cnt;
- p->xtra = relestim; /* VL 4-1-2011 was -1, making all linsegr releases in an instr => xtratim
+ p->xtra = relestim; /* VL 4-1-2011 was -1, making all linsegr
+ releases in an instr => xtratim
set to relestim seems to fix this */
if (relestim > p->h.insdshead->xtratim)
p->h.insdshead->xtratim = (int)relestim;
@@ -387,7 +388,7 @@ int linsegr(CSOUND *csound, LINSEG *p)
if (LIKELY(p->segsrem)) { /* if no more segs putk */
SEG *segp;
if (p->h.insdshead->relesing && p->segsrem > 1) {
- while (p->segsrem > 1) { /* reles flag new: */
+ while (p->segsrem > 1) { /* release flag new: */
segp = ++p->cursegp; /* go to last segment */
p->segsrem--;
} /* get univ relestim */
@@ -1295,7 +1296,7 @@ int evrset(CSOUND *csound, ENVLPR *p)
else {
p->phs = -1;
p->val = *(ftp->ftable + ftp->flen)-asym;
- /* irise = FL(0.0); /* in case irise < 0 */
+ /* irise = FL(0.0); */ /* in case irise < 0 */
}
if (UNLIKELY(!(*(ftp->ftable + ftp->flen)))) {
return csound->InitError(csound, Str("rise func ends with zero"));
diff --git a/OOps/ugens2.c b/OOps/ugens2.c
index f35777f..bebdd83 100644
--- a/OOps/ugens2.c
+++ b/OOps/ugens2.c
@@ -159,7 +159,7 @@ int phsor(CSOUND *csound, PHSOR *p)
phase += incr;
if (UNLIKELY((MYFLT)phase >= 1.0)){
phase -= 1.0;
- }
+ }
else if (UNLIKELY((MYFLT)phase < 0.0))
phase += 1.0;
}
diff --git a/OOps/ugens4.c b/OOps/ugens4.c
index b4d4b66..d3a7f05 100644
--- a/OOps/ugens4.c
+++ b/OOps/ugens4.c
@@ -110,7 +110,7 @@ int gbzset(CSOUND *csound, GBUZZ *p)
return NOTOK;
}
-inline MYFLT intpow1(MYFLT x, int32 n) /* Binary positive power function */
+static inline MYFLT intpow1(MYFLT x, int32 n) /* Binary positive power function */
{
MYFLT ans = FL(1.0);
while (n!=0) {
diff --git a/Opcodes/CMakeLists.txt b/Opcodes/CMakeLists.txt
index 656a636..95865f2 100644
--- a/Opcodes/CMakeLists.txt
+++ b/Opcodes/CMakeLists.txt
@@ -1,96 +1,13 @@
## OPCODE LIBS WITH NO EXTERNAL DEPENDENCIES ##
-set(stdopcod_SRCS
- ambicode.c bbcut.c biquad.c
- butter.c clfilt.c cross2.c
- dam.c dcblockr.c filter.c
- flanger.c follow.c fout.c
- freeverb.c ftconv.c ftgen.c
- gab/gab.c gab/vectorial.c grain.c
- locsig.c lowpassr.c metro.c
- midiops2.c midiops3.c newfils.c
- nlfilt.c oscbnk.c pluck.c
- repluck.c reverbsc.c seqtime.c
- sndloop.c sndwarp.c space.c
- spat3d.c syncgrain.c ugens7.c
- ugens9.c ugensa.c uggab.c
- ugmoss.c ugnorman.c ugsc.c
- wave-terrain.c stdopcod.c)
-
-make_plugin(stdopcod "${stdopcod_SRCS}" ${LIBSNDFILE_LIBRARY} m)
-if(HAVE_VALUES_H)
- set_target_properties(stdopcod PROPERTIES COMPILE_FLAGS "-DHAVE_VALUES_H")
-endif()
-
-make_plugin(modmatrix modmatrix.c)
-make_plugin(eqfil eqfil.c m)
-make_plugin(pvsbuffer pvsbuffer.c)
-make_plugin(scoreline scoreline.c)
make_plugin(mixer mixer.cpp)
make_plugin(signalflowgraph signalflowgraph.cpp)
-set(modal4_SRCS
- modal4.c physutil.c)
-make_plugin(modal4 "${modal4_SRCS}" m)
-
-set(physmod_SRCS
- physmod.c physutil.c
- mandolin.c singwave.c
- fm4op.c moog1.c shaker.c bowedbar.c)
-make_plugin(physmod "${physmod_SRCS}" m)
-
-
-set(pitch_SRCS
- pitch.c pitch0.c spectra.c)
-make_plugin(pitch "${pitch_SRCS}" m)
-
-
-make_plugin(barmodel bilbar.c m)
-make_plugin(compress compress.c m)
-make_plugin(grain4 grain4.c)
-make_plugin(loscilx loscilx.c m)
-make_plugin(minmax minmax.c)
-make_plugin(cs_pan2 pan2.c m)
-make_plugin(phisem phisem.c m)
-
-set(pvoc_SRCS
- dsputil.c pvadd.c pvinterp.c pvocext.c
- pvread.c ugens8.c vpvoc.c pvoc.c)
-make_plugin(pvoc "${pvoc_SRCS}" m)
-
-set(cs_pvs_ops_SRCS
- ifd.c partials.c psynth.c pvsbasic.c
- pvscent.c pvsdemix.c pvs_ops.c pvsband.c)
-make_plugin(cs_pvs_ops "${cs_pvs_ops_SRCS}" m)
-
-make_plugin(stackops stackops.c)
-make_plugin(vaops vaops.c)
-make_plugin(ugakbari ugakbari.c m)
-make_plugin(harmon harmon.c m)
make_plugin(ampmidid ampmidid.cpp)
make_plugin(cs_date date.c)
make_plugin(system_call system_call.c)
-make_plugin(ptrack pitchtrack.c m)
make_plugin(mutexops mutexops.cpp)
-make_plugin(partikkel partikkel.c m)
-make_plugin(shape shape.c m)
make_plugin(doppler doppler.cpp)
-make_plugin(tabsum tabsum.c)
-make_plugin(crossfm crossfm.c m)
-make_plugin(pvlock pvlock.c m)
-make_plugin(vosim Vosim.c)
-make_plugin(tabfns tabvars.c)
-
-set(gabnew_SRCS
- gab/tabmorph.c gab/hvs.c
- gab/sliderTable.c gab/newgabopc.c)
-make_plugin(gabnew "${gabnew_SRCS}" m)
-
-make_plugin(hrtfnew hrtfopcodes.c m)
-if(BIG_ENDIAN)
- set_target_properties(hrtfnew PROPERTIES
- COMPILE_DEFINITIONS "WORDS_BIGENDIAN")
-endif()
# temporarily do not build on Windows until these opcodes are fixed
# to compile
@@ -99,17 +16,6 @@ if(NOT WIN32)
make_plugin(udpsend socksend.c)
endif()
-
-make_plugin(ftest ftest.c m)
-make_plugin(ambicode1 ambicode1.c m)
-make_plugin(babo babo.c m)
-make_plugin(hrtferX hrtferX.c m)
-
-set(vbap_SRCS
- vbap.c vbap_eight.c vbap_four.c
- vbap_sixteen.c vbap_zak.c)
-make_plugin(vbap "${vbap_SRCS}" m)
-
set(scansyn_SRCS
scansyn.c scansynx.c)
make_plugin(scansyn "${scansyn_SRCS}" m)
@@ -118,10 +24,6 @@ if(UNIX)
make_plugin(control control.c)
endif()
-if(LINUX)
- make_plugin(cpumeter cpumeter.c)
-endif()
-
## OPCODES WITH EXTERNAL DEPENDENCIES ##
# OGG Opcode previously was built only for OLPC
@@ -132,18 +34,18 @@ endif()
-set(sfont_FLAGS "")
+#set(sfont_FLAGS "")
-if(CMAKE_C_COMPILER MATCHES "gcc")
- set(sfont_FLAGS ${sfont_FLAGS} -fno-strict-aliasing)
-endif()
-if(BIG_ENDIAN)
- set(sfont_FLAGS ${sfont_FLAGS} -DWORDS_BIGENDIAN)
-endif()
-message(STATUS "Compiler flags used for sfont lib: ${sfont_FLAGS}")
-make_plugin(sfont sfont.c m)
-set_target_properties(sfont
- PROPERTIES COMPILER_FLAGS "${sfont_FLAGS}")
+#if(CMAKE_C_COMPILER MATCHES "gcc")
+# set(sfont_FLAGS ${sfont_FLAGS} -fno-strict-aliasing)
+#endif()
+#if(BIG_ENDIAN)
+# set(sfont_FLAGS ${sfont_FLAGS} -DWORDS_BIGENDIAN)
+#endif()
+#message(STATUS "Compiler flags used for sfont lib: ${sfont_FLAGS}")
+#make_plugin(sfont sfont.c m)
+#set_target_properties(sfont
+# PROPERTIES COMPILER_FLAGS "${sfont_FLAGS}")
@@ -156,3 +58,5 @@ set_target_properties(sfont
#if p5gfound==1:
# P5GEnvironment = pluginEnvironment.Clone()
# makePlugin(P5GEnvironment, 'p5g', ['p5glove.c'])
+
+add_subdirectory(stk)
diff --git a/Opcodes/Loris/lorisgens5.C b/Opcodes/Loris/lorisgens5.C
index 1fd5f1e..ee25247 100644
--- a/Opcodes/Loris/lorisgens5.C
+++ b/Opcodes/Loris/lorisgens5.C
@@ -687,7 +687,7 @@ struct LorisPlayer
// ---------------------------------------------------------------------------
//
LorisPlayer::LorisPlayer( CSOUND *csound, LORISPLAY * params ) :
- reader( EnvelopeReader::Find( params->h.insdshead, (int)*(params->readerIdx) ) ),
+ reader( EnvelopeReader::Find( params->h.insdshead, (int)*(params->readerIdx))),
dblbuffer( csound->ksmps, 0.0 )
{
if ( reader != NULL ) {
@@ -881,8 +881,10 @@ public:
//
LorisMorpher::LorisMorpher( LORISMORPH * params ) :
morpher( GetFreqFunc( params ), GetAmpFunc( params ), GetBwFunc( params ) ),
- src_reader( EnvelopeReader::Find( params->h.insdshead, (int)*(params->srcidx) ) ),
- tgt_reader( EnvelopeReader::Find( params->h.insdshead, (int)*(params->tgtidx) ) ),
+ src_reader( EnvelopeReader::Find( params->h.insdshead,
+ (int)*(params->srcidx) ) ),
+ tgt_reader( EnvelopeReader::Find( params->h.insdshead,
+ (int)*(params->tgtidx) ) ),
tag( params->h.insdshead, (int)*(params->morphedidx) )
{
if ( src_reader != NULL )
@@ -947,7 +949,8 @@ LorisMorpher::LorisMorpher( LORISMORPH * params ) :
#ifdef DEBUG_LORISGENS
std::cerr << "** Morph will use " << labelMap.size() << " labeled Partials, ";
std::cerr << src_unlabeled.size() << " unlabeled source Partials, and ";
- std::cerr << tgt_unlabeled.size() << " unlabeled target Partials." << std::endl;
+ std::cerr << tgt_unlabeled.size() << " unlabeled target Partials."
+ << std::endl;
#endif
// allocate and set the labels for the morphed envelopes:
@@ -1008,7 +1011,8 @@ LorisMorpher::updateEnvelopes( void )
if ( itgt < 0 && isrc < 0 )
{
#ifdef DEBUG_LORISGENS
- std::cerr << "HEY!!!! The labelMap had a pair of bogus indices in it at pos "
+ std::cerr <<
+ "HEY!!!! The labelMap had a pair of bogus indices in it at pos "
<< envidx << std::endl;
#endif
continue;
@@ -1128,7 +1132,7 @@ int lorismorph_cleanup(CSOUND *csound, void * p)
//
extern "C"
{
- static OENTRY localops[] =
+ OENTRY loris_localops[] =
{
{(char*)"lorisread", sizeof(LORISREAD), 3, (char*)"", (char*)"kTikkko",
(SUBR) lorisread_setup, (SUBR) lorisread, 0 },
@@ -1138,7 +1142,7 @@ extern "C"
(SUBR) lorismorph_setup, (SUBR) lorismorph, 0 }
};
-LINKAGE
+ LINKAGE1(loris_localops)
}
diff --git a/Opcodes/LuaCsound.cpp b/Opcodes/LuaCsound.cpp
index e0add5a..7210211 100644
--- a/Opcodes/LuaCsound.cpp
+++ b/Opcodes/LuaCsound.cpp
@@ -541,7 +541,10 @@ extern "C"
sizeof(cslua_exec),
1,
(char*)"",
- (char*)"TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN",
+ (char*)"TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"
+ "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"
+ "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"
+ "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN",
(SUBR) cslua_exec::init_,
(SUBR) 0,
(SUBR) 0,
@@ -551,7 +554,10 @@ extern "C"
sizeof(cslua_opcall),
1,
(char*)"",
- (char*)"TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN",
+ (char*)"TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"
+ "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"
+ "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"
+ "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN",
(SUBR) cslua_opcall::init_,
(SUBR) 0,
(SUBR) 0,
@@ -561,7 +567,10 @@ extern "C"
sizeof(cslua_opcall),
3,
(char*)"",
- (char*)"TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN",
+ (char*)"TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"
+ "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"
+ "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"
+ "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN",
(SUBR) cslua_opcall::init_,
(SUBR) cslua_opcall::kontrol_,
(SUBR) 0,
@@ -571,7 +580,10 @@ extern "C"
sizeof(cslua_opcall),
5,
(char*)"",
- (char*)"TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN",
+ (char*)"TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"
+ "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"
+ "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"
+ "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN",
(SUBR) cslua_opcall::init_,
(SUBR) 0,
(SUBR) cslua_opcall::audio_,
@@ -581,7 +593,10 @@ extern "C"
sizeof(cslua_opcall_off),
1,
(char*)"",
- (char*)"TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN",
+ (char*)"TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"
+ "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"
+ "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"
+ "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN",
(SUBR) cslua_opcall_off::init_,
(SUBR) 0,
(SUBR) 0,
@@ -591,7 +606,10 @@ extern "C"
sizeof(cslua_opcall_off),
3,
(char*)"",
- (char*)"TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN",
+ (char*)"TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"
+ "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"
+ "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"
+ "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN",
(SUBR) cslua_opcall_off::init_,
(SUBR) cslua_opcall_off::kontrol_,
(SUBR) 0,
@@ -601,7 +619,10 @@ extern "C"
sizeof(cslua_opcall_off),
5,
(char*)"",
- (char*)"TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN",
+ (char*)"TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"
+ "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"
+ "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"
+ "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN",
(SUBR) cslua_opcall_off::init_,
(SUBR) 0,
(SUBR) cslua_opcall_off::audio_,
diff --git a/Opcodes/Vosim.c b/Opcodes/Vosim.c
index fb623e9..ea1c092 100644
--- a/Opcodes/Vosim.c
+++ b/Opcodes/Vosim.c
@@ -19,7 +19,9 @@
* a new pulse should start, and that pulseinc can be negative.
*/
-#include "csdl.h"
+//#include "csdl.h"
+#include "csoundCore.h"
+#include "interlocks.h"
#include <math.h>
#include <limits.h>
@@ -164,9 +166,9 @@ int vosim(CSOUND* csound, VOSIM *p)
#define S(x) sizeof(x)
-static OENTRY localops[] = {
- { "vosim", S(VOSIM), 5, "a", "kkkkkkio", (SUBR)vosimset, NULL, (SUBR)vosim }
+static OENTRY vosim_localops[] = {
+ { "vosim", S(VOSIM), TR|5, "a", "kkkkkkio", (SUBR)vosimset, NULL, (SUBR)vosim }
};
-LINKAGE
+LINKAGE1(vosim_localops)
diff --git a/Opcodes/ambicode.c b/Opcodes/ambicode.c
index 449016d..709a8d3 100644
--- a/Opcodes/ambicode.c
+++ b/Opcodes/ambicode.c
@@ -714,9 +714,9 @@ static int aambideco(CSOUND *csound, AMBID *p)
#define S(x) sizeof(x)
static OENTRY localops[] = {
- { "bformenc", S(AMBIC), 5, "mmmmmmmmmmmmmmmm", "akkPPPP",
+ { "bformenc", S(AMBIC), DP|5, "mmmmmmmmmmmmmmmm", "akkPPPP",
(SUBR)iambicode, NULL, (SUBR)aambicode },
- { "bformdec", S(AMBID), 5, "mmmmmmmm", "iaaay",
+ { "bformdec", S(AMBID), DP|5, "mmmmmmmm", "iaaay",
(SUBR)iambideco, NULL, (SUBR)aambideco }
};
diff --git a/Opcodes/ambicode1.c b/Opcodes/ambicode1.c
index 3d2411e..6efed2a 100644
--- a/Opcodes/ambicode1.c
+++ b/Opcodes/ambicode1.c
@@ -28,7 +28,9 @@
02111-1307 USA
*/
-#include "csdl.h"
+// #include "csdl.h"
+#include "csoundCore.h"
+#include "interlocks.h"
#include <assert.h>
#include <math.h>
@@ -467,12 +469,12 @@ abformdec(CSOUND * csound, AMBID * p) {
#define S(x) sizeof(x)
-static OENTRY localops[] = {
+static OENTRY ambicode1_localops[] = {
{ "bformenc1", S(AMBIC), 5, "mmmmmmmmmmmmmmmm", "akk",
(SUBR)ibformenc, NULL, (SUBR)abformenc },
{ "bformdec1", S(AMBID), 5, "mmmmmmmm", "iy",
- (SUBR)ibformdec, NULL, (SUBR)abformdec }
+ (SUBR)ibformdec, NULL, (SUBR)abformdec },
};
-LINKAGE
+LINKAGE1(ambicode1_localops)
diff --git a/Opcodes/babo.c b/Opcodes/babo.c
index 91220ef..b6e3c54 100644
--- a/Opcodes/babo.c
+++ b/Opcodes/babo.c
@@ -123,9 +123,11 @@ input | |------>|
Move static fn declarations out of function
*/
-#include "csdl.h"
+//#include "csdl.h"
+#include "csoundCore.h"
#include "babo.h"
#include <math.h>
+#include "interlocks.h"
#if !defined(FLT_MAX)
#define FLT_MAX (1.0e38)
@@ -818,9 +820,9 @@ babo(CSOUND *csound, void *entry)
#define S(x) sizeof(x)
-static OENTRY localops[] = {
-{ "babo", S(BABO), 5, "aa", "akkkiiijj",(SUBR)baboset, NULL, (SUBR)babo }
+static OENTRY babo_localops[] = {
+ { "babo", S(BABO), TR|5, "aa", "akkkiiijj",(SUBR)baboset, NULL, (SUBR)babo },
};
-LINKAGE
+LINKAGE1(babo_localops)
diff --git a/Opcodes/babo.h b/Opcodes/babo.h
index 345c5dc..850340f 100644
--- a/Opcodes/babo.h
+++ b/Opcodes/babo.h
@@ -38,8 +38,6 @@
#if !defined(__babo_h__)
# define __babo_h__
-#include "csdl.h"
-
#define BABO_NODES (15) /* Number of nodes of feedback delay network */
#define BABO_TAPS (6) /* Number of taps in the early reflections line */
diff --git a/Opcodes/bilbar.c b/Opcodes/bilbar.c
index 00ae89f..9e9f25a 100644
--- a/Opcodes/bilbar.c
+++ b/Opcodes/bilbar.c
@@ -21,7 +21,8 @@
02111-1307 USA
*/
-#include "csdl.h"
+//#include "csdl.h"
+#include "csoundCore.h"
#include <math.h>
/* %% bar sound synthesis translated from Mathlab and much changed */
@@ -547,12 +548,12 @@ int play_pp(CSOUND *csound, CSPP *p)
#define S(x) sizeof(x)
-static OENTRY localops[] = {
+static OENTRY bilbar_localops[] = {
{"barmodel", S(BAR), 5, "a", "kkiikiiii", (SUBR) bar_init, NULL,
(SUBR) bar_run},
{ "prepiano", S(CSPP), 5, "mm", "iiiiiikkiiiiiiioo",
- (SUBR)init_pp, NULL, (SUBR)play_pp }
+ (SUBR)init_pp, NULL, (SUBR)play_pp },
};
-LINKAGE
+LINKAGE1(bilbar_localops)
diff --git a/Opcodes/biquad.c b/Opcodes/biquad.c
index db25233..99d0b82 100644
--- a/Opcodes/biquad.c
+++ b/Opcodes/biquad.c
@@ -1296,8 +1296,8 @@ static OENTRY localops[] = {
{ "moogvcf2", S(MOOGVCF),5, "a", "axxoo", (SUBR)moogvcfset, NULL, (SUBR)moogvcf },
{ "rezzy", S(REZZY), 5, "a", "axxoo", (SUBR)rezzyset, NULL, (SUBR)rezzy },
{ "bqrez", S(REZZY), 5, "a", "axxoo", (SUBR)bqrezset, NULL, (SUBR)bqrez },
-{ "distort1", S(DISTORT),4, "a", "akkkko", NULL, NULL, (SUBR)distort },
-{ "vco", S(VCO), 5, "a", "xxiVppovoo",(SUBR)vcoset, NULL, (SUBR)vco },
+{ "distort1", S(DISTORT),TR|4, "a", "akkkko", NULL, NULL, (SUBR)distort },
+{ "vco", S(VCO), TR|5, "a", "xxiVppovoo",(SUBR)vcoset, NULL, (SUBR)vco },
{ "tbvcf", S(TBVCF), 5, "a", "axxkkp", (SUBR)tbvcfset, NULL, (SUBR)tbvcf },
{ "planet", S(PLANET),5,"aaa","kkkiiiiiiioo", (SUBR)planetset, NULL, (SUBR)planet},
{ "pareq", S(PAREQ), 5, "a", "akkkoo",(SUBR)pareqset, NULL, (SUBR)pareq },
diff --git a/Opcodes/bowedbar.c b/Opcodes/bowedbar.c
index e7acb39..73e9d39 100644
--- a/Opcodes/bowedbar.c
+++ b/Opcodes/bowedbar.c
@@ -29,8 +29,8 @@
/* Towards Physical Modelling of Bar */
/* Percussion Instruments", ICMC'99 */
/*********************************************/
-
-#include "csdl.h"
+// #include "csdl.h"
+#include "csoundCore.h"
#include "bowedbar.h"
/* Number of banded waveguide modes */
@@ -95,7 +95,7 @@ int bowedbarset(CSOUND *csound, BOWEDBAR *p)
p->length = (int32) (csound->esr / *p->frequency + FL(1.0));
else {
csound->Warning(csound,
- Str("unknown lowest frequency for bowed string -- "
+ Str("unknown lowest frequency for bowed bar -- "
"assuming 50Hz\n"));
p->length = (int32) (csound->esr / FL(50.0) + FL(1.0));
}
diff --git a/Opcodes/brass.h b/Opcodes/brass.h
index 7636d73..8acad7c 100644
--- a/Opcodes/brass.h
+++ b/Opcodes/brass.h
@@ -40,7 +40,7 @@
#define __brass_h
#include "physutil.h"
-#include "csdl.h"
+
#include <math.h>
/*******************************************/
diff --git a/Opcodes/chua/ChuaOscillator.cpp b/Opcodes/chua/ChuaOscillator.cpp
index fb845ca..e8a681c 100644
--- a/Opcodes/chua/ChuaOscillator.cpp
+++ b/Opcodes/chua/ChuaOscillator.cpp
@@ -87,18 +87,22 @@
// k1(2) = (G*(M(1) - M(2)) + M(3))/C2;
// k1(3) = (-(M(2) + R0*M(3)))/L;
// % Round Two
-// k2(1) = (G*(M(2) + h2*k1(2) - (M(1) + h2*k1(1))) - gnor(M(1) + h2*k1(1),sys_variables))/C1;
+// k2(1) = (G*(M(2) + h2*k1(2) - (M(1) + h2*k1(1))) - gnor(M(1) +
+// h2*k1(1),sys_variables))/C1;
// k2(2) = (G*(M(1) + h2*k1(1) - (M(2) + h2*k1(2))) + M(3) + h2*k1(3))/C2;
// k2(3) = (-(M(2) + h2*k1(2) + R0*(M(3) + h2*k1(3))))/L;
// % Round Three
-// k3(1) = (G*(M(2) + h2*k2(2) - (M(1) + h2*k2(1))) - gnor(M(1) + h2*k2(1),sys_variables))/C1;
+// k3(1) = (G*(M(2) + h2*k2(2) - (M(1) + h2*k2(1))) - gnor(M(1) +
+// h2*k2(1),sys_variables))/C1;
// k3(2) = (G*(M(1) + h2*k2(1) - (M(2) + h2*k2(2))) + M(3) + h2*k2(3))/C2;
// k3(3) = (-(M(2) + h2*k2(2) + R0*(M(3) + h2*k2(3))))/L;
// % Round Four
-// k4(1) = (G*(M(2) + h*k3(2) - (M(1) + h*k3(1))) - gnor(M(1) + h*k3(1),sys_variables))/C1;
+// k4(1) = (G*(M(2) + h*k3(2) - (M(1) + h*k3(1))) - gnor(M(1) +
+// h*k3(1),sys_variables))/C1;
// k4(2) = (G*(M(1) + h*k3(1) - (M(2) + h*k3(2))) + M(3) + h*k3(3))/C2;
// k4(3) = (-(M(2) + h*k3(2) + R0*(M(3) + h*k3(3))))/L;
-// M = M + (k1 + 2*k2 + 2*k3 + k4)*(h6); %Finishes integration and assigns values to M(1),
+// %Finishes integration and assigns values to M(1),
+// M = M + (k1 + 2*k2 + 2*k3 + k4)*(h6);
// %M(2) and M(3)
// TimeSeries(3,i+1) = M(1); %TimeSeries 3 is V1
// TimeSeries(2,i+1) = M(2); %TimeSeries 2 is V2
@@ -126,9 +130,12 @@ public:
MYFLT *V2;
MYFLT *V1;
// INPUTS
- // sys_variables = [system_vars(5:12),system_vars(23:26)]; % L,R0,C2,G,Ga,Gb,E,C1,a,b,c,d
- // integ_variables = [system_vars(14:16),system_vars(1:2)]; % x0,y0,z0,dataset_size,step_size
- // function TimeSeries = chuacc(L,R0,C2,G,Ga,Gb,C1,E,x0,y0,z0,dataset_size,step_size)
+ // % L,R0,C2,G,Ga,Gb,E,C1,a,b,c,d
+ // sys_variables = [system_vars(5:12),system_vars(23:26)];
+ // % x0,y0,z0,dataset_size,step_size
+ // integ_variables = [system_vars(14:16),system_vars(1:2)];
+ // function TimeSeries = chuacc(L,R0,C2,G,Ga,Gb,C1,E,x0,y0,z0,
+ // dataset_size,step_size)
// Circuit elements.
MYFLT *L_;
MYFLT *R0_;
@@ -200,8 +207,11 @@ public:
c = -0.00121;
d = 0.0;
ksmps = csound->GetKsmps(csound);
- warn(csound, "ChuasOscillatorCubic::init: L: %f R0: %f C2: %f G: %f C1: %f V1: %f V2: %f I3: %f step: %f\n", *L_, *R0_, *C2_, *G_, *C1_, M(1), M(2), M(3), h);
- warn(csound, "ChuasOscillatorCubic::init: a: %f b: %f c: %f d: %f\n", a, b, c, d);
+ warn(csound, "ChuasOscillatorCubic::init: L: %f R0: %f C2: %f G: %f"
+ " C1: %f V1: %f V2: %f I3: %f step: %f\n",
+ *L_, *R0_, *C2_, *G_, *C1_, M(1), M(2), M(3), h);
+ warn(csound, "ChuasOscillatorCubic::init: a: %f b: %f c: %f d: %f\n",
+ a, b, c, d);
return OK;
}
int noteoff(CSOUND *csound)
@@ -327,22 +337,26 @@ public:
// for i=1:dataset_size
// % Runge Kutta
// % Round One
-// k1(1) = alpha*(M(2) - bnorplus1*M(1) - (.5)*(anor - bnor)*(abs(M(1) + 1) - abs(M(1) - 1)));
+// k1(1) = alpha*(M(2) - bnorplus1*M(1) - (.5)*(anor - bnor)*(abs(M(1) + 1)
+// - abs(M(1) - 1)));
// k1(2) = M(1) - M(2) + M(3);
// k1(3) = -beta*M(2) - gammaloc*M(3);
// % Round Two
// temp = M(1) + h2*k1(1);
-// k2(1) = alpha*(M(2) + h2*k1(2) - bnorplus1*temp - (.5)*(anor - bnor)*(abs(temp + 1) - abs(temp - 1)));
+// k2(1) = alpha*(M(2) + h2*k1(2) - bnorplus1*temp -
+// (.5)*(anor - bnor)*(abs(temp + 1) - abs(temp - 1)));
// k2(2) = k1(2) + h2*(k1(1) - k1(2) + k1(3));
// k2(3) = omch2*k1(3) - bh2*k1(2);
// % Round Three
// temp = M(1) + h2*k2(1);
-// k3(1) = alpha*(M(2) + h2*k2(2) - bnorplus1*temp - (.5)*(anor - bnor)*(abs(temp + 1) - abs(temp - 1)));
+// k3(1) = alpha*(M(2) + h2*k2(2) - bnorplus1*temp -
+// (.5)*(anor - bnor)*(abs(temp + 1) - abs(temp - 1)));
// k3(2) = k1(2) + h2*(k2(1) - k2(2) + k2(3));
// k3(3) = k1(3) - bh2*k2(2) - ch2*k2(3);
// % Round Four
// temp = M(1) + h*k3(1);
-// k4(1) = alpha*(M(2) + h*k3(2) - bnorplus1*temp - (.5)*(anor - bnor)*(abs(temp + 1) - abs(temp - 1)));
+// k4(1) = alpha*(M(2) + h*k3(2) - bnorplus1*temp -
+// (.5)*(anor - bnor)*(abs(temp + 1) - abs(temp - 1)));
// k4(2) = k1(2) + h*(k3(1) - k3(2) + k3(3));
// k4(3) = k1(3) - bh*k3(2) - ch*k3(3);
// M = M + (k1 + 2*k2 + 2*k3 + k4)*(h6);
@@ -361,8 +375,10 @@ public:
MYFLT *V1;
// INPUTS
// sys_variables = system_vars(5:12); % L,R0,C2,G,Ga,Gb,E,C1
- // integ_variables = [system_vars(14:16),system_vars(1:2)]; % x0,y0,z0,dataset_size,step_size
- // function TimeSeries = chuacc(L,R0,C2,G,Ga,Gb,C1,E,x0,y0,z0,dataset_size,step_size)
+ // % x0,y0,z0,dataset_size,step_size
+ // integ_variables = [system_vars(14:16),system_vars(1:2)];
+ // function TimeSeries = chuacc(L,R0,C2,G,Ga,Gb,C1,E,x0,y0,z0,
+ // dataset_size,step_size)
// Circuit elements.
MYFLT *L_;
MYFLT *R0_;
@@ -429,7 +445,11 @@ public:
// M(3) = TimeSeries(1)/(E*G);
M(3) = *I3_ / (*E_ * *G_);
ksmps = csound->GetKsmps(csound);
- warn(csound, "ChuasOscillatorPiecewise::init: L: %f R0: %f C2: %f G: %f Ga: %f Gb: %f E: %f C1: %f M(1): %f M(2): %f M(3): %f step: %f\n", *L_, *R0_, *C2_, *G_, *Ga_, *Gb_, *E_, *C1_, M(1), M(2), M(3), step_size);
+ warn(csound, "ChuasOscillatorPiecewise::init: L: %f R0: %f C2: %f G: "
+ "%f Ga: %f Gb: %f E: %f C1: %f M(1): %f M(2):"
+ " %f M(3): %f step: %f\n",
+ *L_, *R0_, *C2_, *G_, *Ga_, *Gb_, *E_, *C1_,
+ M(1), M(2), M(3), step_size);
return OK;
}
int noteoff(CSOUND *csound)
@@ -460,7 +480,8 @@ public:
MYFLT &Gb = *Gb_;
MYFLT &E = *E_;
MYFLT &C1 = *C1_;
- // Recompute Runge-Kutta stuff every kperiod in case kontrol variables have changed.
+ // Recompute Runge-Kutta stuff every kperiod in case kontrol variables
+ // have changed.
step_size = *step_size_;
// h = step_size*G/C2;
h = step_size * G / C2;
@@ -493,22 +514,26 @@ public:
// Standard 4th-order Runge-Kutta integration.
for (size_t i = 0; i < ksmps; i++) {
// Stage 1.
- k1(1) = alpha*(M(2) - bnorplus1*M(1) - (.5)*(anor - bnor)*(abs(M(1) + 1) - abs(M(1) - 1)));
+ k1(1) = alpha*(M(2) - bnorplus1*M(1) -
+ (.5)*(anor - bnor)*(abs(M(1) + 1) - abs(M(1) - 1)));
k1(2) = M(1) - M(2) + M(3);
k1(3) = -beta*M(2) - gammaloc*M(3);
// Stage 2.
temp = M(1) + h2*k1(1);
- k2(1) = alpha*(M(2) + h2*k1(2) - bnorplus1*temp - (.5)*(anor - bnor)*(abs(temp + 1) - abs(temp - 1)));
+ k2(1) = alpha*(M(2) + h2*k1(2) - bnorplus1*temp -
+ (.5)*(anor - bnor)*(abs(temp + 1) - abs(temp - 1)));
k2(2) = k1(2) + h2*(k1(1) - k1(2) + k1(3));
k2(3) = omch2*k1(3) - bh2*k1(2);
// Stage 3.
temp = M(1) + h2*k2(1);
- k3(1) = alpha*(M(2) + h2*k2(2) - bnorplus1*temp - (.5)*(anor - bnor)*(abs(temp + 1) - abs(temp - 1)));
+ k3(1) = alpha*(M(2) + h2*k2(2) - bnorplus1*temp -
+ (.5)*(anor - bnor)*(abs(temp + 1) - abs(temp - 1)));
k3(2) = k1(2) + h2*(k2(1) - k2(2) + k2(3));
k3(3) = k1(3) - bh2*k2(2) - ch2*k2(3);
// Stage 4.
temp = M(1) + h*k3(1);
- k4(1) = alpha*(M(2) + h*k3(2) - bnorplus1*temp - (.5)*(anor - bnor)*(abs(temp + 1) - abs(temp - 1)));
+ k4(1) = alpha*(M(2) + h*k3(2) - bnorplus1*temp -
+ (.5)*(anor - bnor)*(abs(temp + 1) - abs(temp - 1)));
k4(2) = k1(2) + h*(k3(1) - k3(2) + k3(3));
k4(3) = k1(3) - bh*k3(2) - ch*k3(3);
M = M + (k1 + 2*k2 + 2*k3 + k4)*(h6);
@@ -532,8 +557,8 @@ extern "C"
// (char*)"chuac",
// sizeof(ChuasOscillatorCubic),
// 5,
-// // kL, kR0, kC2, kG, kC1, iI3, iV2, iV1, kstep_size
-// // 0.00945, 7.5, 2e-007, 0.00105, 1.5e-008, 0, -0.1, 0.1, 5e-6
+// // kL, kR0, kC2, kG, kC1, iI3, iV2, iV1, kstep_size
+// // 0.00945, 7.5, 2e-007, 0.00105, 1.5e-008, 0, -0.1, 0.1, 5e-6
// (char*)"aaa",
// (char*)"kkkkkiiik",
// (SUBR) ChuasOscillatorCubic::init_,
@@ -544,8 +569,10 @@ extern "C"
(char*)"chuap",
sizeof(ChuasOscillatorPiecewise),
5,
- // kL, kR0, kC2, kG, kGa, kGb, kE, kC1, iI3, iV2, iV1, kstep_size
- // 0.00945, 7.5, 2e-007, 0.00105, 0, -0.00121, 1.76e-005, 1.5e-008, 0, -0.1, 0.1, 5e-6
+ // kL, kR0, kC2, kG, kGa, kGb, kE, kC1,
+ // iI3, iV2, iV1, kstep_size
+ // 0.00945, 7.5, 2e-007, 0.00105, 0, -0.00121, 1.76e-005, 1.5e-008,
+ // 0, -0.1, 0.1, 5e-6
(char*)"aaa",
(char*)"kkkkkkkkiiik",
(SUBR) ChuasOscillatorPiecewise::init_,
diff --git a/Opcodes/compress.c b/Opcodes/compress.c
index 5184a0c..8d29d0a 100644
--- a/Opcodes/compress.c
+++ b/Opcodes/compress.c
@@ -21,7 +21,9 @@
02111-1307 USA
*/
-#include "csdl.h"
+//#include "csdl.h"
+#include "csoundCore.h"
+#include "interlocks.h"
typedef struct {
OPDS h;
@@ -254,12 +256,12 @@ static int distort(CSOUND *csound, DIST *p)
#define S(x) sizeof(x)
-static OENTRY localops[] = {
+static OENTRY compress_localops[] = {
{ "compress", S(CMPRS), 5, "a", "aakkkkkki",
(SUBR) compset, NULL, (SUBR) compress },
- { "distort", S(DIST), 5, "a", "akiqo",
- (SUBR) distset, NULL, (SUBR) distort }
+ { "distort", S(DIST), TR|5, "a", "akiqo",
+ (SUBR) distset, NULL, (SUBR) distort },
};
-LINKAGE
+LINKAGE1(compress_localops)
diff --git a/Opcodes/control.c b/Opcodes/control.c
index 30cdd0a..9713387 100644
--- a/Opcodes/control.c
+++ b/Opcodes/control.c
@@ -285,13 +285,13 @@ static int textflash(CSOUND *csound, TXTWIN *p)
#define S(x) sizeof(x)
-static OENTRY localops[] = {
+static OENTRY control_localops[] = {
{ "control", S(CNTRL), 3, "k", "k", (SUBR) cntrl_set, (SUBR) control, NULL },
{ "setctrl", S(SCNTRL), 1, "", "iTi", (SUBR) ocontrol, NULL, NULL },
{ "button", S(CNTRL), 3, "k", "k", (SUBR) button_set, (SUBR) button, NULL },
{ "checkbox", S(CNTRL), 3, "k", "k", (SUBR) check_set, (SUBR) check, NULL },
-{ "flashtxt", S(TXTWIN), 1, "", "iT", (SUBR) textflash, NULL, NULL }
+{ "flashtxt", S(TXTWIN), 1, "", "iT", (SUBR) textflash, NULL, NULL },
};
-LINKAGE
+LINKAGE1(control_localops)
diff --git a/Opcodes/cpumeter.c b/Opcodes/cpumeter.c
index 474d410..38e8911 100644
--- a/Opcodes/cpumeter.c
+++ b/Opcodes/cpumeter.c
@@ -15,7 +15,10 @@
* GNU Library General Public License for more details.
*
*/
-#include "csdl.h"
+
+#if defined(__MACH__) || defined(LINUX)
+
+#include "csoundCore.h"
#include <sys/resource.h>
#include <sys/time.h>
#include <sys/types.h>
@@ -28,7 +31,8 @@
#include <string.h>
#include <unistd.h>
-#include <values.h>
+#include <limits.h>
+#include <float.h>
/*###### Miscellaneous global stuff ####################################*/
#define SMLBUFSIZ (512)
@@ -199,9 +203,11 @@ static int cpupercent(CSOUND *csound, CPUMETER* p)
#define S(x) sizeof(x)
-static OENTRY localops[] = {
+static OENTRY cpumeter_localops[] = {
{ "cpumeter", S(CPUMETER), 5, "kzzzzzzzz", "i",
- (SUBR)cpupercent_init, (SUBR)cpupercent, NULL }
+ (SUBR)cpupercent_init, (SUBR)cpupercent, NULL },
};
-LINKAGE
+LINKAGE1(cpumeter_localops)
+
+#endif
diff --git a/Opcodes/cross2.c b/Opcodes/cross2.c
index 05ffa4e..caa471a 100644
--- a/Opcodes/cross2.c
+++ b/Opcodes/cross2.c
@@ -24,6 +24,7 @@
#include "stdopcod.h"
#include "ptrigtbl.h"
#include "fhtfun.h"
+#include "interlocks.h"
#include <math.h>
#define CH_THRESH 1.19209e-7
@@ -429,7 +430,7 @@ static int Xsynth(CSOUND *csound, CON *p)
#define S(x) sizeof(x)
static OENTRY localops[] = {
-{ "cross2", S(CON), 5, "a", "aaiiik",(SUBR)Xsynthset, NULL, (SUBR)Xsynth}
+{ "cross2", S(CON), TR|5, "a", "aaiiik",(SUBR)Xsynthset, NULL, (SUBR)Xsynth}
};
int cross2_init_(CSOUND *csound)
diff --git a/Opcodes/crossfm.c b/Opcodes/crossfm.c
index 6537379..ba4ed7e 100644
--- a/Opcodes/crossfm.c
+++ b/Opcodes/crossfm.c
@@ -21,7 +21,8 @@
02111-1307 USA
*/
-#include "csdl.h"
+#include "csoundCore.h"
+#include "interlocks.h"
#include "crossfm.h"
#include <math.h>
@@ -422,14 +423,15 @@ int xfmpmi(CSOUND *csound, CROSSFM *p)
#define S sizeof
-static OENTRY localops[] = {
- { "crossfm", S(CROSSFM), 5, "aa", "xxxxkiioo", (SUBR)xfmset, NULL, (SUBR)xfm },
- { "crossfmi", S(CROSSFM), 5, "aa", "xxxxkiioo", (SUBR)xfmset, NULL, (SUBR)xfmi },
- { "crosspm", S(CROSSFM), 5, "aa", "xxxxkiioo", (SUBR)xfmset, NULL, (SUBR)xpm },
- { "crosspmi", S(CROSSFM), 5, "aa", "xxxxkiioo", (SUBR)xfmset, NULL, (SUBR)xpmi },
- { "crossfmpm", S(CROSSFM), 5, "aa", "xxxxkiioo", (SUBR)xfmset, NULL, (SUBR)xfmpm },
- { "crossfmpmi", S(CROSSFM), 5, "aa", "xxxxkiioo", (SUBR)xfmset, NULL, (SUBR)xfmpmi }
+static OENTRY crossfm_localops[] = {
+ { "crossfm", S(CROSSFM), TR|5, "aa", "xxxxkiioo", (SUBR)xfmset, NULL, (SUBR)xfm },
+ { "crossfmi", S(CROSSFM), TR|5, "aa", "xxxxkiioo", (SUBR)xfmset, NULL, (SUBR)xfmi },
+ { "crosspm", S(CROSSFM), TR|5, "aa", "xxxxkiioo", (SUBR)xfmset, NULL, (SUBR)xpm },
+ { "crosspmi", S(CROSSFM), TR|5, "aa", "xxxxkiioo", (SUBR)xfmset, NULL, (SUBR)xpmi },
+ { "crossfmpm", S(CROSSFM), TR|5, "aa", "xxxxkiioo", (SUBR)xfmset, NULL, (SUBR)xfmpm },
+ { "crossfmpmi", S(CROSSFM),TR| 5, "aa", "xxxxkiioo", (SUBR)xfmset, NULL, (SUBR)xfmpmi },
};
-LINKAGE
+LINKAGE1(crossfm_localops)
+
diff --git a/Opcodes/date.c b/Opcodes/date.c
index 72802bf..b4756c5 100644
--- a/Opcodes/date.c
+++ b/Opcodes/date.c
@@ -40,7 +40,7 @@ static int datemyfltset(CSOUND *csound, DATEMYFLT *p)
#ifdef USE_DOUBLE
const time_t base = 0;
#else
- /* time_t base = 946684800; /* 1 Jan 2000 */
+ /* time_t base = 946684800; */ /* 1 Jan 2000 */
const time_t base = 1262304000; /* 1 Jan 2010 */
#endif
*p->time_ = (MYFLT) (time(NULL)-base);
@@ -73,11 +73,11 @@ static int datestringset(CSOUND *csound, DATESTRING *p)
return OK;
}
-static OENTRY localops[] =
+static OENTRY date_localops[] =
{
{ "date", sizeof(DATEMYFLT), 1, "i", "",(SUBR)datemyfltset, NULL, NULL },
{ "dates", sizeof(DATESTRING), 1, "S", "j",(SUBR)datestringset, NULL, NULL },
};
-LINKAGE
+LINKAGE1(date_localops)
diff --git a/Opcodes/doppler.cpp b/Opcodes/doppler.cpp
index c4cab1e..e8be39f 100644
--- a/Opcodes/doppler.cpp
+++ b/Opcodes/doppler.cpp
@@ -152,7 +152,7 @@ public:
std::vector<MYFLT> *sourceBuffer = new std::vector<MYFLT>;
sourceBuffer->resize(blockSize);
- for (size_t inputFrame = 0; inputFrame < blockSize; inputFrame++) {
+ for (size_t inputFrame = 0; inputFrame<(unsigned int)blockSize; inputFrame++) {
(*sourceBuffer)[inputFrame] = audioInput[inputFrame];
}
audioBufferQueue->push_back(sourceBuffer);
@@ -179,7 +179,9 @@ public:
log(csound, "Doppler::kontrol: kSourcePosition: %10.3f\n", *kSourcePosition);
}
- for (size_t outputFrame = 0; outputFrame < blockSize; outputFrame++) {
+ for (size_t outputFrame = 0;
+ outputFrame < (unsigned int)blockSize;
+ outputFrame++) {
MYFLT position = smoothingFilter->update(targetPosition);
MYFLT distance = std::fabs(position);
MYFLT sourceTime = relativeIndex - (distance * samplesPerDistance);
@@ -219,6 +221,14 @@ public:
delete sourcePositionQueue;
sourcePositionQueue = 0;
}
+ if (audioInterpolator) {
+ delete audioInterpolator;
+ audioInterpolator = 0;
+ }
+ if (smoothingFilter) {
+ delete smoothingFilter;
+ smoothingFilter = 0;
+ }
return result;
}
};
diff --git a/Opcodes/dsputil.c b/Opcodes/dsputil.c
index 168531f..acd5f4c 100644
--- a/Opcodes/dsputil.c
+++ b/Opcodes/dsputil.c
@@ -128,7 +128,7 @@ void FetchIn(
MYFLT pos) /* fractional frame we want */
{
int32 j;
- float *frm0, *frm1;
+ float *frm_0, *frm_1;
int32 base;
MYFLT frac;
@@ -136,21 +136,21 @@ void FetchIn(
base = (int32) pos; /* index of basis frame of interpolation */
frac = (MYFLT) pos - (MYFLT) base;
/* & how close to get to next */
- frm0 = inp + ((int32) fsize + 2L) * base;
- frm1 = frm0 + ((int32) fsize + 2L); /* addresses of both frames */
+ frm_0 = inp + ((int32) fsize + 2L) * base;
+ frm_1 = frm_0 + ((int32) fsize + 2L); /* addresses of both frames */
if (frac != FL(0.0)) { /* must have 2 cases to avoid poss seg vlns */
/* and failed computes, else may interp */
/* bd valid data */
for (j = 0; j <= fsize; j += 2) { /* mag/frq for just over 1/2 */
/* Interpolate both mag and freq */
- buf[j ] = frm0[j ] + frac * (frm1[j ] - frm0[j ]);
- buf[j + 1L] = frm0[j + 1L] + frac * (frm1[j + 1L] - frm0[j + 1L]);
+ buf[j ] = frm_0[j ] + frac * (frm_1[j ] - frm_0[j ]);
+ buf[j + 1L] = frm_0[j + 1L] + frac * (frm_1[j + 1L] - frm_0[j + 1L]);
}
}
else { /* frac is 0.0 i.e. just copy the source frame */
for (j = 0; j <= fsize; j += 2) { /* no need to interpolate */
- buf[j ] = frm0[j ];
- buf[j + 1L] = frm0[j + 1L];
+ buf[j ] = frm_0[j ];
+ buf[j + 1L] = frm_0[j + 1L];
}
}
}
diff --git a/Opcodes/dssi4cs/src/dssi4cs.c b/Opcodes/dssi4cs/src/dssi4cs.c
index 5c7c31d..68c7b7f 100644
--- a/Opcodes/dssi4cs/src/dssi4cs.c
+++ b/Opcodes/dssi4cs/src/dssi4cs.c
@@ -1042,7 +1042,7 @@ int dssilist(CSOUND * csound, DSSILIST * p)
return OK;
}
-static OENTRY localops[] = {
+static OENTRY dssi_localops[] = {
{"dssiinit", sizeof(DSSIINIT), 1, "i", "Tip", (SUBR) dssiinit, NULL, NULL }
,
{"dssiactivate", sizeof(DSSIACTIVATE), 3, "", "ik",
@@ -1068,5 +1068,5 @@ static OENTRY localops[] = {
#endif
};
-LINKAGE
+LINKAGE1(dssi_localops)
diff --git a/Opcodes/eqfil.c b/Opcodes/eqfil.c
index ed13910..13b3f11 100644
--- a/Opcodes/eqfil.c
+++ b/Opcodes/eqfil.c
@@ -21,7 +21,11 @@
02111-1307 USA
*/
-#include "csdl.h"
+// #include "csdl.h"
+#include "csoundCore.h"
+#ifdef PARCS
+#include "interlocks.h"
+#endif
typedef struct _equ {
OPDS h;
@@ -77,9 +81,9 @@ static int equ_process(CSOUND *csound, equ *p)
return OK;
}
-static OENTRY localops[] = {
+static OENTRY eqfil_localops[] = {
{"eqfil", sizeof(equ), 5,
- "a", "akkko", (SUBR)equ_init, NULL, (SUBR)equ_process}
+ "a", "akkko", (SUBR)equ_init, NULL, (SUBR)equ_process},
};
-LINKAGE
+LINKAGE1(eqfil_localops)
diff --git a/Opcodes/fareygen.c b/Opcodes/fareygen.c
index f459b9f..ed49223 100644
--- a/Opcodes/fareygen.c
+++ b/Opcodes/fareygen.c
@@ -269,6 +269,7 @@ static int PrimeFactors (int n, PFACTOR p[])
++j;
}
}
+ return j;
}
static void GenerateFarey (int n, RATIO flist[], int size) {
@@ -291,9 +292,10 @@ static void GenerateFarey (int n, RATIO flist[], int size) {
}
-static NGFENS localfgens[] = {
+static NGFENS farey_fgens[] = {
{ "farey", fareytable },
{ NULL, NULL }
};
-FLINKAGE
+FLINKAGE1(farey_fgens)
+
diff --git a/Opcodes/fareyseq.c b/Opcodes/fareyseq.c
index 94e7282..09189b4 100644
--- a/Opcodes/fareyseq.c
+++ b/Opcodes/fareyseq.c
@@ -26,7 +26,8 @@
by Robin Whittle, see source OOps/ugrw1.c
*/
-#include "csdl.h"
+#include "csoundCore.h"
+#include "interlocks.h"
#include <math.h>
const int MAX_PFACTOR = 16;
@@ -355,10 +356,7 @@ static int dotablefilter (CSOUND *csound, TABFILT *p)
MYFLT *pdest, *ps;
MYFLT threshold;
int32 ftype;
- MYFLT remember1st = FL(0.0);
MYFLT previous = FL(0.0);
- MYFLT oneminuslast = FL(0.0);
- MYFLT wraparoundioi = FL(0.0);
int32 sourcelength;
ftype = (int32) *p->ftype;
@@ -600,6 +598,7 @@ int PrimeFactors (int n, PFACTOR p[])
++pcount; ++j;
}
}
+ return j;
}
/* ----------------------------------------------- *
@@ -733,14 +732,14 @@ void float_to_cfrac (double r, int n, int a[], int p[], int q[])
#define S sizeof
-static OENTRY localops[] = {
- {"tablefilteri", S (TABFILT), 1, "i", "iiii", (SUBR) tableifilter, NULL, NULL},
- {"tablefilter", S (TABFILT), 2, "k", "kkkk",
+static OENTRY fareyseq_localops[] = {
+ {"tablefilteri", S (TABFILT),TB|1, "i", "iiii", (SUBR) tableifilter,NULL,NULL},
+ {"tablefilter", S (TABFILT), TB|2, "k", "kkkk",
(SUBR) tablefilterset, (SUBR) tablefilter, NULL},
- {"fareyleni", S (FAREYLEN), 1, "i", "i", (SUBR) fareylen, NULL, NULL},
- {"fareylen", S (FAREYLEN), 2, "k", "k", NULL, (SUBR) fareylen, NULL},
- {"tableshufflei", S (TABSHUFFLE), 1, "", "i", (SUBR) tableshuffle, NULL, NULL},
- {"tableshuffle", S (TABSHUFFLE), 2, "", "k", (SUBR) tableshuffleset, (SUBR) tableshuffle, NULL}
+ {"fareyleni", S (FAREYLEN), TR|1, "i", "i", (SUBR) fareylen, NULL, NULL},
+ {"fareylen", S (FAREYLEN), TR|2, "k", "k", NULL, (SUBR) fareylen, NULL},
+ {"tableshufflei", S (TABSHUFFLE), TB|1, "", "i", (SUBR) tableshuffle, NULL, NULL},
+ {"tableshuffle", S (TABSHUFFLE), TB|2, "", "k", (SUBR) tableshuffleset, (SUBR) tableshuffle, NULL},
};
-LINKAGE
+LINKAGE1(fareyseq_localops)
diff --git a/Opcodes/fm4op.c b/Opcodes/fm4op.c
index 891e404..417b077 100644
--- a/Opcodes/fm4op.c
+++ b/Opcodes/fm4op.c
@@ -33,8 +33,8 @@
/* should worry about this (making money) worry away. */
/* */
/*********************************************************/
-
-#include "csdl.h"
+// #include "csdl.h"
+#include "csoundCore.h"
#include "fm4op.h"
/***********************************************************/
diff --git a/Opcodes/fout.c b/Opcodes/fout.c
index b31f4c6..e65d2a8 100644
--- a/Opcodes/fout.c
+++ b/Opcodes/fout.c
@@ -54,6 +54,7 @@ static CS_NOINLINE int fout_deinit_callback(CSOUND *csound, void *p_)
pp->name = (char*) NULL;
pp->do_scale = 0;
pp->refCount = 0U;
+
if (pp->fd != NULL) {
if ((csound->oparms->msglevel & 7) == 7)
csound->Message(csound, Str("Closing file '%s'...\n"),
@@ -166,7 +167,7 @@ static CS_NOINLINE int fout_open_file(CSOUND *csound, FOUT_FILE *p, void *fp,
csound->Free(csound, name);
return -1;
}
- /* setvbuf(f, (char *) NULL, _IOLBF, 0); /* Ensure line buffering */
+ /* setvbuf(f, (char *) NULL, _IOLBF, 0); */ /* Ensure line buffering */
pp->file_opened[idx].raw = f;
pp->file_opened[idx].fd = fd;
}
@@ -451,7 +452,7 @@ static int ficlose_opcode(CSOUND *csound, FICLOSE *p)
}
else {
FOUT_FILE tmp;
- pp->file_opened[idx].refCount = 0x80000001U;
+ pp->file_opened[idx].refCount = 1; /*ref count was set to 0x80000001U, but it needs to be 1 */
memset(&tmp, 0, sizeof(FOUT_FILE));
tmp.h.insdshead = p->h.insdshead;
tmp.idx = idx + 1;
@@ -686,7 +687,7 @@ static int kinfile(CSOUND *csound, KINFILE *p)
if (p->flag) {
sf_seek(p->f.sf, p->currpos, SEEK_SET);
- p->currpos++;
+ p->currpos++;
#ifndef USE_DOUBLE
n = (int) sf_readf_float(p->f.sf, (float*) pp->buf, 1);
#else
diff --git a/Opcodes/ftconv.c b/Opcodes/ftconv.c
index c68cbca..e410060 100644
--- a/Opcodes/ftconv.c
+++ b/Opcodes/ftconv.c
@@ -294,7 +294,7 @@ static int ftconv_perf(CSOUND *csound, FTCONV *p)
int ftconv_init_(CSOUND *csound)
{
return csound->AppendOpcode(csound, "ftconv",
- (int) sizeof(FTCONV), 5, "mmmmmmmm", "aiiooo",
+ (int) sizeof(FTCONV), TR|5, "mmmmmmmm", "aiiooo",
(int (*)(CSOUND *, void *)) ftconv_init,
(int (*)(CSOUND *, void *)) NULL,
(int (*)(CSOUND *, void *)) ftconv_perf);
diff --git a/Opcodes/ftest.c b/Opcodes/ftest.c
index 07ee89a..79d936e 100644
--- a/Opcodes/ftest.c
+++ b/Opcodes/ftest.c
@@ -21,7 +21,8 @@
02111-1307 USA
*/
-#include "csdl.h"
+//#include "csdl.h"
+#include "csoundCore.h"
#include <math.h>
static int tanhtable(FGDATA *ff, FUNC *ftp)
@@ -83,12 +84,12 @@ static int sonetable(FGDATA *ff, FUNC *ftp)
}
-static NGFENS localfgens[] = {
+static NGFENS ftest_fgens[] = {
{ "tanh", tanhtable },
{ "exp", exptable },
{ "sone", sonetable },
{ NULL, NULL }
};
-FLINKAGE
+FLINKAGE1(ftest_fgens)
diff --git a/Opcodes/ftgen.c b/Opcodes/ftgen.c
index 55d74a9..21fa8cb 100644
--- a/Opcodes/ftgen.c
+++ b/Opcodes/ftgen.c
@@ -494,14 +494,14 @@ static int ftsave_k(CSOUND *csound, FTLOAD_K *p)
#define S(x) sizeof(x)
static OENTRY localops[] = {
- { "ftgen", S(FTGEN), 1, "i", "iiiTTm", (SUBR) ftgen, NULL, NULL },
- { "ftgentmp", S(FTGEN), 1, "i", "iiiiTm", (SUBR) ftgentmp, NULL, NULL },
- { "ftfree", S(FTFREE), 1, "", "ii", (SUBR) ftfree, NULL, NULL },
- { "ftsave", S(FTLOAD), 1, "", "Tim", (SUBR) ftsave, NULL, NULL },
- { "ftload", S(FTLOAD), 1, "", "Tim", (SUBR) ftload, NULL, NULL },
- { "ftsavek", S(FTLOAD_K), 3, "", "Tkim", (SUBR) ftsave_k_set,
+ { "ftgen", S(FTGEN), TW|1, "i", "iiiTTm", (SUBR) ftgen, NULL, NULL },
+ { "ftgentmp", S(FTGEN), TW|1, "i", "iiiiTm", (SUBR) ftgentmp, NULL, NULL },
+ { "ftfree", S(FTFREE), TW|1, "", "ii", (SUBR) ftfree, NULL, NULL },
+ { "ftsave", S(FTLOAD), TR|1, "", "Tim", (SUBR) ftsave, NULL, NULL },
+ { "ftload", S(FTLOAD), TR|1, "", "Tim", (SUBR) ftload, NULL, NULL },
+ { "ftsavek", S(FTLOAD_K), TW|3, "", "Tkim", (SUBR) ftsave_k_set,
(SUBR) ftsave_k, NULL },
- { "ftloadk", S(FTLOAD_K), 3, "", "Tkim", (SUBR) ftsave_k_set,
+ { "ftloadk", S(FTLOAD_K), TW|3, "", "Tkim", (SUBR) ftsave_k_set,
(SUBR) ftload_k, NULL }
};
diff --git a/Opcodes/gab/gab.c b/Opcodes/gab/gab.c
index bc3947a..da4be2b 100644
--- a/Opcodes/gab/gab.c
+++ b/Opcodes/gab/gab.c
@@ -19,7 +19,8 @@
/* This file includes the opcodes from newopcodes.c */
/* TODO: Check if the authors (Peter Neubaeker and Jens Groh) are correct */
-/*printi removed? I can't find the corresponding OENTRY- Left them commented out */
+/*printi removed? I can't find the corresponding OENTRY- */
+/*Left them commented out */
/*how should exitnow be safely implemented? */
/*Check the zak opcodes */
/*changed some comments to c-style */
@@ -29,6 +30,7 @@
#include "csdl.h"
#include "gab.h"
#include <math.h>
+#include "interlocks.h"
static int krsnsetx(CSOUND *csound, KRESONX *p)
/* Gabriel Maldonado, modifies for arb order */
@@ -187,7 +189,7 @@ static int fastabi(CSOUND *csound, FASTAB *p)
else
i = (int) *p->xndx;
if (UNLIKELY(i >= ftp->flen || i<0)) {
- return csound->PerfError(csound, Str("tab_i off end"));
+ return csound->PerfError(csound, Str("tab_i off end: table number: %d\n"), (int) *p->xfn);
}
*p->rslt = ftp->ftable[i];
return OK;
@@ -709,28 +711,28 @@ static int partial_maximum(CSOUND *csound,P_MAXIMUM *p)
MYFLT *a = p->asig;
MYFLT max = p->max;
switch(flag) {
- case 0: /* absolute maximum */
+ case 1: /* absolute maximum */
for (n=0; n<nsmps; n++) {
MYFLT temp;
if ((temp = FABS(a[n])) > max) max = temp;
}
if (max > p->max) p->max = max;
break;
- case 1: /* actual maximum */
+ case 2: /* actual maximum */
for (n=0; n<nsmps; n++) {
if (a[n] > max) max = a[n];
}
if (max > p->max) p->max = max;
break;
- case 2: /* actual minimum */
+ case 3: /* actual minimum */
for (n=0; n<nsmps; n++) {
if (a[n] < max) max = a[n];
}
if (max < p->max) p->max = max;
break;
- case 3: { /* average */
+ case 4: { /* average */
MYFLT temp = FL(0.0);
- p->counter += n;
+ p->counter += nsmps;
for (n=0; n<nsmps; n++) {
temp += a[n];
}
@@ -741,11 +743,12 @@ static int partial_maximum(CSOUND *csound,P_MAXIMUM *p)
return csound->PerfError(csound, Str("max_k: invalid imaxflag value"));
}
if (*p->ktrig) {
- if (flag == 3) {
+ if (flag == 4) {
*p->kout = p->max / (MYFLT) p->counter;
p->counter = 0;
}
- else *p->kout = p->max;
+ else
+ *p->kout = p->max;
p->max = FL(0.0);
}
return OK;
@@ -789,31 +792,31 @@ static int mandel(CSOUND *csound,MANDEL *p)
#define S(x) sizeof(x)
-static OENTRY localops[] = {
+OENTRY gab_localops[] = {
{"resonxk", S(KRESONX), 3, "k", "kkkooo",
(SUBR) krsnsetx, (SUBR) kresonx, NULL },
- { "tab_i",S(FASTAB), 1, "i", "iio", (SUBR) fastabi, NULL, NULL },
- { "tab",S(FASTAB), 7, "s", "xio",
+ { "tab_i",S(FASTAB), TR|1, "i", "iio", (SUBR) fastabi, NULL, NULL },
+ { "tab",S(FASTAB), TR|7, "s", "xio",
(SUBR) fastab_set, (SUBR)fastabk, (SUBR) fastab },
- { "tabw_i",S(FASTAB), 1, "", "iiio", (SUBR) fastabiw, NULL, NULL },
- { "tabw",S(FASTAB), 7, "", "xxio",
+ { "tabw_i",S(FASTAB), TW|1, "", "iiio", (SUBR) fastabiw, NULL, NULL },
+ { "tabw",S(FASTAB), TW|7, "", "xxio",
(SUBR)fastab_set, (SUBR)fastabkw, (SUBR)fastabw },
- { "tb0_init", S(TB_INIT), 1, "", "i", (SUBR)tab0_init},
- { "tb1_init", S(TB_INIT), 1, "", "i", (SUBR)tab1_init},
- { "tb2_init", S(TB_INIT), 1, "", "i", (SUBR)tab2_init},
- { "tb3_init", S(TB_INIT), 1, "", "i", (SUBR)tab3_init},
- { "tb4_init", S(TB_INIT), 1, "", "i", (SUBR)tab4_init},
- { "tb5_init", S(TB_INIT), 1, "", "i", (SUBR)tab5_init},
- { "tb6_init", S(TB_INIT), 1, "", "i", (SUBR)tab6_init},
- { "tb7_init", S(TB_INIT), 1, "", "i", (SUBR)tab7_init},
- { "tb8_init", S(TB_INIT), 1, "", "i", (SUBR)tab8_init},
- { "tb9_init", S(TB_INIT), 1, "", "i", (SUBR)tab9_init},
- { "tb10_init", S(TB_INIT), 1, "", "i", (SUBR)tab10_init},
- { "tb11_init", S(TB_INIT), 1, "", "i", (SUBR)tab11_init},
- { "tb12_init", S(TB_INIT), 1, "", "i", (SUBR)tab12_init},
- { "tb13_init", S(TB_INIT), 1, "", "i", (SUBR)tab13_init},
- { "tb14_init", S(TB_INIT), 1, "", "i", (SUBR)tab14_init},
- { "tb15_init", S(TB_INIT), 1, "", "i", (SUBR)tab15_init},
+ { "tb0_init", S(TB_INIT), TR|1, "", "i", (SUBR)tab0_init},
+ { "tb1_init", S(TB_INIT), TR|1, "", "i", (SUBR)tab1_init},
+ { "tb2_init", S(TB_INIT), TR|1, "", "i", (SUBR)tab2_init},
+ { "tb3_init", S(TB_INIT), TR|1, "", "i", (SUBR)tab3_init},
+ { "tb4_init", S(TB_INIT), TR|1, "", "i", (SUBR)tab4_init},
+ { "tb5_init", S(TB_INIT), TR|1, "", "i", (SUBR)tab5_init},
+ { "tb6_init", S(TB_INIT), TR|1, "", "i", (SUBR)tab6_init},
+ { "tb7_init", S(TB_INIT), TR|1, "", "i", (SUBR)tab7_init},
+ { "tb8_init", S(TB_INIT), TR|1, "", "i", (SUBR)tab8_init},
+ { "tb9_init", S(TB_INIT), TR|1, "", "i", (SUBR)tab9_init},
+ { "tb10_init", S(TB_INIT), TR|1, "", "i", (SUBR)tab10_init},
+ { "tb11_init", S(TB_INIT), TR|1, "", "i", (SUBR)tab11_init},
+ { "tb12_init", S(TB_INIT), TR|1, "", "i", (SUBR)tab12_init},
+ { "tb13_init", S(TB_INIT), TR|1, "", "i", (SUBR)tab13_init},
+ { "tb14_init", S(TB_INIT), TR|1, "", "i", (SUBR)tab14_init},
+ { "tb15_init", S(TB_INIT), TR|1, "", "i", (SUBR)tab15_init},
{ "tb0.k", S(FASTB), 2, "k", "k", NULL, (SUBR) tab0_k_tmp, NULL },
{ "tb1.k", S(FASTB), 2, "k", "k", NULL, (SUBR) tab1_k_tmp, NULL },
{ "tb2.k", S(FASTB), 2, "k", "k", NULL, (SUBR) tab2_k_tmp, NULL },
@@ -849,7 +852,7 @@ static OENTRY localops[] = {
{ "tb15.i", S(FASTB), 1, "i", "i", (SUBR) tab15_i_tmp },
{ "nlalp", S(NLALP), 5, "a", "akkoo",
(SUBR) nlalp_set, NULL, (SUBR) nlalp },
- { "adsynt2",S(ADSYNT2), 5, "a", "kkiiiio",
+ { "adsynt2",S(ADSYNT2),TR|5, "a", "kkiiiio",
(SUBR) adsynt2_set, NULL, (SUBR)adsynt2 },
{ "exitnow",S(EXITNOW), 1, "", "", (SUBR) exitnow, NULL, NULL },
/* { "zr_i", S(ZKR), 1, "i", "i", (SUBR)zread, NULL, NULL}, */
@@ -860,22 +863,22 @@ static OENTRY localops[] = {
/* { "a_k", S(INDIFF), 5, "a", "k", (SUBR)a_k_set,NULL, (SUBR)interp }, */
{ "tabrec", S(TABREC), 3, "", "kkkkz",
(SUBR) tabrec_set, (SUBR) tabrec_k, NULL },
- { "tabplay", S(TABPLAY), 3, "", "kkkz",
+ { "tabplay", S(TABPLAY), TR|3, "", "kkkz",
(SUBR) tabplay_set, (SUBR) tabplay_k, NULL },
{ "changed", S(ISCHANGED), 3, "k", "z",
(SUBR) isChanged_set, (SUBR)isChanged, NULL },
/*{ "ftlen_k",S(EVAL), 2, "k", "k", NULL, (SUBR)ftlen }, */
{ "max_k", S(P_MAXIMUM), 5, "k", "aki",
(SUBR) partial_maximum_set, (SUBR) NULL, (SUBR) partial_maximum },
- { "maxk", S(P_MAXIMUM), 5, "k", "aki",
- (SUBR) partial_maximum_set, (SUBR) NULL, (SUBR) partial_maximum },
+/*{ "maxk", S(P_MAXIMUM), 5, "k", "aki", */
+/* (SUBR) partial_maximum_set, (SUBR) NULL, (SUBR) partial_maximum }, */
{ "mandel",S(MANDEL), 3, "kk", "kkkk",
(SUBR) mandel_set, (SUBR) mandel, NULL }
};
int gab_gab_init_(CSOUND *csound)
{
- return csound->AppendOpcodes(csound, &(localops[0]),
- (int) (sizeof(localops) / sizeof(OENTRY)));
+ return csound->AppendOpcodes(csound, &(gab_localops[0]),
+ (int) (sizeof(gab_localops) / sizeof(OENTRY)));
}
diff --git a/Opcodes/gab/hvs.c b/Opcodes/gab/hvs.c
index 2f6f672..b9855a8 100644
--- a/Opcodes/gab/hvs.c
+++ b/Opcodes/gab/hvs.c
@@ -16,7 +16,9 @@
02111-1307 USA
*/
-#include "csdl.h"
+//#include "csdl.h"
+#include "csoundCore.h"
+#include "interlocks.h"
/* -------------------------------------------------------------------- */
@@ -68,7 +70,7 @@ static int hvs1_set(CSOUND *csound, HVS1 *p)
return csound->InitError(csound, Str("hvs1: a line segment must be "
"delimited by 2 points at least"));
- if(*p->iConfigTab == 0)
+ if (*p->iConfigTab == 0)
p->iconfFlag = 0;
else {
if ((ftp = csound->FTFind(csound, p->iConfigTab)) != NULL)
@@ -95,7 +97,7 @@ static int hvs1(CSOUND *csound, HVS1 *p)
int j;
if (p->iconfFlag) {
- for( j =0; j< noc; j++) {
+ for ( j =0; j< noc; j++) {
switch ((int) p->confTable[j]) {
case -1: // ignore parameter
break;
@@ -114,7 +116,7 @@ static int hvs1(CSOUND *csound, HVS1 *p)
}
}
else {
- for( j =0; j< noc; j++) {
+ for ( j =0; j< noc; j++) {
MYFLT val1 = p->snapTable[ndx1 * noc + j];
MYFLT val2 = p->snapTable[ndx2 * noc + j];
MYFLT valu = (1 - fracX) * val1 + fracX * val2;
@@ -150,7 +152,7 @@ static int hvs2_set(CSOUND *csound, HVS2 *p)
return csound->InitError(csound, Str("hvs2: a square area must be "
"delimited by 2 lines at least"));
- if(*p->iConfigTab == 0)
+ if (*p->iConfigTab == 0)
p->iconfFlag = 0;
else {
if ((ftp = csound->FTFind(csound, p->iConfigTab)) != NULL) {
@@ -183,7 +185,7 @@ static int hvs2(CSOUND *csound, HVS2 *p)
int j;
if (p->iconfFlag) {
- for( j =0; j< noc; j++) {
+ for ( j =0; j< noc; j++) {
switch ((int) p->confTable[j]) {
case -1: // ignore parameter
break;
@@ -205,7 +207,7 @@ static int hvs2(CSOUND *csound, HVS2 *p)
}
}
else {
- for( j =0; j< noc; j++) {
+ for ( j =0; j< noc; j++) {
MYFLT val1 = p->snapTable[ndx1 * noc + j];
MYFLT val2 = p->snapTable[ndx2 * noc + j];
MYFLT val3 = p->snapTable[ndx3 * noc + j];
@@ -247,7 +249,7 @@ static int hvs3_set(CSOUND *csound, HVS3 *p)
"delimited by 2 lines at least"));
- if(*p->iConfigTab == 0)
+ if (*p->iConfigTab == 0)
p->iconfFlag = 0;
else {
if ((ftp = csound->FTFind(csound, p->iConfigTab)) != NULL)
@@ -290,7 +292,7 @@ static int hvs3(CSOUND *csound, HVS3 *p)
int j;
if (p->iconfFlag) {
- for( j =0; j< noc; j++) {
+ for ( j =0; j< noc; j++) {
switch ((int) p->confTable[j]) {
case -1: // ignore parameter
break;
@@ -324,7 +326,7 @@ static int hvs3(CSOUND *csound, HVS3 *p)
}
}
else {
- for( j =0; j< noc; j++) {
+ for ( j =0; j< noc; j++) {
MYFLT val1 = p->snapTable[ndx1 * noc + j];
MYFLT val2 = p->snapTable[ndx2 * noc + j];
MYFLT val3 = p->snapTable[ndx3 * noc + j];
@@ -371,10 +373,9 @@ static int vphaseseg_set(CSOUND *csound, VPSEG *p)
{
TSEG2 *segp;
int nsegs,j;
- MYFLT **argp, *vector;
+ MYFLT **argp;
double dur, durtot = 0.0, prevphs;
FUNC *nxtfunc, *curfunc, *ftp;
- long flength;
nsegs = p->nsegs =((p->INCOUNT-3) >> 1); /* count segs & alloc if nec */
@@ -393,7 +394,8 @@ static int vphaseseg_set(CSOUND *csound, VPSEG *p)
p->elements = (int) *p->ielements;
}
if ( p->elements > ftp->flen )
- return csound->InitError(csound, Str("vphaseseg: invalid num. of elements"));
+ return csound->InitError(csound,
+ Str("vphaseseg: invalid num. of elements"));
/* vector = p->vector; */
/* flength = p->elements; */
@@ -480,16 +482,21 @@ static int vphaseseg(CSOUND *csound, VPSEG *p)
#define S(x) sizeof(x)
-static OENTRY localops[] = {
- { "hvs1", S(HVS1), 3, "", "kiiiiio", (SUBR)hvs1_set, (SUBR)hvs1, (SUBR)NULL },
- { "hvs2", S(HVS2), 3, "", "kkiiiiiio", (SUBR)hvs2_set, (SUBR)hvs2, (SUBR)NULL },
- { "hvs3", S(HVS3), 3, "", "kkkiiiiiiio", (SUBR)hvs3_set, (SUBR)hvs3, (SUBR)NULL },
- { "vphaseseg", S(VPSEG), 3, "", "kiim", (SUBR)vphaseseg_set, (SUBR)vphaseseg, (SUBR)NULL }
+OENTRY hvs_localops[] = {
+ { "hvs1", S(HVS1), TB|3, "", "kiiiiio",
+ (SUBR)hvs1_set, (SUBR)hvs1, (SUBR)NULL },
+ { "hvs2", S(HVS2), TB|3, "", "kkiiiiiio",
+ (SUBR)hvs2_set, (SUBR)hvs2, (SUBR)NULL },
+ { "hvs3", S(HVS3), TB|3, "", "kkkiiiiiiio",
+ (SUBR)hvs3_set, (SUBR)hvs3, (SUBR)NULL },
+ { "vphaseseg", S(VPSEG), TB|3, "", "kiim",
+ (SUBR)vphaseseg_set, (SUBR)vphaseseg }
};
int hvs_init_(CSOUND *csound)
{
- return csound->AppendOpcodes(csound, &(localops[0]),
- (int) (sizeof(localops) / sizeof(OENTRY)));
+ return csound->AppendOpcodes(csound, &(hvs_localops[0]),
+ (int) (sizeof(hvs_localops) / sizeof(OENTRY)));
}
+
diff --git a/Opcodes/gab/newgabopc.c b/Opcodes/gab/newgabopc.c
index 94d14da..3332132 100644
--- a/Opcodes/gab/newgabopc.c
+++ b/Opcodes/gab/newgabopc.c
@@ -16,7 +16,8 @@
02111-1307 USA
*/
-#include "csdl.h"
+#include "csoundCore.h"
+#include "interlocks.h"
/* (Shouldn't there be global decl's for these?) */
#define INCR (0.001f)
@@ -164,7 +165,8 @@ static int schedInTime_set(CSOUND *csound, SCHEDINTIME *p)
int *xtra;
int j;
OPARMS *O = csound->oparms;
- static MYFLT frac = 0; /* hugly hack, needs to be inserted in the CSOUND structure */
+ /* hugly hack, needs to be inserted in the CSOUND structure */
+ static MYFLT frac = 0;
O->RTevents = 1; /* Make sure kperf() looks for RT events */
/* O.ksensing = 1; */
@@ -236,24 +238,24 @@ static int copyTabElems_set(CSOUND *csound, COPYTABELEMS *p)
int nelems = (int) *p->inumElems;
if ((ftp = csound->FTFind(csound, p->idestTab)) == NULL)
return csound->InitError(csound,
- "copyTabElems: incorrect destination table number");
+ Str("copyTabElems: incorrect destination table number"));
p->dLen = ftp->flen;
if (nelems > p->dLen)
return csound->InitError(csound,
- "copyTabElems: destination table too short "
- "or number of elements to copy too big");
+ Str("copyTabElems: destination table too short "
+ "or number of elements to copy too big"));
p->dTable = ftp->ftable;
if ((ftp = csound->FTFind(csound, p->isourceTab)) == NULL)
return csound->InitError(csound,
- "copyTabElems: incorrect source table number");
+ Str("copyTabElems: incorrect source table number"));
p->sLen = ftp->flen;
if (nelems > p->sLen)
return csound->InitError(csound,
- "copyTabElems: source table size less than "
- "the number of elements to copy");
+ Str("copyTabElems: source table size less than "
+ "the number of elements to copy"));
p->sTable = ftp->ftable;
@@ -268,10 +270,10 @@ static int copyTabElems(CSOUND *csound, COPYTABELEMS *p)
int j, sNdx = (int) *p->ksourceIndex * nelems,
dNdx = (int) *p->kdestIndex * nelems;
if (sNdx + nelems > p->sLen)
- return csound->PerfError(csound, "copyTabElems: source table too short");
+ return csound->PerfError(csound, Str("copyTabElems: source table too short"));
if (dNdx + nelems > p->dLen)
return csound->PerfError(csound,
- "copyTabElems: destination table too short");
+ Str("copyTabElems: destination table too short"));
for (j = 0; j< nelems; j++)
p->dTable[dNdx+j] = p->sTable[sNdx+j];
@@ -291,31 +293,32 @@ static int copyTabElemsi(CSOUND *csound, COPYTABELEMS_I *p)
MYFLT *sTable, *dTable;
if ((ftp = csound->FTFind(csound, p->idestTab)) == NULL)
return csound->InitError(csound,
- "copyTabElems: incorrect destination table number");
+ Str("copyTabElems: incorrect destination "
+ "table number"));
dLen = ftp->flen;
if (nelems > dLen)
return csound->InitError(csound,
- "copyTabElems: destination table too short "
- "or number of elements to copy too big");
+ Str("copyTabElems: destination table too short "
+ "or number of elements to copy too big"));
dTable = ftp->ftable;
if ((ftp = csound->FTFind(csound, p->isourceTab)) == NULL)
return csound->InitError(csound,
- "copyTabElems: incorrect source table number");
+ Str("copyTabElems: incorrect source table number"));
sLen = ftp->flen;
if (nelems > sLen)
return csound->InitError(csound,
- "copyTabElems: source table size less than "
- "the number of elements to copy");
+ Str("copyTabElems: source table size less than "
+ "the number of elements to copy"));
sTable = ftp->ftable;
{
int j, sNdx = (int) *p->isourceIndex * nelems,
dNdx = (int) *p->idestIndex * nelems;
if (sNdx + nelems > sLen)
- return csound->PerfError(csound, "copyTabElems: source table too short");
+ return csound->PerfError(csound, Str("copyTabElems: source table too short"));
if (dNdx + nelems > dLen)
return csound->PerfError(csound,
- "copyTabElems: destination table too short");
+ Str("copyTabElems: destination table too short"));
for (j = 0; j< nelems; j++) {
dTable[dNdx+j] = sTable[sNdx+j];
}
@@ -341,7 +344,7 @@ static int inRange_i(CSOUND *csound, INRANGE *p)
p->narg = p->INOCOUNT-1;
/*p->numChans = (PortaudioNumOfInPorts == -1) ? nchnls : PortaudioNumOfInPorts; */
if (!csound->oparms->sfread)
- return csound->InitError(csound, "inrg: audio input is not enabled");
+ return csound->InitError(csound, Str("inrg: audio input is not enabled"));
p->numChans = csound->nchnls;
return OK;
}
@@ -405,9 +408,7 @@ static int outRange(CSOUND *csound, OUTRANGE *p)
nsmps = ksmps;
if (!csound->spoutactive) {
- MYFLT *sptemp = sp;
memset(sp, 0, ksmps * nchnls * sizeof(MYFLT));
- /* for (j=0; j< ksmps * nchnls; j++) *sptemp++ = 0; /\* clear all channels *\/ */
for (n=0; n<nsmps; n++) {
int i;
MYFLT *sptemp = sp;
@@ -570,10 +571,10 @@ static int lposcint_stereo_set(CSOUND *csound, LPOSCINT_ST *p)
FUNC *ftp;
double loop, end, looplength, fsr;
if ((ftp = csound->FTnp2Find(csound, p->ift)) == NULL)
- return csound->InitError(csound, "invalid function");
+ return csound->InitError(csound, Str("invalid function"));
if (!(fsr = ftp->gen01args.sample_rate)){
csound->Message(csound,
- "lposcil: no sample rate stored in function assuming=sr\n");
+ Str("lposcil: no sample rate stored in function assuming=sr\n"));
p->fsr=csound->esr;
}
p->fsrUPsr = fsr/csound->esr;
@@ -803,7 +804,7 @@ static int dashow (CSOUND *csound, DSH *p)
#define S(x) sizeof(x)
static OENTRY localops[] = {
- { "vtable1k", S(MTABLE1), 3, "", "kz", (SUBR)mtable1_set, (SUBR)mtable1_k, (SUBR) NULL },
+ { "vtable1k", S(MTABLE1), TR|3, "", "kz", (SUBR)mtable1_set, (SUBR)mtable1_k, (SUBR) NULL },
/* { "schedk", S(SCHEDK), 3, "", "kkz", (SUBR)schedk_i, (SUBR) schedk, (SUBR) NULL }, */
/* { "schedInTime", S(SCHEDINTIME), 3, "", "kz", (SUBR)schedInTime_set, (SUBR)schedInTime , (SUBR) NULL }, */
/* { "copyTabElems", S(COPYTABELEMS), 3, "", "kikiki", (SUBR)copyTabElems_set, (SUBR)copyTabElems, (SUBR)NULL }, */
@@ -813,9 +814,9 @@ static OENTRY localops[] = {
/* { "lposcinta", S(LPOSC), 5, "a", "akkkio", (SUBR)lposc_set, NULL, (SUBR)lposcinta}, */
/* { "lposcintsa", S(LPOSCINT_ST), 5, "aa","akkkio", (SUBR)lposcint_stereo_set,NULL, (SUBR)lposcinta_stereo}, */
/* { "lposcintsa2", S(LPOSCINT_ST), 5, "aa","akkkio", (SUBR)lposcint_stereo_set,NULL, (SUBR)lposcinta_stereo_no_trasp}, */
- { "lposcila", S(LPOSC), 5, "a", "akkkio", (SUBR)lposc_set, NULL, (SUBR)lposca},
- { "lposcilsa", S(LPOSC_ST), 5, "aa","akkkio", (SUBR)lposc_stereo_set, NULL, (SUBR)lposca_stereo},
- { "lposcilsa2", S(LPOSC_ST), 5, "aa","akkkio", (SUBR)lposc_stereo_set, NULL, (SUBR)lposca_stereo_no_trasp},
+ { "lposcila", S(LPOSC), TR|5, "a", "akkkio", (SUBR)lposc_set, NULL, (SUBR)lposca},
+ { "lposcilsa", S(LPOSC_ST), TR|5, "aa","akkkio", (SUBR)lposc_stereo_set, NULL, (SUBR)lposca_stereo},
+ { "lposcilsa2", S(LPOSC_ST), TR|5, "aa","akkkio", (SUBR)lposc_stereo_set, NULL, (SUBR)lposca_stereo_no_trasp},
/* { "dashow.i", S(DSH), 1, "ii","iiii", (SUBR)dashow }, */
/* { "dashow.k", S(DSH), 2, "kk","kkkk", NULL, (SUBR)dashow }, */
{ "inrg", S(INRANGE), 5, "", "ky", (SUBR)inRange_i, (SUBR)NULL, (SUBR)inRange },
@@ -829,6 +830,7 @@ typedef struct NEWGABOPC_GLOBALS_ {
} NEWGABOPC_GLOBALS;
+/*
PUBLIC int csoundModuleInfo(void)
{
return ((CS_APIVERSION << 16) + (CS_APISUBVER << 8) + (int) sizeof(MYFLT));
@@ -840,8 +842,7 @@ PUBLIC int csoundModuleCreate(CSOUND *csound)
(void)csound;
return 0;
}
-
-
+*/
int newgabopc_init_(CSOUND *csound) {
@@ -855,7 +856,7 @@ int tabmorph_init_(CSOUND *csound);
int rbatonopc_init_(CSOUND *csound);
-PUBLIC int csoundModuleInit(CSOUND *csound)
+PUBLIC int newgabopc_ModuleInit(CSOUND *csound)
{
int err = 0;
err |= hvs_init_(csound);
@@ -868,7 +869,9 @@ PUBLIC int csoundModuleInit(CSOUND *csound)
return (err ? CSOUND_ERROR : CSOUND_SUCCESS);
}
+/*
PUBLIC int csoundModuleDestroy(CSOUND *csound)
{
return 0;
}
+*/
diff --git a/Opcodes/gab/radiobaton.c b/Opcodes/gab/radiobaton.c
index 12d0791..908b5da 100644
--- a/Opcodes/gab/radiobaton.c
+++ b/Opcodes/gab/radiobaton.c
@@ -1,346 +1,341 @@
-/* Copyright (C) 2007 Gabriel Maldonado
-
- Csound is free software; you can redistribute it
- and/or modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- Csound is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with Csound; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307 USA
-*/
-
-/* #include "csdl.h" */
-
-/*
-extern unsigned long MIDIINbufIndex;
-extern MIDIMESSAGE MIDIINbuffer2[];
-*/
-
-#define __BUILDING_LIBCSOUND /* to access csound->midiGlobals */
-#undef CSOUND_CSDL_H /* to access csound->midiGlobals */
-
-#include "csoundCore.h" /* instead of "csd.h" in order to access
- csound->midiGlobals */
-
-/* These opcodes have not been implemented because csound->midiGlobals
- is not there yet. */
-
-PUBLIC int Sched(CSOUND *csound, MYFLT *args[], int numargs);
-
-
-/* -------------------------------------------------------------------- */
-
-typedef struct {
- OPDS h;
- MYFLT *x1, *y1, *z1, *x2, *y2, *z2;
-
- int local_buf_index;
-} RB_XYZ;
-
-
-static int rbatonXYZ_set(CSOUND *csound, RB_XYZ *p)
-{
- p->local_buf_index = csound->midiGlobals->MIDIINbufIndex & MIDIINBUFMSK;
- *p->x1 = *p->y1 = *p->z1 = *p->x2 = *p->y2 = *p->z2 = 0;
- return OK;
-}
-
-static int rbatonXYZ(CSOUND *csound, RB_XYZ *p)
-{
- int status, data1, data2;
- MGLOBAL* mg = csound->midiGlobals;
- /*
- if (p->local_buf_index < mg->MIDIINbufIndex) {
- MIDIMESSAGE temp = mg->MIDIINbuffer2[(p->local_buf_index)++ % MIDIINBUFMAX];
- status = temp.bData[0];
- data1 = temp.bData[1];
- data2 = temp.bData[2];
- */
- if (p->local_buf_index != mg->MIDIINbufIndex) {
- unsigned char *temp;
- temp = &(mg->MIDIINbuffer2[p->local_buf_index++].bData[0]);
- p->local_buf_index &= MIDIINBUFMSK;
- status = (*temp );
- data1 = *++temp;
- data2 = *++temp;
- }
- else return OK;
- if (status == 0xA0) {
- switch (data1) {
- case 8: *p->x1 = data2/FL(127.0); break;
- case 9: *p->y1 = data2/FL(127.0); break;
- case 10: *p->z1 = data2/FL(127.0); break;
- case 11: *p->x2 = data2/FL(127.0); break;
- case 12: *p->y2 = data2/FL(127.0); break;
- case 13: *p->z2 = data2/FL(127.0); break;
- }
- }
- return OK;
-}
-/* -------------------------------------------------------------------- */
-
-typedef struct {
- OPDS h;
- MYFLT *pot1, *pot2, *pot3, *pot4, *fsw1, *fsw2, *button;
- int local_buf_index;
-} RB_POT;
-
-static int rbatonPot_set(CSOUND *csound, RB_POT *p)
-{
- p->local_buf_index = csound->midiGlobals->MIDIINbufIndex & MIDIINBUFMSK;
- *p->pot1 = *p->pot2 = *p->pot3 = *p->pot4 = 0;
- return OK;
-}
-
-static int rbatonPot (CSOUND *csound, RB_POT *p)
-{
- int status, data1, data2;
- MGLOBAL* mg = csound->midiGlobals;
- if (p->local_buf_index != csound->midiGlobals->MIDIINbufIndex) {
- unsigned char *temp;
- temp = &(mg->MIDIINbuffer2[p->local_buf_index++].bData[0]);
- p->local_buf_index &= MIDIINBUFMSK;
- status = (*temp );
- data1 = *++temp;
- data2 = *++temp;
- }
- else return OK;
- if (status == 0xA0) {
- switch (data1) {
- case 4: *p->pot1 = data2/FL(127.0); break;
- case 5: *p->pot2 = data2/FL(127.0); break;
- case 6: *p->pot3 = data2/FL(127.0); break;
- case 7: *p->pot4 = data2/FL(127.0); break;
- case 3:
- switch (data2) {
- case 1: *p->button = (*p->button == 0) ? FL(1.0) : FL(0.0); break;
- case 2: *p->fsw1 = 1; break;
- case 3: *p->fsw1 = 0; break;
- case 4: *p->fsw2 = 1; break;
- case 5: *p->fsw2 = 0; break;
- }
- break;
- }
- }
- return OK;
-}
-/* -------------------------------------------------------------------- */
-
-#define INCR (0.001f)
-
-typedef struct {
- OPDS h;
- MYFLT *kDur, *kBaton1instr, *kBaton2Instr, *kFootSw1dn, *kFootSw1up,
- *kFootSw2dn, *kFootSw2up, *kButInstr;
- MYFLT baton, whack, x, y, p0, p2, p3, p3neg;
- MYFLT fs1dn, fs1up, fs2dn, fs2up;
- MYFLT frac1, frac2;
- MYFLT pot1, pot2, pot3; /* pontentiometer 4 is reserved to stick sensitivity */
- int local_buf_index;
-} RB_PERCPAD;
-
-static int rbatonPercPad_set (CSOUND *csound, RB_PERCPAD *p)
-{
- p->local_buf_index = csound->midiGlobals->MIDIINbufIndex & MIDIINBUFMSK;
- p->p0 = 0;
- p->p2 = 0;
- p->p3 = 1;
- p->p3neg = -1;
- p->pot1 = p->pot2 = p->pot3 = 0;
- p->fs1dn = -*p->kFootSw1dn;
- p->fs2dn = -*p->kFootSw2dn;
- p->fs1up = -*p->kFootSw1up;
- p->fs2up = -*p->kFootSw2up;
- p->frac1 = p->frac2 = 0;
- return OK;
-}
-
-static int rbatonPercPad(CSOUND *csound, RB_PERCPAD *p)
-{
- int status, data1, data2;
- MYFLT *args[9];
-
- if (p->local_buf_index != csound->midiGlobals->MIDIINbufIndex) {
- MGLOBAL* mg = csound->midiGlobals;
- unsigned char *temp;
- temp = &(mg->MIDIINbuffer2[p->local_buf_index++].bData[0]);
- p->local_buf_index &= MIDIINBUFMSK;
- status = (*temp );
- data1 = *++temp;
- data2 = *++temp;
- }
- else return OK;
- if (status == 0xA0) {
- switch (data1) {
- case 1: /* trigger baton and whack from stick 1 or 2 */
- case 2:
- p->baton = (data1 == 1) ? *p->kBaton1instr : *p->kBaton2Instr;
- p->whack = data2/FL(127.0);
- break;
- case 15: /* X coordinate at trigger */
- case 17:
- p->x = data2/FL(127.0);
- break;
-
- case 16: /* Y coordinate at trigger */
- case 18:
- p->y = data2/FL(127.0);
- args[0] = &(p->p0); /* this is the third baton trigger message */
- args[1] = &(p->baton); /* so activate corresponding instrument */
- args[2] = &(p->p2);
- args[3] = &(*p->kDur);
- args[4] = &(p->whack);
- args[5] = &(p->x);
- args[6] = &(p->y);
- args[7] = &(p->pot1);
- args[8] = &(p->pot2);
- args[9] = &(p->pot3);
- Sched(csound, args, 10);
- break;
- case 3: /* foot-switches and button */
- /* *kFootSw1dn, *kFootSw2dn, *kFootSw1up, *kFootSw2up, *kButInstr; */
- switch(data2) {
- case 1:
- if (*p->kButInstr) { /* if kButInstr is set */
- args[0] = &(p->p0);
- args[1] = &(*p->kButInstr);
- args[2] = &(p->p2);
- args[3] = &(*p->kDur);
- args[4] = &(p->pot1);
- args[5] = &(p->pot2);
- args[6] = &(p->pot3);
- Sched(csound, args, 7);
- }
- printf("B15+ button\n");
- break;
- case 2: /* footswitch 1 down */
- if (*p->kFootSw1dn) { /* if kFootSw1dn is set */
- p->fs1dn = (int) *p->kFootSw1dn + p->frac1;
- args[0] = &(p->p0);
- args[1] = &(p->fs1dn);
- args[2] = &(p->p2);
- args[3] = (*p->kFootSw1up) ? &(*p->kDur) : &(p->p3neg);
- args[4] = &(p->pot1);
- args[5] = &(p->pot2);
- args[6] = &(p->pot3);
- Sched(csound, args, 7);
- }
- else if (*p->kFootSw1up) { /* turn off the instrument */
- p->fs1up = -((int) *p->kFootSw1up + p->frac1);
- args[0] = &(p->p0);
- args[1] = &(p->fs1up);
- args[2] = &(p->p2);
- args[3] = &(p->p2); /* zero */
- Sched(csound, args, 4);
- p->fs1up = -*p->kFootSw1up;
- p->frac1 += INCR;
- p->frac1 = (p->frac1 >= 1) ? p->frac1 = 0 : p->frac1;
- }
- printf("B14- foot switch down1\n");
- break;
- case 3:
- if (*p->kFootSw1up) { /* if kFootSw1up is set */
- p->fs1up = (int) *p->kFootSw1up + p->frac1;
- args[0] = &(p->p0);
- args[1] = &(p->fs1up);
- args[2] = &(p->p2);
- args[3] = (*p->kFootSw1dn) ? &(*p->kDur) : &(p->p3neg);
- args[4] = &(p->pot1);
- args[5] = &(p->pot2);
- args[6] = &(p->pot3);
- Sched(csound, args, 7);
- }
- else if (*p->kFootSw1dn) { /* turn off the instrument */
- p->fs1dn = -((int) *p->kFootSw1dn + p->frac1);
- args[0] = &(p->p0);
- args[1] = &(p->fs1dn);
- args[2] = &(p->p2);
- args[3] = &(p->p2); /* zero */
- Sched(csound, args, 4);
- p->frac1 += INCR;
- p->frac1 = (p->frac2 >= 1) ? p->frac1 = 0 : p->frac1;
- }
- printf("B14- foot switch up1\n");
- break;
- case 4:
- if (*p->kFootSw2dn) { /* if kFootSw1dn is set */
- /* CONTINUARE con frac1 e frac2 */
- p->fs2dn = (int) *p->kFootSw2dn + p->frac2;
- args[0] = &(p->p0);
- args[1] = &(p->fs2dn);
- args[2] = &(p->p2);
- args[3] = (*p->kFootSw2up) ? &(*p->kDur) : &(p->p3neg);
- args[4] = &(p->pot1);
- args[5] = &(p->pot2);
- args[6] = &(p->pot3);
- Sched(csound, args, 7);
- }
- else if (*p->kFootSw2up) { /* turn off the instrument */
- p->fs2up = -((int) *p->kFootSw2up + p->frac2);
- args[0] = &(p->p0);
- args[1] = &(p->fs2up);
- args[2] = &(p->p2);
- args[3] = &(p->p2); /* zero */
- Sched(csound, args, 4);
- p->frac2 += INCR;
- p->frac2 = (p->frac2 >= 1) ? p->frac2 = 0 : p->frac2;
- }
- printf("B15- foot switch down2\n");
- break;
- case 5:
- if (*p->kFootSw2up) { /* if kFootSw1up is set */
- p->fs2up = (int) *p->kFootSw2up + p->frac2;
- args[0] = &(p->p0);
- args[1] = &(p->fs2up);
- args[2] = &(p->p2);
- args[3] = (*p->kFootSw2dn) ? &(*p->kDur) : &(p->p3neg);
- args[4] = &(p->pot1);
- args[5] = &(p->pot2);
- args[6] = &(p->pot3);
- Sched(csound, args, 7);
-
- }
- else if (*p->kFootSw2dn) { /* turn off the instrument */
- p->fs2dn = -((int) *p->kFootSw2dn + p->frac2);
- args[0] = &(p->p0);
- args[1] = &(p->fs2dn);
- args[2] = &(p->p2);
- args[3] = &(p->p2); /* zero */
- Sched(csound, args, 4);
- p->frac2 += INCR;
- p->frac2 = (p->frac2 >= 1) ? p->frac2 = 0 : p->frac2;
- }
- printf("B15- foot switch up2\n");
- break;
- }
- break;
- case 4: p->pot1 = data2/FL(127.0); break;
- case 5: p->pot2 = data2/FL(127.0); break;
- case 6: p->pot3 = data2/FL(127.0); break;
- }
- }
- return OK;
-}
-
-#define S(x) sizeof(x)
-
-static OENTRY localops[] = {
- { "rbatonPercPad", S(RB_PERCPAD),3, "", "kkkkkkkk",
- (SUBR)rbatonPercPad_set, (SUBR)rbatonPercPad },
- { "rbatonXYZ", S(RB_XYZ), 3, "kkkkkk", "",
- (SUBR)rbatonXYZ_set, (SUBR)rbatonXYZ },
- { "rbatonPot", S(RB_POT), 3, "kkkkkkk", "",
- (SUBR)rbatonPot_set, (SUBR)rbatonPot }
-};
-
-int rbatonopc_init_(CSOUND *csound) {
- return csound->AppendOpcodes(csound, &(localops[0]),
- (int) (sizeof(localops) / sizeof(OENTRY)));
-}
+/* Copyright (C) 2007 Gabriel Maldonado
+
+ Csound is free software; you can redistribute it
+ and/or modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ Csound is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with Csound; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA
+*/
+
+/* #include "csdl.h" */
+
+/*
+extern unsigned long MIDIINbufIndex;
+extern MIDIMESSAGE MIDIINbuffer2[];
+*/
+
+#include "csoundCore.h" /* instead of "csd.h" in order to access
+ csound->midiGlobals */
+
+/* These opcodes have not been implemented because csound->midiGlobals
+ is not there yet. */
+
+PUBLIC int Sched(CSOUND *csound, MYFLT *args[], int numargs);
+
+
+/* -------------------------------------------------------------------- */
+
+typedef struct {
+ OPDS h;
+ MYFLT *x1, *y1, *z1, *x2, *y2, *z2;
+
+ int local_buf_index;
+} RB_XYZ;
+
+
+static int rbatonXYZ_set(CSOUND *csound, RB_XYZ *p)
+{
+ p->local_buf_index = csound->midiGlobals->MIDIINbufIndex & MIDIINBUFMSK;
+ *p->x1 = *p->y1 = *p->z1 = *p->x2 = *p->y2 = *p->z2 = 0;
+ return OK;
+}
+
+static int rbatonXYZ(CSOUND *csound, RB_XYZ *p)
+{
+ int status, data1, data2;
+ MGLOBAL* mg = csound->midiGlobals;
+ /*
+ if (p->local_buf_index < mg->MIDIINbufIndex) {
+ MIDIMESSAGE temp = mg->MIDIINbuffer2[(p->local_buf_index)++ % MIDIINBUFMAX];
+ status = temp.bData[0];
+ data1 = temp.bData[1];
+ data2 = temp.bData[2];
+ */
+ if (p->local_buf_index != mg->MIDIINbufIndex) {
+ unsigned char *temp;
+ temp = &(mg->MIDIINbuffer2[p->local_buf_index++].bData[0]);
+ p->local_buf_index &= MIDIINBUFMSK;
+ status = (*temp );
+ data1 = *++temp;
+ data2 = *++temp;
+ }
+ else return OK;
+ if (status == 0xA0) {
+ switch (data1) {
+ case 8: *p->x1 = data2/FL(127.0); break;
+ case 9: *p->y1 = data2/FL(127.0); break;
+ case 10: *p->z1 = data2/FL(127.0); break;
+ case 11: *p->x2 = data2/FL(127.0); break;
+ case 12: *p->y2 = data2/FL(127.0); break;
+ case 13: *p->z2 = data2/FL(127.0); break;
+ }
+ }
+ return OK;
+}
+/* -------------------------------------------------------------------- */
+
+typedef struct {
+ OPDS h;
+ MYFLT *pot1, *pot2, *pot3, *pot4, *fsw1, *fsw2, *button;
+ int local_buf_index;
+} RB_POT;
+
+static int rbatonPot_set(CSOUND *csound, RB_POT *p)
+{
+ p->local_buf_index = csound->midiGlobals->MIDIINbufIndex & MIDIINBUFMSK;
+ *p->pot1 = *p->pot2 = *p->pot3 = *p->pot4 = 0;
+ return OK;
+}
+
+static int rbatonPot (CSOUND *csound, RB_POT *p)
+{
+ int status, data1, data2;
+ MGLOBAL* mg = csound->midiGlobals;
+ if (p->local_buf_index != csound->midiGlobals->MIDIINbufIndex) {
+ unsigned char *temp;
+ temp = &(mg->MIDIINbuffer2[p->local_buf_index++].bData[0]);
+ p->local_buf_index &= MIDIINBUFMSK;
+ status = (*temp );
+ data1 = *++temp;
+ data2 = *++temp;
+ }
+ else return OK;
+ if (status == 0xA0) {
+ switch (data1) {
+ case 4: *p->pot1 = data2/FL(127.0); break;
+ case 5: *p->pot2 = data2/FL(127.0); break;
+ case 6: *p->pot3 = data2/FL(127.0); break;
+ case 7: *p->pot4 = data2/FL(127.0); break;
+ case 3:
+ switch (data2) {
+ case 1: *p->button = (*p->button == 0) ? FL(1.0) : FL(0.0); break;
+ case 2: *p->fsw1 = 1; break;
+ case 3: *p->fsw1 = 0; break;
+ case 4: *p->fsw2 = 1; break;
+ case 5: *p->fsw2 = 0; break;
+ }
+ break;
+ }
+ }
+ return OK;
+}
+/* -------------------------------------------------------------------- */
+
+#define INCR (0.001f)
+
+typedef struct {
+ OPDS h;
+ MYFLT *kDur, *kBaton1instr, *kBaton2Instr, *kFootSw1dn, *kFootSw1up,
+ *kFootSw2dn, *kFootSw2up, *kButInstr;
+ MYFLT baton, whack, x, y, p0, p2, p3, p3neg;
+ MYFLT fs1dn, fs1up, fs2dn, fs2up;
+ MYFLT frac1, frac2;
+ MYFLT pot1, pot2, pot3; /* pontentiometer 4 is reserved to stick sensitivity */
+ int local_buf_index;
+} RB_PERCPAD;
+
+static int rbatonPercPad_set (CSOUND *csound, RB_PERCPAD *p)
+{
+ p->local_buf_index = csound->midiGlobals->MIDIINbufIndex & MIDIINBUFMSK;
+ p->p0 = 0;
+ p->p2 = 0;
+ p->p3 = 1;
+ p->p3neg = -1;
+ p->pot1 = p->pot2 = p->pot3 = 0;
+ p->fs1dn = -*p->kFootSw1dn;
+ p->fs2dn = -*p->kFootSw2dn;
+ p->fs1up = -*p->kFootSw1up;
+ p->fs2up = -*p->kFootSw2up;
+ p->frac1 = p->frac2 = 0;
+ return OK;
+}
+
+static int rbatonPercPad(CSOUND *csound, RB_PERCPAD *p)
+{
+ int status, data1, data2;
+ MYFLT *args[9];
+
+ if (p->local_buf_index != csound->midiGlobals->MIDIINbufIndex) {
+ MGLOBAL* mg = csound->midiGlobals;
+ unsigned char *temp;
+ temp = &(mg->MIDIINbuffer2[p->local_buf_index++].bData[0]);
+ p->local_buf_index &= MIDIINBUFMSK;
+ status = (*temp );
+ data1 = *++temp;
+ data2 = *++temp;
+ }
+ else return OK;
+ if (status == 0xA0) {
+ switch (data1) {
+ case 1: /* trigger baton and whack from stick 1 or 2 */
+ case 2:
+ p->baton = (data1 == 1) ? *p->kBaton1instr : *p->kBaton2Instr;
+ p->whack = data2/FL(127.0);
+ break;
+ case 15: /* X coordinate at trigger */
+ case 17:
+ p->x = data2/FL(127.0);
+ break;
+
+ case 16: /* Y coordinate at trigger */
+ case 18:
+ p->y = data2/FL(127.0);
+ args[0] = &(p->p0); /* this is the third baton trigger message */
+ args[1] = &(p->baton); /* so activate corresponding instrument */
+ args[2] = &(p->p2);
+ args[3] = &(*p->kDur);
+ args[4] = &(p->whack);
+ args[5] = &(p->x);
+ args[6] = &(p->y);
+ args[7] = &(p->pot1);
+ args[8] = &(p->pot2);
+ args[9] = &(p->pot3);
+ Sched(csound, args, 10);
+ break;
+ case 3: /* foot-switches and button */
+ /* *kFootSw1dn, *kFootSw2dn, *kFootSw1up, *kFootSw2up, *kButInstr; */
+ switch(data2) {
+ case 1:
+ if (*p->kButInstr) { /* if kButInstr is set */
+ args[0] = &(p->p0);
+ args[1] = &(*p->kButInstr);
+ args[2] = &(p->p2);
+ args[3] = &(*p->kDur);
+ args[4] = &(p->pot1);
+ args[5] = &(p->pot2);
+ args[6] = &(p->pot3);
+ Sched(csound, args, 7);
+ }
+ printf("B15+ button\n");
+ break;
+ case 2: /* footswitch 1 down */
+ if (*p->kFootSw1dn) { /* if kFootSw1dn is set */
+ p->fs1dn = (int) *p->kFootSw1dn + p->frac1;
+ args[0] = &(p->p0);
+ args[1] = &(p->fs1dn);
+ args[2] = &(p->p2);
+ args[3] = (*p->kFootSw1up) ? &(*p->kDur) : &(p->p3neg);
+ args[4] = &(p->pot1);
+ args[5] = &(p->pot2);
+ args[6] = &(p->pot3);
+ Sched(csound, args, 7);
+ }
+ else if (*p->kFootSw1up) { /* turn off the instrument */
+ p->fs1up = -((int) *p->kFootSw1up + p->frac1);
+ args[0] = &(p->p0);
+ args[1] = &(p->fs1up);
+ args[2] = &(p->p2);
+ args[3] = &(p->p2); /* zero */
+ Sched(csound, args, 4);
+ p->fs1up = -*p->kFootSw1up;
+ p->frac1 += INCR;
+ p->frac1 = (p->frac1 >= 1) ? p->frac1 = 0 : p->frac1;
+ }
+ printf("B14- foot switch down1\n");
+ break;
+ case 3:
+ if (*p->kFootSw1up) { /* if kFootSw1up is set */
+ p->fs1up = (int) *p->kFootSw1up + p->frac1;
+ args[0] = &(p->p0);
+ args[1] = &(p->fs1up);
+ args[2] = &(p->p2);
+ args[3] = (*p->kFootSw1dn) ? &(*p->kDur) : &(p->p3neg);
+ args[4] = &(p->pot1);
+ args[5] = &(p->pot2);
+ args[6] = &(p->pot3);
+ Sched(csound, args, 7);
+ }
+ else if (*p->kFootSw1dn) { /* turn off the instrument */
+ p->fs1dn = -((int) *p->kFootSw1dn + p->frac1);
+ args[0] = &(p->p0);
+ args[1] = &(p->fs1dn);
+ args[2] = &(p->p2);
+ args[3] = &(p->p2); /* zero */
+ Sched(csound, args, 4);
+ p->frac1 += INCR;
+ p->frac1 = (p->frac2 >= 1) ? p->frac1 = 0 : p->frac1;
+ }
+ printf("B14- foot switch up1\n");
+ break;
+ case 4:
+ if (*p->kFootSw2dn) { /* if kFootSw1dn is set */
+ /* CONTINUARE con frac1 e frac2 */
+ p->fs2dn = (int) *p->kFootSw2dn + p->frac2;
+ args[0] = &(p->p0);
+ args[1] = &(p->fs2dn);
+ args[2] = &(p->p2);
+ args[3] = (*p->kFootSw2up) ? &(*p->kDur) : &(p->p3neg);
+ args[4] = &(p->pot1);
+ args[5] = &(p->pot2);
+ args[6] = &(p->pot3);
+ Sched(csound, args, 7);
+ }
+ else if (*p->kFootSw2up) { /* turn off the instrument */
+ p->fs2up = -((int) *p->kFootSw2up + p->frac2);
+ args[0] = &(p->p0);
+ args[1] = &(p->fs2up);
+ args[2] = &(p->p2);
+ args[3] = &(p->p2); /* zero */
+ Sched(csound, args, 4);
+ p->frac2 += INCR;
+ p->frac2 = (p->frac2 >= 1) ? p->frac2 = 0 : p->frac2;
+ }
+ printf("B15- foot switch down2\n");
+ break;
+ case 5:
+ if (*p->kFootSw2up) { /* if kFootSw1up is set */
+ p->fs2up = (int) *p->kFootSw2up + p->frac2;
+ args[0] = &(p->p0);
+ args[1] = &(p->fs2up);
+ args[2] = &(p->p2);
+ args[3] = (*p->kFootSw2dn) ? &(*p->kDur) : &(p->p3neg);
+ args[4] = &(p->pot1);
+ args[5] = &(p->pot2);
+ args[6] = &(p->pot3);
+ Sched(csound, args, 7);
+
+ }
+ else if (*p->kFootSw2dn) { /* turn off the instrument */
+ p->fs2dn = -((int) *p->kFootSw2dn + p->frac2);
+ args[0] = &(p->p0);
+ args[1] = &(p->fs2dn);
+ args[2] = &(p->p2);
+ args[3] = &(p->p2); /* zero */
+ Sched(csound, args, 4);
+ p->frac2 += INCR;
+ p->frac2 = (p->frac2 >= 1) ? p->frac2 = 0 : p->frac2;
+ }
+ printf("B15- foot switch up2\n");
+ break;
+ }
+ break;
+ case 4: p->pot1 = data2/FL(127.0); break;
+ case 5: p->pot2 = data2/FL(127.0); break;
+ case 6: p->pot3 = data2/FL(127.0); break;
+ }
+ }
+ return OK;
+}
+
+#define S(x) sizeof(x)
+
+OENTRY radiobaton_localops[] = {
+ { "rbatonPercPad", S(RB_PERCPAD),3, "", "kkkkkkkk",
+ (SUBR)rbatonPercPad_set, (SUBR)rbatonPercPad },
+ { "rbatonXYZ", S(RB_XYZ), 3, "kkkkkk", "",
+ (SUBR)rbatonXYZ_set, (SUBR)rbatonXYZ },
+ { "rbatonPot", S(RB_POT), 3, "kkkkkkk", "",
+ (SUBR)rbatonPot_set, (SUBR)rbatonPot }
+};
+
+LINKAGE1(radiobaton_localops)
+
diff --git a/Opcodes/gab/sliderTable.c b/Opcodes/gab/sliderTable.c
index c83b93e..92c0b4e 100644
--- a/Opcodes/gab/sliderTable.c
+++ b/Opcodes/gab/sliderTable.c
@@ -16,7 +16,9 @@
02111-1307 USA
*/
-#include "csdl.h"
+//#include "csdl.h"
+#include "csoundCore.h"
+#include "interlocks.h"
#include <math.h>
#define f7bit (FL(127.0))
@@ -266,7 +268,8 @@ static int sliderTable64(CSOUND *csound, SLIDER64t *p) /* GAB */
MYFLT *yt1 = p->yt1, *c1=p->c1, *c2=p->c2; \
\
\
- if((outftp = csound->FTFind(csound, p->ioutfn)) != NULL) p->outTable = outftp->ftable; \
+ if((outftp = csound->FTFind(csound, p->ioutfn)) != NULL) \
+ p->outTable = outftp->ftable; \
while (j < n) { \
int t = (int) *sld->ifn; \
*slnum = (unsigned char) *sld->ictlno; \
@@ -318,7 +321,8 @@ static int sliderTable64(CSOUND *csound, SLIDER64t *p) /* GAB */
chanblock[*slnum++] = (MYFLT)((int)(value * f7bit + FL(0.5))); \
/*----- init filtering coeffs*/ \
*yt1++ = FL(0.0); \
- b = (MYFLT)(2.0 - cos((double)(*(sld)->ihp * csound->tpidsr * csound->ksmps))); \
+ b = (MYFLT)(2.0 - cos((double)(*(sld)->ihp * \
+ csound->tpidsr * csound->ksmps))); \
*c2 = (MYFLT)(b - sqrt((double)(b * b - FL(1.0)))); \
*c1++ = FL(1.0) - *c2++; \
\
@@ -610,66 +614,64 @@ static int ctrl7a(CSOUND *csound, CTRL7a *p)
#define S(x) sizeof(x)
-static OENTRY localops[] = {
-
+OENTRY sliderTable_localops[] = {
{ "slider8table", S(SLIDER8t), 3, "k", "iii"
- "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii",
- (SUBR)sliderTable_i8, (SUBR)sliderTable8, (SUBR)NULL },
-
+ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii",
+ (SUBR)sliderTable_i8, (SUBR)sliderTable8, (SUBR)NULL },
{ "slider16table", S(SLIDER8t), 3, "k", "iii"
- "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
- "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii",
- (SUBR)sliderTable_i16, (SUBR)sliderTable16, (SUBR)NULL },
+ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
+ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii",
+ (SUBR)sliderTable_i16, (SUBR)sliderTable16, (SUBR)NULL },
{ "slider32table", S(SLIDER8t), 3, "k", "iii"
- "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
- "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
- "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
- "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii",
- (SUBR)sliderTable_i32, (SUBR)sliderTable32, (SUBR)NULL },
+ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
+ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
+ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
+ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii",
+ (SUBR)sliderTable_i32, (SUBR)sliderTable32, (SUBR)NULL },
{ "slider64table", S(SLIDER8t), 3, "k", "iii"
- "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
- "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
- "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
- "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
- "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
- "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
- "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
- "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii",
- (SUBR)sliderTable_i64, (SUBR)sliderTable64, (SUBR)NULL },
-
+ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
+ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
+ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
+ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
+ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
+ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
+ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
+ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii",
+ (SUBR)sliderTable_i64, (SUBR)sliderTable64, (SUBR)NULL },
{ "slider8tablef", S(SLIDER8tf), 3, "k", "iii"
- "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii",
- (SUBR)sliderTable_i8f, (SUBR)sliderTable8f, (SUBR)NULL },
-
+ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii",
+ (SUBR)sliderTable_i8f, (SUBR)sliderTable8f, (SUBR)NULL },
{ "slider16tablef",S(SLIDER16tf), 3, "k", "iii"
- "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
- "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii",
- (SUBR)sliderTable_i16f, (SUBR)sliderTable16f, (SUBR)NULL },
+ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
+ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii",
+ (SUBR)sliderTable_i16f, (SUBR)sliderTable16f, (SUBR)NULL },
{ "slider32tablef",S(SLIDER32tf), 3, "k", "iii"
- "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
- "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
- "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
- "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii",
- (SUBR)sliderTable_i32f, (SUBR)sliderTable32f, (SUBR)NULL },
+ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
+ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
+ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
+ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii",
+ (SUBR)sliderTable_i32f, (SUBR)sliderTable32f, (SUBR)NULL },
{ "slider64tablef",S(SLIDER64tf), 3, "k", "iii"
- "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
- "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
- "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
- "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
- "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
- "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
- "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
- "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii",
- (SUBR)sliderTable_i64f, (SUBR)sliderTable64f, (SUBR)NULL },
+ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
+ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
+ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
+ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
+ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
+ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
+ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
+ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii",
+ (SUBR)sliderTable_i64f, (SUBR)sliderTable64f, (SUBR)NULL },
{ "sliderKawai", S(SLIDERKAWAI), 3, "kkkkkkkkkkkkkkkk",
- "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
- "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii",
- (SUBR)sliderKawai_i, (SUBR)sliderKawai, NULL },
-{ "ctrl7.a", S(CTRL7a), 5, "a", "iikkoo", (SUBR) ctrl7a_set, NULL, (SUBR) ctrl7a },
+ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
+ "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii",
+ (SUBR)sliderKawai_i, (SUBR)sliderKawai, NULL },
+{ "ctrl7.a", S(CTRL7a), 5, "a", "iikkoo",
+ (SUBR) ctrl7a_set, NULL, (SUBR) ctrl7a },
};
-
int slidertable_init_(CSOUND *csound) {
- return csound->AppendOpcodes(csound, &(localops[0]),
- (int) (sizeof(localops) / sizeof(OENTRY)));
+ return
+ csound->AppendOpcodes(csound, &(sliderTable_localops[0]),
+ (int) (sizeof(sliderTable_localops) / sizeof(OENTRY)));
}
+
diff --git a/Opcodes/gab/tabmorph.c b/Opcodes/gab/tabmorph.c
index d4cfe5f..8cfee35 100644
--- a/Opcodes/gab/tabmorph.c
+++ b/Opcodes/gab/tabmorph.c
@@ -15,13 +15,14 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA
*/
-
-#include "csdl.h"
-
+//#include "csdl.h"
+#include "csoundCore.h"
+#include "interlocks.h"
typedef struct {
OPDS h;
- MYFLT *out, *xindex, *xinterpoint, *xtabndx1, *xtabndx2, *argums[VARGMAX];
+ MYFLT *out, *xindex, *xinterpoint, *xtabndx1, *xtabndx2,
+ *argums[VARGMAX];
MYFLT *table[VARGMAX];
int length;
long numOfTabs;
@@ -43,7 +44,8 @@ static int tabmorph_set (CSOUND *csound, TABMORPH *p) /*Gab 13-March-2005 */
if (UNLIKELY(ftp->flen != flength && flength != 0))
return
csound->InitError(csound,
- Str("tabmorph: all tables must have the same length!"));
+ Str("tabmorph: all tables must have the "
+ "same length!"));
flength = ftp->flen;
if (j==0) first_table = ftp->ftable;
p->table[j] = ftp->ftable;
@@ -78,7 +80,8 @@ static int tabmorph(CSOUND *csound, TABMORPH *p)
val2 = tab2val1 * (1-tabndx2frac) + tab2val2 * tabndx2frac;
interpoint = *p->xinterpoint;
- interpoint -= (int) interpoint; /* to limit to zero to 1 range */
+ interpoint = (interpoint < 0 ? 0 : (interpoint > 1.0 ? 1.0 : interpoint));
+ /* interpoint -= (int) interpoint; to limit to zero to 1 range */
*p->out = val1 * (1 - interpoint) + val2 * interpoint;
return OK;
@@ -194,7 +197,8 @@ static int atabmorphia(CSOUND *csound, TABMORPH *p) /* all arguments at a-rate *
}
-static int atabmorphi(CSOUND *csound, TABMORPH *p) /* all args k-rate except out and table index */
+ /* all args k-rate except out and table index */
+static int atabmorphi(CSOUND *csound, TABMORPH *p)
{
int n, nsmps = csound->ksmps, tablen = p->length;
@@ -258,20 +262,22 @@ static int atabmorphi(CSOUND *csound, TABMORPH *p) /* all args k-rate except out
#define S(x) sizeof(x)
-static OENTRY localops[] = {
+OENTRY tabmoroph_localops[] = {
-{ "tabmorph", S(TABMORPH), 3, "k", "kkkkm",
+{ "tabmorph", S(TABMORPH), TR|3, "k", "kkkkm",
(SUBR) tabmorph_set, (SUBR) tabmorph, NULL},
-{ "tabmorphi", S(TABMORPH), 3, "k", "kkkkm",
+{ "tabmorphi", S(TABMORPH), TR|3, "k", "kkkkm",
(SUBR) tabmorph_set, (SUBR) tabmorphi, NULL},
-{ "tabmorpha", S(TABMORPH), 5, "a", "aaaam",
+{ "tabmorpha", S(TABMORPH), TR|5, "a", "aaaam",
(SUBR) tabmorph_set, NULL, (SUBR) atabmorphia},
-{ "tabmorphak",S(TABMORPH), 5, "a", "akkkm",
+{ "tabmorphak",S(TABMORPH), TR|5, "a", "akkkm",
(SUBR) tabmorph_set, NULL, (SUBR) atabmorphi }
};
int tabmorph_init_(CSOUND *csound) {
- return csound->AppendOpcodes(csound, &(localops[0]),
- (int) (sizeof(localops) / sizeof(OENTRY)));
+ return
+ csound->AppendOpcodes(csound, &(tabmoroph_localops[0]),
+ (int) (sizeof(tabmoroph_localops) / sizeof(OENTRY)));
}
+
diff --git a/Opcodes/gab/vectorial.c b/Opcodes/gab/vectorial.c
index 43da776..3be2081 100644
--- a/Opcodes/gab/vectorial.c
+++ b/Opcodes/gab/vectorial.c
@@ -20,7 +20,9 @@
Optional arguments to some opcodes and other fixes by Andres Cabrera
and Istvan Varga.
*/
-#include "csdl.h"
+//#include "csdl.h"
+#include "csoundCore.h"
+#include "interlocks.h"
#include "vectorial.h"
#include <math.h>
@@ -437,7 +439,7 @@ static int vectorOp_set(CSOUND *csound, VECTOROP *p)
if ((elements | (long)*p->kdstoffset) < 0L ||
(elements + (long)*p->kdstoffset) > p->len) {
return csound->InitError(csound,
- Str("vectorop: Destination table length exceeded"));
+ Str("vectorop: Destination table length exceeded"));
} */
return OK;
}
@@ -451,7 +453,8 @@ static int vadd_i(CSOUND *csound, VECTOROPI *p)
ftp = csound->FTnp2Find(csound, p->ifn);
if (UNLIKELY(ftp == NULL)) {
- return csound->InitError(csound,Str("vadd_i: invalid table number %i"),
+ return csound->InitError(csound,
+ Str("vadd_i: invalid table number %i"),
(int) *p->ifn);
}
vector = ftp->ftable;
@@ -708,7 +711,8 @@ static int vectorsOp_set(CSOUND *csound, VECTORSOP *p)
p->len2 = (int32) ftp2->flen+1;/*
if ((elements | (int32) *p->kdstoffset) < 0L ||
(elements + (int32) *p->kdstoffset) > p->len1) {
- return csound->Warning(csound, Str("vectorops: Destination table length exceeded"));
+ return csound->Warning(csound,
+ Str("vectorops: Destination table length exceeded"));
}*/
return OK;
}
@@ -1532,21 +1536,21 @@ static int vexpvk(CSOUND *csound,VECTORSOP *p)
static int vexpv_i(CSOUND *csound, VECTORSOPI *p)
{
- FUNC *ftp1, *ftp2;
- MYFLT *vector1, *vector2;
- int32 i, j, n, elements, srcoffset, dstoffset, len1, len2;
+ FUNC *ftp1, *ftp2;
+ MYFLT *vector1, *vector2;
+ int32 i, j, n, elements, srcoffset, dstoffset, len1, len2;
- ftp1 = csound->FTnp2Find(csound, p->ifn1);
- ftp2 = csound->FTnp2Find(csound, p->ifn2);
- if (UNLIKELY(ftp1 == NULL)) {
+ ftp1 = csound->FTnp2Find(csound, p->ifn1);
+ ftp2 = csound->FTnp2Find(csound, p->ifn2);
+ if (UNLIKELY(ftp1 == NULL)) {
return csound->InitError(csound,
Str("vexpv_i: ifn1 invalid table number %i"),
(int) *p->ifn1);
- }
- else if (UNLIKELY(ftp2 == NULL)) {
- return csound->InitError(csound,
- Str("vexpv_i: ifn2 invalid table number %i"),
- (int) *p->ifn2);
+ }
+ else if (UNLIKELY(ftp2 == NULL)) {
+ return csound->InitError(csound,
+ Str("vexpv_i: ifn2 invalid table number %i"),
+ (int) *p->ifn2);
}
/*if (*p->ifn1 == *p->ifn2)
csound->Warning(csound, Str("vexpv_i: ifn1 = ifn2."));*/
@@ -1691,7 +1695,7 @@ static int vlimit_set(CSOUND *csound,VLIMIT *p)
p->elements = (int) *p->ielements;
}
if (UNLIKELY(p->elements > ftp->flen )) {
- return csound->InitError(csound, "vectorop: invalid num of elements");
+ return csound->InitError(csound, Str("vectorop: invalid num of elements"));
}
return OK;
}
@@ -1720,17 +1724,18 @@ static int vport_set(CSOUND *csound,VPORT *p)
elements = (p->elements = (int) *p->ielements);
if (UNLIKELY(elements > ftp->flen) )
return csound->InitError(csound,
- "vport: invalid table length or num of elements");
+ Str("vport: invalid table length or "
+ "num of elements"));
}
- else return csound->InitError(csound, "vport: invalid table");
+ else return csound->InitError(csound, Str("vport: invalid table"));
if (LIKELY(*p->ifnInit)) {
if (LIKELY((ftp = csound->FTnp2Find(csound,p->ifnInit)) != NULL)) {
vecInit = ftp->ftable;
if (UNLIKELY(elements > ftp->flen) )
- return csound->InitError(csound, "vport: invalid init table length"
- " or num of elements");
+ return csound->InitError(csound, Str("vport: invalid init table length"
+ " or num of elements"));
}
- else return csound->InitError(csound, "vport: invalid init table");
+ else return csound->InitError(csound, Str("vport: invalid init table"));
}
if (p->auxch.auxp == NULL)
csound->AuxAlloc(csound, elements * sizeof(MYFLT), &p->auxch);
@@ -1880,14 +1885,16 @@ static int vrandh_set(CSOUND *csound,VRANDH *p)
p->elements = (int) *p->ielements;
p->offset = (int) *p->idstoffset;
}
- else return csound->InitError(csound, "vrandh: Invalid table.");
+ else return csound->InitError(csound, Str("vrandh: Invalid table."));
if (UNLIKELY(*p->idstoffset >= ftp->flen))
return csound->InitError(csound,
- "vrandh: idstoffset is greater than table length.");
+ Str("vrandh: idstoffset is greater than"
+ " table length."));
p->vector = ftp->ftable + p->offset;
if (UNLIKELY(p->elements + p->offset > ftp->flen)) {
csound->Warning(csound,
- "randh: Table length exceeded, last elements discarded.");
+ Str("randh: Table length exceeded, "
+ "last elements discarded."));
p->elements = p->offset - ftp->flen;
}
}
@@ -1977,14 +1984,16 @@ static int vrandi_set(CSOUND *csound,VRANDI *p)
p->elements = (int) *p->ielements;
p->offset = (int) *p->idstoffset;
}
- else return csound->InitError(csound, "vrandi: Invalid table.");
+ else return csound->InitError(csound, Str("vrandi: Invalid table."));
if (UNLIKELY(p->offset >= ftp->flen))
return csound->InitError(csound,
- "vrandi: idstoffset is greater than table length.");
+ Str("vrandi: idstoffset is greater than"
+ "table length."));
p->vector = ftp->ftable + p->offset;
if (UNLIKELY(p->elements > ftp->flen)) {
csound->Warning(csound,
- "vrandi: Table length exceeded, last elements discarded.");
+ Str("vrandi: Table length exceeded, "
+ "last elements discarded."));
p->elements = p->offset - ftp->flen;
}
}
@@ -2054,7 +2063,7 @@ static int vrandi(CSOUND *csound,VRANDI *p)
return OK;
}
-static int vecdly_set(CSOUND *csound,VECDEL *p)
+static int vecdly_set(CSOUND *csound, VECDEL *p)
{
FUNC *ftp;
int elements = (p->elements = (int) *p->ielements), j;
@@ -2064,21 +2073,24 @@ static int vecdly_set(CSOUND *csound,VECDEL *p)
p->outvec = ftp->ftable;
elements = (p->elements = (int) *p->ielements);
if (UNLIKELY( elements > ftp->flen ))
- return csound->InitError(csound, "vecdelay: invalid num of elements");
+ return csound->InitError(csound,
+ Str("vecdelay: invalid num of elements"));
}
- else return csound->InitError(csound, "vecdly: invalid output table");
+ else return csound->InitError(csound, Str("vecdly: invalid output table"));
if (LIKELY((ftp = csound->FTnp2Find(csound,p->ifnIn)) != NULL)) {
p->invec = ftp->ftable;
if (UNLIKELY(elements > ftp->flen))
- return csound->InitError(csound, "vecdelay: invalid num of elements");
+ return csound->InitError(csound,
+ Str("vecdelay: invalid num of elements"));
}
- else return csound->InitError(csound, "vecdly: invalid input table");
+ else return csound->InitError(csound, Str("vecdly: invalid input table"));
if (LIKELY((ftp = csound->FTnp2Find(csound,p->ifnDel)) != NULL)) {
p->dlyvec = ftp->ftable;
if (UNLIKELY( elements > ftp->flen ))
- return csound->InitError(csound, "vecdelay: invalid num of elements");
+ return csound->InitError(csound,
+ Str("vecdelay: invalid num of elements"));
}
- else return csound->InitError(csound, "vecdly: invalid delay table");
+ else return csound->InitError(csound, Str("vecdly: invalid delay table"));
n = (p->maxd = (int32) (*p->imaxd * csound->ekr));
if (n == 0) n = (p->maxd = 1);
@@ -2123,7 +2135,7 @@ static int vecdly(CSOUND *csound,VECDEL *p)
MYFLT *outVec = p->outvec, *dlyVec = p->dlyvec;
int elements = p->elements;
if (UNLIKELY(buf==NULL)) {
- return csound->InitError(csound, "vecdly: not initialized");
+ return csound->InitError(csound, Str("vecdly: not initialised"));
}
do {
(*buf)[*indx] = *inVec++;
@@ -2165,7 +2177,8 @@ static int vseg_set(CSOUND *csound,VSEG *p)
p->elements = (int) *p->ielements;
}
if (UNLIKELY( p->elements > ftp->flen ))
- return csound->InitError(csound, "vlinseg/vexpseg: invalid num. of elements");
+ return csound->InitError(csound,
+ Str("vlinseg/vexpseg: invalid num. of elements"));
/* memset(p->vector, 0, sizeof(MYFLT)*p->elements); */
vector = p->vector;
@@ -2175,7 +2188,8 @@ static int vseg_set(CSOUND *csound,VSEG *p)
*vector++ = FL(0.0);
} while (--flength);
- if (UNLIKELY(**argp <= FL(0.0))) return NOTOK; /* if idur1 <= 0, skip init */
+ if (UNLIKELY(**argp <= FL(0.0)))
+ return NOTOK; /* if idur1 <= 0, skip init */
p->cursegp = segp; /* else proceed from 1st seg */
segp--;
do {
@@ -2206,7 +2220,7 @@ static int vlinseg(CSOUND *csound,VSEG *p)
MYFLT *curtab, *nxttab,curval, nxtval, durovercnt=FL(0.0), *vector;
int32 flength, upcnt;
if (UNLIKELY(p->auxch.auxp==NULL)) {
- return csound->InitError(csound, "tableseg: not initialized");
+ return csound->InitError(csound, Str("tableseg: not initialised"));
}
segp = p->cursegp;
curtab = segp->function->ftable;
@@ -2236,7 +2250,7 @@ static int vexpseg(CSOUND *csound,VSEG *p)
int32 flength, upcnt;
if (UNLIKELY(p->auxch.auxp==NULL)) {
- return csound->InitError(csound, "tablexseg: not initialized");
+ return csound->InitError(csound, Str("tablexseg: not initialised"));
}
segp = p->cursegp;
curtab = segp->function->ftable;
@@ -2283,7 +2297,8 @@ static int vphaseseg_set(CSOUND *csound,VPSEG *p)
p->elements = (int) *p->ielements;
}
if ( p->elements > ftp->flen )
- return csound->InitError(csound, "vphaseseg: invalid num. of elements");
+ return csound->InitError(csound,
+ Str("vphaseseg: invalid num. of elements"));
vector = p->vector;
flength = p->elements;
@@ -2368,7 +2383,6 @@ static int vphaseseg(CSOUND *csound,VPSEG *p)
static int kdel_set(CSOUND *csound,KDEL *p)
{
uint32 n;
- MYFLT *buf;
n = (p->maxd = (int32) (*p->imaxd * csound->ekr));
if (n == 0) n = (p->maxd = 1);
@@ -2389,7 +2403,7 @@ static int kdelay(CSOUND *csound,KDEL *p)
MYFLT *buf = (MYFLT *)p->aux.auxp, fv1, fv2;
if (UNLIKELY(buf==NULL)) {
- return csound->InitError(csound, "vdelayk: not initialized");
+ return csound->InitError(csound, Str("vdelayk: not initialised"));
}
indx = p->left;
@@ -2422,19 +2436,20 @@ static int ca_set(CSOUND *csound,CELLA *p)
p->outVec = ftp->ftable;
elements = (p->elements = (int) *p->ielements);
if (UNLIKELY( elements > ftp->flen ))
- return csound->InitError(csound, "cella: invalid num of elements");
+ return csound->InitError(csound, Str("cella: invalid num of elements"));
}
- else return csound->InitError(csound, "cella: invalid output table");
+ else return csound->InitError(csound, Str("cella: invalid output table"));
if (LIKELY((ftp = csound->FTnp2Find(csound,p->initStateFunc)) != NULL)) {
initVec = (p->initVec = ftp->ftable);
if (UNLIKELY(elements > ftp->flen ))
- return csound->InitError(csound, "cella: invalid num of elements");
+ return csound->InitError(csound, Str("cella: invalid num of elements"));
}
- else return csound->InitError(csound, "cella: invalid initial state table");
+ else return csound->InitError(csound,
+ Str("cella: invalid initial state table"));
if (LIKELY((ftp = csound->FTnp2Find(csound,p->iRuleFunc)) != NULL)) {
p->ruleVec = ftp->ftable;
}
- else return csound->InitError(csound, "cella: invalid rule table");
+ else return csound->InitError(csound, Str("cella: invalid rule table"));
if (p->auxch.auxp == NULL)
csound->AuxAlloc(csound, elements * sizeof(MYFLT) * 2, &p->auxch);
@@ -2498,59 +2513,61 @@ static int ca(CSOUND *csound,CELLA *p)
#define S(x) sizeof(x)
-static OENTRY localops[] = {
- { "vtablei", S(MTABLEI), 1, "", "iiiim", (SUBR)mtable_i, NULL },
- { "vtablek", S(MTABLE), 3, "", "kkkiz", (SUBR)mtable_set, (SUBR)mtable_k, NULL },
- { "vtablea", S(MTABLE), 5, "", "akkiy", (SUBR)mtable_set, NULL, (SUBR)mtable_a },
- { "vtablewi", S(MTABLEIW), 1, "", "iiim", (SUBR)mtablew_i, NULL },
- { "vtablewk", S(MTABLEW), 3, "", "kkiz", (SUBR)mtablew_set, (SUBR)mtablew_k, NULL },
- { "vtablewa", S(MTABLEW), 5, "", "akiy", (SUBR)mtablew_set, NULL, (SUBR)mtablew_a },
- { "vtabi", S(MTABI), 1, "", "iim", (SUBR)mtab_i, NULL },
- { "vtabk", S(MTAB), 3, "", "kiz", (SUBR)mtab_set, (SUBR)mtab_k, NULL },
- { "vtaba", S(MTAB), 5, "", "aiy", (SUBR)mtab_set, NULL, (SUBR)mtab_a },
- { "vtabwi", S(MTABIW), 1, "", "iim", (SUBR)mtabw_i, NULL },
- { "vtabwk", S(MTABW), 3, "", "kiz", (SUBR)mtabw_set, (SUBR)mtabw_k, NULL },
- { "vtabwa", S(MTABW), 5, "", "aiy", (SUBR)mtabw_set, NULL, (SUBR)mtabw_a },
-
- { "vadd", S(VECTOROP), 3, "", "ikkOO", (SUBR)vectorOp_set, (SUBR) vaddk },
- { "vadd_i", S(VECTOROPI), 1, "", "iiio", (SUBR) vadd_i, NULL, NULL },
- { "vmult", S(VECTOROP), 3, "", "ikkOO", (SUBR)vectorOp_set, (SUBR) vmultk},
- { "vmult_i", S(VECTOROPI), 1, "", "iiio", (SUBR) vmult_i, NULL, NULL },
- { "vpow", S(VECTOROP), 3, "", "ikkOO", (SUBR)vectorOp_set, (SUBR) vpowk },
- { "vpow_i", S(VECTOROPI), 1, "", "iiio", (SUBR) vpow_i, NULL, NULL },
- { "vexp", S(VECTOROP), 3, "", "ikkOO", (SUBR)vectorOp_set, (SUBR) vexpk },
- { "vexp_i", S(VECTOROPI), 1, "", "iiio", (SUBR) vexp_i, NULL, NULL },
- { "vaddv", S(VECTORSOP), 3, "", "iikOOO", (SUBR)vectorsOp_set, (SUBR) vaddvk },
- { "vaddv_i", S(VECTORSOPI), 1, "", "iiioo", (SUBR)vaddv_i, NULL, NULL },
- { "vsubv", S(VECTORSOP), 3, "", "iikOOO", (SUBR)vectorsOp_set, (SUBR) vsubvk },
- { "vsubv_i", S(VECTORSOPI), 1, "", "iiioo", (SUBR)vsubv_i, NULL, NULL },
- { "vmultv", S(VECTORSOP), 3, "", "iikOOO", (SUBR)vectorsOp_set, (SUBR) vmultvk},
- { "vmultv_i", S(VECTORSOPI), 1, "", "iiioo", (SUBR)vmultv_i, NULL, NULL },
- { "vdivv", S(VECTORSOP), 3, "", "iikOOO", (SUBR)vectorsOp_set, (SUBR) vdivvk },
- { "vdivv_i", S(VECTORSOPI), 1, "", "iiioo", (SUBR)vdivv_i, NULL, NULL },
- { "vpowv", S(VECTORSOP), 3, "", "iikOOO", (SUBR)vectorsOp_set, (SUBR) vpowvk },
- { "vpowv_i", S(VECTORSOPI), 1, "", "iiioo", (SUBR)vpowv_i, NULL, NULL },
- { "vexpv", S(VECTORSOP), 3, "", "iikOOO", (SUBR)vectorsOp_set, (SUBR) vexpvk },
- { "vexpv_i", S(VECTORSOPI), 1, "", "iiioo", (SUBR)vexpv_i, NULL, NULL },
- { "vcopy", S(VECTORSOP), 3, "", "iikOOO", (SUBR)vectorsOp_set, (SUBR) vcopy },
- { "vcopy_i", S(VECTORSOP), 1, "", "iiioo", (SUBR) vcopy_i, NULL, NULL },
- { "vmap", S(VECTORSOPI), 1, "", "iiioo", (SUBR)vmap_i, NULL, NULL },
- { "vlimit", S(VLIMIT), 3, "", "ikki",(SUBR)vlimit_set, (SUBR)vlimit },
- { "vwrap", S(VLIMIT), 3, "", "ikki",(SUBR)vlimit_set, (SUBR) vwrap },
+OENTRY vectorial_localops[] = {
+ { "vtablei", S(MTABLEI), TR|1, "", "iiiim", (SUBR)mtable_i, NULL },
+ { "vtablek", S(MTABLE), TR|3, "", "kkkiz", (SUBR)mtable_set, (SUBR)mtable_k, NULL },
+ { "vtablea", S(MTABLE), TR|5, "", "akkiy", (SUBR)mtable_set, NULL, (SUBR)mtable_a },
+ { "vtablewi", S(MTABLEIW), TB|1, "", "iiim", (SUBR)mtablew_i, NULL },
+ { "vtablewk", S(MTABLEW), TB|3, "", "kkiz", (SUBR)mtablew_set, (SUBR)mtablew_k, NULL },
+ { "vtablewa", S(MTABLEW), TB|5, "", "akiy", (SUBR)mtablew_set, NULL, (SUBR)mtablew_a },
+ { "vtabi", S(MTABI), TR|1, "", "iim", (SUBR)mtab_i, NULL },
+ { "vtabk", S(MTAB), TR|3, "", "kiz", (SUBR)mtab_set, (SUBR)mtab_k, NULL },
+ { "vtaba", S(MTAB), TR|5, "", "aiy", (SUBR)mtab_set, NULL, (SUBR)mtab_a },
+ { "vtabwi", S(MTABIW), TB|1, "", "iim", (SUBR)mtabw_i, NULL },
+ { "vtabwk", S(MTABW), TB|3, "", "kiz", (SUBR)mtabw_set, (SUBR)mtabw_k, NULL },
+ { "vtabwa", S(MTABW), TB|5, "", "aiy", (SUBR)mtabw_set, NULL, (SUBR)mtabw_a },
+
+ { "vadd", S(VECTOROP), TB|3, "", "ikkOO", (SUBR)vectorOp_set, (SUBR) vaddk },
+ { "vadd_i", S(VECTOROPI), TB|1, "", "iiio", (SUBR) vadd_i, NULL, NULL },
+ { "vmult", S(VECTOROP), TB|3, "", "ikkOO", (SUBR)vectorOp_set, (SUBR) vmultk},
+ { "vmult_i", S(VECTOROPI), TB|1, "", "iiio", (SUBR) vmult_i, NULL, NULL },
+ { "vpow", S(VECTOROP), TB|3, "", "ikkOO", (SUBR)vectorOp_set, (SUBR) vpowk },
+ { "vpow_i", S(VECTOROPI), TB|1, "", "iiio", (SUBR) vpow_i, NULL, NULL },
+ { "vexp", S(VECTOROP), TB|3, "", "ikkOO", (SUBR)vectorOp_set, (SUBR) vexpk },
+ { "vexp_i", S(VECTOROPI), TB|1, "", "iiio", (SUBR) vexp_i, NULL, NULL },
+ { "vaddv", S(VECTORSOP), TB|3, "", "iikOOO", (SUBR)vectorsOp_set, (SUBR) vaddvk },
+ { "vaddv_i", S(VECTORSOPI), TB|1, "", "iiioo", (SUBR)vaddv_i, NULL, NULL },
+ { "vsubv", S(VECTORSOP), TB|3, "", "iikOOO", (SUBR)vectorsOp_set, (SUBR) vsubvk },
+ { "vsubv_i", S(VECTORSOPI), TB|1, "", "iiioo", (SUBR)vsubv_i, NULL, NULL },
+ { "vmultv", S(VECTORSOP), TB|3, "", "iikOOO", (SUBR)vectorsOp_set, (SUBR) vmultvk},
+ { "vmultv_i", S(VECTORSOPI), TB|1, "", "iiioo", (SUBR)vmultv_i, NULL, NULL },
+ { "vdivv", S(VECTORSOP), TB| 3, "", "iikOOO", (SUBR)vectorsOp_set, (SUBR) vdivvk },
+ { "vdivv_i", S(VECTORSOPI), TB|1, "", "iiioo", (SUBR)vdivv_i, NULL, NULL },
+ { "vpowv", S(VECTORSOP), TB|3, "", "iikOOO", (SUBR)vectorsOp_set, (SUBR) vpowvk },
+ { "vpowv_i", S(VECTORSOPI), TB|1, "", "iiioo", (SUBR)vpowv_i, NULL, NULL },
+ { "vexpv", S(VECTORSOP), TB|3, "", "iikOOO", (SUBR)vectorsOp_set, (SUBR) vexpvk },
+ { "vexpv_i", S(VECTORSOPI), TB|1, "", "iiioo", (SUBR)vexpv_i, NULL, NULL },
+ { "vcopy", S(VECTORSOP), TB|3, "", "iikOOO", (SUBR)vectorsOp_set, (SUBR) vcopy },
+ { "vcopy_i", S(VECTORSOP), TB|1, "", "iiioo", (SUBR) vcopy_i, NULL, NULL },
+ { "vmap", S(VECTORSOPI), TB|1, "", "iiioo", (SUBR)vmap_i, NULL, NULL },
+ { "vlimit", S(VLIMIT), TR|3, "", "ikki",(SUBR)vlimit_set, (SUBR)vlimit },
+ { "vwrap", S(VLIMIT), TB|3, "", "ikki",(SUBR)vlimit_set, (SUBR) vwrap },
{ "vmirror", S(VLIMIT), 3, "", "ikki",(SUBR)vlimit_set, (SUBR)vmirror },
- { "vlinseg", S(VSEG), 3, "", "iin", (SUBR)vseg_set, (SUBR)vlinseg },
+ { "vlinseg", S(VSEG), TB|3, "", "iin", (SUBR)vseg_set, (SUBR)vlinseg },
{ "vexpseg", S(VSEG), 3, "", "iin", (SUBR)vseg_set, (SUBR)vexpseg },
- { "vrandh", S(VRANDH), 3, "", "ikkiovoo",(SUBR)vrandh_set, (SUBR) vrandh },
- { "vrandi", S(VRANDI), 3, "", "ikkiovoo",(SUBR)vrandi_set, (SUBR)vrandi },
- { "vport", S(VPORT), 3, "", "ikio",(SUBR)vport_set, (SUBR)vport },
+ { "vrandh", S(VRANDH), TB|3, "", "ikkiovoo",(SUBR)vrandh_set, (SUBR) vrandh},
+ { "vrandi", S(VRANDI), TB|3, "", "ikkiovoo",(SUBR)vrandi_set, (SUBR)vrandi },
+ { "vport", S(VPORT), TB|3, "", "ikio",(SUBR)vport_set, (SUBR)vport },
{ "vecdelay", S(VECDEL), 3, "", "iiiiio",(SUBR)vecdly_set, (SUBR)vecdly },
{ "vdelayk", S(KDEL), 3, "k", "kkioo",(SUBR)kdel_set, (SUBR)kdelay },
- { "vcella", S(CELLA), 3, "", "kkiiiiip",(SUBR)ca_set, (SUBR)ca }
+ { "vcella", S(CELLA), TR|3, "", "kkiiiiip",(SUBR)ca_set, (SUBR)ca }
};
int gab_vectorial_init_(CSOUND *csound)
{
- return csound->AppendOpcodes(csound, &(localops[0]),
- (int) (sizeof(localops) / sizeof(OENTRY)));
+ return
+ csound->AppendOpcodes(csound, &(vectorial_localops[0]),
+ (int) (sizeof(vectorial_localops) / sizeof(OENTRY)));
}
+
diff --git a/Opcodes/gab/vectorial.h b/Opcodes/gab/vectorial.h
index 3a31bfb..8b0092a 100644
--- a/Opcodes/gab/vectorial.h
+++ b/Opcodes/gab/vectorial.h
@@ -168,7 +168,7 @@ typedef struct {
MYFLT *ifnOut, *ifnIn, *ifnDel, *ielements, *imaxd, *istod;
AUXCH aux;
MYFLT **buf, *outvec, *invec, *dlyvec;
- long *left, maxd;
+ int32 *left, maxd;
int elements;
} VECDEL;
diff --git a/Opcodes/grain.c b/Opcodes/grain.c
index 8638193..c7eb668 100644
--- a/Opcodes/grain.c
+++ b/Opcodes/grain.c
@@ -155,7 +155,7 @@ static int ags(CSOUND *csound, PGRA *p) /* Granular U.G. a-rate main routine */
#define S(x) sizeof(x)
static OENTRY localops[] = {
-{ "grain", S(PGRA), 5, "a", "xxxkkkiiio", (SUBR)agsset, NULL, (SUBR)ags }
+{ "grain", S(PGRA), TR|5, "a", "xxxkkkiiio", (SUBR)agsset, NULL, (SUBR)ags }
};
int grain_init_(CSOUND *csound)
diff --git a/Opcodes/grain4.c b/Opcodes/grain4.c
index d66c7a7..17cfd3c 100644
--- a/Opcodes/grain4.c
+++ b/Opcodes/grain4.c
@@ -33,7 +33,9 @@
/* envelop rise and decade curve */
/* Minor changes by John Fitch Dec 1995 */
-#include "csdl.h"
+// #include "csdl.h"
+#include "csoundCore.h"
+#include "interlocks.h"
#include "grain4.h"
#include <math.h>
@@ -261,7 +263,7 @@ static int graingenv4(CSOUND *csound, GRAINV4 *p)
MYFLT *ar, *ftbl, *ftbl_env=NULL;
int n, nsmps = csound->ksmps;
int nvoice;
- int32 flen, tmplong1, tmplong2, tmplong3, tmpfpnt, flen_env=0;
+ int32 tmplong1, tmplong2, tmplong3, tmpfpnt, flen_env=0;
MYFLT fract, v1, tmpfloat1;
int32 att_len, dec_len, att_sus;
MYFLT envlop;
@@ -275,7 +277,6 @@ static int graingenv4(CSOUND *csound, GRAINV4 *p)
/* Recover parameters from previous call.... */
ftp = p->ftp;
if (UNLIKELY(p->ftp==NULL)) goto err1; /* RWD fix */
- flen = ftp->flen;
ftbl = ftp->ftable;
if (*p->ifnenv > 0) {
@@ -429,10 +430,10 @@ static MYFLT grand( GRAINV4 *p)
#define S(x) sizeof(x)
-static OENTRY localops[] = {
-{ "granule", S(GRAINV4), 5, "a", "xiiiiiiiiikikiiivppppo",
- (SUBR)grainsetv4, NULL, (SUBR)graingenv4}
+static OENTRY grain4_localops[] = {
+ { "granule", S(GRAINV4), TR|5, "a", "xiiiiiiiiikikiiivppppo",
+ (SUBR)grainsetv4, NULL, (SUBR)graingenv4},
};
-LINKAGE
+LINKAGE1(grain4_localops)
diff --git a/Opcodes/harmon.c b/Opcodes/harmon.c
index 29dce63..9725c87 100644
--- a/Opcodes/harmon.c
+++ b/Opcodes/harmon.c
@@ -21,7 +21,9 @@
02111-1307 USA
*/
-#include "csdl.h"
+#include "csoundCore.h"
+#include "interlocks.h"
+
#include <math.h>
typedef struct {
@@ -131,7 +133,7 @@ static int harmon234(CSOUND *csound, HARM234 *p)
MYFLT koct, vocamp, diramp;
PULDAT *endp;
VOCDAT *vdp;
- int16 n, nsmps, oflow = 0;
+ int16 nsmps, oflow = 0;
if ((koct = *p->koct) != p->prvoct) { /* if new pitch estimate */
if (koct >= p->minoct) { /* above requested low */
@@ -432,11 +434,11 @@ int harmon4(CSOUND *csound, HARMON4 *p) { return harmon234(csound, &p->hrmdat);}
#define S(x) sizeof(x)
-static OENTRY localops[] = {
+static OENTRY harmon_localops[] = {
{ "harmon2",S(HARMON2),5, "a", "akkkiip", (SUBR)harm2set,NULL, (SUBR)harmon2 },
{ "harmon3",S(HARMON3),5, "a", "akkkkiip", (SUBR)harm3set,NULL, (SUBR)harmon3 },
- { "harmon4",S(HARMON4),5, "a", "akkkkkiip",(SUBR)harm4set,NULL, (SUBR)harmon4 }
+ { "harmon4",S(HARMON4),5, "a", "akkkkkiip",(SUBR)harm4set,NULL, (SUBR)harmon4 },
};
-LINKAGE
+LINKAGE1(harmon_localops)
diff --git a/Opcodes/hrtfearly.c b/Opcodes/hrtfearly.c
new file mode 100644
index 0000000..4e95070
--- /dev/null
+++ b/Opcodes/hrtfearly.c
@@ -0,0 +1,1806 @@
+/*
+Brian Carty
+PhD Code August 2010
+binaural reverb: early reflections
+
+ This file is part of Csound.
+
+ The Csound Library is free software; you can redistribute it
+ and/or modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ Csound is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with Csound; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA
+*/
+
+/* #include "csdl.h" */
+#include "csoundCore.h"
+#include "interlocks.h"
+
+#define SQUARE(X) ((X)*(X))
+
+/* definitions, from mit */
+#define minelev (-40)
+#define elevincrement (10)
+
+static const int elevationarray[14] =
+ {56, 60, 72, 72, 72, 72, 72, 60, 56, 45, 36, 24, 12, 1 };
+
+/* for ppc byte switch */
+#ifdef WORDS_BIGENDIAN
+static int swap4bytes(CSOUND* csound, MEMFIL* mfp)
+{
+ char c1, c2, c3, c4;
+ char *p = mfp->beginp;
+ int size = mfp->length;
+
+ while (size >= 4)
+ {
+ c1 = p[0]; c2 = p[1]; c3 = p[2]; c4 = p[3];
+ p[0] = c4; p[1] = c3; p[2] = c2; p[3] = c1;
+ size -= 4; p +=4;
+ }
+
+ return OK;
+}
+#else
+static int (*swap4bytes)(CSOUND*, MEMFIL*) = NULL;
+#endif
+
+/* low pass filter for overall surface shape */
+MYFLT filter(MYFLT* sig, MYFLT highcoeff, MYFLT lowcoeff,
+ MYFLT *del, int vecsize, MYFLT sr)
+{
+ MYFLT costh, coef;
+ int i;
+
+ /* setup filter */
+ MYFLT T = FL(1.0) / sr;
+ MYFLT twopioversr = FL(2.0 * PI * T);
+ MYFLT freq;
+ MYFLT check;
+ MYFLT scale, nyqresponse, irttwo, highresponse, lowresponse, cosw,
+ a, b, c, x, y;
+
+ irttwo = FL(1.0) / SQRT(FL(2.0));
+
+ /* simple filter deals with difference in low and high */
+ highresponse = FL(1.0) - highcoeff;
+ lowresponse = FL(1.0) - lowcoeff;
+ /* scale factor: walls assumed to be low pass */
+ scale = lowresponse;
+ nyqresponse = highresponse + lowcoeff;
+ /* should always be lowpass! */
+ if(nyqresponse > irttwo)
+ nyqresponse = irttwo;
+
+ /* calculate cutoff, according to nyqresponse */
+ /* w = twopioversr * f (= sr / (MYFLT)2.0)
+ (w = pi in the case of nyq...2pi/sr * sr/2) */
+ /* cosw = (MYFLT)cos(w);... = -1 in case of nyq */
+ cosw = -FL(1.0);
+
+ a = c = SQUARE(nyqresponse) - FL(1.0);
+ b = (FL(2.0) * cosw * SQUARE(nyqresponse)) - FL(2.0);
+ /* '+' and '-' sqrt in quadratic equation give equal results in this scenario:
+ working backwards to find cutoff freq of simple tone filter! */
+ x = (-b + (SQRT(SQUARE(b) - FL(4.0) * a * c))) / (FL(2.0) * a);
+ y = (-SQUARE(x) - FL(1.0)) / (FL(2.0) * x);
+
+ check = FL(2.0) - y;
+ /* check for legal acos arg */
+ if(check < -FL(1.0))
+ check = -FL(1.0);
+ freq = FL(acos(check));
+ freq /= twopioversr;
+
+ /* filter */
+ costh = FL(2.0) - COS(freq * twopioversr);
+ coef = SQRT(costh * costh - 1.0) - costh;
+
+ for(i = 0; i < vecsize; i++)
+ {
+ /* filter */
+ sig[i] = (sig[i] * (1 + coef) - *del * coef);
+ /* scale */
+ sig[i] *= scale;
+ /* store */
+ *del = sig[i];
+ }
+
+ return *sig;
+}
+
+/* band pass for surface detail, from csound eqfil */
+MYFLT band(MYFLT* sig, MYFLT cfreq, MYFLT bw, MYFLT g, MYFLT *del,
+ int vecsize, MYFLT sr)
+{
+ MYFLT T = FL(1.0) / sr;
+ MYFLT pioversr = FL(PI) * T;
+ MYFLT a = (COS(cfreq * pioversr * 2.0));
+ MYFLT b = (TAN(bw * pioversr));
+ MYFLT c = (FL(1.0) - b) / (FL(1.0) + b);
+ MYFLT w, y;
+ int i;
+
+ for(i = 0; i < vecsize; i++)
+ {
+ w = sig[i] + a * (FL(1.0) + c) * del[0] - c * del[1];
+ y = w * c - a * (FL(1.0) + c) * del[0] + del[1];
+ sig[i] = FL(0.5) * (y + sig[i] + g * (sig[i] - y));
+ del[1] = del[0];
+ del[0] = w;
+ }
+
+ return *sig;
+}
+
+typedef struct
+{
+ OPDS h;
+ /* out l/r, low rt60, high rt60, amp, delay for latediffuse */
+ MYFLT *outsigl, *outsigr, *irt60low, *irt60high, *imfp;
+ /* input, source, listener, hrtf files, default room, [fadelength,
+ sr, order, threed, headrot, roomsize, wall high and low absorb
+ coeffs, gain for 3 band pass, same for floor and ceiling] */
+ MYFLT *in, *srcx, *srcy, *srcz, *lstnrx, *lstnry, *lstnrz, *ifilel, *ifiler,
+ *idefroom, *ofade, *osr, *porder, *othreed, *Oheadrot,
+ *ormx, *ormy, *ormz, *owlh, *owll, *owlg1, *owlg2, *owlg3, *oflh,
+ *ofll, *oflg1, *oflg2, *oflg3,*oclh, *ocll, *oclg1, *oclg2, *oclg3;
+
+ /* check if relative source has changed, to avoid recalculations */
+ MYFLT srcxv, srcyv, srczv, lstnrxv, lstnryv, lstnrzv;
+ MYFLT srcxk, srcyk, srczk, lstnrxk, lstnryk, lstnrzk;
+ MYFLT rotatev;
+
+ /* processing buffer sizes, depends on sr */
+ int irlength, irlengthpad, overlapsize;
+ MYFLT sr;
+ int counter;
+
+ /* crossfade preparation and checks */
+ int fade, fadebuffer;
+ int initialfade;
+
+ /* interpolation buffer declaration */
+ AUXCH lowl1, lowr1, lowl2, lowr2;
+ AUXCH highl1, highr1, highl2, highr2;
+ AUXCH hrtflinterp, hrtfrinterp, hrtflpad, hrtfrpad;
+ AUXCH hrtflpadold, hrtfrpadold;
+
+ /* convolution and in/output buffers */
+ AUXCH inbuf,inbufpad;
+ AUXCH outlspec, outrspec;
+ AUXCH outlspecold, outrspecold;
+ AUXCH overlapl, overlapr;
+ AUXCH overlaplold, overlaprold;
+
+ /* no of impulses based on order */
+ int impulses, order;
+ int M;
+ /* 3d check*/
+ int threed;
+
+ /* speed of sound*/
+ MYFLT c;
+
+ /* Image Model*/
+ MYFLT rmx, rmy, rmz;
+ int maxdelsamps;
+
+ /* for each reflection*/
+ AUXCH hrtflpadspec, hrtfrpadspec, hrtflpadspecold, hrtfrpadspecold;
+ AUXCH outl, outr, outlold, outrold;
+ AUXCH currentphasel, currentphaser;
+ AUXCH dell, delr;
+ AUXCH tempsrcx, tempsrcy, tempsrcz;
+ AUXCH dist;
+ AUXCH dtime;
+ AUXCH amp;
+
+ /* temp o/p buffers */
+ AUXCH predell, predelr;
+
+ /* processing values that need to be kept for each reflection*/
+ /* dynamic values based on no. fo impulses*/
+ AUXCH oldelevindex, oldangleindex;
+ AUXCH cross, l, delp, skipdel;
+ AUXCH vdt;
+
+ /* wall details */
+ MYFLT wallcoeflow, wallcoefhigh, wallg1, wallg2, wallg3;
+ MYFLT floorcoeflow, floorcoefhigh, floorg1, floorg2, floorg3;
+ MYFLT ceilingcoeflow, ceilingcoefhigh, ceilingg1, ceilingg2, ceilingg3;
+ /* wall filter q*/
+ MYFLT q;
+
+ /* file pointers*/
+ float *fpbeginl, *fpbeginr;
+
+} early;
+
+static int early_init(CSOUND *csound, early *p)
+{
+ /* iterator */
+ int i;
+
+ /* left and right data files: spectral mag, phase format.*/
+ MEMFIL *fpl=NULL, *fpr=NULL;
+ char filel[MAXNAME],filer[MAXNAME];
+
+ /* processing sizes*/
+ int irlength = 0, irlengthpad = 0, overlapsize = 0;
+
+ /* walls: surface area*/
+ MYFLT wallS1, wallS2, cfS;
+
+ /* rt60 */
+ MYFLT Salphalow, Salphahigh;
+ MYFLT vol;
+
+ /* room */
+ MYFLT rmx, rmy, rmz;
+ /* default room */
+ int defroom;
+
+ /* dynamic values, based on number of impulses...*/
+ int *oldelevindex;
+ int *oldangleindex;
+ int *skipdel;
+
+ /* order calculation */
+ int impulses = 1;
+ int temp = 2;
+
+ /* defs for delay lines */
+ MYFLT maxdist = FL(0.0);
+ MYFLT maxdtime;
+ int maxdelsamps;
+
+ /* late tail */
+ MYFLT meanfreepath;
+ MYFLT surfacearea = FL(0.0);
+
+ /* setup defaults for optional parameters */
+ int fade = (int)*p->ofade;
+ MYFLT sr = *p->osr;
+ int threed = (int)*p->othreed;
+ int order = (int)*p->porder;
+
+ /* fade length: default 8, max 24, min 1 (fade is a local variable)*/
+ if(fade < 1 || fade > 24)
+ fade = 8;
+ p->fade = fade;
+
+ /* threed defaults to 2d! */
+ if(threed < 0 || threed > 1)
+ threed = 0;
+ p->threed = threed;
+
+ /* order: max 4, default 1 */
+ if(order < 0 || order > 4)
+ order = 1;
+ p->order = order;
+
+ /* sr, defualt 44100 */
+ if(sr != 44100 && sr != 48000 && sr != 96000)
+ sr = 44100;
+ p->sr = sr;
+
+ if (UNLIKELY(csound->esr != sr))
+ csound->Message(csound,
+ Str("\n\nWARNING!!:\nOrchestra SR not compatible "
+ "with HRTF processing SR of: %.0f\n\n"), sr);
+
+ /* setup as per sr */
+ if(sr == 44100 || sr == 48000)
+ {
+ irlength = 128;
+ irlengthpad = 256;
+ overlapsize = (irlength - 1);
+ }
+ else if(sr == 96000)
+ {
+ irlength = 256;
+ irlengthpad = 512;
+ overlapsize = (irlength - 1);
+ }
+
+ /* copy in string name...*/
+ strncpy(filel, (char*) p->ifilel, MAXNAME);
+ strncpy(filer, (char*) p->ifiler, MAXNAME);
+
+ /* reading files, with byte swap */
+ fpl = csound->ldmemfile2withCB(csound, filel, CSFTYPE_FLOATS_BINARY,
+ swap4bytes);
+ if (UNLIKELY(fpl == NULL))
+ return
+ csound->InitError(csound,
+ Str("\n\n\nCannot load left data file, exiting\n\n"));
+
+ fpr = csound->ldmemfile2withCB(csound, filer, CSFTYPE_FLOATS_BINARY,
+ swap4bytes);
+ if (UNLIKELY(fpr == NULL))
+ return
+ csound->InitError(csound,
+ Str("\n\n\nCannot load right data file, exiting\n\n"));
+
+ /* file handles */
+ p->fpbeginl = (float *) fpl->beginp;
+ p->fpbeginr = (float *) fpr->beginp;
+
+ /* setup structure values */
+ p->irlength = irlength;
+ p->irlengthpad = irlengthpad;
+ p->overlapsize = overlapsize;
+ p->c = 344.0;
+
+ /* zero structure values */
+ p->counter = 0;
+ p->initialfade = 0;
+ p->M = 0;
+
+ /* the amount of buffers to fade over */
+ p->fadebuffer = (int)fade * irlength;
+
+ defroom = (int)*p->idefroom;
+ /* 3 default rooms allowed*/
+ if(defroom > 3)
+ defroom = 1;
+
+ /* setup wall coeffs: walls: plasterboard, ceiling: painted plaster,
+ floor: carpet
+ if any default room is chosen, default parameters for walls/ceiling/floor */
+ if(defroom)
+ {
+ p->wallcoefhigh = FL(0.3);
+ p->wallcoeflow = FL(0.1);
+ p->wallg1 = FL(0.75);
+ p->wallg2 = FL(0.95);
+ p->wallg3 = FL(0.9);
+ p->floorcoefhigh = FL(0.6);
+ p->floorcoeflow = FL(0.1);
+ p->floorg1 = FL(0.95);
+ p->floorg2 = FL(0.6);
+ p->floorg3 = FL(0.35);
+ p->ceilingcoefhigh = FL(0.2);
+ p->ceilingcoeflow = FL(0.1);
+ p->ceilingg1 = FL(1.0);
+ p->ceilingg2 = FL(1.0);
+ p->ceilingg3 = FL(1.0);
+ }
+ /* otherwise use values, if valid */
+ else
+ {
+ p->wallcoefhigh = (*p->owlh > FL(0.0) && *p->owlh < FL(1.0)) ?
+ *p->owlh : FL(0.3);
+ p->wallcoeflow = (*p->owll > FL(0.0) && *p->owll < FL(1.0)) ?
+ *p->owll : FL(0.1);
+ p->wallg1 = (*p->owlg1 > FL(0.0) && *p->owlg1 < FL(10.0)) ?
+ *p->owlg1 : FL(0.75);
+ p->wallg2 = (*p->owlg2 > FL(0.0) && *p->owlg2 < FL(10.0)) ?
+ *p->owlg2 : FL(0.95);
+ p->wallg3 = (*p->owlg3 > FL(0.0) && *p->owlg3 < FL(10.0)) ?
+ *p->owlg3 : FL(0.9);
+ p->floorcoefhigh = (*p->oflh > FL(0.0) && *p->oflh < FL(1.0)) ?
+ *p->oflh : FL(0.6);
+ p->floorcoeflow = (*p->ofll > FL(0.0) && *p->ofll < FL(1.0)) ?
+ *p->ofll : FL(0.1);
+ p->floorg1 = (*p->oflg1 > FL(0.0) && *p->oflg1 < FL(10.0)) ?
+ *p->oflg1 : FL(0.95);
+ p->floorg2 = (*p->oflg2 > FL(0.0) && *p->oflg2 < FL(10.0)) ?
+ *p->oflg2 : FL(0.6);
+ p->floorg3 = (*p->oflg3 > FL(0.0) && *p->oflg3 < FL(10.0)) ?
+ *p->oflg3 : FL(0.35);
+ p->ceilingcoefhigh = (*p->oclh > FL(0.0) && *p->oclh < FL(1.0)) ?
+ *p->oclh : FL(0.2);
+ p->ceilingcoeflow = (*p->ocll > FL(0.0) && *p->ocll < FL(1.0)) ?
+ *p->ocll : FL(0.1);
+ p->ceilingg1 = (*p->oclg1 > FL(0.0) && *p->oclg1 < FL(10.0)) ?
+ *p->oclg1 : FL(1.0);
+ p->ceilingg2 = (*p->oclg2 > FL(0.0) && *p->oclg2 < FL(10.0)) ?
+ *p->oclg2 : FL(1.0);
+ p->ceilingg3 = (*p->oclg3 > FL(0.0) && *p->oclg3 < FL(10.0)) ?
+ *p->oclg3 : FL(1.0);
+ }
+
+ /* medium room */
+ if(defroom == 1)
+ {
+ rmx = 10;
+ rmy = 10;
+ rmz = 3;
+ }
+ /* small */
+ else if(defroom == 2)
+ {
+ rmx = 3;
+ rmy = 4;
+ rmz = 3;
+ }
+ /* large */
+ else if(defroom == 3)
+ {
+ rmx = 20;
+ rmy = 25;
+ rmz = 7;
+ }
+
+ /* read values if they exist, use medium if not valid (must be at
+ least a 2*2*2 room! */
+ else
+ {
+ rmx = *p->ormx >= FL(2.0) ? *p->ormx : 10;
+ rmy = *p->ormy >= FL(2.0) ? *p->ormy : 10;
+ rmz = *p->ormz >= FL(2.0) ? *p->ormz : 4;
+ }
+
+ /* store */
+ p->rmx = rmx;
+ p->rmy = rmy;
+ p->rmz = rmz;
+
+ /* how many sources? */
+ if(threed)
+ {
+ for(i = 1; i <= order; i++)
+ {
+ impulses += (4 * i);
+ if(i <= (order - 1))
+ /* sources = 2d impulses for order, plus 2 * each
+ preceding no of impulses
+ eg order 2: 2d = 1 + 4 + 8 = 13, 3d + 2*5 + 2 = 25*/
+ temp += 2*impulses;
+ else
+ impulses = impulses + temp;
+ }
+ }
+ else
+ {
+ for(i = 1; i <= order; i++)
+ /* there will be 4 * order additional impulses for each order*/
+ impulses += (4*i);
+ }
+ p->impulses = impulses;
+
+ /* allocate memory, reuse if possible: interpolation buffers */
+ if (!p->lowl1.auxp || p->lowl1.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->lowl1);
+ if (!p->lowr1.auxp || p->lowr1.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->lowr1);
+ if (!p->lowl2.auxp || p->lowl2.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->lowl2);
+ if (!p->lowr2.auxp || p->lowr2.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->lowr2);
+ if (!p->highl1.auxp || p->highl1.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->highl1);
+ if (!p->highr1.auxp || p->highr1.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->highr1);
+ if (!p->highl2.auxp || p->highl2.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->highl2);
+ if (!p->highr2.auxp || p->highr2.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->highr2);
+ if (!p->hrtflinterp.auxp || p->hrtflinterp.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->hrtflinterp);
+ if (!p->hrtfrinterp.auxp || p->hrtfrinterp.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->hrtfrinterp);
+
+ memset(p->lowl1.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->lowr1.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->lowl2.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->lowr2.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->highl1.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->highl2.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->highr1.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->highr2.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->hrtflinterp.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->hrtfrinterp.auxp, 0, irlength * sizeof(MYFLT));
+
+ /* hrtf processing buffers */
+ if (!p->hrtflpad.auxp || p->hrtflpad.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad * sizeof(MYFLT), &p->hrtflpad);
+ if (!p->hrtfrpad.auxp || p->hrtfrpad.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad * sizeof(MYFLT), &p->hrtfrpad);
+ if (!p->hrtflpadold.auxp || p->hrtflpadold.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad * sizeof(MYFLT), &p->hrtflpadold);
+ if (!p->hrtfrpadold.auxp || p->hrtfrpadold.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad * sizeof(MYFLT), &p->hrtfrpadold);
+
+ memset(p->hrtflpad.auxp, 0, irlengthpad * sizeof(MYFLT));
+ memset(p->hrtfrpad.auxp, 0, irlengthpad * sizeof(MYFLT));
+ memset(p->hrtflpadold.auxp, 0, irlengthpad * sizeof(MYFLT));
+ memset(p->hrtfrpadold.auxp, 0, irlengthpad * sizeof(MYFLT));
+
+ /* convolution & processing */
+ if (!p->inbuf.auxp || p->inbuf.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->inbuf);
+ if (!p->inbufpad.auxp || p->inbufpad.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad * sizeof(MYFLT), &p-> inbufpad);
+
+ memset(p->inbuf.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->inbufpad.auxp, 0, irlengthpad * sizeof(MYFLT));
+
+ if (!p->outlspec.auxp || p->outlspec.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad * sizeof(MYFLT), &p->outlspec);
+ if (!p->outrspec.auxp || p->outrspec.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad * sizeof(MYFLT), &p->outrspec);
+
+ memset(p->outlspec.auxp, 0, irlengthpad * sizeof(MYFLT));
+ memset(p->outrspec.auxp, 0, irlengthpad * sizeof(MYFLT));
+
+ if (!p->outlspecold.auxp || p->outlspecold.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad * sizeof(MYFLT), &p->outlspecold);
+ if (!p->outrspecold.auxp || p->outrspecold.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad * sizeof(MYFLT), &p->outrspecold);
+
+ memset(p->outlspecold.auxp, 0, irlengthpad * sizeof(MYFLT));
+ memset(p->outrspecold.auxp, 0, irlengthpad * sizeof(MYFLT));
+
+ if (!p->overlapl.auxp || p->overlapl.size < overlapsize * sizeof(MYFLT))
+ csound->AuxAlloc(csound, overlapsize * sizeof(MYFLT), &p->overlapl);
+ if (!p->overlapr.auxp || p->overlapr.size < overlapsize * sizeof(MYFLT))
+ csound->AuxAlloc(csound, overlapsize * sizeof(MYFLT), &p->overlapr);
+
+ memset(p->overlapl.auxp, 0, overlapsize * sizeof(MYFLT));
+ memset(p->overlapr.auxp, 0, overlapsize * sizeof(MYFLT));
+
+ if (!p->overlaplold.auxp || p->overlaplold.size < overlapsize * sizeof(MYFLT))
+ csound->AuxAlloc(csound, overlapsize * sizeof(MYFLT), &p->overlaplold);
+ if (!p->overlaprold.auxp || p->overlaprold.size < overlapsize * sizeof(MYFLT))
+ csound->AuxAlloc(csound, overlapsize * sizeof(MYFLT), &p->overlaprold);
+
+ memset(p->overlaplold.auxp, 0, overlapsize * sizeof(MYFLT));
+ memset(p->overlaprold.auxp, 0, overlapsize * sizeof(MYFLT));
+
+ /* dynamic values, based on no. of impulses*/
+ if (!p->predell.auxp || p->predell.size < irlength * impulses * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * impulses * sizeof(MYFLT), &p->predell);
+ if (!p->predelr.auxp || p->predelr.size < irlength * impulses * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * impulses * sizeof(MYFLT), &p->predelr);
+
+ memset(p->predell.auxp, 0, irlength * impulses * sizeof(MYFLT));
+ memset(p->predelr.auxp, 0, irlength * impulses * sizeof(MYFLT));
+
+ if (!p->cross.auxp || p->cross.size < impulses * sizeof(int))
+ csound->AuxAlloc(csound, impulses * sizeof(int), &p->cross);
+ if (!p->l.auxp || p->l.size < impulses * sizeof(int))
+ csound->AuxAlloc(csound, impulses * sizeof(int), &p->l);
+ if (!p->delp.auxp || p->delp.size < impulses * sizeof(int))
+ csound->AuxAlloc(csound, impulses * sizeof(int), &p->delp);
+ if (!p->skipdel.auxp || p->skipdel.size < impulses * sizeof(int))
+ csound->AuxAlloc(csound, impulses * sizeof(int), &p->skipdel);
+ if (!p->vdt.auxp || p->vdt.size < impulses * sizeof(MYFLT))
+ csound->AuxAlloc(csound, impulses * sizeof(MYFLT), &p->vdt);
+
+ memset(p->cross.auxp, 0, impulses * sizeof(int));
+ memset(p->l.auxp, 0, impulses * sizeof(int));
+ memset(p->delp.auxp, 0, impulses * sizeof(int));
+ memset(p->vdt.auxp, 0, impulses * sizeof(MYFLT));
+ /* skipdel looked after below */
+
+ /* values distinct to each reflection*/
+ if (!p->tempsrcx.auxp || p->tempsrcx.size < impulses * sizeof(MYFLT))
+ csound->AuxAlloc(csound, impulses * sizeof(MYFLT), &p->tempsrcx);
+
+ if (!p->tempsrcy.auxp || p->tempsrcy.size < impulses * sizeof(MYFLT))
+ csound->AuxAlloc(csound, impulses * sizeof(MYFLT), &p->tempsrcy);
+
+ if (!p->tempsrcz.auxp || p->tempsrcz.size < impulses * sizeof(MYFLT))
+ csound->AuxAlloc(csound, impulses * sizeof(MYFLT), &p->tempsrcz);
+ if (!p->dist.auxp || p->dist.size < impulses * sizeof(MYFLT))
+ csound->AuxAlloc(csound, impulses * sizeof(MYFLT), &p->dist);
+ if (!p->dtime.auxp || p->dtime.size < impulses * sizeof(MYFLT))
+ csound->AuxAlloc(csound, impulses * sizeof(MYFLT), &p->dtime);
+ if (!p->amp.auxp || p->amp.size < impulses * sizeof(MYFLT))
+ csound->AuxAlloc(csound, impulses * sizeof(MYFLT), &p->amp);
+
+ memset(p->tempsrcx.auxp, 0, impulses * sizeof(MYFLT));
+ memset(p->tempsrcy.auxp, 0, impulses * sizeof(MYFLT));
+ memset(p->tempsrcz.auxp, 0, impulses * sizeof(MYFLT));
+ memset(p->dist.auxp, 0, impulses * sizeof(MYFLT));
+ memset(p->dtime.auxp, 0, impulses * sizeof(MYFLT));
+ memset(p->amp.auxp, 0, impulses * sizeof(MYFLT));
+
+ if (!p->oldelevindex.auxp || p->oldelevindex.size < impulses * sizeof(int))
+ csound->AuxAlloc(csound, impulses * sizeof(int), &p->oldelevindex);
+
+ if (!p->oldangleindex.auxp || p->oldangleindex.size < impulses * sizeof(int))
+ csound->AuxAlloc(csound, impulses * sizeof(int), &p->oldangleindex);
+
+ /* no need to zero above, as filled below...*/
+
+ /* -1 for first check */
+ oldelevindex = (int *)p->oldelevindex.auxp;
+ oldangleindex = (int *)p->oldangleindex.auxp;
+
+ for(i = 0; i < impulses; i++)
+ oldelevindex[i] = oldangleindex[i] = -1;
+
+ /* more values distinct to each reflection */
+ if (!p->hrtflpadspec.auxp ||
+ p->hrtflpadspec.size < irlengthpad * impulses * sizeof(MYFLT))
+ csound->AuxAlloc(csound,
+ irlengthpad * impulses * sizeof(MYFLT), &p->hrtflpadspec);
+ if (!p->hrtfrpadspec.auxp ||
+ p->hrtfrpadspec.size < irlengthpad * impulses * sizeof(MYFLT))
+ csound->AuxAlloc(csound,
+ irlengthpad * impulses * sizeof(MYFLT), &p->hrtfrpadspec);
+
+ memset(p->hrtflpadspec.auxp, 0, irlengthpad * impulses * sizeof(MYFLT));
+ memset(p->hrtfrpadspec.auxp, 0, irlengthpad * impulses * sizeof(MYFLT));
+
+ if (!p->hrtflpadspecold.auxp ||
+ p->hrtflpadspecold.size < irlengthpad * impulses * sizeof(MYFLT))
+ csound->AuxAlloc(csound,
+ irlengthpad * impulses * sizeof(MYFLT), &p->hrtflpadspecold);
+ if (!p->hrtfrpadspecold.auxp ||
+ p->hrtfrpadspecold.size < irlengthpad * impulses * sizeof(MYFLT))
+ csound->AuxAlloc(csound,
+ irlengthpad * impulses * sizeof(MYFLT), &p->hrtfrpadspecold);
+
+ memset(p->hrtflpadspecold.auxp, 0, irlengthpad * impulses * sizeof(MYFLT));
+ memset(p->hrtfrpadspecold.auxp, 0, irlengthpad * impulses * sizeof(MYFLT));
+
+ if (!p->outl.auxp || p->outl.size < irlengthpad * impulses * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad * impulses * sizeof(MYFLT), &p->outl);
+ if (!p->outr.auxp || p->outr.size < irlengthpad * impulses * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad * impulses * sizeof(MYFLT), &p->outr);
+
+ memset(p->outl.auxp, 0, irlengthpad * impulses * sizeof(MYFLT));
+ memset(p->outr.auxp, 0, irlengthpad * impulses * sizeof(MYFLT));
+
+ if (!p->outlold.auxp ||
+ p->outlold.size < irlengthpad * impulses * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad * impulses * sizeof(MYFLT), &p->outlold);
+ if (!p->outrold.auxp ||
+ p->outrold.size < irlengthpad * impulses * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad * impulses * sizeof(MYFLT), &p->outrold);
+
+ memset(p->outlold.auxp, 0, irlengthpad * impulses * sizeof(MYFLT));
+ memset(p->outrold.auxp, 0, irlengthpad * impulses * sizeof(MYFLT));
+
+ if (!p->currentphasel.auxp ||
+ p->currentphasel.size < irlength * impulses * sizeof(MYFLT))
+ csound->AuxAlloc(csound,
+ irlength * impulses * sizeof(MYFLT), &p->currentphasel);
+ if (!p->currentphaser.auxp ||
+ p->currentphaser.size < irlength * impulses * sizeof(MYFLT))
+ csound->AuxAlloc(csound,
+ irlength * impulses * sizeof(MYFLT), &p->currentphaser);
+
+
+ memset(p->currentphasel.auxp, 0, irlength * impulses * sizeof(MYFLT));
+ memset(p->currentphaser.auxp, 0, irlength * impulses * sizeof(MYFLT));
+
+ /* setup rt60 calcs...*/
+ /* rectangular room: surface area of opposite walls, and floor/ceiling */
+ wallS1 = rmy * rmz;
+ wallS2 = rmx * rmz;
+ cfS = rmx * rmy;
+
+ /* volume and surface areas, for rt60 calc, for high and low frequencies */
+ vol = rmx * rmy * rmz;
+
+ /* add all surfaces, 2 of each wall in shoebox geometry */
+ Salphalow = wallS1 * (LOG(FL(1.0) - p->wallcoeflow)) * FL(2.0);
+ Salphalow += wallS2 * (LOG(FL(1.0) - p->wallcoeflow)) * FL(2.0);
+ Salphalow += cfS * (LOG(FL(1.0) - p->floorcoeflow));
+ Salphalow += cfS * (LOG(FL(1.0) - p->ceilingcoeflow));
+ Salphahigh = wallS1 * (LOG(FL(1.0) - p->wallcoefhigh)) * FL(2.0);
+ Salphahigh += wallS2 * (LOG(FL(1.0) - p->wallcoefhigh)) * FL(2.0);
+ Salphahigh += cfS * (LOG(FL(1.0) - p->floorcoefhigh));
+ Salphahigh += cfS * (LOG(FL(1.0) - p->ceilingcoefhigh));
+
+ /* wall filter quality factor (4 octaves for required spread!: .2666667)
+ (2 octaves = .6667 implies 125 - 500, cf 250, 500 - 2k, cf 1k,
+ 2000 - 8000, cf 4k)
+ (4 octaves = = .2666667 implies 62.5 - 1000, cf 250, 250 - 4000, cf 1k,
+ 1000 - 16k, cf 4k */
+ p->q = FL(0.2666667);
+
+ *p->irt60low = (FL(-0.161) * vol)/Salphalow;
+ *p->irt60high = (FL(-0.161) * vol)/Salphahigh;
+
+ /* calculate max delay according to max dist from order */
+ /* use hypotenuse rule to get max dist */
+ /* could calculate per order, but designed for low order use */
+ maxdist = (SQRT(SQUARE(rmx) + SQUARE(rmy)));
+ if(threed)
+ maxdist = (SQRT(SQUARE(maxdist)+SQUARE(rmz)));
+ maxdist = maxdist * (order + 1);
+
+ maxdtime = maxdist / p->c;
+ maxdelsamps = (int)(maxdtime * sr);
+ p->maxdelsamps = maxdelsamps;
+
+ surfacearea = FL(2.0) * wallS1 + FL(2.0) * wallS2 + FL(2.0) * cfS;
+
+ meanfreepath = FL(4.0) * vol / (surfacearea * p->c);
+
+ /* set output...*/
+ *p->imfp = meanfreepath;
+
+ /* allocate delay memory for each impulse */
+ if (!p->dell.auxp || p->dell.size < maxdelsamps * sizeof(MYFLT) * impulses)
+ csound->AuxAlloc(csound, maxdelsamps * sizeof(MYFLT) * impulses, &p->dell);
+ if (!p->delr.auxp || p->delr.size < maxdelsamps * sizeof(MYFLT) * impulses)
+ csound->AuxAlloc(csound, maxdelsamps * sizeof(MYFLT) * impulses, &p->delr);
+
+ memset(p->dell.auxp, 0, maxdelsamps * impulses * sizeof(MYFLT));
+ memset(p->delr.auxp, 0, maxdelsamps * impulses * sizeof(MYFLT));
+
+ /* amount to skip in to each del line */
+ skipdel = (int *)p->skipdel.auxp;
+
+ for(i = 0; i < impulses; i++)
+ skipdel[i] = i * maxdelsamps;
+
+ /* setup values used to check if relative source position has changed,
+ start at illegal value to ensure first process read */
+ p->srcxv = FL(-1.0);
+ p->srcyv = FL(-1.0);
+ p->srczv = FL(-1.0);
+ p->lstnrxv = FL(-1.0);
+ p->lstnryv = FL(-1.0);
+ p->lstnrzv = FL(-1.0);
+ p->srcxk = FL(-1.0);
+ p->srcyk = FL(-1.0);
+ p->srczk = FL(-1.0);
+ p->lstnrxk = FL(-1.0);
+ p->lstnryk = FL(-1.0);
+ p->lstnrzk = FL(-1.0);
+
+ p->rotatev = FL(0.0);
+
+ return OK;
+}
+
+static int early_process(CSOUND *csound, early *p)
+{
+ /* iterators */
+ int n, i, j;
+
+ /* local pointers to p */
+ MYFLT *in = p->in;
+ MYFLT *outsigl = p->outsigl;
+ MYFLT *outsigr = p->outsigr;
+
+ int irlength = p->irlength;
+ int irlengthpad = p->irlengthpad;
+ int overlapsize = p->overlapsize;
+
+ int counter = p->counter;
+
+ /* convolution buffers */
+ MYFLT *lowl1 = (MYFLT *)p->lowl1.auxp;
+ MYFLT *lowr1 = (MYFLT *)p->lowr1.auxp;
+ MYFLT *lowl2 = (MYFLT *)p->lowl2.auxp;
+ MYFLT *lowr2 = (MYFLT *)p->lowr2.auxp;
+ MYFLT *highl1 = (MYFLT *)p->highl1.auxp;
+ MYFLT *highr1 = (MYFLT *)p->highr1.auxp;
+ MYFLT *highl2 = (MYFLT *)p->highl2.auxp;
+ MYFLT *highr2 = (MYFLT *)p->highr2.auxp;
+ MYFLT *hrtflinterp = (MYFLT *)p->hrtflinterp.auxp;
+ MYFLT *hrtfrinterp = (MYFLT *)p->hrtfrinterp.auxp;
+
+ /* hrtf processing buffers */
+ MYFLT *hrtflpad = (MYFLT *)p->hrtflpad.auxp;
+ MYFLT *hrtfrpad = (MYFLT *)p->hrtfrpad.auxp;
+ MYFLT *hrtflpadold = (MYFLT *)p->hrtflpadold.auxp;
+ MYFLT *hrtfrpadold = (MYFLT *)p->hrtfrpadold.auxp;
+
+ /* pointers into HRTF files: floating point data(even in 64 bit csound)*/
+ float *fpindexl = (float *)p->fpbeginl;
+ float *fpindexr = (float *)p->fpbeginr;
+
+ /* local copies */
+ MYFLT srcx = *p->srcx;
+ MYFLT srcy = *p->srcy;
+ MYFLT srcz = *p->srcz;
+ MYFLT lstnrx = *p->lstnrx;
+ MYFLT lstnry = *p->lstnry;
+ MYFLT lstnrz = *p->lstnrz;
+ MYFLT rotate = *p->Oheadrot;
+
+ MYFLT sr = p->sr;
+
+ /* local variables, mainly used for simplification */
+ MYFLT elevindexstore;
+ MYFLT angleindexlowstore;
+ MYFLT angleindexhighstore;
+
+ /* for reading */
+ MYFLT angle, elev;
+ int elevindex;
+ int angleindex;
+ int skip = 0;
+
+ /* crossfade preparation and checks */
+ int fade = p->fade;
+ int fadebuffer = p->fadebuffer;
+ int initialfade = p->initialfade;
+ int crossfade;
+ int crossout;
+
+ /* interpolation variable declaration: local */
+ int elevindexlow, elevindexhigh, angleindex1, angleindex2,
+ angleindex3, angleindex4;
+ MYFLT elevindexhighper, angleindex2per, angleindex4per;
+ MYFLT magllow, magrlow, maglhigh, magrhigh, magl, magr, phasel, phaser;
+
+ /* convolution and in/output buffers */
+ MYFLT *inbuf = (MYFLT *)p->inbuf.auxp;
+ MYFLT *inbufpad = (MYFLT *)p->inbufpad.auxp;
+ MYFLT *outlspec = (MYFLT *)p->outlspec.auxp;
+ MYFLT *outrspec = (MYFLT *)p->outrspec.auxp;
+ MYFLT *outlspecold = (MYFLT *)p->outlspecold.auxp;
+ MYFLT *outrspecold = (MYFLT *)p->outrspecold.auxp;
+ MYFLT *overlapl = (MYFLT *)p->overlapl.auxp;
+ MYFLT *overlapr = (MYFLT *)p->overlapr.auxp;
+ MYFLT *overlaplold = (MYFLT *)p->overlaplold.auxp;
+ MYFLT *overlaprold = (MYFLT *)p->overlaprold.auxp;
+ MYFLT *predell = (MYFLT *)p->predell.auxp;
+ MYFLT *predelr = (MYFLT *)p->predelr.auxp;
+
+ MYFLT outltot, outrtot;
+
+ /* distinct to each reflection */
+ MYFLT *hrtflpadspec = (MYFLT *)p->hrtflpadspec.auxp;
+ MYFLT *hrtfrpadspec = (MYFLT *)p->hrtfrpadspec.auxp;
+ MYFLT *hrtflpadspecold = (MYFLT *)p->hrtflpadspecold.auxp;
+ MYFLT *hrtfrpadspecold = (MYFLT *)p->hrtfrpadspecold.auxp;
+ MYFLT *outl = (MYFLT *)p->outl.auxp;
+ MYFLT *outr = (MYFLT *)p->outr.auxp;
+ MYFLT *outlold = (MYFLT *)p->outlold.auxp;
+ MYFLT *outrold = (MYFLT *)p->outrold.auxp;
+ MYFLT *currentphasel = (MYFLT *)p->currentphasel.auxp;
+ MYFLT *currentphaser = (MYFLT *)p->currentphaser.auxp;
+ MYFLT *dell = (MYFLT *)p->dell.auxp;
+ MYFLT *delr = (MYFLT *)p->delr.auxp;
+
+ /* as above */
+ int *oldelevindex = (int *)p->oldelevindex.auxp;
+ int *oldangleindex = (int *)p->oldangleindex.auxp;
+ int *cross = (int *)p->cross.auxp;
+ int *l = (int *)p->l.auxp;
+ int *delp = (int *)p->delp.auxp;
+ int *skipdel = (int *)p->skipdel.auxp;
+ MYFLT *vdt = (MYFLT *)p->vdt.auxp;
+ MYFLT *dist = (MYFLT *)p->dist.auxp;
+ MYFLT *dtime = (MYFLT *)p->dtime.auxp;
+ MYFLT *amp = (MYFLT *)p->amp.auxp;
+ MYFLT *tempsrcx = (MYFLT *)p->tempsrcx.auxp;
+ MYFLT *tempsrcy = (MYFLT *)p->tempsrcy.auxp;
+ MYFLT *tempsrcz = (MYFLT *)p->tempsrcz.auxp;
+ MYFLT tempdist;
+
+ /* from structure */
+ int impulses = p->impulses;
+ int order = p->order;
+ int M = p->M;
+ int threed = p->threed;
+
+ /* used in vdel */
+ int maxdelsamps = p->maxdelsamps;
+ MYFLT c = p->c;
+ int pos;
+ MYFLT rp, frac;
+
+ /* room size */
+ MYFLT rmx = p->rmx;
+ MYFLT rmy = p->rmy;
+ MYFLT rmz = p->rmz;
+
+ /* xc = x coordinate, etc...*/
+ int xc, yc, zc, lowz, highz;
+
+ /* to simplify formulae, local */
+ MYFLT formx, formy, formz;
+ int formxpow, formypow, formzpow;
+
+ int wallreflections, floorreflections=0, ceilingreflections=0;
+ MYFLT delsinglel, delsingler;
+ MYFLT deldoublel[2], deldoubler[2];
+
+ /* temp variables, for efficiency */
+ MYFLT tempx, tempy;
+
+ /* angle / elev calc of source location */
+ MYFLT newpntx, newpnty, newpntz;
+ MYFLT ab,ac,bc;
+ MYFLT coselev;
+
+ /* processing size! */
+ n = csound->ksmps;
+
+ /* check for legal src/lstnr locations */
+ /* restricted to being inside room! */
+ if(srcx > (rmx - FL(0.1)))
+ srcx = rmx - FL(0.1);
+ if(srcx < FL(0.1))
+ srcx = FL(0.1);
+ if(srcy > (rmy - FL(0.1)))
+ srcy = rmy - FL(0.1);
+ if(srcy < FL(0.1))
+ srcy = FL(0.1);
+ if(srcz > (rmz - FL(0.1)))
+ srcz = rmz - FL(0.1);
+ if(srcz < FL(0.1))
+ srcz = FL(0.1);
+ if(lstnrx > (rmx - FL(0.1)))
+ lstnrx = rmx - FL(0.1);
+ if(lstnrx < FL(0.1))
+ lstnrx = FL(0.1);
+ if(lstnry > (rmy - FL(0.1)))
+ lstnry = rmy - FL(0.1);
+ if(lstnry < FL(0.1))
+ lstnry = FL(0.1);
+ if(lstnrz > (rmz - FL(0.1)))
+ lstnrz = rmz - FL(0.1);
+ if(lstnrz < FL(0.1))
+ lstnrz = FL(0.1);
+
+ /* k rate computations: sources, distances, delays, amps
+ for each image source. */
+ /* need minus values for formula... */
+
+ /* only update if relative source updates! improves speed in
+ static sources by a factor of 2-3! */
+ if(srcx != p->srcxk || srcy != p->srcyk || srcz != p->srczk ||
+ lstnrx != p->lstnrxk || lstnry != p->lstnryk || lstnrz != p->lstnrzk)
+ {
+ p->srcxk = srcx;
+ p->srcyk = srcy;
+ p->srczk = srcz;
+ p->lstnrxk = lstnrx;
+ p->lstnryk = lstnry;
+ p->lstnrzk = lstnrz;
+
+ for(xc = -order; xc <= order; xc++)
+ {
+ for(yc = abs(xc) - order; yc <= order - abs(xc); yc++)
+ {
+ /* only scroll through z plane if 3d required...*/
+ if(threed)
+ {
+ lowz = abs(yc) - (order - abs(xc));
+ highz = (order - abs(xc)) - abs(yc);
+ }
+ else
+ {
+ lowz = 0;
+ highz = 0;
+ }
+ for(zc = lowz; zc <= highz; zc++)
+ {
+ /* to avoid recalculation, especially at audio rate
+ for delay, later on */
+ formxpow = (int)pow(-1.0, xc);
+ formypow = (int)pow(-1.0, yc);
+ formzpow = (int)pow(-1.0, zc);
+ formx = (xc + (1 - formxpow)/2) * rmx;
+ formy = (yc + (1 - formypow)/2) * rmy;
+ formz = (zc + (1 - formzpow)/2) * rmz;
+
+ /* image */
+ tempsrcx[M] = formxpow * srcx + formx;
+ tempsrcy[M] = formypow * srcy + formy;
+ tempsrcz[M] = formzpow * srcz + formz;
+
+ /* Calculate delay here using source and listener location */
+ dist[M] = (SQRT(SQUARE(tempsrcx[M] - lstnrx) +
+ SQUARE(tempsrcy[M] - lstnry) +
+ SQUARE(tempsrcz[M] - lstnrz)));
+
+ /* in seconds... */
+ dtime[M] = dist[M] / c;
+
+ /* furthest allowable distance....max amp = 1. */
+ tempdist = (dist[M] < FL(0.45) ? FL(0.45) : dist[M]);
+
+ /* high amp value may cause clipping on early
+ reflections...reduce overall amp if so...*/
+ /* SPL inverse distance law */
+ amp[M] = FL(0.45) / tempdist;
+
+ /* vdels for distance processing: */
+ vdt[M] = dtime[M] * sr;
+ if(vdt[M] > maxdelsamps)
+ vdt[M] = (MYFLT)maxdelsamps;
+
+ M++;
+ M = M % impulses;
+ }
+ }
+ }
+ }
+
+ /* a rate... */
+ for(j=0;j<n;j++)
+ {
+ /* input */
+ inbuf[counter] = in[j];
+
+ /* output */
+ outltot = 0.0;
+ outrtot = 0.0;
+
+ /* for each reflection */
+ for(M = 0; M < impulses; M++)
+ {
+ /* a rate vdel: */
+ rp = delp[M] - vdt[M];
+ rp = (rp >= 0 ? (rp < maxdelsamps ? rp : rp - maxdelsamps) :
+ rp + maxdelsamps);
+ frac = rp - (int)rp;
+ /* shift into correct part of buffer */
+ pos = (int)rp + skipdel[M];
+ /* write to l and r del lines */
+ dell[delp[M] + skipdel[M]] = predell[counter + M * irlength] * amp[M];
+ delr[delp[M] + skipdel[M]] = predelr[counter + M * irlength] * amp[M];
+ /* read, at variable interpolated speed */
+ outltot += dell[pos] +
+ frac*(dell[(pos + 1 < (maxdelsamps + skipdel[M]) ?
+ pos + 1 : skipdel[M])] - dell[pos]);
+ outrtot += delr[pos] +
+ frac*(delr[(pos + 1 < (maxdelsamps + skipdel[M]) ?
+ pos + 1 : skipdel[M])] - delr[pos]);
+ delp[M] = (delp[M] != maxdelsamps - 1 ? delp[M] + 1 : 0);
+
+ outsigl[j] = outltot;
+ outsigr[j] = outrtot;
+ }
+ counter++;
+
+ /* used to ensure fade does not happen on first run */
+ if(initialfade < (irlength + 2))
+ initialfade++;
+
+ /* 'hrtf buffer' rate */
+ if(counter == irlength)
+ {
+ /* reset */
+ M = 0;
+ /* run according to formula */
+ for(xc = -order; xc <= order; xc++)
+ {
+ for(yc = abs(xc) - order; yc <= order - abs(xc); yc++)
+ {
+ /* only scroll through z plane if 3d required... */
+ if(threed)
+ {
+ lowz = abs(yc) - (order - abs(xc));
+ highz = (order - abs(xc)) - abs(yc);
+ }
+ else
+ {
+ lowz = 0;
+ highz = 0;
+ }
+ for(zc = lowz; zc <= highz; zc++)
+ {
+ /* zero */
+ crossout = 0;
+ crossfade = 0;
+
+ /* avoid unnecessary processing if relative
+ source location has not changed */
+ if(srcx != p->srcxv || srcy != p->srcyv ||
+ srcz != p->srczv || lstnrx != p->lstnrxv ||
+ lstnry != p->lstnryv || lstnrz != p->lstnrzv ||
+ rotate != p->rotatev)
+ {
+ /* if first process complete (128 samps in) and
+ source is too close to listener: warning, do not
+ process duda and martens range dependence
+ jasa 98: 5 times radius: near field...hrtf
+ changes! */
+ if(dist[M] < FL(0.45) && initialfade > irlength)
+ ; /* do not process... */
+ else
+ {
+ /* to avoid case where atan2 is invalid */
+ tempx = tempsrcx[M] - lstnrx;
+ tempy = tempsrcy[M] - lstnry;
+ if(tempx == 0 && tempy == 0)
+ angle = 0;
+ else
+ {
+ /* - to invert anticlockwise to clockwise */
+ angle = (-(ATAN2(tempy, tempx)) * 180.0 / PI_F);
+ /* add 90 to go from y axis (front) */
+ angle = angle + 90.0;
+ }
+
+ /* xy point will be same as source, z same as
+ listener: a workable triangle */
+ newpntx = tempsrcx[M];
+ newpnty = tempsrcy[M];
+ newpntz = lstnrz;
+
+ /* ab: source to listener, ac: source to new point
+ under/over source, bc listener to new point */
+ /* a = source, b = listener, c = new point */
+ ab = (SQRT(SQUARE(tempsrcx[M] - lstnrx) +
+ SQUARE(tempsrcy[M] - lstnry) +
+ SQUARE(tempsrcz[M] - lstnrz)));
+ ac = (SQRT(SQUARE(tempsrcx[M] - newpntx) +
+ SQUARE(tempsrcy[M] - newpnty) +
+ SQUARE(tempsrcz[M] - newpntz)));
+ bc = (SQRT(SQUARE(lstnrx - newpntx) +
+ SQUARE(lstnry - newpnty) +
+ SQUARE(lstnrz - newpntz)));
+
+ /* elev: when bc == 0 -> source + listener at
+ same x,y point (may happen in first run,
+ checked after that) angle = 0, elev = 0 if
+ at same point,
+ or source may be directly above/below */
+ if(bc == FL(0.0))
+ {
+ /* source at listener */
+ if(ac == FL(0.0))
+ elev = FL(0.0);
+ /* source above listener */
+ else
+ elev = FL(90.0);
+ }
+ else
+ {
+ /* cosine rule */
+ coselev = ((SQUARE(bc) +
+ SQUARE(ab) -
+ SQUARE(ac)) / (2.0 * ab * bc));
+ elev = (ACOS(coselev)* 180.0 / PI_F);
+ }
+
+ /* if z coefficient of source < listener:
+ source below listener...*/
+ if(tempsrcz[M] < lstnrz) elev *= -1;
+
+ if(elev > FL(90.0))
+ elev = FL(90.0);
+ if(elev < FL(-40.0))
+ elev = FL(-40.0);
+
+ /* two nearest elev indices
+ to avoid recalculating */
+ elevindexstore = (elev - minelev) / elevincrement;
+ elevindexlow = (int)elevindexstore;
+
+ if(elevindexlow < 13)
+ elevindexhigh = elevindexlow + 1;
+ /* highest index reached */
+ else
+ elevindexhigh = elevindexlow;
+
+ /* get percentage value for interpolation */
+ elevindexhighper = elevindexstore - elevindexlow;
+
+ /* head rotation */
+ angle -= rotate;
+
+ while(angle < FL(0.0))
+ angle += FL(360.0);
+ while(angle >= FL(360.0))
+ angle -= FL(360.0);
+
+ /* as above,lookup index, used to check
+ for crossfade */
+ elevindex = (int)(elevindexstore + 0.5);
+
+ angleindex = (int)(angle /
+ (360.0 /
+ elevationarray[elevindex]) +
+ 0.5);
+ angleindex = angleindex % elevationarray[elevindex];
+
+ /* avoid recalculation */
+ angleindexlowstore = angle /
+ (FL(360.0) /
+ elevationarray[elevindexlow]);
+ angleindexhighstore = angle /
+ (FL(360.0) / elevationarray[elevindexhigh]);
+
+ /* 4 closest indices, 2 low and 2 high */
+ angleindex1 = (int)angleindexlowstore;
+
+ angleindex2 = angleindex1 + 1;
+ angleindex2 = angleindex2 %
+ elevationarray[elevindexlow];
+
+ angleindex3 = (int)angleindexhighstore;
+
+ angleindex4 = angleindex3 + 1;
+ angleindex4 = angleindex4 %
+ elevationarray[elevindexhigh];
+
+ /* angle percentages for interp */
+ angleindex2per = angleindexlowstore - angleindex1;
+ angleindex4per = angleindexhighstore - angleindex3;
+
+ /* crossfade happens if index changes:nearest
+ measurement changes, 1st step: store old
+ values */
+ if (oldelevindex[M] != elevindex ||
+ oldangleindex[M] != angleindex)
+ {
+ if(initialfade > irlength)
+ {
+ /* warning on overlapping fades */
+ if(cross[M])
+ {
+ printf(Str("\nWARNING: fades are "
+ "overlapping: this could "
+ "lead to noise: reduce "
+ "fade size or change "
+ "trajectory\n\n"));
+ cross[M] = 0;
+ }
+ /* reset l */
+ l[M] = 0;
+ crossfade = 1;
+ for(i = 0; i < irlengthpad; i++)
+ {
+ hrtflpadspecold[irlengthpad * M + i] =
+ hrtflpadspec[irlengthpad * M + i];
+ hrtfrpadspecold[irlengthpad * M + i] =
+ hrtfrpadspec[irlengthpad * M + i];
+ }
+ }
+
+ skip = 0;
+ /* store current phase */
+ if(angleindex > elevationarray[elevindex] / 2)
+ {
+ for(i = 0; i < elevindex; i ++)
+ skip +=((int)(elevationarray[i] / 2)
+ + 1) * irlength;
+ for (i = 0;
+ i < (elevationarray[elevindex] -
+ angleindex);
+ i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ currentphasel[irlength * M + i] =
+ fpindexr[skip + i];
+ currentphaser[irlength * M + i] =
+ fpindexl[skip + i];
+ }
+ }
+ else
+ {
+ for(i = 0; i < elevindex; i ++)
+ skip +=((int)(elevationarray[i] / 2)
+ + 1) * irlength;
+ for (i = 0; i < angleindex; i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ currentphasel[irlength * M + i] =
+ fpindexl[skip+i];
+ currentphaser[irlength * M + i] =
+ fpindexr[skip+i];
+ }
+ }
+ }
+
+ /* for next check */
+ oldelevindex[M] = elevindex;
+ oldangleindex[M] = angleindex;
+
+ /* read 4 nearest HRTFs */
+ /* switch l and r */
+ skip = 0;
+ if(angleindex1 > elevationarray[elevindexlow] / 2)
+ {
+ for(i = 0; i < elevindexlow; i ++)
+ skip +=((int)(elevationarray[i] / 2)
+ + 1) * irlength;
+ for (i = 0;
+ i < (elevationarray[elevindexlow] -
+ angleindex1);
+ i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ lowl1[i] = fpindexr[skip+i];
+ lowr1[i] = fpindexl[skip+i];
+ }
+ }
+ else
+ {
+ for(i = 0; i < elevindexlow; i ++)
+ skip +=((int)(elevationarray[i] / 2)
+ + 1) * irlength;
+ for (i = 0; i < angleindex1; i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ lowl1[i] = fpindexl[skip+i];
+ lowr1[i] = fpindexr[skip+i];
+ }
+ }
+
+ skip = 0;
+ if(angleindex2 > elevationarray[elevindexlow] / 2)
+ {
+ for(i = 0; i < elevindexlow; i ++)
+ skip +=((int)(elevationarray[i] / 2)
+ + 1) * irlength;
+ for (i = 0;
+ i < (elevationarray[elevindexlow] -
+ angleindex2);
+ i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ lowl2[i] = fpindexr[skip+i];
+ lowr2[i] = fpindexl[skip+i];
+ }
+ }
+ else
+ {
+ for(i = 0; i < elevindexlow; i ++)
+ skip +=((int)(elevationarray[i] / 2)
+ + 1) * irlength;
+ for (i = 0; i < angleindex2; i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ lowl2[i] = fpindexl[skip+i];
+ lowr2[i] = fpindexr[skip+i];
+ }
+ }
+
+ skip = 0;
+ if(angleindex3 > elevationarray[elevindexhigh] / 2)
+ {
+ for(i = 0; i < elevindexhigh; i ++)
+ skip +=((int)(elevationarray[i] / 2)
+ + 1) * irlength;
+ for (i = 0;
+ i < (elevationarray[elevindexhigh] -
+ angleindex3);
+ i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ highl1[i] = fpindexr[skip+i];
+ highr1[i] = fpindexl[skip+i];
+ }
+ }
+ else
+ {
+ for(i = 0; i < elevindexhigh; i ++)
+ skip +=((int)(elevationarray[i] / 2)
+ + 1) * irlength;
+ for (i = 0; i < angleindex3; i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ highl1[i] = fpindexl[skip+i];
+ highr1[i] = fpindexr[skip+i];
+ }
+ }
+
+ skip = 0;
+ if(angleindex4 > elevationarray[elevindexhigh] / 2)
+ {
+ for(i = 0; i < elevindexhigh; i ++)
+ skip +=((int)(elevationarray[i] / 2)
+ + 1) * irlength;
+ for (i = 0;
+ i < (elevationarray[elevindexhigh] -
+ angleindex4);
+ i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ highl2[i] = fpindexr[skip+i];
+ highr2[i] = fpindexl[skip+i];
+ }
+ }
+ else
+ {
+ for(i = 0; i < elevindexhigh; i ++)
+ skip +=((int)(elevationarray[i] / 2)
+ + 1) * irlength;
+ for (i = 0; i < angleindex4; i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ highl2[i] = fpindexl[skip+i];
+ highr2[i] = fpindexr[skip+i];
+ }
+ }
+
+ /* magnitude interpolation */
+ /* 0hz and Nyq */
+ magllow = (FABS(lowl1[0])) +
+ ((FABS(lowl2[0]) - FABS(lowl1[0]))) *
+ angleindex2per;
+ maglhigh = (FABS(highl1[0])) +
+ ((FABS(highl2[0]) - FABS(highl1[0]))) *
+ angleindex4per;
+ magrlow = (FABS(lowr1[0])) +
+ ((FABS(lowr2[0]) - FABS(lowr1[0]))) *
+ angleindex2per;
+ magrhigh = (FABS(highr1[0])) +
+ ((FABS(highr2[0]) - FABS(highr1[0]))) *
+ angleindex4per;
+ magl = magllow + (maglhigh - magllow) *
+ elevindexhighper;
+ magr = magrlow + (magrhigh - magrlow) *
+ elevindexhighper;
+ if(currentphasel[M * irlength] < FL(0.0))
+ hrtflinterp[0] = - magl;
+ else
+ hrtflinterp[0] = magl;
+ if(currentphaser[M * irlength] < FL(0.0))
+ hrtfrinterp[0] = - magr;
+ else
+ hrtfrinterp[0] = magr;
+
+ magllow = (FABS(lowl1[1])) +
+ ((FABS(lowl2[1]) - FABS(lowl1[1]))) *
+ angleindex2per;
+ maglhigh = (FABS(highl1[1]))
+ + ((FABS(highl2[1]) - FABS(highl1[1]))) *
+ angleindex4per;
+ magrlow = (FABS(lowr1[1])) +
+ ((FABS(lowr2[1]) - FABS(lowr1[1]))) *
+ angleindex2per;
+ magrhigh = (FABS(highr1[1])) +
+ ((FABS(highr2[1]) - FABS(highr1[1]))) *
+ angleindex4per;
+ magl = magllow + (maglhigh - magllow) *
+ elevindexhighper;
+ magr = magrlow + (magrhigh - magrlow) *
+ elevindexhighper;
+ if(currentphasel[M * irlength + 1] < FL(0.0))
+ hrtflinterp[1] = - magl;
+ else
+ hrtflinterp[1] = magl;
+ if(currentphaser[M * irlength + 1] < FL(0.0))
+ hrtfrinterp[1] = - magr;
+ else
+ hrtfrinterp[1] = magr;
+
+ /* other values are complex, in fftw format */
+ for(i = 2; i < irlength; i += 2)
+ {
+ /* interpolate high and low magnitudes */
+ magllow = lowl1[i] + (lowl2[i] - lowl1[i]) *
+ angleindex2per;
+ maglhigh = highl1[i] + (highl2[i] - highl1[i]) *
+ angleindex4per;
+
+ magrlow = lowr1[i] + (lowr2[i] - lowr1[i]) *
+ angleindex2per;
+ magrhigh = highr1[i] + (highr2[i] - highr1[i]) *
+ angleindex4per;
+
+ /* interpolate high and low results,
+ use current phase */
+ magl = magllow + (maglhigh - magllow) *
+ elevindexhighper;
+ phasel = currentphasel[M * irlength + i + 1];
+
+ /* polar to rectangular */
+ hrtflinterp[i] = magl * FL(cos(phasel));
+ hrtflinterp[i + 1] = magl * FL(sin(phasel));
+
+ magr = magrlow + (magrhigh - magrlow) *
+ elevindexhighper;
+ phaser = currentphaser[M * irlength + i + 1];
+
+ hrtfrinterp[i] = magr * FL(cos(phaser));
+ hrtfrinterp[i + 1] = magr * FL(sin(phaser));
+ }
+
+ csound->InverseRealFFT(csound, hrtflinterp,
+ irlength);
+ csound->InverseRealFFT(csound, hrtfrinterp,
+ irlength);
+
+ /* wall filters... */
+ /* all 4 walls are the same! (trivial to
+ make them different...) */
+ /* x axis, wall1 (left) */
+ wallreflections =
+ (int)abs((int)(xc * .5 - .25 +
+ (0.25 * pow(-1.0, xc))));
+ /* wall2, x (right) */
+ wallreflections +=
+ (int)abs((int)(xc * .5 + .25 -
+ (0.25 * pow(-1.0, xc))));
+ /* yaxis, wall3 (bottom) */
+ wallreflections +=
+ (int)abs((int)(yc * .5 - .25 +
+ (0.25 * pow(-1.0, yc))));
+ /* yaxis, wall 4 (top) */
+ wallreflections +=
+ (int)abs((int)(yc * .5 + .25 -
+ (0.25 * pow(-1.0, yc))));
+ if(threed)
+ {
+ /* floor (negative z) */
+ floorreflections =
+ (int)abs((int)(zc * .5 - .25 +
+ (0.25 * pow(-1.0, zc))));
+ /* ceiling (positive z) */
+ ceilingreflections =
+ (int)abs((int)(zc * .5 + .25
+ - (0.25 * pow(-1.0, zc))));
+ }
+
+ /* fixed parameters on bands etc (to limit no of
+ inputs), but these could trivially be variable */
+ /* note: delay values can be reused: zeroed every
+ time as only used in
+ processing hrtf, once every irlength, so not
+ used continuously...*/
+ /* if processing was continuous, would need
+ separate mem for each filter, store for
+ next run etc...*/
+ for(i = 0; i < wallreflections; i++)
+ {
+ delsinglel = delsingler = FL(0.0);
+ filter(hrtflinterp, p->wallcoefhigh,
+ p->wallcoeflow, &delsinglel,
+ irlength, sr);
+ filter(hrtfrinterp, p->wallcoefhigh,
+ p->wallcoeflow, &delsingler,
+ irlength, sr);
+ deldoublel[0] = deldoublel[1] = deldoubler[0] = deldoubler[1] = 0.0;
+ band(hrtflinterp, FL(250.0), FL(250.0) / p->q, p->wallg1, deldoublel, irlength, sr);
+ band(hrtfrinterp, FL(250.0), FL(250.0) / p->q, p->wallg1, deldoubler, irlength, sr);
+ deldoublel[0] = deldoublel[1] = deldoubler[0] = deldoubler[1] = 0.0;
+ band(hrtflinterp, FL(1000.0), FL(1000.0) / p->q, p->wallg2, deldoublel, irlength, sr);
+ band(hrtfrinterp, FL(1000.0), FL(1000.0) / p->q, p->wallg2, deldoubler, irlength, sr);
+ deldoublel[0] = deldoublel[1] = deldoubler[0] = deldoubler[1] = 0.0;
+ band(hrtflinterp, FL(4000.0), FL(4000.0) / p->q, p->wallg3, deldoublel, irlength, sr);
+ band(hrtfrinterp, FL(4000.0), FL(4000.0) / p->q, p->wallg3, deldoubler, irlength, sr);
+ }
+ if(threed)
+ {
+ for(i = 0; i < floorreflections; i++)
+ {
+ delsinglel = delsingler = FL(0.0);
+ filter(hrtflinterp, p->floorcoefhigh, p->floorcoeflow, &delsinglel, irlength, sr);
+ filter(hrtfrinterp, p->floorcoefhigh, p->floorcoeflow, &delsingler, irlength, sr);
+ deldoublel[0] = deldoublel[1] = deldoubler[0] = deldoubler[1] = 0.0;
+ band(hrtflinterp, FL(250.0), FL(250.0) / p->q, p->floorg1, deldoublel, irlength, sr);
+ band(hrtfrinterp, FL(250.0), FL(250.0) / p->q, p->floorg1, deldoubler, irlength, sr);
+ deldoublel[0] = deldoublel[1] = deldoubler[0] = deldoubler[1] = 0.0;
+ band(hrtflinterp, FL(1000.0), FL(1000.0) / p->q, p->floorg2, deldoublel, irlength, sr);
+ band(hrtfrinterp, FL(1000.0), FL(1000.0) / p->q, p->floorg2, deldoubler, irlength, sr);
+ deldoublel[0] = deldoublel[1] = deldoubler[0] = deldoubler[1] = 0.0;
+ band(hrtflinterp, FL(4000.0), FL(4000.0) / p->q, p->floorg3, deldoublel, irlength, sr);
+ band(hrtfrinterp, FL(4000.0), FL(4000.0) / p->q, p->floorg3, deldoubler, irlength, sr);
+ }
+ for(i = 0; i < ceilingreflections; i++)
+ {
+ delsinglel = delsingler = FL(0.0);
+ filter(hrtflinterp, p->ceilingcoefhigh, p->ceilingcoeflow, &delsinglel, irlength, sr);
+ filter(hrtfrinterp, p->ceilingcoefhigh, p->ceilingcoeflow, &delsingler, irlength, sr);
+ deldoublel[0] = deldoublel[1] = deldoubler[0] = deldoubler[1] = 0.0;
+ band(hrtflinterp, FL(250.0), FL(250.0) / p->q, p->ceilingg1, deldoublel, irlength, sr);
+ band(hrtfrinterp, FL(250.0), FL(250.0) / p->q, p->ceilingg1, deldoubler, irlength, sr);
+ deldoublel[0] = deldoublel[1] = deldoubler[0] = deldoubler[1] = 0.0;
+ band(hrtflinterp, FL(1000.0), FL(1000.0) / p->q, p->ceilingg2, deldoublel, irlength, sr);
+ band(hrtfrinterp, FL(1000.0), FL(1000.0) / p->q, p->ceilingg2, deldoubler, irlength, sr);
+ deldoublel[0] = deldoublel[1] = deldoubler[0] = deldoubler[1] = 0.0;
+ band(hrtflinterp, FL(4000.0), FL(4000.0) / p->q, p->ceilingg3, deldoublel, irlength, sr);
+ band(hrtfrinterp, FL(4000.0), FL(4000.0) / p->q, p->ceilingg3, deldoubler, irlength, sr);
+ }
+ }
+
+ for(i = 0; i < irlength; i++)
+ {
+ hrtflpad[i] = hrtflinterp[i];
+ hrtfrpad[i] = hrtfrinterp[i];
+ }
+
+ for(i = irlength; i < irlengthpad; i++)
+ {
+ hrtflpad[i] = FL(0.0);
+ hrtfrpad[i] = FL(0.0);
+ }
+
+ /* back to freq domain */
+ csound->RealFFT(csound, hrtflpad, irlengthpad);
+ csound->RealFFT(csound, hrtfrpad, irlengthpad);
+
+ /* store */
+ for(i = 0; i < irlengthpad; i++)
+ {
+ hrtflpadspec[M * irlengthpad + i] = hrtflpad[i];
+ hrtfrpadspec[M * irlengthpad + i] = hrtfrpad[i];
+ }
+ }
+ } /* end of source / listener relative
+ change process */
+
+ /* look after overlap add */
+ for(i = 0; i < overlapsize ; i++)
+ {
+ overlapl[i] = outl[M * irlengthpad + i + irlength];
+ overlapr[i] = outr[M * irlengthpad + i + irlength];
+ if(crossfade)
+ {
+ overlaplold[i] =
+ outl[M * irlengthpad + i + irlength];
+ overlaprold[i] =
+ outr[M * irlengthpad + i + irlength];
+ }
+ /* overlap will be previous fading out signal */
+ if(cross[M])
+ {
+ overlaplold[i] =
+ outlold[M * irlengthpad + i + irlength];
+ overlaprold[i] =
+ outrold[M * irlengthpad + i + irlength];
+ }
+ }
+
+ /* insert insig */
+ for (i = 0; i < irlength; i++)
+ inbufpad[i] = inbuf[i];
+
+ for (i = irlength; i < irlengthpad; i++)
+ inbufpad[i] = FL(0.0);
+
+ csound->RealFFT(csound, inbufpad, irlengthpad);
+
+ for(i = 0; i < irlengthpad; i ++)
+ {
+ hrtflpad[i] = hrtflpadspec[M * irlengthpad + i];
+ hrtfrpad[i] = hrtfrpadspec[M * irlengthpad + i];
+ }
+
+ /* convolution: spectral multiplication */
+ csound->RealFFTMult(csound, outlspec, hrtflpad,
+ inbufpad, irlengthpad, FL(1.0));
+ csound->RealFFTMult(csound, outrspec, hrtfrpad,
+ inbufpad, irlengthpad, FL(1.0));
+
+ csound->InverseRealFFT(csound, outlspec, irlengthpad);
+ csound->InverseRealFFT(csound, outrspec, irlengthpad);
+
+ /* scale */
+ for(i = 0; i < irlengthpad; i++)
+ {
+ outlspec[i] = outlspec[i]/(sr/FL(38000.0));
+ outrspec[i] = outrspec[i]/(sr/FL(38000.0));
+ }
+
+ /* store */
+ for(i = 0; i < irlengthpad; i++)
+ {
+ outl[M * irlengthpad + i] = outlspec[i];
+ outr[M * irlengthpad + i] = outrspec[i];
+ }
+
+ /* setup for fades */
+ if(crossfade || cross[M])
+ {
+ crossout = 1;
+
+ /* need to put these values into a buffer for processing */
+ for(i = 0; i < irlengthpad; i++)
+ {
+ hrtflpadold[i] =
+ hrtflpadspecold[M * irlengthpad + i];
+ hrtfrpadold[i] =
+ hrtfrpadspecold[M * irlengthpad + i];
+ }
+
+ /* convolution */
+ csound->RealFFTMult(csound, outlspecold, hrtflpadold,
+ inbufpad, irlengthpad, FL(1.0));
+ csound->RealFFTMult(csound, outrspecold, hrtfrpadold,
+ inbufpad, irlengthpad, FL(1.0));
+
+ /* ifft, back to time domain */
+ csound->InverseRealFFT(csound, outlspecold,
+ irlengthpad);
+ csound->InverseRealFFT(csound, outrspecold,
+ irlengthpad);
+
+ /* scale */
+ for(i = 0; i < irlengthpad; i++)
+ {
+ outlspecold[i] = outlspecold[i]/(sr/FL(38000.0));
+ outrspecold[i] = outrspecold[i]/(sr/FL(38000.0));
+ }
+
+ /* o/p real values */
+ for(i = 0; i < irlengthpad; i++)
+ {
+ outlold[M * irlengthpad + i] = outlspecold[i];
+ outrold[M * irlengthpad + i] = outrspecold[i];
+ }
+
+ cross[M]++;
+ cross[M] = cross[M] % fade;
+ }
+
+ if(crossout)
+ for(i = 0; i < irlength; i++)
+ {
+ predell[i + M * irlength] =
+ (outlspecold[i] +
+ (i < overlapsize ? overlaplold[i] : FL(0.0))) *
+ FL(1. - (FL(l[M]) / fadebuffer)) +
+ (outlspec[i] +
+ (i < overlapsize ? overlapl[i] : FL(0.0))) *
+ (FL(l[M]) / fadebuffer);
+ predelr[i + M * irlength] =
+ (outrspecold[i] +
+ (i < overlapsize ? overlaprold[i] : FL(0.0))) *
+ FL(1. - (FL(l[M]) / fadebuffer)) +
+ (outrspec[i] +
+ (i < overlapsize ? overlapr[i] : FL(0.0))) *
+ (FL(l[M]) / fadebuffer);
+ l[M]++;
+ }
+ else
+ for(i = 0; i < irlength; i++)
+ {
+ predell[i + M * irlength] =
+ outlspec[i] +
+ (i < overlapsize ? overlapl[i] : FL(0.0));
+ predelr[i + M * irlength] =
+ outrspec[i] +
+ (i < overlapsize ? overlapr[i] : FL(0.0));
+ }
+
+ M++;
+ M = M % impulses;
+
+ } /* z */
+ } /* y */
+ } /* x */
+
+ counter = 0;
+ /* need to store these values here, as storing them after check
+ would not allow each impulse to be processed! */
+ p->srcxv = srcx;
+ p->srcyv = srcy;
+ p->srczv = srcz;
+ p->lstnrxv = lstnrx;
+ p->lstnryv = lstnry;
+ p->lstnrzv = lstnrz;
+ p->rotatev = rotate;
+
+ } /* end of counter == irlength */
+
+ /* update */
+ p->counter = counter;
+ p->initialfade = initialfade;
+
+ } /* end of ksmps loop */
+
+ return OK;
+}
+
+static OENTRY hrtfearly_localops[] =
+{
+ {
+ "hrtfearly", sizeof(early), 5, "aaiii", "axxxxxxSSioopoOoooooooooooooooooo",
+ (SUBR)early_init, NULL, (SUBR)early_process
+ }
+};
+
+LINKAGE1(hrtfearly_localops)
diff --git a/Opcodes/hrtferX.c b/Opcodes/hrtferX.c
index e513ec4..565f3e4 100644
--- a/Opcodes/hrtferX.c
+++ b/Opcodes/hrtferX.c
@@ -50,7 +50,9 @@
* the old and new HRTFs (probably a project in itself).
***************************************************************/
-#include "csdl.h"
+// #include "csdl.h"
+#include "csoundCore.h"
+#include "interlocks.h"
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
@@ -151,7 +153,10 @@ static int hrtferxk(CSOUND *csound, HRTFER *p)
{
MYFLT *aLeft, *aRight; /* audio output streams */
MYFLT *aIn, *kAz, *kElev; /* audio and control input streams */
- int azim, elev, el_index, az_index,oldel_index, oldaz_index;
+ int azim, elev, el_index, az_index,oldel_index;
+#ifdef CLICKS
+ int oldaz_index;
+#endif
int nsmpsi, nsmpso; /* number of samples in/out */
/* input, out-left, out-right */
MYFLT *x, *yl, *yr; /* Local copies of address */
@@ -186,11 +191,11 @@ static int hrtferxk(CSOUND *csound, HRTFER *p)
elev = (int) *kElev;
azim = (int) *kAz;
oldel_index = p->oldel_index;
- oldaz_index = p->oldaz_index;
fpindex = (int16 *) p->fpbegin;
flip = 0;
#ifdef CLICKS
crossfadeflag = 0;
+ oldaz_index = p->oldaz_index;
#endif
/* Convert elevation in degrees to elevation array index. */
@@ -475,9 +480,9 @@ static int hrtferxk(CSOUND *csound, HRTFER *p)
p->outfront = outfront;
p->outend = outend;
p->oldel_index = el_index;
+#ifdef CLICKS
p->oldaz_index = az_index;
-#ifdef CLICKS
for (i=0; i<FILT_LEN; i++) { /* archive current HRTFs */
p->oldhrtf_data.left[i] = hrtf_data.left[i];
p->oldhrtf_data.right[i] = hrtf_data.right[i];
@@ -489,9 +494,9 @@ static int hrtferxk(CSOUND *csound, HRTFER *p)
return csound->PerfError(csound, Str("hrtfer: not initialised"));
}
-static OENTRY localops[] = {
-{ "hrtfer", sizeof(HRTFER),5, "aa", "akkS", (SUBR)hrtferxkSet, NULL, (SUBR)hrtferxk}
+static OENTRY hrtferX_localops[] = {
+{ "hrtfer", sizeof(HRTFER),5, "aa", "akkS", (SUBR)hrtferxkSet, NULL, (SUBR)hrtferxk},
};
-LINKAGE
+LINKAGE1(hrtferX_localops)
diff --git a/Opcodes/hrtfopcodes.c b/Opcodes/hrtfopcodes.c
index b3fdd51..53ed39f 100644
--- a/Opcodes/hrtfopcodes.c
+++ b/Opcodes/hrtfopcodes.c
@@ -1,7 +1,7 @@
/*
hrtfopcodes.c: new HRTF opcodes
- (c) Brian Carty, 2008
+ (c) Brian Carty, 2010
This file is part of Csound.
@@ -20,97 +20,105 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA
*/
-#include "csdl.h"
+
+#include "csoundCore.h"
+#include "interlocks.h"
+
#include <math.h>
-/*definitions*/
-#define minelev -40 /*from mit*/
-#define elevincrement 10 /*from mit*/
-
-#define maxdeltime 0.0011 /*max delay for min phase: a time value:
- important to include offset...multiply by
- sr to get no of samples for memory allocation*/
-
-/*additional definitions for woodworth models*/
-#define c 34400.0
-
-/*hrtf data sets were analysed for low frequency phase values, as it
- is the important part of the spectrum for phase based localisation
- cues. The values below were extracted and are used to scale the
- functional phase spectrum.*/
-static const float nonlinitd[5] = {1.535133f,1.347668f,1.111214f,1.071324f,1.0f};
-static const float nonlinitd48k[5] = {1.515308f,1.268052f,1.086033f,1.086159f,1.0f};
-static const float nonlinitd96k[5] = {1.515846f,1.268239f,1.086041f,1.086115f,1.0f};
-
-/*number of measurements per elev: mit data const:read only, static:exists
- for whoe process...*/
-static const int elevationarray[14] = {56, 60, 72, 72, 72, 72, 72,
- 60, 56, 45, 36, 24, 12, 1 };
-
-/*assumed mit hrtf data will be used here. Otherwise delay data would
- need to be extracted and replaced here...*/
-static const float minphasedels[368] = {
- 0.000000f,0.000045f,0.000091f,0.000136f,0.000159f,0.000204f,
- 0.000249f,0.000272f,0.000295f,0.000317f,0.000363f,0.000385f,
- 0.000272f,0.000408f,0.000454f,0.000454f,0.000408f,0.000385f,
- 0.000363f,0.000317f,0.000295f,0.000295f,0.000249f,0.000204f,
- 0.000159f,0.000136f,0.000091f,0.000045f,0.000000f,0.000000f,
- 0.000045f,0.000091f,0.000136f,0.000181f,0.000227f,0.000249f,
- 0.000272f,0.000317f,0.000363f,0.000385f,0.000454f,0.000476f,
- 0.000454f,0.000522f,0.000499f,0.000499f,0.000476f,0.000454f,
- 0.000408f,0.000408f,0.000385f,0.000340f,0.000295f,0.000272f,
- 0.000227f,0.000181f,0.000136f,0.000091f,0.000045f,0.000000f,
- 0.000000f,0.000045f,0.000091f,0.000113f,0.000159f,0.000204f,
- 0.000227f,0.000272f,0.000317f,0.000317f,0.000363f,0.000408f,
- 0.000363f,0.000522f,0.000476f,0.000499f,0.000590f,0.000567f,
- 0.000567f,0.000544f,0.000522f,0.000499f,0.000476f,0.000454f,
- 0.000431f,0.000408f,0.000385f,0.000363f,0.000317f,0.000295f,
- 0.000249f,0.000204f,0.000181f,0.000136f,0.000091f,0.000045f,
- 0.000000f,0.000000f,0.000045f,0.000091f,0.000113f,0.000159f,
- 0.000204f,0.000249f,0.000295f,0.000317f,0.000363f,0.000340f,
- 0.000385f,0.000431f,0.000476f,0.000522f,0.000544f,0.000612f,
- 0.000658f,0.000658f,0.000635f,0.000658f,0.000522f,0.000499f,
- 0.000476f,0.000454f,0.000408f,0.000385f,0.000363f,0.000340f,
- 0.000295f,0.000272f,0.000227f,0.000181f,0.000136f,0.000091f,
- 0.000045f,0.000000f,0.000000f,0.000045f,0.000091f,0.000136f,
- 0.000159f,0.000204f,0.000249f,0.000295f,0.000340f,0.000385f,
- 0.000431f,0.000476f,0.000522f,0.000567f,0.000522f,0.000567f,
- 0.000567f,0.000635f,0.000703f,0.000748f,0.000748f,0.000726f,
- 0.000703f,0.000658f,0.000454f,0.000431f,0.000385f,0.000363f,
- 0.000317f,0.000295f,0.000272f,0.000227f,0.000181f,0.000136f,
- 0.000091f,0.000045f,0.000000f,0.000000f,0.000045f,0.000091f,
- 0.000113f,0.000159f,0.000204f,0.000249f,0.000295f,0.000340f,
- 0.000385f,0.000408f,0.000454f,0.000499f,0.000544f,0.000522f,
- 0.000590f,0.000590f,0.000635f,0.000658f,0.000680f,0.000658f,
- 0.000544f,0.000590f,0.000567f,0.000454f,0.000431f,0.000385f,
- 0.000363f,0.000317f,0.000272f,0.000272f,0.000227f,0.000181f,
- 0.000136f,0.000091f,0.000045f,0.000000f,0.000000f,0.000045f,
- 0.000068f,0.000113f,0.000159f,0.000204f,0.000227f,0.000272f,
- 0.000317f,0.000340f,0.000385f,0.000431f,0.000454f,0.000499f,
- 0.000499f,0.000544f,0.000567f,0.000590f,0.000590f,0.000590f,
- 0.000590f,0.000567f,0.000567f,0.000476f,0.000454f,0.000408f,
- 0.000385f,0.000340f,0.000340f,0.000295f,0.000249f,0.000204f,
- 0.000159f,0.000136f,0.000091f,0.000045f,0.000000f,0.000000f,
- 0.000045f,0.000091f,0.000113f,0.000159f,0.000204f,0.000249f,
- 0.000295f,0.000340f,0.000363f,0.000385f,0.000431f,0.000454f,
- 0.000499f,0.000522f,0.000522f,0.000522f,0.000499f,0.000476f,
- 0.000454f,0.000431f,0.000385f,0.000340f,0.000317f,0.000272f,
- 0.000227f,0.000181f,0.000136f,0.000091f,0.000045f,0.000000f,
- 0.000000f,0.000045f,0.000091f,0.000136f,0.000159f,0.000204f,
- 0.000227f,0.000249f,0.000295f,0.000340f,0.000363f,0.000385f,
- 0.000408f,0.000431f,0.000431f,0.000431f,0.000431f,0.000408f,
- 0.000385f,0.000363f,0.000317f,0.000317f,0.000272f,0.000227f,
- 0.000181f,0.000136f,0.000091f,0.000045f,0.000000f,0.000000f,
- 0.000045f,0.000091f,0.000136f,0.000181f,0.000204f,0.000227f,
- 0.000272f,0.000295f,0.000317f,0.000340f,0.000340f,0.000363f,
- 0.000363f,0.000340f,0.000317f,0.000295f,0.000249f,0.000204f,
- 0.000159f,0.000113f,0.000068f,0.000023f,0.000000f,0.000045f,
- 0.000068f,0.000113f,0.000159f,0.000181f,0.000204f,0.000227f,
- 0.000249f,0.000249f,0.000249f,0.000227f,0.000227f,0.000181f,
- 0.000159f,0.000113f,0.000091f,0.000045f,0.000000f,0.000000f,
- 0.000045f,0.000091f,0.000136f,0.000159f,0.000181f,0.000181f,
- 0.000181f,0.000159f,0.000136f,0.000091f,0.000045f,0.000000f,
- 0.000000f,0.000045f,0.000068f,0.000091f,0.000068f,0.000045f,
- 0.000000f,0.000000f};
+/* definitions */
+/* from mit */
+#define minelev (-40)
+#define elevincrement (10)
+
+/* max delay for min phase: a time value:
+ multiply by sr to get no of samples for memory allocation */
+#define maxdeltime (0.0011)
+
+/* additional definitions for woodworth models */
+#define c (34400.0)
+
+/* hrtf data sets were analysed for low frequency phase values, as it
+ is the important part of the spectrum for phase based localisation
+ cues. The values below were extracted and are used to scale the
+ functional phase spectrum. radius: 8.8 cm see nonlinitd.cpp */
+static const float nonlinitd[5] = {1.570024f, 1.378733f, 1.155164f, 1.101230f,1.0f};
+static const float nonlinitd48k[5] =
+ {1.549748f, 1.305457f, 1.124501f, 1.112852f,1.0f};
+static const float nonlinitd96k[5] =
+ {1.550297f, 1.305671f, 1.124456f, 1.112818f,1.0f};
+
+/* number of measurements per elev: mit data const:read only, static:exists
+ for whole process... */
+static const int elevationarray[14] =
+ {56, 60, 72, 72, 72, 72, 72, 60, 56, 45, 36, 24, 12, 1 };
+
+/* assumed mit hrtf data will be used here. Otherwise delay data would need
+ to be extracted and replaced here... */
+static const float minphasedels[368] =
+{
+ 0.000000f, 0.000045f, 0.000091f, 0.000136f, 0.000159f, 0.000204f,
+ 0.000249f, 0.000272f, 0.000295f, 0.000317f, 0.000363f, 0.000385f,
+ 0.000272f, 0.000408f, 0.000454f, 0.000454f, 0.000408f, 0.000385f,
+ 0.000363f, 0.000317f, 0.000295f, 0.000295f, 0.000249f, 0.000204f,
+ 0.000159f, 0.000136f, 0.000091f, 0.000045f, 0.000000f, 0.000000f,
+ 0.000045f, 0.000091f, 0.000136f, 0.000181f, 0.000227f, 0.000249f,
+ 0.000272f, 0.000317f, 0.000363f, 0.000385f, 0.000454f, 0.000476f,
+ 0.000454f, 0.000522f, 0.000499f, 0.000499f, 0.000476f, 0.000454f,
+ 0.000408f, 0.000408f, 0.000385f, 0.000340f, 0.000295f, 0.000272f,
+ 0.000227f, 0.000181f, 0.000136f, 0.000091f, 0.000045f, 0.000000f,
+ 0.000000f, 0.000045f, 0.000091f, 0.000113f, 0.000159f, 0.000204f,
+ 0.000227f, 0.000272f, 0.000317f, 0.000317f, 0.000363f, 0.000408f,
+ 0.000363f, 0.000522f, 0.000476f, 0.000499f, 0.000590f, 0.000567f,
+ 0.000567f, 0.000544f, 0.000522f, 0.000499f, 0.000476f, 0.000454f,
+ 0.000431f, 0.000408f, 0.000385f, 0.000363f, 0.000317f, 0.000295f,
+ 0.000249f, 0.000204f, 0.000181f, 0.000136f, 0.000091f, 0.000045f,
+ 0.000000f, 0.000000f, 0.000045f, 0.000091f, 0.000113f, 0.000159f,
+ 0.000204f, 0.000249f, 0.000295f, 0.000317f, 0.000363f, 0.000340f,
+ 0.000385f, 0.000431f, 0.000476f, 0.000522f, 0.000544f, 0.000612f,
+ 0.000658f, 0.000658f, 0.000635f, 0.000658f, 0.000522f, 0.000499f,
+ 0.000476f, 0.000454f, 0.000408f, 0.000385f, 0.000363f, 0.000340f,
+ 0.000295f, 0.000272f, 0.000227f, 0.000181f, 0.000136f, 0.000091f,
+ 0.000045f, 0.000000f, 0.000000f, 0.000045f, 0.000091f, 0.000136f,
+ 0.000159f, 0.000204f, 0.000249f, 0.000295f, 0.000340f, 0.000385f,
+ 0.000431f, 0.000476f, 0.000522f, 0.000567f, 0.000522f, 0.000567f,
+ 0.000567f, 0.000635f, 0.000703f, 0.000748f, 0.000748f, 0.000726f,
+ 0.000703f, 0.000658f, 0.000454f, 0.000431f, 0.000385f, 0.000363f,
+ 0.000317f, 0.000295f, 0.000272f, 0.000227f, 0.000181f, 0.000136f,
+ 0.000091f, 0.000045f, 0.000000f, 0.000000f, 0.000045f, 0.000091f,
+ 0.000113f, 0.000159f, 0.000204f, 0.000249f, 0.000295f, 0.000340f,
+ 0.000385f, 0.000408f, 0.000454f, 0.000499f, 0.000544f, 0.000522f,
+ 0.000590f, 0.000590f, 0.000635f, 0.000658f, 0.000680f, 0.000658f,
+ 0.000544f, 0.000590f, 0.000567f, 0.000454f, 0.000431f, 0.000385f,
+ 0.000363f, 0.000317f, 0.000272f, 0.000272f, 0.000227f, 0.000181f,
+ 0.000136f, 0.000091f, 0.000045f, 0.000000f, 0.000000f, 0.000045f,
+ 0.000068f, 0.000113f, 0.000159f, 0.000204f, 0.000227f, 0.000272f,
+ 0.000317f, 0.000340f, 0.000385f, 0.000431f, 0.000454f, 0.000499f,
+ 0.000499f, 0.000544f, 0.000567f, 0.000590f, 0.000590f, 0.000590f,
+ 0.000590f, 0.000567f, 0.000567f, 0.000476f, 0.000454f, 0.000408f,
+ 0.000385f, 0.000340f, 0.000340f, 0.000295f, 0.000249f, 0.000204f,
+ 0.000159f, 0.000136f, 0.000091f, 0.000045f, 0.000000f, 0.000000f,
+ 0.000045f, 0.000091f, 0.000113f, 0.000159f, 0.000204f, 0.000249f,
+ 0.000295f, 0.000340f, 0.000363f, 0.000385f, 0.000431f, 0.000454f,
+ 0.000499f, 0.000522f, 0.000522f, 0.000522f, 0.000499f, 0.000476f,
+ 0.000454f, 0.000431f, 0.000385f, 0.000340f, 0.000317f, 0.000272f,
+ 0.000227f, 0.000181f, 0.000136f, 0.000091f, 0.000045f, 0.000000f,
+ 0.000000f, 0.000045f, 0.000091f, 0.000136f, 0.000159f, 0.000204f,
+ 0.000227f, 0.000249f, 0.000295f, 0.000340f, 0.000363f, 0.000385f,
+ 0.000408f, 0.000431f, 0.000431f, 0.000431f, 0.000431f, 0.000408f,
+ 0.000385f, 0.000363f, 0.000317f, 0.000317f, 0.000272f, 0.000227f,
+ 0.000181f, 0.000136f, 0.000091f, 0.000045f, 0.000000f, 0.000000f,
+ 0.000045f, 0.000091f, 0.000136f, 0.000181f, 0.000204f, 0.000227f,
+ 0.000272f, 0.000295f, 0.000317f, 0.000340f, 0.000340f, 0.000363f,
+ 0.000363f, 0.000340f, 0.000317f, 0.000295f, 0.000249f, 0.000204f,
+ 0.000159f, 0.000113f, 0.000068f, 0.000023f, 0.000000f, 0.000045f,
+ 0.000068f, 0.000113f, 0.000159f, 0.000181f, 0.000204f, 0.000227f,
+ 0.000249f, 0.000249f, 0.000249f, 0.000227f, 0.000227f, 0.000181f,
+ 0.000159f, 0.000113f, 0.000091f, 0.000045f, 0.000000f, 0.000000f,
+ 0.000045f, 0.000091f, 0.000136f, 0.000159f, 0.000181f, 0.000181f,
+ 0.000181f, 0.000159f, 0.000136f, 0.000091f, 0.000045f, 0.000000f,
+ 0.000000f, 0.000045f, 0.000068f, 0.000091f, 0.000068f, 0.000045f,
+ 0.000000f, 0.000000f
+};
#ifdef WORDS_BIGENDIAN
@@ -120,11 +128,12 @@ static int swap4bytes(CSOUND* csound, MEMFIL* mfp)
char *p = mfp->beginp;
int size = mfp->length;
- while (size >= 4) {
- c1 = p[0]; c2 = p[1]; c3 = p[2]; c4 = p[3];
- p[0] = c4; p[1] = c3; p[2] = c2; p[3] = c1;
- size -= 4; p +=4;
- }
+ while (size >= 4)
+ {
+ c1 = p[0]; c2 = p[1]; c3 = p[2]; c4 = p[3];
+ p[0] = c4; p[1] = c3; p[2] = c2; p[3] = c1;
+ size -= 4; p +=4;
+ }
return OK;
}
@@ -132,74 +141,87 @@ static int swap4bytes(CSOUND* csound, MEMFIL* mfp)
static int (*swap4bytes)(CSOUND*, MEMFIL*) = NULL;
#endif
-/*Csound hrtf magnitude interpolation, phase truncation object: Jan 08*/
-
-/*aleft,aright hrtfmove asrc, kaz, kel, ifilel, ifiler [, imode =0,
- ifade =8, sr = 44100]...*/
-/*imode: minphase/phase truncation, ifade: no of buffers per fade for
- phase trunc., sr can be 44.1/48/96k*/
-
-typedef struct {
- OPDS h;
- MYFLT *outsigl, *outsigr;
- MYFLT *in, *kangle, *kelev, *ifilel, *ifiler,
- *omode, *ofade, *osr; /* outputs and inputs*/
-
- MEMFIL *fpl,*fpr,*fpdel; /* file pointers*/
- float *fpbeginl,*fpbeginr;
-
- int IMPLENGTH, complexIMPLENGTH, overlapsize,
- complexfftbuff; /*see definitions in INIT*/
-
- MYFLT sr;
-
- int oldelevindex, oldangleindex; /*old indices for checking if
- changes occur in trajectory.*/
-
- int counter;
-
- int cross,l,initialfade; /*initialfade used to avoid fade
- in of data...if not,'old' data
- faded out with zero hrtf,'new'
- data faded in.*/
-
- int fadebuffer; /*user defined buffer size for fades.*/
-
- int minphase,phasetrunc; /*flags for process type*/
-
- AUXCH hrtflpad,hrtfrpad; /*hrtf data padded*/
- AUXCH oldhrtflpad,oldhrtfrpad; /*old data for fades*/
- AUXCH insig, outl, outr, outlold, outrold; /*in and output buffers*/
-
- /*memory local to perform method*/
- AUXCH complexinsig; /*insig fft*/
- AUXCH hrtflfloat, hrtfrfloat; /*hrtf buffers (rectangular complex form)*/
- AUXCH outspecl, outspecr, outspecoldl, outspecoldr; /*spectral data*/
-
- AUXCH overlapl, overlapr; /*overlap data*/
- AUXCH overlapoldl, overlapoldr; /*old overlap data for longer crossfades*/
-
- AUXCH lowl1,lowr1,lowl2,lowr2,
- highl1,highr1,highl2,highr2; /*interpolation buffers*/
- AUXCH currentphasel, currentphaser; /*current phase buffers*/
-
- AUXCH logmagl,logmagr,xhatwinl,
- xhatwinr,expxhatwinl,expxhatwinr; /*min phase buffers*/
- AUXCH win; /*min phase window: a static buffer*/
-
- /*delay stuff*/
- AUXCH delmeml, delmemr;
- int ptl,ptr;
+/* Csound hrtf magnitude interpolation, phase truncation object */
- int counts;
+/* aleft,aright hrtfmove asrc, kaz, kel, ifilel, ifiler [, imode = 0,
+ ifade = 8, sr = 44100]... */
+/* imode: minphase/phase truncation, ifade: no of buffers per fade for
+ phase trunc., sr can be 44.1/48/96k */
-} hrtfmove;
+typedef struct
+{
+ OPDS h;
+ /* outputs and inputs */
+ MYFLT *outsigl, *outsigr;
+ MYFLT *in, *kangle, *kelev, *ifilel, *ifiler, *omode, *ofade, *osr;
+
+ /* check if relative source has changed! */
+ MYFLT anglev, elevv;
+
+ float *fpbeginl,*fpbeginr;
+
+ /* see definitions in INIT */
+ int irlength, irlengthpad, overlapsize;
+
+ MYFLT sr;
+
+ /* old indices for checking if changes occur in trajectory. */
+ int oldelevindex, oldangleindex;
+
+ int counter;
+
+ /* initialfade used to avoid fade in of data...if not,'old' data
+ faded out with zero hrtf,'new' data faded in. */
+ int cross,l,initialfade;
+
+ /* user defined buffer size for fades. */
+ int fadebuffer, fade;
+
+ /* flags for process type */
+ int minphase,phasetrunc;
+
+ /* hrtf data padded */
+ AUXCH hrtflpad,hrtfrpad;
+ /* old data for fades */
+ AUXCH oldhrtflpad,oldhrtfrpad;
+ /* in and output buffers */
+ AUXCH insig, outl, outr, outlold, outrold;
+
+ /* memory local to perform method */
+ /* insig fft */
+ AUXCH complexinsig;
+ /* hrtf buffers (rectangular complex form) */
+ AUXCH hrtflfloat, hrtfrfloat;
+ /* spectral data */
+ AUXCH outspecl, outspecr, outspecoldl, outspecoldr;
+
+ /* overlap data */
+ AUXCH overlapl, overlapr;
+ /* old overlap data for longer crossfades */
+ AUXCH overlapoldl, overlapoldr;
+
+ /* interpolation buffers */
+ AUXCH lowl1, lowr1, lowl2, lowr2, highl1, highr1, highl2, highr2;
+ /* current phase buffers */
+ AUXCH currentphasel, currentphaser;
+
+ /* min phase buffers */
+ AUXCH logmagl,logmagr,xhatwinl,xhatwinr,expxhatwinl,expxhatwinr;
+ /* min phase window: a static buffer */
+ AUXCH win;
+ MYFLT delayfloat;
+
+ /* delay */
+ AUXCH delmeml, delmemr;
+ int ptl, ptr, mdtl, mdtr;
+}
+hrtfmove;
static int hrtfmove_init(CSOUND *csound, hrtfmove *p)
{
- MEMFIL *fpl=NULL,*fpr=NULL; /*left and right data files: spectral mag,
- phase format.*/
- int i; /*for looping*/
+ /* left and right data files: spectral mag, phase format. */
+ MEMFIL *fpl = NULL,*fpr = NULL;
+ int i;
char filel[MAXNAME],filer[MAXNAME];
int mode = (int)*p->omode;
@@ -208,200 +230,246 @@ static int hrtfmove_init(CSOUND *csound, hrtfmove *p)
MYFLT *win;
- int IMPLENGTH = 0; /*time domain impulse length */
- int complexIMPLENGTH = 0; /*freq domain impulse length*/
- int overlapsize = 0; /*overlap add convolution*/
- int complexfftbuff = 0; /*complex fft used(min phase needs it)*/
-
+ /* time domain impulse length, padded, overlap add */
+ int irlength=0, irlengthpad=0, overlapsize=0;
- /* csound->Message(csound,
- Str("\n\nHrtf Based Binarual Spatialisation\n\n")); */
-
- if (mode==1) p->minphase=1; /*flag for process type: default phase trunc*/
- else p->phasetrunc=1;
+ /* flag for process type: default phase trunc */
+ if(mode == 1)
+ {
+ p->minphase = 1;
+ p->phasetrunc = 0;
+ }
+ else
+ {
+ p->phasetrunc = 1;
+ p->minphase = 0;
+ }
- if (fade<1||fade>24) /*fade length: default 8, max 24, min 1 */
- fade=8;
+ /* fade length: default 8, max 24, min 1 */
+ if(fade < 1 || fade > 24)
+ fade = 8;
+ p->fade = fade;
- if (sr!=FL(44100.0) && sr!=FL(48000.0) && sr!=FL(96000.0))
- sr = FL(44100.0);
+ /* sr, defualt 44100 */
+ if(sr != 44100 && sr != 48000 && sr != 96000)
+ sr = 44100;
p->sr = sr;
if (UNLIKELY(csound->esr != sr))
- csound->Warning(csound,
- Str("\nOrchestra sampling rate is not"
- " compatible with HRTF data files\nShould be %.0f,"
- " see Csound help for object\n\n"), sr);
-
- strcpy(filel, (char*) p->ifilel); /*copy in string name...*/
- strcpy(filer, (char*) p->ifiler);
-
- if (sr == FL(44100.0)) { /*setup as per sr*/
- IMPLENGTH = 128;
- complexIMPLENGTH = 256;
- overlapsize = (IMPLENGTH-1);
- complexfftbuff = (complexIMPLENGTH*2);
-
- /*added ldmemfile2: reading floats without a header!*/
- if (UNLIKELY((fpl = csound->ldmemfile2withCB(csound, filel,
- CSFTYPE_FLOATS_BINARY,
- swap4bytes)) == NULL)) {
- return
- csound->InitError(csound,
- Str("\n\n\ncannot load left data file, exiting\n\n"));
+ csound->Message(csound,
+ Str("\n\nWARNING!!:\nOrchestra SR not compatible"
+ " with HRTF processing SR of: %.0f\n\n"), sr);
+
+ /* setup as per sr */
+ if(sr == 44100 || sr == 48000)
+ {
+ irlength = 128;
+ irlengthpad = 256;
+ overlapsize = (irlength - 1);
}
- /* Byte swap */
- if (UNLIKELY((fpr = csound->ldmemfile2withCB(csound, filer,
- CSFTYPE_FLOATS_BINARY,
- swap4bytes)) == NULL)) {
- return
- csound->InitError(csound,
- Str("\n\n\ncannot load right data file, exiting\n\n"));
+ else if(sr == 96000)
+ {
+ irlength = 256;
+ irlengthpad = 512;
+ overlapsize = (irlength - 1);
}
- /* Byte swap */
- }
- else if (sr == FL(48000.0)) {
- IMPLENGTH = 128;
- complexIMPLENGTH = 256;
- overlapsize = (IMPLENGTH-1);
- complexfftbuff = (complexIMPLENGTH*2);
-
- if (UNLIKELY((fpl = csound->ldmemfile2withCB(csound, filel,
- CSFTYPE_FLOATS_BINARY,
- swap4bytes)) == NULL)) {
- return
- csound->InitError(csound,
- Str("\n\n\ncannot load left data file, exiting\n\n"));
- }
+ /* copy in string name */
+ strncpy(filel, (char*) p->ifilel, MAXNAME);
+ strncpy(filer, (char*) p->ifiler, MAXNAME);
- if (UNLIKELY((fpr = csound->ldmemfile2withCB(csound, filer,
- CSFTYPE_FLOATS_BINARY,
- swap4bytes)) == NULL)) {
- return
- csound->InitError(csound,
- Str("\n\n\ncannot load right data file, exiting\n\n"));
- }
- }
-
- else if (sr == FL(96000.0)) {
- IMPLENGTH = 256;
- complexIMPLENGTH = 512;
- overlapsize = (IMPLENGTH-1);
- complexfftbuff = (complexIMPLENGTH*2);
-
- if (UNLIKELY((fpl = csound->ldmemfile2withCB(csound, filel,
- CSFTYPE_FLOATS_BINARY,
- swap4bytes)) == NULL)) {
- return
- csound->InitError(csound,
- Str("\n\n\ncannot load left data file, exiting\n\n"));
- }
-
- if (UNLIKELY((fpr = csound->ldmemfile2withCB(csound, filer,
- CSFTYPE_FLOATS_BINARY,
- swap4bytes)) == NULL)) {
- return
- csound->InitError(csound,
- Str("\n\n\ncannot load right data file, exiting\n\n"));
- }
- }
- else {
+ /* reading files, with byte swap */
+ fpl = csound->ldmemfile2withCB(csound, filel, CSFTYPE_FLOATS_BINARY,
+ swap4bytes);
+ if (UNLIKELY(fpl == NULL))
+ return
+ csound->InitError(csound,
+ Str("\n\n\nCannot load left data file, exiting\n\n"));
+ fpr = csound->ldmemfile2withCB(csound, filer, CSFTYPE_FLOATS_BINARY,
+ swap4bytes);
+ if (UNLIKELY(fpr == NULL))
return
csound->InitError(csound,
- Str("\n\n\n Sampling rate not supported, exiting\n\n"));
- }
+ Str("\n\n\nCannot load right data file, exiting\n\n"));
- p->IMPLENGTH = IMPLENGTH;
- p->complexIMPLENGTH = complexIMPLENGTH;
+ p->irlength = irlength;
+ p->irlengthpad = irlengthpad;
p->overlapsize = overlapsize;
- p->complexfftbuff = complexfftbuff;
-
- p->fadebuffer = (int)fade*IMPLENGTH; /*the amount of buffers to fade over.*/
- /*file handles*/
- if (fpl && fpr) {
- p->fpl = fpl;
- p->fpr = fpr;
- p->fpbeginl = (float *) fpl->beginp;
- p->fpbeginr = (float *) fpr->beginp;
- }
-
- /*common buffers (used by both min phase and phasetrunc)*/
- csound->AuxAlloc(csound, IMPLENGTH*sizeof(MYFLT), &p->insig);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->outl);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->outr);
- csound->AuxAlloc(csound, complexfftbuff*sizeof(MYFLT), &p->hrtflpad);
- csound->AuxAlloc(csound, complexfftbuff*sizeof(MYFLT), &p->hrtfrpad);
- csound->AuxAlloc(csound, complexfftbuff*sizeof(MYFLT), &p-> complexinsig);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->hrtflfloat);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->hrtfrfloat);
- csound->AuxAlloc(csound, complexfftbuff*sizeof(MYFLT), &p->outspecl);
- csound->AuxAlloc(csound, complexfftbuff*sizeof(MYFLT), &p->outspecr);
- csound->AuxAlloc(csound, overlapsize*sizeof(MYFLT), &p->overlapl);
- csound->AuxAlloc(csound, overlapsize*sizeof(MYFLT), &p->overlapr);
-
- /*interpolation values*/
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->lowl1);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->lowr1);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->lowl2);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->lowr2);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->highl1);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->highr1);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->highl2);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->highr2);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->currentphasel);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->currentphaser);
-
- p->counter = 0; /*initialize counter*/
-
- /*phase truncation buffers and variables*/
- csound->AuxAlloc(csound, complexfftbuff*sizeof(MYFLT), &p->oldhrtflpad);
- csound->AuxAlloc(csound, complexfftbuff*sizeof(MYFLT), &p->oldhrtfrpad);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->outlold);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->outrold);
- csound->AuxAlloc(csound, complexfftbuff*sizeof(MYFLT), &p->outspecoldl);
- csound->AuxAlloc(csound, complexfftbuff*sizeof(MYFLT), &p->outspecoldr);
- csound->AuxAlloc(csound, overlapsize*sizeof(MYFLT), &p->overlapoldl);
- csound->AuxAlloc(csound, overlapsize*sizeof(MYFLT), &p->overlapoldr);
-
- /* initialize counters and indices*/
+ /* the amount of buffers to fade over. */
+ p->fadebuffer = (int)fade*irlength;
+
+ /* file handles */
+ p->fpbeginl = (float *) fpl->beginp;
+ p->fpbeginr = (float *) fpr->beginp;
+
+ /* common buffers (used by both min phase and phasetrunc) */
+ if (!p->insig.auxp || p->insig.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength*sizeof(MYFLT), &p->insig);
+ if (!p->outl.auxp || p->outl.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad*sizeof(MYFLT), &p->outl);
+ if (!p->outr.auxp || p->outr.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad*sizeof(MYFLT), &p->outr);
+ if (!p->hrtflpad.auxp || p->hrtflpad.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad*sizeof(MYFLT), &p->hrtflpad);
+ if (!p->hrtfrpad.auxp || p->hrtfrpad.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad*sizeof(MYFLT), &p->hrtfrpad);
+ if (!p->complexinsig.auxp || p->complexinsig.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad*sizeof(MYFLT), &p->complexinsig);
+ if (!p->hrtflfloat.auxp || p->hrtflfloat.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength*sizeof(MYFLT), &p->hrtflfloat);
+ if (!p->hrtfrfloat.auxp || p->hrtfrfloat.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength*sizeof(MYFLT), &p->hrtfrfloat);
+ if (!p->outspecl.auxp || p->outspecl.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad*sizeof(MYFLT), &p->outspecl);
+ if (!p->outspecr.auxp || p->outspecr.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad*sizeof(MYFLT), &p->outspecr);
+ if (!p->overlapl.auxp || p->overlapl.size < overlapsize * sizeof(MYFLT))
+ csound->AuxAlloc(csound, overlapsize*sizeof(MYFLT), &p->overlapl);
+ if (!p->overlapr.auxp || p->overlapr.size < overlapsize * sizeof(MYFLT))
+ csound->AuxAlloc(csound, overlapsize*sizeof(MYFLT), &p->overlapr);
+
+ memset(p->insig.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->outl.auxp, 0, irlengthpad * sizeof(MYFLT));
+ memset(p->outr.auxp, 0, irlengthpad * sizeof(MYFLT));
+ memset(p->hrtflpad.auxp, 0, irlengthpad * sizeof(MYFLT));
+ memset(p->hrtfrpad.auxp, 0, irlengthpad * sizeof(MYFLT));
+ memset(p->complexinsig.auxp, 0, irlengthpad * sizeof(MYFLT));
+ memset(p->hrtflfloat.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->hrtfrfloat.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->outspecl.auxp, 0, irlengthpad * sizeof(MYFLT));
+ memset(p->outspecr.auxp, 0, irlengthpad * sizeof(MYFLT));
+ memset(p->overlapl.auxp, 0, overlapsize * sizeof(MYFLT));
+ memset(p->overlapr.auxp, 0, overlapsize * sizeof(MYFLT));
+
+ /* interpolation values */
+ if (!p->lowl1.auxp || p->lowl1.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->lowl1);
+ if (!p->lowr1.auxp || p->lowr1.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->lowr1);
+ if (!p->lowl2.auxp || p->lowl2.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->lowl2);
+ if (!p->lowr2.auxp || p->lowr2.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->lowr2);
+ if (!p->highl1.auxp || p->highl1.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->highl1);
+ if (!p->highr1.auxp || p->highr1.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->highr1);
+ if (!p->highl2.auxp || p->highl2.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->highl2);
+ if (!p->highr2.auxp || p->highr2.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->highr2);
+ if (!p->currentphasel.auxp || p->currentphasel.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength*sizeof(MYFLT), &p->currentphasel);
+ if (!p->currentphaser.auxp || p->currentphaser.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength*sizeof(MYFLT), &p->currentphaser);
+
+ memset(p->lowl1.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->lowr1.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->lowl2.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->lowr2.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->highl1.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->highl2.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->highr1.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->highr2.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->currentphasel.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->currentphaser.auxp, 0, irlength * sizeof(MYFLT));
+
+ /* phase truncation buffers and variables */
+ if (!p->oldhrtflpad.auxp || p->oldhrtflpad.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad*sizeof(MYFLT), &p->oldhrtflpad);
+ if (!p->oldhrtfrpad.auxp || p->oldhrtfrpad.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad*sizeof(MYFLT), &p->oldhrtfrpad);
+ if (!p->outlold.auxp || p->outlold.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad*sizeof(MYFLT), &p->outlold);
+ if (!p->outrold.auxp || p->outrold.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad*sizeof(MYFLT), &p->outrold);
+ if (!p->outspecoldl.auxp || p->outspecoldl.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad*sizeof(MYFLT), &p->outspecoldl);
+ if (!p->outspecoldr.auxp || p->outspecoldr.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad*sizeof(MYFLT), &p->outspecoldr);
+ if (!p->overlapoldl.auxp || p->overlapoldl.size < overlapsize * sizeof(MYFLT))
+ csound->AuxAlloc(csound, overlapsize*sizeof(MYFLT), &p->overlapoldl);
+ if (!p->overlapoldr.auxp || p->overlapoldr.size < overlapsize * sizeof(MYFLT))
+ csound->AuxAlloc(csound, overlapsize*sizeof(MYFLT), &p->overlapoldr);
+
+ memset(p->oldhrtflpad.auxp, 0, irlengthpad * sizeof(MYFLT));
+ memset(p->oldhrtfrpad.auxp, 0, irlengthpad * sizeof(MYFLT));
+ memset(p->outlold.auxp, 0, irlengthpad * sizeof(MYFLT));
+ memset(p->outrold.auxp, 0, irlengthpad * sizeof(MYFLT));
+ memset(p->outspecoldl.auxp, 0, irlengthpad * sizeof(MYFLT));
+ memset(p->outspecoldr.auxp, 0, irlengthpad * sizeof(MYFLT));
+ memset(p->overlapoldl.auxp, 0, overlapsize * sizeof(MYFLT));
+ memset(p->overlapoldr.auxp, 0, overlapsize * sizeof(MYFLT));
+
+ /* initialize counters and indices */
+ p->counter = 0;
p->cross = 0;
p->l = 0;
p->initialfade = 0;
- /*need to be a value that is not possible for first check to avoid
- phase not being read.*/
+ /* need to be a value that is not possible for first check to avoid
+ phase not being read. */
p->oldelevindex = -1;
p->oldangleindex = -1;
- /*buffer declaration for min phase calculations*/
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->logmagl);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->logmagr);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->xhatwinl);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->xhatwinr);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->expxhatwinl);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->expxhatwinr);
-
- /*delay buffers*/
- csound->AuxAlloc(csound, (int)(sr*maxdeltime)*sizeof(MYFLT), &p->delmeml);
- csound->AuxAlloc(csound, (int)(sr*maxdeltime)*sizeof(MYFLT), &p->delmemr);
-
- csound->AuxAlloc(csound, IMPLENGTH*sizeof(MYFLT), &p->win);
+ /* buffer declaration for min phase calculations */
+ if (!p->logmagl.auxp || p->logmagl.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength*sizeof(MYFLT), &p->logmagl);
+ if (!p->logmagr.auxp || p->logmagr.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength*sizeof(MYFLT), &p->logmagr);
+ if (!p->xhatwinl.auxp || p->xhatwinl.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength*sizeof(MYFLT), &p->xhatwinl);
+ if (!p->xhatwinr.auxp || p->xhatwinr.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength*sizeof(MYFLT), &p->xhatwinr);
+ if (!p->expxhatwinl.auxp || p->expxhatwinl.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength*sizeof(MYFLT), &p->expxhatwinl);
+ if (!p->expxhatwinr.auxp || p->expxhatwinr.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength*sizeof(MYFLT), &p->expxhatwinr);
+
+ memset(p->logmagl.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->logmagr.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->xhatwinl.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->xhatwinr.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->expxhatwinl.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->expxhatwinr.auxp, 0, irlength * sizeof(MYFLT));
+
+ /* delay buffers */
+ if (!p->delmeml.auxp ||
+ p->delmeml.size < (int)(sr * maxdeltime) * sizeof(MYFLT))
+ csound->AuxAlloc(csound, (int)(sr * maxdeltime) * sizeof(MYFLT), &p->delmeml);
+ if (!p->delmemr.auxp ||
+ p->delmemr.size < (int)(sr * maxdeltime) * sizeof(MYFLT))
+ csound->AuxAlloc(csound, (int)(sr * maxdeltime) * sizeof(MYFLT), &p->delmemr);
+
+ memset(p->delmeml.auxp, 0, (int)(sr * maxdeltime) * sizeof(MYFLT));
+ memset(p->delmemr.auxp, 0, (int)(sr * maxdeltime) * sizeof(MYFLT));
+
+ if (!p->win.auxp && p->win.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength*sizeof(MYFLT), &p->win);
win = (MYFLT *)p->win.auxp;
- /*min phase win defined for implength point impulse!*/
- win[0]=1;
- for (i=1;i<(IMPLENGTH/2);i++) win[i]=2;
- win[(IMPLENGTH/2)]=1;
- for (i=((IMPLENGTH/2)+1);i<IMPLENGTH;i++) win[i]=0;
+ /* min phase win defined for irlength point impulse! */
+ win[0] = FL(1.0);
+ for(i = 1; i < (irlength / 2); i++)
+ win[i] = FL(2.0);
+ win[(irlength / 2)] = FL(1.0);
+ for(i = ((irlength / 2) + 1); i < irlength; i++)
+ win[i] = FL(0.0);
+
+ p->mdtl = (int)(FL(0.00095) * sr);
+ p->mdtr = (int)(FL(0.00095) * sr);
+ p->delayfloat = FL(0.0);
- p->ptl=0;
- p->ptr=0;
+ p->ptl = 0;
+ p->ptr = 0;
- p->counts = 0;
+ /* setup values used to check if src has moved, illegal values to
+ start with to ensure first read */
+ p->anglev = -1;
+ p->elevv = -41;
return OK;
}
@@ -409,11 +477,12 @@ static int hrtfmove_init(CSOUND *csound, hrtfmove *p)
static int hrtfmove_process(CSOUND *csound, hrtfmove *p)
{
- MYFLT *in = p->in; /*local pointers to p*/
- MYFLT *outsigl = p->outsigl;
+ /* local pointers to p */
+ MYFLT *in = p->in;
+ MYFLT *outsigl = p->outsigl;
MYFLT *outsigr = p->outsigr;
- /*common buffers and variables*/
+ /* common buffers and variables */
MYFLT *insig = (MYFLT *)p->insig.auxp;
MYFLT *outl = (MYFLT *)p->outl.auxp;
MYFLT *outr = (MYFLT *)p->outr.auxp;
@@ -436,23 +505,27 @@ static int hrtfmove_process(CSOUND *csound, hrtfmove *p)
int counter = p->counter;
int n;
- float *fpindexl; /* pointers into HRTF files: floating point data
- (even in 64 bit csound)*/
+ /* pointers into HRTF files: floating point data (even in 64 bit csound) */
+ float *fpindexl;
float *fpindexr;
- int i,j,elevindex, angleindex, switchchannels=0, skip=0;
+ int i,j,elevindex, angleindex, skip = 0;
int minphase = p->minphase;
int phasetrunc = p->phasetrunc;
MYFLT sr = p->sr;
- int IMPLENGTH = p->IMPLENGTH;
- int complexIMPLENGTH = p->complexIMPLENGTH;
+ int irlength = p->irlength;
+ int irlengthpad = p->irlengthpad;
int overlapsize = p->overlapsize;
- int complexfftbuff = p->complexfftbuff;
- /*interpolation values*/
+ /* local variables, mainly used for simplification */
+ MYFLT elevindexstore;
+ MYFLT angleindexlowstore;
+ MYFLT angleindexhighstore;
+
+ /* interpolation values */
MYFLT *lowl1 = (MYFLT *)p->lowl1.auxp;
MYFLT *lowr1 = (MYFLT *)p->lowr1.auxp;
MYFLT *lowl2 = (MYFLT *)p->lowl2.auxp;
@@ -464,14 +537,13 @@ static int hrtfmove_process(CSOUND *csound, hrtfmove *p)
MYFLT *currentphasel = (MYFLT *)p->currentphasel.auxp;
MYFLT *currentphaser = (MYFLT *)p->currentphaser.auxp;
- /*local interpolation values*/
- MYFLT elevindexlowper,elevindexhighper,angleindex1per,
- angleindex2per,angleindex3per,angleindex4per;
- int elevindexlow,elevindexhigh,angleindex1,angleindex2,
- angleindex3,angleindex4;
+ /* local interpolation values */
+ MYFLT elevindexhighper, angleindex2per, angleindex4per;
+ int elevindexlow, elevindexhigh, angleindex1, angleindex2,
+ angleindex3, angleindex4;
MYFLT magl,magr,phasel,phaser, magllow, magrlow, maglhigh, magrhigh;
- /*phase truncation buffers and variables*/
+ /* phase truncation buffers and variables */
MYFLT *oldhrtflpad = (MYFLT *)p->oldhrtflpad.auxp;
MYFLT *oldhrtfrpad = (MYFLT *)p->oldhrtfrpad.auxp;
MYFLT *outlold = (MYFLT *)p->outlold.auxp;
@@ -486,14 +558,15 @@ static int hrtfmove_process(CSOUND *csound, hrtfmove *p)
int cross = p ->cross;
int l = p->l;
- int initialfade = p ->initialfade;
+ int initialfade = p->initialfade;
- int crossfade = 0;
- int crossout = 0;
+ int crossfade;
+ int crossout;
+ int fade = p->fade;
int fadebuffer = p->fadebuffer;
- /*minimum phase buffers*/
+ /* minimum phase buffers */
MYFLT *logmagl = (MYFLT *)p->logmagl.auxp;
MYFLT *logmagr = (MYFLT *)p->logmagr.auxp;
MYFLT *xhatwinl = (MYFLT *)p->xhatwinl.auxp;
@@ -501,689 +574,808 @@ static int hrtfmove_process(CSOUND *csound, hrtfmove *p)
MYFLT *expxhatwinl = (MYFLT *)p->expxhatwinl.auxp;
MYFLT *expxhatwinr = (MYFLT *)p->expxhatwinr.auxp;
- MYFLT *win = (MYFLT *)p->win.auxp; /*min phase window*/
+ /* min phase window */
+ MYFLT *win = (MYFLT *)p->win.auxp;
- /*min phase delay variables*/
+ /* min phase delay variables */
MYFLT *delmeml = (MYFLT *)p->delmeml.auxp;
MYFLT *delmemr = (MYFLT *)p->delmemr.auxp;
- MYFLT delaylow1,delaylow2,delayhigh1,delayhigh2,delaylow,delayhigh,delayfloat;
+ MYFLT delaylow1, delaylow2, delayhigh1, delayhigh2, delaylow, delayhigh;
+ MYFLT delayfloat = p->delayfloat;
int ptl = p->ptl;
int ptr = p->ptr;
+ int mdtl = p->mdtl;
+ int mdtr = p->mdtr;
+ int posl, posr;
+ MYFLT outvdl, outvdr, vdtl, vdtr, fracl, fracr, rpl, rpr;
- int mdtl=0,mdtr=0;
- MYFLT outvdl,outvdr,rpl,rpr,vdtl,vdtr,fracl,fracr;
-
- /*start indices at correct value (start of file)/ zero indices.*/
+ /* start indices at correct value (start of file)/ zero indices. */
fpindexl = (float *) p->fpbeginl;
fpindexr = (float *) p->fpbeginr;
- n=csound->ksmps;
-
- for (j=0;j<n;j++) {
- insig[counter] = in[j]; /*ins and outs*/
-
- outsigl[j]=outl[counter];
- outsigr[j]=outr[counter];
-
- counter++;
-
- p->counts++;
-
- if (phasetrunc) {
- if (initialfade<(IMPLENGTH+2))
- initialfade++;
- } /*used to ensure fade does not happen on first run*/
-
- if (counter == IMPLENGTH) { /*process a block*/
- if (elev < -40) elev = -40; /*within legal MIT range*/
- if (elev > 90) elev = 90;
- elevindex = (int)floor((float)((float)(elev-minelev)/elevincrement)+0.5f);
-
- while (UNLIKELY(angle<FL(0.0))) angle+=360;
- while (UNLIKELY(angle>FL(360))) angle-=360; /*mod 360*/
- if (angle>180) {
- angle=360-angle;
- switchchannels=1; /*true for later function: data is symmetrical*/
- }
-
- /*read using an index system based on number of points
- measured per elevation at mit*/
- angleindex = /*angle/increment+0.5*/
- (int)floor(angle/(360/(MYFLT)elevationarray[elevindex])+0.5);
- if (angleindex>=((int)(elevationarray[elevindex]/2)+1))
- /*last point in current elevation*/
- angleindex=(int)(elevationarray[elevindex]/2);
- /* two nearest elev indices*/
- elevindexlow = (int)((elev-minelev)/elevincrement);
- if (elevindexlow<13) elevindexhigh = elevindexlow+1;
- else elevindexhigh = elevindexlow; /* highest index reached*/
-
- /* get percentage value for interpolation*/
- elevindexlowper = (1.0f - (((float)(elev-minelev)/elevincrement)
- -(float)elevindexlow));
- elevindexhighper = 1.0f - elevindexlowper;
-
- /* 4 closest angle indices, 2 low and 2 high*/
- angleindex1 = (int)(angle/(360/(float)elevationarray[elevindexlow]));
-
- angleindex2 = angleindex1 + 1;
- if (angleindex2>=((int)(elevationarray[elevindexlow]/2)+1))
- angleindex2=(int)(elevationarray[elevindexlow]/2);
-
- angleindex3 = (int)(angle/(360/(float)elevationarray[elevindexhigh]));
-
- angleindex4 = angleindex3 + 1;
- if (angleindex4>=((int)(elevationarray[elevindexhigh]/2)+1))
- angleindex4=(int)(elevationarray[elevindexhigh]/2);
-
- /* angle percentages for interp*/
- angleindex1per =
- 1.0f-(float)((angle/(360.0/(float)elevationarray[elevindexlow])-
- angleindex1));
- angleindex2per = 1.0f-angleindex1per;
- angleindex3per =
- 1.0f - (float)((angle/(360.0/(float)elevationarray[elevindexhigh])-
- angleindex3));
- angleindex4per = 1.0f-angleindex3per;
-
- if (phasetrunc) {
- if (angleindex!=oldangleindex || elevindex!=oldelevindex) {
- /*store last point and turn crossfade on, provided
- that initialfade value indicates first block
- processed!*/
- /*(otherwise,there will be a fade in at the start as
- old hrtf will be filled with zeros and used).*/
- if (initialfade>IMPLENGTH) {
- /*post warning if fades ovelap*/
- if (UNLIKELY(cross))
- csound->Warning(csound,
- Str("fades are overlapping: "
- "this could lead to noise: reduce "
- "fade size or change trajectory\n\n"));
- /*reset l, use as index to fade*/
- l=0;
- crossfade=1;
- /*store old data*/
- for (i=0;i<complexfftbuff;i++) {
- oldhrtflpad[i] = hrtflpad[i];
- oldhrtfrpad[i] = hrtfrpad[i];
- }
- }
-
- /*store point for current phase as trajectory comes
- closer to a new index */
- if (elevindex == 0);
- else for (i=0; i<elevindex; i++)
- skip +=((int)(elevationarray[i]/2)+1)*(IMPLENGTH*2);
-
- if (angleindex == 0);
- else for (i=0; i<angleindex; i++)
- skip += (2*IMPLENGTH);
-
- if (switchchannels) {
- for (i=0;i<complexIMPLENGTH;i++){
- currentphasel[i]=fpindexr[skip+i];
- currentphaser[i]=fpindexl[skip+i];
- }
- }
- else {
- for (i=0;i<complexIMPLENGTH;i++) {
- currentphasel[i]=fpindexl[skip+i];
- currentphaser[i]=fpindexr[skip+i];
- }
- }
- }
- }
-
- /*read 4 nearest points for interpolation*/
- /*point 1*/
- skip = 0;
- if (elevindexlow == 0);
- else for (i=0; i<elevindexlow; i++)
- /*skip * 2 as data is in complex mag,phase format*/
- skip +=((int)(elevationarray[i]/2)+1)*(IMPLENGTH*2);
-
- if (angleindex1 == 0);
- else for (i=0; i<angleindex1; i++)
- skip += (2*IMPLENGTH);
-
- if (switchchannels) {
- for (i=0;i<complexIMPLENGTH;i++) {
- lowl1[i]=fpindexr[skip+i];
- lowr1[i]=fpindexl[skip+i];
- }
- }
- else {
- for (i=0;i<complexIMPLENGTH;i++) {
- lowl1[i]=fpindexl[skip+i];
- lowr1[i]=fpindexr[skip+i];
- }
- }
-
- /*point 2*/
- skip = 0;
- if (elevindexlow == 0);
- else for (i=0; i<elevindexlow; i++)
- skip +=((int)(elevationarray[i]/2)+1)*(IMPLENGTH*2);
-
- if (angleindex2 == 0);
- else for (i=0; i<angleindex2; i++)
- skip += (2*IMPLENGTH);
-
- if (switchchannels) {
- for (i=0;i<complexIMPLENGTH;i++) {
- lowl2[i]=fpindexr[skip+i];
- lowr2[i]=fpindexl[skip+i];
- }
- }
-
- else {
- for (i=0;i<complexIMPLENGTH;i++) {
- lowl2[i]=fpindexl[skip+i];
- lowr2[i]=fpindexr[skip+i];
- }
- }
-
- /*point 3*/
- skip = 0;
- if (elevindexhigh == 0);
- else for (i=0; i<elevindexhigh; i++)
- skip +=((int)(elevationarray[i]/2)+1)*(IMPLENGTH*2);
-
- if (angleindex3 == 0);
- else for (i=0; i<angleindex3; i++)
- skip += (2*IMPLENGTH);
-
- if (switchchannels) {
- for (i=0;i<complexIMPLENGTH;i++) {
- highl1[i]=fpindexr[skip+i];
- highr1[i]=fpindexl[skip+i];
- }
- }
-
- else {
- for (i=0;i<complexIMPLENGTH;i++) {
- highl1[i]=fpindexl[skip+i];
- highr1[i]=fpindexr[skip+i];
- }
- }
-
- /*point 4*/
- skip = 0;
- if (elevindexhigh == 0);
- else for (i=0; i<elevindexhigh; i++)
- skip +=((int)(elevationarray[i]/2)+1)*(IMPLENGTH*2);
-
- if (angleindex4 == 0);
- else for (i=0; i<angleindex4; i++)
- skip += (2*IMPLENGTH);
-
- if (switchchannels) {
- for (i=0;i<complexIMPLENGTH;i++) {
- highl2[i]=fpindexr[skip+i];
- highr2[i]=fpindexl[skip+i];
- }
- }
-
- else {
- for (i=0;i<complexIMPLENGTH;i++) {
- highl2[i]=fpindexl[skip+i];
- highr2[i]=fpindexr[skip+i];
- }
- }
-
- /* magnitude interpolation*/
- for (i=0; i < complexIMPLENGTH; i+=2) {
- /* interpolate HIGH AND LOW MAGS*/
- magllow = lowl1[i]+(lowl2[i]-lowl1[i])*angleindex2per;
- maglhigh = highl1[i]+(highl2[i]-highl1[i])*angleindex4per;
-
- magrlow = lowr1[i]+(lowr2[i]-lowr1[i])*angleindex2per;
- magrhigh = highr1[i]+(highr2[i]-highr1[i])*angleindex4per;
-
- /* interpolate high and low results*/
- magl = magllow+(maglhigh-magllow)*elevindexhighper;
- magr = magrlow+(magrhigh-magrlow)*elevindexhighper;
+ n = csound->ksmps;
- if (phasetrunc) { /*use current phase, back to rectangular*/
- phasel = currentphasel[i+1];
- phaser = currentphaser[i+1];
+ for(j = 0; j < n; j++)
+ {
+ /* ins and outs */
+ insig[counter] = in[j];
- /* polar to rectangular*/
- hrtflfloat[i] = magl*COS(phasel);
- hrtflfloat[i+1] = magl*SIN(phasel);
+ outsigl[j] = outl[counter];
+ outsigr[j] = outr[counter];
- hrtfrfloat[i] = magr*COS(phaser);
- hrtfrfloat[i+1] = magr*SIN(phaser);
- }
-
- if (minphase) {
- /*store log magnitudes, 0 phases for ifft, do not allow log(0.0)*/
- logmagl[i]= LOG(magl==FL(0.0)?FL(0.00000001):magl);
- logmagr[i]= LOG(magr==FL(0.0)?FL(0.00000001):magr);
-
- logmagl[i+1] = FL(0.0);
- logmagr[i+1] = FL(0.0);
- }
- }
-
- if (minphase) {
- /*ifft!...see Oppehneim and Schafer for min phase process...
- based on real cepstrum method*/
- csound->InverseComplexFFT(csound, logmagl, IMPLENGTH);
- csound->InverseComplexFFT(csound, logmagr, IMPLENGTH);
-
- /*window, note no need to scale on csound iffts...*/
- for (i=0;i<complexIMPLENGTH;i+=2) {
- xhatwinl[i] = (logmagl[i]) * win[i/2];
- xhatwinr[i] = (logmagr[i]) * win[i/2];
- xhatwinl[i+1] = FL(0.0);
- xhatwinr[i+1] = FL(0.0);
- }
+ counter++;
- /*fft*/
- csound->ComplexFFT(csound, xhatwinl, IMPLENGTH);
- csound->ComplexFFT(csound, xhatwinr, IMPLENGTH);
-
- /*exponential of complex result*/
- for (i=0;i<256;i+=2) {
- expxhatwinl[i] = EXP(xhatwinl[i])*COS(xhatwinl[i+1]);
- expxhatwinl[i+1] = EXP(xhatwinl[i])*SIN(xhatwinl[i+1]);
- expxhatwinr[i] = EXP(xhatwinr[i])*COS(xhatwinr[i+1]);
- expxhatwinr[i+1] = EXP(xhatwinr[i])*SIN(xhatwinr[i+1]);
- }
-
- /*ifft for output buffers*/
- csound->InverseComplexFFT(csound, expxhatwinl, IMPLENGTH);
- csound->InverseComplexFFT(csound, expxhatwinr, IMPLENGTH);
-
- /*real parts of ifft for output, scale. */
- for (i= 0; i < complexIMPLENGTH; i+=2) {
- hrtflpad[i] = (expxhatwinl[i]);
- hrtfrpad[i] = (expxhatwinr[i]);
- hrtflpad[i+1] = FL(0.0);
- hrtfrpad[i+1] = FL(0.0);
- }
- }
-
- if (phasetrunc) /*use current phase and interped mag directly*/
+ if(phasetrunc)
{
- /*ifft*/
- csound->InverseComplexFFT(csound, hrtflfloat, IMPLENGTH);
- csound->InverseComplexFFT(csound, hrtfrfloat, IMPLENGTH);
-
- for (i=0; i<complexIMPLENGTH; i++) {
- /* scale and pad buffers with zeros to fftbuff*/
- hrtflpad[i] = hrtflfloat[i];
- hrtfrpad[i] = hrtfrfloat[i];
- }
+ /* used to ensure fade does not happen on first run */
+ if(initialfade < (irlength + 2))
+ initialfade++;
}
- /*zero pad impulse*/
- for (i=complexIMPLENGTH;i<complexfftbuff;i++)
+ if(counter == irlength)
{
- hrtflpad[i]=FL(0.0);
- hrtfrpad[i]=FL(0.0);
- }
-
- /*back to freq domain*/
- csound->ComplexFFT(csound, hrtflpad, complexIMPLENGTH);
- csound->ComplexFFT(csound, hrtfrpad, complexIMPLENGTH);
-
- /* look after overlap add stuff*/
- for (i = 0; i < overlapsize ; i++) {
- overlapl[i] = outl[i+IMPLENGTH];
- overlapr[i] = outr[i+IMPLENGTH];
-
- if (phasetrunc) /*look after fade stuff*/
- {
- if (crossfade)
- {
- overlapoldl[i] = outl[i+IMPLENGTH];
- overlapoldr[i] = outr[i+IMPLENGTH];
- }
- /* overlap will be previous fading out signal*/
- if (cross)
- {
- overlapoldl[i] = outlold[i+IMPLENGTH];
- overlapoldr[i] = outrold[i+IMPLENGTH];
- }
- }
- }
-
- /* insert insig for complex real,im fft, zero pad*/
- for (i = 0; i < IMPLENGTH; i++)
- {
- complexinsig[2*i] = insig[i];
- complexinsig[(2*i)+1] = FL(0.0);
- }
-
- for (i = complexIMPLENGTH; i < complexfftbuff; i++)
- complexinsig[i] = FL(0.0);
-
- csound->ComplexFFT(csound, complexinsig, complexIMPLENGTH);
-
- /* complex multiplication*/
- for (i = 0; i < complexfftbuff; i+=2) {
- outspecl[i] =
- complexinsig[i]*hrtflpad[i] - complexinsig[i+1]*hrtflpad[i+1];
- outspecr[i] =
- complexinsig[i]*hrtfrpad[i] - complexinsig[i+1]*hrtfrpad[i+1];
- outspecl[i+1] =
- complexinsig[i]*hrtflpad[i+1] + complexinsig[i+1]*hrtflpad[i];
- outspecr[i+1] =
- complexinsig[i]*hrtfrpad[i+1] + complexinsig[i+1]*hrtfrpad[i];
- }
-
- /* convolution is the inverse FFT of above result */
- csound->InverseComplexFFT(csound, outspecl, complexIMPLENGTH);
- csound->InverseComplexFFT(csound, outspecr, complexIMPLENGTH);
-
- if (phasetrunc) {
- /*real values, scaled (by a little more than usual to ensure
- no clipping) sr related?*/
- for (i = 0; i < complexIMPLENGTH; i++)
- {
- outl[i] = outspecl[2*i]/(sr/FL(38000.0));
- outr[i] = outspecr[2*i]/(sr/FL(38000.0));
- }
- }
-
- if (minphase) {
- /*real values*/
-
- /*scaling relative to sr not necessary for min phase?...just
- scaling by a little > 1 to avoid any possible overlap add clips*/
-
- for (i = 0; i < complexIMPLENGTH; i++)
- {
- outl[i] = outspecl[2*i]/FL(1.17);
- outr[i] = outspecr[2*i]/FL(1.17);
- }
- }
-
- if (phasetrunc) {
- /* setup for fades*/
- if (crossfade || cross) {
- crossout=1;
-
- for (i = 0; i < complexfftbuff; i+=2) {
- outspecoldl[i] = complexinsig[i]*oldhrtflpad[i] -
- complexinsig[i+1]*oldhrtflpad[i+1];
- outspecoldr[i] = complexinsig[i]*oldhrtfrpad[i] -
- complexinsig[i+1]*oldhrtfrpad[i+1];
- outspecoldl[i+1] = complexinsig[i]*oldhrtflpad[i+1] +
- complexinsig[i+1]*oldhrtflpad[i];
- outspecoldr[i+1] = complexinsig[i]*oldhrtfrpad[i+1] +
- complexinsig[i+1]*oldhrtfrpad[i];
- }
-
- csound->InverseComplexFFT(csound, outspecoldl, complexIMPLENGTH);
- csound->InverseComplexFFT(csound, outspecoldr, complexIMPLENGTH);
-
- /*real values, scaled*/
- for (i = 0; i < complexIMPLENGTH; i++)
+ /* process a block */
+ crossfade = 0;
+ crossout = 0;
+
+ if(elev > FL(90.0))
+ elev = FL(90.0);
+ if(elev < FL(-40.0))
+ elev = FL(-40.0);
+
+ while(angle < FL(0.0))
+ angle += FL(360.0);
+ while(angle >= FL(360.0))
+ angle -= FL(360.0);
+
+ /* only update if location changes! */
+ if(angle != p->anglev || elev != p->elevv)
{
- outlold[i] = outspecoldl[2*i]/(sr/FL(38000.0));
- outrold[i] = outspecoldr[2*i]/(sr/FL(38000.0));
+ /* two nearest elev indices to avoid recalculating */
+ elevindexstore = (elev - minelev) / elevincrement;
+ elevindexlow = (int)elevindexstore;
+
+ if(elevindexlow < 13)
+ elevindexhigh = elevindexlow + 1;
+ /* highest index reached */
+ else
+ elevindexhigh = elevindexlow;
+
+ /* get percentage value for interpolation */
+ elevindexhighper = elevindexstore - elevindexlow;
+
+ /* read using an index system based on number of points
+ measured per elevation at mit */
+ /* lookup indices, used to check for crossfade */
+ elevindex = (int)(elevindexstore + FL(0.5));
+
+ angleindex = (int)(angle / (FL(360.0) / elevationarray[elevindex])
+ + FL(0.5));
+ angleindex = angleindex % elevationarray[elevindex];
+
+ /* avoid recalculation */
+ angleindexlowstore = angle / (FL(360.0) /
+ elevationarray[elevindexlow]);
+ angleindexhighstore = angle / (FL(360.) /
+ elevationarray[elevindexhigh]);
+
+ /* 4 closest indices, 2 low and 2 high */
+ angleindex1 = (int)angleindexlowstore;
+
+ angleindex2 = angleindex1 + 1;
+ angleindex2 = angleindex2 % elevationarray[elevindexlow];
+
+ angleindex3 = (int)angleindexhighstore;
+
+ angleindex4 = angleindex3 + 1;
+ angleindex4 = angleindex4 % elevationarray[elevindexhigh];
+
+ /* angle percentages for interp */
+ angleindex2per = angleindexlowstore - angleindex1;
+ angleindex4per = angleindexhighstore - angleindex3;
+
+ if(phasetrunc)
+ {
+ if(angleindex!=oldangleindex || elevindex!=oldelevindex)
+ {
+ /* store last point and turn crossfade on, provided that
+ initialfade value indicates first block processed! */
+ /* (otherwise,there will be a fade in at the start). */
+ if(initialfade>irlength)
+ {
+ /* post warning if fades ovelap */
+ if(cross)
+ {
+ csound->Message(csound,
+ Str("\nWARNING: fades are "
+ "overlapping: this could lead"
+ " to noise: reduce fade size "
+ "or change trajectory\n\n"));
+ cross = 0;
+ }
+ /* reset l, use as index to fade */
+ l = 0;
+ crossfade = 1;
+ /* store old data */
+ for(i = 0; i < irlengthpad; i++)
+ {
+ oldhrtflpad[i] = hrtflpad[i];
+ oldhrtfrpad[i] = hrtfrpad[i];
+ }
+ }
+
+ /* store point for current phase as trajectory comes
+ closer to a new index */
+ skip = 0;
+ /* store current phase */
+ if(angleindex > elevationarray[elevindex] / 2)
+ {
+ for(i = 0; i < elevindex; i++)
+ skip +=((int)(elevationarray[i] / 2) + 1) * irlength;
+ for (i = 0;
+ i < (elevationarray[elevindex] - angleindex);
+ i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ currentphasel[i] = fpindexr[skip + i];
+ currentphaser[i] = fpindexl[skip + i];
+ }
+ }
+ else
+ {
+ for(i = 0; i < elevindex; i++)
+ skip +=((int)(elevationarray[i] / 2) + 1) * irlength;
+ for (i = 0; i < angleindex; i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ currentphasel[i] = fpindexl[skip+i];
+ currentphaser[i] = fpindexr[skip+i];
+ }
+ }
+ }
+ }
+ /* for next check */
+ p->oldelevindex = elevindex;
+ p->oldangleindex = angleindex;
+
+ /* read 4 nearest HRTFs */
+ skip = 0;
+ /* switch l and r */
+ if(angleindex1 > elevationarray[elevindexlow] / 2)
+ {
+ for(i = 0; i < elevindexlow; i++)
+ skip +=((int)(elevationarray[i] / 2) + 1) * irlength;
+ for (i = 0;
+ i < (elevationarray[elevindexlow] - angleindex1);
+ i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ lowl1[i] = fpindexr[skip+i];
+ lowr1[i] = fpindexl[skip+i];
+ }
+ }
+ else
+ {
+ for(i = 0; i < elevindexlow; i++)
+ skip +=((int)(elevationarray[i] / 2) + 1) * irlength;
+ for (i = 0; i < angleindex1; i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ lowl1[i] = fpindexl[skip+i];
+ lowr1[i] = fpindexr[skip+i];
+ }
+ }
+
+ skip = 0;
+ if(angleindex2 > elevationarray[elevindexlow] / 2)
+ {
+ for(i = 0; i < elevindexlow; i++)
+ skip +=((int)(elevationarray[i] / 2) + 1) * irlength;
+ for (i = 0;
+ i < (elevationarray[elevindexlow] - angleindex2);
+ i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ lowl2[i] = fpindexr[skip+i];
+ lowr2[i] = fpindexl[skip+i];
+ }
+ }
+ else
+ {
+ for(i = 0; i < elevindexlow; i++)
+ skip +=((int)(elevationarray[i] / 2) + 1) * irlength;
+ for (i = 0; i < angleindex2; i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ lowl2[i] = fpindexl[skip+i];
+ lowr2[i] = fpindexr[skip+i];
+ }
+ }
+
+ skip = 0;
+ if(angleindex3 > elevationarray[elevindexhigh] / 2)
+ {
+ for(i = 0; i < elevindexhigh; i++)
+ skip +=((int)(elevationarray[i] / 2) + 1) * irlength;
+ for (i = 0;
+ i < (elevationarray[elevindexhigh] - angleindex3);
+ i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ highl1[i] = fpindexr[skip+i];
+ highr1[i] = fpindexl[skip+i];
+ }
+ }
+ else
+ {
+ for(i = 0; i < elevindexhigh; i++)
+ skip +=((int)(elevationarray[i] / 2) + 1) * irlength;
+ for (i = 0; i < angleindex3; i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ highl1[i] = fpindexl[skip+i];
+ highr1[i] = fpindexr[skip+i];
+ }
+ }
+
+ skip = 0;
+ if(angleindex4 > elevationarray[elevindexhigh] / 2)
+ {
+ for(i = 0; i < elevindexhigh; i++)
+ skip +=((int)(elevationarray[i] / 2) + 1) * irlength;
+ for (i = 0;
+ i < (elevationarray[elevindexhigh] - angleindex4);
+ i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ highl2[i] = fpindexr[skip+i];
+ highr2[i] = fpindexl[skip+i];
+ }
+ }
+ else
+ {
+ for(i = 0; i < elevindexhigh; i++)
+ skip +=((int)(elevationarray[i] / 2) + 1) * irlength;
+ for (i = 0; i < angleindex4; i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ highl2[i] = fpindexl[skip+i];
+ highr2[i] = fpindexr[skip+i];
+ }
+ }
+
+ /* interpolation */
+ /* 0 Hz and Nyq...absoulute values for mag */
+ magllow = FABS(lowl1[0]) + (FABS(lowl2[0]) - FABS(lowl1[0])) *
+ angleindex2per;
+ maglhigh = FABS(highl1[0]) + (FABS(highl2[0]) - FABS(highl1[0]))
+ * angleindex4per;
+ magl = magllow + (maglhigh - magllow) * elevindexhighper;
+ if(minphase)
+ {
+ logmagl[0] = LOG((magl == FL(0.0) ? FL(0.00000001) : magl));
+ }
+ /* this is where real values of 0hz and nyq needed:
+ if neg real, 180 degree phase */
+ /* if data was complex, mag interp would use fabs()
+ inherently, phase would be 0/pi */
+ /* if pi, real is negative! */
+ else
+ {
+ if(currentphasel[0] < FL(0.0))
+ hrtflfloat[0] = -magl;
+ else
+ hrtflfloat[0] = magl;
+ }
+
+ magllow = FABS(lowl1[1]) + (FABS(lowl2[1]) - FABS(lowl1[1])) *
+ angleindex2per;
+ maglhigh = FABS(highl1[1]) + (FABS(highl2[1]) - FABS(highl1[1])) *
+ angleindex4per;
+ magl = magllow + (maglhigh-magllow) * elevindexhighper;
+ if(minphase)
+ {
+ logmagl[1] = LOG(magl == FL(0.0) ? FL(0.00000001) : magl);
+ }
+ else
+
+ {
+ if(currentphasel[1] < FL(0.0))
+ hrtflfloat[1] = -magl;
+ else
+ hrtflfloat[1] = magl;
+ }
+
+ magrlow = FABS(lowr1[0]) + (FABS(lowr2[0]) - FABS(lowr1[0])) *
+ angleindex2per;
+ magrhigh = FABS(highr1[0]) + (FABS(highr2[0]) - FABS(highr1[0])) *
+ angleindex4per;
+ magr = magrlow + (magrhigh - magrlow) * elevindexhighper;
+ if(minphase)
+ {
+ logmagr[0] = LOG(magr == FL(0.0) ? FL(0.00000001) : magr);
+ }
+ else
+ {
+ if(currentphaser[0] < FL(0.0))
+ hrtfrfloat[0] = -magr;
+ else
+ hrtfrfloat[0] = magr;
+ }
+
+ magrlow = FABS(lowr1[1]) + (FABS(lowr2[1]) - FABS(lowr1[1])) *
+ angleindex2per;
+ magrhigh = FABS(highr1[1]) + (FABS(highr2[1]) - FABS(highr1[1])) *
+ angleindex4per;
+ magr = magrlow + (magrhigh - magrlow) * elevindexhighper;
+ if(minphase)
+ {
+ logmagr[1] = LOG(magr == FL(0.0) ? FL(0.00000001) : magr);
+ }
+ else
+ {
+ if(currentphaser[1] < FL(0.0))
+ hrtfrfloat[1] = -magr;
+ else
+ hrtfrfloat[1] = magr;
+ }
+
+ /* remaining values */
+ for(i = 2; i < irlength; i += 2)
+ {
+ /* interpolate high and low mags */
+ magllow = lowl1[i] + (lowl2[i] - lowl1[i]) * angleindex2per;
+ maglhigh = highl1[i] + (highl2[i] - highl1[i]) * angleindex4per;
+
+ magrlow = lowr1[i] + (lowr2[i] - lowr1[i]) * angleindex2per;
+ magrhigh = highr1[i] + (highr2[i] - highr1[i]) * angleindex4per;
+
+ /* interpolate high and low results */
+ magl = magllow + (maglhigh - magllow) * elevindexhighper;
+ magr = magrlow + (magrhigh - magrlow) * elevindexhighper;
+
+ if(phasetrunc)
+ {
+ /* use current phase, back to rectangular */
+ phasel = currentphasel[i + 1];
+ phaser = currentphaser[i + 1];
+
+ /* polar to rectangular */
+ hrtflfloat[i] = magl * COS(phasel);
+ hrtflfloat[i+1] = magl * SIN(phasel);
+
+ hrtfrfloat[i] = magr * COS(phaser);
+ hrtfrfloat[i+1] = magr * SIN(phaser);
+ }
+
+ if(minphase)
+ {
+ /* store log magnitudes, 0 phases for ifft, do not
+ allow log(0.0) */
+ logmagl[i] = LOG(magl == FL(0.0) ? FL(0.00000001) : magl);
+ logmagr[i] = LOG(magr == FL(0.0) ? FL(0.00000001) : magr);
+
+ logmagl[i + 1] = FL(0.0);
+ logmagr[i + 1] = FL(0.0);
+ }
+ }
+
+ if(minphase)
+ {
+ /* ifft!...see Oppehneim and Schafer for min phase
+ process...based on real cepstrum method */
+ csound->InverseRealFFT(csound, logmagl, irlength);
+ csound->InverseRealFFT(csound, logmagr, irlength);
+
+ /* window, note no need to scale on csound iffts... */
+ for(i = 0; i < irlength; i++)
+ {
+ xhatwinl[i] = logmagl[i] * win[i];
+ xhatwinr[i] = logmagr[i] * win[i];
+ }
+
+ /* fft */
+ csound->RealFFT(csound, xhatwinl, irlength);
+ csound->RealFFT(csound, xhatwinr, irlength);
+
+ /* exponential of result */
+ /* 0 hz and nyq purely real... */
+ expxhatwinl[0] = EXP(xhatwinl[0]);
+ expxhatwinl[1] = EXP(xhatwinl[1]);
+ expxhatwinr[0] = EXP(xhatwinr[0]);
+ expxhatwinr[1] = EXP(xhatwinr[1]);
+
+ /* exponential of real, cos/sin of imag */
+ for(i = 2; i < irlength; i += 2)
+ {
+ expxhatwinl[i] = EXP(xhatwinl[i]) * COS(xhatwinl[i + 1]);
+ expxhatwinl[i+1] = EXP(xhatwinl[i]) * SIN(xhatwinl[i + 1]);
+ expxhatwinr[i] = EXP(xhatwinr[i]) * COS(xhatwinr[i + 1]);
+ expxhatwinr[i+1] = EXP(xhatwinr[i]) * SIN(xhatwinr[i + 1]);
+ }
+
+ /* ifft for output buffers */
+ csound->InverseRealFFT(csound, expxhatwinl, irlength);
+ csound->InverseRealFFT(csound, expxhatwinr, irlength);
+
+ /* output */
+ for(i= 0; i < irlength; i++)
+ {
+ hrtflpad[i] = expxhatwinl[i];
+ hrtfrpad[i] = expxhatwinr[i];
+ }
+ }
+
+ /* use current phase and interped mag directly */
+ if(phasetrunc)
+ {
+ /* ifft */
+ csound->InverseRealFFT(csound, hrtflfloat, irlength);
+ csound->InverseRealFFT(csound, hrtfrfloat, irlength);
+
+ for (i = 0; i < irlength; i++)
+ {
+ /* scale and pad buffers with zeros to fftbuff */
+ hrtflpad[i] = hrtflfloat[i];
+ hrtfrpad[i] = hrtfrfloat[i];
+ }
+ }
+
+ /* zero pad impulse */
+ for(i = irlength; i < irlengthpad; i++)
+ {
+ hrtflpad[i] = FL(0.0);
+ hrtfrpad[i] = FL(0.0);
+ }
+
+ /* back to freq domain */
+ csound->RealFFT(csound, hrtflpad, irlengthpad);
+ csound->RealFFT(csound, hrtfrpad, irlengthpad);
+
+ if(minphase)
+ {
+ /* read delay data: 4 nearest points, as above */
+ /* point 1 */
+ skip = 0;
+ if(angleindex1 > elevationarray[elevindexlow] / 2)
+ {
+ for (i = 0; i < elevindexlow; i++)
+ skip += ((int)(elevationarray[i] / 2) + 1);
+ for(i = 0;
+ i < (elevationarray[elevindexlow] - angleindex1);
+ i++)
+ skip++;
+ delaylow1 = minphasedels[skip];
+ }
+ else
+ {
+ for (i = 0; i < elevindexlow; i++)
+ skip += ((int)(elevationarray[i] / 2) + 1);
+ for(i = 0; i < angleindex1; i++)
+ skip++;
+ delaylow1 = minphasedels[skip];
+ }
+
+ /* point 2 */
+ skip = 0;
+ if(angleindex2 > elevationarray[elevindexlow] / 2)
+ {
+ for (i = 0; i < elevindexlow; i++)
+ skip += ((int)(elevationarray[i] / 2) + 1);
+ for(i = 0;
+ i < (elevationarray[elevindexlow] - angleindex2);
+ i++)
+ skip++;
+ delaylow2 = minphasedels[skip];
+ }
+ else
+ {
+ for (i = 0; i < elevindexlow; i++)
+ skip += ((int)(elevationarray[i] / 2) + 1);
+ for (i = 0; i < angleindex2; i++)
+ skip++;
+ delaylow2 = minphasedels[skip];
+ }
+
+ /* point 3 */
+ skip = 0;
+ if(angleindex3 > elevationarray[elevindexhigh] / 2)
+ {
+ for (i = 0; i < elevindexhigh; i++)
+ skip += ((int)(elevationarray[i] / 2) + 1);
+ for(i = 0;
+ i < (elevationarray[elevindexhigh] - angleindex3);
+ i++)
+ skip++;
+ delayhigh1 =minphasedels[skip];
+ }
+ else
+ {
+ for (i = 0; i < elevindexhigh; i++)
+ skip += ((int)(elevationarray[i] / 2) + 1);
+ for (i = 0; i < angleindex3; i++)
+ skip++;
+ delayhigh1 = minphasedels[skip];
+ }
+
+ /* point 4 */
+ skip = 0;
+ if(angleindex4 > elevationarray[elevindexhigh] / 2)
+ {
+ for (i = 0; i < elevindexhigh; i++)
+ skip += ((int)(elevationarray[i] / 2) + 1);
+ for(i = 0;
+ i < (elevationarray[elevindexhigh] - angleindex4);
+ i++)
+ skip++;
+ delayhigh2 = minphasedels[skip];
+ }
+ else
+ {
+ for (i = 0; i < elevindexhigh; i++)
+ skip += ((int)(elevationarray[i] / 2) + 1);
+ for (i = 0; i < angleindex4; i++)
+ skip++;
+ delayhigh2 = minphasedels[skip];
+ }
+
+ /* delay interp */
+ delaylow = delaylow1 + ((delaylow2 - delaylow1) *
+ angleindex2per);
+ delayhigh = delayhigh1 + ((delayhigh2 - delayhigh1) *
+ angleindex4per);
+ delayfloat = delaylow + ((delayhigh - delaylow) *
+ elevindexhighper);
+
+ p->delayfloat = delayfloat;
+ }
+ /* end of angle/elev change process */
+ p->elevv = elev;
+ p->anglev = angle;
}
- cross++;
- /*number of processing buffers in a fade*/
- cross=cross%(int)(fadebuffer/IMPLENGTH);
- }
-
- if (crossout) { /*do fade */
- for (i=0;i<IMPLENGTH;i++) {
- outl[i] = ((outlold[i] + (i<overlapsize ? overlapoldl[i] : 0)) *
- (FL(1.0) - FL(l)/fadebuffer)) +
- ((outl[i] + (i < overlapsize ? overlapl[i] : 0)) *
- FL(l)/fadebuffer);
- outr[i] = ((outrold[i] + (i<overlapsize ? overlapoldr[i] : 0)) *
- (FL(1.0) - FL(l)/fadebuffer)) +
- ((outr[i] + (i < overlapsize ? overlapr[i] : 0)) *
- FL(l)/fadebuffer);
- l++;
- }
- }
- else
- for (i=0;i<IMPLENGTH;i++)
+ /* look after overlap add */
+ for(i = 0; i < overlapsize ; i++)
{
- outl[i] = outl[i] + (i < overlapsize ? overlapl[i] : FL(0.0));
- outr[i] = outr[i] + (i < overlapsize ? overlapr[i] : FL(0.0));
+ overlapl[i] = outl[i + irlength];
+ overlapr[i] = outr[i + irlength];
+ /* look after fade */
+ if(phasetrunc)
+ {
+ if(crossfade)
+ {
+ overlapoldl[i] = outl[i + irlength];
+ overlapoldr[i] = outr[i + irlength];
+ }
+ /* overlap will be previous fading out signal */
+ if(cross)
+ {
+ overlapoldl[i] = outlold[i + irlength];
+ overlapoldr[i] = outrold[i + irlength];
+ }
+ }
}
- /*use to check for crossfade next time!*/
- p->oldelevindex = elevindex;
- p->oldangleindex = angleindex;
- }
-
- if (minphase) { /*use output direcly and add delay in time domain*/
- for (i=0;i<IMPLENGTH;i++)
- {
- outl[i] = outl[i] + (i < overlapsize ? overlapl[i] : 0);
- outr[i] = outr[i] + (i < overlapsize ? overlapr[i] : 0);
- }
-
- /*read delay data: 4 nearest points*/
- /*point 1*/
- skip = 0;
- if (elevindexlow == 0);
- else {
- for (i=0; i<elevindexlow; i++)
- skip +=((int)(elevationarray[i]/2)+1);
- }
-
- if (angleindex1 == 0);
- else {
- for (i=0; i<angleindex1; i++)
- skip++;
- }
-
- delaylow1=minphasedels[skip];
-
- /*point 2*/
- skip = 0;
- if (elevindexlow == 0);
- else {
- for (i=0; i<elevindexlow; i++)
- skip +=((int)(elevationarray[i]/2)+1);
- }
-
- if (angleindex2 == 0);
- else {
- for (i=0; i<angleindex2; i++)
- skip++;
- }
-
- delaylow2=minphasedels[skip];
-
- /*point 3*/
- skip = 0;
- if (elevindexhigh == 0);
- else {
- for (i=0; i<elevindexhigh; i++)
- skip +=((int)(elevationarray[i]/2)+1);
- }
-
- if (angleindex3 == 0);
- else {
- for (i=0; i<angleindex3; i++)
- skip++;
- }
-
- delayhigh1=minphasedels[skip];
-
- /*point 4*/
- skip = 0;
- if (elevindexhigh == 0);
- else {
- for (i=0; i<elevindexhigh; i++)
- skip +=((int)(elevationarray[i]/2)+1);
- }
+ /* insert insig */
+ for (i = 0; i < irlength; i++)
+ complexinsig[i] = insig[i];
- if (angleindex4 == 0);
- else {
- for (i=0; i<angleindex4; i++)
- skip++;
- }
+ for (i = irlength; i < irlengthpad; i++)
+ complexinsig[i] = FL(0.0);
- delayhigh2=minphasedels[skip];
-
- /*delay interp*/
- delaylow = delaylow1 +
- ((delaylow2 - delaylow1)*angleindex2per);
- delayhigh = delayhigh1 +
- ((delayhigh2 - delayhigh1)*angleindex4per);
- delayfloat = delaylow +
- ((delayhigh - delaylow)*elevindexhighper);
-
- /*standard variable delay function for each ear, according
- to interpolated delay value*/
- if (switchchannels) {
- vdtr = (delayfloat + 0.0001f)*sr;
- mdtr = (int)(0.00095f*sr);
- if (vdtr > mdtr) vdtr = (float)mdtr;
- for (i=0;i<IMPLENGTH;i++) {
- rpr = ptr - vdtr;
- if (rpr < 0) rpr += mdtr;
- fracr = rpr - (int) rpr;
- if (rpr < mdtr -1)
- outvdr = delmemr[(int)rpr] +
- fracr*(delmemr[(int)rpr+1] - delmemr[(int)rpr]);
- else outvdr = delmemr[mdtr-1] +
- fracr*(delmemr[0] - delmemr[mdtr-1]);
- delmemr[ptr] = outr[i];
- outr[i] = outvdr;
- ptr = ptr + 1;
- if (ptr >=mdtr) ptr = 0;
- }
-
- vdtl = (float)(FL(0.0001)*sr);
- mdtl = (int)(FL(0.00095)*sr);
- if (vdtl > mdtl) vdtl = (float)mdtl;
- for (i=0;i<IMPLENGTH;i++) {
- rpl = ptl - vdtl;
- if (rpl < 0) rpl += mdtl;
- fracl = rpl - (int) rpl;
- if (rpl < mdtl -1)
- outvdl = delmeml[(int)rpl] +
- fracl*(delmeml[(int)rpl+1] - delmeml[(int)rpl]);
- else outvdl = delmeml[mdtl-1] +
- fracl*(delmeml[0] - delmeml[mdtl-1]);
- delmeml[ptl] = outl[i];
- outl[i] = outvdl;
- ptl = ptl + 1;
- if (ptl >=mdtl) ptl = 0;
- }
- }
- else {
- vdtl = (delayfloat + 0.0001f)*sr;
- mdtl = (int)(.00095f*sr);
- if (vdtl > mdtl) vdtl = (float)mdtl;
- for (i=0;i<IMPLENGTH;i++) {
- rpl = ptl - vdtl;
- if (rpl < 0) rpl += mdtl;
- fracl = rpl - (int) rpl;
- if (rpl < mdtl -1)
- outvdl = delmeml[(int)rpl] +
- fracl*(delmeml[(int)rpl+1] - delmeml[(int)rpl]);
- else outvdl = delmeml[mdtl-1] +
- fracl*(delmeml[0] - delmeml[mdtl-1]);
- delmeml[ptl] = outl[i];
- outl[i] = outvdl;
- ptl = ptl + 1;
- if (ptl >=mdtl) ptl = 0;
- }
-
- vdtr = (float)(FL(0.0001)*sr);
- mdtr = (int)(FL(0.00095)*sr);
- if (vdtr > mdtr) vdtr = (float)mdtr;
- for (i=0;i<IMPLENGTH;i++) {
- rpr = ptr - vdtr;
- if (rpr < 0) rpr += mdtr;
- fracr = rpr - (int) rpr;
- if (rpr < mdtr -1)
- outvdr = delmemr[(int)rpr] +
- fracr*(delmemr[(int)rpr+1] - delmemr[(int)rpr]);
- else outvdr = delmemr[mdtr-1] +
- fracr*(delmemr[0] - delmemr[mdtr-1]);
- delmemr[ptr] = outr[i];
- outr[i] = outvdr;
- ptr = ptr + 1;
- if (ptr >=mdtr) ptr = 0;
- }
- }
+ csound->RealFFT(csound, complexinsig, irlengthpad);
- p->ptl = ptl;
- p->ptr = ptr;
+ /* complex mult function... */
+ csound->RealFFTMult(csound, outspecl, hrtflpad, complexinsig,
+ irlengthpad, FL(1.0));
+ csound->RealFFTMult(csound, outspecr, hrtfrpad, complexinsig,
+ irlengthpad, FL(1.0));
+
+ /* convolution is the inverse FFT of above result */
+ csound->InverseRealFFT(csound, outspecl, irlengthpad);
+ csound->InverseRealFFT(csound, outspecr, irlengthpad);
- }
- /*reset counter*/
- counter=0;
- if (phasetrunc) {
- /*update*/
- p->cross = cross;
- p->l = l;
- }
+ /* real values, scaled (by a little more than usual to ensure
+ no clipping) sr related */
+ for(i = 0; i < irlengthpad; i++)
+ {
+ outl[i] = outspecl[i] / (sr / FL(38000.0));
+ outr[i] = outspecr[i] / (sr / FL(38000.0));
+ }
- } /* end of IMPLENGTH == counter*/
+ if(phasetrunc)
+ {
+ /* setup for fades */
+ if(crossfade || cross)
+ {
+ crossout = 1;
+
+ csound->RealFFTMult(csound, outspecoldl, oldhrtflpad,
+ complexinsig, irlengthpad, FL(1.0));
+ csound->RealFFTMult(csound, outspecoldr, oldhrtfrpad,
+ complexinsig, irlengthpad, FL(1.0));
+
+ csound->InverseRealFFT(csound, outspecoldl, irlengthpad);
+ csound->InverseRealFFT(csound, outspecoldr, irlengthpad);
+
+ /* scaled */
+ for(i = 0; i < irlengthpad; i++)
+ {
+ outlold[i] = outspecoldl[i] / (sr / FL(38000.0));
+ outrold[i] = outspecoldr[i] / (sr / FL(38000.0));
+ }
+
+ cross++;
+ /* number of processing buffers in a fade */
+ cross = cross % fade;
+ }
+
+ if(crossout)
+ {
+ /* do fade */
+ for(i = 0; i < irlength; i++)
+ {
+ outl[i] = ((outlold[i] +
+ (i<overlapsize ? overlapoldl[i] : 0)) *
+ (FL(1.0) - l / fadebuffer)) +
+ ((outl[i] + (i < overlapsize ? overlapl[i] : 0)) *
+ FL(l)/fadebuffer);
+ outr[i] = ((outrold[i] +
+ (i<overlapsize ? overlapoldr[i] : 0)) *
+ (FL(1.0) - l / fadebuffer)) +
+ ((outr[i] + (i < overlapsize ? overlapr[i] : 0)) *
+ FL(l)/fadebuffer);
+ l++;
+ }
+ }
+ else
+ for(i = 0; i < irlength; i++) {
+ outl[i] = outl[i] + (i < overlapsize ? overlapl[i] : FL(0.0));
+ outr[i] = outr[i] + (i < overlapsize ? overlapr[i] : FL(0.0));
+ }
+ }
- } /* end of ksmps audio loop */
+ if(minphase)
+ {
+ /* use output direcly and add delay in time domain */
+ for(i = 0; i < irlength; i++)
+ {
+ outl[i] = outl[i] + (i < overlapsize ? overlapl[i] : FL(0.0));
+ outr[i] = outr[i] + (i < overlapsize ? overlapr[i] : FL(0.0));
+ }
+
+ if(angle > FL(180.0))
+ {
+ vdtr = delayfloat * sr;
+ vdtl = FL(0.0);
+ }
+ else
+ {
+ vdtr = FL(0.0);
+ vdtl = delayfloat * sr;
+ }
+
+ /* delay right */
+ if(vdtr > mdtr)
+ vdtr = FL(mdtr);
+ for(i = 0; i < irlength; i++)
+ {
+ rpr = ptr - vdtr;
+ rpr = (rpr >= 0 ? (rpr < mdtr ? rpr : rpr - mdtr) : rpr + mdtr);
+ posr = (int) rpr;
+ fracr = rpr - posr;
+ delmemr[ptr] = outr[i];
+ outvdr = delmemr[posr] + fracr *
+ (delmemr[(posr + 1 < mdtr ? posr + 1 : 0)] - delmemr[posr]);
+ outr[i] = outvdr;
+ ptr = (ptr != mdtr - 1 ? ptr + 1 : 0);
+ }
+
+ /* delay left */
+ if(vdtl > mdtl)
+ vdtl = FL(mdtl);
+ for(i = 0; i < irlength; i++)
+ {
+ rpl = ptl - vdtl;
+ rpl = (rpl >= 0 ? (rpl < mdtl ? rpl : rpl - mdtl) : rpl + mdtl);
+ posl = (int) rpl;
+ fracl = rpl - (int) posl;
+ delmeml[ptl] = outl[i];
+ outvdl = delmeml[posl] + fracl *
+ (delmeml[(posl + 1 < mdtl ? posl + 1 : 0)] - delmeml[posl]);
+ outl[i] = outvdl;
+ ptl = (ptl != mdtl - 1 ? ptl + 1 : 0);
+ }
+
+ p->ptl = ptl;
+ p->ptr = ptr;
+ }
- /*update*/
+ /* reset counter */
+ counter = 0;
+ if(phasetrunc)
+ {
+ /* update */
+ p->cross = cross;
+ p->l = l;
+ }
+
+ } /* end of irlength == counter */
+
+ } /* end of ksmps audio loop */
+
+ /* update */
p->counter = counter;
- if (phasetrunc)p->initialfade = initialfade;
+ if(phasetrunc)
+ p->initialfade = initialfade;
return OK;
}
+/* Csound hrtf magnitude interpolation, woodworth phase,
+ static source: January 10 */
+/* overlap add convolution */
+/* aleft, aright hrtfstat ain, iang, iel, ifilel, ifiler [,iradius = 8.8,
+ isr = 44100]...options of 48 and 96k sr */
-/*Csound hrtf magnitude interpolation, woodworth phase, static source: January 08*/
-/*overlap add convolution*/
-
-/*aleft, aright hrtfstat ain, iang, iel, ifilel, ifiler [,iradius = 9.0,
- isr = 44100]...options of 48 and 96k sr*/
-
-/*definitions above*/
-typedef struct {
- OPDS h;
- MYFLT *outsigl, *outsigr;
- MYFLT *in, *iangle, *ielev, *ifilel,
- *ifiler, *oradius, *osr; /* outputs and inputs*/
-
- int IMPLENGTH, complexIMPLENGTH,
- overlapsize, complexfftbuff; /*see definitions in INIT*/
- MYFLT sroverN;
-
- int counter;
- MYFLT sr;
-
- AUXCH hrtflpad,hrtfrpad; /*hrtf data padded*/
- AUXCH insig, outl, outr; /*in and output buffers*/
-
- /*memory local to perform method*/
- AUXCH complexinsig; /*insig fft*/
- AUXCH hrtflfloat, hrtfrfloat; /*hrtf buffers (rectangular complex form)*/
- AUXCH outspecl, outspecr; /*spectral data*/
-
- AUXCH overlapl, overlapr; /*overlap data*/
-
- AUXCH lowl1,lowr1,lowl2,lowr2,
- highl1,highr1,highl2,highr2; /*interpolation buffers*/
+/* see definitions above */
- AUXCH leftshiftbuffer,rightshiftbuffer; /*buffers for impulse shift*/
-
-} hrtfstat;
+typedef struct
+{
+ OPDS h;
+ /* outputs and inputs */
+ MYFLT *outsigl, *outsigr;
+ MYFLT *in, *iangle, *ielev, *ifilel, *ifiler, *oradius, *osr;
+
+ /*see definitions in INIT*/
+ int irlength, irlengthpad, overlapsize;
+ MYFLT sroverN;
+
+ int counter;
+ MYFLT sr;
+
+ /* hrtf data padded */
+ AUXCH hrtflpad,hrtfrpad;
+ /* in and output buffers */
+ AUXCH insig, outl, outr;
+
+ /* memory local to perform method */
+ /* insig fft */
+ AUXCH complexinsig;
+ /* hrtf buffers (rectangular complex form) */
+ AUXCH hrtflfloat, hrtfrfloat;
+ /* spectral data */
+ AUXCH outspecl, outspecr;
+
+ /* overlap data */
+ AUXCH overlapl, overlapr;
+
+ /* interpolation buffers */
+ AUXCH lowl1, lowr1, lowl2, lowr2, highl1, highr1, highl2, highr2;
+
+ /* buffers for impulse shift */
+ AUXCH leftshiftbuffer, rightshiftbuffer;
+}
+hrtfstat;
static int hrtfstat_init(CSOUND *csound, hrtfstat *p)
{
- /*left and right data files: spectral mag, phase format.*/
- MEMFIL *fpl=NULL,*fpr=NULL;
- char filel[MAXNAME],filer[MAXNAME];
+ /* left and right data files: spectral mag, phase format. */
+ MEMFIL *fpl = NULL, *fpr = NULL;
+ char filel[MAXNAME], filer[MAXNAME];
- /*interpolation values*/
+ /* interpolation values */
MYFLT *lowl1;
MYFLT *lowr1;
MYFLT *lowl2;
@@ -1204,153 +1396,165 @@ static int hrtfstat_init(CSOUND *csound, hrtfstat *p)
MYFLT r = *p->oradius;
MYFLT sr = *p->osr;
- float *fpindexl=NULL; /* pointers into HRTF files*/
+ /* pointers into HRTF files */
+ float *fpindexl=NULL;
float *fpindexr=NULL;
- int IMPLENGTH = 0; /*time domain impulse length */
- int complexIMPLENGTH = 0; /*freq domain impulse length*/
- int overlapsize = 0; /*overlap add convolution*/
- int complexfftbuff = 0; /*complex fft used(min phase needs it)*/
+ /* time domain impulse length, padded, overlap add */
+ int irlength=0, irlengthpad=0, overlapsize=0;
- int i,elevindex, angleindex, switchchannels=0, skip=0;
+ int i, skip = 0;
- /*local interpolation values*/
- MYFLT elevindexlowper,elevindexhighper,angleindex1per,
- angleindex2per,angleindex3per,angleindex4per;
- int elevindexlow,elevindexhigh,angleindex1,angleindex2,angleindex3,angleindex4;
- MYFLT magl,magr,phasel,phaser, magllow, magrlow, maglhigh, magrhigh;
+ /* local interpolation values */
+ MYFLT elevindexhighper, angleindex2per, angleindex4per;
+ int elevindexlow, elevindexhigh, angleindex1, angleindex2,
+ angleindex3, angleindex4;
+ MYFLT magl, magr, phasel, phaser, magllow, magrlow, maglhigh, magrhigh;
+
+ /* local variables, mainly used for simplification */
+ MYFLT elevindexstore;
+ MYFLT angleindexlowstore;
+ MYFLT angleindexhighstore;
- /*woodworth values*/
- float radianangle,radianelev,itd,freq;
+ /* woodworth values */
+ MYFLT radianangle, radianelev, itd=0, itdww, freq;
- /*shift stuff*/
+ /* shift */
int shift;
MYFLT *leftshiftbuffer;
MYFLT *rightshiftbuffer;
- /*woodworth: change for different sr*/
-
- if (sr!=FL(44100.0)&&sr!=FL(48000.0)&&sr!=FL(96000.0))
- sr=FL(44100.0);
+ /* sr */
+ if(sr != FL(44100.0) && sr != FL(48000.0) && sr != FL(96000.0))
+ sr = FL(44100.0);
p->sr = sr;
if (UNLIKELY(csound->esr != sr))
- csound->Warning(csound,
- Str("Orchestra sampling rate is not "
- "compatible with HRTF data files\nShould be %.0f,"
- " see Csound help for object\n\n"), sr);
-
- strcpy(filel, (char*) p->ifilel); /*copy in string name...*/
- strcpy(filer, (char*) p->ifiler);
-
- if (sr == FL(44100.0)) {
- IMPLENGTH = 128;
- complexIMPLENGTH = 256;
- overlapsize = (IMPLENGTH-1);
- complexfftbuff = (complexIMPLENGTH*2);
-
- if (UNLIKELY((fpl = csound->ldmemfile2withCB(csound, filel,
- CSFTYPE_FLOATS_BINARY,
- swap4bytes)) == NULL)) {
- return
- csound->InitError(csound,
- Str("\n\n\ncannot load left data file, exiting\n\n"));
+ csound->Message(csound,
+ Str("\n\nWARNING!!:\nOrchestra SR not compatible with "
+ "HRTF processing SR of: %.0f\n\n"), sr);
+
+ /* setup as per sr */
+ if(sr == 44100 || sr == 48000)
+ {
+ irlength = 128;
+ irlengthpad = 256;
+ overlapsize = (irlength - 1);
}
-
- if (UNLIKELY((fpr = csound->ldmemfile2withCB(csound, filer,
- CSFTYPE_FLOATS_BINARY,
- swap4bytes)) == NULL)) {
- return
- csound->InitError(csound,
- Str("\n\n\ncannot load right data file, exiting\n\n"));
+ else if(sr == 96000)
+ {
+ irlength = 256;
+ irlengthpad = 512;
+ overlapsize = (irlength - 1);
}
- }
-
- else if (sr == FL(48000.0)) {
- IMPLENGTH = 128;
- complexIMPLENGTH = 256;
- overlapsize = (IMPLENGTH-1);
- complexfftbuff = (complexIMPLENGTH*2);
-
- if (UNLIKELY((fpl = csound->ldmemfile2withCB(csound, filel,
- CSFTYPE_FLOATS_BINARY,
- swap4bytes)) == NULL)) {
- return
- csound->InitError(csound,
- Str("\n\n\ncannot load left data file, exiting\n\n"));
- }
-
- if (UNLIKELY((fpr = csound->ldmemfile2withCB(csound, filer,
- CSFTYPE_FLOATS_BINARY,
- swap4bytes)) == NULL)) {
- return
- csound->InitError(csound,
- Str("\n\n\ncannot load right data file, exiting\n\n"));
- }
- }
-
- else if (sr == FL(96000.0)) {
- IMPLENGTH = 256;
- complexIMPLENGTH = 512;
- overlapsize = (IMPLENGTH-1);
- complexfftbuff = (complexIMPLENGTH*2);
-
- if (UNLIKELY((fpl = csound->ldmemfile2withCB(csound, filel,
- CSFTYPE_FLOATS_BINARY,
- swap4bytes)) == NULL)) {
- return
- csound->InitError(csound,
- Str("\n\n\ncannot load left data file, exiting\n\n"));
- }
-
- if (UNLIKELY((fpr = csound->ldmemfile2withCB(csound, filer,
- CSFTYPE_FLOATS_BINARY,
- swap4bytes)) == NULL)) {
- return
- csound->InitError(csound,
- Str("\n\n\ncannot load right data file, exiting\n\n"));
- }
- }
+
+ /* copy in string name... */
+ strncpy(filel, (char*) p->ifilel, MAXNAME);
+ strncpy(filer, (char*) p->ifiler, MAXNAME);
+
+ /* reading files, with byte swap */
+ fpl = csound->ldmemfile2withCB(csound, filel, CSFTYPE_FLOATS_BINARY,
+ swap4bytes);
+ if (UNLIKELY(fpl == NULL))
+ return
+ csound->InitError(csound,
+ Str("\n\n\nCannot load left data file, exiting\n\n"));
+
+ fpr = csound->ldmemfile2withCB(csound, filer, CSFTYPE_FLOATS_BINARY,
+ swap4bytes);
+ if (UNLIKELY(fpr == NULL))
+ return
+ csound->InitError(csound,
+ Str("\n\n\nCannot load right data file, exiting\n\n"));
- p->IMPLENGTH = IMPLENGTH;
- p->complexIMPLENGTH = complexIMPLENGTH;
+ p->irlength = irlength;
+ p->irlengthpad = irlengthpad;
p->overlapsize = overlapsize;
- p->complexfftbuff = complexfftbuff;
- p->sroverN = sr/IMPLENGTH;
-
- if (fpl && fpr) {
- /*start indices at correct value (start of file)/ zero indices.*/
- fpindexl = (float *) fpl->beginp;
- fpindexr = (float *) fpr->beginp;
- }
- /*buffers */
- csound->AuxAlloc(csound, IMPLENGTH*sizeof(MYFLT), &p->insig);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->outl);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->outr);
- csound->AuxAlloc(csound, complexfftbuff*sizeof(MYFLT), &p->hrtflpad);
- csound->AuxAlloc(csound, complexfftbuff*sizeof(MYFLT), &p->hrtfrpad);
- csound->AuxAlloc(csound, complexfftbuff*sizeof(MYFLT), &p-> complexinsig);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->hrtflfloat);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->hrtfrfloat);
- csound->AuxAlloc(csound, complexfftbuff*sizeof(MYFLT), &p->outspecl);
- csound->AuxAlloc(csound, complexfftbuff*sizeof(MYFLT), &p->outspecr);
- csound->AuxAlloc(csound, overlapsize*sizeof(MYFLT), &p->overlapl);
- csound->AuxAlloc(csound, overlapsize*sizeof(MYFLT), &p->overlapr);
-
- /*interpolation values*/
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->lowl1);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->lowr1);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->lowl2);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->lowr2);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->highl1);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->highr1);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->highl2);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->highr2);
-
- /*shift buffers*/
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->leftshiftbuffer);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->rightshiftbuffer);
+ p->sroverN = sr/irlength;
+
+ /* start indices at correct value (start of file)/ zero indices.
+ (don't need to store here, as only accessing in INIT) */
+ fpindexl = (float *) fpl->beginp;
+ fpindexr = (float *) fpr->beginp;
+
+ /* buffers */
+ if (!p->insig.auxp || p->insig.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength*sizeof(MYFLT), &p->insig);
+ if (!p->outl.auxp || p->outl.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad*sizeof(MYFLT), &p->outl);
+ if (!p->outr.auxp || p->outr.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad*sizeof(MYFLT), &p->outr);
+ if (!p->hrtflpad.auxp || p->hrtflpad.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad*sizeof(MYFLT), &p->hrtflpad);
+ if (!p->hrtfrpad.auxp || p->hrtfrpad.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad*sizeof(MYFLT), &p->hrtfrpad);
+ if (!p->complexinsig.auxp || p->complexinsig.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad*sizeof(MYFLT), &p-> complexinsig);
+ if (!p->hrtflfloat.auxp || p->hrtflfloat.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength*sizeof(MYFLT), &p->hrtflfloat);
+ if (!p->hrtfrfloat.auxp || p->hrtfrfloat.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength*sizeof(MYFLT), &p->hrtfrfloat);
+ if (!p->outspecl.auxp || p->outspecl.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad*sizeof(MYFLT), &p->outspecl);
+ if (!p->outspecr.auxp || p->outspecr.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad*sizeof(MYFLT), &p->outspecr);
+ if (!p->overlapl.auxp || p->overlapl.size < overlapsize * sizeof(MYFLT))
+ csound->AuxAlloc(csound, overlapsize*sizeof(MYFLT), &p->overlapl);
+ if (!p->overlapr.auxp || p->overlapr.size < overlapsize * sizeof(MYFLT))
+ csound->AuxAlloc(csound, overlapsize*sizeof(MYFLT), &p->overlapr);
+
+ memset(p->insig.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->outl.auxp, 0, irlengthpad * sizeof(MYFLT));
+ memset(p->outr.auxp, 0, irlengthpad * sizeof(MYFLT));
+ memset(p->hrtflpad.auxp, 0, irlengthpad * sizeof(MYFLT));
+ memset(p->hrtfrpad.auxp, 0, irlengthpad * sizeof(MYFLT));
+ memset(p->complexinsig.auxp, 0, irlengthpad * sizeof(MYFLT));
+ memset(p->hrtflfloat.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->hrtfrfloat.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->outspecl.auxp, 0, irlengthpad * sizeof(MYFLT));
+ memset(p->outspecr.auxp, 0, irlengthpad * sizeof(MYFLT));
+ memset(p->overlapl.auxp, 0, overlapsize * sizeof(MYFLT));
+ memset(p->overlapr.auxp, 0, overlapsize * sizeof(MYFLT));
+
+ /* interpolation values */
+ if (!p->lowl1.auxp || p->lowl1.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->lowl1);
+ if (!p->lowr1.auxp || p->lowr1.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->lowr1);
+ if (!p->lowl2.auxp || p->lowl2.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->lowl2);
+ if (!p->lowr2.auxp || p->lowr2.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->lowr2);
+ if (!p->highl1.auxp || p->highl1.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->highl1);
+ if (!p->highr1.auxp || p->highr1.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->highr1);
+ if (!p->highl2.auxp || p->highl2.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->highl2);
+ if (!p->highr2.auxp || p->highr2.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->highr2);
+
+ /* best to zero, for future changes (filled in init) */
+ memset(p->lowl1.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->lowr1.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->lowl2.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->lowr2.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->highl1.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->highl2.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->highr1.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->highr2.auxp, 0, irlength * sizeof(MYFLT));
+
+ /* shift buffers */
+ if (!p->leftshiftbuffer.auxp ||
+ p->leftshiftbuffer.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength*sizeof(MYFLT), &p->leftshiftbuffer);
+ if (!p->rightshiftbuffer.auxp ||
+ p->rightshiftbuffer.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength*sizeof(MYFLT), &p->rightshiftbuffer);
+
+ memset(p->leftshiftbuffer.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->rightshiftbuffer.auxp, 0, irlength * sizeof(MYFLT));
lowl1 = (MYFLT *)p->lowl1.auxp;
lowr1 = (MYFLT *)p->lowr1.auxp;
@@ -1370,279 +1574,287 @@ static int hrtfstat_init(CSOUND *csound, hrtfstat *p)
hrtflpad = (MYFLT *)p->hrtflpad.auxp;
hrtfrpad = (MYFLT *)p->hrtfrpad.auxp;
- if (r<=0||r>15)
- r=9.0;
-
- if (elev < -40) elev = -40; /*within legal MIT range*/
- if (elev > 90) elev = 90;
- elevindex = (int)floorf(((float)(elev-minelev)/elevincrement)+0.5f);
-
- while (angle<0)angle+=360;
- while (angle>360)angle-=360; /*mod 360*/
- if (angle>180) {
- angle=360-angle;
- switchchannels=1; /*true for later function: data is symmetrical*/
- }
-
- /*read using an index system based on number of points measured
- per elevation at mit*/
- angleindex = (int)floorf(angle/(FL(360.0)/(MYFLT)elevationarray[elevindex])+FL(0.5));
- /*angle/increment+0.5*/
- if (angleindex>=((int)(elevationarray[elevindex]/2)+1))
- /*last point in current elevation*/
- angleindex=(int)(elevationarray[elevindex]/2);
-
- /* two nearest elev indices*/
- elevindexlow = (int)((elev-minelev)/elevincrement);
- if (elevindexlow<13) elevindexhigh = elevindexlow+1;
- else elevindexhigh = elevindexlow; /* highest index reached*/
-
- /* get percentage value for interpolation*/
- elevindexlowper = FL(1.0) -
- (MYFLT)(((MYFLT)(elev-minelev)/elevincrement)-(MYFLT)elevindexlow);
- elevindexhighper = FL(1.0) - elevindexlowper;
-
- /* 4 closest angle indices, 2 low and 2 high*/
- angleindex1 = (int)(angle/(360.0f/(float)elevationarray[elevindexlow]));
+ if(r <= 0 || r > 15)
+ r = FL(8.8);
+
+ if(elev > FL(90.0))
+ elev = FL(90.0);
+ if(elev < FL(-40.0))
+ elev = FL(-40.0);
+
+ while(angle < FL(0.0))
+ angle += FL(360.0);
+ while(angle >= FL(360.0))
+ angle -= FL(360.0);
+
+ /* two nearest elev indices to avoid recalculating */
+ elevindexstore = (elev - minelev) / elevincrement;
+ elevindexlow = (int)elevindexstore;
+
+ if(elevindexlow < 13)
+ elevindexhigh = elevindexlow + 1;
+ /* highest index reached */
+ else
+ elevindexhigh = elevindexlow;
+
+ /* get percentage value for interpolation */
+ elevindexhighper = elevindexstore - elevindexlow;
+
+ /* avoid recalculation */
+ angleindexlowstore = angle / (FL(360.0) / elevationarray[elevindexlow]);
+ angleindexhighstore = angle / (FL(360.0) / elevationarray[elevindexhigh]);
+
+ /* 4 closest indices, 2 low and 2 high */
+ angleindex1 = (int)angleindexlowstore;
angleindex2 = angleindex1 + 1;
- if (angleindex2>=((int)(elevationarray[elevindexlow]/2)+1))
- angleindex2=(int)(elevationarray[elevindexlow]/2);
+ angleindex2 = angleindex2 % elevationarray[elevindexlow];
- angleindex3 = (int)(angle/(360.0f/(float)elevationarray[elevindexhigh]));
+ angleindex3 = (int)angleindexhighstore;
angleindex4 = angleindex3 + 1;
- if (angleindex4>=((int)(elevationarray[elevindexhigh]/2)+1))
- angleindex4=(int)(elevationarray[elevindexhigh]/2);
-
- /* angle percentages for interp*/
- angleindex1per = FL(1.0) -
- (MYFLT)((angle/(FL(360.0)/(MYFLT)elevationarray[elevindexlow])-angleindex1));
- angleindex2per = FL(1.0)-angleindex1per;
- angleindex3per = FL(1.0) -
- (MYFLT)((angle/(360.0/(MYFLT)elevationarray[elevindexhigh])-angleindex3));
- angleindex4per = FL(1.0)-angleindex3per;
-
- /*read 4 nearest points for interpolation*/
- /*point 1*/
- skip = 0;
- if (elevindexlow == 0);
- else
- for (i=0; i<elevindexlow; i++)
- /*skip * 2 as data is in complex mag,phase format*/
- skip +=((int)(elevationarray[i]/2)+1)*(IMPLENGTH*2);
+ angleindex4 = angleindex4 % elevationarray[elevindexhigh];
- if (angleindex1 == 0);
- else
- for (i=0; i<angleindex1; i++)
- skip += (2*IMPLENGTH);
+ /* angle percentages for interp */
+ angleindex2per = angleindexlowstore - angleindex1;
+ angleindex4per = angleindexhighstore - angleindex3;
- if (switchchannels) {
- for (i=0;i<complexIMPLENGTH;i++) {
- lowl1[i]=fpindexr[skip+i];
- lowr1[i]=fpindexl[skip+i];
+ /* read 4 nearest HRTFs */
+ skip = 0;
+ /* switch l and r */
+ if(angleindex1 > elevationarray[elevindexlow] / 2)
+ {
+ for(i = 0; i < elevindexlow; i++)
+ skip +=((int)(elevationarray[i] / 2) + 1) * irlength;
+ for (i = 0; i < (elevationarray[elevindexlow] - angleindex1); i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ lowl1[i] = fpindexr[skip + i];
+ lowr1[i] = fpindexl[skip + i];
+ }
}
- }
-
- else {
- for (i=0;i<complexIMPLENGTH;i++) {
- lowl1[i]=fpindexl[skip+i];
- lowr1[i]=fpindexr[skip+i];
+ else
+ {
+ for(i = 0; i < elevindexlow; i++)
+ skip +=((int)(elevationarray[i] / 2) + 1) * irlength;
+ for (i = 0; i < angleindex1; i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ lowl1[i] = fpindexl[skip + i];
+ lowr1[i] = fpindexr[skip + i];
+ }
}
- }
-
- /*point 2*/
+
skip = 0;
- if (elevindexlow == 0);
- else
- for (i=0; i<elevindexlow; i++)
- skip +=((int)(elevationarray[i]/2)+1)*(IMPLENGTH*2);
-
- if (angleindex2 == 0);
- else
- for (i=0; i<angleindex2; i++)
- skip += (2*IMPLENGTH);
-
- if (switchchannels) {
- for (i=0;i<complexIMPLENGTH;i++) {
- lowl2[i]=fpindexr[skip+i];
- lowr2[i]=fpindexl[skip+i];
+ if(angleindex2 > elevationarray[elevindexlow] / 2)
+ {
+ for(i = 0; i < elevindexlow; i++)
+ skip +=((int)(elevationarray[i] / 2) + 1) * irlength;
+ for (i = 0; i < (elevationarray[elevindexlow] - angleindex2); i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ lowl2[i] = fpindexr[skip + i];
+ lowr2[i] = fpindexl[skip + i];
+ }
}
- }
-
- else {
- for (i=0;i<complexIMPLENGTH;i++) {
- lowl2[i]=fpindexl[skip+i];
- lowr2[i]=fpindexr[skip+i];
+ else
+ {
+ for(i = 0; i < elevindexlow; i++)
+ skip +=((int)(elevationarray[i] / 2) + 1) * irlength;
+ for (i = 0; i < angleindex2; i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ lowl2[i] = fpindexl[skip + i];
+ lowr2[i] = fpindexr[skip + i];
+ }
}
- }
-
- /*point 3*/
+
skip = 0;
- if (elevindexhigh == 0);
- else
- for (i=0; i<elevindexhigh; i++)
- skip +=((int)(elevationarray[i]/2)+1)*(IMPLENGTH*2);
-
- if (angleindex3 == 0);
- else
- for (i=0; i<angleindex3; i++)
- skip += (2*IMPLENGTH);
-
- if (switchchannels) {
- for (i=0;i<complexIMPLENGTH;i++) {
- highl1[i]=fpindexr[skip+i];
- highr1[i]=fpindexl[skip+i];
+ if(angleindex3 > elevationarray[elevindexhigh] / 2)
+ {
+ for(i = 0; i < elevindexhigh; i++)
+ skip += ((int)(elevationarray[i] / 2) + 1) * irlength;
+ for (i = 0; i < (elevationarray[elevindexhigh] - angleindex3); i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ highl1[i] = fpindexr[skip + i];
+ highr1[i] = fpindexl[skip + i];
+ }
}
- }
-
- else {
- for (i=0;i<complexIMPLENGTH;i++) {
- highl1[i]=fpindexl[skip+i];
- highr1[i]=fpindexr[skip+i];
+ else
+ {
+ for(i = 0; i < elevindexhigh; i++)
+ skip +=((int)(elevationarray[i] / 2) + 1) * irlength;
+ for (i = 0; i < angleindex3; i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ highl1[i] = fpindexl[skip + i];
+ highr1[i] = fpindexr[skip + i];
+ }
}
- }
- /*point 4*/
skip = 0;
- if (elevindexhigh == 0);
- else
- for (i=0; i<elevindexhigh; i++)
- skip +=((int)(elevationarray[i]/2)+1)*(IMPLENGTH*2);
-
- if (angleindex4 == 0);
- else
- for (i=0; i<angleindex4; i++)
- skip += (2*IMPLENGTH);
-
- if (switchchannels) {
- for (i=0;i<complexIMPLENGTH;i++) {
- highl2[i]=fpindexr[skip+i];
- highr2[i]=fpindexl[skip+i];
+ if(angleindex4 > elevationarray[elevindexhigh] / 2)
+ {
+ for(i = 0; i < elevindexhigh; i++)
+ skip +=((int)(elevationarray[i] / 2) + 1) * irlength;
+ for (i = 0; i < (elevationarray[elevindexhigh] - angleindex4); i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ highl2[i] = fpindexr[skip + i];
+ highr2[i] = fpindexl[skip + i];
+ }
}
- }
-
- else {
- for (i=0;i<complexIMPLENGTH;i++) {
- highl2[i]=fpindexl[skip+i];
- highr2[i]=fpindexr[skip+i];
+ else
+ {
+ for(i = 0; i < elevindexhigh; i++)
+ skip +=((int)(elevationarray[i] / 2) + 1) * irlength;
+ for (i = 0; i < angleindex4; i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ highl2[i] = fpindexl[skip + i];
+ highr2[i] = fpindexr[skip + i];
+ }
}
- }
- /*woodworth stuff*/
- radianangle = angle * (float)PI/180.0f; /* degrees to radians */
- radianelev = elev * (float)PI/180.0f;
-
- if (radianangle > (PI/2.0)) /*get in correct range for formula*/
- radianangle = (float)PI - radianangle;
-
- /*woodworth formula for itd*/
- itd = (radianangle + sinf(radianangle))*r*cosf(radianelev)/c;
-
- /* magnitude interpolation*/
- for (i=0; i < complexIMPLENGTH; i+=2) {
- /* interpolate high and low mags*/
- magllow = lowl1[i]+(MYFLT)((lowl2[i]-lowl1[i])*(MYFLT)angleindex2per);
- maglhigh = highl1[i]+(MYFLT)((highl2[i]-highl1[i])*(MYFLT)angleindex4per);
-
- magrlow = lowr1[i]+(MYFLT)((lowr2[i]-lowr1[i])*(MYFLT)angleindex2per);
- magrhigh = highr1[i]+(MYFLT)((highr2[i]-highr1[i])*(MYFLT)angleindex4per);
-
- /* interpolate high and low results*/
- magl = magllow+(MYFLT)((maglhigh-magllow)*(MYFLT)elevindexhighper);
- magr = magrlow+(MYFLT)((magrhigh-magrlow)*(MYFLT)elevindexhighper);
-
- if (i<(IMPLENGTH+1))freq = (i/2)*p->sroverN;
- else freq = (-IMPLENGTH+(i/2))*p->sroverN;
-
- /*NONLIN ITD...*/
- if (p->sr == 96000) {
- if ((i/2)>0 && (i/2)<6) {
- itd = (radianangle + sinf(radianangle))*r*cosf(radianelev)/c;
- itd = itd * nonlinitd96k[(i/2)-1];
- }
- if ((i/2)>251 && (i/2)<256) {
- itd = (radianangle + sinf(radianangle))*r*cosf(radianelev)/c;
- itd = itd * nonlinitd96k[255-(i/2)];
- }
- }
- if (p->sr == 48000) {
- if ((i/2)>0 && (i/2)<6) {
- itd = (radianangle + sinf(radianangle))*r*cosf(radianelev)/c;
- itd = itd * nonlinitd48k[(i/2)-1];
- }
- if ((i/2)>123 && (i/2)<128) {
- itd = (radianangle + sinf(radianangle))*r*cosf(radianelev)/c;
- itd = itd * nonlinitd48k[127-(i/2)];
- }
- }
- if (p->sr == 44100) {
- if ((i/2)>0 && (i/2)<6) {
- itd = (radianangle + sinf(radianangle))*r*cosf(radianelev)/c;
- itd = itd * nonlinitd[(i/2)-1];
- }
- if ((i/2)>123 && (i/2)<128) {
- itd = (radianangle + sinf(radianangle))*r*cosf(radianelev)/c;
- itd = itd * nonlinitd[127-(i/2)];
- }
- }
+ /* woodworth process */
+ /* ITD formula, check which ear is relevant to calculate angle from */
+ if(angle > FL(180.0))
+ radianangle = (angle - FL(180.0)) * PI_F / FL(180.0);
+ else
+ radianangle = angle * PI_F / FL(180.0);
+ /* degrees to radians */
+ radianelev = elev * PI_F / FL(180.0);
+
+ /* get in correct range for formula */
+ if(radianangle > PI_F / FL(2.0))
+ radianangle = FL(PI) - radianangle;
+
+ /* woodworth formula for itd */
+ itdww = (radianangle + SIN(radianangle)) * r * COS(radianelev) / c;
+
+ /* 0 Hz and Nyq... */
+ /* these are real values...may be neg (implying phase of pi:
+ in phase truncation), so need fabs... */
+ magllow = FABS(lowl1[0]) + (FABS(lowl2[0]) - FABS(lowl1[0])) * angleindex2per;
+ maglhigh = FABS(highl1[0]) + (FABS(highl2[0]) - FABS(highl1[0])) *
+ angleindex4per;
+ hrtflfloat[0] = magllow + (maglhigh - magllow) * elevindexhighper;
+
+ magllow = FABS(lowl1[1]) + (FABS(lowl2[1]) - FABS(lowl1[1])) * angleindex2per;
+ maglhigh = FABS(highl1[1]) + (FABS(highl2[1]) - FABS(highl1[1])) *
+ angleindex4per;
+ hrtflfloat[1] = magllow + (maglhigh - magllow) * elevindexhighper;
+
+ magrlow = FABS(lowr1[0]) + (FABS(lowr2[0]) - FABS(lowr1[0])) * angleindex2per;
+ magrhigh = FABS(highr1[0]) + (FABS(highr2[0]) - FABS(highr1[0])) *
+ angleindex4per;
+ hrtfrfloat[0] = magrlow + (magrhigh - magrlow) * elevindexhighper;
+
+ magrlow = FABS(lowr1[1]) + (FABS(lowr2[1]) - FABS(lowr1[1])) * angleindex2per;
+ magrhigh = FABS(highr1[1]) + (FABS(highr2[1]) - FABS(highr1[1])) *
+ angleindex4per;
+ hrtfrfloat[1] = magrlow + (magrhigh - magrlow) * elevindexhighper;
+
+ /* magnitude interpolation */
+ for(i = 2; i < irlength; i+=2)
+ {
+ /* interpolate high and low mags */
+ magllow = lowl1[i] + (lowl2[i] - lowl1[i]) * angleindex2per;
+ maglhigh = highl1[i]+(highl2[i] - highl1[i]) * angleindex4per;
+
+ magrlow = lowr1[i] + (lowr2[i] - lowr1[i]) * angleindex2per;
+ magrhigh = highr1[i] + (highr2[i] - highr1[i]) * angleindex4per;
+
+ /* interpolate high and low results */
+ magl = magllow + (maglhigh - magllow) * elevindexhighper;
+ magr = magrlow + (magrhigh - magrlow) * elevindexhighper;
+
+ freq = (i / 2) * p->sroverN;
+
+ /* non linear itd...last value in array = 1.0, so back to itdww */
+ if(p->sr == 96000)
+ {
+ if ((i / 2) < 6)
+ itd = itdww * nonlinitd96k[(i / 2) - 1];
+ }
+ else if(p->sr == 48000)
+ {
+ if ((i / 2) < 6)
+ itd = itdww * nonlinitd48k[(i / 2) - 1];
+ }
+ else if(p->sr == 44100)
+ {
+ if((i / 2) < 6)
+ itd = itdww * nonlinitd[(i / 2) - 1];
+ }
+
+ if(angle > FL(180.))
+ {
+ phasel = TWOPI_F * freq * (itd / 2);
+ phaser = TWOPI_F * freq * -(itd / 2);
+ }
+ else
+ {
+ phasel = TWOPI_F * freq * -(itd / 2);
+ phaser = TWOPI_F * freq * (itd / 2);
+ }
+
+ /* polar to rectangular */
+ hrtflfloat[i] = magl * COS(phasel);
+ hrtflfloat[i+1] = magl * SIN(phasel);
- if (switchchannels) {
- phasel = TWOPI_F*freq*(itd/2);
- phaser = TWOPI_F*freq*-(itd/2);
- }
- else {
- phasel = TWOPI_F*freq*-(itd/2);
- phaser = TWOPI_F*freq*(itd/2);
+ hrtfrfloat[i] = magr * COS(phaser);
+ hrtfrfloat[i+1] = magr * SIN(phaser);
}
- /* polar to rectangular*/
- hrtflfloat[i] = magl*COS(phasel);
- hrtflfloat[i+1] = magl*SIN(phasel);
-
- hrtfrfloat[i] = magr*COS(phaser);
- hrtfrfloat[i+1] = magr*SIN(phaser);
- }
-
- /*ifft*/
- csound->InverseComplexFFT(csound, hrtflfloat, IMPLENGTH);
- csound->InverseComplexFFT(csound, hrtfrfloat, IMPLENGTH);
+ /* ifft */
+ csound->InverseRealFFT(csound, hrtflfloat, irlength);
+ csound->InverseRealFFT(csound, hrtfrfloat, irlength);
- for (i=0; i<complexIMPLENGTH; i++) {
- hrtflpad[i] = hrtflfloat[i]; /* scale and pad buffers with zeros to fftbuff*/
- hrtfrpad[i] = hrtfrfloat[i];
+ for (i = 0; i < irlength; i++)
+ {
+ /* scale and pad buffers with zeros to fftbuff */
+ leftshiftbuffer[i] = hrtflfloat[i];
+ rightshiftbuffer[i] = hrtfrfloat[i];
}
- /*shift for causality...impulse as is is centred around zero time lag...
- then phase added.*/
- /*this step centres impulse around centre tap of filter (then phase
- moves it for correct itd...)*/
- shift = IMPLENGTH;
- for (i=0;i<complexIMPLENGTH;i++) {
- leftshiftbuffer[i] = hrtflpad[i];
- rightshiftbuffer[i] = hrtfrpad[i];
- }
-
- for (i=0;i<complexIMPLENGTH;i++) {
- hrtflpad[i] = leftshiftbuffer[shift];
- hrtfrpad[i] = rightshiftbuffer[shift];
+ /* shift for causality...impulse as is is centred around zero time lag...
+ then phase added. */
+ /* this step centres impulse around centre tap of filter (then phase
+ moves it for correct itd...) */
+ shift = irlength / 2;
- shift++;
- shift = shift%complexIMPLENGTH;
- }
+ for(i = 0; i < irlength; i++)
+ {
+ hrtflpad[i] = leftshiftbuffer[shift];
+ hrtfrpad[i] = rightshiftbuffer[shift];
- /*zero pad impulse*/
- for (i=complexIMPLENGTH;i<complexfftbuff;i++) {
- hrtflpad[i]=FL(0.0);
- hrtfrpad[i]=FL(0.0);
+ shift++;
+ shift = shift % irlength;
}
- /*back to freq domain*/
- csound->ComplexFFT(csound, hrtflpad, complexIMPLENGTH);
- csound->ComplexFFT(csound, hrtfrpad, complexIMPLENGTH);
-
+ /* zero pad impulse */
+ for(i = irlength; i < irlengthpad; i++)
+ {
+ hrtflpad[i] = FL(0.0);
+ hrtfrpad[i] = FL(0.0);
+ }
+
+ /* back to freq domain */
+ csound->RealFFT(csound, hrtflpad, irlengthpad);
+ csound->RealFFT(csound, hrtfrpad, irlengthpad);
- p->counter = 0; /*initialize counter*/
+ /* initialize counter */
+ p->counter = 0;
return OK;
}
@@ -1650,11 +1862,12 @@ static int hrtfstat_init(CSOUND *csound, hrtfstat *p)
static int hrtfstat_process(CSOUND *csound, hrtfstat *p)
{
- MYFLT *in = p->in; /*local pointers to p*/
+ /* local pointers to p */
+ MYFLT *in = p->in;
MYFLT *outsigl = p->outsigl;
MYFLT *outsigr = p->outsigr;
- /*common buffers and variables*/
+ /* common buffers and variables */
MYFLT *insig = (MYFLT *)p->insig.auxp;
MYFLT *outl = (MYFLT *)p->outl.auxp;
MYFLT *outr = (MYFLT *)p->outr.auxp;
@@ -1670,339 +1883,325 @@ static int hrtfstat_process(CSOUND *csound, hrtfstat *p)
MYFLT *overlapr = (MYFLT *)p->overlapr.auxp;
int counter = p->counter;
- int n,j,i;
+ int n, j, i;
- int IMPLENGTH = p->IMPLENGTH;
- int complexIMPLENGTH = p->complexIMPLENGTH;
+ int irlength = p->irlength;
+ int irlengthpad = p->irlengthpad;
int overlapsize = p->overlapsize;
- int complexfftbuff = p->complexfftbuff;
MYFLT sr = p->sr;
- n=csound->ksmps;
-
- for (j=0;j<n;j++) {
- insig[counter] = in[j]; /*ins and outs*/
-
- outsigl[j]=outl[counter];
- outsigr[j]=outr[counter];
-
- counter++;
-
- if (counter == IMPLENGTH) { /*process a block*/
- /* look after overlap add stuff*/
- for (i = 0; i < overlapsize ; i++) {
- overlapl[i] = outl[i+IMPLENGTH];
- overlapr[i] = outr[i+IMPLENGTH];
- }
-
- /* insert insig for complex real,im fft, zero pad*/
- for (i = 0; i < IMPLENGTH; i++) {
- complexinsig[2*i] = insig[i];
- complexinsig[(2*i)+1] = FL(0.0);
- }
-
- for (i = complexIMPLENGTH; i < complexfftbuff; i++)
- complexinsig[i] = FL(0.0);
+ n = csound->ksmps;
- csound->ComplexFFT(csound, complexinsig, complexIMPLENGTH);
+ for(j = 0; j < n; j++)
+ {
+ /* ins and outs */
+ insig[counter] = in[j];
- /* complex multiplication*/
- for (i = 0; i < complexfftbuff; i+=2) {
- outspecl[i] = complexinsig[i]*hrtflpad[i] -
- complexinsig[i+1]*hrtflpad[i+1];
- outspecr[i] = complexinsig[i]*hrtfrpad[i] -
- complexinsig[i+1]*hrtfrpad[i+1];
- outspecl[i+1] = complexinsig[i]*hrtflpad[i+1] +
- complexinsig[i+1]*hrtflpad[i];
- outspecr[i+1] = complexinsig[i]*hrtfrpad[i+1] +
- complexinsig[i+1]*hrtfrpad[i];
- }
+ outsigl[j] = outl[counter];
+ outsigr[j] = outr[counter];
- /* convolution is the inverse FFT of above result */
- csound->InverseComplexFFT(csound, outspecl, complexIMPLENGTH);
- csound->InverseComplexFFT(csound, outspecr, complexIMPLENGTH);
+ counter++;
+ if(counter == irlength)
+ {
+ /* process a block */
+ /* look after overlap add stuff */
+ for(i = 0; i < overlapsize ; i++)
+ {
+ overlapl[i] = outl[i+irlength];
+ overlapr[i] = outr[i+irlength];
+ }
- /*real values*/
-
- /*scaled by a factor related to sr...?*/
-
- for (i = 0; i < complexIMPLENGTH; i++) {
- outl[i] = outspecl[2*i]/(sr/FL(38000.0));
- outr[i] = outspecr[2*i]/(sr/FL(38000.0));
- }
-
+ /* insert insig for complex real,im fft, zero pad */
+ for (i = 0; i < irlength; i++)
+ complexinsig[i] = insig[i];
+
+ for (i = irlength; i < irlengthpad; i++)
+ complexinsig[i] = FL(0.0);
+
+ csound->RealFFT(csound, complexinsig, irlengthpad);
+
+ /* complex multiplication */
+ csound->RealFFTMult(csound, outspecl, hrtflpad, complexinsig,
+ irlengthpad, FL(1.0));
+ csound->RealFFTMult(csound, outspecr, hrtfrpad, complexinsig,
+ irlengthpad, FL(1.0));
+
+ /* convolution is the inverse FFT of above result */
+ csound->InverseRealFFT(csound, outspecl, irlengthpad);
+ csound->InverseRealFFT(csound, outspecr, irlengthpad);
+
+ /* scaled by a factor related to sr...? */
+ for(i = 0; i < irlengthpad; i++)
+ {
+ outl[i] = outspecl[i] / (sr / FL(38000.0));
+ outr[i] = outspecr[i] / (sr / FL(38000.0));
+ }
- for (i=0;i<IMPLENGTH;i++) {
- outl[i] = outl[i] + (i < overlapsize ? overlapl[i] : FL(0.0));
- outr[i] = outr[i] + (i < overlapsize ? overlapr[i] : FL(0.0));
- }
+ for(i = 0; i < irlength; i++)
+ {
+ outl[i] = outl[i] + (i < overlapsize ? overlapl[i] : FL(0.0));
+ outr[i] = outr[i] + (i < overlapsize ? overlapr[i] : FL(0.0));
+ }
- /*reset counter*/
- counter=0;
+ /* reset counter */
+ counter = 0;
- } /* end of IMPLENGTH == counter*/
+ } /* end of irlength == counter */
- } /* end of ksmps audio loop */
+ } /* end of ksmps audio loop */
- /*update*/
+ /* update */
p->counter = counter;
return OK;
}
-/*Csound hrtf magnitude interpolation, dynamic woodworth trajectory: September 07*/
-/*stft from fft.cpp in sndobj...*/
+/* Csound hrtf magnitude interpolation, dynamic woodworth trajectory */
+/* stft from fft.cpp in sndobj... */
-/*****/
-/*stft based on sndobj implementation...some notes:*/
-/*need an overlapskip (same as m_counter) for in and out to control seperately...*/
-/*ifft.cpp zeros current overlapskipout,then decrements t...not possible
- here as t needs to be decremented before fft...*/
-/*****/
+/* stft based on sndobj implementation...some notes: */
+/* using an overlapskip (same as m_counter) for in and out to control
+ seperately for clarity... */
-/*aleft, aright hrtfmove2 ain, kang, kel, ifilel, ifiler
- [,ioverlap = 4, iradius = 9.0, isr = 44100] */
-/*ioverlap is stft overlap, iradius is head radius, sr can also be 48000 and 96000*/
+/* aleft, aright hrtfmove2 ain, kang, kel, ifilel, ifiler [, ioverlap = 4,
+ iradius = 8.8, isr = 44100] */
+/* ioverlap is stft overlap, iradius is head radius, sr can also be 48000
+ and 96000 */
-/*definitions above*/
-typedef struct {
- OPDS h;
- MYFLT *outsigl, *outsigr;
- MYFLT *in, *kangle, *kelev, *ifilel, *ifiler,
- *ooverlap, *oradius, *osr; /* outputs and inputs */
+typedef struct
+{
+ OPDS h;
+ /* outputs and inputs */
+ MYFLT *outsigl, *outsigr;
+ MYFLT *in, *kangle, *kelev, *ifilel, *ifiler, *ooverlap, *oradius, *osr;
- int IMPLENGTH, complexIMPLENGTH, complexfftbuff; /*see definitions in INIT*/
- MYFLT sroverN;
- MYFLT sr;
+ /* check if relative source has changed! */
+ MYFLT anglev, elevv;
- /*test inputs in init, get accepted value/default, and store in variables below.*/
- int overlap;
- MYFLT radius;
+ /* see definitions in INIT */
+ int irlength;
+ MYFLT sroverN;
+ MYFLT sr;
- int hopsize;
+ /* test inputs in init, get accepted value/default, and store in
+ variables below. */
+ int overlap;
+ MYFLT radius;
- MEMFIL *fpl,*fpr; /* file pointers*/
- float *fpbeginl,*fpbeginr;
+ int hopsize;
- int counter, t; /*to keep track of process*/
+ float *fpbeginl,*fpbeginr;
- AUXCH inbuf; /*in and output buffers*/
- AUXCH outbufl, outbufr;
+ /* to keep track of process */
+ int counter, t;
- /*memory local to perform method*/
- AUXCH complexinsig; /*insig fft*/
- AUXCH hrtflfloat, hrtfrfloat; /*hrtf buffers (rectangular complex form)*/
- AUXCH outspecl, outspecr; /*spectral data*/
+ /* in and output buffers */
+ AUXCH inbuf;
+ AUXCH outbufl, outbufr;
- AUXCH lowl1,lowr1,lowl2,lowr2,
- highl1,highr1,highl2,highr2; /*interpolation buffers*/
+ /* memory local to perform method */
+ /* insig fft */
+ AUXCH complexinsig;
+ /* hrtf buffers (rectangular complex form) */
+ AUXCH hrtflfloat, hrtfrfloat;
+ /* spectral data */
+ AUXCH outspecl, outspecr;
- AUXCH leftshiftbuffer,rightshiftbuffer; /*buffers for impulse shift*/
+ /* interpolation buffers */
+ AUXCH lowl1,lowr1,lowl2,lowr2,highl1,highr1,highl2,highr2;
- AUXCH win; /*stft window*/
- AUXCH overlapskipin,overlapskipout; /*used for skipping into next stft
- array on way in and out*/
+ /* stft window */
+ AUXCH win;
+ /* used for skipping into next stft array on way in and out */
+ AUXCH overlapskipin, overlapskipout;
-} hrtfmove2;
+}
+hrtfmove2;
static int hrtfmove2_init(CSOUND *csound, hrtfmove2 *p)
{
- /*left and right data files: spectral mag, phase format.*/
- MEMFIL *fpl=NULL,*fpr=NULL;
+ /* left and right data files: spectral mag, phase format. */
+ MEMFIL *fpl = NULL, *fpr = NULL;
- char filel[MAXNAME],filer[MAXNAME];
+ char filel[MAXNAME], filer[MAXNAME];
- int IMPLENGTH; /*time domain impulse length */
- int complexIMPLENGTH; /*freq domain impulse length*/
+ /* time domain impulse length */
+ int irlength=0;
- MYFLT *win; /*stft window*/
- int *overlapskipin, *overlapskipout; /*overlap skip buffers*/
- MYFLT *inbuf;
- MYFLT *outbufl, *outbufr;
+ /* stft window */
+ MYFLT *win;
+ /* overlap skip buffers */
+ int *overlapskipin, *overlapskipout;
+ //MYFLT *inbuf;
+ //MYFLT *outbufl, *outbufr;
int overlap = (int)*p->ooverlap;
MYFLT r = *p->oradius;
MYFLT sr = *p->osr;
- int i=0;
+ int i = 0;
- if (sr!=FL(44100.0)&&sr!=FL(48000.0)&&sr!=FL(96000.0))
- sr=FL(44100.0);
+ if(sr != 44100 && sr != 48000 && sr != 96000)
+ sr = 44100;
p->sr = sr;
if (UNLIKELY(csound->esr != sr))
- csound->Warning(csound,
- Str("Orchestra sampling rate is not "
- "compatible with HRTF data files\nShould be %.0f, "
- "see Csound help for object\n\n"), sr);
-
- strcpy(filel, (char*) p->ifilel); /*copy in string name...*/
- strcpy(filer, (char*) p->ifiler);
-
- if (sr == FL(44100.0)) { /*set up per sr...*/
- IMPLENGTH = 128;
- complexIMPLENGTH = 256;
-
- /* csound->Message(csound,"\ndatafile:44.1k\n");*/
- if (UNLIKELY((fpl = csound->ldmemfile2withCB(csound, filel,
- CSFTYPE_FLOATS_BINARY,
- swap4bytes)) == NULL)) {
- return
- csound->InitError(csound,
- Str("\n\n\ncannot load left data file, exiting\n\n"));
- }
-
- if (UNLIKELY((fpr = csound->ldmemfile2withCB(csound, filer,
- CSFTYPE_FLOATS_BINARY,
- swap4bytes)) == NULL)) {
- return
- csound->InitError(csound,
- Str("\n\n\ncannot load right data file, exiting\n\n"));
- }
- }
-
- else if (sr == FL(48000.0)) {
- IMPLENGTH = 128;
- complexIMPLENGTH = 256;
-
- /*csound->Message(csound,"\ndatafile:48k\n");*/
- if (UNLIKELY((fpl = csound->ldmemfile2withCB(csound, filel,
- CSFTYPE_FLOATS_BINARY,
- swap4bytes)) == NULL)) {
- return
- csound->InitError(csound,
- Str("\n\n\ncannot load left data file, exiting\n\n"));
- }
-
- if (UNLIKELY((fpr = csound->ldmemfile2withCB(csound, filer,
- CSFTYPE_FLOATS_BINARY,
- swap4bytes)) == NULL)) {
- return
- csound->InitError(csound,
- Str("\n\n\ncannot load right data file, exiting\n\n"));
- }
- }
-
- else if (sr == FL(96000.0)) {
- IMPLENGTH = 256;
- complexIMPLENGTH = 512;
-
- /*csound->Message(csound,"\ndatafile:96k\n");*/
- if (UNLIKELY((fpl = csound->ldmemfile2withCB(csound, filel,
- CSFTYPE_FLOATS_BINARY,
- swap4bytes)) == NULL)) {
- return
- csound->InitError(csound,
- Str("\n\n\ncannot load left data file, exiting\n\n"));
- }
-
- if (UNLIKELY((fpr = csound->ldmemfile2withCB(csound, filer,
- CSFTYPE_FLOATS_BINARY,
- swap4bytes)) == NULL)) {
- return
- csound->InitError(csound,
- Str("\n\n\ncannot load right data file, exiting\n\n"));
- }
- }
- else {
+ csound->Message(csound,
+ Str("\n\nWARNING!!:\nOrchestra SR not compatible"
+ "with HRTF processing SR of: %.0f\n\n"), sr);
+
+ /* setup as per sr */
+ if(sr == 44100 || sr == 48000)
+ irlength = 128;
+ else if(sr == 96000)
+ irlength = 256;
+
+ /* copy in string name... */
+ strncpy(filel, (char*) p->ifilel, MAXNAME);
+ strncpy(filer, (char*) p->ifiler, MAXNAME);
+
+ /* reading files, with byte swap */
+ fpl = csound->ldmemfile2withCB(csound, filel, CSFTYPE_FLOATS_BINARY,
+ swap4bytes);
+ if (UNLIKELY(fpl == NULL))
+ return
+ csound->InitError(csound,
+ Str("\n\n\nCannot load left data file, exiting\n\n"));
+
+ fpr = csound->ldmemfile2withCB(csound, filer, CSFTYPE_FLOATS_BINARY,
+ swap4bytes);
+ if (UNLIKELY(fpr == NULL))
return
csound->InitError(csound,
- Str("\n\n\n Sampling rate not supported, exiting\n\n"));
- }
-
- p->IMPLENGTH = IMPLENGTH;
- p->complexIMPLENGTH = complexIMPLENGTH;
-
- p->sroverN = sr/IMPLENGTH;
+ Str("\n\n\nCannot load right data file, exiting\n\n"));
+
+ p->irlength = irlength;
+ p->sroverN = sr / irlength;
- /*file handles*/
- if (fpl && fpr) {
- p->fpl = fpl;
- p->fpr = fpr;
- p->fpbeginl = (float *) fpl->beginp;
- p->fpbeginr = (float *) fpr->beginp;
- }
+ /* file handles */
+ p->fpbeginl = (float *) fpl->beginp;
+ p->fpbeginr = (float *) fpr->beginp;
- if (overlap!=2&&overlap!=4&&overlap!=8&&overlap!=16)
- overlap=4;
+ if(overlap != 2 && overlap != 4 && overlap != 8 && overlap != 16)
+ overlap = 4;
p->overlap = overlap;
- if (r<=0||r>15)
- r=9.0;
+ if(r <= 0 || r > 15)
+ r = FL(8.8);
p->radius = r;
-
- p->hopsize = (int)(IMPLENGTH/overlap);
-
- /*buffers */
- csound->AuxAlloc(csound, (overlap*IMPLENGTH)*sizeof(MYFLT), &p->inbuf);
- /*2d arrays in 1d!*/
- csound->AuxAlloc(csound, (overlap*IMPLENGTH)*sizeof(MYFLT), &p->outbufl);
- csound->AuxAlloc(csound, (overlap*IMPLENGTH)*sizeof(MYFLT), &p->outbufr);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p-> complexinsig);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->hrtflfloat);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->hrtfrfloat);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->outspecl);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->outspecr);
-
- /*interpolation values*/
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->lowl1);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->lowr1);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->lowl2);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->lowr2);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->highl1);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->highr1);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->highl2);
- csound->AuxAlloc(csound, complexIMPLENGTH*sizeof(MYFLT), &p->highr2);
-
- csound->AuxAlloc(csound, IMPLENGTH*sizeof(MYFLT), &p->win);
- csound->AuxAlloc(csound, overlap*sizeof(int), &p->overlapskipin);
- csound->AuxAlloc(csound, overlap*sizeof(int), &p->overlapskipout);
+
+ p->hopsize = (int)(irlength / overlap);
+
+ /* buffers */
+ if (!p->inbuf.auxp || p->inbuf.size < (overlap * irlength) * sizeof(MYFLT))
+ csound->AuxAlloc(csound, (overlap * irlength) * sizeof(MYFLT), &p->inbuf);
+ /* 2d arrays in 1d! */
+ if (!p->outbufl.auxp || p->outbufl.size < (overlap * irlength) * sizeof(MYFLT))
+ csound->AuxAlloc(csound, (overlap * irlength) * sizeof(MYFLT), &p->outbufl);
+ if (!p->outbufr.auxp || p->outbufr.size < (overlap * irlength) * sizeof(MYFLT))
+ csound->AuxAlloc(csound, (overlap * irlength) * sizeof(MYFLT), &p->outbufr);
+ if (!p->complexinsig.auxp || p->complexinsig.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p-> complexinsig);
+ if (!p->hrtflfloat.auxp || p->hrtflfloat.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->hrtflfloat);
+ if (!p->hrtfrfloat.auxp || p->hrtfrfloat.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->hrtfrfloat);
+ if (!p->outspecl.auxp || p->outspecl.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->outspecl);
+ if (!p->outspecr.auxp || p->outspecr.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->outspecr);
+
+ memset(p->inbuf.auxp, 0, (overlap*irlength) * sizeof(MYFLT));
+ memset(p->outbufl.auxp, 0, (overlap*irlength) * sizeof(MYFLT));
+ memset(p->outbufr.auxp, 0, (overlap*irlength) * sizeof(MYFLT));
+ memset(p->complexinsig.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->hrtflfloat.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->hrtfrfloat.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->outspecl.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->outspecr.auxp, 0, irlength * sizeof(MYFLT));
+
+ /* interpolation values */
+ if (!p->lowl1.auxp || p->lowl1.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->lowl1);
+ if (!p->lowr1.auxp || p->lowr1.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->lowr1);
+ if (!p->lowl2.auxp || p->lowl2.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->lowl2);
+ if (!p->lowr2.auxp || p->lowr2.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->lowr2);
+ if (!p->highl1.auxp || p->highl1.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->highl1);
+ if (!p->highr1.auxp || p->highr1.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->highr1);
+ if (!p->highl2.auxp || p->highl2.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->highl2);
+ if (!p->highr2.auxp || p->highr2.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->highr2);
+
+ memset(p->lowl1.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->lowr1.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->lowl2.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->lowr2.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->highl1.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->highl2.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->highr1.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->highr2.auxp, 0, irlength * sizeof(MYFLT));
+
+ if (!p->win.auxp || p->win.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->win);
+ if (!p->overlapskipin.auxp || p->overlapskipin.size < overlap * sizeof(int))
+ csound->AuxAlloc(csound, overlap * sizeof(int), &p->overlapskipin);
+ if (!p->overlapskipout.auxp || p->overlapskipout.size < overlap * sizeof(int))
+ csound->AuxAlloc(csound, overlap * sizeof(int), &p->overlapskipout);
+
+ memset(p->win.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->overlapskipin.auxp, 0, overlap * sizeof(int));
+ memset(p->overlapskipout.auxp, 0, overlap * sizeof(int));
win = (MYFLT *)p->win.auxp;
overlapskipin = (int *)p->overlapskipin.auxp;
overlapskipout = (int *)p->overlapskipout.auxp;
- inbuf = (MYFLT *)p->inbuf.auxp;
- outbufl = (MYFLT *)p->outbufl.auxp;
- outbufr = (MYFLT *)p->outbufr.auxp;
-
- for (i=0; i< (overlap*IMPLENGTH); i++) {
- inbuf[i] = FL(0.0);
- outbufl[i] = FL(0.0);
- outbufr[i] = FL(0.0);
- }
- /* window is hanning*/
- for (i=0; i< IMPLENGTH; i++)
- win[i] = FL(0.5) - (MYFLT)(0.5*cos(i*TWOPI/(double)(IMPLENGTH-1)));
+ /* window is Hanning */
+ for(i = 0; i < irlength; i++)
+ win[i] = FL(0.5) - (FL(0.5) * COS(i * TWOPI_F / (MYFLT)(irlength - 1)));
- for (i = 0; i < overlap; i++) {
- /*so, for example in overlap 4: will be 0,32,64,96*/
- overlapskipin[i] = p->hopsize*i;
- overlapskipout[i] = p->hopsize*i;
- }
+ for(i = 0; i < overlap; i++)
+ {
+ /* so, for example in overlap 4: will be 0, 32, 64, 96 if ir = 128 */
+ overlapskipin[i] = p->hopsize * i;
+ overlapskipout[i] = p->hopsize * i;
+ }
- p->counter = 0; /*initialise*/
+ /* initialise */
+ p->counter = 0;
p->t = 0;
+ /* setup values used to check if src has moved, illegal values to
+ start with to ensure first read */
+ p->anglev = -1;
+ p->elevv = -41;
+
return OK;
}
static int hrtfmove2_process(CSOUND *csound, hrtfmove2 *p)
{
- MYFLT *in = p->in; /*local pointers to p*/
+ /* local pointers to p */
+ MYFLT *in = p->in;
MYFLT *outsigl = p->outsigl;
MYFLT *outsigr = p->outsigr;
- /*common buffers and variables*/
+ /* common buffers and variables */
MYFLT *inbuf = (MYFLT *)p->inbuf.auxp;
MYFLT *outbufl = (MYFLT *)p->outbufl.auxp;
MYFLT *outbufr = (MYFLT *)p->outbufr.auxp;
- MYFLT outsuml=FL(0.0), outsumr=FL(0.0);
+ MYFLT outsuml = FL(0.0), outsumr = FL(0.0);
MYFLT *complexinsig = (MYFLT *)p->complexinsig.auxp;
MYFLT *hrtflfloat = (MYFLT *)p->hrtflfloat.auxp;
@@ -2028,12 +2227,13 @@ static int hrtfmove2_process(CSOUND *csound, hrtfmove2 *p)
int t = p ->t;
int n;
- float *fpindexl; /* pointers into HRTF files*/
+ /* pointers into HRTF files */
+ float *fpindexl;
float *fpindexr;
- int i,j,elevindex, angleindex, switchchannels=0, skip=0;
+ int i, j, skip = 0;
- /*interpolation values*/
+ /* interpolation values */
MYFLT *lowl1 = (MYFLT *)p->lowl1.auxp;
MYFLT *lowr1 = (MYFLT *)p->lowr1.auxp;
MYFLT *lowl2 = (MYFLT *)p->lowl2.auxp;
@@ -2043,369 +2243,389 @@ static int hrtfmove2_process(CSOUND *csound, hrtfmove2 *p)
MYFLT *highl2 = (MYFLT *)p->highl2.auxp;
MYFLT *highr2 = (MYFLT *)p->highr2.auxp;
- /*local interpolation values*/
- MYFLT elevindexlowper,elevindexhighper,angleindex1per,
- angleindex2per,angleindex3per,angleindex4per;
- int elevindexlow,elevindexhigh,angleindex1,angleindex2,
- angleindex3,angleindex4;
- MYFLT magl,magr,phasel,phaser, magllow, magrlow, maglhigh, magrhigh;
-
- /*woodworth values*/
- float radianangle,radianelev,itd,freq;
-
- int IMPLENGTH = p->IMPLENGTH;
- int complexIMPLENGTH = p->complexIMPLENGTH;
- /*int complexfftbuff = p->complexfftbuff;*/
-
- /*start indices at correct value (start of file)/ zero indices.*/
- fpindexl = (float *) p->fpbeginl;
- fpindexr = (float *) p->fpbeginr;
-
- n=csound->ksmps;
-
- /*ksmps loop*/
- for (j=0;j<n;j++) {
-
- /* distribute the signal and apply the window*/
- /* according to a time pointer (kept by overlapskip[n])*/
- for (i=0;i < overlap; i++) {
- inbuf[(i*IMPLENGTH)+overlapskipin[i]]= in[j]*win[overlapskipin[i]];
- overlapskipin[i]++;
- }
-
- counter++;
-
- if (counter==hopsize) { /*process a block*/
-
- if (elev < -40) elev = -40; /*within legal MIT range*/
- if (elev > 90) elev = 90;
- elevindex = (int)floor((float)((float)(elev-minelev)/elevincrement)+0.5);
-
- while (angle<0)angle+=360;
- while (angle>360)angle-=360; /*mod 360*/
- if (angle>180) {
- angle=360-angle;
- switchchannels=1; /*true for later function: data is symmetrical*/
- }
-
- /*read using an index system based on number of points measured
- per elevation at MIT*/
- angleindex = (int)floor(angle/(360/(MYFLT)elevationarray[elevindex])+0.5);
- /*angle/increment+0.5*/
- if (angleindex>=((int)(elevationarray[elevindex]/2)+1))
- /*last point in current elevation*/
- angleindex=(int)(elevationarray[elevindex]/2);
-
- /* two nearest elev indices*/
- elevindexlow = (int)((elev-minelev)/elevincrement);
- if (elevindexlow<13) elevindexhigh = elevindexlow+1;
- else elevindexhigh = elevindexlow; /* highest index reached*/
-
- /* get percentage value for interpolation*/
- elevindexlowper = (FL(1.0) -
- (MYFLT)(((MYFLT)(elev-minelev)/elevincrement)-
- (MYFLT)elevindexlow));
- elevindexhighper = FL(1.0) - elevindexlowper;
-
- /* 4 closest angle indices, 2 low and 2 high*/
- angleindex1 = (int)(angle/(360/(float)elevationarray[elevindexlow]));
-
- angleindex2 = angleindex1 + 1;
- if (angleindex2>=((int)(elevationarray[elevindexlow]/2)+1))
- angleindex2=(int)(elevationarray[elevindexlow]/2);
-
- angleindex3 = (int)(angle/(360/(float)elevationarray[elevindexhigh]));
-
- angleindex4 = angleindex3 + 1;
- if (angleindex4>=((int)(elevationarray[elevindexhigh]/2)+1))
- angleindex4=(int)(elevationarray[elevindexhigh]/2);
-
- /* angle percentages for interp*/
- angleindex1per =
- (FL(1.0)-(MYFLT)((angle/(FL(360.0)/(MYFLT)elevationarray[elevindexlow])
- -angleindex1)));
- angleindex2per = FL(1.0)-angleindex1per;
- angleindex3per =
- (FL(1.0) - (MYFLT)((angle/(360.0/(MYFLT)elevationarray[elevindexhigh])-
- angleindex3)));
- angleindex4per = 1.0f-angleindex3per;
-
- /*read 4 nearest points for interpolation*/
- /*point 1*/
- skip = 0;
- if (elevindexlow == 0);
- else
- for (i=0; i<elevindexlow; i++)
- /*skip * 2 as data is in complex mag,phase format*/
- skip +=((int)(elevationarray[i]/2)+1)*(IMPLENGTH*2);
-
- if (angleindex1 == 0);
- else
- for (i=0; i<angleindex1; i++)
- skip += (2*IMPLENGTH);
-
- if (switchchannels) {
- for (i=0;i<complexIMPLENGTH;i++) {
- lowl1[i]=fpindexr[skip+i];
- lowr1[i]=fpindexl[skip+i];
- }
- }
+ /* local interpolation values */
+ MYFLT elevindexhighper, angleindex2per, angleindex4per;
+ int elevindexlow, elevindexhigh, angleindex1, angleindex2,
+ angleindex3, angleindex4;
+ MYFLT magl, magr, phasel, phaser, magllow, magrlow, maglhigh, magrhigh;
- else {
- for (i=0;i<complexIMPLENGTH;i++) {
- lowl1[i]=fpindexl[skip+i];
- lowr1[i]=fpindexr[skip+i];
- }
- }
+ /* woodworth values */
+ MYFLT radianangle, radianelev, itd=0, itdww, freq;
- /*point 2*/
- skip = 0;
- if (elevindexlow == 0);
- else
- for (i=0; i<elevindexlow; i++)
- skip +=((int)(elevationarray[i]/2)+1)*(IMPLENGTH*2);
+ int irlength = p->irlength;
- if (angleindex2 == 0);
- else
- for (i=0; i<angleindex2; i++)
- skip += (2*IMPLENGTH);
+ /* local variables, mainly used for simplification */
+ MYFLT elevindexstore;
+ MYFLT angleindexlowstore;
+ MYFLT angleindexhighstore;
- if (switchchannels) {
- for (i=0;i<complexIMPLENGTH;i++) {
- lowl2[i]=fpindexr[skip+i];
- lowr2[i]=fpindexl[skip+i];
- }
- }
- else {
- for (i=0;i<complexIMPLENGTH;i++) {
- lowl2[i]=fpindexl[skip+i];
- lowr2[i]=fpindexr[skip+i];
- }
- }
-
- /*point 3*/
- skip = 0;
- if (elevindexhigh == 0);
- else
- for (i=0; i<elevindexhigh; i++)
- skip +=((int)(elevationarray[i]/2)+1)*(IMPLENGTH*2);
-
- if (angleindex3 == 0);
- else
- for (i=0; i<angleindex3; i++)
- skip += (2*IMPLENGTH);
-
- if (switchchannels) {
- for (i=0;i<complexIMPLENGTH;i++) {
- highl1[i]=fpindexr[skip+i];
- highr1[i]=fpindexl[skip+i];
- }
- }
-
- else {
- for (i=0;i<complexIMPLENGTH;i++) {
- highl1[i]=fpindexl[skip+i];
- highr1[i]=fpindexr[skip+i];
- }
- }
-
- /*point 4*/
- skip = 0;
- if (elevindexhigh == 0);
- else
- for (i=0; i<elevindexhigh; i++)
- skip +=((int)(elevationarray[i]/2)+1)*(IMPLENGTH*2);
+ /* start indices at correct value (start of file)/ zero indices. */
+ fpindexl = (float *) p->fpbeginl;
+ fpindexr = (float *) p->fpbeginr;
- if (angleindex4 == 0);
- else
- for (i=0; i<angleindex4; i++)
- skip += (2*IMPLENGTH);
+ n = csound->ksmps;
- if (switchchannels) {
- for (i=0;i<complexIMPLENGTH;i++) {
- highl2[i]=fpindexr[skip+i];
- highr2[i]=fpindexl[skip+i];
+ /* ksmps loop */
+ for(j = 0; j < n; j++)
+ {
+ /* distribute the signal and apply the window */
+ /* according to a time pointer (kept by overlapskip[n]) */
+ for(i = 0; i < overlap; i++)
+ {
+ inbuf[(i * irlength) + overlapskipin[i]] = in[j] *
+ win[overlapskipin[i]];
+ overlapskipin[i]++;
}
- }
+
+ counter++;
- else {
- for (i=0;i<complexIMPLENGTH;i++) {
- highl2[i]=fpindexl[skip+i];
- highr2[i]=fpindexr[skip+i];
- }
- }
-
- /*woodworth stuff*/
- radianangle = angle * (float)PI/180.0f; /*degrees to radians*/
- radianelev = elev * (float)PI/180.0f;
-
- if (radianangle > (PI/2.0))
- /*get in correct range for formula*/
- radianangle = (float)PI - radianangle;
-
- /*woodworth formula for itd */
- itd = (radianangle + sinf(radianangle))*r*cosf(radianelev)/c;
-
- /* magnitude interpolation*/
- for (i=0; i < complexIMPLENGTH; i+=2) {
- /* interpolate high and low mags*/
- magllow = lowl1[i]+(MYFLT)((lowl2[i]-lowl1[i])*(MYFLT)angleindex2per);
- maglhigh = highl1[i]+(MYFLT)((highl2[i]-highl1[i])*(MYFLT)angleindex4per);
-
- magrlow = lowr1[i]+(MYFLT)((lowr2[i]-lowr1[i])*(MYFLT)angleindex2per);
- magrhigh = highr1[i]+(MYFLT)((highr2[i]-highr1[i])*(MYFLT)angleindex4per);
-
- /* interpolate high and low results*/
- magl = magllow+(MYFLT)((maglhigh-magllow)*(MYFLT)elevindexhighper);
- magr = magrlow+(MYFLT)((magrhigh-magrlow)*(MYFLT)elevindexhighper);
-
- if (i<(IMPLENGTH+1))freq = (i/2)*sroverN;
- else freq = (-IMPLENGTH+(i/2))*sroverN;
-
- /*NONLIN ITD HERE!...NEED SEPERATE ARRAY FOR 48 and 96k...*/
- if (p->sr == FL(96000.0)) {
- if ((i/2)>0 && (i/2)<6) {
- itd = (radianangle +
- sinf(radianangle))*r*cosf(radianelev)/c;
- itd = itd * nonlinitd96k[(i/2)-1];
- }
- if ((i/2)>251 && (i/2)<256) {
- itd = (radianangle +
- sinf(radianangle))*r*cosf(radianelev)/c;
- itd = itd * nonlinitd96k[255-(i/2)];
- }
- }
- if (p->sr == FL(48000.0)) {
- if ((i/2)>0 && (i/2)<6) {
- itd = (radianangle +
- sinf(radianangle))*r*cosf(radianelev)/c;
- itd = itd * nonlinitd48k[(i/2)-1];
- }
- if ((i/2)>123 && (i/2)<128) {
- itd = (radianangle +
- sinf(radianangle))*r*cosf(radianelev)/c;
- itd = itd * nonlinitd48k[127-(i/2)];
- }
- }
- if (p->sr == FL(44100.0)) {
- if ((i/2)>0 && (i/2)<6) {
- itd = (radianangle +
- sinf(radianangle))*r*cosf(radianelev)/c;
- itd = itd * nonlinitd[(i/2)-1];
- }
- if ((i/2)>123 && (i/2)<128) {
- itd = (radianangle +
- sinf(radianangle))*r*cosf(radianelev)/c;
- itd = itd * nonlinitd[127-(i/2)];
- }
+ if(counter == hopsize)
+ {
+ /* process a block */
+ if(elev > FL(90.0))
+ elev = FL(90.0);
+ if(elev < FL(-40.0))
+ elev = FL(-40.0);
+
+ while(angle < FL(0.0))
+ angle += FL(360.0);
+ while(angle >= FL(360.0))
+ angle -= FL(360.0);
+
+ if(angle != p->anglev || elev != p->elevv)
+ {
+ /* two nearest elev indices to avoid recalculating */
+ elevindexstore = (elev - minelev) / elevincrement;
+ elevindexlow = (int)elevindexstore;
+
+ if(elevindexlow < 13)
+ elevindexhigh = elevindexlow + 1;
+ /* highest index reached */
+ else
+ elevindexhigh = elevindexlow;
+
+ /* get percentage value for interpolation */
+ elevindexhighper = elevindexstore - elevindexlow;
+
+ /* avoid recalculation */
+ angleindexlowstore = angle / (FL(360.0) /
+ elevationarray[elevindexlow]);
+ angleindexhighstore = angle / (FL(360.0) /
+ elevationarray[elevindexhigh]);
+
+ /* 4 closest indices, 2 low and 2 high */
+ angleindex1 = (int)angleindexlowstore;
+
+ angleindex2 = angleindex1 + 1;
+ angleindex2 = angleindex2 % elevationarray[elevindexlow];
+
+ angleindex3 = (int)angleindexhighstore;
+
+ angleindex4 = angleindex3 + 1;
+ angleindex4 = angleindex4 % elevationarray[elevindexhigh];
+
+ /* angle percentages for interp */
+ angleindex2per = angleindexlowstore - angleindex1;
+ angleindex4per = angleindexhighstore - angleindex3;
+
+ /* read 4 nearest HRTFs */
+ skip = 0;
+ /* switch l and r */
+ if(angleindex1 > elevationarray[elevindexlow] / 2)
+ {
+ for(i = 0; i < elevindexlow; i++)
+ skip += ((int)(elevationarray[i] / 2) + 1) * irlength;
+ for (i = 0;
+ i < (elevationarray[elevindexlow] - angleindex1);
+ i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ lowl1[i] = fpindexr[skip + i];
+ lowr1[i] = fpindexl[skip + i];
+ }
+ }
+ else
+ {
+ for(i = 0; i < elevindexlow; i++)
+ skip += ((int)(elevationarray[i] / 2) + 1) * irlength;
+ for (i = 0; i < angleindex1; i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ lowl1[i] = fpindexl[skip + i];
+ lowr1[i] = fpindexr[skip + i];
+ }
+ }
+
+ skip = 0;
+ if(angleindex2 > elevationarray[elevindexlow] / 2)
+ {
+ for(i = 0; i < elevindexlow; i++)
+ skip += ((int)(elevationarray[i] / 2) + 1) * irlength;
+ for (i = 0;
+ i < (elevationarray[elevindexlow] - angleindex2);
+ i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ lowl2[i] = fpindexr[skip + i];
+ lowr2[i] = fpindexl[skip + i];
+ }
+ }
+ else
+ {
+ for(i = 0; i < elevindexlow; i++)
+ skip += ((int)(elevationarray[i] / 2) + 1) * irlength;
+ for (i = 0; i < angleindex2; i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ lowl2[i] = fpindexl[skip + i];
+ lowr2[i] = fpindexr[skip + i];
+ }
+ }
+
+ skip = 0;
+ if(angleindex3 > elevationarray[elevindexhigh] / 2)
+ {
+ for(i = 0; i < elevindexhigh; i++)
+ skip += ((int)(elevationarray[i] / 2) + 1) * irlength;
+ for (i = 0;
+ i < (elevationarray[elevindexhigh] - angleindex3);
+ i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ highl1[i] = fpindexr[skip + i];
+ highr1[i] = fpindexl[skip + i];
+ }
+ }
+ else
+ {
+ for(i = 0; i < elevindexhigh; i++)
+ skip += ((int)(elevationarray[i] / 2) + 1) * irlength;
+ for (i = 0; i < angleindex3; i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ highl1[i] = fpindexl[skip + i];
+ highr1[i] = fpindexr[skip + i];
+ }
+ }
+
+ skip = 0;
+ if(angleindex4 > elevationarray[elevindexhigh] / 2)
+ {
+ for(i = 0; i < elevindexhigh; i++)
+ skip += ((int)(elevationarray[i] / 2) + 1) * irlength;
+ for (i = 0;
+ i < (elevationarray[elevindexhigh] - angleindex4);
+ i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ highl2[i] = fpindexr[skip + i];
+ highr2[i] = fpindexl[skip + i];
+ }
+ }
+ else
+ {
+ for(i = 0; i < elevindexhigh; i++)
+ skip += ((int)(elevationarray[i] / 2) + 1) * irlength;
+ for (i = 0; i < angleindex4; i++)
+ skip += irlength;
+ for(i = 0; i < irlength; i++)
+ {
+ highl2[i] = fpindexl[skip + i];
+ highr2[i] = fpindexr[skip + i];
+ }
+ }
+
+ /* woodworth process */
+ /* ITD formula, check which ear is relevant to calculate angle from */
+ if(angle > FL(180.0))
+ radianangle = (angle - FL(180.0)) * PI_F / FL(180.0);
+ else
+ radianangle = angle * PI_F / FL(180.0); /* degrees to radians */
+ radianelev = elev * PI_F / FL(180.0);
+
+ /* get in correct range for formula */
+ if(radianangle > (PI_F / FL(2.0)))
+ radianangle = FL(PI) - radianangle;
+
+ /* woodworth formula for itd */
+ itdww = (radianangle + SIN(radianangle)) * r * COS(radianelev) / c;
+
+ /* 0 Hz and Nyq... */
+ /* need fabs() here, to get mag, as 0hz and nyq stored as a
+ real value, to allow for possible negative, implying phase
+ of pi (in phase truncation) */
+ magllow = FABS(lowl1[0]) + (FABS(lowl2[0]) - FABS(lowl1[0])) *
+ angleindex2per;
+ maglhigh = FABS(highl1[0]) + (FABS(highl2[0]) - FABS(highl1[0])) *
+ angleindex4per;
+ hrtflfloat[0] = magllow + (maglhigh - magllow) * elevindexhighper;
+
+ magllow = FABS(lowl1[1]) + (FABS(lowl2[1]) - FABS(lowl1[1])) *
+ angleindex2per;
+ maglhigh = FABS(highl1[1]) + (FABS(highl2[1]) - FABS(highl1[1])) *
+ angleindex4per;
+ hrtflfloat[1] = magllow + (maglhigh - magllow) * elevindexhighper;
+
+ magrlow = FABS(lowr1[0]) + (FABS(lowr2[0]) - FABS(lowr1[0])) *
+ angleindex2per;
+ magrhigh = FABS(highr1[0]) + (FABS(highr2[0]) - FABS(highr1[0])) *
+ angleindex4per;
+ hrtfrfloat[0] = magrlow + (magrhigh - magrlow) * elevindexhighper;
+
+ magrlow = FABS(lowr1[1]) + (FABS(lowr2[1]) - FABS(lowr1[1])) *
+ angleindex2per;
+ magrhigh = FABS(highr1[1]) + (FABS(highr2[1]) - FABS(highr1[1])) *
+ angleindex4per;
+ hrtfrfloat[1] = magrlow + (magrhigh - magrlow) * elevindexhighper;
+
+ /* magnitude interpolation */
+ for(i = 2; i < irlength; i += 2)
+ {
+ /* interpolate high and low mags */
+ magllow = lowl1[i] + (lowl2[i] - lowl1[i]) * angleindex2per;
+ maglhigh = highl1[i] + (highl2[i] - highl1[i]) * angleindex4per;
+
+ magrlow = lowr1[i] + (lowr2[i] - lowr1[i]) * angleindex2per;
+ magrhigh = highr1[i] + (highr2[i] - highr1[i]) * angleindex4per;
+
+ /* interpolate high and low results */
+ magl = magllow + (maglhigh - magllow) * elevindexhighper;
+ magr = magrlow + (magrhigh - magrlow) * elevindexhighper;
+
+ freq = (i / 2) * sroverN;
+
+ /* non linear itd...last value in array = 1.0, so back to itdww */
+ if(p->sr == 96000)
+ {
+ if ((i / 2) < 6)
+ itd = itdww * nonlinitd96k[(i / 2) - 1];
+ }
+ else if(p->sr == 48000)
+ {
+ if ((i / 2) < 6)
+ itd = itdww * nonlinitd48k[(i / 2) - 1];
+ }
+ else if(p->sr == 44100)
+ {
+ if((i / 2) < 6)
+ itd = itdww * nonlinitd[(i / 2) - 1];
+ }
+
+ if(angle > FL(180.))
+ {
+ phasel = TWOPI_F * freq * (itd / 2);
+ phaser = TWOPI_F * freq * -(itd / 2);}
+ else
+ {
+ phasel = TWOPI_F * freq * -(itd / 2);
+ phaser = TWOPI_F * freq * (itd / 2);
+ }
+
+ /* polar to rectangular */
+ hrtflfloat[i] = magl * COS(phasel);
+ hrtflfloat[i+1] = magl * SIN(phasel);
+
+ hrtfrfloat[i] = magr * COS(phaser);
+ hrtfrfloat[i+1] = magr * SIN(phaser);
+ }
+
+ p->elevv = elev;
+ p->anglev = angle;
+ }
+
+ /* t used to read inbuf...*/
+ t--;
+ if(t < 0)
+ t = overlap - 1;
+
+ /* insert insig for complex real, im fft */
+ for(i = 0; i < irlength; i++)
+ complexinsig[i] = inbuf[(t * irlength) + i];
+
+ /* zero the current input sigframe time pointer */
+ overlapskipin[t] = 0;
+
+ csound->RealFFT(csound, complexinsig, irlength);
+
+ csound->RealFFTMult(csound, outspecl, hrtflfloat,
+ complexinsig, irlength, FL(1.0));
+ csound->RealFFTMult(csound, outspecr, hrtfrfloat,
+ complexinsig, irlength, FL(1.0));
+
+ /* convolution is the inverse FFT of above result */
+ csound->InverseRealFFT(csound, outspecl, irlength);
+ csound->InverseRealFFT(csound, outspecr, irlength);
+
+ /* need scaling based on overlap (more overlaps -> louder) and sr... */
+ for(i = 0; i < irlength; i++)
+ {
+ outbufl[(t * irlength) + i] = outspecl[i] /
+ (overlap * FL(0.5) * (sr / FL(44100.0)));
+ outbufr[(t * irlength) + i] = outspecr[i] /
+ (overlap * FL(0.5) * (sr / FL(44100.0)));
+ }
+
+ } /* end of !counter % hopsize */
+
+ /* output = sum of all relevant outputs: eg if overlap = 4 and
+ counter = 0, */
+ /* outsigl[j] = outbufl[0] + outbufl[128 + 96] +
+ outbufl[256 + 64] + outbufl[384 + 32]; */
+ /* * * * * [ ] + */
+ /* * * * [*] + */
+ /* * * [*] * + */
+ /* * [*] * * = */
+ /* stft! */
+
+ outsuml = outsumr = FL(0.0);
+
+ for(i = 0; i < (int)overlap; i++)
+ {
+ outsuml += outbufl[(i * irlength) +
+ overlapskipout[i]] * win[overlapskipout[i]];
+ outsumr += outbufr[(i * irlength) +
+ overlapskipout[i]] * win[overlapskipout[i]];
+ overlapskipout[i]++;
}
- if (switchchannels) {
- phasel = TWOPI_F*freq*(itd/2);
- phaser = TWOPI_F*freq*-(itd/2);
- }
- else {
- phasel = TWOPI_F*freq*-(itd/2);
- phaser = TWOPI_F*freq*(itd/2);
+ if(counter == hopsize)
+ {
+ /* zero output incrementation... */
+ /* last buffer will have gone from 96 to 127...then 2nd last
+ will have gone from 64 to 127... */
+ overlapskipout[t] = 0;
+ counter = 0;
}
- /* polar to rectangular*/
- hrtflfloat[i] = magl*COS(phasel);
- hrtflfloat[i+1] = magl*SIN(phasel);
-
- hrtfrfloat[i] = magr*COS(phaser);
- hrtfrfloat[i+1] = magr*SIN(phaser);
- }
-
- /* t used to read inbuf...*/
- t--; if (t<0) t = overlap-1;
-
- /* insert insig for complex real,im fft */
- for (i=0;i<IMPLENGTH;i++) {
- complexinsig[2*i]=inbuf[(t*IMPLENGTH)+i];
- complexinsig[(2*i)+1]=FL(0.0);
- }
-
- /* zero the current input sigframe time pointer*/
- overlapskipin[t] = 0;
-
- csound->ComplexFFT(csound, complexinsig, IMPLENGTH);
-
- /* complex multiplication*/
- for (i = 0; i < complexIMPLENGTH; i+=2) {
- outspecl[i] = complexinsig[i]*hrtflfloat[i] -
- complexinsig[i+1]*hrtflfloat[i+1];
- outspecr[i] = complexinsig[i]*hrtfrfloat[i] -
- complexinsig[i+1]*hrtfrfloat[i+1];
- outspecl[i+1] = complexinsig[i]*hrtflfloat[i+1] +
- complexinsig[i+1]*hrtflfloat[i];
- outspecr[i+1] = complexinsig[i]*hrtfrfloat[i+1] +
- complexinsig[i+1]*hrtfrfloat[i];
- }
-
- /* convolution is the inverse FFT of above result */
- csound->InverseComplexFFT(csound, outspecl, IMPLENGTH);
- csound->InverseComplexFFT(csound, outspecr, IMPLENGTH);
-
- /*real values, scaled*/
-
- /*Should be simply scaled by rms of window(.707)?...however
- need scaling based on overlap (more overlaps -> louder) and sr...?*/
- for (i = 0; i < IMPLENGTH; i++) {
- outbufl[(t*IMPLENGTH)+i] =
- outspecl[2*i] / (overlap*FL(0.5)*(sr/FL(44100.0)));
- outbufr[(t*IMPLENGTH)+i] =
- outspecr[2*i] / (overlap*FL(0.5)*(sr/FL(44100.0)));
- }
-
- } /* end of !counter%hopsize*/
-
- /*output = sum of all relevant outputs: eg if overlap = 4 and counter = 0, */
- /*outsigl[j] = outbufl[0] + outbufl[128+96] +
- outbufl[256+64] + outbufl[384+32];*/
- /* * * * * [ ] +*/
- /* * * * [*] +*/
- /* * * [*] * +*/
- /* * [*] * * =*/
- /*stft!*/
-
- outsuml = outsumr = FL(0.0);
-
- for (i=0;i<(int)overlap;i++) {
- outsuml += outbufl[(i*IMPLENGTH)+overlapskipout[i]]*win[overlapskipout[i]];
- outsumr += outbufr[(i*IMPLENGTH)+overlapskipout[i]]*win[overlapskipout[i]];
- overlapskipout[i]++;
- }
-
- if (counter==hopsize) {
- /*zero output incrementation...*/
- /*last buffer will have gone from 96 to 127...then 2nd last
- will have gone from 64 to 127...*/
- overlapskipout[t] = 0;
- counter = 0;
- }
-
- outsigl[j] = outsuml;
- outsigr[j] = outsumr;
-
- } /* end of ksmps audio loop */
+ outsigl[j] = outsuml;
+ outsigr[j] = outsumr;
+
+ } /* end of ksmps audio loop */
- /*update*/
+ /* update */
p->t = t;
p->counter = counter;
return OK;
}
-/*see csound manual (extending csound) for details of below*/
-static OENTRY localops[] = {
- { "hrtfmove", sizeof(hrtfmove),5, "aa", "akkSSooo",
+/* see csound manual (extending csound) for details of below */
+static OENTRY hrtfopcodes_localops[] =
+{
+ { "hrtfmove", sizeof(hrtfmove),5, "aa", "akkSSooo",
(SUBR)hrtfmove_init, NULL, (SUBR)hrtfmove_process },
- { "hrtfstat", sizeof(hrtfstat),5, "aa", "aiiSSoo",
+ { "hrtfstat", sizeof(hrtfstat),5, "aa", "aiiSSoo",
(SUBR)hrtfstat_init, NULL, (SUBR)hrtfstat_process },
- { "hrtfmove2", sizeof(hrtfmove2),5, "aa", "akkSSooo",
+ { "hrtfmove2", sizeof(hrtfmove2),5, "aa", "akkSSooo",
(SUBR)hrtfmove2_init, NULL, (SUBR)hrtfmove2_process }
};
-LINKAGE
+LINKAGE1(hrtfopcodes_localops)
diff --git a/Opcodes/hrtfreverb.c b/Opcodes/hrtfreverb.c
new file mode 100644
index 0000000..bdc6dfe
--- /dev/null
+++ b/Opcodes/hrtfreverb.c
@@ -0,0 +1,1307 @@
+/*
+Brian Carty
+PhD Code August 2010
+binaural reverb: diffuse field
+
+ This file is part of Csound.
+
+ The Csound Library is free software; you can redistribute it
+ and/or modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ Csound is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with Csound; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA
+*/
+
+#include "csoundCore.h"
+#include "interlocks.h"
+
+#define SQUARE(X) ((X)*(X))
+
+/* endian issues: swap bytes for ppc */
+#ifdef WORDS_BIGENDIAN
+static int swap4bytes(CSOUND* csound, MEMFIL* mfp)
+{
+ char c1, c2, c3, c4;
+ char *p = mfp->beginp;
+ int size = mfp->length;
+
+ while (size >= 4)
+ {
+ c1 = p[0]; c2 = p[1]; c3 = p[2]; c4 = p[3];
+ p[0] = c4; p[1] = c3; p[2] = c2; p[3] = c1;
+ size -= 4; p +=4;
+ }
+
+ return OK;
+}
+#else
+static int (*swap4bytes)(CSOUND*, MEMFIL*) = NULL;
+#endif
+
+/* matrices for feedback delay network (fdn) */
+#define mthird (-FL(1.0) / 3)
+#define tthird (FL(2.0) / 3)
+#define msix (-FL(1.0) / 6)
+#define fsix (FL(5.0) / 6)
+#define mtw (-FL(1.0) / 12)
+#define etw (FL(11.0) / 12)
+
+static const MYFLT matrix6[36] =
+ {tthird,mthird,mthird,mthird,mthird,mthird,
+ mthird,tthird,mthird,mthird,mthird,mthird,
+ mthird,mthird,tthird,mthird,mthird,mthird,
+ mthird,mthird,mthird,tthird,mthird,mthird,
+ mthird,mthird,mthird,mthird,tthird,mthird,
+ mthird,mthird,mthird,mthird,mthird,tthird};
+
+static const MYFLT matrix12[144] =
+ {fsix,msix,msix,msix,msix,msix,msix,msix,msix,msix,msix,msix,
+ msix,fsix,msix,msix,msix,msix,msix,msix,msix,msix,msix,msix,
+ msix,msix,fsix,msix,msix,msix,msix,msix,msix,msix,msix,msix,
+ msix,msix,msix,fsix,msix,msix,msix,msix,msix,msix,msix,msix,
+ msix,msix,msix,msix,fsix,msix,msix,msix,msix,msix,msix,msix,
+ msix,msix,msix,msix,msix,fsix,msix,msix,msix,msix,msix,msix,
+ msix,msix,msix,msix,msix,msix,fsix,msix,msix,msix,msix,msix,
+ msix,msix,msix,msix,msix,msix,msix,fsix,msix,msix,msix,msix,
+ msix,msix,msix,msix,msix,msix,msix,msix,fsix,msix,msix,msix,
+ msix,msix,msix,msix,msix,msix,msix,msix,msix,fsix,msix,msix,
+ msix,msix,msix,msix,msix,msix,msix,msix,msix,msix,fsix,msix,
+ msix,msix,msix,msix,msix,msix,msix,msix,msix,msix,msix,fsix};
+
+static const MYFLT matrix24[576] =
+ {etw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,
+ mtw,etw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,
+ mtw,mtw,etw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,
+ mtw,mtw,mtw,etw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,
+ mtw,mtw,mtw,mtw,etw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,
+ mtw,mtw,mtw,mtw,mtw,etw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,
+ mtw,mtw,mtw,mtw,mtw,mtw,etw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,
+ mtw,mtw,mtw,mtw,mtw,mtw,mtw,etw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,
+ mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,etw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,
+ mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,etw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,
+ mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,etw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,
+ mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,etw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,
+ mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,etw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,
+ mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,etw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,
+ mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,etw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,
+ mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,etw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,
+ mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,etw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,
+ mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,etw,mtw,mtw,mtw,mtw,mtw,mtw,
+ mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,etw,mtw,mtw,mtw,mtw,mtw,
+ mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,etw,mtw,mtw,mtw,mtw,
+ mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,etw,mtw,mtw,mtw,
+ mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,etw,mtw,mtw,
+ mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,etw,mtw,
+ mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,mtw,etw};
+
+/* for delay line lengths */
+static const int primes[229] =
+ {
+ 17, 23, 59, 71, 113, 127, 163, 191, 211, 229,
+ 271, 283, 313, 337, 359, 373, 409, 461, 541, 587,
+ 631, 691, 709, 773, 829, 863, 919, 971, 1039, 1069,
+ 1123, 1171, 1217, 1259, 1303, 1373, 1423, 1483, 1511, 1597,
+ 1627, 1669, 1733, 1787, 1847, 1867, 1913, 1951, 2027, 2081,
+ 2131, 2179, 2213, 2269, 2333, 2383, 2423, 2467, 2531, 2579,
+ 2617, 2671, 2729, 2789, 2837, 2861, 2917, 2999, 3011, 3083,
+ 3121, 3169, 3209, 3259, 3331, 3389, 3449, 3469, 3533, 3571,
+ 3613, 3671, 3727, 3779, 3821, 3889, 3917, 3989, 4001, 4051,
+ 4111, 4177, 4231, 4271, 4337, 4391, 4447, 4483, 4517, 4567,
+ 4621, 4691, 4733, 4787, 4817, 4861, 4919, 4967, 5023, 5077,
+ 5113, 5167, 5233, 5297, 5309, 5351, 5441, 5483, 5507, 5563,
+ 5641, 5683, 5711, 5783, 5821, 5857, 5927, 5981, 6011, 6067,
+ 6121, 6173, 6217, 6271, 6317, 6361, 6421, 6473, 6529, 6581,
+ 6607, 6661, 6733, 6793, 6841, 6883, 6911, 6961, 7027, 7057,
+ 7109, 7177, 7211, 7297, 7349, 7393, 7417, 7481, 7523, 7561,
+ 7607, 7673, 7717, 7789, 7841, 7879, 7919, 7963, 8017, 8081,
+ 8111, 8167, 8209, 8287, 8317, 8377, 8443, 8467, 8521, 8563,
+ 8623, 8677, 8713, 8761, 8831, 8867, 8923, 8963, 9013, 9059,
+ 9109, 9187, 9221, 9257, 9323, 9371, 9413, 9461, 9511, 9587,
+ 9631, 9679, 9721, 9781, 9803, 9859, 9949, 9973, 10039, 10079,
+ 10111, 10177, 10211, 10259, 10333, 10391, 10429, 10459, 10513, 10589,
+ 10607, 10663, 10711, 10799, 10831, 10859, 10909, 10979, 11003
+ };
+
+typedef struct
+{
+ OPDS h;
+ /* in / out */
+ /* outputs l/r and delay required for late del...*/
+ MYFLT *outsigl, *outsigr, *idel;
+ /* mean free path and order are optional, meanfp defaults to medium room, opcode
+ can be used as stand alone binaural reverb, or spatially accurate taking
+ meanfp and order from earlies opcode */
+ MYFLT *insig, *ilowrt60, *ihighrt60, *ifilel, *ifiler, *osr, *omeanfp, *porder;
+
+ /* internal data / class variables */
+ MYFLT delaytime;
+ int delaytimeint, basedelay;
+
+ /* number of delay lines */
+ int M;
+
+ /* delay line iterators */
+ int u, v, w, x, y, z;
+ int ut, vt, wt, xt, yt, zt;
+ int utf1, vtf1, wtf1, xtf1, ytf1, ztf1;
+ int utf2, vtf2, wtf2, xtf2, ytf2, ztf2;
+
+ /* buffer lengths, change for different sr */
+ int irlength;
+ int irlengthpad;
+ int overlapsize;
+
+ /* memory buffers: delays */
+ AUXCH delays;
+ /* filter coeffs */
+ AUXCH gi, ai;
+ /* matrix manipulations */
+ AUXCH inmat, inmatlp, dellp, outmat;
+ /* delays */
+ AUXCH del1, del2, del3, del4, del5, del6;
+ AUXCH del1t, del2t, del3t, del4t, del5t, del6t;
+ AUXCH del1tf, del2tf, del3tf, del4tf, del5tf, del6tf,
+ del7tf, del8tf, del9tf, del10tf, del11tf, del12tf;
+ /* filter variables, spectral manipulations */
+ AUXCH power, HRTFave, num, denom, cohermags, coheru, coherv;
+ AUXCH filtout, filtuout, filtvout, filtpad, filtupad, filtvpad;
+
+ /* output of matrix cycle, with IIRs in combs and FIR tone, then l and
+ r o/p processed with u and v coherence filters */
+ /* with overlap buffers for overlap add convolution */
+ AUXCH matrixlu, matrixrv;
+ AUXCH olmatrixlu, olmatrixrv;
+ /* above processed with hrtf l and r filters */
+ /* with overlap buffers for overlap add convolution */
+ AUXCH hrtfl, hrtfr;
+ AUXCH olhrtfl, olhrtfr;
+ /* filter coeff */
+ MYFLT b;
+ /* 1st order FIR mem */
+ MYFLT inoldl, inoldr;
+ /* for storing hrtf data used to create filters */
+ AUXCH buffl, buffr;
+
+ /* counter */
+ int counter;
+
+ MYFLT sr;
+
+}hrtfreverb;
+
+int hrtfreverb_init(CSOUND *csound, hrtfreverb *p)
+{
+ /* left and right data files: spectral mag, phase format */
+ MEMFIL *fpl = NULL, *fpr = NULL;
+ char filel[MAXNAME],filer[MAXNAME];
+ /* files contain floats */
+ float *fpindexl, *fpindexr;
+
+ /* processing sizes */
+ int irlength=0, irlengthpad=0, overlapsize=0;
+
+ /* pointers used to fill buffers in data structure */
+ int *delaysp;
+ MYFLT *gip, *aip;
+ MYFLT *powerp, *HRTFavep, *nump, *denomp, *cohermagsp, *coherup, *cohervp;
+ MYFLT *filtoutp, *filtuoutp, *filtvoutp, *filtpadp, *filtupadp, *filtvpadp;
+ MYFLT *bufflp, *buffrp;
+
+ /* iterators, file skip */
+ int i, j;
+ int skip = 0;
+ int skipdouble = 0;
+
+ /* used in choice of delay line lengths */
+ int basedelay=0;
+
+ /* local filter variables for spectral manipulations */
+ MYFLT rel, rer, retemp, iml, imr, imtemp;
+
+ /* setup filters */
+ MYFLT T, alpha, aconst, exp;
+ int clipcheck = 0;
+
+ MYFLT sr = (MYFLT)*p->osr;
+ MYFLT meanfp = (MYFLT)*p->omeanfp;
+ int order = (int)*p->porder;
+
+ /* delay line variables */
+ MYFLT delaytime, meanfporder;
+ int delaytimeint;
+ int Msix, Mtwelve, Mtwentyfour;
+ int meanfpsamps, meanfpordersamps;
+ int test;
+
+ MYFLT rt60low = (MYFLT)*p->ilowrt60;
+ MYFLT rt60high = (MYFLT)*p->ihighrt60;
+
+ int M;
+
+ /* sr, defualt 44100 */
+ if(sr != 44100 && sr != 48000 && sr != 96000)
+ sr = 44100;
+ p->sr = sr;
+
+ if (UNLIKELY(csound->esr != sr))
+ csound->Message(csound,
+ Str("\n\nWARNING!!:\nOrchestra SR not compatible with"
+ " HRTF processing SR of: %.0f\n\n"), sr);
+
+ /* meanfp: defaults to doom size 10 * 10 * 4 (max of 1: v. large room,
+ min according to min room dimensions in early: 2 * 2 * 2) */
+ if(meanfp <= 0.003876 || meanfp > 1)
+ meanfp = FL(0.01292);
+
+ /* order: defaults to 1 (4 is max for earlies) */
+ if(order < 0 || order > 4)
+ order = 1;
+
+ /* rt60 values must be positive and non zero */
+ if(rt60low <= 0)
+ rt60low = FL(0.01);
+
+ if(rt60high <= 0)
+ rt60high = FL(0.01);
+
+ /* setup as per sr */
+ if(sr == 44100 || sr == 48000)
+ {
+ irlength = 128;
+ irlengthpad = 256;
+ overlapsize = (irlength - 1);
+ }
+ else if(sr == 96000)
+ {
+ irlength = 256;
+ irlengthpad = 512;
+ overlapsize = (irlength - 1);
+ }
+
+ /* copy in string name... */
+ strcpy(filel, (char*) p->ifilel);
+ strcpy(filer, (char*) p->ifiler);
+
+ /* reading files, with byte swap */
+ fpl = csound->ldmemfile2withCB(csound, filel,
+ CSFTYPE_FLOATS_BINARY, swap4bytes);
+ if (UNLIKELY(fpl == NULL))
+ return
+ csound->InitError(csound,
+ Str("\n\n\nCannot load left data file, exiting\n\n"));
+
+ fpr = csound->ldmemfile2withCB(csound, filer, CSFTYPE_FLOATS_BINARY,swap4bytes);
+ if (UNLIKELY(fpr == NULL))
+ return
+ csound->InitError(csound,
+ Str("\n\n\nCannot load right data file, exiting\n\n"));
+
+ /* do not need to be in p, as only used in init */
+ fpindexl = (float *)fpl->beginp;
+ fpindexr = (float *)fpr->beginp;
+
+ /* setup structure values */
+ p->irlength = irlength;
+ p->irlengthpad = irlengthpad;
+ p->overlapsize = overlapsize;
+
+ /* allocate memory */
+ if (!p->power.auxp || p->power.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->power);
+ if (!p->HRTFave.auxp || p->HRTFave.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->HRTFave);
+ if (!p->num.auxp || p->num.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->num);
+ if (!p->denom.auxp || p->denom.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->denom);
+ if (!p->cohermags.auxp || p->cohermags.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->cohermags);
+ if (!p->coheru.auxp || p->coheru.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->coheru);
+ if (!p->coherv.auxp || p->coherv.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->coherv);
+
+ if (!p->filtout.auxp || p->filtout.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->filtout);
+ if (!p->filtuout.auxp || p->filtuout.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->filtuout);
+ if (!p->filtvout.auxp || p->filtvout.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->filtvout);
+ if (!p->filtpad.auxp || p->filtpad.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad * sizeof(MYFLT), &p->filtpad);
+ if (!p->filtupad.auxp || p->filtupad.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad * sizeof(MYFLT), &p->filtupad);
+ if (!p->filtvpad.auxp || p->filtvpad.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad * sizeof(MYFLT), &p->filtvpad);
+
+ /* zero numerator and power buffer, as they accumulate */
+ memset(p->power.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->num.auxp, 0, irlength * sizeof(MYFLT));
+ /* no need to zero other above mem, as it will be filled in init */
+
+ if (!p->matrixlu.auxp || p->matrixlu.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad * sizeof(MYFLT), &p->matrixlu);
+ if (!p->matrixrv.auxp || p->matrixrv.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad * sizeof(MYFLT), &p->matrixrv);
+ if (!p->olmatrixlu.auxp || p->olmatrixlu.size < overlapsize * sizeof(MYFLT))
+ csound->AuxAlloc(csound, overlapsize * sizeof(MYFLT), &p->olmatrixlu);
+ if (!p->olmatrixrv.auxp || p->olmatrixrv.size < overlapsize * sizeof(MYFLT))
+ csound->AuxAlloc(csound, overlapsize * sizeof(MYFLT), &p->olmatrixrv);
+ if (!p->hrtfl.auxp || p->hrtfl.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad * sizeof(MYFLT), &p->hrtfl);
+ if (!p->hrtfr.auxp || p->hrtfr.size < irlengthpad * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlengthpad * sizeof(MYFLT), &p->hrtfr);
+ if (!p->olhrtfl.auxp || p->olhrtfl.size < overlapsize * sizeof(MYFLT))
+ csound->AuxAlloc(csound, overlapsize * sizeof(MYFLT), &p->olhrtfl);
+ if (!p->olhrtfr.auxp || p->olhrtfr.size < overlapsize * sizeof(MYFLT))
+ csound->AuxAlloc(csound, overlapsize * sizeof(MYFLT), &p->olhrtfr);
+
+ memset(p->matrixlu.auxp, 0, irlengthpad * sizeof(MYFLT));
+ memset(p->matrixrv.auxp, 0, irlengthpad * sizeof(MYFLT));
+ memset(p->olmatrixlu.auxp, 0, overlapsize * sizeof(MYFLT));
+ memset(p->olmatrixrv.auxp, 0, overlapsize * sizeof(MYFLT));
+ memset(p->hrtfl.auxp, 0, irlengthpad * sizeof(MYFLT));
+ memset(p->hrtfr.auxp, 0, irlengthpad * sizeof(MYFLT));
+ memset(p->olhrtfl.auxp, 0, overlapsize * sizeof(MYFLT));
+ memset(p->olhrtfr.auxp, 0, overlapsize * sizeof(MYFLT));
+
+ if (!p->buffl.auxp || p->buffl.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->buffl);
+ if (!p->buffr.auxp || p->buffr.size < irlength * sizeof(MYFLT))
+ csound->AuxAlloc(csound, irlength * sizeof(MYFLT), &p->buffr);
+
+ memset(p->buffl.auxp, 0, irlength * sizeof(MYFLT));
+ memset(p->buffr.auxp, 0, irlength * sizeof(MYFLT));
+
+ /* buffers to store hrtf data */
+ bufflp = (MYFLT *)p->buffl.auxp;
+ buffrp = (MYFLT *)p->buffr.auxp;
+
+ /* 0 delay iterators */
+ p->u = p->v = p->w = p->x = p->y = p->z = 0;
+ p->ut = p->vt = p->wt = p->xt = p->yt = p->zt = 0;
+ p->utf1 = p->vtf1 = p->wtf1 = p->xtf1 = p->ytf1 = p->ztf1 = 0;
+ p->utf2 = p->vtf2 = p->wtf2 = p->xtf2 = p->ytf2 = p->ztf2 = 0;
+
+ /* calculate delayline lengths */
+ meanfporder = meanfp * (order + 1);
+ meanfpsamps = (int)(meanfp * sr);
+ meanfpordersamps = (int)(meanfporder * sr);
+
+ /* setup reverb time */
+ delaytime = rt60low > rt60high ? rt60low : rt60high;
+
+ /* in samples */
+ delaytime *= sr;
+ /* schroeder suggests 0.15 modes per Hz, so M should be > 0.15 t60 */
+ delaytime /= 7;
+
+ /* which no. of delay lines implies ave delay nearest to mfp(which is an
+ appropriate ave)? */
+ Msix = abs((int)(delaytime / 6) - meanfpsamps);
+ Mtwelve = abs((int)(delaytime / 12) - meanfpsamps);
+ Mtwentyfour = abs((int)(delaytime / 24) - meanfpsamps);
+ M = Mtwelve < Mtwentyfour ? (Msix < Mtwelve ? 6 : 12) : 24;
+
+ csound->Message(csound, "%d \n", M);
+
+ delaytime /= M;
+ delaytimeint = (int)delaytime;
+
+ if(delaytimeint < meanfpsamps)
+ delaytimeint = meanfpsamps;
+
+ /*csound->Message(csound, "%d %d %d \n", M, delaytimeint, meanfpsamps);*/
+
+ /* maximum value, according to primes array and delay line allocation */
+ if(delaytimeint > 10112)
+ delaytimeint = 10112;
+
+ /* minimum values, according to primes array and delay line allocation */
+ if(M==6)
+ {
+ if(delaytimeint < 164)
+ delaytimeint = 164;
+ }
+ else if(M==12)
+ {
+ if(delaytimeint < 374)
+ delaytimeint = 374;
+ }
+ else if(M==24)
+ {
+ if(delaytimeint < 410)
+ delaytimeint = 410;
+ }
+
+ /* allocate memory based on M: number of delays */
+ if (!p->delays.auxp || p->delays.size < M * sizeof(int))
+ csound->AuxAlloc(csound, M * sizeof(int), &p->delays);
+ if (!p->gi.auxp || p->gi.size < M * sizeof(MYFLT))
+ csound->AuxAlloc(csound, M * sizeof(MYFLT), &p->gi);
+ if (!p->ai.auxp || p->ai.size < M * sizeof(MYFLT))
+ csound->AuxAlloc(csound, M * sizeof(MYFLT), &p->ai);
+ if (!p->inmat.auxp || p->inmat.size < M * sizeof(MYFLT))
+ csound->AuxAlloc(csound, M * sizeof(MYFLT), &p->inmat);
+ if (!p->inmatlp.auxp || p->inmatlp.size < M * sizeof(MYFLT))
+ csound->AuxAlloc(csound, M * sizeof(MYFLT), &p->inmatlp);
+ if (!p->dellp.auxp || p->dellp.size < M * sizeof(MYFLT))
+ csound->AuxAlloc(csound, M * sizeof(MYFLT), &p->dellp);
+ if (!p->outmat.auxp || p->outmat.size < M * sizeof(MYFLT))
+ csound->AuxAlloc(csound, M * sizeof(MYFLT), &p->outmat);
+
+ memset(p->delays.auxp, 0, M * sizeof(int));
+ memset(p->gi.auxp, 0, M * sizeof(MYFLT));
+ memset(p->ai.auxp, 0, M * sizeof(MYFLT));
+ memset(p->inmat.auxp, 0, M * sizeof(MYFLT));
+ memset(p->inmatlp.auxp, 0, M * sizeof(MYFLT));
+ memset(p->dellp.auxp, 0, M * sizeof(MYFLT));
+ memset(p->outmat.auxp, 0, M * sizeof(MYFLT));
+
+ /* choose appropriate base delay times */
+ for(i = 0; i < 212; i++)
+ {
+ if(M == 6)
+ test = (i > 6 ? i : 6) - 6;
+ else if(M == 12)
+ test = (i > 15 ? i : 15) - 15;
+ else
+ test = (i > 16 ? i : 16) - 16;
+
+ if(primes[i] > delaytimeint || primes[test] > meanfpordersamps)
+ {
+ basedelay = i - 1;
+ if(primes[test] > meanfpordersamps)
+ csound->Message(csound, "\nfdn delay > earlies del..., fixed!");
+ *p->idel = (meanfpordersamps - primes[test - 1]) / sr;
+ break;
+ }
+ }
+
+ delaysp = (int *)p->delays.auxp;
+
+ /* fill delay data, note this data can be filled locally */
+ delaysp[0] = primes[basedelay];
+ delaysp[1] = primes[basedelay + 3];
+ delaysp[2] = primes[basedelay - 3];
+ delaysp[3] = primes[basedelay + 6];
+ delaysp[4] = primes[basedelay - 6];
+ delaysp[5] = primes[basedelay + 9];
+ if(M ==12 || M==24)
+ {
+ delaysp[6] = primes[basedelay - 9];
+ delaysp[7] = primes[basedelay + 12];
+ delaysp[8] = primes[basedelay - 12];
+ delaysp[9] = primes[basedelay + 15];
+ delaysp[10] = primes[basedelay - 15];
+ delaysp[11] = primes[basedelay + 18];
+ }
+ if(M ==24)
+ {
+ /* fill in gaps... */
+ delaysp[12] = primes[basedelay + 1];
+ delaysp[13] = primes[basedelay - 1];
+ delaysp[14] = primes[basedelay + 4];
+ delaysp[15] = primes[basedelay - 4];
+ delaysp[16] = primes[basedelay + 7];
+ delaysp[17] = primes[basedelay - 7];
+ delaysp[18] = primes[basedelay + 10];
+ delaysp[19] = primes[basedelay - 10];
+ delaysp[20] = primes[basedelay + 13];
+ delaysp[21] = primes[basedelay - 13];
+ delaysp[22] = primes[basedelay + 16];
+ delaysp[23] = primes[basedelay - 16];
+ }
+
+ /* setup and zero delay lines */
+ if (!p->del1.auxp || p->del1.size < delaysp[0] * sizeof(MYFLT))
+ csound->AuxAlloc(csound, delaysp[0] * sizeof(MYFLT), &p->del1);
+ if (!p->del2.auxp || p->del2.size < delaysp[1] * sizeof(MYFLT))
+ csound->AuxAlloc(csound, delaysp[1] * sizeof(MYFLT), &p->del2);
+ if (!p->del3.auxp || p->del3.size < delaysp[2] * sizeof(MYFLT))
+ csound->AuxAlloc(csound, delaysp[2] * sizeof(MYFLT), &p->del3);
+ if (!p->del4.auxp || p->del4.size < delaysp[3] * sizeof(MYFLT))
+ csound->AuxAlloc(csound, delaysp[3] * sizeof(MYFLT), &p->del4);
+ if (!p->del5.auxp || p->del5.size < delaysp[4] * sizeof(MYFLT))
+ csound->AuxAlloc(csound, delaysp[4] * sizeof(MYFLT), &p->del5);
+ if (!p->del6.auxp || p->del6.size < delaysp[5] * sizeof(MYFLT))
+ csound->AuxAlloc(csound, delaysp[5] * sizeof(MYFLT), &p->del6);
+
+ memset(p->del1.auxp, 0, delaysp[0] * sizeof(MYFLT));
+ memset(p->del2.auxp, 0, delaysp[1] * sizeof(MYFLT));
+ memset(p->del3.auxp, 0, delaysp[2] * sizeof(MYFLT));
+ memset(p->del4.auxp, 0, delaysp[3] * sizeof(MYFLT));
+ memset(p->del5.auxp, 0, delaysp[4] * sizeof(MYFLT));
+ memset(p->del6.auxp, 0, delaysp[5] * sizeof(MYFLT));
+
+ /* if 12 delay lines required */
+ if(M == 12 || M==24)
+ {
+ if (!p->del1t.auxp || p->del1t.size < delaysp[6] * sizeof(MYFLT))
+ csound->AuxAlloc(csound, delaysp[6] * sizeof(MYFLT), &p->del1t);
+ if (!p->del2t.auxp || p->del2t.size < delaysp[7] * sizeof(MYFLT))
+ csound->AuxAlloc(csound, delaysp[7] * sizeof(MYFLT), &p->del2t);
+ if (!p->del3t.auxp || p->del3t.size < delaysp[8] * sizeof(MYFLT))
+ csound->AuxAlloc(csound, delaysp[8] * sizeof(MYFLT), &p->del3t);
+ if (!p->del4t.auxp || p->del4t.size < delaysp[9] * sizeof(MYFLT))
+ csound->AuxAlloc(csound, delaysp[9] * sizeof(MYFLT), &p->del4t);
+ if (!p->del5t.auxp || p->del5t.size < delaysp[10] * sizeof(MYFLT))
+ csound->AuxAlloc(csound, delaysp[10] * sizeof(MYFLT), &p->del5t);
+ if (!p->del6t.auxp || p->del6t.size < delaysp[11] * sizeof(MYFLT))
+ csound->AuxAlloc(csound, delaysp[11] * sizeof(MYFLT), &p->del6t);
+
+ memset(p->del1t.auxp, 0, delaysp[6] * sizeof(MYFLT));
+ memset(p->del2t.auxp, 0, delaysp[7] * sizeof(MYFLT));
+ memset(p->del3t.auxp, 0, delaysp[8] * sizeof(MYFLT));
+ memset(p->del4t.auxp, 0, delaysp[9] * sizeof(MYFLT));
+ memset(p->del5t.auxp, 0, delaysp[10] * sizeof(MYFLT));
+ memset(p->del6t.auxp, 0, delaysp[11] * sizeof(MYFLT));
+ }
+ if(M==24)
+ {
+ if (!p->del1tf.auxp || p->del1tf.size < delaysp[12] * sizeof(MYFLT))
+ csound->AuxAlloc(csound, delaysp[12] * sizeof(MYFLT), &p->del1tf);
+ if (!p->del2tf.auxp || p->del2tf.size < delaysp[13] * sizeof(MYFLT))
+ csound->AuxAlloc(csound, delaysp[13] * sizeof(MYFLT), &p->del2tf);
+ if (!p->del3tf.auxp || p->del3tf.size < delaysp[14] * sizeof(MYFLT))
+ csound->AuxAlloc(csound, delaysp[14] * sizeof(MYFLT), &p->del3tf);
+ if (!p->del4tf.auxp || p->del4tf.size < delaysp[15] * sizeof(MYFLT))
+ csound->AuxAlloc(csound, delaysp[15] * sizeof(MYFLT), &p->del4tf);
+ if (!p->del5tf.auxp || p->del5tf.size < delaysp[16] * sizeof(MYFLT))
+ csound->AuxAlloc(csound, delaysp[16] * sizeof(MYFLT), &p->del5tf);
+ if (!p->del6tf.auxp || p->del6tf.size < delaysp[17] * sizeof(MYFLT))
+ csound->AuxAlloc(csound, delaysp[17] * sizeof(MYFLT), &p->del6tf);
+ if (!p->del7tf.auxp || p->del7tf.size < delaysp[18] * sizeof(MYFLT))
+ csound->AuxAlloc(csound, delaysp[18] * sizeof(MYFLT), &p->del7tf);
+ if (!p->del8tf.auxp || p->del8tf.size < delaysp[19] * sizeof(MYFLT))
+ csound->AuxAlloc(csound, delaysp[19] * sizeof(MYFLT), &p->del8tf);
+ if (!p->del9tf.auxp || p->del9tf.size < delaysp[20] * sizeof(MYFLT))
+ csound->AuxAlloc(csound, delaysp[20] * sizeof(MYFLT), &p->del9tf);
+ if (!p->del10tf.auxp || p->del10tf.size < delaysp[21] * sizeof(MYFLT))
+ csound->AuxAlloc(csound, delaysp[21] * sizeof(MYFLT), &p->del10tf);
+ if (!p->del11tf.auxp || p->del11tf.size < delaysp[22] * sizeof(MYFLT))
+ csound->AuxAlloc(csound, delaysp[22] * sizeof(MYFLT), &p->del11tf);
+ if (!p->del12tf.auxp || p->del12tf.size < delaysp[23] * sizeof(MYFLT))
+ csound->AuxAlloc(csound, delaysp[23] * sizeof(MYFLT), &p->del12tf);
+
+ memset(p->del1tf.auxp, 0, delaysp[12] * sizeof(MYFLT));
+ memset(p->del2tf.auxp, 0, delaysp[13] * sizeof(MYFLT));
+ memset(p->del3tf.auxp, 0, delaysp[14] * sizeof(MYFLT));
+ memset(p->del4tf.auxp, 0, delaysp[15] * sizeof(MYFLT));
+ memset(p->del5tf.auxp, 0, delaysp[16] * sizeof(MYFLT));
+ memset(p->del6tf.auxp, 0, delaysp[17] * sizeof(MYFLT));
+ memset(p->del7tf.auxp, 0, delaysp[18] * sizeof(MYFLT));
+ memset(p->del8tf.auxp, 0, delaysp[19] * sizeof(MYFLT));
+ memset(p->del9tf.auxp, 0, delaysp[20] * sizeof(MYFLT));
+ memset(p->del10tf.auxp, 0, delaysp[21] * sizeof(MYFLT));
+ memset(p->del11tf.auxp, 0, delaysp[22] * sizeof(MYFLT));
+ memset(p->del12tf.auxp, 0, delaysp[23] * sizeof(MYFLT));
+ }
+
+ powerp = (MYFLT *)p->power.auxp;
+ HRTFavep = (MYFLT *)p->HRTFave.auxp;
+ nump = (MYFLT *)p->num.auxp;
+ denomp = (MYFLT *)p->denom.auxp;
+ cohermagsp = (MYFLT *)p->cohermags.auxp;
+ coherup = (MYFLT *)p->coheru.auxp;
+ cohervp = (MYFLT *)p->coherv.auxp;
+
+ /* usually, just go through all files; in this case, just doubled due
+ to symmetry (with exceptions, as below) */
+ for(i = 0; i < 368; i ++)
+ {
+ /* if at a measurement where no doubling for symmetry necessary... */
+ if(i == 0 || i == 28 || i == 29 || i == 59 || i == 60 || i == 96 ||
+ i == 97 || i == 133 || i == 134 || i == 170 || i == 171 ||
+ i == 207 || i == 208 || i == 244 || i == 245 || i == 275 ||
+ i == 276 || i == 304 || i == 305 || i == 328 || i == 346 ||
+ i == 347 || i == 359 || i == 360 || i == 366 || i == 367)
+ skipdouble = 1;
+ else
+ skipdouble = 0;
+
+ for(j = 0; j < irlength; j ++)
+ {
+ bufflp[j] = fpindexl[skip + j];
+ buffrp[j] = fpindexr[skip + j];
+ }
+
+ /* deal with 0 hz and nyq: may be a negative real val, no need for
+ fabs() as squaring anyway! */
+ /* skipdouble: l = r */
+ if(skipdouble)
+ {
+ powerp[0] = powerp[0] + SQUARE(bufflp[0]);
+ powerp[1] = powerp[1] + SQUARE(bufflp[1]);
+ }
+ /* include both */
+ else
+ {
+ powerp[0] = powerp[0] + SQUARE(bufflp[0]) + SQUARE(buffrp[0]);
+ powerp[1] = powerp[1] + SQUARE(bufflp[1]) + SQUARE(buffrp[1]);
+ }
+
+ for(j = 2; j < irlength; j += 2)
+ {
+ if(skipdouble)
+ powerp[j] = powerp[j] + (MYFLT)SQUARE(bufflp[j]);
+ else
+ powerp[j] = powerp[j] + (MYFLT)SQUARE(bufflp[j]) +
+ (MYFLT)SQUARE(buffrp[j]);
+ powerp[j + 1] = FL(0.0);
+ }
+ skip += irlength;
+ }
+
+ for(i = 0; i < irlength; i++)
+ HRTFavep[i] = SQRT(powerp[i] / FL(710.0));
+
+ fpindexl = (float *)fpl->beginp;
+ fpindexr = (float *)fpr->beginp;
+ skip = 0;
+
+ /* coherence values */
+ for(i = 0; i< 368; i++)
+ {
+ /* if at a measurement where no doubling for symmetry necessary... */
+ if(i == 0 || i == 28 || i == 29 || i == 59 || i == 60 || i == 96 ||
+ i == 97 || i == 133 || i == 134 || i == 170 || i == 171 ||
+ i == 207 || i == 208 || i == 244 || i == 245 || i == 275 ||
+ i == 276 || i == 304 || i == 305 || i == 328 || i == 346 ||
+ i == 347 || i == 359 || i == 360 || i == 366 || i == 367)
+ skipdouble = 1;
+ else
+ skipdouble = 0;
+
+ for(j = 0; j < irlength; j ++)
+ {
+ bufflp[j] = fpindexl[skip + j];
+ buffrp[j] = fpindexr[skip + j];
+ }
+
+ /* back to rectangular to find numerator: need complex nos */
+ /* 0Hz and Nyq ok as real */
+ if(skipdouble)
+ {
+ nump[0] = nump[0] + (bufflp[0] * buffrp[0]);
+ nump[1] = nump[1] + (bufflp[1] * buffrp[1]);
+ }
+ else
+ {
+ nump[0] = nump[0] + (bufflp[0] * buffrp[0]) + (buffrp[0] * bufflp[0]);
+ nump[1] = nump[1] + (bufflp[1] * buffrp[1]) + (buffrp[1] * bufflp[1]);
+ }
+
+ /* complex multiplication */
+ /* (a + i b)(c + i d) */
+ /* = (a c - b d) + i(a d + b c) */
+ /* conjugate: d becomes -d ->
+ = (a c + b d) + i(- a d + b c) */
+ /* doing l * conj r and r * conj l here, as dataset symmetrical...
+ for non symmetrical, just go through all and do l * conj r */
+ for(j = 2; j < irlength; j += 2)
+ {
+ rel = bufflp[j] * COS(bufflp[j + 1]);
+ iml = bufflp[j] * SIN(bufflp[j + 1]);
+ rer = buffrp[j] * COS(buffrp[j + 1]);
+ imr = buffrp[j] * SIN(buffrp[j + 1]);
+ if(skipdouble)
+ {
+ nump[j] = nump[j] + ((rel * rer) + (iml * imr));
+ nump[j + 1] = nump[j + 1] + ((rel * -imr) + (iml * rer));
+ }
+ else
+ {
+ nump[j] = nump[j] + ((rel * rer) + (iml * imr)) +
+ ((rer * rel) + (imr * iml));
+ nump[j + 1] = nump[j + 1] + ((rel * -imr) + (iml * rer)) +
+ ((rer * -iml) + (imr * rel));
+ }
+ }
+ skip += irlength;
+ }
+
+ /* 0 & nyq = fabs() for mag... */
+ nump[0] = FABS(nump[0]);
+ nump[1] = FABS(nump[1]);
+
+ /* magnitudes of sum of conjugates */
+ for(i = 2; i < irlength; i += 2)
+ {
+ retemp = nump[i];
+ imtemp = nump[i + 1];
+ nump[i] = SQRT(SQUARE(retemp) + SQUARE(imtemp));
+ nump[i + 1] = FL(0.0);
+ }
+
+ /* sqrt (powl * powr) powl = powr in symmetric case, so just power[] needed */
+ for(i = 0; i < irlength; i++)
+ denomp[i] = powerp[i];
+
+ /* coherence values */
+ cohermagsp[0] = nump[0] / denomp[0];
+ cohermagsp[1] = nump[1] / denomp[1];
+
+ for(i = 2; i < irlength; i += 2)
+ {
+ cohermagsp[i] = nump[i] / denomp[i];
+ cohermagsp[i+1] = FL(0.0);
+ }
+
+ /* coherence formula */
+ coherup[0] = SQRT((FL(1.0) + cohermagsp[0]) / FL(2.0));
+ coherup[1] = SQRT((FL(1.0) + cohermagsp[1]) / FL(2.0));
+ cohervp[0] = SQRT((FL(1.0) - cohermagsp[0]) / FL(2.0));
+ cohervp[1] = SQRT((FL(1.0) - cohermagsp[1]) / FL(2.0));
+
+ for(i = 2; i < irlength; i += 2)
+ {
+ coherup[i] = SQRT((FL(1.0) + cohermagsp[i]) / FL(2.0));
+ cohervp[i] = SQRT((FL(1.0) - cohermagsp[i]) / FL(2.0));
+ coherup[i + 1] = FL(0.0);
+ cohervp[i + 1] = FL(0.0);
+ }
+
+ /* no need to go back to rectangular for fft, as phase = 0, so same */
+ csound->InverseRealFFT(csound, HRTFavep, irlength);
+ csound->InverseRealFFT(csound, coherup, irlength);
+ csound->InverseRealFFT(csound, cohervp, irlength);
+
+ filtoutp = (MYFLT *)p->filtout.auxp;
+ filtuoutp = (MYFLT *)p->filtuout.auxp;
+ filtvoutp = (MYFLT *)p->filtvout.auxp;
+ filtpadp = (MYFLT *)p->filtpad.auxp;
+ filtupadp = (MYFLT *)p->filtupad.auxp;
+ filtvpadp = (MYFLT *)p->filtvpad.auxp;
+
+ /* shift */
+ for(i = 0; i < irlength; i++)
+ {
+ filtoutp[i] = HRTFavep[(i + (irlength / 2)) % irlength];
+ filtuoutp[i] = coherup[(i + (irlength / 2)) % irlength];
+ filtvoutp[i] = cohervp[(i + (irlength / 2)) % irlength];
+ }
+
+ for(i = 0; i < irlength; i++)
+ {
+ filtpadp[i] = filtoutp[i];
+ filtupadp[i] = filtuoutp[i];
+ filtvpadp[i] = filtvoutp[i];
+ }
+ for(i = irlength; i < irlengthpad; i++)
+ {
+ filtpadp[i] = FL(0.0);
+ filtupadp[i] = FL(0.0);
+ filtvpadp[i] = FL(0.0);
+ }
+
+ csound->RealFFT(csound, filtpadp, irlengthpad);
+ csound->RealFFT(csound, filtupadp, irlengthpad);
+ csound->RealFFT(csound, filtvpadp, irlengthpad);
+
+ T = FL(1.0) / sr;
+
+ gip = (MYFLT *)p->gi.auxp;
+ aip = (MYFLT *)p->ai.auxp;
+
+ do
+ {
+ double alphsq;
+ alpha = rt60high / rt60low;
+ clipcheck = 0;
+ alphsq = SQUARE(alpha);
+ p->b = (FL(1.0) - alpha) / (FL(1.0) + alpha);
+ aconst = (LOG(FL(10.0)) / FL(4.0)) * (FL(1.0) - (FL(1.0) / alphsq));
+ for(i = 0; i < M; i++)
+ {
+ exp = (-FL(3.0) * delaysp[i] * T) / rt60low;
+ gip[i] = POWER(FL(10.0), exp);
+ aip[i] = exp * aconst;
+
+ if(aip[i] > FL(0.99) || aip[i] < -FL(0.99))
+ {
+ csound->Message(csound, Str("\nwarning, approaching instability, fixed with "
+ "a flat late reverb!"));
+ clipcheck = 1;
+ if(aip[i] > 0.99)
+ rt60high = rt60low;
+ else
+ rt60low = rt60high;
+ break;
+ }
+
+ }
+ }while(clipcheck);
+
+ /* initialise counter and filter delays */
+ p->counter = 0;
+ p->inoldl = 0;
+ p->inoldr = 0;
+ p->M = M;
+
+ return OK;
+}
+
+int hrtfreverb_process(CSOUND *csound, hrtfreverb *p)
+{
+ int i, j, k, n = csound->ksmps;
+
+ /* signals in, out */
+ MYFLT *in = p->insig, sigin;
+ MYFLT *outl = p->outsigl;
+ MYFLT *outr = p->outsigr;
+
+ /* pointers to delay data */
+ MYFLT *del1p, *del2p, *del3p, *del4p, *del5p, *del6p;
+ MYFLT *del1tp=NULL, *del2tp=NULL, *del3tp=NULL,
+ *del4tp=NULL, *del5tp=NULL, *del6tp=NULL;
+ MYFLT *del1tfp=NULL, *del2tfp=NULL, *del3tfp=NULL, *del4tfp=NULL,
+ *del5tfp=NULL, *del6tfp=NULL, *del7tfp=NULL, *del8tfp=NULL,
+ *del9tfp=NULL, *del10tfp=NULL, *del11tfp=NULL, *del12tfp=NULL;
+ int *delaysp;
+
+ /* matrix manipulation */
+ MYFLT *inmatp, *inmatlpp, *dellpp, *outmatp;
+
+ /* delay line iterators */
+ int u, v, w, x, y, z;
+ int ut, vt, wt, xt, yt, zt;
+ int utf1=0, vtf1=0, wtf1=0, xtf1=0, ytf1=0, ztf1=0;
+ int utf2=0, vtf2=0, wtf2=0, xtf2=0, ytf2=0, ztf2=0;
+
+ /* number of delays */
+ int M = p->M;
+
+ /* FIR temp variables */
+ MYFLT tonall, tonalr;
+ MYFLT b = p->b;
+
+ /* IIR variables */
+ MYFLT *gip, *aip;
+
+ /* counter */
+ int counter = p->counter;
+
+ /* matrix/coher and hrtf filter buffers, with overlap add buffers */
+ MYFLT *matrixlup = (MYFLT *)p->matrixlu.auxp;
+ MYFLT *matrixrvp = (MYFLT *)p->matrixrv.auxp;
+ MYFLT *olmatrixlup = (MYFLT *)p->olmatrixlu.auxp;
+ MYFLT *olmatrixrvp = (MYFLT *)p->olmatrixrv.auxp;
+ MYFLT *hrtflp = (MYFLT *)p->hrtfl.auxp;
+ MYFLT *hrtfrp = (MYFLT *)p->hrtfr.auxp;
+ MYFLT *olhrtflp = (MYFLT *)p->olhrtfl.auxp;
+ MYFLT *olhrtfrp = (MYFLT *)p->olhrtfr.auxp;
+
+ /* processing lengths */
+ int irlength = p->irlength;
+ int irlengthpad = p->irlengthpad;
+ int overlapsize = p->overlapsize;
+
+ /* 1st order FIR mem */
+ MYFLT inoldl = p->inoldl;
+ MYFLT inoldr = p->inoldr;
+
+ /* filters, created in INIT */
+ MYFLT *filtpadp = (MYFLT *)p->filtpad.auxp;
+ MYFLT *filtupadp = (MYFLT *)p->filtupad.auxp;
+ MYFLT *filtvpadp = (MYFLT *)p->filtvpad.auxp;
+
+ MYFLT sr = p->sr;
+
+ del1p = (MYFLT *)p->del1.auxp;
+ del2p = (MYFLT *)p->del2.auxp;
+ del3p = (MYFLT *)p->del3.auxp;
+ del4p = (MYFLT *)p->del4.auxp;
+ del5p = (MYFLT *)p->del5.auxp;
+ del6p = (MYFLT *)p->del6.auxp;
+
+ if(M==12 || M==24)
+ {
+ del1tp = (MYFLT *)p->del1t.auxp;
+ del2tp = (MYFLT *)p->del2t.auxp;
+ del3tp = (MYFLT *)p->del3t.auxp;
+ del4tp = (MYFLT *)p->del4t.auxp;
+ del5tp = (MYFLT *)p->del5t.auxp;
+ del6tp = (MYFLT *)p->del6t.auxp;
+ }
+ if(M==24)
+ {
+ del1tfp = (MYFLT *)p->del1tf.auxp;
+ del2tfp = (MYFLT *)p->del2tf.auxp;
+ del3tfp = (MYFLT *)p->del3tf.auxp;
+ del4tfp = (MYFLT *)p->del4tf.auxp;
+ del5tfp = (MYFLT *)p->del5tf.auxp;
+ del6tfp = (MYFLT *)p->del6tf.auxp;
+ del7tfp = (MYFLT *)p->del7tf.auxp;
+ del8tfp = (MYFLT *)p->del8tf.auxp;
+ del9tfp = (MYFLT *)p->del9tf.auxp;
+ del10tfp = (MYFLT *)p->del10tf.auxp;
+ del11tfp = (MYFLT *)p->del11tf.auxp;
+ del12tfp = (MYFLT *)p->del12tf.auxp;
+ }
+
+ delaysp = (int *)p->delays.auxp;
+
+ inmatp = (MYFLT *)p->inmat.auxp;
+ inmatlpp = (MYFLT *)p->inmatlp.auxp;
+ dellpp = (MYFLT *)p->dellp.auxp;
+ outmatp = (MYFLT *)p->outmat.auxp;
+
+ gip = (MYFLT *)p->gi.auxp;
+ aip = (MYFLT *)p->ai.auxp;
+
+ /* point to structure */
+ u = p->u;
+ v = p->v;
+ w = p->w;
+ x = p->x;
+ y = p->y;
+ z = p->z;
+ if(M==12 || M==24)
+ {
+ ut = p->ut;
+ vt = p->vt;
+ wt = p->wt;
+ xt = p->xt;
+ yt = p->yt;
+ zt = p->zt;
+ }
+ else {
+ printf("Should not get here\n");
+ ut = vt = wt = xt = yt = zt = 0;
+ }
+ if(M==24)
+ {
+ utf1 = p->utf1;
+ vtf1 = p->vtf1;
+ wtf1 = p->wtf1;
+ xtf1 = p->xtf1;
+ ytf1 = p->ytf1;
+ ztf1 = p->ztf1;
+ utf2 = p->utf2;
+ vtf2 = p->vtf2;
+ wtf2 = p->wtf2;
+ xtf2 = p->xtf2;
+ ytf2 = p->ytf2;
+ ztf2 = p->ztf2;
+ }
+
+ /* processing loop */
+ for(i=0; i < n; i++)
+ {
+ /* tonal filter: 1 - b pow(z,-1) / 1 - b
+ 1/1-b in - b/1-b in(old) */
+ /* dot product of l and r = 0 for uncorrelated */
+ tonall = (del1p[u] - del2p[v] + del3p[w] - del4p[x] + del5p[y] - del6p[z]);
+ if(M==12 || M==24)
+ tonall += (del1tp[ut] - del2tp[vt] + del3tp[wt] -
+ del4tp[xt] + del5tp[yt] - del6tp[zt]);
+ if(M==24)
+ tonall += (del1tfp[utf1] - del2tfp[vtf1] + del3tfp[wtf1] -
+ del4tfp[xtf1] + del5tfp[ytf1] - del6tfp[ztf1] +
+ del7tfp[utf2] - del8tfp[vtf2] + del9tfp[wtf2] -
+ del10tfp[xtf2] + del11tfp[ytf2] - del12tfp[ztf2]);
+ matrixlup[counter] = (((FL(1.0) / (FL(1.0) - b)) * tonall) -
+ ((b / (FL(1.0) - b)) * inoldl));
+ matrixlup[counter] /= M;
+ inoldl = tonall;
+
+ tonalr = (del1p[u] + del2p[v] + del3p[w] + del4p[x] + del5p[y] + del6p[z]);
+ if(M==12 || M==24)
+ tonalr += (del1tp[ut] + del2tp[vt] + del3tp[wt] +
+ del4tp[xt] + del5tp[yt] + del6tp[zt]);
+ if(M==24)
+ tonalr += (del1tfp[utf1] - del2tfp[vtf1] + del3tfp[wtf1] -
+ del4tfp[xtf1] + del5tfp[ytf1] - del6tfp[ztf1] +
+ del7tfp[utf2] - del8tfp[vtf2] + del9tfp[wtf2] -
+ del10tfp[xtf2] + del11tfp[ytf2] - del12tfp[ztf2]);
+ matrixrvp[counter] = (((FL(1.0) / (FL(1.0) - b)) * tonalr) -
+ ((b / (FL(1.0) - b)) * inoldr));
+ matrixrvp[counter] /= M;
+ inoldr = tonalr;
+
+ /* inputs from del lines (need more for larger fdn) */
+ inmatp[0] = del1p[u];
+ inmatp[1] = del2p[v];
+ inmatp[2] = del3p[w];
+ inmatp[3] = del4p[x];
+ inmatp[4] = del5p[y];
+ inmatp[5] = del6p[z];
+
+ if(M==12 || M==24)
+ {
+ inmatp[6] = del1tp[ut];
+ inmatp[7] = del2tp[vt];
+ inmatp[8] = del3tp[wt];
+ inmatp[9] = del4tp[xt];
+ inmatp[10] = del5tp[yt];
+ inmatp[11] = del6tp[zt];
+ }
+ if(M==24)
+ {
+ inmatp[12] = del1tfp[utf1];
+ inmatp[13] = del2tfp[vtf1];
+ inmatp[14] = del3tfp[wtf1];
+ inmatp[15] = del4tfp[xtf1];
+ inmatp[16] = del5tfp[ytf1];
+ inmatp[17] = del6tfp[ztf1];
+ inmatp[18] = del7tfp[utf2];
+ inmatp[19] = del8tfp[vtf2];
+ inmatp[20] = del9tfp[wtf2];
+ inmatp[21] = del10tfp[xtf2];
+ inmatp[22] = del11tfp[ytf2];
+ inmatp[23] = del12tfp[ztf2];
+ }
+
+ /* low pass each
+ filter:
+ gi ( 1 - ai / 1 - ai pow(z,-1)
+ op = gi - gi ai x(n) + ai del
+ del = op */
+
+ for(j = 0; j < M; j++)
+ {
+ inmatlpp[j] = (gip[j] * (1 - aip[j]) * inmatp[j]) +
+ (aip[j] * dellpp[j]);
+ dellpp[j] = inmatlpp[j];
+ }
+
+ /* matrix mult: multiplying a vector by a matrix:
+ embedded householders cause stability issues,
+ as reported by Murphy...*/
+ for(j = 0; j < M; j++)
+ {
+ outmatp[j] = FL(0.0);
+ for(k = 0; k < M; k++)
+ {
+ if(M==24)
+ outmatp[j] += (matrix24[j * M + k] * inmatlpp[k]);
+ else if(M==12)
+ outmatp[j] += (matrix12[j * M + k] * inmatlpp[k]);
+ else
+ outmatp[j] += (matrix6[j * M + k] * inmatlpp[k]);
+ }
+ }
+
+ sigin = in[i] * (FL(32767.0) / csound->e0dbfs);
+
+ del1p[u] = outmatp[0] + sigin;
+ del2p[v] = outmatp[1] + sigin;
+ del3p[w] = outmatp[2] + sigin;
+ del4p[x] = outmatp[3] + sigin;
+ del5p[y] = outmatp[4] + sigin;
+ del6p[z] = outmatp[5] + sigin;
+ if(M == 12 || M == 24)
+ {
+ del1tp[ut] = outmatp[6] + sigin;
+ del2tp[vt] = outmatp[7] + sigin;
+ del3tp[wt] = outmatp[8] + sigin;
+ del4tp[xt] = outmatp[9] + sigin;
+ del5tp[yt] = outmatp[10] + sigin;
+ del6tp[zt] = outmatp[11] + sigin;
+ }
+ if(M == 24)
+ {
+ del1tfp[utf1] = outmatp[12] + sigin;
+ del2tfp[vtf1] = outmatp[13] + sigin;
+ del3tfp[wtf1] = outmatp[14] + sigin;
+ del4tfp[xtf1] = outmatp[15] + sigin;
+ del5tfp[ytf1] = outmatp[16] + sigin;
+ del6tfp[ztf1] = outmatp[17] + sigin;
+ del7tfp[utf2] = outmatp[18] + sigin;
+ del8tfp[vtf2] = outmatp[19] + sigin;
+ del9tfp[wtf2] = outmatp[20] + sigin;
+ del10tfp[xtf2] = outmatp[21] + sigin;
+ del11tfp[ytf2] = outmatp[22] + sigin;
+ del12tfp[ztf2] = outmatp[23] + sigin;
+ }
+
+ u = (u != delaysp[0] - 1 ? u + 1 : 0);
+ v = (v != delaysp[1] - 1 ? v + 1 : 0);
+ w = (w != delaysp[2] - 1 ? w + 1 : 0);
+ x = (x != delaysp[3] - 1 ? x + 1 : 0);
+ y = (y != delaysp[4] - 1 ? y + 1 : 0);
+ z = (z != delaysp[5] - 1 ? z + 1 : 0);
+
+ if(M == 12 || M == 24)
+ {
+ ut = (ut != delaysp[6] - 1 ? ut + 1 : 0);
+ vt = (vt != delaysp[7] - 1 ? vt + 1 : 0);
+ wt = (wt != delaysp[8] - 1 ? wt + 1 : 0);
+ xt = (xt != delaysp[9] - 1 ? xt + 1 : 0);
+ yt = (yt != delaysp[10] - 1 ? yt + 1 : 0);
+ zt = (zt != delaysp[11] - 1 ? zt + 1 : 0);
+ }
+ if(M == 24)
+ {
+ utf1 = (utf1 != delaysp[12] - 1 ? utf1 + 1 : 0);
+ vtf1 = (vtf1 != delaysp[13] - 1 ? vtf1 + 1 : 0);
+ wtf1 = (wtf1 != delaysp[14] - 1 ? wtf1 + 1 : 0);
+ xtf1 = (xtf1 != delaysp[15] - 1 ? xtf1 + 1 : 0);
+ ytf1 = (ytf1 != delaysp[16] - 1 ? ytf1 + 1 : 0);
+ ztf1 = (ztf1 != delaysp[17] - 1 ? ztf1 + 1 : 0);
+ utf2 = (utf2 != delaysp[18] - 1 ? utf2 + 1 : 0);
+ vtf2 = (vtf2 != delaysp[19] - 1 ? vtf2 + 1 : 0);
+ wtf2 = (wtf2 != delaysp[20] - 1 ? wtf2 + 1 : 0);
+ xtf2 = (xtf2 != delaysp[21] - 1 ? xtf2 + 1 : 0);
+ ytf2 = (ytf2 != delaysp[22] - 1 ? ytf2 + 1 : 0);
+ ztf2 = (ztf2 != delaysp[23] - 1 ? ztf2 + 1 : 0);
+ }
+
+ /* output, increment counter */
+ // outl[i] = hrtflp[counter];
+ // outr[i] = hrtfrp[counter];
+
+ outl[i] = hrtflp[counter] * (csound->e0dbfs / FL(32767.0));
+ outr[i] = hrtfrp[counter] * (csound->e0dbfs / FL(32767.0));
+
+ counter++;
+
+ if(counter == irlength)
+ {
+ for(j = irlength; j < irlengthpad; j++)
+ {
+ matrixlup[j] = FL(0.0);
+ matrixrvp[j] = FL(0.0);
+ }
+
+ /* fft result from matrices */
+ csound->RealFFT(csound, matrixlup, irlengthpad);
+ csound->RealFFT(csound, matrixrvp, irlengthpad);
+
+ /* convolution: spectral multiplication */
+ csound->RealFFTMult(csound, matrixlup, matrixlup,
+ filtupadp, irlengthpad, FL(1.0));
+ csound->RealFFTMult(csound, matrixrvp, matrixrvp,
+ filtvpadp, irlengthpad, FL(1.0));
+
+ /* ifft result */
+ csound->InverseRealFFT(csound, matrixlup, irlengthpad);
+ csound->InverseRealFFT(csound, matrixrvp, irlengthpad);
+
+ for(j = 0; j < irlength; j++)
+ {
+ matrixlup[j] = matrixlup[j] + (j < overlapsize ?
+ olmatrixlup[j] : FL(1.0));
+ matrixrvp[j] = matrixrvp[j] + (j < overlapsize ?
+ olmatrixrvp[j] : FL(1.0));
+ }
+
+ /* store overlap for next time */
+ for(j = 0; j < overlapsize; j++)
+ {
+ olmatrixlup[j] = matrixlup[j + irlength];
+ olmatrixrvp[j] = matrixrvp[j + irlength];
+ }
+
+ /* coherence formula */
+ for(j = 0; j < irlength; j++)
+ {
+ hrtflp[j] = matrixlup[j] + matrixrvp[j];
+ hrtfrp[j] = matrixlup[j] - matrixrvp[j];
+ }
+
+ for(j = irlength; j < irlengthpad; j++)
+ {
+ hrtflp[j] = FL(0.0);
+ hrtfrp[j] = FL(0.0);
+ }
+
+ /* fft result from matrices */
+ csound->RealFFT(csound, hrtflp, irlengthpad);
+ csound->RealFFT(csound, hrtfrp, irlengthpad);
+
+ /* convolution: spectral multiplication */
+ csound->RealFFTMult(csound, hrtflp, hrtflp, filtpadp,
+ irlengthpad, FL(1.0));
+ csound->RealFFTMult(csound, hrtfrp, hrtfrp, filtpadp,
+ irlengthpad, FL(1.0));
+
+ /* ifft result */
+ csound->InverseRealFFT(csound, hrtflp, irlengthpad);
+ csound->InverseRealFFT(csound, hrtfrp, irlengthpad);
+
+ /* scale */
+ for(j = 0; j < irlengthpad; j++)
+ {
+ hrtflp[j] = hrtflp[j]/(sr / FL(38000.0));
+ hrtfrp[j] = hrtfrp[j]/(sr / FL(38000.0));
+ }
+
+ for(j = 0; j < irlength; j++)
+ {
+ hrtflp[j] = hrtflp[j] + (j < overlapsize ?
+ olhrtflp[j] : FL(0.0));
+ hrtfrp[j] = hrtfrp[j] + (j < overlapsize ?
+ olhrtfrp[j] : FL(0.0));
+ }
+
+ /* store overlap for next time */
+ for(j = 0; j < overlapsize; j++)
+ {
+ olhrtflp[j] = hrtflp[j + irlength];
+ olhrtfrp[j] = hrtfrp[j + irlength];
+ }
+
+ counter = 0;
+ } /* end of irlength loop */
+ } /* end of ksmps loop */
+
+ /* keep for next time */
+ p->counter = counter;
+
+ p->u = u;
+ p->v = v;
+ p->w = w;
+ p->x = x;
+ p->y = y;
+ p->z = z;
+ if(M == 12 || M == 24)
+ {
+ p->ut = ut;
+ p->vt = vt;
+ p->wt = wt;
+ p->xt = xt;
+ p->yt = yt;
+ p->zt = zt;
+ }
+ if(M == 24)
+ {
+ p->utf1 = utf1;
+ p->vtf1 = vtf1;
+ p->wtf1 = wtf1;
+ p->xtf1 = xtf1;
+ p->ytf1 = ytf1;
+ p->ztf1 = ztf1;
+ p->utf2 = utf2;
+ p->vtf2 = vtf2;
+ p->wtf2 = wtf2;
+ p->xtf2 = xtf2;
+ p->ytf2 = ytf2;
+ p->ztf2 = ztf2;
+ }
+
+ p->inoldl = inoldl;
+ p->inoldr = inoldr;
+
+ return OK;
+}
+
+static OENTRY hrtfreverb_localops[] =
+{
+ {
+ "hrtfreverb", sizeof(hrtfreverb), 5, "aai", "aiiSSoop",
+ (SUBR)hrtfreverb_init, NULL, (SUBR)hrtfreverb_process
+ }
+};
+
+LINKAGE1(hrtfreverb_localops)
diff --git a/Opcodes/imageOpcodes.c b/Opcodes/imageOpcodes.c
index 1b06981..6e62156 100644
--- a/Opcodes/imageOpcodes.c
+++ b/Opcodes/imageOpcodes.c
@@ -84,7 +84,7 @@ static Image * __doOpenImage(char * filename, CSOUND *csound)
unsigned char header[8];
png_structp png_ptr;
png_infop info_ptr;
- png_infop end_ptr;
+ /* png_infop end_ptr; */
int is_png;
png_uint_32 width, height, rowbytes;
int bit_depth;
@@ -128,13 +128,13 @@ static Image * __doOpenImage(char * filename, CSOUND *csound)
return NULL;
}
- end_ptr = png_create_info_struct(png_ptr);
- if (UNLIKELY(!end_ptr)) {
- png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp) NULL);
- csound->InitError(csound, Str("imageload: out of memory.\n"));
- csound->FileClose(csound, fd);
- return NULL;
- }
+ /* end_ptr = png_create_info_struct(png_ptr); */
+ /* if (UNLIKELY(!end_ptr)) { */
+ /* png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp) NULL); */
+ /* csound->InitError(csound, Str("imageload: out of memory.\n")); */
+ /* csound->FileClose(csound, fd); */
+ /* return NULL; */
+ /* } */
png_init_io(png_ptr, fp);
png_set_sig_bytes(png_ptr, hs);
@@ -612,7 +612,7 @@ static int imagefree (CSOUND *csound, IMGSAVE * p)
#define S(x) sizeof(x)
-static OENTRY localops[] = {
+static OENTRY image_localops[] = {
{ "imageload", S(IMGLOAD), 1, "i", "S", (SUBR)imageload, NULL, NULL },
{ "imagecreate",S(IMGCREATE),1, "i", "ii", (SUBR)imagecreate, NULL, NULL },
{ "imagesize", S(IMGSIZE), 1, "ii", "i", (SUBR)imagesize, NULL, NULL },
@@ -622,8 +622,8 @@ static OENTRY localops[] = {
(SUBR)imagesetpixel, (SUBR)imagesetpixel, (SUBR)imagesetpixel_a },
{ "imagesave", S(IMGSAVE), 1, "", "iS", (SUBR)imagesave, NULL, NULL },
{ "imagefree", S(IMGFREE), 1, "", "i", (SUBR)imagefree, NULL, NULL },
-
};
-LINKAGE
+LINKAGE1(image_localops)
+
diff --git a/Opcodes/jackTransport.c b/Opcodes/jackTransport.c
index 2fd53fb..10cc206 100644
--- a/Opcodes/jackTransport.c
+++ b/Opcodes/jackTransport.c
@@ -88,11 +88,10 @@ static int jack_transport (CSOUND *csound, JACKTRANSPORT * p)
#define S(x) sizeof(x)
-static OENTRY localops[] = {
+static OENTRY jackTransport_localops[] = {
{ "jacktransport", S(JACKTRANSPORT), 1, "", "ij",
(SUBR)jack_transport, NULL, NULL },
-
};
-LINKAGE
+LINKAGE1(jackTransport_localops)
diff --git a/Opcodes/jacko.cpp b/Opcodes/jacko.cpp
index 0b7f265..2cb5657 100644
--- a/Opcodes/jacko.cpp
+++ b/Opcodes/jacko.cpp
@@ -456,14 +456,16 @@ struct JackoNoteOut;
struct JackoTransport;
struct JackoState;
+#if 0
static JackoState *getJackoState(CSOUND *csound);
+static void *closeRoutine(void *userdata);
+#endif
-static int JackProcessCallback_(jack_nframes_t frames,
- void *data);
-
+static std::map<CSOUND *, JackoState *> jackoStatesForCsoundInstances;
static void SenseEventCallback_(CSOUND *csound,
void *data);
-
+static int JackProcessCallback_(jack_nframes_t frames,
+ void *data);
static int midiDeviceOpen_(CSOUND *csound,
void **userData,
const char *devName);
@@ -473,11 +475,6 @@ static int midiRead_(CSOUND *csound,
unsigned char *midiData,
int nbytes);
-static void *closeRoutine(void *userdata);
-
-
-static std::map<CSOUND *, JackoState *> jackoStatesForCsoundInstances;
-
/**
* Manages all state relevant to the global
* interaction between Jack and Csound for a particular
@@ -517,218 +514,230 @@ struct JackoState
jackActive(false),
csoundActive(true)
{
- int result = 0;
- csound = csound_;
- csoundFramesPerTick = csound->GetKsmps(csound);
- csoundFramesPerSecond = csound->GetSr(csound);
- result = pthread_mutex_init(&conditionMutex, 0);
- result = pthread_cond_init(&csoundCondition, 0);
- result = pthread_cond_init(&closeCondition, 0);
- // Create a thread to run the close routine. It will immediately block until it is signaled.
- result = pthread_create(&closeThread, 0, &JackoState::closeRoutine_, this);
- std::memset(&jack_position, 0, sizeof(jack_position_t));
- jack_options_t jack_options = (jack_options_t) JackOpenOptions;
- jack_status_t status = jack_status_t(0);
- jackClient = jack_client_open(clientName,
- jack_options,
- &status,
- serverName);
- if (!jackClient) {
- csound->Message(csound, Str("Could not create Jack client \"%s\" -- is Jack server \"%s\" running? Status: %d\n"),
- clientName,
- serverName,
- status);
- csound->LongJmp(csound, 1);
- } else {
- csound->Message(csound, Str("Created Jack client \"%s\" for Jack server \"%s\".\n"), clientName, serverName);
- }
- jackFramesPerTick = jack_get_buffer_size(jackClient);
- if (csoundFramesPerTick != jackFramesPerTick) {
- csound->Message(csound,
- Str("Jack buffer size %d != Csound ksmps %d, exiting...\n"),
- jackFramesPerTick,
- csoundFramesPerTick);
- csound->LongJmp(csound, 1);
- }
- jackFramesPerSecond = jack_get_sample_rate(jackClient);
- if (csoundFramesPerSecond != jackFramesPerSecond) {
- csound->Message(csound,
- Str("Jack sampling rate %d != Csound sr %d, exiting...\n"),
- jackFramesPerSecond,
- csoundFramesPerSecond);
- csound->LongJmp(csound, 1);
- }
- jackoStatesForCsoundInstances[csound] = this;
- csound->RegisterSenseEventCallback(csound, SenseEventCallback_, this);
- result = jack_set_process_callback(jackClient, JackProcessCallback_, this);
- result = jack_activate(jackClient);
- if (!result) {
- csound->Message(csound,
- Str("Activated Jack client \"%s\".\n"),
- jack_get_client_name(jackClient));
- } else {
- csound->Message(csound,
- Str("Failed to activate Jack client \"%s\": status %d.\n"),
- jack_get_client_name(jackClient),
- result);
- return;
- }
- csound->SetExternalMidiInOpenCallback(csound, midiDeviceOpen_);
- csound->SetExternalMidiReadCallback(csound, midiRead_);
- jackInitialized = true;
+ int result = 0;
+ csound = csound_;
+ csoundFramesPerTick = csound->GetKsmps(csound);
+ csoundFramesPerSecond = csound->GetSr(csound);
+ result = pthread_mutex_init(&conditionMutex, 0);
+ result = pthread_cond_init(&csoundCondition, 0);
+ result = pthread_cond_init(&closeCondition, 0);
+ // Create a thread to run the close routine. It will immediately
+ // block until it is signaled.
+ result = pthread_create(&closeThread, 0, &JackoState::closeRoutine_, this);
+ std::memset(&jack_position, 0, sizeof(jack_position_t));
+ jack_options_t jack_options = (jack_options_t) (JackServerName |
+ JackNoStartServer |
+ JackUseExactName);
+ jack_status_t status = jack_status_t(0);
+ jackClient = jack_client_open(clientName,
+ jack_options,
+ &status,
+ serverName);
+ if (!jackClient) {
+ csound->Message(csound, Str("Could not create Jack client \"%s\" -- "
+ "is Jack server \"%s\" running? Status: %d\n"),
+ clientName,
+ serverName,
+ status);
+ csound->LongJmp(csound, 1);
+ } else {
+ csound->Message(csound,
+ Str("Created Jack client \"%s\" for Jack server \"%s\".\n"),
+ clientName, serverName);
+ }
+ jackFramesPerTick = jack_get_buffer_size(jackClient);
+ if (csoundFramesPerTick != jackFramesPerTick) {
+ csound->Message(csound,
+ Str("Jack buffer size %d != Csound ksmps %d, exiting...\n"),
+ jackFramesPerTick,
+ csoundFramesPerTick);
+ csound->LongJmp(csound, 1);
+ }
+ jackFramesPerSecond = jack_get_sample_rate(jackClient);
+ if (csoundFramesPerSecond != jackFramesPerSecond) {
+ csound->Message(csound,
+ Str("Jack sampling rate %d != Csound sr %d, exiting...\n"),
+ jackFramesPerSecond,
+ csoundFramesPerSecond);
+ csound->LongJmp(csound, 1);
+ }
+ jackoStatesForCsoundInstances[csound] = this;
+ csound->RegisterSenseEventCallback(csound, SenseEventCallback_, this);
+ result = jack_set_process_callback(jackClient, JackProcessCallback_, this);
+ result = jack_activate(jackClient);
+ if (!result) {
+ csound->Message(csound,
+ Str("Activated Jack client \"%s\".\n"),
+ jack_get_client_name(jackClient));
+ } else {
+ csound->Message(csound,
+ Str("Failed to activate Jack client \"%s\": status %d.\n"),
+ jack_get_client_name(jackClient),
+ result);
+ return;
+ }
+ csound->SetExternalMidiInOpenCallback(csound, midiDeviceOpen_);
+ csound->SetExternalMidiReadCallback(csound, midiRead_);
+ jackInitialized = true;
}
~JackoState()
{
- int result = 0;
+ //int result = 0; // This does NOTHING!
}
int close()
{
- csound->Message(csound, Str("BEGAN JackoState::close()...\n"));
- int result = OK;
- // Try not to do thread related operations more than once...
- if (jackInitialized) {
- jackInitialized = false;
- jackActive = false;
- result = jack_deactivate(jackClient);
- for (std::map<std::string, jack_port_t *>::iterator it = audioInPorts.begin();
- it != audioInPorts.end();
- ++it) {
- result = jack_port_unregister(jackClient, it->second);
- }
- for (std::map<std::string, jack_port_t *>::iterator it = audioOutPorts.begin();
- it != audioOutPorts.end();
- ++it) {
- result = jack_port_unregister(jackClient, it->second);
- }
- for (std::map<std::string, jack_port_t *>::iterator it = midiInPorts.begin();
- it != midiInPorts.end();
- ++it) {
- result = jack_port_unregister(jackClient, it->second);
- }
- for (std::map<std::string, jack_port_t *>::iterator it = midiOutPorts.begin();
- it != midiOutPorts.end();
- ++it) {
- result = jack_port_unregister(jackClient, it->second);
+ csound->Message(csound, Str("BEGAN JackoState::close()...\n"));
+ int result = OK;
+ // Try not to do thread related operations more than once...
+ if (jackInitialized) {
+ jackInitialized = false;
+ jackActive = false;
+ result = jack_deactivate(jackClient);
+ for (std::map<std::string, jack_port_t *>
+ ::iterator it = audioInPorts.begin();
+ it != audioInPorts.end();
+ ++it) {
+ result = jack_port_unregister(jackClient, it->second);
+ }
+ for (std::map<std::string, jack_port_t *>
+ ::iterator it = audioOutPorts.begin();
+ it != audioOutPorts.end();
+ ++it) {
+ result = jack_port_unregister(jackClient, it->second);
+ }
+ for (std::map<std::string, jack_port_t *>
+ ::iterator it = midiInPorts.begin();
+ it != midiInPorts.end();
+ ++it) {
+ result = jack_port_unregister(jackClient, it->second);
+ }
+ for (std::map<std::string, jack_port_t *>
+ ::iterator it = midiOutPorts.begin();
+ it != midiOutPorts.end();
+ ++it) {
+ result = jack_port_unregister(jackClient, it->second);
+ }
+ result = jack_client_close(jackClient);
+ result = pthread_cond_destroy(&csoundCondition);
+ result = pthread_cond_destroy(&closeCondition);
+ result = pthread_mutex_destroy(&conditionMutex);
+ audioOutPorts.clear();
+ audioInPorts.clear();
+ midiInPorts.clear();
+ midiOutPorts.clear();
}
- result = jack_client_close(jackClient);
- result = pthread_cond_destroy(&csoundCondition);
- result = pthread_cond_destroy(&closeCondition);
- result = pthread_mutex_destroy(&conditionMutex);
- audioOutPorts.clear();
- audioInPorts.clear();
- midiInPorts.clear();
- midiOutPorts.clear();
- }
- csound->Message(csound, Str("ENDED JackoState::close().\n"));
- return result;
+ csound->Message(csound, Str("ENDED JackoState::close().\n"));
+ return result;
}
int processJack(jack_nframes_t frames)
{
- // We must call PerformKsmps here ONLY after the original
- // Csound performance thread is waiting on its condition.
- int result = 0;
- jackFrameTime = jack_last_frame_time(jackClient);
- if (jackActive && !csoundActive) {
- // Enqueue any MIDI messages pending in input ports.
- for (std::map<std::string, jack_port_t *>::iterator it = midiInPorts.begin();
- it != midiInPorts.end();
- ++it) {
- jack_port_t *midiinport = it->second;
- void *portbuffer = jack_port_get_buffer(midiinport, jackFramesPerTick);
- if (portbuffer) {
- jack_nframes_t eventN = jack_midi_get_event_count(portbuffer);
- for (jack_nframes_t eventI = 0; eventI < eventN; ++eventI) {
- jack_midi_event_t event;
- int result = jack_midi_event_get(&event, portbuffer, eventI);
- if (result == 0) {
- for (size_t i = 0; i < event.size; ++i) {
- midiInputQueue.push_back(event.buffer[i]);
+ // We must call PerformKsmps here ONLY after the original
+ // Csound performance thread is waiting on its condition.
+ int result = 0;
+ jackFrameTime = jack_last_frame_time(jackClient);
+ if (jackActive && !csoundActive) {
+ // Enqueue any MIDI messages pending in input ports.
+ for (std::map<std::string, jack_port_t *>
+ ::iterator it = midiInPorts.begin();
+ it != midiInPorts.end();
+ ++it) {
+ jack_port_t *midiinport = it->second;
+ void *portbuffer = jack_port_get_buffer(midiinport, jackFramesPerTick);
+ if (portbuffer) {
+ jack_nframes_t eventN = jack_midi_get_event_count(portbuffer);
+ for (jack_nframes_t eventI = 0; eventI < eventN; ++eventI) {
+ jack_midi_event_t event;
+ int result = jack_midi_event_get(&event, portbuffer, eventI);
+ if (result == 0) {
+ for (size_t i = 0; i < event.size; ++i) {
+ midiInputQueue.push_back(event.buffer[i]);
+ }
}
}
}
}
+ // Clear MIDI output buffers.
+ for (std::map<std::string, jack_port_t *>
+ ::iterator it = midiOutPorts.begin();
+ it != midiOutPorts.end();
+ ++it) {
+ void *buffer = jack_port_get_buffer(it->second, jackFramesPerTick);
+ jack_midi_clear_buffer(buffer);
+ }
+ result = csound->PerformKsmps(csound);
+ // We break here when the Csound performance is complete,
+ // and signal the original Csound performance thread to continue.
+ if (result && jackActive) {
+ csoundActive = true;
+ jackActive = false;
+ pthread_mutex_lock(&conditionMutex);
+ pthread_cond_signal(&csoundCondition);
+ pthread_mutex_unlock(&conditionMutex);
+ return result;
+ }
}
- // Clear MIDI output buffers.
- for (std::map<std::string, jack_port_t *>::iterator it = midiOutPorts.begin();
- it != midiOutPorts.end();
- ++it) {
- void *buffer = jack_port_get_buffer(it->second, jackFramesPerTick);
- jack_midi_clear_buffer(buffer);
+ return result;
+ }
+ int processCsound()
+ {
+ int result = 0;
+ // Here we must wait once and only once, in order to put
+ // the original Csound processing thread to sleep --
+ // but we must NOT put the Jack processing callback
+ // to sleep when it comes here!
+ if (jackActive && csoundActive) {
+ csoundActive = false;
+ // While Jack is processing, wait here.
+ // The Jack process callback will then call csoundPerformKsmps
+ // until the Csound performance is complete.
+ result = pthread_mutex_lock(&conditionMutex);
+ result = pthread_cond_wait(&csoundCondition, &conditionMutex);
+ result = pthread_mutex_unlock(&conditionMutex);
}
- result = csound->PerformKsmps(csound);
- // We break here when the Csound performance is complete,
- // and signal the original Csound performance thread to continue.
- if (result && jackActive) {
- csoundActive = true;
- jackActive = false;
- pthread_mutex_lock(&conditionMutex);
- pthread_cond_signal(&csoundCondition);
- pthread_mutex_unlock(&conditionMutex);
+ if (jackActive) {
+ return 1;
+ } else {
+ // Then, when the Csound performance is complete,
+ // we signal the close routine condition so that
+ // Jack can be shut down and cleaned up in a separate
+ // thread. Doing this inside the Jack process callback
+ // takes too long and may cause other problems.
+ result = pthread_mutex_lock(&conditionMutex);
+ result = pthread_cond_signal(&closeCondition);
+ result = pthread_mutex_unlock(&conditionMutex);
return result;
}
- }
- return result;
}
- int processCsound()
+ void *closeRoutine()
{
- int result = 0;
- // Here we must wait once and only once, in order to put
- // the original Csound processing thread to sleep --
- // but we must NOT put the Jack processing callback
- // to sleep when it comes here!
- if (jackActive && csoundActive) {
- csoundActive = false;
- // While Jack is processing, wait here.
- // The Jack process callback will then call csoundPerformKsmps
- // until the Csound performance is complete.
- result = pthread_mutex_lock(&conditionMutex);
- result = pthread_cond_wait(&csoundCondition, &conditionMutex);
- result = pthread_mutex_unlock(&conditionMutex);
- }
- if (jackActive) {
- return 1;
- } else {
- // Then, when the Csound performance is complete,
- // we signal the close routine condition so that
- // Jack can be shut down and cleaned up in a separate
- // thread. Doing this inside the Jack process callback
- // takes too long and may cause other problems.
+ int result = 0;
+ // Wait until signaled to actually shut down the Jack client.
result = pthread_mutex_lock(&conditionMutex);
- result = pthread_cond_signal(&closeCondition);
+ result = pthread_cond_wait(&closeCondition, &conditionMutex);
result = pthread_mutex_unlock(&conditionMutex);
- return result;
- }
- }
- void *closeRoutine()
- {
- int result = 0;
- // Wait until signaled to actually shut down the Jack client.
- result = pthread_mutex_lock(&conditionMutex);
- result = pthread_cond_wait(&closeCondition, &conditionMutex);
- result = pthread_mutex_unlock(&conditionMutex);
- close();
- return (void *) result;
+ close();
+ return (void *) result;
}
static void *closeRoutine_(void *userdata)
{
- return ((JackoState *)userdata)->closeRoutine();
+ return ((JackoState *)userdata)->closeRoutine();
}
void startTransport()
{
- midiInputQueue.clear();
- jack_transport_start(jackClient);
+ midiInputQueue.clear();
+ jack_transport_start(jackClient);
}
void stopTransport()
{
- jack_transport_stop(jackClient);
+ jack_transport_stop(jackClient);
}
int positionTransport(double timeSeconds)
{
- int result = OK;
- jack_position.frame_time = timeSeconds;
- midiInputQueue.clear();
- result = jack_transport_reposition(jackClient, &jack_position);
- return result;
+ int result = OK;
+ jack_position.frame_time = timeSeconds;
+ midiInputQueue.clear();
+ result = jack_transport_reposition(jackClient, &jack_position);
+ return result;
}
/**
* Return a MIDI output buffer,
@@ -736,34 +745,35 @@ struct JackoState
*/
jack_midi_data_t *getMidiOutBuffer(jack_port_t *csoundPort)
{
- jack_midi_data_t *buffer = (jack_midi_data_t *)jack_port_get_buffer(csoundPort, csoundFramesPerTick);
- return buffer;
+ jack_midi_data_t *buffer =
+ (jack_midi_data_t *)jack_port_get_buffer(csoundPort, csoundFramesPerTick);
+ return buffer;
}
};
static JackoState *getJackoState(CSOUND *csound)
{
- return jackoStatesForCsoundInstances[csound];
+ return jackoStatesForCsoundInstances[csound];
}
static int JackProcessCallback_(jack_nframes_t frames,
void *data)
{
- return ((JackoState *)data)->processJack(frames);
+ return ((JackoState *)data)->processJack(frames);
}
static void SenseEventCallback_(CSOUND * csound,
void *data)
{
- ((JackoState *)data)->processCsound();
+ ((JackoState *)data)->processCsound();
}
static int midiDeviceOpen_(CSOUND *csound,
void **userData,
const char *devName)
{
- *userData = getJackoState(csound);
- return 0;
+ *userData = getJackoState(csound);
+ return 0;
}
/**
@@ -775,17 +785,17 @@ static int midiRead_(CSOUND *csound,
unsigned char *midiData,
int midiN)
{
- JackoState *jackoState = (JackoState *)userData;
- int midiI = 0;
- while (!jackoState->midiInputQueue.empty() && midiI < midiN) {
- midiData[midiI] = jackoState->midiInputQueue.front();
- jackoState->midiInputQueue.pop_front();
- midiI++;
- }
- //if (midiI) {
- // csound->Message(csound, "midiRead_: %d bytes.\n", midiI);
- //}
- return midiI;
+ JackoState *jackoState = (JackoState *)userData;
+ int midiI = 0;
+ while (!jackoState->midiInputQueue.empty() && midiI < midiN) {
+ midiData[midiI] = jackoState->midiInputQueue.front();
+ jackoState->midiInputQueue.pop_front();
+ midiI++;
+ }
+ //if (midiI) {
+ // csound->Message(csound, "midiRead_: %d bytes.\n", midiI);
+ //}
+ return midiI;
}
struct JackoInit : public OpcodeBase<JackoInit>
@@ -817,12 +827,13 @@ struct JackoInfo : public OpcodeBase<JackoInfo>
JackoState *jackoState;
int init(CSOUND *csound)
{
- int result = OK;
jackoState = getJackoState(csound);
log(csound, "Jack information for client: %s\n", jackoState->clientName);
log(csound, " Daemon name: %s\n", jackoState->serverName);
- log(csound, " Frames per second: %d\n", jackoState->jackFramesPerSecond);
- log(csound, " Frames per period: %d\n", jackoState->jackFramesPerTick);
+ log(csound, " Frames per second: %d\n",
+ jackoState->jackFramesPerSecond);
+ log(csound, " Frames per period: %d\n",
+ jackoState->jackFramesPerTick);
const char **ports = jack_get_ports(jackoState->jackClient, 0, 0, 0);
if (ports) {
log(csound, " Ports and connections:\n");
@@ -837,7 +848,8 @@ struct JackoInfo : public OpcodeBase<JackoInfo>
} else if ((flags & JackPortIsInput) == JackPortIsInput) {
portType = "Input ";
}
- log(csound, " %3d: %s %-25s %s\n", (i+1), portType, type, (PortName ? PortName : "(no name)"));
+ log(csound, " %3d: %s %-25s %s\n",
+ (i+1), portType, type, (PortName ? PortName : "(no name)"));
char alias1[0x100];
char alias2[0x100];
char * const aliases[2] = {alias1, alias2};
@@ -845,13 +857,16 @@ struct JackoInfo : public OpcodeBase<JackoInfo>
for (size_t aliasI = 0; aliasI < aliasN; ++aliasI) {
log(csound, " Alias: %s\n", aliases[aliasI]);
}
- const char **connections = jack_port_get_all_connections(jackoState->jackClient, port);
+ const char **connections =
+ jack_port_get_all_connections(jackoState->jackClient, port);
if (connections) {
for (size_t j = 0; connections[j]; ++j) {
if ((jack_port_flags(port) & JackPortIsOutput) == JackPortIsOutput) {
- log(csound, " Sends to: >> %s\n", connections[j]);
+ log(csound, " Sends to: >> %s\n",
+ connections[j]);
} else {
- log(csound, " Receives from: << %s\n", connections[j]);
+ log(csound, " Receives from: << %s\n",
+ connections[j]);
}
}
}
@@ -873,9 +888,12 @@ struct JackoFreewheel : public OpcodeBase<JackoFreewheel>
int freewheel = (int) *ifreewheel;
int result = jack_set_freewheel(jackoState->jackClient, freewheel);
if (result) {
- warn(csound, Str("Failed to set Jack freewheeling mode to \"%s\": error %d.\n"), (freewheel ? "on" : "off"), result);
+ warn(csound,
+ Str("Failed to set Jack freewheeling mode to \"%s\": error %d.\n"),
+ (freewheel ? "on" : "off"), result);
} else {
- log(csound, Str("Set Jack freewheeling mode to \"%s\".\n"), (freewheel ? "on" : "off"));
+ log(csound, Str("Set Jack freewheeling mode to \"%s\".\n"),
+ (freewheel ? "on" : "off"));
}
return result;
}
@@ -887,11 +905,12 @@ struct JackoOn : public OpcodeBase<JackoOn>
JackoState *jackoState;
int init(CSOUND *csound)
{
- int result = OK;
- jackoState = getJackoState(csound);
- jackoState->jackActive = (char) *jon;
- log(csound, Str("Turned Jack connections \"%s\".\n"), (jackoState->jackActive ? "on" : "off"));
- return result;
+ int result = OK;
+ jackoState = getJackoState(csound);
+ jackoState->jackActive = (char) *jon;
+ log(csound, Str("Turned Jack connections \"%s\".\n"),
+ (jackoState->jackActive ? "on" : "off"));
+ return result;
}
};
@@ -911,51 +930,56 @@ struct JackoAudioInConnect : public OpcodeBase<JackoAudioInConnect>
jack_port_t *externalPort;
int init(CSOUND *csound)
{
- int result = OK;
- jackoState = getJackoState(csound);
- clientName = jack_get_client_name(jackoState->jackClient);
- csoundPortName = csound->strarg2name(csound,
- (char *)0,
- ScsoundPortName,
- (char *)"",
- (int) csound->GetInputArgSMask(this));
- std::sprintf(csoundFullPortName, "%s:%s", clientName, csoundPortName);
- externalPortName = csound->strarg2name(csound,
- (char *) 0,
- SexternalPortName,
- (char *)"csound",
+ int result = OK;
+ jackoState = getJackoState(csound);
+ clientName = jack_get_client_name(jackoState->jackClient);
+ csoundPortName = csound->strarg2name(csound,
+ (char *)0,
+ ScsoundPortName,
+ (char *)"",
(int) csound->GetInputArgSMask(this));
- csoundPort = jack_port_by_name(jackoState->jackClient, csoundFullPortName);
- if (!csoundPort) {
- csoundPort = jack_port_register(jackoState->jackClient, csoundPortName, JACK_DEFAULT_AUDIO_TYPE, JackPortIsInput, 0);
- if (csoundPort) {
- log(csound, "Created Jack port \"%s\".\n", csoundFullPortName);
+ std::sprintf(csoundFullPortName, "%s:%s", clientName, csoundPortName);
+ externalPortName = csound->strarg2name(csound,
+ (char *) 0,
+ SexternalPortName,
+ (char *)"csound",
+ (int) csound->GetInputArgSMask(this));
+ csoundPort = jack_port_by_name(jackoState->jackClient, csoundFullPortName);
+ if (!csoundPort) {
+ csoundPort = jack_port_register(jackoState->jackClient,
+ csoundPortName, JACK_DEFAULT_AUDIO_TYPE,
+ JackPortIsInput, 0);
+ if (csoundPort) {
+ log(csound, "Created Jack port \"%s\".\n", csoundFullPortName);
+ } else {
+ warn(csound, Str("Could not create Jack port \"%s\".\n"),
+ csoundFullPortName);
+ }
+ }
+ externalPort = jack_port_by_name(jackoState->jackClient, externalPortName);
+ result = jack_connect(jackoState->jackClient, jack_port_name(externalPort),
+ jack_port_name(csoundPort));
+ if (result == EEXIST) {
+ log(csound,
+ "Connection from \"%s\" to \"%s\" already exists.\n",
+ externalPortName,
+ csoundFullPortName);
+ } else if (result) {
+ warn(csound,
+ Str("Could not create Jack connection from \"%s\" to \"%s\": "
+ "status %d.\n"),
+ externalPortName,
+ csoundFullPortName,
+ result);
+ return result;
} else {
- warn(csound, Str("Could not create Jack port \"%s\".\n"), csoundFullPortName);
+ log(csound,
+ "Created Jack connection from \"%s\" to \"%s\".\n",
+ externalPortName,
+ csoundFullPortName);
}
- }
- externalPort = jack_port_by_name(jackoState->jackClient, externalPortName);
- result = jack_connect(jackoState->jackClient, jack_port_name(externalPort), jack_port_name(csoundPort));
- if (result == EEXIST) {
- log(csound,
- "Connection from \"%s\" to \"%s\" already exists.\n",
- externalPortName,
- csoundFullPortName);
- } else if (result) {
- warn(csound,
- Str("Could not create Jack connection from \"%s\" to \"%s\": status %d.\n"),
- externalPortName,
- csoundFullPortName,
- result);
+ jackoState->audioInPorts[csoundPortName] = csoundPort;
return result;
- } else {
- log(csound,
- "Created Jack connection from \"%s\" to \"%s\".\n",
- externalPortName,
- csoundFullPortName);
- }
- jackoState->audioInPorts[csoundPortName] = csoundPort;
- return result;
}
};
@@ -972,24 +996,26 @@ struct JackoAudioIn : public OpcodeBase<JackoAudioIn>
jack_nframes_t csoundFramesPerTick;
int init(CSOUND *csound)
{
- int result = OK;
- jackoState = getJackoState(csound);
- csoundFramesPerTick = jackoState->csoundFramesPerTick;
- csoundPortName = csound->strarg2name(csound,
- (char *)0,
- ScsoundPortName,
- (char *)"",
- (int) csound->GetInputArgSMask(this));
- csoundPort = jackoState->audioInPorts[csoundPortName];
- return result;
+ int result = OK;
+ jackoState = getJackoState(csound);
+ csoundFramesPerTick = jackoState->csoundFramesPerTick;
+ csoundPortName = csound->strarg2name(csound,
+ (char *)0,
+ ScsoundPortName,
+ (char *)"",
+ (int) csound->GetInputArgSMask(this));
+ csoundPort = jackoState->audioInPorts[csoundPortName];
+ return result;
}
int audio(CSOUND *csound)
{
- jack_default_audio_sample_t *buffer = (jack_default_audio_sample_t *)jack_port_get_buffer(csoundPort, csoundFramesPerTick);
- for (size_t frame = 0; frame < csoundFramesPerTick; ++frame) {
- asignal[frame] = buffer[frame];
- }
- return OK;
+ jack_default_audio_sample_t *buffer =
+ (jack_default_audio_sample_t *)jack_port_get_buffer(csoundPort,
+ csoundFramesPerTick);
+ for (size_t frame = 0; frame < csoundFramesPerTick; ++frame) {
+ asignal[frame] = buffer[frame];
+ }
+ return OK;
}
};
@@ -1010,52 +1036,58 @@ struct JackoAudioOutConnect : public OpcodeBase<JackoAudioOutConnect>
jack_port_t *externalPort;
int init(CSOUND *csound)
{
- int result = OK;
- frames = csound->GetKsmps(csound);
- jackoState = getJackoState(csound);
- clientName = jack_get_client_name(jackoState->jackClient);
- csoundPortName = csound->strarg2name(csound,
- (char *)0,
- ScsoundPortName,
- (char *)"",
- (int) csound->GetInputArgSMask(this));
- std::sprintf(csoundFullPortName, "%s:%s", clientName, csoundPortName);
- externalPortName = csound->strarg2name(csound,
- (char *) 0,
- SexternalPortName,
- (char *)"csound",
- (int) csound->GetInputArgSMask(this));
- csoundPort = jack_port_by_name(jackoState->jackClient, csoundFullPortName);
- if (!csoundPort) {
- csoundPort = jack_port_register(jackoState->jackClient, csoundPortName, JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0);
- if (csoundPort) {
- log(csound, "Created Jack port \"%s\".\n", csoundFullPortName);
+ int result = OK;
+ frames = csound->GetKsmps(csound);
+ jackoState = getJackoState(csound);
+ clientName = jack_get_client_name(jackoState->jackClient);
+ csoundPortName = csound->strarg2name(csound,
+ (char *)0,
+ ScsoundPortName,
+ (char *)"",
+ (int) csound->GetInputArgSMask(this));
+ std::sprintf(csoundFullPortName, "%s:%s", clientName, csoundPortName);
+ externalPortName = csound->strarg2name(csound,
+ (char *) 0,
+ SexternalPortName,
+ (char *)"csound",
+ (int) csound->GetInputArgSMask(this));
+ csoundPort = jack_port_by_name(jackoState->jackClient, csoundFullPortName);
+ if (!csoundPort) {
+ csoundPort = jack_port_register(jackoState->jackClient,
+ csoundPortName, JACK_DEFAULT_AUDIO_TYPE,
+ JackPortIsOutput, 0);
+ if (csoundPort) {
+ log(csound, "Created Jack port \"%s\".\n", csoundFullPortName);
+ } else {
+ warn(csound, Str("Could not create Jack port \"%s\".\n"),
+ csoundFullPortName);
+ }
+ }
+ externalPort = jack_port_by_name(jackoState->jackClient, externalPortName);
+ result = jack_connect(jackoState->jackClient,
+ jack_port_name(csoundPort),
+ jack_port_name(externalPort));
+ if (result == EEXIST) {
+ log(csound,
+ "Connection from \"%s\" to \"%s\" already exists.\n",
+ csoundFullPortName,
+ externalPortName);
+ } else if (result) {
+ warn(csound,
+ Str("Could not create Jack connection from \"%s\" to \"%s\": "
+ "status %d.\n"),
+ csoundFullPortName,
+ externalPortName,
+ result);
+ return result;
} else {
- warn(csound, Str("Could not create Jack port \"%s\".\n"), csoundFullPortName);
+ log(csound,
+ "Created Jack connection from \"%s\" to \"%s\".\n",
+ csoundFullPortName,
+ externalPortName);
}
- }
- externalPort = jack_port_by_name(jackoState->jackClient, externalPortName);
- result = jack_connect(jackoState->jackClient, jack_port_name(csoundPort), jack_port_name(externalPort));
- if (result == EEXIST) {
- log(csound,
- "Connection from \"%s\" to \"%s\" already exists.\n",
- csoundFullPortName,
- externalPortName);
- } else if (result) {
- warn(csound,
- Str("Could not create Jack connection from \"%s\" to \"%s\": status %d.\n"),
- csoundFullPortName,
- externalPortName,
- result);
+ jackoState->audioOutPorts[csoundPortName] = csoundPort;
return result;
- } else {
- log(csound,
- "Created Jack connection from \"%s\" to \"%s\".\n",
- csoundFullPortName,
- externalPortName);
- }
- jackoState->audioOutPorts[csoundPortName] = csoundPort;
- return result;
}
};
@@ -1072,24 +1104,26 @@ struct JackoAudioOut : public OpcodeBase<JackoAudioOut>
jack_nframes_t csoundFramesPerTick;
int init(CSOUND *csound)
{
- int result = OK;
- jackoState = getJackoState(csound);
- csoundFramesPerTick = jackoState->csoundFramesPerTick;
- csoundPortName = csound->strarg2name(csound,
- (char *)0,
- ScsoundPortName,
- (char *)"",
- (int) csound->GetInputArgSMask(this));
- csoundPort = jackoState->audioOutPorts[csoundPortName];
- return result;
+ int result = OK;
+ jackoState = getJackoState(csound);
+ csoundFramesPerTick = jackoState->csoundFramesPerTick;
+ csoundPortName = csound->strarg2name(csound,
+ (char *)0,
+ ScsoundPortName,
+ (char *)"",
+ (int) csound->GetInputArgSMask(this));
+ csoundPort = jackoState->audioOutPorts[csoundPortName];
+ return result;
}
int audio(CSOUND *csound)
{
- jack_default_audio_sample_t *buffer = (jack_default_audio_sample_t *)jack_port_get_buffer(csoundPort, csoundFramesPerTick);
- for (size_t frame = 0; frame < csoundFramesPerTick; ++frame) {
- buffer[frame] = asignal[frame];
- }
- return OK;
+ jack_default_audio_sample_t *buffer =
+ (jack_default_audio_sample_t *)jack_port_get_buffer(csoundPort,
+ csoundFramesPerTick);
+ for (size_t frame = 0; frame < csoundFramesPerTick; ++frame) {
+ buffer[frame] = asignal[frame];
+ }
+ return OK;
}
};
@@ -1110,52 +1144,57 @@ struct JackoMidiInConnect : public OpcodeBase<JackoMidiInConnect>
jack_port_t *externalPort;
int init(CSOUND *csound)
{
- int result = OK;
- frames = csound->GetKsmps(csound);
- jackoState = getJackoState(csound);
- clientName = jack_get_client_name(jackoState->jackClient);
- csoundPortName = csound->strarg2name(csound,
- (char *)0,
- ScsoundPortName,
- (char *)"",
- (int) csound->GetInputArgSMask(this));
- std::sprintf(csoundFullPortName, "%s:%s", clientName, csoundPortName);
- externalPortName = csound->strarg2name(csound,
- (char *) 0,
- SexternalPortName,
- (char *)"csound",
- (int) csound->GetInputArgSMask(this));
- csoundPort = jack_port_by_name(jackoState->jackClient, csoundFullPortName);
- if (!csoundPort) {
- csoundPort = jack_port_register(jackoState->jackClient, csoundPortName, JACK_DEFAULT_MIDI_TYPE, JackPortIsInput, 0);
- if (csoundPort) {
- log(csound, "Created Jack port \"%s\".\n", csoundFullPortName);
+ int result = OK;
+ frames = csound->GetKsmps(csound);
+ jackoState = getJackoState(csound);
+ clientName = jack_get_client_name(jackoState->jackClient);
+ csoundPortName = csound->strarg2name(csound,
+ (char *)0,
+ ScsoundPortName,
+ (char *)"",
+ (int) csound->GetInputArgSMask(this));
+ std::sprintf(csoundFullPortName, "%s:%s", clientName, csoundPortName);
+ externalPortName = csound->strarg2name(csound,
+ (char *) 0,
+ SexternalPortName,
+ (char *)"csound",
+ (int) csound->GetInputArgSMask(this));
+ csoundPort = jack_port_by_name(jackoState->jackClient, csoundFullPortName);
+ if (!csoundPort) {
+ csoundPort = jack_port_register(jackoState->jackClient, csoundPortName,
+ JACK_DEFAULT_MIDI_TYPE, JackPortIsInput, 0);
+ if (csoundPort) {
+ log(csound, "Created Jack port \"%s\".\n", csoundFullPortName);
+ } else {
+ warn(csound, Str("Could not create Jack port \"%s\".\n"),
+ csoundFullPortName);
+ }
+ }
+ externalPort = jack_port_by_name(jackoState->jackClient, externalPortName);
+ result = jack_connect(jackoState->jackClient,
+ jack_port_name(externalPort),
+ jack_port_name(csoundPort));
+ if (result == EEXIST) {
+ log(csound,
+ "Connection from \"%s\" to \"%s\" already exists.\n",
+ externalPortName,
+ csoundFullPortName);
+ } else if (result) {
+ warn(csound,
+ Str("Could not create Jack connection from \"%s\" to \"%s\": "
+ "status %d.\n"),
+ externalPortName,
+ csoundFullPortName,
+ result);
+ return result;
} else {
- warn(csound, Str("Could not create Jack port \"%s\".\n"), csoundFullPortName);
+ log(csound,
+ "Created Jack connection from \"%s\" to \"%s\".\n",
+ externalPortName,
+ csoundFullPortName);
}
- }
- externalPort = jack_port_by_name(jackoState->jackClient, externalPortName);
- result = jack_connect(jackoState->jackClient, jack_port_name(externalPort), jack_port_name(csoundPort));
- if (result == EEXIST) {
- log(csound,
- "Connection from \"%s\" to \"%s\" already exists.\n",
- externalPortName,
- csoundFullPortName);
- } else if (result) {
- warn(csound,
- Str("Could not create Jack connection from \"%s\" to \"%s\": status %d.\n"),
- externalPortName,
- csoundFullPortName,
- result);
+ jackoState->midiInPorts[csoundPortName] = csoundPort;
return result;
- } else {
- log(csound,
- "Created Jack connection from \"%s\" to \"%s\".\n",
- externalPortName,
- csoundFullPortName);
- }
- jackoState->midiInPorts[csoundPortName] = csoundPort;
- return result;
}
};
@@ -1176,52 +1215,57 @@ struct JackoMidiOutConnect : public OpcodeBase<JackoMidiOutConnect>
jack_port_t *externalPort;
int init(CSOUND *csound)
{
- int result = OK;
- frames = csound->GetKsmps(csound);
- jackoState = getJackoState(csound);
- clientName = jack_get_client_name(jackoState->jackClient);
- csoundPortName = csound->strarg2name(csound,
- (char *)0,
- ScsoundPortName,
- (char *)"",
- (int) csound->GetInputArgSMask(this));
- std::sprintf(csoundFullPortName, "%s:%s", clientName, csoundPortName);
- externalPortName = csound->strarg2name(csound,
- (char *) 0,
- SexternalPortName,
- (char *)"csound",
- (int) csound->GetInputArgSMask(this));
- csoundPort = jack_port_by_name(jackoState->jackClient, csoundFullPortName);
- if (!csoundPort) {
- csoundPort = jack_port_register(jackoState->jackClient, csoundPortName, JACK_DEFAULT_MIDI_TYPE, JackPortIsOutput, 0);
- if (csoundPort) {
- log(csound, "Created Jack port \"%s\".\n", csoundFullPortName);
+ int result = OK;
+ frames = csound->GetKsmps(csound);
+ jackoState = getJackoState(csound);
+ clientName = jack_get_client_name(jackoState->jackClient);
+ csoundPortName = csound->strarg2name(csound,
+ (char *)0,
+ ScsoundPortName,
+ (char *)"",
+ (int) csound->GetInputArgSMask(this));
+ std::sprintf(csoundFullPortName, "%s:%s", clientName, csoundPortName);
+ externalPortName = csound->strarg2name(csound,
+ (char *) 0,
+ SexternalPortName,
+ (char *)"csound",
+ (int) csound->GetInputArgSMask(this));
+ csoundPort = jack_port_by_name(jackoState->jackClient, csoundFullPortName);
+ if (!csoundPort) {
+ csoundPort = jack_port_register(jackoState->jackClient,
+ csoundPortName, JACK_DEFAULT_MIDI_TYPE,
+ JackPortIsOutput, 0);
+ if (csoundPort) {
+ log(csound, "Created Jack port \"%s\".\n", csoundFullPortName);
+ } else {
+ warn(csound, Str("Could not create Jack port \"%s\".\n"),
+ csoundFullPortName);
+ }
+ }
+ externalPort = jack_port_by_name(jackoState->jackClient, externalPortName);
+ result = jack_connect(jackoState->jackClient, jack_port_name(csoundPort),
+ jack_port_name(externalPort));
+ if (result == EEXIST) {
+ log(csound,
+ "Connection from \"%s\" to \"%s\" already exists.\n",
+ csoundFullPortName,
+ externalPortName);
+ } else if (result) {
+ warn(csound,
+ Str("Could not create Jack connection from \"%s\" to \"%s\": "
+ "status %d.\n"),
+ csoundFullPortName,
+ externalPortName,
+ result);
+ return result;
} else {
- warn(csound, Str("Could not create Jack port \"%s\".\n"), csoundFullPortName);
+ log(csound,
+ "Created Jack connection from \"%s\" to \"%s\".\n",
+ csoundFullPortName,
+ externalPortName);
}
- }
- externalPort = jack_port_by_name(jackoState->jackClient, externalPortName);
- result = jack_connect(jackoState->jackClient, jack_port_name(csoundPort), jack_port_name(externalPort));
- if (result == EEXIST) {
- log(csound,
- "Connection from \"%s\" to \"%s\" already exists.\n",
- csoundFullPortName,
- externalPortName);
- } else if (result) {
- warn(csound,
- Str("Could not create Jack connection from \"%s\" to \"%s\": status %d.\n"),
- csoundFullPortName,
- externalPortName,
- result);
+ jackoState->midiOutPorts[csoundPortName] = csoundPort;
return result;
- } else {
- log(csound,
- "Created Jack connection from \"%s\" to \"%s\".\n",
- csoundFullPortName,
- externalPortName);
- }
- jackoState->midiOutPorts[csoundPortName] = csoundPort;
- return result;
}
};
@@ -1250,54 +1294,54 @@ struct JackoMidiOut : public OpcodeBase<JackoMidiOut>
jack_midi_data_t *buffer;
int init(CSOUND *csound)
{
- int result = OK;
- jackoState = getJackoState(csound);
- csoundFramesPerTick = jackoState->csoundFramesPerTick;
- csoundPortName = csound->strarg2name(csound,
- (char *)0,
- ScsoundPortName,
- (char *)"",
- (int) csound->GetInputArgSMask(this));
- csoundPort = jackoState->midiOutPorts[csoundPortName];
- priorstatus = -1;
- priorchannel = -1;
- priordata1 = -1;
- priordata2 = -1;
- return result;
+ int result = OK;
+ jackoState = getJackoState(csound);
+ csoundFramesPerTick = jackoState->csoundFramesPerTick;
+ csoundPortName = csound->strarg2name(csound,
+ (char *)0,
+ ScsoundPortName,
+ (char *)"",
+ (int) csound->GetInputArgSMask(this));
+ csoundPort = jackoState->midiOutPorts[csoundPortName];
+ priorstatus = -1;
+ priorchannel = -1;
+ priordata1 = -1;
+ priordata2 = -1;
+ return result;
}
int kontrol(CSOUND *csound)
{
- int result = OK;
- status = *kstatus;
- channel = *kchannel;
- data1 = *kdata1;
- data2 = *kdata2;
- if (status != priorstatus ||
- channel != priorchannel ||
- data1 != priordata1 ||
- data2 != priordata2) {
- size_t dataSize = 0;
- if (data2 == -1) {
- dataSize = 2;
- } else {
- dataSize = 3;
- }
- buffer = jackoState->getMidiOutBuffer(csoundPort);
- jack_midi_data_t *data = jack_midi_event_reserve(buffer, 0, dataSize);
- data[0] = (status + channel);
- data[1] = data1;
- if (data2 != -1) {
- data[2] = data2;
- //log(csound, "MIDI: %3d %3d %3d\n", data[0], data[1], data[2]);
- } else {
- //log(csound, "MIDI: %3d %3d\n", data[0], data[1]);
+ int result = OK;
+ status = *kstatus;
+ channel = *kchannel;
+ data1 = *kdata1;
+ data2 = *kdata2;
+ if (status != priorstatus ||
+ channel != priorchannel ||
+ data1 != priordata1 ||
+ data2 != priordata2) {
+ size_t dataSize = 0;
+ if (data2 == -1) {
+ dataSize = 2;
+ } else {
+ dataSize = 3;
+ }
+ buffer = jackoState->getMidiOutBuffer(csoundPort);
+ jack_midi_data_t *data = jack_midi_event_reserve(buffer, 0, dataSize);
+ data[0] = (status + channel);
+ data[1] = data1;
+ if (data2 != -1) {
+ data[2] = data2;
+ //log(csound, "MIDI: %3d %3d %3d\n", data[0], data[1], data[2]);
+ } else {
+ //log(csound, "MIDI: %3d %3d\n", data[0], data[1]);
+ }
}
- }
- priorstatus = status;
- priorchannel = channel;
- priordata1 = data1;
- priordata2 = data2;
- return result;
+ priorstatus = status;
+ priorchannel = channel;
+ priordata1 = data1;
+ priordata2 = data2;
+ return result;
}
};
@@ -1321,37 +1365,37 @@ struct JackoNoteOut : public OpcodeNoteoffBase<JackoNoteOut>
jack_midi_data_t *buffer;
int init(CSOUND *csound)
{
- int result = OK;
- jackoState = getJackoState(csound);
- csoundFramesPerTick = jackoState->csoundFramesPerTick;
- csoundPortName = csound->strarg2name(csound,
- (char *)0,
- ScsoundPortName,
- (char *)"",
- (int) csound->GetInputArgSMask(this));
- csoundPort = jackoState->midiOutPorts[csoundPortName];
- status = 144;
- channel = (char) *ichannel;
- key = (char) *ikey;
- velocity = (char) *ivelocity;
- buffer = jackoState->getMidiOutBuffer(csoundPort);
- jack_midi_data_t *data = jack_midi_event_reserve(buffer, 0, 3);
- data[0] = (status + channel);
- data[1] = key;
- data[2] = velocity;
- //log(csound, "noteon: %3d %3d %3d\n", data[0], data[1], data[2]);
- return result;
+ int result = OK;
+ jackoState = getJackoState(csound);
+ csoundFramesPerTick = jackoState->csoundFramesPerTick;
+ csoundPortName = csound->strarg2name(csound,
+ (char *)0,
+ ScsoundPortName,
+ (char *)"",
+ (int) csound->GetInputArgSMask(this));
+ csoundPort = jackoState->midiOutPorts[csoundPortName];
+ status = 144;
+ channel = (char) *ichannel;
+ key = (char) *ikey;
+ velocity = (char) *ivelocity;
+ buffer = jackoState->getMidiOutBuffer(csoundPort);
+ jack_midi_data_t *data = jack_midi_event_reserve(buffer, 0, 3);
+ data[0] = (status + channel);
+ data[1] = key;
+ data[2] = velocity;
+ //log(csound, "noteon: %3d %3d %3d\n", data[0], data[1], data[2]);
+ return result;
}
int noteoff(CSOUND *csound)
{
- int result = OK;
- buffer = jackoState->getMidiOutBuffer(csoundPort);
- jack_midi_data_t *data = jack_midi_event_reserve(buffer, 0, 3);
- data[0] = (status + channel);
- data[1] = key;
- data[2] = 0;
- //log(csound, "noteoff: %3d %3d %3d\n", data[0], data[1], data[2]);
- return result;
+ int result = OK;
+ buffer = jackoState->getMidiOutBuffer(csoundPort);
+ jack_midi_data_t *data = jack_midi_event_reserve(buffer, 0, 3);
+ data[0] = (status + channel);
+ data[1] = key;
+ data[2] = 0;
+ //log(csound, "noteoff: %3d %3d %3d\n", data[0], data[1], data[2]);
+ return result;
}
};
@@ -1369,46 +1413,47 @@ struct JackoTransport : public OpcodeBase<JackoTransport>
double priorPositionSeconds;
int init(CSOUND *csound)
{
- int result = OK;
- jackoState = getJackoState(csound);
- priorCommand = -1;
- priorPositionSeconds = 0.0;
- return kontrol(csound);
+ jackoState = getJackoState(csound);
+ priorCommand = -1;
+ priorPositionSeconds = 0.0;
+ return kontrol(csound);
}
int kontrol(CSOUND *csound)
{
- int result = OK;
- command = int(*kcommand);
- positionSeconds = double(*Oposition);
- if (command) {
- if (command != priorCommand) {
- priorCommand = command;
- switch(command) {
- case 1:
- result = jackoState->positionTransport(0.0);
- jackoState->startTransport();
- log(csound, "Started Jack transport.\n");
- break;
- case 2:
- jackoState->stopTransport();
- log(csound, "Stopped Jack transport.\n");
- break;
- case 3:
- if (positionSeconds != priorPositionSeconds) {
- priorPositionSeconds = positionSeconds;
- result = jackoState->positionTransport(positionSeconds);
- jackoState->startTransport();
- if (result) {
- log(csound, "Failed to start Jack transport at %f seconds with result: %d\n", positionSeconds, result);
- } else {
- log(csound, "Started Jack transport at %f seconds.\n", positionSeconds);
- }
- }
- break;
- };
+ int result = OK;
+ command = int(*kcommand);
+ positionSeconds = double(*Oposition);
+ if (command) {
+ if (command != priorCommand) {
+ priorCommand = command;
+ switch(command) {
+ case 1:
+ result = jackoState->positionTransport(0.0);
+ jackoState->startTransport();
+ log(csound, "Started Jack transport.\n");
+ break;
+ case 2:
+ jackoState->stopTransport();
+ log(csound, "Stopped Jack transport.\n");
+ break;
+ case 3:
+ if (positionSeconds != priorPositionSeconds) {
+ priorPositionSeconds = positionSeconds;
+ result = jackoState->positionTransport(positionSeconds);
+ jackoState->startTransport();
+ if (result) {
+ log(csound, "Failed to start Jack transport at %f seconds with"
+ " result: %d\n", positionSeconds, result);
+ } else {
+ log(csound, "Started Jack transport at %f seconds.\n",
+ positionSeconds);
+ }
+ }
+ break;
+ };
+ }
}
- }
- return result;
+ return result;
}
};
@@ -1560,14 +1605,14 @@ extern "C"
int err = 0;
while (ep->opname != 0) {
err |= csound->AppendOpcode(csound,
- ep->opname,
- ep->dsblksiz,
- ep->thread,
- ep->outypes,
- ep->intypes,
- (int (*)(CSOUND *, void*)) ep->iopadr,
- (int (*)(CSOUND *, void*)) ep->kopadr,
- (int (*)(CSOUND *, void*)) ep->aopadr);
+ ep->opname,
+ ep->dsblksiz,
+ ep->thread,
+ ep->outypes,
+ ep->intypes,
+ (int (*)(CSOUND *, void*)) ep->iopadr,
+ (int (*)(CSOUND *, void*)) ep->kopadr,
+ (int (*)(CSOUND *, void*)) ep->aopadr);
ep++;
}
return err;
@@ -1580,8 +1625,8 @@ extern "C"
{
std::map<CSOUND *, JackoState *>::iterator it = jackoStatesForCsoundInstances.find(csound);
if (it != jackoStatesForCsoundInstances.end()) {
- //delete it->second;
- jackoStatesForCsoundInstances.erase(it);
+ //delete it->second;
+ jackoStatesForCsoundInstances.erase(it);
}
//csound->Message(csound, "jacko: CsoundModuleDestroy(%p)\n", csound);
}
diff --git a/Opcodes/loscilx.c b/Opcodes/loscilx.c
index c33af5e..187aca1 100644
--- a/Opcodes/loscilx.c
+++ b/Opcodes/loscilx.c
@@ -21,7 +21,9 @@
02111-1307 USA
*/
-#include "csdl.h"
+// #include "csdl.h"
+#include "csoundCore.h"
+#include "interlocks.h"
#include "soundio.h"
typedef struct SNDLOAD_OPCODE_ {
@@ -667,12 +669,12 @@ static int loscilx_opcode_perf(CSOUND *csound, LOSCILX_OPCODE *p)
/* ------------------------------------------------------------------------ */
-static OENTRY localops[] = {
+static OENTRY loscilx_localops[] = {
{ "sndload", sizeof(SNDLOAD_OPCODE), 1, "", "Tooooojjoo",
(SUBR) sndload_opcode_init, (SUBR) NULL, (SUBR) NULL },
- { "loscilx", sizeof(LOSCILX_OPCODE), 5, "mmmmmmmmmmmmmmmm", "xkToojjoo",
+ { "loscilx", sizeof(LOSCILX_OPCODE), TR|5, "mmmmmmmmmmmmmmmm", "xkToojjoo",
(SUBR) loscilx_opcode_init, (SUBR) NULL, (SUBR) loscilx_opcode_perf }
};
-LINKAGE
+LINKAGE1(loscilx_localops)
diff --git a/Opcodes/mandolin.c b/Opcodes/mandolin.c
index 706aeeb..97d032e 100644
--- a/Opcodes/mandolin.c
+++ b/Opcodes/mandolin.c
@@ -39,7 +39,8 @@
/* Technology Licensing, Stanford U. */
/********************************************/
-#include "csdl.h"
+// #include "csdl.h"
+#include "csoundCore.h"
#include "mandolin.h"
static inline int infoTick(MANDOL *p)
diff --git a/Opcodes/metro.c b/Opcodes/metro.c
index 04a973c..f22a7b8 100644
--- a/Opcodes/metro.c
+++ b/Opcodes/metro.c
@@ -251,10 +251,10 @@ static int timeseq(CSOUND *csound, TIMEDSEQ *p)
#define S(x) sizeof(x)
static OENTRY localops[] = {
- { "metro", S(METRO), 3, "k", "ko", (SUBR)metro_set, (SUBR)metro },
+ { "metro", S(METRO), 3, "k", "ko", (SUBR)metro_set, (SUBR)metro },
{ "splitrig", S(SPLIT_TRIG), 3, "", "kkiiz",
- (SUBR)split_trig_set, (SUBR)split_trig },
- { "timedseq",S(TIMEDSEQ), 3, "k", "kiz", (SUBR)timeseq_set, (SUBR)timeseq }
+ (SUBR)split_trig_set, (SUBR)split_trig },
+ { "timedseq",S(TIMEDSEQ), TR|3, "k", "kiz", (SUBR)timeseq_set, (SUBR)timeseq }
};
int metro_init_(CSOUND *csound)
diff --git a/Opcodes/minmax.c b/Opcodes/minmax.c
index 65a246b..b7e5b18 100644
--- a/Opcodes/minmax.c
+++ b/Opcodes/minmax.c
@@ -30,7 +30,9 @@
02111-1307 USA
*/
-#include "csdl.h"
+// #include "csdl.h"
+#include "csoundCore.h"
+#include "interlocks.h"
#include <math.h>
typedef struct {
@@ -289,7 +291,7 @@ static int MinAbs_krate(CSOUND *csound, MINMAX *data)
#define S(x) sizeof(x)
-static OENTRY localops[] = {
+static OENTRY minmax_localops[] = {
{"maxaccum", S(MINMAXACCUM), 4, "", "aa", NULL, NULL, (SUBR) MaxAccumulate},
{"minaccum", S(MINMAXACCUM), 4, "", "aa", NULL, NULL, (SUBR) MinAccumulate},
{"maxabsaccum", S(MINMAXACCUM), 4, "", "aa", NULL, NULL,
@@ -310,5 +312,5 @@ static OENTRY localops[] = {
{"minabs.k", S(MINMAX), 2, "k", "kz", NULL, (SUBR) MinAbs_krate, NULL}
};
-LINKAGE
+LINKAGE1(minmax_localops)
diff --git a/Opcodes/mixer.cpp b/Opcodes/mixer.cpp
index 1b68213..86c9541 100644
--- a/Opcodes/mixer.cpp
+++ b/Opcodes/mixer.cpp
@@ -1,6 +1,7 @@
#include "OpcodeBase.hpp"
#include <map>
#include <vector>
+#include "interlocks.h"
// Define ENABLE_MIXER_IDEBUG to enable i-rate debug messages.
//#define ENABLE_MIXER_IDEBUG
@@ -305,7 +306,7 @@ extern "C"
{
(char*)"MixerSetLevel",
sizeof(MixerSetLevel),
- 3,
+ CW|3,
(char*)"",
(char*)"iik",
(SUBR)&MixerSetLevel::init_,
@@ -315,7 +316,7 @@ extern "C"
{
(char*)"MixerSetLevel_i",
sizeof(MixerSetLevel),
- 1,
+ CW|1,
(char*)"",
(char*)"iii",
(SUBR)&MixerSetLevel::init_,
@@ -325,7 +326,7 @@ extern "C"
{
(char*)"MixerGetLevel",
sizeof(MixerGetLevel),
- 3,
+ CR|3,
(char*)"k",
(char*)"ii",
(SUBR)&MixerGetLevel::init_,
@@ -335,7 +336,7 @@ extern "C"
{
(char*)"MixerSend",
sizeof(MixerSend),
- 5,
+ CR|5,
(char*)"",
(char*)"aiii",
(SUBR)&MixerSend::init_,
@@ -345,7 +346,7 @@ extern "C"
{
(char*)"MixerReceive",
sizeof(MixerReceive),
- 5,
+ CW|5,
(char*)"a",
(char*)"ii",
(SUBR)&MixerReceive::init_,
diff --git a/Opcodes/modal4.c b/Opcodes/modal4.c
index bde2396..cedf057 100644
--- a/Opcodes/modal4.c
+++ b/Opcodes/modal4.c
@@ -28,12 +28,13 @@
/* wavetable, an envelope, and four reso- */
/* nances (Non-Sweeping BiQuad Filters). */
/*******************************************/
-#include "csdl.h"
+// #include "csdl.h"
+#include "csoundCore.h"
#include "modal4.h"
#include "marimba.h"
#include "vibraphn.h"
#include <math.h>
-
+#include "interlocks.h"
static int make_Modal4(CSOUND *csound,
Modal4 *m, MYFLT *ifn, MYFLT vgain, MYFLT vrate)
{
@@ -491,14 +492,14 @@ int agogobel(CSOUND *csound, VIBRAPHN *p)
#define S sizeof
-static OENTRY localops[] = {
-{ "marimba", S(MARIMBA), 5, "a", "kkiiikkiijj",
+static OENTRY modal4_localops[] = {
+{ "marimba", S(MARIMBA), TR|5, "a", "kkiiikkiijj",
(SUBR)marimbaset, NULL, (SUBR)marimba},
-{ "vibes", S(VIBRAPHN), 5, "a", "kkiiikkii",
+{ "vibes", S(VIBRAPHN), TR|5, "a", "kkiiikkii",
(SUBR)vibraphnset,NULL,(SUBR)vibraphn},
-{ "gogobel",S(VIBRAPHN), 5, "a", "kkiiikki",
+{ "gogobel",S(VIBRAPHN), TR|5, "a", "kkiiikki",
(SUBR)agogobelset,NULL, (SUBR)agogobel},
};
-LINKAGE
+LINKAGE1(modal4_localops)
diff --git a/Opcodes/modmatrix.c b/Opcodes/modmatrix.c
index b4722a8..d406650 100644
--- a/Opcodes/modmatrix.c
+++ b/Opcodes/modmatrix.c
@@ -242,9 +242,9 @@ static int modmatrix(CSOUND *csound, MODMATRIX *m)
return OK;
}
-static OENTRY localops[] = {
+static OENTRY modmatrix_localops[] = {
{
- "modmatrix", sizeof(MODMATRIX), 3,
+ "modmatrix", sizeof(MODMATRIX), TB|3,
"",
"iiiiiik",
(SUBR)modmatrix_init,
@@ -253,5 +253,5 @@ static OENTRY localops[] = {
}
};
-LINKAGE
+LINKAGE1(modmatrix_localops)
diff --git a/Opcodes/modmatrix.h b/Opcodes/modmatrix.h
index 0d700cb..4152643 100644
--- a/Opcodes/modmatrix.h
+++ b/Opcodes/modmatrix.h
@@ -17,7 +17,9 @@ License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include "csdl.h"
+//#include "csdl.h"
+#include "interlocks.h"
+#include "csoundCore.h"
typedef struct {
OPDS h;
@@ -34,7 +36,7 @@ typedef struct {
int nummod, numparm;
/* Variables for the preprocessed matrix */
int doscan, scanned;
- AUXCH aux;
+ AUXCH aux;
MYFLT *proc_mat;
int *mod_map, *parm_map;
MYFLT *remap_mod, *remap_parm;
diff --git a/Opcodes/moog1.c b/Opcodes/moog1.c
index 12989f1..1bad0ba 100644
--- a/Opcodes/moog1.c
+++ b/Opcodes/moog1.c
@@ -21,7 +21,8 @@
02111-1307 USA
*/
-#include "csdl.h"
+// #include "csdl.h"
+#include "csoundCore.h"
#include "moog1.h"
extern void make_TwoZero(TwoZero *);
diff --git a/Opcodes/mp3in.c b/Opcodes/mp3in.c
index 3a9f8dd..7a92959 100644
--- a/Opcodes/mp3in.c
+++ b/Opcodes/mp3in.c
@@ -22,7 +22,8 @@
*/
/* mp3in.c */
-#include "csdl.h"
+/* #include "csdl.h" */
+#include "csoundCore.h"
#include "mp3dec.h"
typedef struct {
@@ -35,14 +36,14 @@ typedef struct {
MYFLT *ibufsize;
/* ------------------------------------- */
mp3dec_t mpa; /* For library */
- int r; /* Result field */
- int initDone;
- int bufSize; /* in sample frames, power of two */
- int bufused;
- int64_t pos; /* type should be defined in sysdep.h */
- uint8_t *buf;
- AUXCH auxch;
- FDCH fdch;
+ int r; /* Result field */
+ int initDone;
+ int bufSize; /* in sample frames, power of two */
+ uint32_t bufused;
+ int64_t pos; /* type should be defined in sysdep.h */
+ uint8_t *buf;
+ AUXCH auxch;
+ FDCH fdch;
} MP3IN;
typedef struct {
OPDS h;
@@ -246,9 +247,9 @@ int mp3len(CSOUND *csound, MP3LEN *p)
#define S(x) sizeof(x)
-static OENTRY localops[] = {
+static OENTRY mp3in_localops[] = {
{"mp3in", S(MP3IN), 5, "aa", "Toooo", (SUBR) mp3ininit, NULL, (SUBR) mp3in},
{"mp3len", S(MP3LEN), 1, "i", "T", (SUBR) mp3len, NULL, NULL}
};
-LINKAGE
+LINKAGE1(mp3in_localops)
diff --git a/Opcodes/mutexops.cpp b/Opcodes/mutexops.cpp
index 3793e45..e610015 100644
--- a/Opcodes/mutexops.cpp
+++ b/Opcodes/mutexops.cpp
@@ -94,7 +94,7 @@ static int mutexUnlock(CSOUND *csound, OPCODE_MUTEX *p)
#define S(x) sizeof(x)
-static OENTRY localops[] = {
+OENTRY mutex_localops[] = {
{ (char*)"mutex_lock", S(OPCODE_MUTEX), 2, (char*)"", (char*)"i",
NULL, (SUBR)mutexLock, NULL },
{ (char*)"mutex_unlock", S(OPCODE_MUTEX), 2, (char*)"", (char*)"i",
@@ -106,4 +106,4 @@ static OENTRY localops[] = {
};
-LINKAGE
+LINKAGE1(mutex_localops)
diff --git a/Opcodes/ogg.c b/Opcodes/ogg.c
index 2e48852..568f407 100644
--- a/Opcodes/ogg.c
+++ b/Opcodes/ogg.c
@@ -155,9 +155,9 @@ int oggread_perf (CSOUND *csound, OGGREAD * p)
#define S(x) sizeof(x)
-static OENTRY localops[] = {
+static OENTRY ogg_localops[] = {
{ "oggread", S(OGGREAD), 5, "mm", "To",
(SUBR) oggread_init, (SUBR) NULL, (SUBR) oggread_perf }
};
-LINKAGE
+LINKAGE1(ogg_localops)
diff --git a/Opcodes/oggplay.c b/Opcodes/oggplay.c
index 59c1fe9..177c16c 100644
--- a/Opcodes/oggplay.c
+++ b/Opcodes/oggplay.c
@@ -140,9 +140,9 @@ int oggplay_perf (CSOUND *csound, OGGPLAY * p)
#define S(x) sizeof(x)
-static OENTRY localops[] = {
+static OENTRY oggplay_localops[] = {
{ "oggplay", S(OGGPLAY), 5, "mm", "To",
(SUBR) oggplay_init, (SUBR) NULL, (SUBR) oggplay_perf }
};
-LINKAGE
+LINKAGE1(oggplay_localops)
diff --git a/Opcodes/oscbnk.c b/Opcodes/oscbnk.c
index 1b34bc5..7c59a94 100644
--- a/Opcodes/oscbnk.c
+++ b/Opcodes/oscbnk.c
@@ -2450,11 +2450,11 @@ static int rbjeq(CSOUND *csound, RBJEQ *p)
/* ------------------------------------------------------------------------- */
static const OENTRY localops[] = {
- { "oscbnk", sizeof(OSCBNK), 5, "a", "kkkkiikkkkikkkkkkikooooooo",
+ { "oscbnk", sizeof(OSCBNK), TR|5, "a", "kkkkiikkkkikkkkkkikooooooo",
(SUBR) oscbnkset, (SUBR) NULL, (SUBR) oscbnk },
- { "grain2", sizeof(GRAIN2), 5, "a", "kkkikiooo",
+ { "grain2", sizeof(GRAIN2), TR|5, "a", "kkkikiooo",
(SUBR) grain2set, (SUBR) NULL, (SUBR) grain2 },
- { "grain3", sizeof(GRAIN3), 5, "a", "kkkkkkikikkoo",
+ { "grain3", sizeof(GRAIN3), TR|5, "a", "kkkkkkikikkoo",
(SUBR) grain3set, (SUBR) NULL, (SUBR) grain3 },
{ "rnd31", 0xFFFF, 0, NULL, NULL,
(SUBR) NULL, (SUBR) NULL, (SUBR) NULL },
@@ -2464,7 +2464,7 @@ static const OENTRY localops[] = {
(SUBR) rnd31set, (SUBR) rnd31k, (SUBR) NULL },
{ "rnd31.a", sizeof(RND31), 5, "a", "kko",
(SUBR) rnd31set, (SUBR) NULL, (SUBR) rnd31a },
- { "oscilikt", 0xFFFE, 0, NULL, NULL,
+ { "oscilikt", 0xFFFE, TR, NULL, NULL,
(SUBR) NULL, (SUBR) NULL, (SUBR) NULL },
{ "oscilikt.kk", sizeof(OSCKT), 7, "s", "kkkoo",
(SUBR) oscktset, (SUBR) kosclikt, (SUBR)osckkikt },
@@ -2474,17 +2474,17 @@ static const OENTRY localops[] = {
(SUBR) oscktset, (SUBR) NULL, (SUBR) oscakikt },
{ "oscilikt.aa", sizeof(OSCKT), 5, "a", "aakoo",
(SUBR) oscktset, (SUBR) NULL, (SUBR) oscaaikt },
- { "osciliktp", sizeof(OSCKTP), 5, "a", "kkko",
+ { "osciliktp", sizeof(OSCKTP), TR|5, "a", "kkko",
(SUBR) oscktpset, (SUBR) NULL, (SUBR) oscktp },
- { "oscilikts", sizeof(OSCKTS), 5, "a", "xxkako",
+ { "oscilikts", sizeof(OSCKTS), TR|5, "a", "xxkako",
(SUBR) oscktsset, (SUBR) NULL, (SUBR) osckts },
- { "vco2init", sizeof(VCO2INIT), 1, "i", "ijjjjj",
+ { "vco2init", sizeof(VCO2INIT), TW|1, "i", "ijjjjj",
(SUBR) vco2init, (SUBR) NULL, (SUBR) NULL },
- { "vco2ift", sizeof(VCO2FT), 1, "i", "iov",
+ { "vco2ift", sizeof(VCO2FT), TW|1, "i", "iov",
(SUBR) vco2ftset, (SUBR) NULL, (SUBR) NULL },
- { "vco2ft", sizeof(VCO2FT), 3, "k", "kov",
+ { "vco2ft", sizeof(VCO2FT), TW|3, "k", "kov",
(SUBR) vco2ftset, (SUBR) vco2ft, (SUBR) NULL },
- { "vco2", sizeof(VCO2), 5, "a", "kkoM",
+ { "vco2", sizeof(VCO2), TR|5, "a", "kkoM",
(SUBR) vco2set, (SUBR) NULL, (SUBR) vco2 },
{ "denorm", sizeof(DENORMS), 4, "", "y",
(SUBR) NULL, (SUBR) NULL, (SUBR) denorms },
diff --git a/Opcodes/p5glove.c b/Opcodes/p5glove.c
index 56ad729..5ce5f32 100644
--- a/Opcodes/p5glove.c
+++ b/Opcodes/p5glove.c
@@ -247,9 +247,9 @@ int p5g_data(CSOUND *csound, P5GLOVE *p)
#define S(x) sizeof(x)
-static OENTRY localops[] = {
+static OENTRY p5g_localops[] = {
{"p5gconnect", S(P5GLOVEINIT), 3, "", "", (SUBR)p5glove_find, (SUBR)p5glove_poll, NULL, (SUBR)p5glove_closer },
{"p5gdata", S(P5GLOVE), 3, "k", "k", (SUBR)p5g_data_init, (SUBR)p5g_data }
};
-LINKAGE
+LINKAGE1(p5g_localops)
diff --git a/Opcodes/pan2.c b/Opcodes/pan2.c
index 3556368..e8d37f3 100644
--- a/Opcodes/pan2.c
+++ b/Opcodes/pan2.c
@@ -21,7 +21,9 @@
02111-1307 USA
*/
-#include "csdl.h"
+// #include "csdl.h"
+#include "csoundCore.h"
+#include "interlocks.h"
#include <math.h>
@@ -94,12 +96,12 @@ static int pan2run(CSOUND *csound, PAN2 *p)
return OK;
}
-static OENTRY localops[] =
+static OENTRY pan2_localops[] =
{
{ "pan2", sizeof(PAN2), 5, "aa", "axo", (SUBR) pan2set, 0, (SUBR) pan2run }
};
-LINKAGE
+LINKAGE1(pan2_localops)
diff --git a/Opcodes/partikkel.c b/Opcodes/partikkel.c
index cdc6898..bf487a4 100644
--- a/Opcodes/partikkel.c
+++ b/Opcodes/partikkel.c
@@ -178,7 +178,7 @@ static inline MYFLT lrplookup(FUNC *tab, unsigned phase, MYFLT zscale,
}
/* Why not use csound->intpow ? */
-static inline double intpow(MYFLT x, unsigned n)
+static inline double intpow_(MYFLT x, unsigned n)
{
double ans = 1.0;
@@ -452,7 +452,7 @@ static int schedule_grain(CSOUND *csound, PARTIKKEL *p, NODE *node, int32 n,
if (grain->harmonics < 2)
grain->harmonics = 2;
grain->falloff = *p->falloff;
- grain->falloff_pow_N = intpow(grain->falloff, grain->harmonics);
+ grain->falloff_pow_N = intpow_(grain->falloff, grain->harmonics);
/* normalize trainlets to uniform peak, using geometric sum */
if (FABS(grain->falloff) > FL(0.9999) &&
FABS(grain->falloff) < FL(1.0001))
@@ -834,9 +834,9 @@ static int partikkelsync(CSOUND *csound, PARTIKKELSYNC *p)
return OK;
}
-static OENTRY localops[] = {
+static OENTRY partikkel_localops[] = {
{
- "partikkel", sizeof(PARTIKKEL), 5,
+ "partikkel", sizeof(PARTIKKEL), TR|5,
"ammmmmmm",
"xkiakiiikkkkikkiiaikikkkikkkkkiaaaakkkkio",
(SUBR)partikkel_init,
@@ -844,7 +844,7 @@ static OENTRY localops[] = {
(SUBR)partikkel
},
{
- "partikkelsync", sizeof(PARTIKKELSYNC), 5,
+ "partikkelsync", sizeof(PARTIKKELSYNC), TR|5,
"am", "i",
(SUBR)partikkelsync_init,
(SUBR)NULL,
@@ -852,4 +852,5 @@ static OENTRY localops[] = {
}
};
-LINKAGE
+LINKAGE1(partikkel_localops)
+
diff --git a/Opcodes/partikkel.h b/Opcodes/partikkel.h
index bf217df..e9713ca 100644
--- a/Opcodes/partikkel.h
+++ b/Opcodes/partikkel.h
@@ -18,7 +18,8 @@ License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include "csdl.h"
+#include "csoundCore.h"
+#include "interlocks.h"
typedef struct {
FUNC *table;
diff --git a/Opcodes/phisem.c b/Opcodes/phisem.c
index 7a4d580..3073658 100644
--- a/Opcodes/phisem.c
+++ b/Opcodes/phisem.c
@@ -45,7 +45,9 @@
/* Sandpapr (sandpaper) */
/**********************************************************/
-#include "csdl.h"
+// #include "csdl.h"
+#include "csoundCore.h"
+#include "interlocks.h"
#include "phisem.h"
#include <math.h>
@@ -900,7 +902,7 @@ static int wuterset(CSOUND *csound, WUTER *p)
p->sndLevel = FL(0.0);
p->kloop = (int)(p->h.insdshead->offtim * csound->ekr)
- - (int)(csound->ekr * *p->dettack);
+ - (int)(csound->ekr * *p->dettack);
p->outputs00 = FL(0.0);
p->outputs01 = FL(0.0);
@@ -1231,7 +1233,7 @@ static int sleighbells(CSOUND *csound, SLEIGHBELLS *p)
#define S(x) sizeof(x)
-static OENTRY localops[] = {
+static OENTRY phisem_localops[] = {
{ "cabasa", S(CABASA), 5, "a", "iiooo", (SUBR)cabasaset, NULL, (SUBR)cabasa},
{ "crunch", S(CABASA), 5, "a", "iiooo", (SUBR)crunchset, NULL, (SUBR)cabasa},
{ "sekere", S(SEKERE), 5, "a", "iiooo", (SUBR)sekereset, NULL, (SUBR)sekere},
@@ -1246,5 +1248,5 @@ static OENTRY localops[] = {
(SUBR)sleighset, NULL, (SUBR)sleighbells }
};
-LINKAGE
+LINKAGE1(phisem_localops)
diff --git a/Opcodes/physmod.c b/Opcodes/physmod.c
index 94e2906..cfa693b 100644
--- a/Opcodes/physmod.c
+++ b/Opcodes/physmod.c
@@ -23,13 +23,14 @@
/* Collection of physical modelled instruments */
-#include "csdl.h"
+//#include "csdl.h"
+#include "csoundCore.h"
#include "clarinet.h"
#include "flute.h"
#include "bowed.h"
#include "brass.h"
#include <math.h>
-
+#include "interlocks.h"
/* ************************************** */
/* Waveguide Clarinet model ala Smith */
/* after McIntyre, Schumacher, Woodhouse */
@@ -919,28 +920,28 @@ int shaker(void*,void*);
int bowedbarset(void*,void*);
int bowedbar(void*,void*);
-static OENTRY localops[] = {
-{ "wgclar", S(CLARIN),5, "a", "kkkiikkkio",(SUBR)clarinset,NULL, (SUBR)clarin},
-{ "wgflute", S(FLUTE), 5, "a", "kkkiikkkiovv",(SUBR)fluteset,NULL, (SUBR)flute },
-{ "wgbow", S(BOWED), 5, "a", "kkkkkkio", (SUBR)bowedset, NULL, (SUBR)bowed },
-{ "wgbrass", S(BRASS), 5, "a", "kkkikkio", (SUBR)brassset, NULL, (SUBR)brass},
-{ "mandol", S(MANDOL), 5, "a", "kkkkkkio", (SUBR)mandolinset, NULL,(SUBR)mandolin},
-{ "voice", S(VOICF), 5, "a", "kkkkkkii", (SUBR)voicformset, NULL,(SUBR)voicform},
-{ "fmbell", S(FM4OP), 5, "a", "kkkkkkiiiii",
+static OENTRY physmod_localops[] = {
+{ "wgclar", S(CLARIN),TR|5, "a", "kkkiikkkio",(SUBR)clarinset,NULL, (SUBR)clarin},
+{ "wgflute", S(FLUTE), TR|5, "a", "kkkiikkkiovv",(SUBR)fluteset,NULL, (SUBR)flute },
+{ "wgbow", S(BOWED), TR|5, "a", "kkkkkkio", (SUBR)bowedset, NULL, (SUBR)bowed },
+{ "wgbrass", S(BRASS), TR|5, "a", "kkkikkio", (SUBR)brassset, NULL, (SUBR)brass},
+{ "mandol", S(MANDOL), TR|5, "a", "kkkkkkio", (SUBR)mandolinset, NULL,(SUBR)mandolin},
+{ "voice", S(VOICF), TR|5, "a", "kkkkkkii", (SUBR)voicformset, NULL,(SUBR)voicform},
+{ "fmbell", S(FM4OP), TR|5, "a", "kkkkkkiiiii",
(SUBR)tubebellset,NULL,(SUBR)tubebell},
-{ "fmrhode", S(FM4OP), 5, "a", "kkkkkkiiiii",(SUBR)rhodeset,NULL, (SUBR)tubebell},
-{ "fmwurlie", S(FM4OP),5, "a", "kkkkkkiiiii",(SUBR)wurleyset, NULL,(SUBR) wurley },
-{ "fmmetal", S(FM4OP), 5, "a", "kkkkkkiiiii",
+{ "fmrhode", S(FM4OP), TR|5, "a", "kkkkkkiiiii",(SUBR)rhodeset,NULL, (SUBR)tubebell},
+{ "fmwurlie", S(FM4OP),TR|5, "a", "kkkkkkiiiii",(SUBR)wurleyset, NULL,(SUBR) wurley },
+{ "fmmetal", S(FM4OP), TR|5, "a", "kkkkkkiiiii",
(SUBR)heavymetset, NULL, (SUBR)heavymet},
-{ "fmb3", S(FM4OP), 5, "a", "kkkkkkiiiii", (SUBR)b3set, NULL, (SUBR)hammondB3 },
-{ "fmvoice", S(FM4OPV),5, "a", "kkkkkkiiiii",(SUBR)FMVoiceset,NULL,(SUBR)FMVoice},
-{ "fmpercfl", S(FM4OP),5, "a", "kkkkkkiiiii",
+{ "fmb3", S(FM4OP), TR|5, "a", "kkkkkkiiiii", (SUBR)b3set, NULL, (SUBR)hammondB3 },
+{ "fmvoice", S(FM4OPV),TR|5, "a", "kkkkkkiiiii",(SUBR)FMVoiceset,NULL,(SUBR)FMVoice},
+{ "fmpercfl", S(FM4OP),TR|5, "a", "kkkkkkiiiii",
(SUBR)percfluteset, NULL, (SUBR)percflute},
-{ "moog", S(MOOG1), 5, "a", "kkkkkkiii", (SUBR)Moog1set, NULL, (SUBR)Moog1 },
+{ "moog", S(MOOG1), TR|5, "a", "kkkkkkiii", (SUBR)Moog1set, NULL, (SUBR)Moog1 },
{ "shaker", S(SHAKER), 5, "a", "kkkkko", (SUBR)shakerset, NULL, (SUBR)shaker},
{ "wgbowedbar", S(BOWEDBAR), 5, "a","kkkkkoooo",
(SUBR)bowedbarset, NULL,(SUBR) bowedbar },
};
-LINKAGE
+LINKAGE1(physmod_localops)
diff --git a/Opcodes/physutil.c b/Opcodes/physutil.c
index eaacd63..8701c50 100644
--- a/Opcodes/physutil.c
+++ b/Opcodes/physutil.c
@@ -25,7 +25,8 @@
opcodes, in no particular order
*/
-#include "csdl.h"
+// #include "csdl.h"
+#include "csoundCore.h"
#include <stdlib.h>
#include "physutil.h"
diff --git a/Opcodes/pitch.c b/Opcodes/pitch.c
index e10169d..c4061cf 100644
--- a/Opcodes/pitch.c
+++ b/Opcodes/pitch.c
@@ -23,7 +23,8 @@
02111-1307 USA
*/
-#include "csdl.h" /* PITCH.C */
+// #include "csdl.h"
+#include "csoundCore.h" /* PITCH.C */
#include <math.h>
#include <limits.h>
#include "cwindow.h"
@@ -1693,6 +1694,7 @@ int impulse(CSOUND *csound, IMPULSE *p)
int n, nsmps = csound->ksmps;
int next = p->next;
MYFLT *ar = p->ar;
+ if (next<0) next = -next;
if (UNLIKELY(next < csound->ksmps)) { /* Impulse in this frame */
MYFLT frq = *p->freq; /* Freq at k-rate */
int sfreq; /* Converted to samples */
@@ -1915,7 +1917,8 @@ int trnsetr(CSOUND *csound, TRANSEG *p)
int relestim;
NSEG *segp;
int nsegs;
- MYFLT **argp, val;
+ MYFLT **argp;
+ double val;
if (UNLIKELY(p->INOCOUNT%3!=1))
csound->InitError(csound, Str("Incorrect argument count in transegr"));
@@ -1927,18 +1930,18 @@ int trnsetr(CSOUND *csound, TRANSEG *p)
}
segp[nsegs-1].cnt = MAXPOS; /* set endcount for safety */
argp = p->argums;
- val = **argp++;
- if (**argp <= FL(0.0)) return OK; /* if idur1 <= 0, skip init */
+ val = (double)**argp++;
+ if (UNLIKELY(**argp <= FL(0.0))) return OK; /* if idur1 <= 0, skip init */
p->curval = val;
p->curcnt = 0;
p->cursegp = segp - 1; /* else setup null seg0 */
p->segsrem = nsegs + 1;
p->curx = FL(0.0);
do { /* init each seg .. */
- MYFLT dur = **argp++;
+ double dur = (double)**argp++;
MYFLT alpha = **argp++;
MYFLT nxtval = **argp++;
- MYFLT d = dur * csound->esr;
+ MYFLT d = dur * csound->ekr;
if ((segp->cnt = (int32)(d + FL(0.5))) < 0)
segp->cnt = 0;
else
@@ -1949,18 +1952,21 @@ int trnsetr(CSOUND *csound, TRANSEG *p)
segp->c1 = (nxtval-val)/d;
}
else {
+ p->lastalpha = alpha;
segp->c1 = (nxtval - val)/(FL(1.0) - EXP(alpha));
}
segp->alpha = alpha/d;
val = nxtval;
segp++;
+ p->finalval = nxtval;
} while (--nsegs);
- p->xtra = -1;
+ //p->xtra = -1;
p->alpha = ((NSEG*)p->auxch.auxp)[0].alpha;
p->curinc = ((NSEG*)p->auxch.auxp)[0].c1;
relestim = (int)(p->cursegp + p->segsrem - 1)->cnt;
+ p->xtra = relestim;
if (relestim > p->h.insdshead->xtratim)
- p->h.insdshead->xtratim = relestim;
+ p->h.insdshead->xtratim = (int)relestim;
return OK;
}
@@ -1978,6 +1984,15 @@ int ktrnsegr(CSOUND *csound, TRANSEG *p)
p->segsrem--;
} /* get univ relestim */
segp->cnt = p->xtra>=0 ? p->xtra : p->h.insdshead->xtratim;
+ if (segp->alpha == FL(0.0)) {
+ segp->c1 = (p->finalval-p->curval)/segp->cnt;
+ }
+ else {
+ /* this is very wrong */
+ segp->c1 = (p->finalval - p->curval)/(FL(1.0) - EXP(p->lastalpha));
+ segp->alpha = p->lastalpha/segp->cnt;
+ segp->val = p->curval;
+ }
goto newm; /* and set new curmlt */
}
if (--p->curcnt <= 0) { /* if done cur segment */
@@ -2008,28 +2023,38 @@ int trnsegr(CSOUND *csound, TRANSEG *p)
{
MYFLT val, *rs = p->rslt;
int n, nsmps = csound->ksmps;
- NSEG *segp = p->cursegp;
if (UNLIKELY(p->auxch.auxp==NULL)) {
return csound->PerfError(csound, Str("transeg: not initialised (arate)\n"));
}
val = p->curval; /* sav the cur value */
- if (p->segsrem) { /* if no more segs putk */
+ if (LIKELY(p->segsrem)) { /* if no more segs putk */
+ NSEG *segp;
if (p->h.insdshead->relesing && p->segsrem > 1) {
- while (p->segsrem > 1) { /* if reles flag new */
- segp = ++p->cursegp; /* go to last segment */
+ while (p->segsrem > 1) { /* if release flag new */
+ segp = ++p->cursegp; /* go to last segment */
p->segsrem--;
- } /* get univ relestim */
+ } /* get univ relestim */
segp->cnt = p->xtra>=0 ? p->xtra : p->h.insdshead->xtratim;
- goto newm; /* and set new curmlt */
+ if (segp->alpha == FL(0.0)) {
+ segp->c1 = (p->finalval-val)/segp->cnt;
+ }
+ else {
+ /* this is very wrong */
+ segp->c1 = (p->finalval - val)/(FL(1.0) - EXP(p->lastalpha));
+ segp->alpha = p->lastalpha/segp->cnt;
+ segp->val = val;
+ }
+ goto newm; /* and set new curmlt */
}
if (--p->curcnt <= 0) { /* if done cur segment */
segp = p->cursegp;
chk1:
+ if (p->segsrem == 2) goto putk; /* seg Y rpts lastval */
if (UNLIKELY(!--p->segsrem)) { /* if none left */
- val = p->curval = segp->nxtpt;
+ //val = p->curval = segp->nxtpt;
goto putk; /* put endval */
}
- p->cursegp = ++segp; /* else find the next */
+ segp = ++p->cursegp; /* else find the next */
newm:
if (!(p->curcnt = segp->cnt)) {
val = p->curval = segp->nxtpt; /* nonlen = discontin */
@@ -2047,16 +2072,16 @@ int trnsegr(CSOUND *csound, TRANSEG *p)
}
}
else {
+ segp = p->cursegp;
for (n=0; n<nsmps; n++) {
rs[n] = val;
p->curx += p->alpha;
- val = segp->val + p->curinc *
- (FL(1.0) - EXP(p->curx));
+ val = segp->val + p->curinc * (FL(1.0) - EXP(p->curx));
}
}
p->curval = val;
return OK;
-putk:
+ putk:
for (n=0; n<nsmps; n++) {
rs[n] = val;
}
@@ -2312,7 +2337,6 @@ int kmedfilt(CSOUND *csound, MEDFILT *p)
int maxwind = p->maxwind;
int kwind = MYFLT2LONG(*p->kwind);
int index = p->ind;
- int n, nsmps=csound->ksmps;
if (UNLIKELY(p->b.auxp==NULL)) {
return csound->PerfError(csound, Str("median: not initialised (krate)\n"));
}
diff --git a/Opcodes/pitch.h b/Opcodes/pitch.h
index 242c91f..1d9f3c8 100644
--- a/Opcodes/pitch.h
+++ b/Opcodes/pitch.h
@@ -189,6 +189,7 @@ typedef struct {
MYFLT curx;
AUXCH auxch;
int32 xtra;
+ MYFLT finalval, lastalpha;
} TRANSEG;
typedef struct {
diff --git a/Opcodes/pitch0.c b/Opcodes/pitch0.c
index 5f93f77..b80c8b3 100644
--- a/Opcodes/pitch0.c
+++ b/Opcodes/pitch0.c
@@ -21,7 +21,8 @@
02111-1307 USA
*/
-#include "csdl.h" /* PITCH.C */
+// #include "csdl.h"
+#include "csoundCore.h" /* PITCH.C */
#include "cwindow.h"
#include <limits.h>
#include "spectra.h"
diff --git a/Opcodes/pitchtrack.c b/Opcodes/pitchtrack.c
index a72b02d..8a072ae 100644
--- a/Opcodes/pitchtrack.c
+++ b/Opcodes/pitchtrack.c
@@ -25,7 +25,8 @@
02111-1307 USA
*/
-#include "csdl.h"
+#include "csoundCore.h"
+#include "interlocks.h"
#include <math.h>
#define MINFREQINBINS 5
@@ -494,7 +495,7 @@ int pitchafproc(CSOUND *csound, PITCHAF *p)
MYFLT *buff2 = (MYFLT *)p->buff2.auxp;
MYFLT *cor = (MYFLT *)p->cor.auxp;
MYFLT *s = p->asig, pitch;
- MYFLT ifmax = *p->kfmax;
+ //MYFLT ifmax = *p->kfmax;
for (n=0; n < ksmps; n++) {
for (i=0,j=lag; i < len; i++) {
@@ -534,10 +535,10 @@ int pitchafproc(CSOUND *csound, PITCHAF *p)
#define S(x) sizeof(x)
-static OENTRY localops[] = {
+static OENTRY pitchtrack_localops[] = {
{"ptrack", S(PITCHTRACK), 5, "kk", "aio", (SUBR)pitchtrackinit, NULL, (SUBR)pitchtrackprocess},
{"pitchac", S(PITCHTRACK), 5, "k", "akki", (SUBR)pitchafset, NULL, (SUBR)pitchafproc}
};
-LINKAGE
+LINKAGE1(pitchtrack_localops)
diff --git a/Opcodes/psynth.c b/Opcodes/psynth.c
index ad502c4..b586fac 100644
--- a/Opcodes/psynth.c
+++ b/Opcodes/psynth.c
@@ -295,7 +295,7 @@ static int psynth2_init(CSOUND *csound, _PSYN2 *p)
static int psynth2_process(CSOUND *csound, _PSYN2 *p)
{
- double ampnext, amp, freq, freqnext, phase, phasenext, ratio;
+ double ampnext, amp, freq, freqnext, phase, phasenext;
double a2, a3, cph;
double phasediff, facsqr, ph;
double a, frac, incra, incrph, factor, lotwopi, cnt;
@@ -316,7 +316,6 @@ static int psynth2_process(CSOUND *csound, _PSYN2 *p)
incrph = csound->onedsr;
lotwopi = (double)(size) / TWOPI_F;
- ratio = size * csound->onedsr;
factor = p->factor;
facsqr = p->facsqr;
maxtracks = p->numbins > maxtracks ? maxtracks : p->numbins;
@@ -421,7 +420,7 @@ static int psynth2_process(CSOUND *csound, _PSYN2 *p)
static int psynth3_process(CSOUND *csound, _PSYN *p)
{
- double ampnext, amp, freq, freqnext, phase, phasenext, ratio;
+ double ampnext, amp, freq, freqnext, phase, phasenext;
double a2, a3, cph;
double phasediff, facsqr, ph;
double a, frac, incra, incrph, factor, lotwopi, cnt;
@@ -442,7 +441,6 @@ static int psynth3_process(CSOUND *csound, _PSYN *p)
incrph = csound->onedsr;
lotwopi = (double) (size) / TWOPI_F;
- ratio = size * csound->onedsr;
factor = p->factor;
facsqr = p->facsqr;
maxtracks = p->numbins > maxtracks ? maxtracks : p->numbins;
@@ -889,7 +887,7 @@ static int trmix_process(CSOUND *csound, _PSMIX *p)
float *framein2 = (float *) p->fsig3->frame.auxp;
float *frameout = (float *) p->fsig1->frame.auxp;
float *framein1 = (float *) p->fsig2->frame.auxp;
- int i = 0, j = 0, k = 0, id = (int) framein1[3], end = p->numbins * 4;
+ int i = 0, j = 0, id = (int) framein1[3], end = p->numbins * 4;
if (p->lastframe < p->fsig2->framecount) {
@@ -901,7 +899,6 @@ static int trmix_process(CSOUND *csound, _PSMIX *p)
i += 4;
id = (int) framein1[i + 3];
}
- k = i;
id = (int) framein2[3];
while (id != -1 && i < end && j < end) {
frameout[i] = framein2[j];
@@ -916,7 +913,6 @@ static int trmix_process(CSOUND *csound, _PSMIX *p)
frameout[i + 3] = -1.0f;
p->fsig1->framecount = p->lastframe = p->fsig2->framecount;
-/*csound->Message(csound, "mix %d : %d\n", k/4, j/4);*/
}
return OK;
@@ -1204,10 +1200,10 @@ static OENTRY localops[] =
{"tradsyn", sizeof(_PSYN), 5, "a", "fkkki", (SUBR) psynth_init, NULL,
(SUBR) psynth_process}
,
- {"sinsyn", sizeof(_PSYN2), 5, "a", "fkki", (SUBR) psynth2_init, NULL,
+ {"sinsyn", sizeof(_PSYN2), TR|5, "a", "fkki", (SUBR) psynth2_init, NULL,
(SUBR) psynth2_process}
,
- {"resyn", sizeof(_PSYN), 5, "a", "fkkki", (SUBR) psynth_init, NULL,
+ {"resyn", sizeof(_PSYN), TR|5, "a", "fkkki", (SUBR) psynth_init, NULL,
(SUBR) psynth3_process}
,
{"trscale", sizeof(_PTRANS), 3, "f", "fz", (SUBR) trans_init,
diff --git a/Opcodes/pvadd.c b/Opcodes/pvadd.c
index b223f0e..ea08d41 100644
--- a/Opcodes/pvadd.c
+++ b/Opcodes/pvadd.c
@@ -68,17 +68,16 @@ int pvaddset(CSOUND *csound, PVADD *p)
char pvfilnam[MAXNAME];
int size;
FUNC *ftp = NULL, *AmpGateFunc = NULL;
- MYFLT *oscphase;
int32 memsize;
- if (*p->ifn > FL(0.0))
- if (UNLIKELY((ftp = csound->FTFind(csound, p->ifn)) == NULL))
- return NOTOK;
- p->ftp = ftp;
+ if (*p->ifn > FL(0.0))
+ if (UNLIKELY((ftp = csound->FTFind(csound, p->ifn)) == NULL))
+ return NOTOK;
+ p->ftp = ftp;
- if (*p->igatefun > FL(0.0))
- if (UNLIKELY((AmpGateFunc = csound->FTFind(csound, p->igatefun)) == NULL))
- return NOTOK;
+ if (*p->igatefun > FL(0.0))
+ if (UNLIKELY((AmpGateFunc = csound->FTFind(csound, p->igatefun)) == NULL))
+ return NOTOK;
p->AmpGateFunc = AmpGateFunc;
csound->strarg2name(csound, pvfilnam, p->ifilno, "pvoc.", p->XSTRCODE);
@@ -120,8 +119,6 @@ int pvaddset(CSOUND *csound, PVADD *p)
p->frPtr = (float*) p->pvcopy;
}
- oscphase = p->oscphase;
-
memset(p->oscphase, 0, MAXBINS*sizeof(MYFLT));
ibins = (*p->ibins <= FL(0.0) ? (size / 2) : (int) *p->ibins);
diff --git a/Opcodes/pvinterp.c b/Opcodes/pvinterp.c
index db21f54..329db06 100644
--- a/Opcodes/pvinterp.c
+++ b/Opcodes/pvinterp.c
@@ -40,7 +40,7 @@ int pvbufreadset(CSOUND *csound, PVBUFREAD *p)
{
char pvfilnam[MAXNAME];
PVOCEX_MEMFILE pp;
- int frInc, chans, size; /* THESE SHOULD BE SAVED IN PVOC STRUCT */
+ int frInc, chans; /* THESE SHOULD BE SAVED IN PVOC STRUCT */
{
PVOC_GLOBALS *p_ = PVOC_GetGlobals(csound);
@@ -89,7 +89,6 @@ int pvbufreadset(CSOUND *csound, PVBUFREAD *p)
p->maxFr = pp.nframes - 1;
p->frPktim = (MYFLT) csound->ksmps / (MYFLT) frInc;
p->frPrtim = csound->esr / (MYFLT) frInc;
- size = pvfrsiz(p); /* size used in def of OPWLEN ? */
p->prFlg = 1; /* true */
/* amplitude scale for PVOC */
/* p->scale = (MYFLT) pp.fftsize * ((MYFLT) pp.fftsize / (MYFLT) pp.winsize);
@@ -140,7 +139,7 @@ int pvinterpset(CSOUND *csound, PVINTERP *p)
int i;
char pvfilnam[MAXNAME];
PVOCEX_MEMFILE pp;
- int frInc, chans, size; /* THESE SHOULD BE SAVED IN PVOC STRUCT */
+ int frInc, chans; /* THESE SHOULD BE SAVED IN PVOC STRUCT */
p->pp = PVOC_GetGlobals(csound);
p->pvbufread = p->pp->pvbufreadaddr;
@@ -193,7 +192,6 @@ int pvinterpset(CSOUND *csound, PVINTERP *p)
/* factor by which to mult expand phase diffs (ratio of samp spacings) */
p->frPrtim = csound->esr / (MYFLT) frInc;
/* factor by which to mulitply 'real' time index to get frame index */
- size = pvfrsiz(p); /* size used in def of OPWLEN ? */
/* amplitude scale for PVOC */
/* p->scale = (MYFLT) pp.fftsize * ((MYFLT) pp.fftsize / (MYFLT) pp.winsize);
*/
@@ -314,7 +312,7 @@ int pvcrossset(CSOUND *csound, PVCROSS *p)
int i;
char pvfilnam[MAXNAME];
PVOCEX_MEMFILE pp;
- int frInc, chans, size; /* THESE SHOULD BE SAVED IN PVOC STRUCT */
+ int frInc, chans; /* THESE SHOULD BE SAVED IN PVOC STRUCT */
p->pp = PVOC_GetGlobals(csound);
p->pvbufread = p->pp->pvbufreadaddr;
@@ -365,7 +363,6 @@ int pvcrossset(CSOUND *csound, PVCROSS *p)
/* factor by which to mult expand phase diffs (ratio of samp spacings) */
p->frPrtim = csound->esr / (MYFLT) frInc;
/* factor by which to mulitply 'real' time index to get frame index */
- size = pvfrsiz(p); /* size used in def of OPWLEN ? */
/* amplitude scale for PVOC */
/* p->scale = (MYFLT) pp.fftsize * ((MYFLT) pp.fftsize / (MYFLT) pp.winsize);
*/
diff --git a/Opcodes/pvlock.c b/Opcodes/pvlock.c
index b6f105e..7c3fe82 100644
--- a/Opcodes/pvlock.c
+++ b/Opcodes/pvlock.c
@@ -1,4 +1,28 @@
-#include "csdl.h"
+/*
+ crossfm.c:
+
+ Copyright (C) 2009 V Lazzarini
+
+ This file is part of Csound.
+
+ The Csound Library is free software; you can redistribute it
+ and/or modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ Csound is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with Csound; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA
+*/
+
+#include "csoundCore.h"
+#include "interlocks.h"
#include "pstream.h"
#define MAXOUTS 2
@@ -69,7 +93,7 @@ static int sprocess(CSOUND *csound, DATASPACE *p)
{
MYFLT pitch = *p->kpitch, *time = p->time, lock = *p->klock,
*out, amp =*p->kamp;
- MYFLT *tab, frac,scale;
+ MYFLT *tab, frac;
FUNC *ft;
int N = p->N, hsize = p->hsize, cnt = p->cnt, nchans = p->nchans;
int ksmps = csound->GetKsmps(csound), n;
@@ -102,12 +126,12 @@ static int sprocess(CSOUND *csound, DATASPACE *p)
esr is sampling rate
*/
spos = hsize*(int)((time[n])*csound->esr/hsize);
- sizefrs = size/nchans;
- while(spos > sizefrs - N) spos -= sizefrs;
- while(spos <= hsize) spos += sizefrs;
+ sizefrs = size/nchans;
+ while(spos > sizefrs - N) spos -= sizefrs;
+ while(spos <= hsize) spos += sizefrs;
pos = spos;
- for (j = 0; j < nchans; j++) {
+ for (j = 0; j < nchans; j++) {
bwin = (MYFLT *) p->bwin[j].auxp;
fwin = (MYFLT *) p->fwin[j].auxp;
@@ -212,7 +236,7 @@ static int sprocess(CSOUND *csound, DATASPACE *p)
/* write to overlapped output frames */
for (i=0;i<N;i++) outframe[framecnt[curframe]+i] = win[i]*fwin[i];
- }
+ }
cnt=0;
curframe++;
@@ -259,7 +283,7 @@ static int sprocess2(CSOUND *csound, DATASPACE *p)
{
MYFLT pitch = *p->kpitch, time = *p->time, lock = *p->klock;
MYFLT *out, amp =*p->kamp;
- MYFLT *tab,frac,scale, dbtresh = *p->dbthresh;
+ MYFLT *tab,frac, dbtresh = *p->dbthresh;
FUNC *ft;
int N = p->N, hsize = p->hsize, cnt = p->cnt, sizefrs, nchans = p->nchans;
int ksmps = csound->GetKsmps(csound), n;
@@ -336,7 +360,7 @@ static int sprocess2(CSOUND *csound, DATASPACE *p)
nwin[i] = in * win[i];
pos += pitch;
}
-
+
csound->RealFFT(csound, bwin, N);
bwin[N] = bwin[1];
bwin[N+1] = FL(0.0);
@@ -417,14 +441,14 @@ static int sprocess2(CSOUND *csound, DATASPACE *p)
for (j=0; j < nchans; j++) {
out = p->out[j];
- framecnt = (int *) p->framecount[j].auxp;
- outframe = (MYFLT *) p->outframe[j].auxp;
+ framecnt = (int *) p->framecount[j].auxp;
+ outframe = (MYFLT *) p->outframe[j].auxp;
out[n] = (MYFLT) 0;
for (i = 0; i < decim; i++) {
out[n] += outframe[framecnt[i]];
- framecnt[i]++;
+ framecnt[i]++;
}
out[n] *= amp*(2./3.);
}
@@ -472,8 +496,8 @@ static int pvslockset(CSOUND *csound, PVSLOCK *p)
static int pvslockproc(CSOUND *csound, PVSLOCK *p)
{
- int i,n,k,j, maxmagi;
- float mag, maxmag, *fout = (float *) p->fout->frame.auxp,
+ int i;
+ float *fout = (float *) p->fout->frame.auxp,
*fin = (float *) p->fin->frame.auxp;
int N = p->fin->N;
@@ -481,7 +505,7 @@ static int pvslockproc(CSOUND *csound, PVSLOCK *p)
memcpy(fout,fin, sizeof(float)*(N+2));
if (*p->klock) {
- for (i=2, n = 0; i < N-4; i+=2){
+ for (i=2; i < N-4; i+=2){
float p2 = fin[i];
float p3 = fin[i+2];
float p1 = fin[i-2];
@@ -503,7 +527,7 @@ static int pvslockproc(CSOUND *csound, PVSLOCK *p)
return OK;
}
-static OENTRY localops[] = {
+static OENTRY pvlock_localops[] = {
{"mincer", sizeof(DATASPACE), 5, "mm", "akkkkoo",
(SUBR)sinit, NULL,(SUBR)sprocess },
{"temposcal", sizeof(DATASPACE), 5, "mm", "kkkkkooPOP",
@@ -512,4 +536,4 @@ static OENTRY localops[] = {
(SUBR) pvslockproc},
};
-LINKAGE
+LINKAGE1(pvlock_localops)
diff --git a/Opcodes/pvoc.c b/Opcodes/pvoc.c
index b42f66d..2635ecb 100644
--- a/Opcodes/pvoc.c
+++ b/Opcodes/pvoc.c
@@ -33,12 +33,12 @@ int pvinterpset(CSOUND *, void *), pvinterp(CSOUND *, void *);
#define S(x) sizeof(x)
-static OENTRY localops[] = {
+static OENTRY pvoc_localops[] = {
{ "pvoc", S(PVOC), 5, "a", "kkToooo", pvset, NULL, pvoc },
-{ "tableseg", S(TABLESEG), 3, "", "iin", tblesegset, ktableseg, NULL },
-{ "ktableseg", S(TABLESEG), 3, "", "iin", tblesegset, ktableseg, NULL },
-{ "tablexseg", S(TABLESEG), 3, "", "iin", tblesegset, ktablexseg, NULL },
-{ "vpvoc", S(VPVOC), 5, "a", "kkToo", vpvset, NULL, vpvoc },
+{ "tableseg", S(TABLESEG), TR|3, "", "iin", tblesegset, ktableseg, NULL },
+{ "ktableseg", S(TABLESEG), DP|TR|3, "", "iin", tblesegset, ktableseg, NULL },
+{ "tablexseg", S(TABLESEG), TW|3, "", "iin", tblesegset, ktablexseg, NULL },
+{ "vpvoc", S(VPVOC), TR|5, "a", "kkToo", vpvset, NULL, vpvoc },
{ "pvread", S(PVREAD), 3, "kk", "kTi", pvreadset, pvread, NULL },
{ "pvcross", S(PVCROSS), 5, "a", "kkTkko", pvcrossset, NULL, pvcross },
{ "pvbufread", S(PVBUFREAD), 3, "", "kT", pvbufreadset, pvbufread, NULL},
@@ -64,5 +64,5 @@ PVOC_GLOBALS *PVOC_AllocGlobals(CSOUND *csound)
return p;
}
-LINKAGE
+LINKAGE1(pvoc_localops)
diff --git a/Opcodes/pvoc.h b/Opcodes/pvoc.h
index 95756b4..c3deebe 100644
--- a/Opcodes/pvoc.h
+++ b/Opcodes/pvoc.h
@@ -22,7 +22,9 @@
#ifndef CSOUND_PVOC_H
#define CSOUND_PVOC_H
-#include "csdl.h"
+// #include "csdl.h"
+#include "csoundCore.h"
+#include "interlocks.h"
typedef struct PVOC_GLOBALS_ PVOC_GLOBALS;
diff --git a/Opcodes/pvocext.c b/Opcodes/pvocext.c
index 7a250ff..e00feeb 100644
--- a/Opcodes/pvocext.c
+++ b/Opcodes/pvocext.c
@@ -46,18 +46,13 @@ void SpectralExtract(
)
{
int32 i, j, k;
- float *frm0, *frm1;
- int32 ampindex, freqindex, ampfrmjump;
+ float *frm_1;
+ int32 ampindex, freqindex;
MYFLT freqTemp, freqframes[10], freqdiff=FL(0.0), ampscale;
int32 framecurb;
- frm0 = inp;
- frm1 = pvcopy;
memcpy(pvcopy, inp, (fsize+2L)*MaxFrame*sizeof(float));
- /* for (i=0; i<(fsize+2L)*MaxFrame; i++) */
- /* *frm1++ = *frm0++; */
- frm1 = pvcopy;
- ampfrmjump = (fsize+2L) / 2L;
+ frm_1 = pvcopy;
for (j=0; j<(fsize/2L + 1L); j++) {
ampindex = j + j;
freqindex = ampindex + 1L;
@@ -66,7 +61,7 @@ void SpectralExtract(
freqdiff = FL(0.0);
/* get frequencies from 6 or less consecutive frames */
for (k=0; k<=framecurb; k++)
- freqframes[k] = *(frm1 + freqindex + ((fsize+2L)*k) +
+ freqframes[k] = *(frm_1 + freqindex + ((fsize+2L)*k) +
((fsize+2L)*i));
/* average the deviation over framecurb interframe periods */
@@ -78,18 +73,18 @@ void SpectralExtract(
if (mode==1) { /* lets through just the "noisy" parts */
if (freqdiff > freqlim && freqdiff < freqlim * 2) {
ampscale = (freqdiff - freqlim) / freqlim;
- frm1[ampindex+((fsize+2L)*i)] *= ampscale;
+ frm_1[ampindex+((fsize+2L)*i)] *= ampscale;
}
else if (freqdiff <= freqlim)
- frm1[ampindex+((fsize+2L)*i)] = FL(0.0);
+ frm_1[ampindex+((fsize+2L)*i)] = FL(0.0);
}
else if (mode==2) { /* lets through just the stable-pitched parts */
if (freqdiff < freqlim) {
ampscale = (freqlim - freqdiff) / freqlim;
- frm1[ampindex+((fsize+2L)*i)] *= ampscale;
+ frm_1[ampindex+((fsize+2L)*i)] *= ampscale;
}
else
- frm1[ampindex+((fsize+2L)*i)] = FL(0.0);
+ frm_1[ampindex+((fsize+2L)*i)] = FL(0.0);
}
}
}
@@ -102,17 +97,17 @@ MYFLT PvocMaxAmp(
)
{
int32 j, k;
- float *frm0, *frmx;
+ float *frm_0, *frmx;
int32 ampindex;
MYFLT MaxAmpInData = FL(0.0);
- frm0 = inp;
+ frm_0 = inp;
/* find max amp in the whole pvoc file */
for (j=0; j<(fsize/2L + 1L); ++j) {
ampindex = j + j;
for (k=0; k<=MaxFrame; k++) {
- frmx = frm0 + ((fsize+2L)*k);
+ frmx = frm_0 + ((fsize+2L)*k);
MaxAmpInData = (frmx[ampindex] > MaxAmpInData ?
frmx[ampindex] : MaxAmpInData);
}
diff --git a/Opcodes/pvs_ops.c b/Opcodes/pvs_ops.c
index 2779fe7..255c8ee 100644
--- a/Opcodes/pvs_ops.c
+++ b/Opcodes/pvs_ops.c
@@ -21,13 +21,15 @@
#include "pvs_ops.h"
+/*
PUBLIC int csoundModuleCreate(CSOUND *csound)
{
(void) csound;
return 0;
}
+*/
-PUBLIC int csoundModuleInit(CSOUND *csound)
+PUBLIC int pvsopc_ModuleInit(CSOUND *csound)
{
int err = 0;
@@ -42,8 +44,10 @@ PUBLIC int csoundModuleInit(CSOUND *csound)
return (err ? CSOUND_ERROR : CSOUND_SUCCESS);
}
+/*
PUBLIC int csoundModuleInfo(void)
{
return ((CS_APIVERSION << 16) + (CS_APISUBVER << 8) + (int) sizeof(MYFLT));
}
+*/
diff --git a/Opcodes/pvs_ops.h b/Opcodes/pvs_ops.h
index 6b0f02b..6704885 100644
--- a/Opcodes/pvs_ops.h
+++ b/Opcodes/pvs_ops.h
@@ -22,7 +22,11 @@
#ifndef CSOUND_PVS_OPS_H
#define CSOUND_PVS_OPS_H
-#include "csdl.h"
+/* #include "csdl.h" */
+#include "csoundCore.h"
+
+#include "interlocks.h"
+
extern int ifd_init_(CSOUND *);
extern int partials_init_(CSOUND *);
diff --git a/Opcodes/pvsbasic.c b/Opcodes/pvsbasic.c
index 820e46b..b282511 100644
--- a/Opcodes/pvsbasic.c
+++ b/Opcodes/pvsbasic.c
@@ -444,8 +444,8 @@ int pvstanal(CSOUND *csound, PVST *p)
/* audio samples are stored in a function table */
ft = csound->FTnp2Find(csound,p->knum);
if (ft == NULL){
- csound->PerfError(csound, "could not find table number %d\n", (int) *p->knum);
- return NOTOK;
+ csound->PerfError(csound, "could not find table number %d\n", (int) *p->knum);
+ return NOTOK;
}
@@ -466,7 +466,7 @@ int pvstanal(CSOUND *csound, PVST *p)
for (j=0; j < nchans; j++) {
memset(p->fout[j]->frame.auxp, 0, sizeof(float)*(N+2));
p->fout[j]->framecount++;
- }
+ }
goto end;
}
@@ -491,7 +491,7 @@ int pvstanal(CSOUND *csound, PVST *p)
frac = pos - post;
post *= nchans;
post += j;
- if (post < 0 || post >= size ) in = 0.0;
+ if (post < 0 || post >= size ) in = 0.0;
else in = tab[post] + frac*(tab[post+nchans] - tab[post]);
fwin[i] = amp * in * win[i]; /* window it */
/* back windo, bwin */
@@ -508,7 +508,7 @@ int pvstanal(CSOUND *csound, PVST *p)
if (post < 0 || post >= size ) in = 0.0;
else in = tab[post];
nwin[i] = amp * in * win[i];
- }
+ }
/* increment read pos according to pitch transposition */
pos += pitch;
}
@@ -754,12 +754,12 @@ static int pvsoscprocess(CSOUND *csound, PVSOSC *p)
if (cbin != 0) {
for (i=cbin-1;i < cbin+3 &&i < NB ; i++) {
if (i-cfbin == 0) a = 1;
- else a = sin(i-cfbin)/(i-cfbin);
+ else a = sin(i-cfbin)/(i-cfbin);
fout[i].re = amp*a*a*a;
fout[i].im = freq;
}
if (type==2) m++;
- }
+ }
}
}
return OK;
@@ -792,7 +792,7 @@ static int pvsoscprocess(CSOUND *csound, PVSOSC *p)
fout[k+1] = freq;
}
if (type==2) n++;
- }
+ }
}
p->fout->framecount = p->lastframe;
}
@@ -2158,8 +2158,7 @@ int pvs2tab(CSOUND *csound, PVS2TAB_T *p){
for(i = 0; i < size && i < N+2; i++)
p->ans->data[i] = (MYFLT) fsig[i];
*p->framecount = (MYFLT) p->fsig->framecount;
-
-
+ return OK;
}
typedef struct tab2pvs_t {
@@ -2218,7 +2217,8 @@ static OENTRY localops[] = {
(SUBR) pvsshift},
{"pvsfilter", sizeof(PVSFILTER), 3, "f", "fffp", (SUBR) pvsfilterset,
(SUBR) pvsfilter},
- {"pvscale", sizeof(PVSSCALE), 3, "f", "fkOPO", (SUBR) pvsscaleset, (SUBR) pvsscale},
+ {"pvscale", sizeof(PVSSCALE), 3, "f", "fkOPO",
+ (SUBR) pvsscaleset, (SUBR) pvsscale},
{"pvshift", sizeof(PVSSHIFT), 3, "f", "fkkOPO", (SUBR) pvsshiftset,
(SUBR) pvsshift},
{"pvsmix", sizeof(PVSMIX), 3, "f", "ff", (SUBR) pvsmixset, (SUBR) pvsmix, NULL},
@@ -2226,7 +2226,7 @@ static OENTRY localops[] = {
(SUBR) pvsfilter},
{"pvsblur", sizeof(PVSBLUR), 3, "f", "fki", (SUBR) pvsblurset, (SUBR) pvsblur,
NULL},
- {"pvstencil", sizeof(PVSTENCIL), 3, "f", "fkki", (SUBR) pvstencilset,
+ {"pvstencil", sizeof(PVSTENCIL), TR|3, "f", "fkki", (SUBR) pvstencilset,
(SUBR) pvstencil},
{"pvsinit", sizeof(PVSINI), 1, "f", "ioopo", (SUBR) pvsinit, NULL, NULL},
{"pvsbin", sizeof(PVSBIN), 3, "ss", "fk", (SUBR) pvsbinset,
diff --git a/Opcodes/pvsbuffer.c b/Opcodes/pvsbuffer.c
index 5b174a4..7e1448c 100644
--- a/Opcodes/pvsbuffer.c
+++ b/Opcodes/pvsbuffer.c
@@ -19,7 +19,10 @@
02111-1307 USA
*/
-#include "csdl.h"
+// #include "csdl.h"
+#include "csoundCore.h"
+#include "interlocks.h"
+
#include "pstream.h"
typedef struct {
@@ -82,7 +85,8 @@ static int pvsbufferset(CSOUND *csound, PVSBUFFER *p)
phandle = (FSIG_HANDLE **) csound->QueryGlobalVariable(csound,varname);
/*csound->Message(csound, "%p -> %p \n", p->handle, phandle); */
if (phandle == NULL)
- csound->InitError(csound, Str("error... could not create global var for handle\n"));
+ csound->InitError(csound,
+ Str("error... could not create global var for handle\n"));
else
*phandle = p->handle;
}
@@ -133,14 +137,16 @@ typedef struct {
static int pvsbufreadset(CSOUND *csound, PVSBUFFERREAD *p)
{
int N;
- FSIG_HANDLE *handle, **phandle;
+ FSIG_HANDLE *handle=NULL, **phandle;
char varname[32];
sprintf(varname, "::buffer%d", (int)(*p->hptr));
/* csound->Message(csound, "%s:\n", varname); */
phandle = (FSIG_HANDLE **) csound->QueryGlobalVariable(csound,varname);
if (phandle == NULL)
- csound->InitError(csound, Str("error... could not read handle from global variable\n"));
+ csound->InitError(csound,
+ Str("error... could not read handle from "
+ "global variable\n"));
else
handle = *phandle;
p->optr = *p->hptr;
@@ -187,7 +193,9 @@ static int pvsbufreadset(CSOUND *csound, PVSBUFFERREAD *p)
sprintf(varname, "::buffer%d", (int)(*p->hptr));
phandle = (FSIG_HANDLE **) csound->QueryGlobalVariable(csound,varname);
if (phandle == NULL)
- csound->PerfError(csound, Str("error... could not read handle from global variable\n"));
+ csound->PerfError(csound,
+ Str("error... could not read handle "
+ "from global variable\n"));
else
handle = *phandle;
}
@@ -273,13 +281,15 @@ static int pvsbufreadproc2(CSOUND *csound, PVSBUFFERREAD *p)
frames = handle->frames-1;
ftab = csound->FTFind(csound, p->strt);
if (ftab->flen < N/2+1)
- csound->PerfError(csound, "table length too small: needed %d, got %d\n",
+ csound->PerfError(csound,
+ Str("table length too small: needed %d, got %d\n"),
N/2+1, ftab->flen);
tab = tab1 = ftab->ftable;
ftab = csound->FTFind(csound, p->end);
if (ftab->flen < N/2+1)
- csound->PerfError(csound, "table length too small: needed %d, got %d\n",
- N/2+1, ftab->flen);
+ csound->PerfError(csound,
+ Str("table length too small: needed %d, got %d\n"),
+ N/2+1, ftab->flen);
tab2 = ftab->ftable;
for (i=0; i < N+2; i++){
pos = (*p->ktime - tab[i])*(sr/overlap);
@@ -293,9 +303,9 @@ static int pvsbufreadproc2(CSOUND *csound, PVSBUFFERREAD *p)
frac = pos - posi;
fout[i] = frame1[i] + frac*(frame2[i] - frame1[i]);
} else
- fout[i] = 0.0f;
+ fout[i] = 0.0f;
if (tab == tab1) tab = tab2;
- else tab = tab1;
+ else tab = tab1;
}
p->scnt -= overlap;
p->fout->framecount++;
@@ -311,10 +321,15 @@ static int pvsbufreadproc2(CSOUND *csound, PVSBUFFERREAD *p)
#define S(x) sizeof(x)
-static OENTRY localops[] = {
- {"pvsbuffer", S(PVSBUFFER), 3, "ik", "fi", (SUBR)pvsbufferset, (SUBR)pvsbufferproc, NULL},
- {"pvsbufread", S(PVSBUFFERREAD), 3, "f", "kkOOo", (SUBR)pvsbufreadset, (SUBR)pvsbufreadproc, NULL},
- {"pvsbufread2", S(PVSBUFFERREAD), 3, "f", "kkkk", (SUBR)pvsbufreadset, (SUBR)pvsbufreadproc2, NULL}
+/* static */
+static OENTRY pvsbuffer_localops[] = {
+ {"pvsbuffer", S(PVSBUFFER), 3, "ik", "fi",
+ (SUBR)pvsbufferset, (SUBR)pvsbufferproc, NULL},
+ {"pvsbufread", S(PVSBUFFERREAD), 3, "f", "kkOOo",
+ (SUBR)pvsbufreadset, (SUBR)pvsbufreadproc, NULL},
+ {"pvsbufread2", S(PVSBUFFERREAD), 3, "f", "kkkk",
+ (SUBR)pvsbufreadset, (SUBR)pvsbufreadproc2, NULL}
};
-LINKAGE
+LINKAGE1(pvsbuffer_localops)
+/* LINKAGE */
diff --git a/Opcodes/pvsgendy.c b/Opcodes/pvsgendy.c
index ef6c1dc..df4415a 100644
--- a/Opcodes/pvsgendy.c
+++ b/Opcodes/pvsgendy.c
@@ -107,11 +107,12 @@ static int pvsgendy(CSOUND *csound, PVSGENDY *p)
return csound->PerfError(csound, Str("pvsgendy: not initialised"));
}
-static OENTRY localops[] = {
- {"pvsgendy", sizeof(PVSGENDY), 3, "f", "fkk", (SUBR) pvsgendyinit, (SUBR) pvsgendy, (SUBR) NULL }
+static OENTRY pvsgendy_localops[] = {
+ { "pvsgendy", sizeof(PVSGENDY), 3, "f", "fkk",
+ (SUBR) pvsgendyinit, (SUBR) pvsgendy, (SUBR) NULL }
};
-LINKAGE
+LINKAGE1(pvsgendy_localops)
diff --git a/Opcodes/py/pythonopcodes.c b/Opcodes/py/pythonopcodes.c
index 1a37331..1117521 100644
--- a/Opcodes/py/pythonopcodes.c
+++ b/Opcodes/py/pythonopcodes.c
@@ -244,7 +244,7 @@ static int pylcallni_irate(CSOUND *csound, PYCALLN *p)
/* PYTHON OPCODES */
-static OENTRY localops[] = {
+OENTRY python_localops[] = {
/* INITIALIZATION */
@@ -398,5 +398,5 @@ static OENTRY localops[] = {
};
-LINKAGE
+LINKAGE1(python_localops)
diff --git a/Opcodes/py/pyx.auto.c b/Opcodes/py/pyx.auto.c
index 3427b0e..e6a6227 100644
--- a/Opcodes/py/pyx.auto.c
+++ b/Opcodes/py/pyx.auto.c
@@ -14,6 +14,7 @@ static int pyexec_krate(CSOUND *csound, PYEXEC *p)
return OK;
}
+#if 0
static int pyexeci_irate(CSOUND *csound, PYEXEC *p)
{
char source[1024];
@@ -28,6 +29,7 @@ static int pyexeci_irate(CSOUND *csound, PYEXEC *p)
Py_DECREF(result);
return OK;
}
+#endif
static int pylexec_irate(CSOUND *csound, PYEXEC *p)
{
@@ -240,6 +242,7 @@ static int pyeval_krate(CSOUND *csound, PYEVAL *p)
return OK;
}
+#if 0
static int pyevali_irate(CSOUND *csound, PYEVAL *p)
{
char source[1024];
@@ -260,6 +263,7 @@ static int pyevali_irate(CSOUND *csound, PYEVAL *p)
Py_DECREF(result);
return OK;
}
+#endif
static int pyleval_irate(CSOUND *csound, PYEVAL *p)
{
@@ -386,6 +390,7 @@ static int pyassign_krate(CSOUND *csound, PYASSIGN *p)
return OK;
}
+#if 0
static int pyassigni_irate(CSOUND *csound, PYASSIGN *p)
{
char source[1024];
@@ -400,6 +405,7 @@ static int pyassigni_irate(CSOUND *csound, PYASSIGN *p)
Py_DECREF(result);
return OK;
}
+#endif
static int pylassign_irate(CSOUND *csound, PYASSIGN *p)
{
diff --git a/Opcodes/scoreline.c b/Opcodes/scoreline.c
index bb0ce7e..306814d 100644
--- a/Opcodes/scoreline.c
+++ b/Opcodes/scoreline.c
@@ -21,7 +21,9 @@
02111-1307 USA
*/
-#include "csdl.h"
+//#include "csdl.h"
+#include "csoundCore.h"
+
typedef struct _inmess {
OPDS h;
MYFLT *SMess, *ktrig;
@@ -55,13 +57,11 @@ int rewindscore(CSOUND *csound, SCOREPOS *p){
}
-static OENTRY localops[] = {
+static OENTRY scoreline_localops[] = {
{"scoreline_i", sizeof(INMESS), 1, "", "S", (SUBR)messi, NULL, NULL},
{"scoreline", sizeof(INMESS), 2, "", "Sk", NULL, (SUBR)messk, NULL},
{"setscorepos", sizeof(SCOREPOS), 1, "", "i", (SUBR)setscorepos, NULL, NULL},
{"rewindscore", sizeof(SCOREPOS), 1, "", "", (SUBR)rewindscore, NULL, NULL}
};
-
-
-LINKAGE
+LINKAGE1(scoreline_localops)
diff --git a/Opcodes/seqtime.c b/Opcodes/seqtime.c
index 576d78d..5a7ea21 100644
--- a/Opcodes/seqtime.c
+++ b/Opcodes/seqtime.c
@@ -255,8 +255,8 @@ static int seqtim2(CSOUND *csound, SEQTIM2 *p)
#define S(x) sizeof(x)
static OENTRY localops[] = {
-{ "seqtime", S(SEQTIM), 3, "k", "kkkkk", (SUBR)seqtim_set, (SUBR)seqtim },
-{ "seqtime2", S(SEQTIM2),3, "k", "kkkkkk", (SUBR)seqtim2_set, (SUBR)seqtim2}
+{ "seqtime", S(SEQTIM), TR|3, "k", "kkkkk", (SUBR)seqtim_set, (SUBR)seqtim },
+{ "seqtime2", S(SEQTIM2),TR|3, "k", "kkkkkk", (SUBR)seqtim2_set, (SUBR)seqtim2}
};
int seqtime_init_(CSOUND *csound)
diff --git a/Opcodes/serial.c b/Opcodes/serial.c
index 6dbe222..2883889 100644
--- a/Opcodes/serial.c
+++ b/Opcodes/serial.c
@@ -1,25 +1,56 @@
+/*****************************************************
+
+ CSOUND SERIAL PORT OPCODES
+ ma++ ingalls, 2011/9/4
+ modified for WIndows John ffitch
+ * based on "Arduino-serial"
+ * Copyright (c) 2006, Tod E. Kurt, tod at todbot.com
+ * http://todbot.com/blog/
+
+ Copyright (C) 2011 matt ingalls
+ based on "Arduino-serial", Copyright (c) 2006, Tod E. Kurt, tod at todbot.com
+ http://todbot.com/blog/ and licenced LGPL to csound
+
+ This file is part of Csound.
+
+ The Csound Library is free software; you can redistribute it
+ and/or modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ Csound is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with Csound; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA
+*/
+
#include <stdlib.h>
#include <stdint.h> /* Standard types */
#include <string.h> /* String function definitions */
+
+#ifndef WIN32
#include <unistd.h> /* UNIX standard function definitions */
#include <fcntl.h> /* File control definitions */
-#include <errno.h> /* Error number definitions */
#include <termios.h> /* POSIX terminal control definitions */
#include <sys/ioctl.h>
-#include <getopt.h>
+#else
+#include "windows.h"
+#endif
#include "csdl.h"
-#include "csound.h"
+
+/* **************************************************
+ As far as I can tell his should work on Windows
+ as well using "COM1" etc
+ ************************************************** */
+
/*****************************************************
-
- CSOUND SERIAL PORT OPCODES
- ma++ ingalls, 2011/9/4
-
- * based on "Arduino-serial"
- * Copyleft (c) 2006, Tod E. Kurt, tod at todbot.com
- * http://todbot.com/blog/
-
open a port. baudRate defaults to 9600
iPort serialBegin SPortName [, baudRate ]
@@ -62,6 +93,28 @@ TODO: (might need some kind of threaded buffer-read?)
*****************************************************/
+#ifdef WIN32
+typedef struct SERIAL_GLOBALS_ {
+ CSOUND *csound;
+ int maxind;
+ HANDLE handles[10];
+} SERIAL_GLOBALS;
+
+static HANDLE get_port(CSOUND *csound, int port)
+{
+ HANDLE hport;
+ SERIAL_GLOBALS *q;
+ q = (SERIAL_GLOBALS*) csound->QueryGlobalVariable(csound,
+ "serialGlobals_");
+ if (q == NULL) {
+ csound->PerfError(csound, Str("No ports available"));
+ return NULL;
+ }
+ hport = (HANDLE)q->handles[port];
+ return hport;
+}
+#endif
+
typedef struct {
OPDS h;
MYFLT *returnedPort, *portName, *baudRate;
@@ -113,16 +166,18 @@ typedef struct {
int serialPeekByte(CSOUND *csound, SERIALPEEK *p);
//------------------
-
+#ifndef WIN32
// takes the string name of the serial port (e.g. "/dev/tty.usbserial","COM1")
// and a baud rate (bps) and connects to that port at that speed and 8N1.
// opens the port in fully raw mode so you can send binary data.
// returns valid fd, or -1 on error
-int serialport_init(const char* serialport, int baud)
+int serialport_init(CSOUND *csound, const char* serialport, int baud)
{
struct termios toptions;
int fd;
-
+ speed_t brate;
+
+ csound = NULL; /* Not used */
fprintf(stderr,"init_serialport: opening port %s @ %d bps\n",
serialport,baud);
@@ -136,21 +191,20 @@ int serialport_init(const char* serialport, int baud)
perror("init_serialport: Couldn't get term attributes");
return -1;
}
- //speed_t brate = baud; // let you override switch below if needed
- speed_t brate = B9600; // ma++ changed to always default to 9600
switch(baud) {
- case 4800: brate=B4800; break;
- case 9600: brate=B9600; break;
+ default: brate = B9600; break;
+ case 4800: brate = B4800; break;
+ case 9600: brate = B9600; break;
#ifdef B14400
- case 14400: brate=B14400; break;
+ case 14400: brate = B14400; break;
#endif
- case 19200: brate=B19200; break;
+ case 19200: brate = B19200; break;
#ifdef B28800
- case 28800: brate=B28800; break;
+ case 28800: brate = B28800; break;
#endif
- case 38400: brate=B38400; break;
- case 57600: brate=B57600; break;
- case 115200: brate=B115200; break;
+ case 38400: brate = B38400; break;
+ case 57600: brate = B57600; break;
+ case 115200: brate = B115200; break;
}
cfsetispeed(&toptions, brate);
cfsetospeed(&toptions, brate);
@@ -180,33 +234,156 @@ int serialport_init(const char* serialport, int baud)
return fd;
}
+#else
+
+int serialport_init(CSOUND *csound, const char* serialport, int baud)
+{
+ HANDLE hSerial;
+ DCB dcbSerialParams = {0};
+ int i;
+ /* NEED TO CREATE A GLOBAL FOR HANDLE */
+ SERIAL_GLOBALS *q;
+ q = (SERIAL_GLOBALS*) csound->QueryGlobalVariable(csound,
+ "serialGlobals_");
+ if (q == NULL) {
+ if (csound->CreateGlobalVariable(csound, "serialGlobals_",
+ sizeof(SERIAL_GLOBALS)) != 0)
+ csound->Die(csound, Str("serial: failed to allocate globals"));
+ q = (SERIAL_GLOBALS*) csound->QueryGlobalVariable(csound,
+ "serialGlobals_");
+ q->csound = csound;
+ q->maxind = 0;
+ }
+ /* WCHAR wport[256]; */
+ /* MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED, serialport, */
+ /* strlen(serialport)+1, */
+ /* (LPCSTR)wport, 256); */
+ /* hSerial = CreateFile(serialport, GENERIC_READ | GENERIC_WRITE, 0, */
+ /* 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); */
+ hSerial = CreateFileA(serialport, GENERIC_READ | GENERIC_WRITE, 0,
+ NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+ //Check if the connection was successfull
+ if (hSerial==INVALID_HANDLE_VALUE) {
+ //If not success full display an Error
+ return csound->InitError(csound, Str("%s not available.\n"), serialport);
+ }
+ memset(&dcbSerialParams, 0, sizeof(dcbSerialParams));
+ dcbSerialParams.DCBlength=sizeof(dcbSerialParams);
+ switch (baud) {
+ case 1200: dcbSerialParams.BaudRate = CBR_1200; break;
+ case 2400: dcbSerialParams.BaudRate = CBR_2400; break;
+ case 4800: dcbSerialParams.BaudRate = CBR_4800; break;
+ default:
+ case 9600: dcbSerialParams.BaudRate = CBR_9600; break;
+ case 14400: dcbSerialParams.BaudRate = CBR_14400; break;
+ case 19200: dcbSerialParams.BaudRate = CBR_19200; break;
+ case 38400: dcbSerialParams.BaudRate = CBR_38400; break;
+ case 56000: dcbSerialParams.BaudRate = CBR_56000; break;
+ case 57600: dcbSerialParams.BaudRate = CBR_57600; break;
+ case 115200: dcbSerialParams.BaudRate = CBR_115200; break;
+ case 128000: dcbSerialParams.BaudRate = CBR_128000; break;
+ case 256000: dcbSerialParams.BaudRate = CBR_256000; break;
+ }
+ dcbSerialParams.ByteSize=8;
+ dcbSerialParams.StopBits=ONESTOPBIT;
+ dcbSerialParams.Parity=NOPARITY;
+ SetCommState(hSerial, &dcbSerialParams);
+ for(i=0; i>q->maxind; i++) {
+ if (q->handles[i]==NULL) {
+ q->handles[i] = hSerial;
+ return i;
+ }
+ }
+ if (q->maxind>=10)
+ return csound->InitError(csound, Str("Number of serial handles exhausted"));
+ q->handles[q->maxind++] = hSerial;
+ return q->maxind-1;
+}
+/* Also
+#define BAUD_075 1
+#define BAUD_110 2
+#define BAUD_134_5 4
+#define BAUD_150 8
+#define BAUD_300 16
+#define BAUD_600 32
+#define BAUD_1200 64
+#define BAUD_1800 128
+#define BAUD_2400 256
+#define BAUD_4800 512
+#define BAUD_7200 1024
+#define BAUD_9600 2048
+#define BAUD_14400 4096
+#define BAUD_19200 8192
+#define BAUD_38400 16384
+#define BAUD_56K 32768
+#define BAUD_128K 65536
+#define BAUD_115200 131072
+#define BAUD_57600 262144
+*/
+#endif
+
int serialBegin(CSOUND *csound, SERIALBEGIN *p)
{
- *p->returnedPort = serialport_init((char *)p->portName, *p->baudRate);
+ *p->returnedPort =
+ (MYFLT)serialport_init(csound, (char *)p->portName, *p->baudRate);
return OK;
}
+
int serialEnd(CSOUND *csound, SERIALEND *p)
{
- close(*p->port);
+#ifdef WN32
+ SERIAL_GLOBALS *q;
+ q = (SERIAL_GLOBALS*) csound->QueryGlobalVariable(csound,
+ "serialGlobals_");
+ if (q = NULL)
+ return csound->PerfError(csound, Str("Nothing to close"));
+ CloseHandle((HANDLE)q->handles[(int)p->port]);
+ q->handles[(int)*p->port] = NULL;
+#else
+ close((int)*p->port);
+#endif
return OK;
}
+
int serialWrite(CSOUND *csound, SERIALWRITE *p)
{
- if (p->XSTRCODE & 2)
- write(*p->port, p->toWrite, strlen((char *)p->toWrite));
+#ifdef WIN32
+ HANDLE port = get_port(csound, (int)*p->port);
+ if (port==NULL) return NOTOK;
+#endif
+ if (p->XSTRCODE & 2) {
+#ifndef WIN32
+ write((int)*p->port, p->toWrite, strlen((char *)p->toWrite));
+#else
+ int nbytes;
+ WriteFile(port,p->toWrite, strlen((char *)p->toWrite),
+ (PDWORD)&nbytes, NULL);
+#endif
+ }
else {
unsigned char b = *p->toWrite;
- write(*p->port, &b, 1);
+#ifndef WIN32
+ write((int)*p->port, &b, 1);
+#else
+ int nbytes;
+ WriteFile(port, &b, 1, (PDWORD)&nbytes, NULL);
+#endif
}
-
return OK;
}
int serialRead(CSOUND *csound, SERIALREAD *p)
{
unsigned char b = 0;
- ssize_t bytes = read(*p->port, &b, 1);
+ ssize_t bytes;
+#ifdef WIN32
+ HANDLE port = get_port(csound, (int)*p->port);
+ if (port==NULL) return NOTOK;
+ ReadFile(port, &b, 1, (PDWORD)&bytes, NULL);
+#else
+ bytes = read((int)*p->port, &b, 1);
+#endif
if (bytes > 0)
*p->rChar = b;
else
@@ -218,7 +395,14 @@ int serialRead(CSOUND *csound, SERIALREAD *p)
int serialPrint(CSOUND *csound, SERIALPRINT *p)
{
char str[32768];
- ssize_t bytes = read(*p->port, str, 32768);
+ ssize_t bytes;
+#ifdef WIN32
+ HANDLE port = get_port(csound, (int)*p->port);
+ if (port==NULL) return NOTOK;
+ ReadFile(port, str, 32768, (PDWORD)&bytes, NULL);
+#else
+ bytes = read((int)*p->port, str, 32768);
+#endif
if (bytes > 0) {
str[bytes] = 0; // terminate
csound->MessageS(csound, CSOUNDMSG_ORCH, "%s", str);
@@ -228,7 +412,9 @@ int serialPrint(CSOUND *csound, SERIALPRINT *p)
int serialFlush(CSOUND *csound, SERIALFLUSH *p)
{
+#ifndef WIN32
tcflush(*p->port, TCIFLUSH); // who knows if this works...
+#endif
return OK;
}
@@ -247,7 +433,7 @@ int serialPeekByte(CSOUND *csound, SERIALPEEK *p)
#define S(x) sizeof(x)
-static OENTRY localops[] = {
+static OENTRY serial_localops[] = {
{ (char *)"serialBegin", S(SERIALBEGIN), 1, (char *)"i", (char *)"So",
(SUBR)serialBegin, (SUBR)NULL, (SUBR)NULL },
{ (char *)"serialEnd", S(SERIALEND), 2, (char *)"", (char *)"i",
@@ -262,8 +448,10 @@ static OENTRY localops[] = {
(SUBR)NULL, (SUBR)serialPrint, (SUBR)NULL },
{ (char *)"serialFlush", S(SERIALFLUSH), 2, (char *)"", (char *)"i",
(SUBR)NULL, (SUBR)serialFlush, (SUBR)NULL },
- { (char *)"serialAvailable", S(SERIALAVAIL), 2, (char *)"k", (char *)"i",
- (SUBR)NULL, (SUBR)serialAvailable, (SUBR)NULL },
- { (char *)"serialPeekByte", S(SERIALPEEK), 2, (char *)"k", (char *)"i",
- (SUBR)NULL, (SUBR)serialPeekByte, (SUBR)NULL }
+ /* { (char *)"serialAvailable", S(SERIALAVAIL), 2, (char *)"k", (char *)"i", */
+ /* (SUBR)NULL, (SUBR)serialAvailable, (SUBR)NULL }, */
+ /* { (char *)"serialPeekByte", S(SERIALPEEK), 2, (char *)"k", (char *)"i", */
+ /* (SUBR)NULL, (SUBR)serialPeekByte, (SUBR)NULL } */
};
+
+LINKAGE1(serial_localops)
diff --git a/Opcodes/sfont.c b/Opcodes/sfont.c
index dff7df6..82cd1e4 100644
--- a/Opcodes/sfont.c
+++ b/Opcodes/sfont.c
@@ -29,7 +29,9 @@
documentation of your C compiler to choose the appropriate compiler
directive switch. */
-#include "csdl.h"
+// #include "csdl.h"
+#include "csoundCore.h"
+#include "interlocks.h"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
@@ -65,12 +67,13 @@ typedef struct _sfontg {
MYFLT pitches[128];
} sfontg;
-PUBLIC int csoundModuleDestroy(CSOUND *csound)
+PUBLIC int sfont_ModuleDestroy(CSOUND *csound)
{
int j,k,l;
SFBANK *sfArray;
sfontg *globals;
globals = (sfontg *) (csound->QueryGlobalVariable(csound, "::sfontg"));
+ if (globals == NULL) return 0;
sfArray = globals->sfArray;
for (j=0; j<globals->currSFndx; j++) {
@@ -2522,7 +2525,7 @@ static OENTRY localops[] = {
{ NULL, 0, 0, NULL, NULL, (SUBR) NULL, (SUBR) NULL, (SUBR) NULL }
};
-PUBLIC int csoundModuleCreate(CSOUND *csound)
+PUBLIC int sfont_ModuleCreate(CSOUND *csound)
{
int j;
sfontg *globals;
@@ -2543,7 +2546,7 @@ PUBLIC int csoundModuleCreate(CSOUND *csound)
return OK;
}
-PUBLIC int csoundModuleInit(CSOUND *csound)
+PUBLIC int sfont_ModuleInit(CSOUND *csound)
{
OENTRY *ep = (OENTRY*) &(localops[0]);
int err = 0;
diff --git a/Opcodes/sftype.h b/Opcodes/sftype.h
index 291d7aa..027b0f5 100644
--- a/Opcodes/sftype.h
+++ b/Opcodes/sftype.h
@@ -51,7 +51,9 @@
# undef WORDS_BIGENDIAN
#endif
+#ifndef WIN32
typedef uint32_t DWORD;
+#endif
/* typedef int BOOL; */
typedef uint8_t BYTE;
typedef uint16_t WORD;
diff --git a/Opcodes/shaker.c b/Opcodes/shaker.c
index 6f3b09f..bc7aac5 100644
--- a/Opcodes/shaker.c
+++ b/Opcodes/shaker.c
@@ -50,8 +50,8 @@ This code would implement individual grain envelopes
But we're smarter than that!!! See below
*/
-
-#include "csdl.h"
+// #include "csdl.h"
+#include "csoundCore.h"
#include "shaker.h"
int shakerset(CSOUND *csound, SHAKER *p)
diff --git a/Opcodes/shape.c b/Opcodes/shape.c
index 87030dc..0ddef10 100644
--- a/Opcodes/shape.c
+++ b/Opcodes/shape.c
@@ -30,7 +30,9 @@
02111-1307 USA
*/
-#include "csdl.h"
+#include "csoundCore.h"
+#include "interlocks.h"
+
#include <math.h>
@@ -64,7 +66,7 @@ static int PowerShape(CSOUND* csound, POWER_SHAPE* data)
for (n=0; n<nsmps; n++) {
cur = in[n];
if (cur == FL(0.0)) out[n] = FL(0.0); /* make 0^0 = 0 for continuity */
- else out[n] = maxampl; /* otherwise, x^0 = 1.0 */
+ else out[n] = FL(1.0)/invmaxampl; /* otherwise, x^0 = 1.0 */
}
}
else {
@@ -497,7 +499,7 @@ static int Phasine(CSOUND* csound, PHASINE* data)
#define S(x) sizeof(x)
-static OENTRY localops[] = {
+static OENTRY shape_localops[] = {
/* { "phasine", S(PHASINE), 5, "a", "akp",
(SUBR)PhasineInit, NULL, (SUBR)Phasine }, */
{ "powershape", S(POWER_SHAPE), 5, "a", "akp",
@@ -512,4 +514,4 @@ static OENTRY localops[] = {
(SUBR)SyncPhasorInit, NULL, (SUBR)SyncPhasor },
};
-LINKAGE
+LINKAGE1(shape_localops)
diff --git a/Opcodes/signalflowgraph.cpp b/Opcodes/signalflowgraph.cpp
index e805bf5..91d7032 100644
--- a/Opcodes/signalflowgraph.cpp
+++ b/Opcodes/signalflowgraph.cpp
@@ -244,14 +244,14 @@ struct Outleta : public OpcodeBase<Outleta> {
sourceOutletId[0] = 0;
const char *insname = csound->instrtxtp[h.insdshead->insno]->insname;
if (insname) {
- std::sprintf(sourceOutletId, "%s:%s", insname, (char *)Sname);
+ std::sprintf(sourceOutletId, "%s:%s", insname, (char *)Sname);
} else {
- std::sprintf(sourceOutletId, "%d:%s", h.insdshead->insno, (char *)Sname);
+ std::sprintf(sourceOutletId, "%d:%s", h.insdshead->insno, (char *)Sname);
}
std::vector<Outleta *> &aoutlets = aoutletsForCsoundsForSourceOutletIds[csound][sourceOutletId];
if (std::find(aoutlets.begin(), aoutlets.end(), this) == aoutlets.end()) {
- aoutlets.push_back(this);
- warn(csound, "Created instance 0x%x of %d instances of outlet %s\n", this, aoutlets.size(), sourceOutletId);
+ aoutlets.push_back(this);
+ warn(csound, "Created instance 0x%x of %d instances of outlet %s\n", this, aoutlets.size(), sourceOutletId);
}
}
//warn(csound, "ENDED Outleta::init()...\n");
@@ -281,34 +281,34 @@ struct Inleta : public OpcodeBase<Inleta> {
sampleN = csound->GetKsmps(csound);
warn(csound, "sourceOutlets: 0x%x\n", sourceOutlets);
if (std::find(aoutletVectorsForCsounds[csound].begin(),
- aoutletVectorsForCsounds[csound].end(),
- sourceOutlets) == aoutletVectorsForCsounds[csound].end()) {
- sourceOutlets = new std::vector< std::vector<Outleta *> *>;
- aoutletVectorsForCsounds[csound].push_back(sourceOutlets);
+ aoutletVectorsForCsounds[csound].end(),
+ sourceOutlets) == aoutletVectorsForCsounds[csound].end()) {
+ sourceOutlets = new std::vector< std::vector<Outleta *> *>;
+ aoutletVectorsForCsounds[csound].push_back(sourceOutlets);
}
warn(csound, "sourceOutlets: 0x%x\n", sourceOutlets);
sinkInletId[0] = 0;
const char *insname = csound->instrtxtp[h.insdshead->insno]->insname;
if (insname) {
- std::sprintf(sinkInletId, "%s:%s", insname, (char *)Sname);
+ std::sprintf(sinkInletId, "%s:%s", insname, (char *)Sname);
} else {
- std::sprintf(sinkInletId, "%d:%s", h.insdshead->insno, (char *)Sname);
+ std::sprintf(sinkInletId, "%d:%s", h.insdshead->insno, (char *)Sname);
}
std::vector<Inleta *> &ainlets = ainletsForCsoundsForSinkInletIds[csound][sinkInletId];
if (std::find(ainlets.begin(), ainlets.end(), this) == ainlets.end()) {
- ainlets.push_back(this);
- warn(csound, "Created instance 0x%x of inlet %s\n", this, sinkInletId);
+ ainlets.push_back(this);
+ warn(csound, "Created instance 0x%x of inlet %s\n", this, sinkInletId);
}
// Find source outlets connecting to this.
// Any number of sources may connect to any number of sinks.
std::vector<std::string> &sourceOutletIds = connectionsForCsounds[csound][sinkInletId];
for (size_t i = 0, n = sourceOutletIds.size(); i < n; i++) {
- const std::string &sourceOutletId = sourceOutletIds[i];
- std::vector<Outleta *> &aoutlets = aoutletsForCsoundsForSourceOutletIds[csound][sourceOutletId];
- if (std::find(sourceOutlets->begin(), sourceOutlets->end(), &aoutlets) == sourceOutlets->end()) {
- sourceOutlets->push_back(&aoutlets);
- warn(csound, "Connected instances of outlet %s to instance 0x%x of inlet %s.\n", sourceOutletId.c_str(), this, sinkInletId);
- }
+ const std::string &sourceOutletId = sourceOutletIds[i];
+ std::vector<Outleta *> &aoutlets = aoutletsForCsoundsForSourceOutletIds[csound][sourceOutletId];
+ if (std::find(sourceOutlets->begin(), sourceOutlets->end(), &aoutlets) == sourceOutlets->end()) {
+ sourceOutlets->push_back(&aoutlets);
+ warn(csound, "Connected instances of outlet %s to instance 0x%x of inlet %s.\n", sourceOutletId.c_str(), this, sinkInletId);
+ }
}
warn(csound, "ENDED Inleta::init().\n");
}
@@ -324,28 +324,28 @@ struct Inleta : public OpcodeBase<Inleta> {
//warn(csound, "BEGAN Inleta::audio()...\n");
// Zero the inlet buffer.
for (int sampleI = 0; sampleI < sampleN; sampleI++) {
- asignal[sampleI] = FL(0.0);
+ asignal[sampleI] = FL(0.0);
}
// Loop over the source connections...
for (size_t sourceI = 0, sourceN = sourceOutlets->size();
- sourceI < sourceN;
- sourceI++) {
- // Loop over the source connection instances...
- std::vector<Outleta *> *instances = sourceOutlets->at(sourceI);
- for (size_t instanceI = 0, instanceN = instances->size();
- instanceI < instanceN;
- instanceI++) {
- Outleta *sourceOutlet = instances->at(instanceI);
- // Skip inactive instances.
- if (sourceOutlet->h.insdshead->actflg) {
- // Loop over the samples in the inlet buffer.
- for (int sampleI = 0;
- sampleI < sampleN;
- sampleI++) {
- asignal[sampleI] += sourceOutlet->asignal[sampleI];
- }
- }
- }
+ sourceI < sourceN;
+ sourceI++) {
+ // Loop over the source connection instances...
+ std::vector<Outleta *> *instances = sourceOutlets->at(sourceI);
+ for (size_t instanceI = 0, instanceN = instances->size();
+ instanceI < instanceN;
+ instanceI++) {
+ Outleta *sourceOutlet = instances->at(instanceI);
+ // Skip inactive instances.
+ if (sourceOutlet->h.insdshead->actflg) {
+ // Loop over the samples in the inlet buffer.
+ for (int sampleI = 0;
+ sampleI < sampleN;
+ sampleI++) {
+ asignal[sampleI] += sourceOutlet->asignal[sampleI];
+ }
+ }
+ }
}
//warn(csound, "ENDED Inleta::audio().\n");
}
@@ -369,14 +369,14 @@ struct Outletk : public OpcodeBase<Outletk> {
const char *insname = csound->instrtxtp[h.insdshead->insno]->insname;
if (insname) {
- std::sprintf(sourceOutletId, "%s:%s", insname, (char *)Sname);
+ std::sprintf(sourceOutletId, "%s:%s", insname, (char *)Sname);
} else {
- std::sprintf(sourceOutletId, "%d:%s", h.insdshead->insno, (char *)Sname);
+ std::sprintf(sourceOutletId, "%d:%s", h.insdshead->insno, (char *)Sname);
}
std::vector<Outletk *> &koutlets = koutletsForCsoundsForSourceOutletIds[csound][sourceOutletId];
if (std::find(koutlets.begin(), koutlets.end(), this) == koutlets.end()) {
- koutlets.push_back(this);
- warn(csound, "Created instance 0x%x of %d instances of outlet %s\n", this, koutlets.size(), sourceOutletId);
+ koutlets.push_back(this);
+ warn(csound, "Created instance 0x%x of %d instances of outlet %s\n", this, koutlets.size(), sourceOutletId);
}
}
return OK;
@@ -404,33 +404,33 @@ struct Inletk : public OpcodeBase<Inletk> {
ksmps = csound->GetKsmps(csound);
if (std::find(koutletVectorsForCsounds[csound].begin(),
- koutletVectorsForCsounds[csound].end(),
- sourceOutlets) == koutletVectorsForCsounds[csound].end()) {
- sourceOutlets = new std::vector< std::vector<Outletk *> *>;
- koutletVectorsForCsounds[csound].push_back(sourceOutlets);
+ koutletVectorsForCsounds[csound].end(),
+ sourceOutlets) == koutletVectorsForCsounds[csound].end()) {
+ sourceOutlets = new std::vector< std::vector<Outletk *> *>;
+ koutletVectorsForCsounds[csound].push_back(sourceOutlets);
}
sinkInletId[0] = 0;
const char *insname = csound->instrtxtp[h.insdshead->insno]->insname;
if (insname) {
- std::sprintf(sinkInletId, "%s:%s", insname, (char *)Sname);
+ std::sprintf(sinkInletId, "%s:%s", insname, (char *)Sname);
} else {
- std::sprintf(sinkInletId, "%d:%s", h.insdshead->insno, (char *)Sname);
+ std::sprintf(sinkInletId, "%d:%s", h.insdshead->insno, (char *)Sname);
}
std::vector<Inletk *> &kinlets = kinletsForCsoundsForSinkInletIds[csound][sinkInletId];
if (std::find(kinlets.begin(), kinlets.end(), this) == kinlets.end()) {
- kinlets.push_back(this);
- warn(csound, "Created instance 0x%x of inlet %s\n", this, sinkInletId);
+ kinlets.push_back(this);
+ warn(csound, "Created instance 0x%x of inlet %s\n", this, sinkInletId);
}
// Find source outlets connecting to this.
// Any number of sources may connect to any number of sinks.
std::vector<std::string> &sourceOutletIds = connectionsForCsounds[csound][sinkInletId];
for (size_t i = 0, n = sourceOutletIds.size(); i < n; i++) {
- const std::string &sourceOutletId = sourceOutletIds[i];
- std::vector<Outletk *> &koutlets = koutletsForCsoundsForSourceOutletIds[csound][sourceOutletId];
- if (std::find(sourceOutlets->begin(), sourceOutlets->end(), &koutlets) == sourceOutlets->end()) {
- sourceOutlets->push_back(&koutlets);
- warn(csound, "Connected instances of outlet %s to instance 0x%x of inlet %s.\n", sourceOutletId.c_str(), this, sinkInletId);
- }
+ const std::string &sourceOutletId = sourceOutletIds[i];
+ std::vector<Outletk *> &koutlets = koutletsForCsoundsForSourceOutletIds[csound][sourceOutletId];
+ if (std::find(sourceOutlets->begin(), sourceOutlets->end(), &koutlets) == sourceOutlets->end()) {
+ sourceOutlets->push_back(&koutlets);
+ warn(csound, "Connected instances of outlet %s to instance 0x%x of inlet %s.\n", sourceOutletId.c_str(), this, sinkInletId);
+ }
}
}
return OK;
@@ -445,19 +445,19 @@ struct Inletk : public OpcodeBase<Inletk> {
*ksignal = FL(0.0);
// Loop over the source connections...
for (size_t sourceI = 0, sourceN = sourceOutlets->size();
- sourceI < sourceN;
- sourceI++) {
- // Loop over the source connection instances...
- const std::vector<Outletk *> *instances = sourceOutlets->at(sourceI);
- for (size_t instanceI = 0, instanceN = instances->size();
- instanceI < instanceN;
- instanceI++) {
- const Outletk *sourceOutlet = instances->at(instanceI);
- // Skip inactive instances.
- if (sourceOutlet->h.insdshead->actflg) {
- *ksignal += *sourceOutlet->ksignal;
- }
- }
+ sourceI < sourceN;
+ sourceI++) {
+ // Loop over the source connection instances...
+ const std::vector<Outletk *> *instances = sourceOutlets->at(sourceI);
+ for (size_t instanceI = 0, instanceN = instances->size();
+ instanceI < instanceN;
+ instanceI++) {
+ const Outletk *sourceOutlet = instances->at(instanceI);
+ // Skip inactive instances.
+ if (sourceOutlet->h.insdshead->actflg) {
+ *ksignal += *sourceOutlet->ksignal;
+ }
+ }
}
}
return OK;
@@ -479,14 +479,14 @@ struct Outletf : public OpcodeBase<Outletf> {
{
const char *insname = csound->instrtxtp[h.insdshead->insno]->insname;
if (insname) {
- std::sprintf(sourceOutletId, "%s:%s", insname, (char *)Sname);
+ std::sprintf(sourceOutletId, "%s:%s", insname, (char *)Sname);
} else {
- std::sprintf(sourceOutletId, "%d:%s", h.insdshead->insno, (char *)Sname);
+ std::sprintf(sourceOutletId, "%d:%s", h.insdshead->insno, (char *)Sname);
}
std::vector<Outletf *> &foutlets = foutletsForCsoundsForSourceOutletIds[csound][sourceOutletId];
if (std::find(foutlets.begin(), foutlets.end(), this) == foutlets.end()) {
- foutlets.push_back(this);
- warn(csound, "Created instance 0x%x of outlet %s\n", this, sourceOutletId);
+ foutlets.push_back(this);
+ warn(csound, "Created instance 0x%x of outlet %s\n", this, sourceOutletId);
}
}
return OK;
@@ -517,33 +517,33 @@ struct Inletf : public OpcodeBase<Inletf> {
lastframe = 0;
fsignalInitialized = false;
if (std::find(foutletVectorsForCsounds[csound].begin(),
- foutletVectorsForCsounds[csound].end(),
- sourceOutlets) == foutletVectorsForCsounds[csound].end()) {
- sourceOutlets = new std::vector< std::vector<Outletf *> *>;
- foutletVectorsForCsounds[csound].push_back(sourceOutlets);
+ foutletVectorsForCsounds[csound].end(),
+ sourceOutlets) == foutletVectorsForCsounds[csound].end()) {
+ sourceOutlets = new std::vector< std::vector<Outletf *> *>;
+ foutletVectorsForCsounds[csound].push_back(sourceOutlets);
}
sinkInletId[0] = 0;
const char *insname = csound->instrtxtp[h.insdshead->insno]->insname;
if (insname) {
- std::sprintf(sinkInletId, "%s:%s", insname, (char *)Sname);
+ std::sprintf(sinkInletId, "%s:%s", insname, (char *)Sname);
} else {
- std::sprintf(sinkInletId, "%d:%s", h.insdshead->insno, (char *)Sname);
+ std::sprintf(sinkInletId, "%d:%s", h.insdshead->insno, (char *)Sname);
}
std::vector<Inletf *> &finlets = finletsForCsoundsForSinkInletIds[csound][sinkInletId];
if (std::find(finlets.begin(), finlets.end(), this) == finlets.end()) {
- finlets.push_back(this);
- warn(csound, "Created instance 0x%x of inlet %s\n", this, sinkInletId);
+ finlets.push_back(this);
+ warn(csound, "Created instance 0x%x of inlet %s\n", this, sinkInletId);
}
// Find source outlets connecting to this.
// Any number of sources may connect to any number of sinks.
std::vector<std::string> &sourceOutletIds = connectionsForCsounds[csound][sinkInletId];
for (size_t i = 0, n = sourceOutletIds.size(); i < n; i++) {
- const std::string &sourceOutletId = sourceOutletIds[i];
- std::vector<Outletf *> &foutlets = foutletsForCsoundsForSourceOutletIds[csound][sourceOutletId];
- if (std::find(sourceOutlets->begin(), sourceOutlets->end(), &foutlets) == sourceOutlets->end()) {
- sourceOutlets->push_back(&foutlets);
- warn(csound, "Connected instances of outlet %s to instance 0x%x of inlet %s.\n", sourceOutletId.c_str(), this, sinkInletId);
- }
+ const std::string &sourceOutletId = sourceOutletIds[i];
+ std::vector<Outletf *> &foutlets = foutletsForCsoundsForSourceOutletIds[csound][sourceOutletId];
+ if (std::find(sourceOutlets->begin(), sourceOutlets->end(), &foutlets) == sourceOutlets->end()) {
+ sourceOutlets->push_back(&foutlets);
+ warn(csound, "Connected instances of outlet %s to instance 0x%x of inlet %s.\n", sourceOutletId.c_str(), this, sinkInletId);
+ }
}
}
return OK;
@@ -657,19 +657,19 @@ struct Outletkid : public OpcodeBase<Outletkid> {
(char *)"",
(int) csound->GetInputArgSMask(this));
if (insname && instanceId) {
- std::sprintf(sourceOutletId, "%s:%s", insname, (char *)Sname);
+ std::sprintf(sourceOutletId, "%s:%s", insname, (char *)Sname);
} else {
- std::sprintf(sourceOutletId, "%d:%s", h.insdshead->insno, (char *)Sname);
+ std::sprintf(sourceOutletId, "%d:%s", h.insdshead->insno, (char *)Sname);
}
if (insname) {
- std::sprintf(sourceOutletId, "%s:%s", insname, (char *)Sname);
+ std::sprintf(sourceOutletId, "%s:%s", insname, (char *)Sname);
} else {
- std::sprintf(sourceOutletId, "%d:%s", h.insdshead->insno, (char *)Sname);
+ std::sprintf(sourceOutletId, "%d:%s", h.insdshead->insno, (char *)Sname);
}
std::vector<Outletkid *> &koutlets = kidoutletsForCsoundsForSourceOutletIds[csound][sourceOutletId];
if (std::find(koutlets.begin(), koutlets.end(), this) == koutlets.end()) {
- koutlets.push_back(this);
- warn(csound, "Created instance 0x%x of %d instances of outlet %s\n", this, koutlets.size(), sourceOutletId);
+ koutlets.push_back(this);
+ warn(csound, "Created instance 0x%x of %d instances of outlet %s\n", this, koutlets.size(), sourceOutletId);
}
}
return OK;
@@ -699,10 +699,10 @@ struct Inletkid : public OpcodeBase<Inletkid> {
ksmps = csound->GetKsmps(csound);
if (std::find(kidoutletVectorsForCsounds[csound].begin(),
- kidoutletVectorsForCsounds[csound].end(),
- sourceOutlets) == kidoutletVectorsForCsounds[csound].end()) {
- sourceOutlets = new std::vector< std::vector<Outletkid *> *>;
- kidoutletVectorsForCsounds[csound].push_back(sourceOutlets);
+ kidoutletVectorsForCsounds[csound].end(),
+ sourceOutlets) == kidoutletVectorsForCsounds[csound].end()) {
+ sourceOutlets = new std::vector< std::vector<Outletkid *> *>;
+ kidoutletVectorsForCsounds[csound].push_back(sourceOutlets);
}
sinkInletId[0] = 0;
instanceId = csound->strarg2name(csound,
@@ -712,25 +712,25 @@ struct Inletkid : public OpcodeBase<Inletkid> {
(int) csound->GetInputArgSMask(this));
const char *insname = csound->instrtxtp[h.insdshead->insno]->insname;
if (insname) {
- std::sprintf(sinkInletId, "%s:%s", insname, (char *)Sname);
+ std::sprintf(sinkInletId, "%s:%s", insname, (char *)Sname);
} else {
- std::sprintf(sinkInletId, "%d:%s", h.insdshead->insno, (char *)Sname);
+ std::sprintf(sinkInletId, "%d:%s", h.insdshead->insno, (char *)Sname);
}
std::vector<Inletkid *> &kinlets = kidinletsForCsoundsForSinkInletIds[csound][sinkInletId];
if (std::find(kinlets.begin(), kinlets.end(), this) == kinlets.end()) {
- kinlets.push_back(this);
- warn(csound, "Created instance 0x%x of inlet %s\n", this, sinkInletId);
+ kinlets.push_back(this);
+ warn(csound, "Created instance 0x%x of inlet %s\n", this, sinkInletId);
}
// Find source outlets connecting to this.
// Any number of sources may connect to any number of sinks.
std::vector<std::string> &sourceOutletIds = connectionsForCsounds[csound][sinkInletId];
for (size_t i = 0, n = sourceOutletIds.size(); i < n; i++) {
- const std::string &sourceOutletId = sourceOutletIds[i];
- std::vector<Outletkid *> &koutlets = kidoutletsForCsoundsForSourceOutletIds[csound][sourceOutletId];
- if (std::find(sourceOutlets->begin(), sourceOutlets->end(), &koutlets) == sourceOutlets->end()) {
- sourceOutlets->push_back(&koutlets);
- warn(csound, "Connected instances of outlet %s to instance 0x%x of inlet %s.\n", sourceOutletId.c_str(), this, sinkInletId);
- }
+ const std::string &sourceOutletId = sourceOutletIds[i];
+ std::vector<Outletkid *> &koutlets = kidoutletsForCsoundsForSourceOutletIds[csound][sourceOutletId];
+ if (std::find(sourceOutlets->begin(), sourceOutlets->end(), &koutlets) == sourceOutlets->end()) {
+ sourceOutlets->push_back(&koutlets);
+ warn(csound, "Connected instances of outlet %s to instance 0x%x of inlet %s.\n", sourceOutletId.c_str(), this, sinkInletId);
+ }
}
}
return OK;
@@ -745,21 +745,21 @@ struct Inletkid : public OpcodeBase<Inletkid> {
*ksignal = FL(0.0);
// Loop over the source connections...
for (size_t sourceI = 0, sourceN = sourceOutlets->size();
- sourceI < sourceN;
- sourceI++) {
- // Loop over the source connection instances...
- const std::vector<Outletkid *> *instances = sourceOutlets->at(sourceI);
- for (size_t instanceI = 0, instanceN = instances->size();
- instanceI < instanceN;
- instanceI++) {
- const Outletkid *sourceOutlet = instances->at(instanceI);
- // Skip inactive instances and also all non-matching instances.
- if (sourceOutlet->h.insdshead->actflg) {
+ sourceI < sourceN;
+ sourceI++) {
+ // Loop over the source connection instances...
+ const std::vector<Outletkid *> *instances = sourceOutlets->at(sourceI);
+ for (size_t instanceI = 0, instanceN = instances->size();
+ instanceI < instanceN;
+ instanceI++) {
+ const Outletkid *sourceOutlet = instances->at(instanceI);
+ // Skip inactive instances and also all non-matching instances.
+ if (sourceOutlet->h.insdshead->actflg) {
if (std::strcmp(sourceOutlet->instanceId, instanceId) == 0) {
- *ksignal += *sourceOutlet->ksignal;
+ *ksignal += *sourceOutlet->ksignal;
+ }
+ }
}
- }
- }
}
}
return OK;
@@ -778,27 +778,27 @@ struct Connect : public OpcodeBase<Connect> {
#pragma omp critical (cs_sfg_ports)
{
std::string sourceOutletId = csound->strarg2name(csound,
- (char *) 0,
- Source,
- (char *)"",
- (int) csound->GetInputArgSMask(this));
+ (char *) 0,
+ Source,
+ (char *)"",
+ (int) csound->GetInputArgSMask(this));
sourceOutletId += ":";
sourceOutletId += csound->strarg2name(csound,
- (char *) 0,
- Soutlet,
- (char *)"",
- (int) csound->GetInputArgSMask(this));
+ (char *) 0,
+ Soutlet,
+ (char *)"",
+ (int) csound->GetInputArgSMask(this));
std::string sinkInletId = csound->strarg2name(csound,
- (char *) 0,
- Sink,
- (char *)"",
- (int) csound->GetInputArgSMask(this));
+ (char *) 0,
+ Sink,
+ (char *)"",
+ (int) csound->GetInputArgSMask(this));
sinkInletId += ":";
sinkInletId += csound->strarg2name(csound,
- (char *) 0,
- Sinlet,
- (char *)"",
- (int) csound->GetInputArgSMask(this));
+ (char *) 0,
+ Sinlet,
+ (char *)"",
+ (int) csound->GetInputArgSMask(this));
warn(csound, "Connected outlet %s to inlet %s.\n", sourceOutletId.c_str(), sinkInletId.c_str());
connectionsForCsounds[csound][sinkInletId].push_back(sourceOutletId);
}
@@ -818,10 +818,10 @@ struct AlwaysOn : public OpcodeBase<AlwaysOn> {
EVTBLK evtblk;
int init(CSOUND *csound) {
std::string source = csound->strarg2name(csound,
- (char *) 0,
- Sinstrument,
- (char *)"",
- (int) csound->GetInputArgSMask(this));
+ (char *) 0,
+ Sinstrument,
+ (char *)"",
+ (int) csound->GetInputArgSMask(this));
evtblk.opcod = 'i';
evtblk.strarg = 0;
evtblk.p[0] = FL(0.0);
@@ -878,55 +878,55 @@ struct FtGenOnce : public OpcodeBase<FtGenOnce> {
evtblk.p[4] = *p4;
int n = 0;
if (csound->GetInputArgSMask(this)) {
- n = (int) evtblk.p[4];
- evtblk.p[5] = SSTRCOD;
- if (n < 0) {
- n = -n;
- }
- // Only GEN 1, 23, 28, or 43 can take strings.
- switch (n) {
- case 1:
- case 23:
- case 28:
- case 43:
- evtblk.strarg = (char *)p5;
- break;
- default:
- result = csound->InitError(csound, Str("ftgen string arg not allowed"));
- }
+ n = (int) evtblk.p[4];
+ evtblk.p[5] = SSTRCOD;
+ if (n < 0) {
+ n = -n;
+ }
+ // Only GEN 1, 23, 28, or 43 can take strings.
+ switch (n) {
+ case 1:
+ case 23:
+ case 28:
+ case 43:
+ evtblk.strarg = (char *)p5;
+ break;
+ default:
+ result = csound->InitError(csound, Str("ftgen string arg not allowed"));
+ }
} else {
- evtblk.p[5] = *p5;
+ evtblk.p[5] = *p5;
}
if (result == OK) {
- evtblk.pcnt = (int16) csound->GetInputArgCnt(this);
- n = evtblk.pcnt - 5;
- if (n > 0) {
- MYFLT **argp = argums;
- MYFLT *fp = &evtblk.p[0] + 6;
- do {
- *fp++ = **argp++;
- } while (--n);
- }
- // If the arguments have not been used before for this instance of Csound,
- // create a new function table and store the arguments and table number;
- // otherwise, look up and return the already created function table's number.
- if(functionTablesForCsoundsForEvtblks[csound].find(eventBlock) != functionTablesForCsoundsForEvtblks[csound].end()) {
- *ifno = functionTablesForCsoundsForEvtblks[csound][eventBlock];
- warn(csound, "ftgenonce: re-using existing func: %f\n", *ifno);
- // std::cerr << "ftgenonce: re-using existing func:" << evtblk << std::endl;
- } else {
- FUNC *func = 0;
- n = csound->hfgens(csound, &func, &evtblk, 1);
- if (UNLIKELY(n != 0)) {
- result = csound->InitError(csound, Str("ftgenonce error"));
- }
- if (func) {
- functionTablesForCsoundsForEvtblks[csound][eventBlock] = func->fno;
- *ifno = (MYFLT) func->fno;
- warn(csound, "ftgenonce: created new func: %d\n", func->fno);
- // std::cerr << "ftgenonce: created new func:" << evtblk << std::endl;
- }
- }
+ evtblk.pcnt = (int16) csound->GetInputArgCnt(this);
+ n = evtblk.pcnt - 5;
+ if (n > 0) {
+ MYFLT **argp = argums;
+ MYFLT *fp = &evtblk.p[0] + 6;
+ do {
+ *fp++ = **argp++;
+ } while (--n);
+ }
+ // If the arguments have not been used before for this instance of Csound,
+ // create a new function table and store the arguments and table number;
+ // otherwise, look up and return the already created function table's number.
+ if(functionTablesForCsoundsForEvtblks[csound].find(eventBlock) != functionTablesForCsoundsForEvtblks[csound].end()) {
+ *ifno = functionTablesForCsoundsForEvtblks[csound][eventBlock];
+ warn(csound, "ftgenonce: re-using existing func: %f\n", *ifno);
+ // std::cerr << "ftgenonce: re-using existing func:" << evtblk << std::endl;
+ } else {
+ FUNC *func = 0;
+ n = csound->hfgens(csound, &func, &evtblk, 1);
+ if (UNLIKELY(n != 0)) {
+ result = csound->InitError(csound, Str("ftgenonce error"));
+ }
+ if (func) {
+ functionTablesForCsoundsForEvtblks[csound][eventBlock] = func->fno;
+ *ifno = (MYFLT) func->fno;
+ warn(csound, "ftgenonce: created new func: %d\n", func->fno);
+ // std::cerr << "ftgenonce: created new func:" << evtblk << std::endl;
+ }
+ }
}
}
return OK;
@@ -949,7 +949,7 @@ extern "C"
{
(char *)"outleta",
sizeof(Outleta),
- 5,
+ CW|5,
(char *)"",
(char *)"Sa",
(SUBR)&Outleta::init_,
@@ -959,7 +959,7 @@ extern "C"
{
(char *)"inleta",
sizeof(Inleta),
- 5,
+ CR|5,
(char *)"a",
(char *)"S",
(SUBR)&Inleta::init_,
@@ -969,7 +969,7 @@ extern "C"
{
(char *)"outletk",
sizeof(Outletk),
- 3,
+ CW|3,
(char *)"",
(char *)"Sk",
(SUBR)&Outletk::init_,
@@ -979,7 +979,7 @@ extern "C"
{
(char *)"inletk",
sizeof(Inletk),
- 3,
+ CR|3,
(char *)"k",
(char *)"S",
(SUBR)&Inletk::init_,
@@ -989,7 +989,7 @@ extern "C"
{
(char *)"outletkid",
sizeof(Outletkid),
- 3,
+ CW|3,
(char *)"",
(char *)"SSk",
(SUBR)&Outletk::init_,
@@ -999,7 +999,7 @@ extern "C"
{
(char *)"inletkid",
sizeof(Inletkid),
- 3,
+ CR|3,
(char *)"k",
(char *)"SS",
(SUBR)&Inletk::init_,
@@ -1009,7 +1009,7 @@ extern "C"
{
(char *)"outletf",
sizeof(Outletf),
- 5,
+ CW|5,
(char *)"",
(char *)"Sf",
(SUBR)&Outletf::init_,
@@ -1019,7 +1019,7 @@ extern "C"
{
(char *)"inletf",
sizeof(Inletf),
- 5,
+ CR|5,
(char *)"f",
(char *)"S",
(SUBR)&Inletf::init_,
@@ -1049,7 +1049,7 @@ extern "C"
{
(char *)"ftgenonce",
sizeof(FtGenOnce),
- 1,
+ TW|1,
(char *)"i",
(char *)"iiiiTm",
(SUBR)&FtGenOnce::init_,
@@ -1070,14 +1070,14 @@ extern "C"
int err = 0;
while (ep->opname != 0) {
err |= csound->AppendOpcode(csound,
- ep->opname,
- ep->dsblksiz,
- ep->thread,
- ep->outypes,
- ep->intypes,
- (int (*)(CSOUND *, void*)) ep->iopadr,
- (int (*)(CSOUND *, void*)) ep->kopadr,
- (int (*)(CSOUND *, void*)) ep->aopadr);
+ ep->opname,
+ ep->dsblksiz,
+ ep->thread,
+ ep->outypes,
+ ep->intypes,
+ (int (*)(CSOUND *, void*)) ep->iopadr,
+ (int (*)(CSOUND *, void*)) ep->kopadr,
+ (int (*)(CSOUND *, void*)) ep->aopadr);
ep++;
}
return err;
@@ -1091,19 +1091,19 @@ extern "C"
aoutletsForCsoundsForSourceOutletIds[csound].clear();
ainletsForCsoundsForSinkInletIds[csound].clear();
for (size_t i = 0, n = aoutletVectorsForCsounds[csound].size(); i < n; i++) {
- delete aoutletVectorsForCsounds[csound][i];
+ delete aoutletVectorsForCsounds[csound][i];
}
aoutletVectorsForCsounds[csound].clear();
koutletsForCsoundsForSourceOutletIds[csound].clear();
kinletsForCsoundsForSinkInletIds[csound].clear();
for (size_t i = 0, n = koutletVectorsForCsounds[csound].size(); i < n; i++) {
- delete koutletVectorsForCsounds[csound][i];
+ delete koutletVectorsForCsounds[csound][i];
}
koutletVectorsForCsounds[csound].clear();
foutletsForCsoundsForSourceOutletIds[csound].clear();
finletsForCsoundsForSinkInletIds[csound].clear();
for (size_t i = 0, n = foutletVectorsForCsounds[csound].size(); i < n; i++) {
- delete foutletVectorsForCsounds[csound][i];
+ delete foutletVectorsForCsounds[csound][i];
}
foutletVectorsForCsounds[csound].clear();
connectionsForCsounds[csound].clear();
diff --git a/Opcodes/singwave.c b/Opcodes/singwave.c
index 142a08a..5f5da2d 100644
--- a/Opcodes/singwave.c
+++ b/Opcodes/singwave.c
@@ -33,7 +33,8 @@
/* excitation source for other instruments*/
/*******************************************/
-#include "csdl.h"
+// #include "csdl.h"
+#include "csoundCore.h"
#include "singwave.h"
#include "moog1.h"
@@ -262,12 +263,18 @@ static void VoicForm_setPhoneme(CSOUND *csound, VOICF *p, int i, MYFLT sc)
if (i>16) i = i%16;
VoicForm_setFormantAll(p, 0,sc*phonParams[i][0][0], phonParams[i][0][1],
(MYFLT)pow(10.0,phonParams[i][0][2] / FL(20.0)));
- VoicForm_setFormantAll(p, 1,sc*phonParams[i][1][0],
- phonParams[i][1][1], FL(1.0));
- VoicForm_setFormantAll(p, 2,sc*phonParams[i][2][0],
- phonParams[i][2][1], FL(1.0));
- VoicForm_setFormantAll(p, 3,sc*phonParams[i][3][0],
- phonParams[i][3][1], FL(1.0));
+ VoicForm_setFormantAll(p, 1,sc*phonParams[i][0][0], phonParams[i][1][1],
+ (MYFLT)pow(10.0,phonParams[i][1][2] / FL(20.0)));
+ VoicForm_setFormantAll(p, 2,sc*phonParams[i][0][0], phonParams[i][2][1],
+ (MYFLT)pow(10.0,phonParams[i][2][2] / FL(20.0)));
+ VoicForm_setFormantAll(p, 3,sc*phonParams[i][0][0], phonParams[i][3][1],
+ (MYFLT)pow(10.0,phonParams[i][3][2] / FL(20.0)));
+ /* VoicForm_setFormantAll(p, 1,sc*phonParams[i][1][0], */
+ /* phonParams[i][1][1], FL(1.0)); */
+ /* VoicForm_setFormantAll(p, 2,sc*phonParams[i][2][0], */
+ /* phonParams[i][2][1], FL(1.0)); */
+ /* VoicForm_setFormantAll(p, 3,sc*phonParams[i][3][0], */
+ /* phonParams[i][3][1], FL(1.0)); */
VoicForm_setVoicedUnVoiced(p,phonGains[i][0], phonGains[i][1]);
csound->Message(csound,
Str("Found Formant: %s (number %i)\n"), phonemes[i], i);
@@ -319,6 +326,7 @@ static void make_FormSwep(FormSwep *p)
int voicformset(CSOUND *csound, VOICF *p)
{
MYFLT amp = (*p->amp)*AMP_RSCALE; /* Normalise */
+ int i;
if (UNLIKELY(make_SingWave(csound, &p->voiced, p->ifn, p->ivfn)==NOTOK))
return NOTOK;
@@ -327,19 +335,13 @@ int voicformset(CSOUND *csound, VOICF *p)
make_Noise(p->noise);
- make_FormSwep(&p->filters[0]);
- make_FormSwep(&p->filters[1]);
- make_FormSwep(&p->filters[2]);
- make_FormSwep(&p->filters[3]);
- FormSwep_setSweepRate(p->filters[0], FL(0.001));
- FormSwep_setSweepRate(p->filters[1], FL(0.001));
- FormSwep_setSweepRate(p->filters[2], FL(0.001));
- FormSwep_setSweepRate(p->filters[3], FL(0.001));
+ for (i=0; i<4; i++) {
+ make_FormSwep(&p->filters[i]);
+ FormSwep_setSweepRate(p->filters[i], FL(0.001));
+ }
make_OneZero(&p->onezero);
-/* OneZero_print(csound, &p->onezero); */
OneZero_setCoeff(&p->onezero, - FL(0.9));
-/* OneZero_print(csound, &p->onezero); */
make_OnePole(&p->onepole);
OnePole_setPole(&p->onepole, FL(0.9));
@@ -358,7 +360,7 @@ int voicformset(CSOUND *csound, VOICF *p)
FormSwep_clear(p->filters[3]);
{
MYFLT temp, freq = *p->frequency;
- if ((freq * FL(22.0)) > csound->esr) {
+ if ((freq * FL(22.0)) > csound->esr) {
csound->Warning(csound,"This note is too high!!\n");
freq = csound->esr / FL(22.0);
}
diff --git a/Opcodes/singwave.h b/Opcodes/singwave.h
index faaca8d..efa1f7c 100644
--- a/Opcodes/singwave.h
+++ b/Opcodes/singwave.h
@@ -36,7 +36,7 @@
#if !defined(__SingWave_h)
#define __SingWave_h
-#include "csdl.h"
+
extern MYFLT phonGains[32][2];
extern MYFLT phonParams[32][4][3];
diff --git a/Opcodes/sndloop.c b/Opcodes/sndloop.c
index 2b58d22..2ce8c3c 100644
--- a/Opcodes/sndloop.c
+++ b/Opcodes/sndloop.c
@@ -996,14 +996,14 @@ static int pvsvoc_init(CSOUND *csound, pvsvoc *p)
"or amp-freq.\n"));
}
if (p->ceps.auxp == NULL ||
- p->ceps.size < sizeof(MYFLT) * (N+2))
+ p->ceps.size < sizeof(MYFLT) * (N+2))
csound->AuxAlloc(csound, sizeof(MYFLT) * (N + 2), &p->ceps);
memset(p->ceps.auxp, 0, sizeof(MYFLT)*(N+2));
if (p->fenv.auxp == NULL ||
- p->fenv.size < sizeof(MYFLT) * (N+2))
+ p->fenv.size < sizeof(MYFLT) * (N+2))
csound->AuxAlloc(csound, sizeof(MYFLT) * (N + 2), &p->fenv);
if (p->fexc.auxp == NULL ||
- p->fexc.size < sizeof(MYFLT) * (N+2))
+ p->fexc.size < sizeof(MYFLT) * (N+2))
csound->AuxAlloc(csound, sizeof(MYFLT) * (N + 2), &p->fexc);
return OK;
@@ -1021,44 +1021,43 @@ static int pvsvoc_process(CSOUND *csound, pvsvoc *p)
int coefs = (int) *(p->kcoefs), j;
MYFLT *fenv = (MYFLT *) p->fenv.auxp;
MYFLT *ceps = (MYFLT *) p->ceps.auxp;
- float sr = csound->esr;
float maxe=0.f, maxa=0.f;
-
+
if (UNLIKELY(fout==NULL)) goto err1;
if (p->lastframe < p->fin->framecount) {
- for(j=0; j < 2; j++) {
- MYFLT a;
- maxe = 0.f;
+ for(j=0; j < 2; j++) {
+ MYFLT a;
+ maxe = 0.f;
maxa = 0.f;
for(i=0; i < N; i+=2) {
a = (j ? fin[i] : (fexc[i] = ffr[i]));
maxa = maxa < a ? a : maxa;
- if (a <= 0) a = 1e-20;
+ if (a <= 0) a = 1e-20;
fenv[i/2] = log(a);
}
if (coefs < 1) coefs = 80;
- for(i=0; i < N; i+=2){
- ceps[i] = fenv[i/2];
+ for(i=0; i < N; i+=2){
+ ceps[i] = fenv[i/2];
ceps[i+1] = 0.0;
- }
- csound->InverseComplexFFT(csound, ceps, N/2);
- for(i=coefs; i < N-coefs; i++) ceps[i] = 0.0;
+ }
+ csound->InverseComplexFFT(csound, ceps, N/2);
+ for(i=coefs; i < N-coefs; i++) ceps[i] = 0.0;
csound->ComplexFFT(csound, ceps, N/2);
- for(i=0; i < N; i+=2) {
- fenv[i/2] = exp(ceps[i]);
- maxe = maxe < fenv[i/2] ? fenv[i/2] : maxe;
- }
- if (maxe)
- for(i=0; i<N; i+=2){
- if (j) fenv[i/2] *= maxa/maxe;
- if (fenv[i/2] && !j) {
+ for(i=0; i < N; i+=2) {
+ fenv[i/2] = exp(ceps[i]);
+ maxe = maxe < fenv[i/2] ? fenv[i/2] : maxe;
+ }
+ if (maxe)
+ for(i=0; i<N; i+=2){
+ if (j) fenv[i/2] *= maxa/maxe;
+ if (fenv[i/2] && !j) {
fenv[i/2] /= maxe;
- fexc[i] /= fenv[i/2];
- }
- }
+ fexc[i] /= fenv[i/2];
+ }
+ }
}
-
+
kdepth = kdepth >= 0 ? (kdepth <= 1 ? kdepth : FL(1.0)): FL(0.0);
for(i=0;i < N+2;i+=2) {
fout[i] = fenv[i/2]*(fexc[i]*kdepth + fin[i]*(FL(1.0)-kdepth))*gain;
@@ -1066,7 +1065,7 @@ static int pvsvoc_process(CSOUND *csound, pvsvoc *p)
}
p->fout->framecount = p->lastframe = p->fin->framecount;
}
-
+
return OK;
err1:
return csound->PerfError(csound,Str("pvsvoc: not initialised\n"));
@@ -1126,15 +1125,15 @@ static int pvsmorph_process(CSOUND *csound, pvsmorph *p)
static OENTRY localops[] = {
{"sndloop", sizeof(sndloop), 5,
"ak", "akkii", (SUBR)sndloop_init, NULL, (SUBR)sndloop_process},
- {"flooper", sizeof(flooper), 5,
+ {"flooper", sizeof(flooper), TR|5,
"a", "kkiiii", (SUBR)flooper_init, NULL, (SUBR)flooper_process},
{"pvsarp", sizeof(pvsarp), 3,
"f", "fkkk", (SUBR)pvsarp_init, (SUBR)pvsarp_process},
{"pvsvoc", sizeof(pvsvoc), 3,
"f", "ffkkO", (SUBR)pvsvoc_init, (SUBR)pvsvoc_process},
- {"flooper2", sizeof(flooper2), 5,
+ {"flooper2", sizeof(flooper2), TR|5,
"a", "kkkkkiooooO", (SUBR)flooper2_init, NULL, (SUBR)flooper2_process},
- {"flooper3", sizeof(flooper3), 5,
+ {"flooper3", sizeof(flooper3), TR|5,
"a", "kkkkkioooo", (SUBR)flooper3_init, NULL, (SUBR)flooper3_process},
{"pvsmorph", sizeof(pvsvoc), 3,
"f", "ffkk", (SUBR)pvsmorph_init, (SUBR)pvsmorph_process}
@@ -1145,4 +1144,3 @@ int sndloop_init_(CSOUND *csound)
return csound->AppendOpcodes(csound, &(localops[0]),
(int) (sizeof(localops) / sizeof(OENTRY)));
}
-
diff --git a/Opcodes/sndwarp.c b/Opcodes/sndwarp.c
index f22b79b..b398c27 100644
--- a/Opcodes/sndwarp.c
+++ b/Opcodes/sndwarp.c
@@ -92,7 +92,7 @@ static int sndwarpgetset(CSOUND *csound, SNDWARP *p)
static int sndwarp(CSOUND *csound, SNDWARP *p)
{
int n, nsmps = csound->ksmps;
- MYFLT frm0,frm1;
+ MYFLT frm_0,frm_1;
int32 base, longphase;
MYFLT frac, frIndx;
MYFLT *r1, *r2, *amp, *timewarpby, *resample;
@@ -159,19 +159,19 @@ static int sndwarp(CSOUND *csound, SNDWARP *p)
base = (int32)frIndx; /* index of basis frame of interpolation */
frac = ((MYFLT)(frIndx - (MYFLT)base));
- frm0 = *(ftpSamp->ftable + base);
- frm1 = *(ftpSamp->ftable + (base+1));
+ frm_0 = *(ftpSamp->ftable + base);
+ frm_1 = *(ftpSamp->ftable + (base+1));
if (frac != FL(0.0)) {
- r1[n] += ((frm0 + frac*(frm1-frm0)) * windowamp) * *amp;
+ r1[n] += ((frm_0 + frac*(frm_1-frm_0)) * windowamp) * *amp;
if (i==0)
if (p->OUTOCOUNT > 1)
- r2[n] += (frm0 + frac*(frm1-frm0)) * *amp;
+ r2[n] += (frm_0 + frac*(frm_1-frm_0)) * *amp;
}
else {
- r1[n] += (frm0 * windowamp) * *amp;
+ r1[n] += (frm_0 * windowamp) * *amp;
if (i==0)
if (p->OUTOCOUNT > 1)
- r2[n] += frm0 * *amp;
+ r2[n] += frm_0 * *amp;
}
if (p->ampcode) amp++;
if (p->timewarpcode) timewarpby++;
@@ -355,9 +355,9 @@ static int sndwarpst(CSOUND *csound, SNDWARPST *p)
#define S(x) sizeof(x)
static OENTRY localops[] = {
- { "sndwarp", S(SNDWARP), 5, "mm", "xxxiiiiiii",
+ { "sndwarp", S(SNDWARP), TR|5, "mm", "xxxiiiiiii",
(SUBR)sndwarpgetset, NULL, (SUBR)sndwarp},
- { "sndwarpst", S(SNDWARPST), 5, "mmmm","xxxiiiiiii",
+ { "sndwarpst", S(SNDWARPST), TR|5, "mmmm","xxxiiiiiii",
(SUBR)sndwarpstset,NULL,(SUBR)sndwarpst}
};
diff --git a/Opcodes/sockrecv.c b/Opcodes/sockrecv.c
index dd24276..e498f9c 100644
--- a/Opcodes/sockrecv.c
+++ b/Opcodes/sockrecv.c
@@ -25,7 +25,7 @@
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
-#ifdef __OS_WINDOWS__
+#ifdef WIN32
#include <winsock2.h>
#include <ws2tcpip.h>
#else
@@ -39,7 +39,9 @@
#define MAXBUFS 32
#define MTU (1456)
+#ifndef WIN32
extern int inet_aton(const char *cp, struct in_addr *inp);
+#endif
static uintptr_t udpRecv(void *data);
static int deinit_udpRecv(CSOUND *csound, void *pdata);
@@ -89,7 +91,7 @@ static uintptr_t udpRecv(void *pdata)
while (p->threadon) {
/* get the data from the socket and store it in a tmp buffer */
- if ((bytes = recvfrom(p->sock, tmp, MTU, 0, &from, &clilen))) {
+ if ((bytes = recvfrom(p->sock, (void *)tmp, MTU, 0, &from, &clilen))) {
p->wbufferuse++;
p->wbufferuse = (p->wbufferuse == bufnos ? 0 : p->wbufferuse);
buf = (MYFLT *) ((char *) p->buffer.auxp + (p->wbufferuse * MTU));
@@ -108,6 +110,12 @@ static int init_recv(CSOUND *csound, SOCKRECV *p)
{
MYFLT *buf;
int bufnos;
+#ifdef WIN32
+ WSADATA wsaData = {0};
+ int err;
+ if ((err=WSAStartup(MAKEWORD(2,2), &wsaData))!= 0)
+ csound->InitError(csound, Str("Winsock2 failed to start: %d"), err);
+#endif
p->wp = 0;
p->rp = 0;
@@ -200,6 +208,12 @@ static int init_recvS(CSOUND *csound, SOCKRECV *p)
{
MYFLT *buf;
int bufnos;
+#ifdef WIN32
+ WSADATA wsaData = {0};
+ int err;
+ if ((err=WSAStartup(MAKEWORD(2,2), &wsaData))!= 0)
+ csound->InitError(csound, Str("Winsock2 failed to start: %d"), err);
+#endif
p->wp = 0;
p->rp = 0;
@@ -293,6 +307,12 @@ static int send_recvS(CSOUND *csound, SOCKRECV *p)
/* TCP version */
static int init_srecv(CSOUND *csound, SOCKRECVT *p)
{
+#ifdef WIN32
+ WSADATA wsaData = {0};
+ int err;
+ if ((err=WSAStartup(MAKEWORD(2,2), &wsaData))!= 0)
+ csound->InitError(csound, Str("Winsock2 failed to start: %d"), err);
+#endif
/* create a STREAM (TCP) socket in the INET (IP) protocol */
p->sock = socket(PF_INET, SOCK_STREAM, 0);
@@ -309,17 +329,22 @@ static int init_srecv(CSOUND *csound, SOCKRECVT *p)
p->server_addr.sin_family = AF_INET;
/* the server IP address, in network byte order */
+#ifdef WIN32
+ p->server_addr.sin_addr.S_un.S_addr = inet_addr((const char *) p->ipaddress);
+#else
inet_aton((const char *) p->ipaddress, &(p->server_addr.sin_addr));
-
+#endif
/* the port we are going to listen on, in network byte order */
p->server_addr.sin_port = htons((int) *p->port);
again:
if (connect(p->sock, (struct sockaddr *) &p->server_addr,
sizeof(p->server_addr)) < 0) {
+#ifdef ECONNREFUSED
if (errno == ECONNREFUSED)
goto again;
- return csound->InitError(csound, Str("connect failed"));
+#endif
+ return csound->InitError(csound, Str("connect failed (%d)"), errno);
}
return OK;
@@ -340,7 +365,7 @@ static int send_srecv(CSOUND *csound, SOCKRECVT *p)
#define S(x) sizeof(x)
-static OENTRY localops[] = {
+static OENTRY sockrecv_localops[] = {
{ "sockrecv", S(SOCKRECV), 5, "a", "ii", (SUBR) init_recv, NULL,
(SUBR) send_recv },
{ "sockrecvs", S(SOCKRECV), 5, "aa", "ii", (SUBR) init_recvS, NULL,
@@ -349,5 +374,5 @@ static OENTRY localops[] = {
(SUBR) send_srecv }
};
-LINKAGE
+LINKAGE1(sockrecv_localops)
diff --git a/Opcodes/socksend.c b/Opcodes/socksend.c
index fcefaa0..6bf318a 100644
--- a/Opcodes/socksend.c
+++ b/Opcodes/socksend.c
@@ -23,7 +23,7 @@
#include "csdl.h"
#include <sys/types.h>
-#ifdef __OS_WINDOWS__
+#ifdef WIN32
#include <winsock2.h>
#include <ws2tcpip.h>
#else
@@ -40,18 +40,22 @@ extern int inet_aton(const char *cp, struct in_addr *inp);
typedef struct {
OPDS h;
MYFLT *asig, *ipaddress, *port, *buffersize;
+ MYFLT *format;
AUXCH aux;
int sock, conn;
int bsize, wp;
+ int ff, bwidth;
struct sockaddr_in server_addr;
} SOCKSEND;
typedef struct {
OPDS h;
MYFLT *asigl, *asigr, *ipaddress, *port, *buffersize;
+ MYFLT *format;
AUXCH aux;
int sock, conn;
int bsize, wp;
+ int ff, bwidth;
struct sockaddr_in server_addr;
} SOCKSENDS;
@@ -61,33 +65,46 @@ typedef struct {
static int init_send(CSOUND *csound, SOCKSEND *p)
{
int bsize;
-
+ int bwidth = sizeof(MYFLT);
+#ifdef WIN32
+ WSADATA wsaData = {0};
+ int err;
+ if ((err=WSAStartup(MAKEWORD(2,2), &wsaData))!= 0)
+ csound->InitError(csound, Str("Winsock2 failed to start: %d"), err);
+#endif
+ p->ff = (int)(*p->format);
p->bsize = bsize = (int) *p->buffersize;
- if (UNLIKELY((sizeof(MYFLT) * bsize) > MTU)) {
- return csound->InitError(csound, Str("The buffersize must be <= %d samples "
- "to fit in a udp-packet."),
- (int) (MTU / sizeof(MYFLT)));
- }
+ /* if (UNLIKELY((sizeof(MYFLT) * bsize) > MTU)) { */
+ /* return csound->InitError(csound, Str("The buffersize must be <= %d samples " */
+ /* "to fit in a udp-packet."), */
+ /* (int) (MTU / sizeof(MYFLT))); */
+ /* } */
p->wp = 0;
- p->sock = socket(PF_INET, SOCK_DGRAM, 0);
+ p->sock = socket(AF_INET, SOCK_DGRAM, 0);
if (UNLIKELY(p->sock < 0)) {
return csound->InitError(csound, Str("creating socket"));
}
/* create server address: where we want to send to and clear it out */
memset(&p->server_addr, 0, sizeof(p->server_addr));
p->server_addr.sin_family = AF_INET; /* it is an INET address */
+#ifdef WIN32
+ p->server_addr.sin_addr.S_un.S_addr = inet_addr((const char *) p->ipaddress);
+#else
inet_aton((const char *) p->ipaddress,
&p->server_addr.sin_addr); /* the server IP address */
+#endif
p->server_addr.sin_port = htons((int) *p->port); /* the port */
+ if (p->ff) bwidth = sizeof(int16);
/* create a buffer to write the interleaved audio to */
- if (p->aux.auxp == NULL || (long) (bsize * sizeof(MYFLT)) > p->aux.size)
+ if (p->aux.auxp == NULL || (long) (bsize * bwidth) > p->aux.size)
/* allocate space for the buffer */
- csound->AuxAlloc(csound, (bsize * sizeof(MYFLT)), &p->aux);
+ csound->AuxAlloc(csound, (bsize * bwidth), &p->aux);
else {
- memset(p->aux.auxp, 0, sizeof(MYFLT) * bsize);
+ memset(p->aux.auxp, 0, bwidth * bsize);
}
+ p->bwidth = bwidth;
return OK;
}
@@ -98,17 +115,30 @@ static int send_send(CSOUND *csound, SOCKSEND *p)
int buffersize = p->bsize;
MYFLT *asig = p->asig;
MYFLT *out = (MYFLT *) p->aux.auxp;
+ int16 *outs = (int16 *) p->aux.auxp;
+ int ff = p->ff;
for (i = 0, wp = p->wp; i < ksmps; i++, wp++) {
if (wp == buffersize) {
/* send the package when we have a full buffer */
- if (UNLIKELY(sendto(p->sock, out, buffersize * sizeof(MYFLT), 0, to,
+ if (UNLIKELY(sendto(p->sock, (void*)out, buffersize * p->bwidth, 0, to,
sizeof(p->server_addr)) < 0)) {
return csound->PerfError(csound, Str("sendto failed"));
}
wp = 0;
}
- out[wp] = asig[i];
+ if (ff) { // Scale for 0dbfs and make LE
+ int16 val = (int16)((32768.0*asig[i])/csound->e0dbfs);
+ union cheat {
+ char benchar[2];
+ int16 bensht;
+ } ch;
+ ch.benchar[0] = 0xFF & val;
+ ch.benchar[1] = 0xFF & (val >> 8);
+ outs[wp] = ch.bensht;
+ }
+ else
+ out[wp] = asig[i];
}
p->wp = wp;
@@ -119,13 +149,21 @@ static int send_send(CSOUND *csound, SOCKSEND *p)
static int init_sendS(CSOUND *csound, SOCKSENDS *p)
{
int bsize;
+ int bwidth = sizeof(MYFLT);
+#ifdef WIN32
+ WSADATA wsaData = {0};
+ int err;
+ if ((err=WSAStartup(MAKEWORD(2,2), &wsaData))!= 0)
+ csound->InitError(csound, Str("Winsock2 failed to start: %d"), err);
+#endif
+ p->ff = (int)(*p->format);
p->bsize = bsize = (int) *p->buffersize;
- if (UNLIKELY((sizeof(MYFLT) * bsize) > MTU)) {
- return csound->InitError(csound, Str("The buffersize must be <= %d samples "
- "to fit in a udp-packet."),
- (int) (MTU / sizeof(MYFLT)));
- }
+ /* if (UNLIKELY((sizeof(MYFLT) * bsize) > MTU)) { */
+ /* return csound->InitError(csound, Str("The buffersize must be <= %d samples " */
+ /* "to fit in a udp-packet."), */
+ /* (int) (MTU / sizeof(MYFLT))); */
+ /* } */
p->wp = 0;
p->sock = socket(AF_INET, SOCK_DGRAM, 0);
@@ -135,17 +173,23 @@ static int init_sendS(CSOUND *csound, SOCKSENDS *p)
/* create server address: where we want to send to and clear it out */
memset(&p->server_addr, 0, sizeof(p->server_addr));
p->server_addr.sin_family = AF_INET; /* it is an INET address */
+#ifdef WIN32
+ p->server_addr.sin_addr.S_un.S_addr = inet_addr((const char *) p->ipaddress);
+#else
inet_aton((const char *) p->ipaddress,
&p->server_addr.sin_addr); /* the server IP address */
+#endif
p->server_addr.sin_port = htons((int) *p->port); /* the port */
+ if (p->ff) bwidth = sizeof(int16);
/* create a buffer to write the interleaved audio to */
- if (p->aux.auxp == NULL || (long) (bsize * sizeof(MYFLT)) > p->aux.size)
+ if (p->aux.auxp == NULL || (long) (bsize * bwidth) > p->aux.size)
/* allocate space for the buffer */
- csound->AuxAlloc(csound, (bsize * sizeof(MYFLT)), &p->aux);
+ csound->AuxAlloc(csound, (bsize * bwidth), &p->aux);
else {
- memset(p->aux.auxp, 0, sizeof(MYFLT) * bsize);
+ memset(p->aux.auxp, 0, bwidth * bsize);
}
+ p->bwidth = bwidth;
return OK;
}
@@ -155,23 +199,42 @@ static int send_sendS(CSOUND *csound, SOCKSENDS *p)
MYFLT *asigl = p->asigl;
MYFLT *asigr = p->asigr;
MYFLT *out = (MYFLT *) p->aux.auxp;
+ int16 *outs = (int16 *) p->aux.auxp;
int i;
int buffersize = p->bsize;
int wp, ksmps = csound->ksmps;
+ int ff = p->ff;
/* store the samples of the channels interleaved in the packet */
/* (left, right) */
for (i = 0, wp = p->wp; i < ksmps; i++, wp += 2) {
if (wp == buffersize) {
/* send the package when we have a full buffer */
- if (UNLIKELY(sendto(p->sock, out, buffersize * sizeof(MYFLT), 0, to,
+ if (UNLIKELY(sendto(p->sock, (void*)out, buffersize * p->bwidth, 0, to,
sizeof(p->server_addr)) < 0)) {
return csound->PerfError(csound, Str("sendto failed"));
}
wp = 0;
}
- out[wp] = asigl[i];
- out[wp + 1] = asigr[i];
+ if (ff) { // Scale for 0dbfs and make LE
+ int16 val = 0x8000*(asigl[i]/csound->e0dbfs);
+ union {
+ char benchar[2];
+ int16 bensht;
+ } ch;
+
+ ch.benchar[0] = 0xFF & val;
+ ch.benchar[1] = 0xFF & (val >> 8);
+ outs[wp] = ch.bensht;
+ val = 0x8000*(asigl[i+1]/csound->e0dbfs);
+ ch.benchar[0] = 0xFF & val;
+ ch.benchar[1] = 0xFF & (val >> 8);
+ outs[wp + 1] = ch.bensht;
+ }
+ else {
+ out[wp] = asigl[i];
+ out[wp + 1] = asigr[i];
+ }
}
p->wp = wp;
@@ -182,6 +245,12 @@ static int send_sendS(CSOUND *csound, SOCKSENDS *p)
static int init_ssend(CSOUND *csound, SOCKSEND *p)
{
socklen_t clilen;
+#ifdef WIN32
+ WSADATA wsaData = {0};
+ int err;
+ if ((err=WSAStartup(MAKEWORD(2,2), &wsaData))!= 0)
+ csound->InitError(csound, Str("Winsock2 failed to start: %d"), err);
+#endif
/* create a STREAM (TCP) socket in the INET (IP) protocol */
p->sock = socket(PF_INET, SOCK_STREAM, 0);
@@ -199,7 +268,11 @@ static int init_ssend(CSOUND *csound, SOCKSEND *p)
p->server_addr.sin_family = AF_INET;
/* the server IP address, in network byte order */
+#ifdef WIN32
+ p->server_addr.sin_addr.S_un.S_addr = inet_addr((const char *) p->ipaddress);
+#else
inet_aton((const char *) p->ipaddress, &(p->server_addr.sin_addr));
+#endif
/* the port we are going to listen on, in network byte order */
p->server_addr.sin_port = htons((int) *p->port);
@@ -236,14 +309,14 @@ static int send_ssend(CSOUND *csound, SOCKSEND *p)
#define S(x) sizeof(x)
-static OENTRY localops[] = {
- { "socksend", S(SOCKSEND), 5, "", "aSii", (SUBR) init_send, NULL,
+static OENTRY socksend_localops[] = {
+ { "socksend", S(SOCKSEND), 5, "", "aSiio", (SUBR) init_send, NULL,
(SUBR) send_send },
- { "socksends", S(SOCKSENDS), 5, "", "aaSii", (SUBR) init_sendS, NULL,
+ { "socksends", S(SOCKSENDS), 5, "", "aaSiio", (SUBR) init_sendS, NULL,
(SUBR) send_sendS },
{ "stsend", S(SOCKSEND), 5, "", "aSi", (SUBR) init_ssend, NULL,
(SUBR) send_ssend }
};
-LINKAGE
+LINKAGE1(socksend_localops)
diff --git a/Opcodes/space.c b/Opcodes/space.c
index 68e91d2..3140d1f 100644
--- a/Opcodes/space.c
+++ b/Opcodes/space.c
@@ -250,7 +250,7 @@ static int spdist(CSOUND *csound, SPDIST *p)
#define S(x) sizeof(x)
static OENTRY localops[] = {
-{ "space", S(SPACE), 5, "aaaa", "aikkkk",(SUBR)spaceset, NULL, (SUBR)space },
+{ "space", S(SPACE), TR|5, "aaaa", "aikkkk",(SUBR)spaceset, NULL, (SUBR)space },
{ "spsend", S(SPSEND), 5, "aaaa", "", (SUBR)spsendset, NULL, (SUBR)spsend },
{ "spdist", S(SPDIST), 3, "k", "ikkk", (SUBR)spdistset, (SUBR)spdist, NULL }
};
diff --git a/Opcodes/spectra.c b/Opcodes/spectra.c
index 4e6e584..005dda4 100644
--- a/Opcodes/spectra.c
+++ b/Opcodes/spectra.c
@@ -21,7 +21,9 @@
02111-1307 USA
*/
-#include "csdl.h" /* SPECTRA.C */
+// #include "csdl.h"
+#include "csoundCore.h"
+#include "interlocks.h"
#include <math.h>
#include "cwindow.h"
#include "spectra.h"
@@ -1203,7 +1205,7 @@ int specfilt(CSOUND *csound, SPECFILT *p)
#define S sizeof
-static OENTRY localops[] = {
+static OENTRY spectra_localops[] = {
{ "spectrum", S(SPECTRUM),7, "w", "siiiqoooo",
(SUBR)spectset,(SUBR)spectrum,(SUBR)spectrum},
{ "specaddm", S(SPECADDM),5, "w", "wwp", (SUBR)spadmset,NULL, (SUBR)specaddm},
@@ -1212,7 +1214,7 @@ static OENTRY localops[] = {
{ "spechist", S(SPECHIST),5, "w", "w", (SUBR)sphstset,NULL, (SUBR)spechist},
{ "specfilt", S(SPECFILT),5, "w", "wi", (SUBR)spfilset,NULL, (SUBR)specfilt},
{ "specptrk", S(SPECPTRK),5, "kk", "wkiiiiiioqooo",
- (SUBR)sptrkset,NULL,(SUBR)specptrk},
+ (SUBR)sptrkset,NULL,(SUBR)specptrk},
{ "specsum", S(SPECSUM), 5, "k", "wo", (SUBR)spsumset,NULL, (SUBR)specsum },
{ "specdisp", S(SPECDISP),5, "", "wio", (SUBR)spdspset,NULL, (SUBR)specdisp},
{ "pitch", S(PITCH), 5, "kk", "aiiiiqooooojo",
@@ -1224,10 +1226,10 @@ static OENTRY localops[] = {
{ "readclock", S(CLKRD), 1, "i", "i", (SUBR)clockread, NULL, NULL },
{ "pitchamdf",S(PITCHAMDF),5,"kk","aiioppoo",
(SUBR)pitchamdfset, NULL, (SUBR)pitchamdf },
-{ "hsboscil",S(HSBOSC), 5, "a", "kkkiiioo",(SUBR)hsboscset,NULL,(SUBR)hsboscil },
+{ "hsboscil",S(HSBOSC), TR|5, "a", "kkkiiioo",(SUBR)hsboscset,NULL,(SUBR)hsboscil },
{ "phasorbnk", S(PHSORBNK),7,"s", "xkio",
(SUBR)phsbnkset, (SUBR)kphsorbnk, (SUBR)phsorbnk },
-{ "adsynt",S(HSBOSC), 5, "a", "kkiiiio", (SUBR)adsyntset, NULL, (SUBR)adsynt },
+{ "adsynt",S(HSBOSC), TR|5, "a", "kkiiiio", (SUBR)adsyntset, NULL, (SUBR)adsynt },
{ "mpulse", S(IMPULSE), 5, "a", "kko", (SUBR)impulse_set, NULL, (SUBR)impulse },
{ "lpf18", S(LPF18), 5, "a", "akkko", (SUBR)lpf18set, NULL, (SUBR)lpf18db },
{ "waveset", S(BARRI), 5, "a", "ako", (SUBR)wavesetset, NULL, (SUBR)waveset},
@@ -1248,7 +1250,7 @@ static OENTRY localops[] = {
{ "p.k", S(PFUN), 2, "k", "k", NULL, (SUBR)pfun, NULL },
{ "mute", S(MUTE), 1, "", "To", (SUBR)mute_inst },
#ifdef BETA
-{ "oscilv", 0xfffe },
+{ "oscilv", 0xfffe, TR },
{ "oscilv.kk", S(XOSC), 5, "a", "kkio", (SUBR)Foscset, NULL, (SUBR)Fosckk },
{ "oscilv.ka", S(XOSC), 5, "a", "kaio", (SUBR)Foscset, NULL, (SUBR)Foscka },
{ "oscilv.ak", S(XOSC), 5, "a", "akio", (SUBR)Foscset, NULL, (SUBR)Foscak },
@@ -1258,5 +1260,5 @@ static OENTRY localops[] = {
{ "mediank", S(MEDFILT), 5, "k", "kkio", (SUBR)medfiltset, (SUBR)kmedfilt},
};
-LINKAGE
+LINKAGE1(spectra_localops)
diff --git a/Opcodes/stackops.c b/Opcodes/stackops.c
index dc28161..e7f30b0 100644
--- a/Opcodes/stackops.c
+++ b/Opcodes/stackops.c
@@ -21,7 +21,8 @@
02111-1307 USA
*/
-#include "csdl.h"
+#include "csoundCore.h"
+#include "interlocks.h"
#include "pstream.h"
typedef struct CsoundArgStack_s CsoundArgStack_t;
@@ -120,33 +121,25 @@ static CS_NOINLINE int csoundStack_Error(void *p, const char *msg)
static CS_NOINLINE int csoundStack_OverflowError(void *p)
{
- CSOUND *csound;
-
- csound = ((OPDS*) p)->insdshead->csound;
+ /* CSOUND *csound= ((OPDS*) p)->insdshead->csound; */
return csoundStack_Error(p, Str("stack overflow"));
}
static CS_NOINLINE int csoundStack_EmptyError(void *p)
{
- CSOUND *csound;
-
- csound = ((OPDS*) p)->insdshead->csound;
+ /* CSOUND *csound((OPDS*) p)->insdshead->csound; */
return csoundStack_Error(p, Str("cannot pop from empty stack"));
}
static CS_NOINLINE int csoundStack_TypeError(void *p)
{
- CSOUND *csound;
-
- csound = ((OPDS*) p)->insdshead->csound;
+ /* CSOUND *csound = ((OPDS*) p)->insdshead->csound; */
return csoundStack_Error(p, Str("argument number or type mismatch"));
}
static CS_NOINLINE int csoundStack_LengthError(void *p)
{
- CSOUND *csound;
-
- csound = ((OPDS*) p)->insdshead->csound;
+ /* CSOUND *csound = ((OPDS*) p)->insdshead->csound; */
return csoundStack_Error(p, Str("string argument is too long"));
}
@@ -641,21 +634,21 @@ static int monitor_opcode_init(CSOUND *csound, MONITOR_OPCODE *p)
/* ------------------------------------------------------------------------ */
-static OENTRY localops[] = {
- { "stack", sizeof(STACK_OPCODE), 1, "", "i",
+static OENTRY stackops_localops[] = {
+ { "stack", sizeof(STACK_OPCODE), SB|1, "", "i",
(SUBR) stack_opcode_init, (SUBR) NULL, (SUBR) NULL },
- { "push", sizeof(PUSH_OPCODE), 3, "", "N",
+ { "push", sizeof(PUSH_OPCODE), SB|3, "", "N",
(SUBR) push_opcode_init, (SUBR) notinit_opcode_stub_perf, (SUBR) NULL },
- { "pop", sizeof(POP_OPCODE), 3, "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", "",
+ { "pop", sizeof(POP_OPCODE), SB|3, "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", "",
(SUBR) pop_opcode_init, (SUBR) notinit_opcode_stub_perf, (SUBR) NULL },
- { "push_f", sizeof(PUSH_OPCODE), 3, "", "f",
+ { "push_f", sizeof(PUSH_OPCODE), SB|3, "", "f",
(SUBR) push_f_opcode_init, (SUBR) notinit_opcode_stub_perf, (SUBR) NULL },
- { "pop_f", sizeof(POP_OPCODE), 3, "f", "",
+ { "pop_f", sizeof(POP_OPCODE), SB|3, "f", "",
(SUBR) pop_f_opcode_init, (SUBR) notinit_opcode_stub_perf, (SUBR) NULL },
/* ----------------------------------------------------------------------- */
{ "monitor", sizeof(MONITOR_OPCODE), 3, "mmmmmmmmmmmmmmmmmmmmmmmm", "",
(SUBR) monitor_opcode_init, (SUBR) notinit_opcode_stub_perf, (SUBR) NULL }
};
-LINKAGE
+LINKAGE1(stackops_localops)
diff --git a/Opcodes/stdopcod.c b/Opcodes/stdopcod.c
index 1c5b409..ab35dbd 100644
--- a/Opcodes/stdopcod.c
+++ b/Opcodes/stdopcod.c
@@ -21,13 +21,14 @@
#include "stdopcod.h"
-PUBLIC int csoundModuleCreate(CSOUND *csound)
+/* PUBLIC int csoundModuleCreate(CSOUND *csound)
{
(void) csound;
return 0;
}
+*/
-PUBLIC int csoundModuleInit(CSOUND *csound)
+PUBLIC int stdopc_ModuleInit(CSOUND *csound)
{
STDOPCOD_GLOBALS *p;
int err = 0;
@@ -91,8 +92,10 @@ PUBLIC int csoundModuleInit(CSOUND *csound)
return (err ? CSOUND_ERROR : CSOUND_SUCCESS);
}
+/*
PUBLIC int csoundModuleInfo(void)
{
return ((CS_APIVERSION << 16) + (CS_APISUBVER << 8) + (int) sizeof(MYFLT));
}
+*/
diff --git a/Opcodes/stdopcod.h b/Opcodes/stdopcod.h
index 4ffa8c0..f18f9e1 100644
--- a/Opcodes/stdopcod.h
+++ b/Opcodes/stdopcod.h
@@ -22,9 +22,14 @@
#ifndef CSOUND_STDOPCOD_H
#define CSOUND_STDOPCOD_H
-#include "csdl.h"
+//#include "csdl.h"
+#include "csoundCore.h"
#include <sndfile.h>
+
+#include "interlocks.h"
+
+
/* file structure for fout opcodes */
struct fileinTag {
diff --git a/Opcodes/stk/CMakeLists.txt b/Opcodes/stk/CMakeLists.txt
new file mode 100644
index 0000000..c137642
--- /dev/null
+++ b/Opcodes/stk/CMakeLists.txt
@@ -0,0 +1,54 @@
+option(BUILD_STK_OPCODES "Build the stk opcodes" ON)
+
+if(BUILD_STK_OPCODES)
+ find_library(STK_LIBRARY stk)
+ if(STK_LIBRARY)
+ make_plugin(stkOpcodes stkOpcodes.cpp stk)
+ else()
+ set(stk_srcs
+ src/InetWvIn.cpp src/InetWvOut.cpp
+ src/Mutex.cpp src/RtAudio.cpp
+ src/RtMidi.cpp
+ src/RtWvIn.cpp src/RtWvOut.cpp
+ src/Socket.cpp src/TcpClient.cpp
+ src/TcpServer.cpp src/Thread.cpp
+ src/UdpSocket.cpp
+ stkOpcodes.cpp)
+
+ # Assume that if this file exists, then we have the sources
+ find_file(STK_FOUND
+ NAMES src/InetWvIn.cpp
+ HINTS ${CMAKE_CURRENT_SOURCE_DIR})
+ check_deps(BUILD_STK_OPCODES STK_FOUND)
+
+ if(BUILD_STK_OPCODES)
+
+ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
+
+ make_plugin(stk "${stk_srcs}")
+
+ set(stkdefs "__STK_REALTIME__")
+ if(APPLE)
+ list(APPEND stkdefs "__OS_MACOSX__")
+ list(REMOVE_ITEM stkdefs "__STK_REALTIME__")
+ elseif(LINUX)
+ list(APPEND stkdefs "__OS_LINUX__")
+ list(APPEND stkdefs "__LINUX_ALSA__")
+ elseif(WIN32)
+ list(APPEND stkdefs "__OS_WINDOWS__")
+ endif()
+
+ if(BIG_ENDIAN)
+ list(APPEND stkdefs "__BIG_ENDIAN__")
+ else()
+ list(APPEND stkdefs "__LITTLE_ENDIAN__")
+ endif()
+
+
+ set_target_properties(stk PROPERTIES
+ COMPILE_DEFINITIONS "${stkdefs}")
+
+ endif()
+ endif()
+endif()
+
diff --git a/Opcodes/syncgrain.c b/Opcodes/syncgrain.c
index 20871f1..455dff9 100644
--- a/Opcodes/syncgrain.c
+++ b/Opcodes/syncgrain.c
@@ -24,6 +24,7 @@
#include "csdl.h"
#include "syncgrain.h"
#include "soundio.h"
+#include "interlocks.h"
/*
#ifdef HAVE_VALUES_H
@@ -686,11 +687,11 @@ static int filegrain_process(CSOUND *csound, filegrain *p)
static OENTRY localops[] = {
-{"syncgrain", sizeof(syncgrain), 5, "a", "kkkkkiii",
+{"syncgrain", sizeof(syncgrain), TR|5, "a", "kkkkkiii",
(SUBR)syncgrain_init, NULL,(SUBR)syncgrain_process },
-{"syncloop", sizeof(syncgrainloop), 5, "a", "kkkkkkkiiioo",
+{"syncloop", sizeof(syncgrainloop), TR|5, "a", "kkkkkkkiiioo",
(SUBR)syncgrainloop_init, NULL,(SUBR)syncgrainloop_process },
-{"diskgrain", sizeof(filegrain), 5, DGRAIN_OUTTYPES, "Skkkkkiipo",
+{"diskgrain", sizeof(filegrain), TR|5, DGRAIN_OUTTYPES, "Skkkkkiipo",
(SUBR)filegrain_init, NULL,(SUBR)filegrain_process }
};
diff --git a/Opcodes/system_call.c b/Opcodes/system_call.c
index 8d69921..d5b197e 100644
--- a/Opcodes/system_call.c
+++ b/Opcodes/system_call.c
@@ -37,8 +37,8 @@ typedef struct {
static void threadroutine(void *command)
{
- system( (char *)command );
- free( command );
+ system( (char *)command );
+ free( command );
}
static int call_system(CSOUND *csound, SYSTEM *p)
@@ -105,10 +105,10 @@ int call_system_k(CSOUND *csound, SYSTEM *p)
#define S(x) sizeof(x)
-static OENTRY localops[] = {
+static OENTRY system_localops[] = {
{ "system", S(SYSTEM), 3, "k", "kSO", (SUBR)call_system_set,(SUBR)call_system_k},
{ "system_i", S(SYSTEM), 1, "i", "iSo", (SUBR)call_system_i}
};
-LINKAGE
+LINKAGE1(system_localops)
diff --git a/Opcodes/tabsum.c b/Opcodes/tabsum.c
index 3bb764f..7b05408 100644
--- a/Opcodes/tabsum.c
+++ b/Opcodes/tabsum.c
@@ -21,7 +21,8 @@
02111-1307 USA
*/
-#include "csdl.h"
+#include "csoundCore.h"
+#include "interlocks.h"
typedef struct {
OPDS h;
@@ -67,11 +68,12 @@ static int tabsum(CSOUND *csound, TABSUM *p)
#define S(x) sizeof(x)
-static OENTRY localops[] = {
-{ "tabsum", S(TABSUM), 3, "k", "iOO",(SUBR)tabsuminit, (SUBR)tabsum },
+static OENTRY tabsum_localops[] = {
+{ "tabsum", S(TABSUM), 3, "k", "iOO",
+ (SUBR)tabsuminit, (SUBR)tabsum },
};
-LINKAGE
+LINKAGE1(tabsum_localops)
diff --git a/Opcodes/tabvars.c b/Opcodes/tabvars.c
index d2782c5..6d1e9ce 100644
--- a/Opcodes/tabvars.c
+++ b/Opcodes/tabvars.c
@@ -21,7 +21,10 @@
02111-1307 USA
*/
-#include "csdl.h"
+// #include "csdl.h"
+#include "csoundCore.h"
+#include "interlocks.h"
+
typedef struct {
OPDS h;
@@ -202,6 +205,7 @@ static int tab2ftab(CSOUND *csound, TABCOPY *p)
fdata = ftp->ftable;
if (fsize<tlen) tlen = fsize;
memcpy(fdata, p->tab->data, sizeof(MYFLT)*tlen);
+ return OK;
}
static int ftab2tab(CSOUND *csound, TABCOPY *p)
@@ -218,11 +222,12 @@ static int ftab2tab(CSOUND *csound, TABCOPY *p)
fdata = ftp->ftable;
if (fsize<tlen) tlen = fsize;
memcpy(p->tab->data, fdata, sizeof(MYFLT)*tlen);
+ return OK;
}
-static OENTRY localops[] =
+static OENTRY tabvars_localops[] =
{
{ "plustab", sizeof(TABARITH), 3, "t", "tt", (SUBR) tabarithset, (SUBR) tabadd },
{ "multtab", sizeof(TABARITH), 3, "t", "tt", (SUBR) tabarithset, (SUBR) tabmult },
@@ -231,15 +236,15 @@ static OENTRY localops[] =
{ "sumtab", sizeof(TABQUERY), 3, "k", "t", (SUBR) tabqset, (SUBR) tabsum },
{ "scalet", sizeof(TABSCALE), 3, "", "tkkOJ",(SUBR) tabscaleset,(SUBR) tabscale },
{ "#copytab", sizeof(TABCPY), 3, "t", "t", (SUBR) tabcopy_set, (SUBR)tabcopy },
- { "copy2ftab", sizeof(TABCOPY), 1, "", "tk", NULL, (SUBR) tab2ftab },
- { "copy2ttab", sizeof(TABCOPY), 1, "", "tk", NULL, (SUBR) ftab2tab }
+ { "copy2ftab", sizeof(TABCOPY), TW|1, "", "tk", NULL, (SUBR) tab2ftab },
+ { "copy2ttab", sizeof(TABCOPY), TR|1, "", "tk", NULL, (SUBR) ftab2tab }
};
// reverse, scramble, mirror, stutter, rotate, ...
// jpff: stutter is an interesting one (very musical). It basically
// randomly repeats (holds) values based on a probability parameter
-LINKAGE
+LINKAGE1(tabvars_localops)
diff --git a/Opcodes/ugakbari.c b/Opcodes/ugakbari.c
index ca44242..e4fbf46 100644
--- a/Opcodes/ugakbari.c
+++ b/Opcodes/ugakbari.c
@@ -21,7 +21,8 @@
02111-1307 USA
*/
-#include "csdl.h"
+#include "csoundCore.h"
+#include "interlocks.h"
#include <math.h>
#define LOGCURVE(x,y) ((LOG(x * (y-FL(1.0))+FL(1.0)))/(LOG(y)))
@@ -101,7 +102,7 @@ static int gainslider_perf(CSOUND *csound, gainslider *p)
/* opcode library entries */
-static OENTRY localops[] = {
+static OENTRY ugakbari_localops[] = {
{ "scale", sizeof(scale), 2, "k", "kkk", NULL, (SUBR)scale_process, NULL },
{ "expcurve", sizeof(expcurve), 2, "k", "kk", NULL,
(SUBR)expcurve_perf, NULL },
@@ -111,4 +112,4 @@ static OENTRY localops[] = {
(SUBR)gainslider_perf, NULL }
};
-LINKAGE
+LINKAGE1(ugakbari_localops)
diff --git a/Opcodes/ugens7.c b/Opcodes/ugens7.c
index cc56b14..ad5daa1 100644
--- a/Opcodes/ugens7.c
+++ b/Opcodes/ugens7.c
@@ -581,8 +581,8 @@ static int harmon(CSOUND *csound, HARMON *p)
#define S(x) sizeof(x)
static OENTRY localops[] = {
-{ "fof", S(FOFS), 5, "a","xxxkkkkkiiiiooo",(SUBR)fofset,NULL,(SUBR)fof },
-{ "fof2", S(FOFS), 5, "a","xxxkkkkkiiiikko",(SUBR)fofset2,NULL,(SUBR)fof },
+{ "fof", S(FOFS), TR|5, "a","xxxkkkkkiiiiooo",(SUBR)fofset,NULL,(SUBR)fof },
+{ "fof2", S(FOFS), TR|5, "a","xxxkkkkkiiiikko",(SUBR)fofset2,NULL,(SUBR)fof },
{ "harmon", S(HARMON), 5, "a", "akkkkiii",(SUBR)harmset,NULL, (SUBR)harmon }
};
diff --git a/Opcodes/ugensa.c b/Opcodes/ugensa.c
index 5995baa..68532f0 100644
--- a/Opcodes/ugensa.c
+++ b/Opcodes/ugensa.c
@@ -218,7 +218,7 @@ static int newpulse(CSOUND *csound, FOGS *p, OVERLAP *ovp, MYFLT *amp,
#define S(x) sizeof(x)
static OENTRY localops[] = {
-{ "fog", S(FOGS), 5, "a","xxxakkkkkiiiiooo",(SUBR)fogset,NULL,(SUBR)fog}
+{ "fog", S(FOGS), TR|5, "a","xxxakkkkkiiiiooo",(SUBR)fogset,NULL,(SUBR)fog}
};
int ugensa_init_(CSOUND *csound)
diff --git a/Opcodes/uggab.c b/Opcodes/uggab.c
index 887a5eb..78bf3bd 100644
--- a/Opcodes/uggab.c
+++ b/Opcodes/uggab.c
@@ -1662,9 +1662,9 @@ static OENTRY localops[] = {
{ "fold", S(FOLD), 5, "a", "ak", (SUBR)fold_set, NULL, (SUBR)fold },
{ "lineto", S(LINETO), 3, "k", "kk", (SUBR)lineto_set, (SUBR)lineto, NULL },
{ "tlineto", S(LINETO2), 3, "k", "kkk", (SUBR)tlineto_set, (SUBR)tlineto, NULL },
-{ "vibrato", S(VIBRATO), 3, "k", "kkkkkkkkio",
+{ "vibrato", S(VIBRATO), TR|3, "k", "kkkkkkkkio",
(SUBR)vibrato_set, (SUBR)vibrato, NULL },
-{ "vibr", S(VIBRATO), 3, "k", "kki", (SUBR)vibr_set, (SUBR)vibr, NULL },
+{ "vibr", S(VIBRATO), TR|3, "k", "kki", (SUBR)vibr_set, (SUBR)vibr, NULL },
{ "jitter2", S(JITTER2), 3, "k", "kkkkkkk", (SUBR)jitter2_set, (SUBR)jitter2 },
{ "jitter", S(JITTER), 3, "k", "kkk", (SUBR)jitter_set, (SUBR)jitter, NULL },
{ "jspline", S(JITTERS), 7, "s", "xkk",
@@ -1675,8 +1675,8 @@ static OENTRY localops[] = {
{ "lpshold", S(LOOPSEG), 3, "k", "kkiz", (SUBR)loopseg_set, (SUBR)lpshold, NULL },
{ "loopsegp", S(LOOPSEGP), 3,"k", "kz", (SUBR)loopsegp_set,(SUBR)loopsegp, NULL},
{ "lpsholdp", S(LOOPSEGP), 3,"k", "kz", (SUBR)loopsegp_set,(SUBR)lpsholdp, NULL},
-{ "cuserrnd", 0xffff },
-{ "duserrnd", 0xffff },
+{ "cuserrnd", 0xffff, TR },
+{ "duserrnd", 0xffff, TR },
{ "random", 0xffff },
{ "cuserrnd.i", S(CURAND),1,"i", "iii", (SUBR)iContinuousUserRand, NULL, NULL },
{ "cuserrnd.k", S(CURAND),2,"k", "kkk",
@@ -1701,14 +1701,14 @@ static OENTRY localops[] = {
(SUBR)Cuserrnd_set,(SUBR)kDiscreteUserRand,NULL },
{ "duserrnd.a", S(DURAND),4, "a", "k",
(SUBR)Cuserrnd_set,NULL,(SUBR)aDiscreteUserRand },
-{ "poscil", 0xfffe },
+{ "poscil", 0xfffe, TR },
{ "poscil.kk", S(POSC), 7, "s", "kkio", (SUBR)posc_set,(SUBR)kposc,(SUBR)posckk },
{ "poscil.ka", S(POSC), 5, "a", "kaio", (SUBR)posc_set, NULL, (SUBR)poscka },
{ "poscil.ak", S(POSC), 5, "a", "akio", (SUBR)posc_set, NULL, (SUBR)poscak },
{ "poscil.aa", S(POSC), 5, "a", "aaio", (SUBR)posc_set, NULL, (SUBR)poscaa },
-{ "lposcil", S(LPOSC), 5, "a", "kkkkio", (SUBR)lposc_set, NULL, (SUBR)lposc},
-{ "poscil3", S(POSC), 7, "s", "kkio", (SUBR)posc_set,(SUBR)kposc3,(SUBR)posc3 },
-{ "lposcil3", S(LPOSC), 5, "a", "kkkkio", (SUBR)lposc_set, NULL,(SUBR)lposc3},
+{ "lposcil", S(LPOSC), TR|5, "a", "kkkkio", (SUBR)lposc_set, NULL, (SUBR)lposc},
+{ "poscil3", S(POSC), TR|7, "s", "kkio", (SUBR)posc_set,(SUBR)kposc3,(SUBR)posc3 },
+{ "lposcil3", S(LPOSC), TR|5, "a", "kkkkio", (SUBR)lposc_set, NULL,(SUBR)lposc3},
{ "trigger", S(TRIG), 3, "k", "kkk", (SUBR)trig_set, (SUBR)trig, NULL },
{ "sum", S(SUM), 4, "a", "y", NULL, NULL, (SUBR)sum },
{ "product", S(SUM), 4, "a", "y", NULL, NULL, (SUBR)product },
diff --git a/Opcodes/ugmoss.c b/Opcodes/ugmoss.c
index d1375bd..d65d22c 100644
--- a/Opcodes/ugmoss.c
+++ b/Opcodes/ugmoss.c
@@ -565,10 +565,10 @@ static int ftmorf(CSOUND *csound, FTMORF *p)
#define S(x) sizeof(x)
static OENTRY localops[] = {
-{ "dconv", S(DCONV), 5, "a", "aii", (SUBR)dconvset, NULL, (SUBR)dconv },
+{ "dconv", S(DCONV), TR|5, "a", "aii", (SUBR)dconvset, NULL, (SUBR)dconv },
{ "vcomb", S(VCOMB), 5, "a", "akxioo", (SUBR)vcombset, NULL, (SUBR)vcomb },
{ "valpass", S(VCOMB),5, "a", "akxioo", (SUBR)vcombset, NULL, (SUBR)valpass },
-{ "ftmorf", S(FTMORF),3, "", "kii", (SUBR)ftmorfset, (SUBR)ftmorf, NULL },
+{ "ftmorf", S(FTMORF),TR|3, "", "kii", (SUBR)ftmorfset, (SUBR)ftmorf, NULL },
{ "and.ii", S(AOP), 1, "i", "ii", (SUBR)and_kk },
{ "and.kk", S(AOP), 2, "k", "kk", NULL, (SUBR)and_kk },
{ "and.ka", S(AOP), 4, "a", "ka", NULL, NULL, (SUBR)and_ka },
diff --git a/Opcodes/ugnorman.c b/Opcodes/ugnorman.c
index 21f2e3d..1ed5460 100644
--- a/Opcodes/ugnorman.c
+++ b/Opcodes/ugnorman.c
@@ -62,6 +62,7 @@ kamp ATSinterpread kfreq
#include "ugnorman.h"
#include <ctype.h>
+#include "interlocks.h"
#define ATSA_NOISE_VARIANCE 0.04
@@ -193,40 +194,40 @@ static void FetchPartial(ATSREAD *p, MYFLT *buf, MYFLT position)
{
MYFLT frac; /* the distance in time we are between frames */
int frame; /* the number of the first frame */
- double *frm1, *frm2; /* a pointer to frame 1 and frame 2 */
+ double *frm_1, *frm_2; /* a pointer to frame 1 and frame 2 */
double frm1amp, frm1freq, frm2amp, frm2freq;
frame = (int) position;
- frm1 = p->datastart + p->frmInc * frame + p->partialloc;
+ frm_1 = p->datastart + p->frmInc * frame + p->partialloc;
/* if we are using the data from the last frame */
/* we should not try to interpolate */
if (frame == p->maxFr) {
if (p->swapped == 1) {
- buf[0] = (MYFLT) bswap(frm1); /* calc amplitude */
- buf[1] = (MYFLT) bswap(frm1 + 1); /* calc freq */
+ buf[0] = (MYFLT) bswap(frm_1); /* calc amplitude */
+ buf[1] = (MYFLT) bswap(frm_1 + 1); /* calc freq */
}
else {
- buf[0] = (MYFLT) *frm1; /* calc amplitude */
- buf[1] = (MYFLT) *(frm1 + 1); /* calc freq */
+ buf[0] = (MYFLT) *frm_1; /* calc amplitude */
+ buf[1] = (MYFLT) *(frm_1 + 1); /* calc freq */
}
return;
}
- frm2 = frm1 + p->frmInc;
+ frm_2 = frm_1 + p->frmInc;
frac = position - frame;
/* byte swap if needed */
if (p->swapped == 1) {
- frm1amp = bswap(frm1);
- frm2amp = bswap(frm2);
- frm1freq = bswap(frm1 + 1);
- frm2freq = bswap(frm2 + 1);
+ frm1amp = bswap(frm_1);
+ frm2amp = bswap(frm_2);
+ frm1freq = bswap(frm_1 + 1);
+ frm2freq = bswap(frm_2 + 1);
}
else {
- frm1amp = *frm1;
- frm2amp = *frm2;
- frm1freq = *(frm1 + 1);
- frm2freq = *(frm2 + 1);
+ frm1amp = *frm_1;
+ frm2amp = *frm_2;
+ frm1freq = *(frm_1 + 1);
+ frm2freq = *(frm_2 + 1);
}
buf[0] = (MYFLT) (frm1amp + frac * (frm2amp - frm1amp)); /* calc amp. */
buf[1] = (MYFLT) (frm1freq + frac * (frm2freq - frm1freq)); /* calc freq */
@@ -339,21 +340,21 @@ static MYFLT FetchNzBand(ATSREADNZ *p, MYFLT position)
{
MYFLT frac; /* the distance in time we are between frames */
int frame; /* the time of the first frame */
- double *frm1, *frm2;
+ double *frm_1, *frm_2;
double frm1val, frm2val;
frame = (int) position;
- frm1 = p->datastart + p->frmInc * frame + p->nzbandloc;
- frm1val = (p->swapped == 1) ? bswap(frm1) : *frm1;
+ frm_1 = p->datastart + p->frmInc * frame + p->nzbandloc;
+ frm1val = (p->swapped == 1) ? bswap(frm_1) : *frm_1;
/* if we are using the data from the last frame */
/* we should not try to interpolate */
if (frame == p->maxFr)
return (MYFLT) frm1val;
- frm2 = frm1 + p->frmInc;
+ frm_2 = frm_1 + p->frmInc;
frac = position - frame;
- frm2val = (p->swapped == 1) ? bswap(frm2) : *frm2;
+ frm2val = (p->swapped == 1) ? bswap(frm_2) : *frm_2;
return (MYFLT) (frm1val + frac * (frm2val - frm1val)); /* calc energy */
}
@@ -641,7 +642,7 @@ static int atsadd(CSOUND *csound, ATSADD *p)
static void FetchADDPartials(ATSADD *p, ATS_DATA_LOC *buf, MYFLT position)
{
MYFLT frac; /* the distance in time we are between frames */
- double *frm0, *frm1;
+ double *frm_0, *frm_1;
double temp0amp, temp1amp;
double temp0freq, temp1freq;
int frame;
@@ -650,19 +651,19 @@ static void FetchADDPartials(ATSADD *p, ATS_DATA_LOC *buf, MYFLT position)
int npartials = (int) *p->iptls;
frame = (int) position;
- frm0 = p->datastart + frame * p->frmInc;
+ frm_0 = p->datastart + frame * p->frmInc;
/* if we are using the data from the last frame */
/* we should not try to interpolate */
if (frame == p->maxFr) {
for (i = 0; i < npartials; i++) {
if (p->swapped == 1) {
- buf[i].amp = bswap(&frm0[partialloc]); /* calc amplitude */
- buf[i].freq = bswap(&frm0[partialloc + 1]); /* freq */
+ buf[i].amp = bswap(&frm_0[partialloc]); /* calc amplitude */
+ buf[i].freq = bswap(&frm_0[partialloc + 1]); /* freq */
}
else {
- buf[i].amp = frm0[partialloc]; /* calc amplitude */
- buf[i].freq = frm0[partialloc + 1]; /* freq */
+ buf[i].amp = frm_0[partialloc]; /* calc amplitude */
+ buf[i].freq = frm_0[partialloc + 1]; /* freq */
}
partialloc += p->partialinc;
}
@@ -670,20 +671,20 @@ static void FetchADDPartials(ATSADD *p, ATS_DATA_LOC *buf, MYFLT position)
}
frac = position - frame;
- frm1 = frm0 + p->frmInc;
+ frm_1 = frm_0 + p->frmInc;
for (i = 0; i < npartials; i++) {
if (p->swapped == 1) {
- temp0amp = bswap(&frm0[partialloc]);
- temp1amp = bswap(&frm1[partialloc]);
- temp0freq = bswap(&frm0[partialloc + 1]);
- temp1freq = bswap(&frm1[partialloc + 1]);
+ temp0amp = bswap(&frm_0[partialloc]);
+ temp1amp = bswap(&frm_1[partialloc]);
+ temp0freq = bswap(&frm_0[partialloc + 1]);
+ temp1freq = bswap(&frm_1[partialloc + 1]);
}
else {
- temp0amp = frm0[partialloc];
- temp1amp = frm1[partialloc];
- temp0freq = frm0[partialloc + 1];
- temp1freq = frm1[partialloc + 1];
+ temp0amp = frm_0[partialloc];
+ temp1amp = frm_1[partialloc];
+ temp0freq = frm_0[partialloc + 1];
+ temp1freq = frm_1[partialloc + 1];
}
buf[i].amp = temp0amp + frac * (temp1amp - temp0amp); /* calc amplitude */
buf[i].freq = temp0freq + frac * (temp1freq - temp0freq); /* calc freq */
@@ -748,6 +749,7 @@ static MYFLT randiats(CSOUND *csound, RANDIATS *radat)
/* ------------------------------------------------------------------ */
+#if 0
static MYFLT randifats(CSOUND *csound, RANDIATS *radat, MYFLT freq)
{
MYFLT output;
@@ -765,13 +767,14 @@ static MYFLT randifats(CSOUND *csound, RANDIATS *radat, MYFLT freq)
return (FL(1.0) - ((MYFLT) output * (FL(2.0) / (MYFLT) 0x7FFFFFFF)));
}
+#endif
static void FetchADDNZbands(int ptls, int firstband, double *datastart,
int frmInc, int maxFr, int swapped,
double *buf, MYFLT position)
{
double frac; /* the distance in time we are between frames */
- double *frm0, *frm1;
+ double *frm_0, *frm_1;
double frm0val, frm1val;
int frame;
int i; /* for the for loop */
@@ -781,29 +784,29 @@ static void FetchADDNZbands(int ptls, int firstband, double *datastart,
printf("FetchADDNZbands: position %f\n", (double)position);
#endif
frame = (int) position;
- frm0 = datastart + frame * frmInc;
+ frm_0 = datastart + frame * frmInc;
/* if we are using the data from the last frame */
/* we should not try to interpolate */
if (frame == maxFr) {
for (i = 0; i < ptls; i++) {
- buf[i] = (swapped == 1 ? bswap(&frm0[firstband + i])
- : frm0[firstband + i]); /* output value */
+ buf[i] = (swapped == 1 ? bswap(&frm_0[firstband + i])
+ : frm_0[firstband + i]); /* output value */
}
return;
}
- frm1 = frm0 + frmInc;
+ frm_1 = frm_0 + frmInc;
frac = (double) (position - frame);
for (i = 0; i < ptls; i++) {
if (swapped == 1) {
- frm0val = bswap(&(frm0[firstband + i]));
- frm1val = bswap(&(frm1[firstband + i]));
+ frm0val = bswap(&(frm_0[firstband + i]));
+ frm1val = bswap(&(frm_1[firstband + i]));
}
else {
- frm0val = frm0[firstband + i];
- frm1val = frm1[firstband + i];
+ frm0val = frm_0[firstband + i];
+ frm1val = frm_1[firstband + i];
}
buf[i] = frm0val + frac * (frm1val - frm0val); /* calc energy */
@@ -1298,12 +1301,10 @@ static int atssinnoi(CSOUND *csound, ATSSINNOI *p)
double inc;
int i;
double phase;
- double *nzbuf;
double amp;
double nzamp; /* noize amp */
double sinewave;
MYFLT freq;
- MYFLT nzfreq;
ATS_DATA_LOC *oscbuf;
//csound->Message(csound , "start \n");
@@ -1337,13 +1338,12 @@ static int atssinnoi(CSOUND *csound, ATSSINNOI *p)
/* set local pointer to output and initialise output to zero */
ar = p->aoutput;
-
+
memset(ar, 0, csound->ksmps*sizeof(MYFLT));
/* for (i = 0; i < csound->ksmps; i++) */
/* *ar++ = FL(0.0); */
oscbuf = p->oscbuf;
- nzbuf = p->nzbuf;
/* do synthesis */
if (p->firstband != -1) {
@@ -1356,7 +1356,6 @@ static int atssinnoi(CSOUND *csound, ATSSINNOI *p)
inc = TWOPI * freq * csound->onedsr;
nzamp =
sqrt(*(p->nzbuf + i) / (p->atshead->winsz * ATSA_NOISE_VARIANCE));
- nzfreq = (freq < 500.0 ? 50.0 : freq * 0.05);
for (n=0; n<nsmps;n++) {
/* calc sine wave */
sinewave = cos(phase);
@@ -1365,13 +1364,14 @@ static int atssinnoi(CSOUND *csound, ATSSINNOI *p)
/* calc noise */
if (i < 25) {
noise = nzamp * COS(p->noiphase[i])
- * randiats(csound, &(p->randinoise[i]));
- p->noiphase[i] += p->phaseinc[i];
- } else noise = FL(0.0);
+ * randiats(csound, &(p->randinoise[i]));
+ p->noiphase[i] += p->phaseinc[i];
+ }
+ else noise = FL(0.0);
/* calc output */
ar[n] += csound->e0dbfs *
(MYFLT)(amp * sinewave * *p->ksinamp + noise **p->knzamp);
-
+
}
p->oscphase[i] = phase;
}
@@ -1402,7 +1402,7 @@ static int atssinnoi(CSOUND *csound, ATSSINNOI *p)
static void fetchSINNOIpartials(ATSSINNOI *p, MYFLT position)
{
double frac; /* the distance in time we are between frames */
- double *frm0, *frm1;
+ double *frm_0, *frm_1;
double frm0amp, frm0freq, frm1amp, frm1freq;
double nz0, nz1;
ATS_DATA_LOC *oscbuf;
@@ -1412,7 +1412,7 @@ static void fetchSINNOIpartials(ATSSINNOI *p, MYFLT position)
int npartials = p->npartials;
frame = (int) position;
- frm0 = p->datastart + frame * p->frmInc;
+ frm_0 = p->datastart + frame * p->frmInc;
oscbuf = p->oscbuf;
nzbuf = p->nzbuf;
@@ -1424,16 +1424,16 @@ static void fetchSINNOIpartials(ATSSINNOI *p, MYFLT position)
if (p->swapped == 1) {
for (i = (int) *p->iptloffset; i < (int) *p->iptls;
i += (int) *p->iptlincr) {
- oscbuf->amp = bswap(frm0 + 1 + i * (int) p->partialinc); /* amp */
- oscbuf->freq = bswap(frm0 + 2 + i * (int) p->partialinc); /* freq */
+ oscbuf->amp = bswap(frm_0 + 1 + i * (int) p->partialinc); /* amp */
+ oscbuf->freq = bswap(frm_0 + 2 + i * (int) p->partialinc); /* freq */
oscbuf++;
}
}
else {
for (i = (int) *p->iptloffset; i < (int) *p->iptls;
i += (int) *p->iptlincr) {
- oscbuf->amp = *(frm0 + 1 + i * (int) p->partialinc); /* amp */
- oscbuf->freq = *(frm0 + 2 + i * (int) p->partialinc); /* freq */
+ oscbuf->amp = *(frm_0 + 1 + i * (int) p->partialinc); /* amp */
+ oscbuf->freq = *(frm_0 + 2 + i * (int) p->partialinc); /* freq */
oscbuf++;
}
}
@@ -1442,8 +1442,8 @@ static void fetchSINNOIpartials(ATSSINNOI *p, MYFLT position)
if (p->swapped == 1) {
for (i = (int) *p->iptloffset; i < (int) *p->iptls;
i += (int) *p->iptlincr) {
- oscbuf->amp = bswap(frm0 + 1 + i * (int) p->partialinc); /* amp */
- oscbuf->freq = bswap(frm0 + 2 + i * (int) p->partialinc); /* freq */
+ oscbuf->amp = bswap(frm_0 + 1 + i * (int) p->partialinc); /* amp */
+ oscbuf->freq = bswap(frm_0 + 2 + i * (int) p->partialinc); /* freq */
*nzbuf = bswap(p->nzdata + frame * npartials + i);
nzbuf++;
oscbuf++;
@@ -1452,8 +1452,8 @@ static void fetchSINNOIpartials(ATSSINNOI *p, MYFLT position)
else {
for (i = (int) *p->iptloffset; i < (int) *p->iptls;
i += (int) *p->iptlincr) {
- oscbuf->amp = *(frm0 + 1 + i * (int) p->partialinc); /* amp */
- oscbuf->freq = *(frm0 + 2 + i * (int) p->partialinc); /* freq */
+ oscbuf->amp = *(frm_0 + 1 + i * (int) p->partialinc); /* amp */
+ oscbuf->freq = *(frm_0 + 2 + i * (int) p->partialinc); /* freq */
*nzbuf = *(p->nzdata + frame * npartials + i);
nzbuf++;
oscbuf++;
@@ -1463,17 +1463,17 @@ static void fetchSINNOIpartials(ATSSINNOI *p, MYFLT position)
return;
}
- frm1 = frm0 + p->frmInc;
+ frm_1 = frm_0 + p->frmInc;
frac = (double) (position - frame);
if (p->firstband == -1) { /* there is no noise data */
if (p->swapped == 1) {
for (i = (int) *p->iptloffset; i < (int) *p->iptls;
i += (int) *p->iptlincr) {
- frm0amp = bswap(frm0 + 1 + i * (int) p->partialinc);
- frm1amp = bswap(frm1 + 1 + i * (int) p->partialinc);
- frm0freq = bswap(frm0 + 2 + i * (int) p->partialinc);
- frm1freq = bswap(frm1 + 2 + i * (int) p->partialinc);
+ frm0amp = bswap(frm_0 + 1 + i * (int) p->partialinc);
+ frm1amp = bswap(frm_1 + 1 + i * (int) p->partialinc);
+ frm0freq = bswap(frm_0 + 2 + i * (int) p->partialinc);
+ frm1freq = bswap(frm_1 + 2 + i * (int) p->partialinc);
oscbuf->amp = frm0amp + frac * (frm1amp - frm0amp); /* amp */
oscbuf->freq = frm0freq + frac * (frm1freq - frm0freq); /* freq */
oscbuf++;
@@ -1482,10 +1482,10 @@ static void fetchSINNOIpartials(ATSSINNOI *p, MYFLT position)
else {
for (i = (int) *p->iptloffset; i < (int) *p->iptls;
i += (int) *p->iptlincr) {
- frm0amp = *(frm0 + 1 + i * (int) p->partialinc);
- frm1amp = *(frm1 + 1 + i * (int) p->partialinc);
- frm0freq = *(frm0 + 2 + i * (int) p->partialinc);
- frm1freq = *(frm1 + 2 + i * (int) p->partialinc);
+ frm0amp = *(frm_0 + 1 + i * (int) p->partialinc);
+ frm1amp = *(frm_1 + 1 + i * (int) p->partialinc);
+ frm0freq = *(frm_0 + 2 + i * (int) p->partialinc);
+ frm1freq = *(frm_1 + 2 + i * (int) p->partialinc);
oscbuf->amp = frm0amp + frac * (frm1amp - frm0amp); /* amp */
oscbuf->freq = frm0freq + frac * (frm1freq - frm0freq); /* freq */
oscbuf++;
@@ -1496,10 +1496,10 @@ static void fetchSINNOIpartials(ATSSINNOI *p, MYFLT position)
if (p->swapped == 1) {
for (i = (int) *p->iptloffset; i < (int) *p->iptls;
i += (int) *p->iptlincr) {
- frm0amp = bswap(frm0 + 1 + i * (int) p->partialinc);
- frm1amp = bswap(frm1 + 1 + i * (int) p->partialinc);
- frm0freq = bswap(frm0 + 2 + i * (int) p->partialinc);
- frm1freq = bswap(frm1 + 2 + i * (int) p->partialinc);
+ frm0amp = bswap(frm_0 + 1 + i * (int) p->partialinc);
+ frm1amp = bswap(frm_1 + 1 + i * (int) p->partialinc);
+ frm0freq = bswap(frm_0 + 2 + i * (int) p->partialinc);
+ frm1freq = bswap(frm_1 + 2 + i * (int) p->partialinc);
nz0 = bswap(p->nzdata + frame * npartials + i);
nz1 = bswap(p->nzdata + (frame + 1) * npartials + i);
oscbuf->amp = frm0amp + frac * (frm1amp - frm0amp); /* amp */
@@ -1513,10 +1513,10 @@ static void fetchSINNOIpartials(ATSSINNOI *p, MYFLT position)
else {
for (i = (int) *p->iptloffset; i < (int) *p->iptls;
i += (int) *p->iptlincr) {
- frm0amp = *(frm0 + 1 + i * (int) p->partialinc);
- frm1amp = *(frm1 + 1 + i * (int) p->partialinc);
- frm0freq = *(frm0 + 2 + i * (int) p->partialinc);
- frm1freq = *(frm1 + 2 + i * (int) p->partialinc);
+ frm0amp = *(frm_0 + 1 + i * (int) p->partialinc);
+ frm1amp = *(frm_1 + 1 + i * (int) p->partialinc);
+ frm0freq = *(frm_0 + 2 + i * (int) p->partialinc);
+ frm1freq = *(frm_1 + 2 + i * (int) p->partialinc);
nz0 = *(p->nzdata + frame * npartials + i);
nz1 = *(p->nzdata + (frame + 1) * npartials + i);
oscbuf->amp = frm0amp + frac * (frm1amp - frm0amp); /* amp */
@@ -1646,7 +1646,7 @@ static void FetchBUFPartials(ATSBUFREAD *p,
MYFLT position)
{
MYFLT frac; /* the distance in time we are between frames */
- double *frm0, *frm1;
+ double *frm_0, *frm_1;
double frm0amp, frm0freq, frm1amp, frm1freq;
int frame;
int i; /* for the for loop */
@@ -1654,22 +1654,22 @@ static void FetchBUFPartials(ATSBUFREAD *p,
int npartials = (int) *p->iptls;
frame = (int) position;
- frm0 = p->datastart + frame * p->frmInc;
+ frm_0 = p->datastart + frame * p->frmInc;
/* if we are using the data from the last frame */
/* we should not try to interpolate */
if (frame == p->maxFr) {
if (p->swapped == 1) {
for (i = 0; i < npartials; i++) { /* calc amplitude */
- buf[i].amp = buf2[i].amp = bswap(&frm0[partialloc]);
- buf[i].freq = buf2[i].freq = bswap(&frm0[partialloc + 1]);
+ buf[i].amp = buf2[i].amp = bswap(&frm_0[partialloc]);
+ buf[i].freq = buf2[i].freq = bswap(&frm_0[partialloc + 1]);
partialloc += p->partialinc;
}
}
else {
for (i = 0; i < npartials; i++) {
- buf[i].amp = buf2[i].amp = frm0[partialloc]; /* calc amplitude */
- buf[i].freq = buf2[i].freq = frm0[partialloc + 1];
+ buf[i].amp = buf2[i].amp = frm_0[partialloc]; /* calc amplitude */
+ buf[i].freq = buf2[i].freq = frm_0[partialloc + 1];
partialloc += p->partialinc;
}
}
@@ -1677,13 +1677,13 @@ static void FetchBUFPartials(ATSBUFREAD *p,
}
frac = position - frame;
- frm1 = frm0 + p->frmInc;
+ frm_1 = frm_0 + p->frmInc;
if (p->swapped == 1) {
for (i = 0; i < npartials; i++) {
- frm0amp = bswap(&frm0[partialloc]);
- frm0freq = bswap(&frm0[partialloc + 1]);
- frm1amp = bswap(&frm1[partialloc]);
- frm1freq = bswap(&frm1[partialloc + 1]);
+ frm0amp = bswap(&frm_0[partialloc]);
+ frm0freq = bswap(&frm_0[partialloc + 1]);
+ frm1amp = bswap(&frm_1[partialloc]);
+ frm1freq = bswap(&frm_1[partialloc + 1]);
/* calc amplitude */
buf[i].amp = buf2[i].amp = frm0amp + frac * (frm1amp - frm0amp);
/* calc freq */
@@ -1696,12 +1696,12 @@ static void FetchBUFPartials(ATSBUFREAD *p,
for (i = 0; i < npartials; i++) {
/* calc amplitude */
buf[i].amp = buf2[i].amp =
- frm0[partialloc] + frac * (frm1[partialloc] - frm0[partialloc]);
+ frm_0[partialloc] + frac * (frm_1[partialloc] - frm_0[partialloc]);
/* calc freq */
buf[i].freq = buf2[i].freq =
- *p->kfmod * (frm0[partialloc + 1]
- + frac * (frm1[partialloc + 1]
- - frm0[partialloc + 1]));
+ *p->kfmod * (frm_0[partialloc + 1]
+ + frac * (frm_1[partialloc + 1]
+ - frm_0[partialloc + 1]));
partialloc += p->partialinc; /* get to the next partial */
}
}
@@ -1947,7 +1947,7 @@ static int atscrossset(CSOUND *csound, ATSCROSS *p)
static void FetchCROSSPartials(ATSCROSS *p, ATS_DATA_LOC *buf, MYFLT position)
{
MYFLT frac; /* the distance in time we are between frames */
- double *frm0, *frm1;
+ double *frm_0, *frm_1;
double frm0amp, frm0freq, frm1amp, frm1freq;
int frame;
int i; /* for the for loop */
@@ -1955,22 +1955,22 @@ static void FetchCROSSPartials(ATSCROSS *p, ATS_DATA_LOC *buf, MYFLT position)
int npartials = (int) *p->iptls;
frame = (int) position;
- frm0 = p->datastart + frame * p->frmInc;
+ frm_0 = p->datastart + frame * p->frmInc;
/* if we are using the data from the last frame */
/* we should not try to interpolate */
if (frame == p->maxFr) {
if (p->swapped == 1) {
for (i = 0; i < npartials; i++) {
- buf[i].amp = bswap(&frm0[partialloc]); /* calc amplitude */
- buf[i].freq = bswap(&frm0[partialloc + 1]);
+ buf[i].amp = bswap(&frm_0[partialloc]); /* calc amplitude */
+ buf[i].freq = bswap(&frm_0[partialloc + 1]);
partialloc += p->partialinc;
}
}
else {
for (i = 0; i < npartials; i++) {
- buf[i].amp = frm0[partialloc]; /* calc amplitude */
- buf[i].freq = frm0[partialloc + 1];
+ buf[i].amp = frm_0[partialloc]; /* calc amplitude */
+ buf[i].freq = frm_0[partialloc + 1];
partialloc += p->partialinc;
}
}
@@ -1978,13 +1978,13 @@ static void FetchCROSSPartials(ATSCROSS *p, ATS_DATA_LOC *buf, MYFLT position)
}
frac = position - frame;
- frm1 = frm0 + p->frmInc;
+ frm_1 = frm_0 + p->frmInc;
if (p->swapped == 1) {
for (i = 0; i < npartials; i++) {
- frm0amp = frm0[partialloc];
- frm0freq = frm0[partialloc + 1];
- frm1amp = frm1[partialloc];
- frm1freq = frm1[partialloc + 1];
+ frm0amp = frm_0[partialloc];
+ frm0freq = frm_0[partialloc + 1];
+ frm1amp = frm_1[partialloc];
+ frm1freq = frm_1[partialloc + 1];
buf[i].amp = frm0amp + frac * (frm1amp - frm0amp); /* calc amplitude */
buf[i].freq = frm0freq + frac * (frm1freq - frm0freq); /* calc freq */
@@ -1994,11 +1994,11 @@ static void FetchCROSSPartials(ATSCROSS *p, ATS_DATA_LOC *buf, MYFLT position)
else {
for (i = 0; i < npartials; i++) {
/* calc amplitude */
- buf[i].amp = frm0[partialloc]
- + frac * (frm1[partialloc] - frm0[partialloc]);
+ buf[i].amp = frm_0[partialloc]
+ + frac * (frm_1[partialloc] - frm_0[partialloc]);
/* calc freq */
- buf[i].freq = frm0[partialloc + 1]
- + frac * (frm1[partialloc + 1] - frm0[partialloc + 1]);
+ buf[i].freq = frm_0[partialloc + 1]
+ + frac * (frm_1[partialloc + 1] - frm_0[partialloc + 1]);
partialloc += p->partialinc; /* get to the next partial */
}
}
@@ -2144,7 +2144,7 @@ static OENTRY localops[] = {
(SUBR) atsreadset, (SUBR) atsread, (SUBR) NULL },
{ "ATSreadnz", S(ATSREADNZ), 3, "k", "kTi",
(SUBR) atsreadnzset, (SUBR) atsreadnz, (SUBR) NULL },
- { "ATSadd", S(ATSADD), 5, "a", "kkTiiopo",
+ { "ATSadd", S(ATSADD), TR|5, "a", "kkTiiopo",
(SUBR) atsaddset, (SUBR) NULL, (SUBR) atsadd },
{ "ATSaddnz", S(ATSADDNZ), 5, "a", "kTiop",
(SUBR) atsaddnzset, (SUBR) NULL, (SUBR) atsaddnz },
@@ -2156,7 +2156,7 @@ static OENTRY localops[] = {
(SUBR) atspartialtapset, (SUBR) atspartialtap, (SUBR) NULL },
{ "ATSinterpread", S(ATSINTERPREAD), 3, "k", "k",
(SUBR) atsinterpreadset, (SUBR) atsinterpread, (SUBR) NULL },
- { "ATScross", S(ATSCROSS), 5, "a", "kkTikkiopoo",
+ { "ATScross", S(ATSCROSS), TR|5, "a", "kkTikkiopoo",
(SUBR) atscrossset, (SUBR) NULL, (SUBR) atscross },
{ "ATSinfo", S(ATSINFO), 1, "i", "Ti",
(SUBR) atsinfo, (SUBR) NULL, (SUBR) NULL }
diff --git a/Opcodes/ugsc.c b/Opcodes/ugsc.c
index 52c11b1..e3b07ea 100644
--- a/Opcodes/ugsc.c
+++ b/Opcodes/ugsc.c
@@ -127,12 +127,10 @@ static int hilbert(CSOUND *csound, HILBERT *p)
{
MYFLT xn1 = FL(0.0), yn1 = FL(0.0), xn2 = FL(0.0), yn2 = FL(0.0);
MYFLT *out1, *out2, *in;
- MYFLT *xnm1, *ynm1, *coef;
+ MYFLT *coef;
int n, nsmps = csound->ksmps;
int j;
- xnm1 = p->xnm1;
- ynm1 = p->ynm1;
coef = p->coef;
out1 = p->out1;
out2 = p->out2;
@@ -344,14 +342,12 @@ static int phaser1(CSOUND *csound, PHASER1 *p)
{
MYFLT xn = FL(0.0), yn = FL(0.0);
MYFLT *out, *in;
- MYFLT *xnm1, *ynm1, feedback;
+ MYFLT feedback;
MYFLT coef = *p->kcoef, fbgain = *p->fbgain;
MYFLT beta, wp;
int nsmps = csound->ksmps;
int i, j;
- xnm1 = p->xnm1;
- ynm1 = p->ynm1;
feedback = p->feedback;
out = p->out;
in = p->in;
@@ -460,10 +456,10 @@ static int phaser2(CSOUND *csound, PHASER2 *p)
/* Difference equations for implementing canonical
* 2nd order section. (Direct Form II)
*/
- temp = xn - b * p->nm1[j] - a * p->nm2[j];
- yn = a * temp + b * p->nm1[j] + nm2[j];
- p->nm2[j] = p->nm1[j];
- p->nm1[j] = temp;
+ temp = xn - b * nm1[j] - a * nm2[j];
+ yn = a * temp + b * nm1[j] + nm2[j];
+ nm2[j] = nm1[j];
+ nm1[j] = temp;
xn = yn;
}
out[n] = yn;
diff --git a/Opcodes/urandom.c b/Opcodes/urandom.c
index 5cafb4e..f60c292 100644
--- a/Opcodes/urandom.c
+++ b/Opcodes/urandom.c
@@ -57,7 +57,7 @@ static int urand_run(CSOUND *csound, URANDOM *p)
int ur = p->ur;
/* union ieee754_double x; */
int64_t x;
- read(p->ur, &x, sizeof(int64_t));
+ read(ur, &x, sizeof(int64_t));
/* x.ieee.exponent = x.ieee.exponent& 0x377; */
/* printf("Debug: %s(%d): %g %d %03x %05x %08x\n", __FILE__, __LINE__, x.d, */
@@ -80,7 +80,7 @@ static int urand_arun(CSOUND *csound, URANDOM *p)
MYFLT *ar = p->ar;
int n, nsmps = csound->ksmps;
for (n=0; n<nsmps; n++) {
- read(p->ur, &x, sizeof(int64_t));
+ read(ur, &x, sizeof(int64_t));
ar[n] = p->mul *((MYFLT)x/(MYFLT)0x7fffffffffffffff) + p->add;
}
return OK;
@@ -89,12 +89,13 @@ static int urand_arun(CSOUND *csound, URANDOM *p)
#define S(x) sizeof(x)
-static OENTRY localops[] = {
+static OENTRY urandom_localops[] = {
{ "urandom", 0xFFFF, 0, NULL, NULL, NULL},
{ "urandom.i", S(URANDOM), 1, "k", "jp", (SUBR) urand_irate },
{ "urandom.k", S(URANDOM), 3, "k", "jp", (SUBR) urand_init, (SUBR) urand_run},
- { "urandom.a", S(URANDOM), 5, "a", "jp", (SUBR) urand_init, NULL, (SUBR) urand_arun}
+ { "urandom.a", S(URANDOM), 5, "a", "jp",
+ (SUBR) urand_init, NULL, (SUBR) urand_arun}
};
-LINKAGE
+LINKAGE1(urandom_localops)
diff --git a/Opcodes/vaops.c b/Opcodes/vaops.c
index d5849ab..6135bb2 100644
--- a/Opcodes/vaops.c
+++ b/Opcodes/vaops.c
@@ -21,7 +21,8 @@
02111-1307 USA
*/
-#include "csdl.h"
+#include "csoundCore.h"
+#include "interlocks.h"
#define MYFLOOR(x) (x >= FL(0.0) ? (int32)x : (int32)((double)x - 0.99999999))
@@ -51,12 +52,11 @@ static int vaset(CSOUND *csound, VA_SET *p)
#define S(x) sizeof(x)
-static OENTRY localops[] = {
- { "vaget", S(VA_GET), 2, "k", "ka", NULL, (SUBR)vaget },
- { "vaset", S(VA_SET), 2, "", "kka", NULL, (SUBR)vaset }
-
+static OENTRY vaops_localops[] = {
+ { "vaget", S(VA_GET), 2, "k", "ka", NULL, (SUBR)vaget },
+ { "vaset", S(VA_SET), 2, "", "kka", NULL, (SUBR)vaset }
};
-LINKAGE
+LINKAGE1(vaops_localops)
diff --git a/Opcodes/vbap.c b/Opcodes/vbap.c
index a97aa75..1f3d181 100644
--- a/Opcodes/vbap.c
+++ b/Opcodes/vbap.c
@@ -27,11 +27,13 @@ assisting functions for VBAP
functions for loudspeaker table initialization */
-#include "csdl.h"
+#include "csoundCore.h"
+#include "interlocks.h"
#include "vbap.h"
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
+#include "interlocks.h"
static void choose_ls_triplets(CSOUND *csound, ls lss[CHANNELS],
ls_triplet_chain **ls_triplets,
@@ -694,7 +696,7 @@ static void choose_ls_tuplets(CSOUND *csound,
int exist[CHANNELS];
int amount = 0;
MYFLT inv_mat[CHANNELS][4], *ls_table, *ptr;
- int ftable_size;
+ //int ftable_size;
for (i=0;i<CHANNELS;i++) {
exist[i]=0;
@@ -729,13 +731,13 @@ static void choose_ls_tuplets(CSOUND *csound,
}
}
+#if 0
if ( amount*6 + 6 <= 16) ftable_size = 16;
else if ( amount*6 + 6 <= 32) ftable_size = 32;
else if ( amount*6 + 6 <= 64) ftable_size = 64;
else if ( amount*6 + 6 <= 128) ftable_size = 128;
else if ( amount*6 + 6 <= 256) ftable_size = 256;
else if ( amount*6 + 6 <= 1024) ftable_size = 1024;
-#if 0
csound->Message(csound,
"Loudspeaker matrices calculated with configuration : ");
for (i=0; i< ls_amount; i++)
@@ -897,28 +899,31 @@ void new_spread_base(CART_VEC spreaddir, CART_VEC vscartdir,
#define S(x) sizeof(x)
-static OENTRY localops[] = {
- { "vbap4", S(VBAP_FOUR), 5, "aaaa", "akOO",
+/* static */
+static OENTRY vbap_localops[] = {
+ { "vbap4", S(VBAP_FOUR), TR|5, "aaaa", "akOO",
(SUBR) vbap_FOUR_init, (SUBR) NULL, (SUBR) vbap_FOUR },
- { "vbap8", S(VBAP_EIGHT), 5, "aaaaaaaa", "akOO",
+ { "vbap8", S(VBAP_EIGHT), TR|5, "aaaaaaaa", "akOO",
(SUBR) vbap_EIGHT_init, (SUBR) NULL, (SUBR) vbap_EIGHT },
- { "vbap16", S(VBAP_SIXTEEN), 5, "aaaaaaaaaaaaaaaa", "akOO",
+ { "vbap16", S(VBAP_SIXTEEN), TR|5, "aaaaaaaaaaaaaaaa", "akOO",
(SUBR) vbap_SIXTEEN_init, (SUBR) NULL, (SUBR) vbap_SIXTEEN },
- { "vbapz", S(VBAP_ZAK), 5, "", "iiakOO",
+ { "vbapz", S(VBAP_ZAK), ZW|TR|5, "", "iiakOO",
(SUBR) vbap_zak_init, (SUBR) NULL, (SUBR) vbap_zak },
- { "vbaplsinit", S(VBAP_LS_INIT), 1, "", "iioooooooooooooooooooooooooooooooo",
+ { "vbaplsinit", S(VBAP_LS_INIT), TR|1, "", "iioooooooooooooooooooooooooooooooo",
(SUBR) vbap_ls_init, (SUBR) NULL, (SUBR) NULL },
- { "vbap4move", S(VBAP_FOUR_MOVING), 5, "aaaa", "aiiim",
+ { "vbap4move", S(VBAP_FOUR_MOVING), TR|5, "aaaa", "aiiim",
(SUBR) vbap_FOUR_moving_init, (SUBR) NULL, (SUBR) vbap_FOUR_moving },
- { "vbap8move", S(VBAP_EIGHT_MOVING), 5, "aaaaaaaa", "aiiim",
+ { "vbap8move", S(VBAP_EIGHT_MOVING), TR|5, "aaaaaaaa", "aiiim",
(SUBR) vbap_EIGHT_moving_init, (SUBR) NULL, (SUBR) vbap_EIGHT_moving },
- { "vbap16move", S(VBAP_SIXTEEN_MOVING), 5, "aaaaaaaaaaaaaaaa", "aiiim",
+ { "vbap16move", S(VBAP_SIXTEEN_MOVING), TR|5, "aaaaaaaaaaaaaaaa", "aiiim",
(SUBR) vbap_SIXTEEN_moving_init, (SUBR) NULL, (SUBR) vbap_SIXTEEN_moving },
- { "vbapzmove", S(VBAP_ZAK_MOVING), 5, "", "iiaiiim",
+ { "vbapzmove", S(VBAP_ZAK_MOVING), ZW|TR|5, "", "iiaiiim",
(SUBR) vbap_zak_moving_init, (SUBR) NULL, (SUBR) vbap_zak_moving }
};
-PUBLIC long csound_opcode_init(CSOUND *csound, OENTRY **ep)
+LINKAGE1(vbap_localops)
+
+/* PUBLIC long csound_opcode_init(CSOUND *csound, OENTRY **ep)
{
create_ls_table(csound, 3);
*ep = localops;
@@ -929,4 +934,4 @@ PUBLIC int csoundModuleInfo(void)
{
return ((CS_APIVERSION << 16) + (CS_APISUBVER << 8) + (int) sizeof(MYFLT));
}
-
+*/
diff --git a/Opcodes/vpvoc.c b/Opcodes/vpvoc.c
index 329b577..1526e29 100644
--- a/Opcodes/vpvoc.c
+++ b/Opcodes/vpvoc.c
@@ -158,7 +158,7 @@ int vpvset(CSOUND *csound, VPVOC *p)
int i;
char pvfilnam[64];
PVOCEX_MEMFILE pp;
- int frInc, chans, size; /* THESE SHOULD BE SAVED IN PVOC STRUCT */
+ int frInc, chans; /* THESE SHOULD BE SAVED IN PVOC STRUCT */
p->pp = PVOC_GetGlobals(csound);
/* If optional table given, fake it up -- JPff */
@@ -167,7 +167,8 @@ int vpvset(CSOUND *csound, VPVOC *p)
else {
csound->AuxAlloc(csound, sizeof(TABLESEG), &p->auxtab);
p->tableseg = (TABLESEG*) p->auxtab.auxp;
- if (UNLIKELY((p->tableseg->outfunc = csound->FTFind(csound, p->isegtab)) == NULL)) {
+ if (UNLIKELY((p->tableseg->outfunc =
+ csound->FTFind(csound, p->isegtab)) == NULL)) {
return csound->InitError(csound,
Str("vpvoc: Could not find ifnmagctrl table %f"),
*p->isegtab);
@@ -224,7 +225,6 @@ int vpvset(CSOUND *csound, VPVOC *p)
/* factor by which to mult expand phase diffs (ratio of samp spacings) */
p->frPrtim = csound->esr / (MYFLT) frInc;
/* factor by which to mulitply 'real' time index to get frame index */
- size = pvfrsiz(p); /* size used in def of OPWLEN ? */
/* amplitude scale for PVOC */
/* p->scale = (MYFLT) pp.fftsize * ((MYFLT) pp.fftsize / (MYFLT) pp.winsize);
*/
diff --git a/Opcodes/wave-terrain.c b/Opcodes/wave-terrain.c
index b66faaf..318d11c 100644
--- a/Opcodes/wave-terrain.c
+++ b/Opcodes/wave-terrain.c
@@ -278,9 +278,9 @@ static int scantPerf(CSOUND *csound, SCANTABLE *p)
#define S(x) sizeof(x)
static OENTRY localops[] = {
-{ "wterrain", S(WAVETER), 5, "a", "kkkkkkii",(SUBR)wtinit, NULL, (SUBR)wtPerf },
-{ "scantable", S(SCANTABLE),5,"a", "kkiiiii",(SUBR)scantinit,NULL,(SUBR)scantPerf},
-{ "scanhammer",S(SCANHAMMER),1,"", "iiii", (SUBR)scanhinit, NULL, NULL }
+{ "wterrain", S(WAVETER), TR|5, "a", "kkkkkkii",(SUBR)wtinit, NULL, (SUBR)wtPerf },
+{ "scantable", S(SCANTABLE),TR|5,"a", "kkiiiii",(SUBR)scantinit,NULL,(SUBR)scantPerf},
+{ "scanhammer",S(SCANHAMMER),TB|1,"", "iiii", (SUBR)scanhinit, NULL, NULL }
};
int wave_terrain_init_(CSOUND *csound)
diff --git a/Opcodes/wiimote.c b/Opcodes/wiimote.c
index d3991cd..2408894 100644
--- a/Opcodes/wiimote.c
+++ b/Opcodes/wiimote.c
@@ -160,7 +160,7 @@ int wiimote_poll(CSOUND *csound, WIIMOTE *p)
csound->Warning(csound,
Str("wiimote %i disconnected\n"), wiimotes[i]->unid);
*p->res = FL(0.0);
- return;
+ return OK;
case WIIUSE_NUNCHUK_INSERTED:
/*
* This is a good place to set any nunchuk specific
@@ -401,11 +401,11 @@ int wiimote_range(CSOUND *csound, WIIRANGE *p)
#define S(x) sizeof(x)
-static OENTRY localops[] = {
+static OENTRY wiimote_localops[] = {
{"wiiconnect", S(WIIMOTE), 3, "i", "oo", (SUBR)wiimote_find, (SUBR)wiimote_poll },
{"wiidata", S(WIIMOTE), 3, "k", "ko", (SUBR)wii_data_init, (SUBR)wii_data },
{"wiisend", S(WIIMOTES), 3, "", "kko", (SUBR)wii_data_inits, (SUBR)wii_send },
{"wiirange", S(WIIRANGE), 1, "", "iiio", (SUBR)wiimote_range, NULL, NULL }
};
-LINKAGE
+LINKAGE1(wiimote_localops)
diff --git a/SConstruct b/SConstruct
index e30d672..d7f7c07 100644
--- a/SConstruct
+++ b/SConstruct
@@ -72,7 +72,7 @@ print "System platform is '" + getPlatform() + "'."
# Create options that can be set from the command line.
-commandOptions = Options()
+commandOptions = Variables() # was Options()
commandOptions.Add('CC')
commandOptions.Add('CXX')
commandOptions.Add('LINK')
@@ -119,9 +119,9 @@ commandOptions.Add('generateTags',
commandOptions.Add('generatePdf',
'Set to 1 to generate PDF documentation',
'0')
-commandOptions.Add('buildLoris',
- 'Set to 1 to build the Loris Python extension and opcodes',
- '1')
+#commandOptions.Add('buildLoris',
+# 'Set to 1 to build the Loris Python extension and opcodes',
+# '1')
commandOptions.Add('useOSC',
'Set to 1 if you want OSC support',
'0')
@@ -222,12 +222,12 @@ commandOptions.Add('buildPythonWrapper',
commandOptions.Add('buildJavaWrapper',
'Set to 1 to build Java wrapper for the C++ interface library (needs buildInterfaces).',
'0')
-commandOptions.Add('buildOSXGUI',
- 'On OSX, set to 1 to build the basic GUI frontend',
- '0')
-commandOptions.Add('buildCSEditor',
- 'Set to 1 to build the Csound syntax highlighting text editor. Requires FLTK headers and libs',
- '0')
+#commandOptions.Add('buildOSXGUI',
+# 'On OSX, set to 1 to build the basic GUI frontend',
+# '0')
+#commandOptions.Add('buildCSEditor',
+# 'Set to 1 to build the Csound syntax highlighting text editor. Requires FLTK headers and libs',
+# '0')
commandOptions.Add('withICL',
'On Windows, set to 1 to build with the Intel C++ Compiler (also requires Microsoft Visual C++), or set to 0 to build with MinGW',
'0')
@@ -266,9 +266,6 @@ commandOptions.Add('useOpenMP',
commandOptions.Add('tclversion',
'Set to 8.4 or 8.5',
'8.5')
-commandOptions.Add('includeMP3',
- 'Set to 1 if using mpadec',
- '0')
commandOptions.Add('includeWii',
'Set to 1 if using libwiimote',
'0')
@@ -283,7 +280,7 @@ commandOptions.Add('buildcatalog',
'0')
commandOptions.Add('includeSerial',
'Set to 1 if compiling serial code',
- '0')
+ '1')
# Define the common part of the build environment.
# This section also sets up customized options for third-party libraries, which
# should take priority over default options.
@@ -331,12 +328,21 @@ elif getPlatform() == 'win32':
#Tool('mingw')(commonEnvironment)
optionsFilename = 'custom-mingw.py'
+if(not FindFile(optionsFilename, '.')):
+ print "\n\n*************************************************"
+ print "%s NOT FOUND, please copy one of the custom-***.py" % optionsFilename
+ print "as %s and modify it to suit your system, if necessary" % optionsFilename
+ print "*************************************************"
+ Exit(-1)
+
+
Help(commandOptions.GenerateHelpText(commonEnvironment))
if commonEnvironment['custom']:
optionsFilename = commonEnvironment['custom']
Requires(optionsFilename, commonEnvironment)
+
print "Using options from '%s.'" % optionsFilename
@@ -429,7 +435,7 @@ elif commonEnvironment['gcc3opt'] != '0' or commonEnvironment['gcc4opt'] != '0':
commonEnvironment.Prepend(CCFLAGS = Split('-O3 -arch %s' % cpuType))
commonEnvironment.Prepend(CXXFLAGS = Split('-O3 -arch %s' % cpuType))
else:
- commonEnvironment.Prepend(CCFLAGS = Split('-O3 -mtune=%s' % (cpuType)))
+ commonEnvironment.Prepend(CCFLAGS = Split('-Wall -O3 -mtune=%s' % (cpuType)))
if commonEnvironment['buildRelease'] != '0':
@@ -477,7 +483,6 @@ if commonEnvironment['Word64'] == '1':
else:
commonEnvironment.Append(CCFLAGS = ['-fPIC'])
-
if commonEnvironment['useDouble'] == '0':
print 'CONFIGURATION DECISION: Using single-precision floating point for audio samples.'
else:
@@ -695,13 +700,6 @@ if not configure.CheckLibWithHeader("pthread", "pthread.h", language = "C"):
Exit(-1)
# Support for GEN49 (load MP3 file)
-if commonEnvironment['includeMP3'] == '1' : ### and configure.CheckHeader("mp3dec.h", language = "C") :
- mpafound = 1
- commonEnvironment.Append(CPPFLAGS = ['-DINC_MP3'])
- print 'CONFIGURATION DECISION: Building with MP3 support'
-else:
- mpafound = 0
- print 'CONFIGURATION DECISION: No MP3 support'
if commonEnvironment['includeWii'] == '1' and configure.CheckLibWithHeader('wiiuse', "wiiuse.h", language = "C") :
wiifound = 1
@@ -728,9 +726,12 @@ else:
#pthreadSpinlockFound = configure.CheckLibWithHeader('pthread', 'pthread.h', 'C', 'pthread_spin_lock(0);')
if getPlatform() != 'darwin': # pthreadSpinlockFound:
commonEnvironment.Append(CPPFLAGS = ['-DHAVE_PTHREAD_SPIN_LOCK'])
-pthreadBarrierFound = configure.CheckLibWithHeader('pthread', 'pthread.h', 'C', 'pthread_barrier_init(0, 0, 0);')
+pthreadBarrierFound = configure.CheckLibWithHeader('pthread', 'pthread.h', 'C', 'pthread_barrier_init(0, NULL, 0);')
if pthreadBarrierFound:
+ print 'CONFIGURATION DECISION: Using HAVE_PTHREAD_BARRIER_INIT'
commonEnvironment.Append(CPPFLAGS = ['-DHAVE_PTHREAD_BARRIER_INIT'])
+else:
+ print 'CONFIGURATION DECISION: Not using HAVE_PTHREAD_BARRIER_INIT'
openMpFound = configure.CheckLibWithHeader('gomp', 'omp.h', 'C++', 'int n = omp_get_num_threads();')
if openMpFound and pthreadBarrierFound and commonEnvironment['useOpenMP'] == '1':
print 'CONFIGURATION DECISION: Using OpenMP.'
@@ -759,7 +760,7 @@ else:
boostFound = configure.CheckHeader("boost/any.hpp", language = "C++")
gmmFound = configure.CheckHeader("gmm/gmm.h", language = "C++")
alsaFound = configure.CheckLibWithHeader("asound", "alsa/asoundlib.h", language = "C")
-oscFound = configure.CheckLibWithHeader("lo", "lo/lo.h", language = "C")
+oscFound = configure.CheckHeader("lo/lo.h", language = "C")
musicXmlFound = configure.CheckLibWithHeader('musicxml2', 'xmlfile.h', 'C++', 'MusicXML2::SXMLFile f = MusicXML2::TXMLFile::create();', autoadd=0)
if musicXmlFound:
commonEnvironment.Append(CPPFLAGS = ['-DHAVE_MUSICXML2'])
@@ -884,7 +885,8 @@ if getPlatform() == 'darwin':
csoundLibraryEnvironment = commonEnvironment.Clone()
if commonEnvironment['buildMultiCore'] != '0':
- csoundLibraryEnvironment.Append(CPPFLAGS = ['-DPARCS'])
+ if commonEnvironment['buildNewParser'] != '0':
+ csoundLibraryEnvironment.Append(CPPFLAGS = ['-DPARCS'])
if commonEnvironment['buildNewParser'] != '0':
if commonEnvironment['buildMultiCore'] != '0':
@@ -966,7 +968,6 @@ uuid
winmm
winspool
ws2_32
-wsock32
''')
else:
csoundWindowsLibraries = Split('''
@@ -984,8 +985,6 @@ wsock32
csoundDynamicLibraryEnvironment.Append(SHLINKFLAGS = ['-module'])
elif getPlatform() == 'linux' or getPlatform() == 'sunos' or getPlatform() == 'darwin':
csoundDynamicLibraryEnvironment.Append(LIBS = ['dl', 'm', 'pthread'])
- if mpafound :
- csoundDynamicLibraryEnvironment.Append(LIBS = ['mpadec'])
csoundInterfacesEnvironment = csoundDynamicLibraryEnvironment.Clone()
if buildOSXFramework:
@@ -1050,6 +1049,7 @@ def makePlugin(env, pluginName, srcs):
libCsoundSources = Split('''
Engine/auxfd.c
Engine/cfgvar.c
+Engine/corfiles.c
Engine/entry1.c
Engine/envvar.c
Engine/express.c
@@ -1069,6 +1069,7 @@ Engine/scxtract.c
Engine/sort.c
Engine/sread.c
Engine/swrite.c
+Engine/swritestr.c
Engine/twarp.c
InOut/libsnd.c
InOut/libsnd_u.c
@@ -1079,6 +1080,13 @@ InOut/winascii.c
InOut/windin.c
InOut/window.c
InOut/winEPS.c
+InOut/libmpadec/layer1.c
+InOut/libmpadec/layer2.c
+InOut/libmpadec/layer3.c
+InOut/libmpadec/synth.c
+InOut/libmpadec/tables.c
+InOut/libmpadec/mpadec.c
+InOut/libmpadec/mp3dec.c
OOps/aops.c
OOps/bus.c
OOps/cmath.c
@@ -1110,6 +1118,12 @@ OOps/ugens6.c
OOps/ugrw1.c
OOps/ugrw2.c
OOps/vdelay.c
+Opcodes/Vosim.c
+Opcodes/babo.c
+Opcodes/bilbar.c
+Opcodes/compress.c
+Opcodes/eqfil.c
+Opcodes/ftest.c
Top/argdecode.c
Top/cscore_internal.c
Top/cscorfns.c
@@ -1141,10 +1155,65 @@ Engine/cs_par_orc_semantic_analysis.c
Engine/cs_par_dispatch.c
''')
+stdopcodes = Split('''
+ Opcodes/ambicode.c Opcodes/bbcut.c Opcodes/biquad.c
+ Opcodes/butter.c Opcodes/clfilt.c Opcodes/cross2.c
+ Opcodes/dam.c Opcodes/dcblockr.c Opcodes/filter.c
+ Opcodes/flanger.c Opcodes/follow.c Opcodes/fout.c
+ Opcodes/freeverb.c Opcodes/ftconv.c Opcodes/ftgen.c
+ Opcodes/gab/gab.c Opcodes/gab/vectorial.c Opcodes/grain.c
+ Opcodes/locsig.c Opcodes/lowpassr.c Opcodes/metro.c
+ Opcodes/midiops2.c Opcodes/midiops3.c Opcodes/newfils.c
+ Opcodes/nlfilt.c Opcodes/oscbnk.c Opcodes/pluck.c
+ Opcodes/repluck.c Opcodes/reverbsc.c Opcodes/seqtime.c
+ Opcodes/sndloop.c Opcodes/sndwarp.c Opcodes/space.c
+ Opcodes/spat3d.c Opcodes/syncgrain.c Opcodes/ugens7.c
+ Opcodes/ugens9.c Opcodes/ugensa.c Opcodes/uggab.c
+ Opcodes/ugmoss.c Opcodes/ugnorman.c Opcodes/ugsc.c
+ Opcodes/wave-terrain.c Opcodes/stdopcod.c
+ ''')
+
+pvs_opcodes = Split('''
+ Opcodes/ifd.c Opcodes/partials.c Opcodes/psynth.c Opcodes/pvsbasic.c
+ Opcodes/pvscent.c Opcodes/pvsdemix.c Opcodes/pvs_ops.c Opcodes/pvsband.c
+ Opcodes/pvsbuffer.c
+''')
+
+folded_ops = Split('''Opcodes/modmatrix.c Opcodes/scoreline.c Opcodes/modal4.c
+Opcodes/physutil.c Opcodes/physmod.c Opcodes/mandolin.c Opcodes/singwave.c
+Opcodes/fm4op.c Opcodes/moog1.c Opcodes/shaker.c Opcodes/bowedbar.c
+Opcodes/pitch.c Opcodes/pitch0.c Opcodes/spectra.c Opcodes/ambicode1.c
+Opcodes/sfont.c Opcodes/grain4.c Opcodes/hrtferX.c Opcodes/loscilx.c
+Opcodes/minmax.c Opcodes/pan2.c Opcodes/tabvars.c Opcodes/phisem.c
+Opcodes/hrtfopcodes.c Opcodes/stackops.c Opcodes/vbap.c
+Opcodes/vbap_eight.c Opcodes/vbap_four.c Opcodes/vbap_sixteen.c
+Opcodes/vbap_zak.c Opcodes/vaops.c Opcodes/ugakbari.c Opcodes/harmon.c
+Opcodes/pitchtrack.c Opcodes/partikkel.c Opcodes/shape.c Opcodes/tabsum.c
+Opcodes/crossfm.c Opcodes/pvlock.c Opcodes/fareyseq.c Opcodes/hrtfearly.c
+Opcodes/hrtfreverb.c Opcodes/cpumeter.c Opcodes/mp3in.c
+''')
+
+oldpvoc = Split('''
+ Opcodes/dsputil.c Opcodes/pvadd.c Opcodes/pvinterp.c Opcodes/pvocext.c
+ Opcodes/pvread.c Opcodes/ugens8.c Opcodes/vpvoc.c Opcodes/pvoc.c
+''')
+
+gabnewopc = Split('''
+ Opcodes/gab/tabmorph.c Opcodes/gab/hvs.c
+ Opcodes/gab/sliderTable.c
+ Opcodes/gab/newgabopc.c''')
+
+libCsoundSources += stdopcodes
+libCsoundSources += pvs_opcodes
+libCsoundSources += folded_ops
+libCsoundSources += oldpvoc
+libCsoundSources += gabnewopc
+
if commonEnvironment['buildMultiCore'] != '0':
- libCsoundSources += MultiCoreSources
+ if commonEnvironment['buildNewParser'] != '0':
+ libCsoundSources += MultiCoreSources
-if commonEnvironment['buildNewParser'] != '0' or commonEnvironment['buildMultiCore'] != '0':
+if commonEnvironment['buildNewParser'] != '0':
libCsoundSources += newParserSources
csoundLibraryEnvironment.Append(CCFLAGS='-fPIC')
@@ -1215,8 +1284,6 @@ libs.append(csoundLibrary)
pluginEnvironment = commonEnvironment.Clone()
pluginEnvironment.Append(LIBS = Split('sndfile'))
-if mpafound:
- pluginEnvironment.Append(LIBS = ['mpadec'])
if getPlatform() == 'darwin':
pluginEnvironment.Append(LINKFLAGS = Split('''
@@ -1332,6 +1399,7 @@ else:
'_csnd', csoundInterfacesSources)
try: os.symlink('lib_csnd.dylib', 'libcsnd.dylib')
except: pass
+ csoundInterfacesEnvironment.Command('interfaces install', csnd, "cp lib_csnd.dylib /Library/Frameworks/%s/lib_csnd.dylib" % (OSXFrameworkCurrentVersion))
else:
csnd = csoundInterfacesEnvironment.Library('csnd', csoundInterfacesSources)
elif getPlatform() == 'linux':
@@ -1395,7 +1463,9 @@ else:
else:
print 'CONFIGURATION DECISION: Building Java wrapper to Csound C++ interface library.'
javaWrapperEnvironment = csoundWrapperEnvironment.Clone()
- javaWrapperEnvironment.Prepend(LIBS = ['csnd'])
+ if getPlatform() == 'darwin':
+ javaWrapperEnvironment.Append(LINKFLAGS = ['-L.', '-l_csnd'])
+ else: javaWrapperEnvironment.Prepend(LIBS = ['csnd'])
if getPlatform() == 'darwin':
javaWrapperEnvironment.Append(CPPPATH =
['/System/Library/Frameworks/JavaVM.framework/Headers'])
@@ -1416,15 +1486,20 @@ else:
'interfaces/java_interface.i',
SWIGFLAGS = [swigflags, '-java', '-package', 'csnd'])]
if getPlatform() == 'darwin':
+ if commonEnvironment['dynamicCsoundLibrary'] == '0':
+ if commonEnvironment['useDouble'] == '0': csoundlibLink = '-lcsound'
+ else: csoundlibLink = '-lcsound64'
+ else: csoundliblink = ''
javaWrapperEnvironment.Prepend(LINKFLAGS = ['-bundle'])
javaWrapperEnvironment.Append(LINKFLAGS =
- ['-framework', 'JavaVM', '-Wl'])
+ ['-framework', 'JavaVM', '-Wl', csoundliblink])
javaWrapper = javaWrapperEnvironment.Program(
'lib_jcsound.jnilib', javaWrapperSources)
else:
javaWrapper = javaWrapperEnvironment.SharedLibrary(
'_jcsound', javaWrapperSources)
- Depends(javaWrapper, csoundLibrary)
+ #Depends(javaWrapper, csoundLibrary)
+ Depends(javaWrapper, csnd)
libs.append(javaWrapper)
jcsnd = javaWrapperEnvironment.Java(
target = './interfaces', source = './interfaces',
@@ -1444,18 +1519,20 @@ else:
else:
print 'CONFIGURATION DECISION: Building Python wrapper to Csound C++ interface library.'
pythonWrapperEnvironment = csoundWrapperEnvironment.Clone()
- pythonWrapperEnvironment.Prepend(LIBS = Split('csnd'))
+ if getPlatform() == 'darwin':
+ pythonWrapperEnvironment.Append(LINKFLAGS = ['-L.', '-l_csnd'])
+ else: pythonWrapperEnvironment.Prepend(LIBS = Split('csnd'))
if getPlatform() == 'linux':
os.spawnvp(os.P_WAIT, 'rm', ['rm', '-f', '_csnd.so'])
# os.symlink('lib_csnd.so', '_csnd.so')
pythonWrapperEnvironment.Append(LINKFLAGS = ['-Wl,-rpath-link,.'])
if getPlatform() == 'darwin':
if commonEnvironment['dynamicCsoundLibrary'] == '1':
- ilibName = "lib_csnd.dylib"
- ilibVersion = csoundLibraryVersion
- pythonWrapperEnvironment.Append(SHLINKFLAGS = Split('''-Xlinker -compatibility_version -Xlinker %s''' % ilibVersion))
- pythonWrapperEnvironment.Append(SHLINKFLAGS = Split('''-Xlinker -current_version -Xlinker %s''' % ilibVersion))
- pythonWrapperEnvironment.Append(SHLINKFLAGS = Split('''-install_name /Library/Frameworks/%s/%s''' % (OSXFrameworkCurrentVersion, ilibName)))
+ #ilibName = "lib_csnd.dylib"
+ #ilibVersion = csoundLibraryVersion
+ #pythonWrapperEnvironment.Append(SHLINKFLAGS = Split('''-Xlinker -compatibility_version -Xlinker %s''' % ilibVersion))
+ #pythonWrapperEnvironment.Append(SHLINKFLAGS = Split('''-Xlinker -current_version -Xlinker %s''' % ilibVersion))
+ #pythonWrapperEnvironment.Append(SHLINKFLAGS = Split('''-install_name /Library/Frameworks/%s/%s''' % (OSXFrameworkCurrentVersion, ilibName)))
pythonWrapperEnvironment.Append(CPPPATH = pythonIncludePath)
pythonWrapperEnvironment.Append(LINKFLAGS = ['-framework','python'])
#pythonWrapper = pythonWrapperEnvironment.SharedLibrary('_csnd', pythonWrapperSources)
@@ -1464,9 +1541,8 @@ else:
'interfaces/python_interface.i',
SWIGFLAGS = [swigflags, '-python', '-outdir', '.', pyVersToken])
pythonWrapperEnvironment.Clean('.', 'interfaces/python_interface_wrap.h')
- pythonWrapperEnvironment.Command('interfaces install', csoundPythonInterface, "cp lib_csnd.dylib /Library/Frameworks/%s/lib_csnd.dylib" % (OSXFrameworkCurrentVersion))
- try: os.symlink('lib_csnd.dylib', 'libcsnd.dylib')
- except: print "link exists..."
+ #try: os.symlink('lib_csnd.dylib', 'libcsnd.dylib')
+ #except: print "link exists..."
else:
pythonWrapperEnvironment.Append(LINKFLAGS = pythonLinkFlags)
if getPlatform() != 'darwin':
@@ -1499,48 +1575,147 @@ else:
# Plugin opcodes.
#############################################################################
-makePlugin(pluginEnvironment, 'stdopcod', Split('''
- Opcodes/ambicode.c Opcodes/bbcut.c Opcodes/biquad.c
- Opcodes/butter.c Opcodes/clfilt.c Opcodes/cross2.c
- Opcodes/dam.c Opcodes/dcblockr.c Opcodes/filter.c
- Opcodes/flanger.c Opcodes/follow.c Opcodes/fout.c
- Opcodes/freeverb.c Opcodes/ftconv.c Opcodes/ftgen.c
- Opcodes/gab/gab.c Opcodes/gab/vectorial.c Opcodes/grain.c
- Opcodes/locsig.c Opcodes/lowpassr.c Opcodes/metro.c
- Opcodes/midiops2.c Opcodes/midiops3.c Opcodes/newfils.c
- Opcodes/nlfilt.c Opcodes/oscbnk.c Opcodes/pluck.c
- Opcodes/repluck.c Opcodes/reverbsc.c Opcodes/seqtime.c
- Opcodes/sndloop.c Opcodes/sndwarp.c Opcodes/space.c
- Opcodes/spat3d.c Opcodes/syncgrain.c Opcodes/ugens7.c
- Opcodes/ugens9.c Opcodes/ugensa.c Opcodes/uggab.c
- Opcodes/ugmoss.c Opcodes/ugnorman.c Opcodes/ugsc.c
- Opcodes/wave-terrain.c Opcodes/stdopcod.c
- '''))
+# these opcodes have been folded back into csoundLib
+# makePlugin(pluginEnvironment, 'stdopcd', Split('''
+# Opcodes/ambicode.c Opcodes/bbcut.c Opcodes/biquad.c
+# Opcodes/butter.c Opcodes/clfilt.c Opcodes/cross2.c
+# Opcodes/dam.c Opcodes/dcblockr.c Opcodes/filter.c
+# Opcodes/flanger.c Opcodes/follow.c Opcodes/fout.c
+# Opcodes/freeverb.c Opcodes/ftconv.c Opcodes/ftgen.c
+# Opcodes/gab/gab.c Opcodes/gab/vectorial.c Opcodes/grain.c
+# Opcodes/locsig.c Opcodes/lowpassr.c Opcodes/metro.c
+# Opcodes/midiops2.c Opcodes/midiops3.c Opcodes/newfils.c
+# Opcodes/nlfilt.c Opcodes/oscbnk.c Opcodes/pluck.c
+# Opcodes/repluck.c Opcodes/reverbsc.c Opcodes/seqtime.c
+# Opcodes/sndloop.c Opcodes/sndwarp.c Opcodes/space.c
+# Opcodes/spat3d.c Opcodes/syncgrain.c Opcodes/ugens7.c
+# Opcodes/ugens9.c Opcodes/ugensa.c Opcodes/uggab.c
+# Opcodes/ugmoss.c Opcodes/ugnorman.c Opcodes/ugsc.c
+# Opcodes/wave-terrain.c Opcodes/stdopcod.c
+# '''))
+# makePlugin(pluginEnvironment, 'pvsbuffer', ['Opcodes/pvsbuffer.c'])
+# makePlugin(pluginEnvironment, 'eqfil', ['Opcodes/eqfil.c'])
+# makePlugin(pluginEnvironment, 'vosim', ['Opcodes/Vosim.c'])
+# makePlugin(pluginEnvironment, 'modmatrix', ['Opcodes/modmatrix.c'])
+# makePlugin(pluginEnvironment, 'scoreline', ['Opcodes/scoreline.c'])
+# makePlugin(pluginEnvironment, 'modal4',
+# ['Opcodes/modal4.c', 'Opcodes/physutil.c'])
+# makePlugin(pluginEnvironment, 'physmod', Split('''
+# Opcodes/physmod.c Opcodes/physutil.c Opcodes/mandolin.c Opcodes/singwave.c
+# Opcodes/fm4op.c Opcodes/moog1.c Opcodes/shaker.c Opcodes/bowedbar.c
+#'''))
+# makePlugin(pluginEnvironment, 'babo', ['Opcodes/babo.c'])
+# makePlugin(pluginEnvironment, 'barmodel', ['Opcodes/bilbar.c'])
+# makePlugin(pluginEnvironment, 'compress', ['Opcodes/compress.c'])
+# makePlugin(pluginEnvironment, 'cs_pvs_ops', Split('''
+# Opcodes/ifd.c Opcodes/partials.c Opcodes/psynth.c Opcodes/pvsbasic.c
+# Opcodes/pvscent.c Opcodes/pvsdemix.c Opcodes/pvs_ops.c Opcodes/pvsband.c
+#'''))
+# makePlugin(pluginEnvironment, 'pitch',
+# ['Opcodes/pitch.c', 'Opcodes/pitch0.c', 'Opcodes/spectra.c'])
+# makePlugin(pluginEnvironment, 'ambicode1', ['Opcodes/ambicode1.c'])
+# sfontEnvironment = pluginEnvironment.Clone()
+# if compilerGNU():
+# if getPlatform() != 'darwin':
+# sfontEnvironment.Append(CCFLAGS = ['-fno-strict-aliasing'])
+# if sys.byteorder == 'big':
+# sfontEnvironment.Append(CCFLAGS = ['-DWORDS_BIGENDIAN'])
+# makePlugin(sfontEnvironment, 'sfont', ['Opcodes/sfont.c'])
+# makePlugin(pluginEnvironment, 'grain4', ['Opcodes/grain4.c'])
+# makePlugin(pluginEnvironment, 'hrtferX', ['Opcodes/hrtferX.c'])
+# makePlugin(pluginEnvironment, 'loscilx', ['Opcodes/loscilx.c'])
+# makePlugin(pluginEnvironment, 'minmax', ['Opcodes/minmax.c'])
+# makePlugin(pluginEnvironment, 'cs_pan2', ['Opcodes/pan2.c'])
+# makePlugin(pluginEnvironment, 'tabfns', ['Opcodes/tabvars.c'])
+# makePlugin(pluginEnvironment, 'phisem', ['Opcodes/phisem.c'])
+# makePlugin(pluginEnvironment, 'pvoc', Split('''
+# Opcodes/dsputil.c Opcodes/pvadd.c Opcodes/pvinterp.c Opcodes/pvocext.c
+# Opcodes/pvread.c Opcodes/ugens8.c Opcodes/vpvoc.c Opcodes/pvoc.c
+#'''))
+#hrtfnewEnvironment = pluginEnvironment.Clone()
+#if sys.byteorder == 'big':
+# hrtfnewEnvironment.Append(CCFLAGS = ['-DWORDS_BIGENDIAN'])
+# makePlugin(hrtfnewEnvironment, 'hrtfnew', 'Opcodes/hrtfopcodes.c')
+# makePlugin(pluginEnvironment, 'stackops', ['Opcodes/stackops.c'])
+# makePlugin(pluginEnvironment, 'vbap',
+# ['Opcodes/vbap.c', 'Opcodes/vbap_eight.c', 'Opcodes/vbap_four.c',
+# 'Opcodes/vbap_sixteen.c', 'Opcodes/vbap_zak.c'])
+# makePlugin(pluginEnvironment, 'vaops', ['Opcodes/vaops.c'])
+# makePlugin(pluginEnvironment, 'ugakbari', ['Opcodes/ugakbari.c'])
+# makePlugin(pluginEnvironment, 'harmon', ['Opcodes/harmon.c'])
+# makePlugin(pluginEnvironment, 'ptrack', ['Opcodes/pitchtrack.c'])
+# makePlugin(pluginEnvironment, 'partikkel', ['Opcodes/partikkel.c'])
+# makePlugin(pluginEnvironment, 'shape', ['Opcodes/shape.c'])
+# makePlugin(pluginEnvironment, 'tabsum', ['Opcodes/tabsum.c'])
+# makePlugin(pluginEnvironment, 'crossfm', ['Opcodes/crossfm.c'])
+# makePlugin(pluginEnvironment, 'pvlock', ['Opcodes/pvlock.c'])
+# makePlugin(pluginEnvironment, 'fareyseq', ['Opcodes/fareyseq.c'])
+# makePlugin(pluginEnvironment, 'gabnew', Split('''
+# Opcodes/gab/tabmorph.c Opcodes/gab/hvs.c
+# Opcodes/gab/sliderTable.c
+# Opcodes/gab/newgabopc.c'''))
+
+#============================== ==================================
+
+# system opcodes
+makePlugin(pluginEnvironment, 'cs_date', ['Opcodes/date.c'])
+makePlugin(pluginEnvironment, 'system_call', ['Opcodes/system_call.c'])
+
+# C++ opcodes
+makePlugin(pluginEnvironment, 'ampmidid', ['Opcodes/ampmidid.cpp'])
+makePlugin(pluginEnvironment, 'mutexops', ['Opcodes/mutexops.cpp'])
+makePlugin(pluginEnvironment, 'doppler', ['Opcodes/doppler.cpp'])
+makePlugin(pluginEnvironment, 'mixer', ['Opcodes/mixer.cpp'])
+makePlugin(pluginEnvironment, 'signalflowgraph', ['Opcodes/signalflowgraph.cpp'])
+
+# platform-specific
if (getPlatform() == 'linux' or getPlatform() == 'darwin'):
makePlugin(pluginEnvironment, 'control', ['Opcodes/control.c'])
+# makePlugin(pluginEnvironment, 'cpumeter', ['Opcodes/cpumeter.c'])
if getPlatform() == 'linux':
makePlugin(pluginEnvironment, 'urandom', ['Opcodes/urandom.c'])
-makePlugin(pluginEnvironment, 'modmatrix', ['Opcodes/modmatrix.c'])
-makePlugin(pluginEnvironment, 'eqfil', ['Opcodes/eqfil.c'])
-makePlugin(pluginEnvironment, 'pvsbuffer', ['Opcodes/pvsbuffer.c'])
-makePlugin(pluginEnvironment, 'scoreline', ['Opcodes/scoreline.c'])
-makePlugin(pluginEnvironment, 'ftest', ['Opcodes/ftest.c'])
-makePlugin(pluginEnvironment, 'mixer', ['Opcodes/mixer.cpp'])
-makePlugin(pluginEnvironment, 'signalflowgraph', ['Opcodes/signalflowgraph.cpp'])
-makePlugin(pluginEnvironment, 'modal4',
- ['Opcodes/modal4.c', 'Opcodes/physutil.c'])
-makePlugin(pluginEnvironment, 'physmod', Split('''
- Opcodes/physmod.c Opcodes/physutil.c Opcodes/mandolin.c Opcodes/singwave.c
- Opcodes/fm4op.c Opcodes/moog1.c Opcodes/shaker.c Opcodes/bowedbar.c
-'''))
-makePlugin(pluginEnvironment, 'pitch',
- ['Opcodes/pitch.c', 'Opcodes/pitch0.c', 'Opcodes/spectra.c'])
+
+
+# scanned synthesis
makePlugin(pluginEnvironment, 'scansyn',
['Opcodes/scansyn.c', 'Opcodes/scansynx.c'])
-makePlugin(pluginEnvironment, 'ambicode1', ['Opcodes/ambicode1.c'])
-if mpafound==1:
- makePlugin(pluginEnvironment, 'mp3in', ['Opcodes/mp3in.c'])
+
+# tables
+makePlugin(pluginEnvironment, 'fareygen', ['Opcodes/fareygen.c'])
+##makePlugin(pluginEnvironment, 'ftest', ['Opcodes/ftest.c'])
+
+#############################################################################
+#
+# Plugins with External Dependencies
+#############################################################################
+# UDP opcodes
+if commonEnvironment['useUDP'] == '0':
+ print "CONFIGURATION DECISION: Not building UDP plugins."
+else:
+ print "CONFIGURATION DECISION: Building UDP plugins."
+ udpEnvironment = pluginEnvironment.Clone()
+ udpEnvironment.Append(LIBS = ['pthread'])
+ if getPlatform() == 'win32':
+ udpEnvironment.Append(LIBS = ['ws2_32'])
+ makePlugin(udpEnvironment, 'udprecv', ['Opcodes/sockrecv.c'])
+ makePlugin(udpEnvironment, 'udpsend', ['Opcodes/socksend.c'])
+
+# end udp opcodes
+
+# OSC opcodes
+if not (commonEnvironment['useOSC'] == '1' and oscFound):
+ print "CONFIGURATION DECISION: Not building OSC plugin."
+else:
+ print "CONFIGURATION DECISION: Building OSC plugin."
+ oscEnvironment = pluginEnvironment.Clone()
+ oscEnvironment.Append(LIBS = ['lo', 'pthread'])
+ if getPlatform() == 'win32':
+ oscEnvironment.Append(LIBS = csoundWindowsLibraries)
+ if compilerGNU():
+ oscEnvironment.Append(SHLINKFLAGS = ['-Wl,--enable-stdcall-fixup'])
+ makePlugin(oscEnvironment, 'osc', ['Opcodes/OSC.c'])
+
##commonEnvironment.Append(LINKFLAGS = ['-Wl,-as-needed'])
if wiifound==1:
WiiEnvironment = pluginEnvironment.Clone()
@@ -1552,79 +1727,10 @@ if serialfound==1:
SerEnvironment = pluginEnvironment.Clone()
makePlugin(SerEnvironment, 'serial', ['Opcodes/serial.c'])
-sfontEnvironment = pluginEnvironment.Clone()
-if compilerGNU():
- if getPlatform() != 'darwin':
- sfontEnvironment.Append(CCFLAGS = ['-fno-strict-aliasing'])
-if sys.byteorder == 'big':
- sfontEnvironment.Append(CCFLAGS = ['-DWORDS_BIGENDIAN'])
-makePlugin(sfontEnvironment, 'sfont', ['Opcodes/sfont.c'])
-makePlugin(pluginEnvironment, 'babo', ['Opcodes/babo.c'])
-makePlugin(pluginEnvironment, 'barmodel', ['Opcodes/bilbar.c'])
-makePlugin(pluginEnvironment, 'compress', ['Opcodes/compress.c'])
-makePlugin(pluginEnvironment, 'grain4', ['Opcodes/grain4.c'])
-makePlugin(pluginEnvironment, 'hrtferX', ['Opcodes/hrtferX.c'])
-makePlugin(pluginEnvironment, 'loscilx', ['Opcodes/loscilx.c'])
-makePlugin(pluginEnvironment, 'minmax', ['Opcodes/minmax.c'])
-makePlugin(pluginEnvironment, 'cs_pan2', ['Opcodes/pan2.c'])
-makePlugin(pluginEnvironment, 'tabfns', ['Opcodes/tabvars.c'])
-makePlugin(pluginEnvironment, 'phisem', ['Opcodes/phisem.c'])
-makePlugin(pluginEnvironment, 'pvoc', Split('''
- Opcodes/dsputil.c Opcodes/pvadd.c Opcodes/pvinterp.c Opcodes/pvocext.c
- Opcodes/pvread.c Opcodes/ugens8.c Opcodes/vpvoc.c Opcodes/pvoc.c
-'''))
-makePlugin(pluginEnvironment, 'cs_pvs_ops', Split('''
- Opcodes/ifd.c Opcodes/partials.c Opcodes/psynth.c Opcodes/pvsbasic.c
- Opcodes/pvscent.c Opcodes/pvsdemix.c Opcodes/pvs_ops.c Opcodes/pvsband.c
-'''))
-makePlugin(pluginEnvironment, 'stackops', ['Opcodes/stackops.c'])
-makePlugin(pluginEnvironment, 'vbap',
- ['Opcodes/vbap.c', 'Opcodes/vbap_eight.c', 'Opcodes/vbap_four.c',
- 'Opcodes/vbap_sixteen.c', 'Opcodes/vbap_zak.c'])
-makePlugin(pluginEnvironment, 'vaops', ['Opcodes/vaops.c'])
-makePlugin(pluginEnvironment, 'ugakbari', ['Opcodes/ugakbari.c'])
-makePlugin(pluginEnvironment, 'harmon', ['Opcodes/harmon.c'])
-makePlugin(pluginEnvironment, 'ampmidid', ['Opcodes/ampmidid.cpp'])
-makePlugin(pluginEnvironment, 'cs_date', ['Opcodes/date.c'])
-makePlugin(pluginEnvironment, 'system_call', ['Opcodes/system_call.c'])
-makePlugin(pluginEnvironment, 'ptrack', ['Opcodes/pitchtrack.c'])
-makePlugin(pluginEnvironment, 'mutexops', ['Opcodes/mutexops.cpp'])
-makePlugin(pluginEnvironment, 'partikkel', ['Opcodes/partikkel.c'])
-makePlugin(pluginEnvironment, 'shape', ['Opcodes/shape.c'])
-makePlugin(pluginEnvironment, 'doppler', ['Opcodes/doppler.cpp'])
-makePlugin(pluginEnvironment, 'tabsum', ['Opcodes/tabsum.c'])
-makePlugin(pluginEnvironment, 'crossfm', ['Opcodes/crossfm.c'])
-makePlugin(pluginEnvironment, 'pvlock', ['Opcodes/pvlock.c'])
-makePlugin(pluginEnvironment, 'fareyseq', ['Opcodes/fareyseq.c'])
-makePlugin(pluginEnvironment, 'fareygen', ['Opcodes/fareygen.c'])
#oggEnvironment = pluginEnvironment.Clone()
#makePlugin(oggEnvironment, 'ogg', ['Opcodes/ogg.c'])
#oggEnvironment.Append(LIBS=['vorbisfile'])
-makePlugin(pluginEnvironment, 'vosim', ['Opcodes/Vosim.c'])
-if getPlatform() == 'linux':
- makePlugin(pluginEnvironment, 'cpumeter', ['Opcodes/cpumeter.c'])
-if commonEnvironment['buildImageOpcodes'] == '1':
- if getPlatform() == 'win32':
- if configure.CheckLibWithHeader("fltk_png", "png.h", language="C") and zlibhfound:
- print 'CONFIGURATION DECISION: Building image opcodes'
- pluginEnvironment.Append(LIBS= Split(''' fltk_png fltk_z '''))
- makePlugin(pluginEnvironment, 'image', ['Opcodes/imageOpcodes.c'])
- else:
- if configure.CheckLibWithHeader("png", "png.h", language="C") and zlibhfound:
- print 'CONFIGURATION DECISION: Building image opcodes'
- pluginEnvironment.Append(LIBS= Split(''' png z '''))
- makePlugin(pluginEnvironment, 'image', ['Opcodes/imageOpcodes.c'])
-else:
- print 'CONFIGURATION DECISION: Not building image opcodes'
-makePlugin(pluginEnvironment, 'gabnew', Split('''
- Opcodes/gab/tabmorph.c Opcodes/gab/hvs.c
- Opcodes/gab/sliderTable.c
- Opcodes/gab/newgabopc.c'''))
-hrtfnewEnvironment = pluginEnvironment.Clone()
-if sys.byteorder == 'big':
- hrtfnewEnvironment.Append(CCFLAGS = ['-DWORDS_BIGENDIAN'])
-makePlugin(hrtfnewEnvironment, 'hrtfnew', 'Opcodes/hrtfopcodes.c')
if jackFound and commonEnvironment['useJack'] == '1':
jpluginEnvironment = pluginEnvironment.Clone()
if getPlatform() == 'linux':
@@ -1644,10 +1750,21 @@ if gmmFound and commonEnvironment['useDouble'] != '0':
else:
print 'CONFIGURATION DECISION: Not building linear algebra opcodes.'
-#############################################################################
-#
-# Plugins with External Dependencies
-#############################################################################
+if commonEnvironment['buildImageOpcodes'] == '1':
+ if getPlatform() == 'win32':
+ if configure.CheckHeader("png.h", language="C") and zlibhfound:
+ print 'CONFIGURATION DECISION: Building image opcodes'
+ imEnv = pluginEnvironment.cClone()
+ imEnv.Append(LIBS= Split(''' fltk_png fltk_z '''))
+ makePlugin(imEnv, 'image', ['Opcodes/imageOpcodes.c'])
+ else:
+ if configure.CheckHeader("png.h", language="C") and zlibhfound:
+ print 'CONFIGURATION DECISION: Building image opcodes'
+ imEnv = pluginEnvironment.Clone()
+ imEnv.Append(LIBS= Split(''' png z '''))
+ makePlugin(imEnv, 'image', ['Opcodes/imageOpcodes.c'])
+else:
+ print 'CONFIGURATION DECISION: Not building image opcodes'
# FLTK widgets
@@ -1685,8 +1802,6 @@ else:
vstEnvironment.Append(LIBS = ['dl'])
guiProgramEnvironment.Append(LIBS = ['dl'])
csoundProgramEnvironment.Append(LIBS = ['pthread', 'm'])
- if mpafound :
- csoundProgramEnvironment.Append(LIBS = ['mpadec'])
if wiifound :
WiiEnvironment.Append(LIBS = ['wiiuse', 'bluetooth'])
if p5gfound :
@@ -1746,7 +1861,10 @@ if commonEnvironment['useCoreAudio'] == '1' and getPlatform() == 'darwin':
print "CONFIGURATION DECISION: Building CoreAudio plugin."
coreaudioEnvironment = pluginEnvironment.Clone()
coreaudioEnvironment.Append(CCFLAGS = ['-I/System/Library/Frameworks/CoreAudio.framework/Headers'])
- makePlugin(coreaudioEnvironment, 'rtcoreaudio', ['InOut/rtcoreaudio.c'])
+# makePlugin(coreaudioEnvironment, 'rtcoreaudio', ['InOut/rtcoreaudio.c'])
+ coreaudioEnvironment.Append(CCFLAGS = ['-I/System/Library/Frameworks/AudioUnit.framework/Headers'])
+ coreaudioEnvironment.Append(LINKFLAGS = ['-framework', 'AudioUnit'])
+ makePlugin(coreaudioEnvironment, 'rtauhal', ['InOut/rtauhal.c'])
else:
print "CONFIGURATION DECISION: Not building CoreAudio plugin."
@@ -1809,7 +1927,8 @@ if commonEnvironment['usePortMIDI'] == '1' and portmidiFound:
portMidiEnvironment = pluginEnvironment.Clone()
portMidiEnvironment.Append(LIBS = ['portmidi'])
if getPlatform() != 'darwin' and getPlatform() != 'win32':
- portMidiEnvironment.Append(LIBS = ['porttime'])
+ if configure.CheckLibWithHeader("porttimer","porttimmer.h",language="C"):
+ portMidiEnvironment.Append(LIBS = ['porttime'])
if getPlatform() == 'win32':
portMidiEnvironment.Append(LIBS = csoundWindowsLibraries)
if getPlatform() == 'linux' and alsaFound:
@@ -1818,32 +1937,12 @@ if commonEnvironment['usePortMIDI'] == '1' and portmidiFound:
else:
print 'CONFIGURATION DECISION: Not building with PortMIDI.'
-# OSC opcodes
-
-if not (commonEnvironment['useOSC'] == '1' and oscFound):
- print "CONFIGURATION DECISION: Not building OSC plugin."
-else:
- print "CONFIGURATION DECISION: Building OSC plugin."
- oscEnvironment = pluginEnvironment.Clone()
- oscEnvironment.Append(LIBS = ['lo', 'pthread'])
- if getPlatform() == 'win32':
- oscEnvironment.Append(LIBS = csoundWindowsLibraries)
- if compilerGNU():
- oscEnvironment.Append(SHLINKFLAGS = ['-Wl,--enable-stdcall-fixup'])
- makePlugin(oscEnvironment, 'osc', ['Opcodes/OSC.c'])
+if getPlatform() == 'darwin':
+ coreMidiEnvironment = pluginEnvironment.Clone()
+ makePlugin(coreMidiEnvironment, 'cmidi', ['InOut/cmidi.c'])
-# UDP opcodes
-if commonEnvironment['useUDP'] == '0':
- print "CONFIGURATION DECISION: Not building UDP plugins."
-else:
- print "CONFIGURATION DECISION: Building UDP plugins."
- udpEnvironment = pluginEnvironment.Clone()
- udpEnvironment.Append(LIBS = ['pthread'])
- makePlugin(udpEnvironment, 'udprecv', ['Opcodes/sockrecv.c'])
- makePlugin(udpEnvironment, 'udpsend', ['Opcodes/socksend.c'])
-# end udp opcodes
# FLUIDSYNTH OPCODES
@@ -1914,62 +2013,62 @@ else:
print "CONFIGURATION DECISION: Not building DSSI plugin host opcodes."
# Loris opcodes
-if not (commonEnvironment['buildLoris'] == '1' and configure.CheckHeader("Opcodes/Loris/src/loris.h") and configure.CheckHeader("fftw3.h")):
- print "CONFIGURATION DECISION: Not building Loris Python extension and Csound opcodes."
-else:
- print "CONFIGURATION DECISION: Building Loris Python extension and Csound opcodes."
+#if not (commonEnvironment['buildLoris'] == '1' and configure.CheckHeader("Opcodes/Loris/src/loris.h") and configure.CheckHeader("fftw3.h")):
+# print "CONFIGURATION DECISION: Not building Loris Python extension and Csound opcodes."
+#else:
+# print "CONFIGURATION DECISION: Building Loris Python extension and Csound opcodes."
# For Loris, we build only the loris Python extension module and
# the Csound opcodes (modified for Csound 5).
# It is assumed that you have copied all contents of the Loris
# distribution into the csound5/Opcodes/Loris directory, e.g.
# csound5/Opcodes/Loris/src/*, etc.
- lorisEnvironment = pluginEnvironment.Clone()
- lorisEnvironment.Append(CCFLAGS = '-DHAVE_FFTW3_H')
- if commonEnvironment['buildRelease'] == '0':
- lorisEnvironment.Append(CCFLAGS = '-DDEBUG_LORISGENS')
- if getPlatform() == 'win32':
- lorisEnvironment.Append(CCFLAGS = '-D_MSC_VER')
- if compilerGNU():
- if getPlatform() != 'win32':
- lorisEnvironment.Prepend(LIBS = ['stdc++'])
- lorisEnvironment.Append(CCFLAGS = Split('''
- -Wno-comment -Wno-unknown-pragmas -Wno-sign-compare
- '''))
- lorisEnvironment.Append(CPPPATH = Split('''
- Opcodes/Loris Opcodes/Loris/src ./
- '''))
- lorisSources = glob.glob('Opcodes/Loris/src/*.[Cc]')
- if 'Opcodes/Loris/src/lorisgens.C' in lorisSources:
- lorisSources.remove('Opcodes/Loris/src/lorisgens.C')
- lorisLibrarySources = []
- for i in lorisSources:
- lorisLibrarySources += lorisEnvironment.SharedObject(i)
- lorisLibrary = lorisEnvironment.StaticLibrary(
- 'lorisbase', lorisLibrarySources)
- lorisEnvironment.Prepend(LIBS = ['lorisbase', 'fftw3'])
+# lorisEnvironment = pluginEnvironment.Clone()
+# lorisEnvironment.Append(CCFLAGS = '-DHAVE_FFTW3_H')
+# if commonEnvironment['buildRelease'] == '0':
+# lorisEnvironment.Append(CCFLAGS = '-DDEBUG_LORISGENS')
+# if getPlatform() == 'win32':
+# lorisEnvironment.Append(CCFLAGS = '-D_MSC_VER')
+# if compilerGNU():
+# if getPlatform() != 'win32':
+# lorisEnvironment.Prepend(LIBS = ['stdc++'])
+# lorisEnvironment.Append(CCFLAGS = Split('''
+# -Wno-comment -Wno-unknown-pragmas -Wno-sign-compare
+# '''))
+# lorisEnvironment.Append(CPPPATH = Split('''
+# Opcodes/Loris Opcodes/Loris/src ./
+# '''))
+# lorisSources = glob.glob('Opcodes/Loris/src/*.[Cc]')
+# if 'Opcodes/Loris/src/lorisgens.C' in lorisSources:
+# lorisSources.remove('Opcodes/Loris/src/lorisgens.C')
+# lorisLibrarySources = []
+# for i in lorisSources:
+# lorisLibrarySources += lorisEnvironment.SharedObject(i)
+# lorisLibrary = lorisEnvironment.StaticLibrary(
+# 'lorisbase', lorisLibrarySources)
+# lorisEnvironment.Prepend(LIBS = ['lorisbase', 'fftw3'])
# The following file has been patched for Csound 5
# and you should update it from Csound 5 CVS.
- lorisOpcodes = makePlugin(lorisEnvironment, 'loris',
- ['Opcodes/Loris/lorisgens5.C'])
- Depends(lorisOpcodes, lorisLibrary)
- lorisPythonEnvironment = lorisEnvironment.Clone()
- fixCFlagsForSwig(lorisPythonEnvironment)
- lorisPythonEnvironment.Append(CPPPATH = pythonIncludePath)
- lorisPythonEnvironment.Append(LINKFLAGS = pythonLinkFlags)
- lorisPythonEnvironment.Append(LIBPATH = pythonLibraryPath)
- if getPlatform() != 'darwin':
- lorisPythonEnvironment.Prepend(LIBS = pythonLibs)
- lorisPythonEnvironment.Append(SWIGPATH = ['./'])
- lorisPythonEnvironment.Prepend(SWIGFLAGS = Split('''
- -module loris -c++ -includeall -verbose -outdir . -python
- -DHAVE_FFTW3_H -I./Opcodes/Loris/src -I.
- '''))
- lorisPythonWrapper = lorisPythonEnvironment.SharedObject(
- 'Opcodes/Loris/scripting/loris.i')
- lorisPythonEnvironment['SHLIBPREFIX'] = ''
- lorisPythonModule = makePythonModule(lorisPythonEnvironment,
- 'loris', lorisPythonWrapper)
- Depends(lorisPythonModule, lorisLibrary)
+# lorisOpcodes = makePlugin(lorisEnvironment, 'loris',
+# ['Opcodes/Loris/lorisgens5.C'])
+# Depends(lorisOpcodes, lorisLibrary)
+# lorisPythonEnvironment = lorisEnvironment.Clone()
+# fixCFlagsForSwig(lorisPythonEnvironment)
+# lorisPythonEnvironment.Append(CPPPATH = pythonIncludePath)
+# lorisPythonEnvironment.Append(LINKFLAGS = pythonLinkFlags)
+# lorisPythonEnvironment.Append(LIBPATH = pythonLibraryPath)
+# if getPlatform() != 'darwin':
+# lorisPythonEnvironment.Prepend(LIBS = pythonLibs)
+# lorisPythonEnvironment.Append(SWIGPATH = ['./'])
+# lorisPythonEnvironment.Prepend(SWIGFLAGS = Split('''
+# -module loris -c++ -includeall -verbose -outdir . -python
+# -DHAVE_FFTW3_H -I./Opcodes/Loris/src -I.
+# '''))
+# lorisPythonWrapper = lorisPythonEnvironment.SharedObject(
+# 'Opcodes/Loris/scripting/loris.i')
+# lorisPythonEnvironment['SHLIBPREFIX'] = ''
+# lorisPythonModule = makePythonModule(lorisPythonEnvironment,
+# 'loris', lorisPythonWrapper)
+# Depends(lorisPythonModule, lorisLibrary)
# STK opcodes
@@ -2165,7 +2264,7 @@ if getPlatform() == 'linux':
csoundProgram = csoundProgramEnvironment.Program('csound', csoundProgramSources)
executables.append(csoundProgram)
Depends(csoundProgram, csoundLibrary)
-
+os
def fluidTarget(env, dirName, baseName, objFiles):
flFile = dirName + '/' + baseName + '.fl'
cppFile = dirName + '/' + baseName + '.cpp'
@@ -2256,35 +2355,35 @@ else:
# Build Cseditor
-if not ((commonEnvironment['buildCSEditor'] == '1') and fltkFound):
- print 'CONFIGURATION DECISION: Not building Csound Text Editor.'
-else:
- csEditorEnvironment = commonEnvironment.Clone()
- if getPlatform() == 'linux':
- csEditorEnvironment.ParseConfig('fltk-config --use-images --cflags --cxxflags --ldflags')
- csEditorEnvironment.Append(LIBS = ['stdc++', 'pthread', 'm'])
- csEditor = csEditorEnvironment.Program( 'cseditor', 'frontends/cseditor/cseditor.cxx')
- executables.append(csEditor)
- elif getPlatform() == 'win32':
- if compilerGNU():
- #csEditorEnvironment.Append(LIBS = ['stdc++', 'supc++'])
- csEditorEnvironment.Prepend(LINKFLAGS = Split('''-mwindows -Wl,--enable-runtime-pseudo-reloc'''))
- csEditorEnvironment.Append(LIBS = Split('fltk_images fltk_png fltk_z fltk_jpeg fltk'))
- else:
- csEditorEnvironment.Append(LIBS = Split('fltkimages fltkpng fltkz fltkjpeg fltk'))
- csEditorEnvironment.Append(LIBS = csoundWindowsLibraries)
- csEditor = csEditorEnvironment.Program('cseditor', ['frontends/cseditor/cseditor.cxx'])
- executables.append(csEditor)
- elif getPlatform() == 'darwin':
- csEditorEnvironment.Prepend(CXXFLAGS = "-fno-rtti")
- csEditorEnvironment.Append(LIBS = Split('''
- fltk stdc++ pthread m
- '''))
- csEditorEnvironment.Append(LINKFLAGS = Split('''
- -framework Carbon -framework ApplicationServices
- '''))
- csEditor = csEditorEnvironment.Command('cseditor', 'frontends/cseditor/cseditor.cxx', "fltk-config --compile frontends/cseditor/cseditor.cxx")
- executables.append(csEditor)
+#if not ((commonEnvironment['buildCSEditor'] == '1') and fltkFound):
+# print 'CONFIGURATION DECISION: Not building Csound Text Editor.'
+#else:
+# csEditorEnvironment = commonEnvironment.Clone()
+# if getPlatform() == 'linux':
+# csEditorEnvironment.ParseConfig('fltk-config --use-images --cflags --cxxflags --ldflags')
+# csEditorEnvironment.Append(LIBS = ['stdc++', 'pthread', 'm'])
+# csEditor = csEditorEnvironment.Program( 'cseditor', 'frontends/cseditor/cseditor.cxx')
+# executables.append(csEditor)
+# elif getPlatform() == 'win32':
+# if compilerGNU():
+# #csEditorEnvironment.Append(LIBS = ['stdc++', 'supc++'])
+# csEditorEnvironment.Prepend(LINKFLAGS = Split('''-mwindows -Wl,--enable-runtime-pseudo-reloc'''))
+# csEditorEnvironment.Append(LIBS = Split('fltk_images fltk_png fltk_z fltk_jpeg fltk'))
+# else:
+# csEditorEnvironment.Append(LIBS = Split('fltkimages fltkpng fltkz fltkjpeg fltk'))
+# csEditorEnvironment.Append(LIBS = csoundWindowsLibraries)
+# csEditor = csEditorEnvironment.Program('cseditor', ['frontends/cseditor/cseditor.cxx'])
+# executables.append(csEditor)
+# elif getPlatform() == 'darwin':
+# csEditorEnvironment.Prepend(CXXFLAGS = "-fno-rtti")
+# csEditorEnvironment.Append(LIBS = Split('''
+# fltk stdc++ pthread m
+# '''))
+# csEditorEnvironment.Append(LINKFLAGS = Split('''
+# -framework Carbon -framework ApplicationServices
+# '''))
+# csEditor = csEditorEnvironment.Command('cseditor', 'frontends/cseditor/cseditor.cxx', "fltk-config --compile frontends/cseditor/cseditor.cxx")
+# executables.append(csEditor)
# Build CsoundAC
@@ -2300,6 +2399,7 @@ else:
acEnvironment.Append(CPPPATH = pythonIncludePath)
acEnvironment.Append(LINKFLAGS = pythonLinkFlags)
acEnvironment.Append(LIBPATH = pythonLibraryPath)
+ acEnvironment.Append(LINKFLAGS = libCsoundLinkFlags)
if getPlatform() != 'darwin':
acEnvironment.Prepend(LIBS = pythonLibs)
if musicXmlFound:
@@ -2309,12 +2409,16 @@ else:
else:
acEnvironment.Prepend(LIBS = 'csnd')
else:
+ if getPlatform() != 'darwin':
acEnvironment.Prepend(LIBS = '_csnd')
- acEnvironment.Append(LINKFLAGS = libCsoundLinkFlags)
- if not getPlatform() == 'darwin' or commonEnvironment['dynamicCsoundLibrary']== '0':
+ else:
+ acEnvironment.Append(LINKFLAGS = ['-L.', '-l_csnd'])
+ if not getPlatform() == 'darwin' or commonEnvironment['dynamicCsoundLibrary'] == '0':
acEnvironment.Prepend(LIBS = libCsoundLibs)
else:
- acEnvironment.Prepend(LINKFLAGS = ['-F.', '-framework', 'CsoundLib'])
+ if commonEnvironment['useDouble'] == 1:
+ acEnvironment.Prepend(LINKFLAGS = ['-F.', '-framework', 'CsoundLib64'])
+ else: acEnvironment.Prepend(LINKFLAGS = ['-F.', '-framework', 'CsoundLib64'])
acEnvironment.Append(SWIGFLAGS = Split('-c++ -includeall -verbose -outdir .'))
# csoundAC uses fltk_images, but -Wl,-as-needed willl wrongly discard it
flag = '-Wl,-as-needed'
@@ -2390,7 +2494,9 @@ else:
libs.append(csoundac)
Depends(csoundac, csnd)
pythonWrapperEnvironment = csoundWrapperEnvironment.Clone()
- pythonWrapperEnvironment.Prepend(LIBS = Split('csnd'))
+ if getPlatform() == 'darwin':
+ pythonWrapperEnvironment.Append(LINKFLAGS = Split('-L. -l_csnd'))
+ else: pythonWrapperEnvironment.Prepend(LIBS = Split('csnd'))
pythonCsoundACWrapperEnvironment = pythonWrapperEnvironment.Clone()
if getPlatform() == 'darwin':
pythonCsoundACWrapperEnvironment.Prepend(LIBS = ['CsoundAC'])
@@ -2416,7 +2522,7 @@ else:
Depends(csoundAcPythonModule, pythonWrapper)
Depends(csoundAcPythonModule, csoundac)
Depends(csoundAcPythonModule, csnd)
- if luaFound:
+ if luaFound and commonEnvironment['buildLuaWrapper'] != '0':
luaCsoundACWrapperEnvironment = acWrapperEnvironment.Clone()
if getPlatform() == 'win32':
luaCsoundACWrapperEnvironment.Prepend(LIBS = Split('luaCsnd lua51 CsoundAC csnd fltk_images'))
@@ -2540,8 +2646,6 @@ if commonEnvironment['buildTclcsound'] == '1' and tclhfound:
csTclEnvironment = commonEnvironment.Clone()
csTclEnvironment.Append(LINKFLAGS = libCsoundLinkFlags)
csTclEnvironment.Append(LIBS = libCsoundLibs)
- if mpafound :
- csTclEnvironment.Append(LIBS = ['mpadec'])
if getPlatform() == 'darwin':
csTclEnvironment.Append(CCFLAGS = Split('''
-I/Library/Frameworks/Tcl.framework/Headers
@@ -2613,8 +2717,6 @@ if commonEnvironment['buildWinsound'] == '1' and fltkFound:
csWinEnvironment = commonEnvironment.Clone()
csWinEnvironment.Append(LINKFLAGS = libCsoundLinkFlags)
csWinEnvironment.Append(LIBS = libCsoundLibs)
- if mpafound :
- csWinEnvironment.Append(LIBS = ['mpadec'])
# not used
# if (commonEnvironment['noFLTKThreads'] == '1'):
# csWinEnvironment.Append(CCFLAGS = ['-DNO_FLTK_THREADS'])
@@ -2658,16 +2760,16 @@ if commonEnvironment['buildWinsound'] == '1' and fltkFound:
else:
print "CONFIGURATION DECISION: Not building Winsound"
-if (getPlatform() == 'darwin' and commonEnvironment['buildOSXGUI'] == '1'):
- print "CONFIGURATION DECISION: building OSX GUI frontend"
- csOSXGUIEnvironment = commonEnvironment.Clone()
- OSXGUI = csOSXGUIEnvironment.Command(
- '''frontends/OSX/build/Csound 5.app/Contents/MacOS/Csound 5''',
- 'frontends/OSX/main.c',
- "cd frontends/OSX; xcodebuild -buildstyle Deployment")
- Depends(OSXGUI, csoundLibrary)
-else:
- print "CONFIGURATION DECISION: Not building OSX GUI frontend"
+#if (getPlatform() == 'darwin' and commonEnvironment['buildOSXGUI'] == '1'):
+# print "CONFIGURATION DECISION: building OSX GUI frontend"
+# csOSXGUIEnvironment = commonEnvironment.Clone()
+# OSXGUI = csOSXGUIEnvironment.Command(
+# '''frontends/OSX/build/Csound 5.app/Contents/MacOS/Csound 5''',
+# 'frontends/OSX/main.c',
+# "cd frontends/OSX; xcodebuild -buildstyle Deployment")
+# Depends(OSXGUI, csoundLibrary)
+#else:
+# print "CONFIGURATION DECISION: Not building OSX GUI frontend"
# build csLADSPA
print "CONFIGURATION DEFAULT: Building csLadspa."
diff --git a/Top/csmodule.c b/Top/csmodule.c
index 0f0fc70..7ff29fe 100644
--- a/Top/csmodule.c
+++ b/Top/csmodule.c
@@ -79,12 +79,15 @@
#include "csmodule.h"
#if defined(__MACH__)
+#include <TargetConditionals.h>
+#if (TARGET_OS_IPHONE == 0) && (TARGET_IPHONE_SIMULATOR == 0)
#if defined(MAC_OS_X_VERSION_10_6) && (MAC_OS_X_VERSION_MIN_REQUIRED>=MAC_OS_X_VERSION_10_6)
#define NEW_MACH_CODE
#else
#define OLD_MACH_CODE
#endif
#endif
+#endif
#if defined(LINUX) || defined(NEW_MACH_CODE)
#include <dlfcn.h>
@@ -147,6 +150,10 @@ static const char *plugindir64_envvar = "OPCODEDIR64";
# endif
#endif
+#if (TARGET_OS_IPHONE != 0) && (TARGET_IPHONE_SIMULATOR != 0)
+# define ENABLE_OPCODEDIR_WARNINGS 0
+#endif
+
typedef struct opcodeLibFunc_s {
long (*opcode_init)(CSOUND *, OENTRY **); /* list of opcode entries */
NGFENS *(*fgen_init)(CSOUND *); /* list of named GEN routines */
@@ -197,7 +204,8 @@ static int check_plugin_compatibility(CSOUND *csound, const char *fname, int n)
minorVersion = (n & 0xFF00) >> 8;
majorVersion = (n & (~0xFFFF)) >> 16;
if (majorVersion != (int) CS_APIVERSION ||
- minorVersion > (int) CS_APISUBVER) {
+ (minorVersion > (int) CS_APISUBVER) ||
+ (minorVersion <= 5)) { /* NOTE **** REFACTOR *** */
csound->Warning(csound, Str("not loading '%s' (incompatible "
"with this version of Csound (%d.%d/%d.%d)"),
fname, majorVersion,minorVersion,
@@ -344,6 +352,7 @@ static CS_NOINLINE int csoundLoadExternal(CSOUND *csound,
static int csoundCheckOpcodeDeny(CSOUND *csound, const char *fname)
{
+ (void *)csound;
/* Check to see if the fname is on the do-not-load list */
char buff[256];
char *p, *deny;
@@ -845,6 +854,7 @@ static CS_NOINLINE int csoundInitModule(CSOUND *csound, csoundModule_t *m)
* Return value is CSOUND_SUCCESS if there was no error, and CSOUND_ERROR if
* some modules could not be initialised.
*/
+
int csoundInitModules(CSOUND *csound)
{
csoundModule_t *m;
@@ -891,6 +901,7 @@ int csoundLoadAndInitModule(CSOUND *csound, const char *fname)
* Return value is CSOUND_SUCCESS if there was no error, and
* CSOUND_ERROR if some modules could not be de-initialised.
*/
+extern int sfont_ModuleDestroy(CSOUND *csound);
int csoundDestroyModules(CSOUND *csound)
{
csoundModule_t *m;
@@ -898,7 +909,7 @@ int csoundDestroyModules(CSOUND *csound)
retval = CSOUND_SUCCESS;
while (csound->csmodule_db != NULL) {
-
+
m = (csoundModule_t*) csound->csmodule_db;
/* call destructor functions */
if (m->PreInitFunc != NULL && m->fn.p.DestFunc != NULL) {
@@ -907,15 +918,16 @@ int csoundDestroyModules(CSOUND *csound)
print_module_error(csound, Str("Error de-initialising module '%s'"),
&(m->name[0]), m, i);
retval = CSOUND_ERROR;
- }
+ }
}
/* unload library */
- csoundCloseLibrary(m->h);
+ csoundCloseLibrary(m->h);
csound->csmodule_db = (void*) m->nxt;
/* free memory used by database */
free((void*) m);
-
+
}
+ sfont_ModuleDestroy(csound);
/* return with error code */
return retval;
}
@@ -1265,3 +1277,121 @@ void print_opcodedir_warning(CSOUND *p)
#endif
}
+typedef long (*INITFN)(CSOUND *, void *);
+
+extern long babo_localops_init(CSOUND *, void *);
+extern long bilbar_localops_init(CSOUND *, void *);
+extern long compress_localops_init(CSOUND *, void *);
+extern long pvsbuffer_localops_init(CSOUND *, void *);
+extern long vosim_localops_init(CSOUND *, void *);
+extern long eqfil_localops_init(CSOUND *, void *);
+extern long modal4_localops_init(CSOUND *, void *);
+extern long scoreline_localops_init(CSOUND *, void *);
+extern long physmod_localops_init(CSOUND *, void *);
+extern long modmatrix_localops_init(CSOUND *, void *);
+extern long spectra_localops_init(CSOUND *, void *);
+extern long ambicode1_localops_init(CSOUND *, void *);
+extern long grain4_localops_init(CSOUND *, void *);
+extern long hrtferX_localops_init(CSOUND *, void *);
+extern long loscilx_localops_init(CSOUND *, void *);
+extern long pan2_localops_init(CSOUND *, void *);
+extern long tabvars_localops_init(CSOUND *, void *);
+extern long phisem_localops_init(CSOUND *, void *);
+extern long pvoc_localops_init(CSOUND *, void *);
+extern long hrtfopcodes_localops_init(CSOUND *, void *);
+extern long hrtfreverb_localops_init(CSOUND *, void *);
+extern long hrtfearly_localops_init(CSOUND *, void *);
+extern long minmax_localops_init(CSOUND *, void *);
+
+extern long stackops_localops_init(CSOUND *, void *);
+extern long vbap_localops_init(CSOUND *, void *);
+extern long vaops_localops_init(CSOUND *, void*);
+extern long ugakbari_localops_init(CSOUND *, void *);
+extern long harmon_localops_init(CSOUND *, void *);
+extern long pitchtrack_localops_init(CSOUND *, void *);
+
+extern long partikkel_localops_init(CSOUND *, void *);
+extern long shape_localops_init(CSOUND *, void *);
+extern long tabsum_localops_init(CSOUND *, void *);
+extern long crossfm_localops_init(CSOUND *, void *);
+extern long pvlock_localops_init(CSOUND *, void *);
+extern long fareyseq_localops_init(CSOUND *, void *);
+extern long cpumeter_localops_init(CSOUND *, void *);
+extern long mp3in_localops_init(CSOUND *, void *);
+
+extern int stdopc_ModuleInit(CSOUND *csound);
+extern int pvsopc_ModuleInit(CSOUND *csound);
+extern int sfont_ModuleInit(CSOUND *csound);
+extern int sfont_ModuleCreate(CSOUND *csound);
+extern int newgabopc_ModuleInit(CSOUND *csound);
+
+
+const INITFN staticmodules[] = { hrtfopcodes_localops_init, babo_localops_init,
+ bilbar_localops_init, vosim_localops_init,
+ compress_localops_init, pvsbuffer_localops_init,
+ eqfil_localops_init, modal4_localops_init,
+ scoreline_localops_init, physmod_localops_init,
+ modmatrix_localops_init, spectra_localops_init,
+ ambicode1_localops_init, grain4_localops_init,
+ hrtferX_localops_init, loscilx_localops_init,
+ pan2_localops_init, tabvars_localops_init,
+ phisem_localops_init, pvoc_localops_init,
+ stackops_localops_init, vbap_localops_init,
+ ugakbari_localops_init, harmon_localops_init,
+ pitchtrack_localops_init, partikkel_localops_init,
+ shape_localops_init, tabsum_localops_init,
+ crossfm_localops_init, pvlock_localops_init,
+ fareyseq_localops_init, hrtfearly_localops_init,
+ hrtfreverb_localops_init, minmax_localops_init,
+ vaops_localops_init,
+#ifndef WIN32
+ cpumeter_localops_init,
+#endif
+ mp3in_localops_init, NULL };
+
+typedef NGFENS* (*FGINITFN)(CSOUND *);
+
+NGFENS *ftest_fgens_init(CSOUND *);
+
+const FGINITFN fgentab[] = { ftest_fgens_init, NULL };
+
+CS_NOINLINE int csoundInitStaticModules(CSOUND *csound)
+{
+ int i;
+ OENTRY *opcodlst_n;
+ long length;
+
+ for (i=0; staticmodules[i]!=NULL; i++) {
+ length = (staticmodules[i])(csound, &opcodlst_n);
+
+ if (UNLIKELY(length <= 0L)) return CSOUND_ERROR;
+ length /= (long) sizeof(OENTRY);
+ if (length) {
+ if (UNLIKELY(csound->AppendOpcodes(csound, opcodlst_n,
+ (int) length) != 0))
+ return CSOUND_ERROR;
+ }
+ }
+ /* stdopc module */
+ if (stdopc_ModuleInit(csound)) return CSOUND_ERROR;
+
+ /* pvs module */
+ if (pvsopc_ModuleInit(csound)) return CSOUND_ERROR;
+
+ /* sfont module */
+ sfont_ModuleCreate(csound);
+ if (sfont_ModuleInit(csound)) return CSOUND_ERROR;
+
+ /* newgabopc */
+ if (newgabopc_ModuleInit(csound)) return CSOUND_ERROR;
+
+ /* modules were initialised successfully */
+ /* Now fgens */
+ for (i = 0; fgentab[i]!=NULL; i++) {
+ int j;
+ NGFENS *names = (fgentab[i])(csound);
+ for (j = 0; names[j].name != NULL; j++)
+ allocgen(csound, names[j].name, names[j].fn);
+ }
+ return CSOUND_SUCCESS;
+}
diff --git a/Top/csound.c b/Top/csound.c
index 2c16c4f..dd96579 100644
--- a/Top/csound.c
+++ b/Top/csound.c
@@ -59,8 +59,10 @@ extern "C" {
#include "namedins.h"
#include "pvfileio.h"
#include "fftlib.h"
-#ifdef PARCS
+#ifdef ENABLE_NEW_PARSER
#include "csound_orc.h"
+#endif
+#ifdef PARCS
#include "cs_par_base.h"
#include "cs_par_orc_semantics.h"
#include "cs_par_dispatch.h"
@@ -76,9 +78,11 @@ extern "C" {
#include <omp.h>
#endif /* USE_OPENMP */
+ MYFLT csoundPow2(CSOUND *csound, MYFLT a);
extern void MakeAscii(CSOUND *, WINDAT *, const char *);
extern void DrawAscii(CSOUND *, WINDAT *);
extern void KillAscii(CSOUND *, WINDAT *);
+ extern int csoundInitStaticModules(CSOUND *);
static void SetInternalYieldCallback(CSOUND *, int (*yieldCallback)(CSOUND *));
static int playopen_dummy(CSOUND *, const csRtAudioParams *parm);
@@ -337,6 +341,7 @@ extern "C" {
csoundChanOAGetSample,
csoundStop,
csoundGetNamedGens,
+ csoundPow2,
/* NULL, */
{
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
@@ -346,7 +351,7 @@ extern "C" {
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL
+ NULL, NULL, NULL, NULL, NULL
},
0, /* dither_output */
NULL, /* flgraphsGlobals */
@@ -407,6 +412,7 @@ extern "C" {
NULL, /* rtRecord_userdata */
NULL, /* rtPlay_userdata */
NULL, NULL, /* orchname, scorename */
+ NULL, NULL, /* orchstr, *scorestr */
2345678, /* holdrand */
256, /* strVarMaxLen */
MAXINSNO, /* maxinsno */
@@ -470,7 +476,8 @@ extern "C" {
NULL, /* Linepipe */
0, /* Linefd */
NULL, /* csoundCallbacks_ */
- NULL, /* scfp */
+ (FILE*)NULL, /* scfp */
+ (CORFIL*)NULL, /* scstr */
NULL, /* oscfp */
{ FL(0.0) }, /* maxamp */
{ FL(0.0) }, /* smaxamp */
@@ -634,7 +641,7 @@ extern "C" {
0, 0, 0, /* rewrt_hdr, ... */
0, /* expr_opt */
0.0f, 0.0f, /* sr_override ... */
- (char*) NULL, (char*) NULL, (char*) NULL,
+ (char*) NULL, (char*) NULL, NULL,
(char*) NULL, (char*) NULL, (char*) NULL,
(char*) NULL, (char*) NULL,
0, /* midiKey */
@@ -681,6 +688,17 @@ extern "C" {
NULL, /* multiThreadedDag */
NULL, /* barrier1 */
NULL, /* barrier2 */
+ NULL, /* global_var_lock_root */
+ NULL, /* global_var_lock_cache */
+ 0, /* global_var_lock_count */
+ 0, /* opcode_weight_cache_ctr */
+ {NULL,NULL}, /* opcode_weight_cache[OPCODE_WEIGHT_CACHE_SIZE] */
+ 0, /* opcode_weight_have_cache */
+ {NULL,NULL}, /* ache[DAG_2_CACHE_SIZE] */
+ /* statics from cs_par_orc_semantic_analysis */
+ NULL, /* instCurr */
+ NULL, /* instRoot */
+ 0, /* inInstr */
#endif /* PARCS */
0, /* tempStatus */
0, /* orcLineOffset */
@@ -692,14 +710,17 @@ extern "C" {
0, /* Count of extra strings */
{NULL, NULL, NULL}, /* For extra strings in scores */
{0, 0, 0}, /* For extra strings in scores */
- 300 /* Count for generated labels */
+ 300, /* Count for generated labels */
+ NULL,
+ NULL
};
/* from threads.c */
void csoundLock(void);
void csoundUnLock(void);
/* aops.c */
- void aops_init_tables(void);
+ /*void aops_init_tables(void);*/
+ void csound_aops_init_tables(CSOUND *cs);
typedef struct csInstance_s {
CSOUND *csound;
@@ -737,7 +758,7 @@ extern "C" {
}
}
-#if !defined(LINUX) && !defined(SGI) && !defined(__BEOS__) && !defined(__MACH__)
+#if defined(ANDROID) || (!defined(LINUX) && !defined(SGI) && !defined(__BEOS__) && !defined(__MACH__))
static char *signal_to_string(int sig)
{
switch(sig) {
@@ -948,7 +969,7 @@ extern "C" {
#if !defined(WIN32)
atexit(destroy_all_instances);
#endif
- aops_init_tables();
+ /*aops_init_tables();*/
csoundLock();
init_done = 1;
csoundUnLock();
@@ -979,7 +1000,7 @@ extern "C" {
instance_list = p;
csoundUnLock();
csoundReset(csound);
-
+ //csound_aops_init_tables(csound);
return csound;
}
@@ -1123,10 +1144,18 @@ extern "C" {
" (default: no)", NULL);
p->opcode_list = (int*) mcalloc(p, sizeof(int) * 256);
p->engineState |= CS_STATE_PRE;
+ csound_aops_init_tables(p);
/* now load and pre-initialise external modules for this instance */
/* this function returns an error value that may be worth checking */
{
- int err = csoundLoadModules(p);
+ int err = csoundInitStaticModules(p);
+ if (p->delayederrormessages && p->printerrormessagesflag==NULL) {
+ p->Warning(p, p->delayederrormessages);
+ free(p->delayederrormessages);
+ p->delayederrormessages = NULL;
+ }
+ if (UNLIKELY(err==CSOUND_ERROR)) return err;
+ err = csoundLoadModules(p);
if (p->delayederrormessages && p->printerrormessagesflag==NULL) {
p->Warning(p, p->delayederrormessages);
free(p->delayederrormessages);
@@ -1240,6 +1269,7 @@ extern "C" {
return -1;
}
+#if 0
static int getNumActive(INSDS *start, INSDS *end)
{
INSDS *current = start;
@@ -1249,6 +1279,7 @@ extern "C" {
}
return counter;
}
+#endif
inline void advanceINSDSPointer(INSDS ***start, int num)
{
@@ -1297,7 +1328,7 @@ extern "C" {
#ifdef PARCS
- int inline nodePerf(CSOUND *csound, int index)
+ static int inline nodePerf(CSOUND *csound, int index)
{
struct instr_semantics_t *instr = NULL;
INSDS *insds = NULL;
@@ -1399,8 +1430,8 @@ extern "C" {
TRACE_1("[%i] Go\n", index);
- /* TIMER_INIT(mutex, "Mutex ")
- TIMER_T_START(mutex, index, "Mutex ") */
+ /* TIMER_INIT(mutex, "Mutex ");
+ TIMER_T_START(mutex, index, "Mutex "); */
csound_global_mutex_lock();
if (csound->multiThreadedComplete == 1) {
@@ -1416,14 +1447,14 @@ extern "C" {
}
csound_global_mutex_unlock();
- /* TIMER_T_END(mutex, index, "Mutex ") */
+ /* TIMER_T_END(mutex, index, "Mutex "); */
- TIMER_INIT(thread, "")
- TIMER_T_START(thread, index, "")
+ TIMER_INIT(thread, "");
+ TIMER_T_START(thread, index, "");
nodePerf(csound, index);
- TIMER_T_END(thread, index, "")
+ TIMER_T_END(thread, index, "");
TRACE_1("[%i] Done\n", index);
@@ -1527,9 +1558,9 @@ extern "C" {
ip = csound->actanchor.nxtact;
if (ip != NULL) {
- TIMER_INIT(thread, "")
- TIMER_START(thread, "Clock Sync ")
- TIMER_END(thread, "Clock Sync ")
+ TIMER_INIT(thread, "");
+ TIMER_START(thread, "Clock Sync ");
+ TIMER_END(thread, "Clock Sync ");
SHARK_SIGNPOST(KPERF_SYM);
TRACE_1("[%i] kperf\n", 0);
@@ -1538,16 +1569,15 @@ extern "C" {
2nd by inso count / thread count. */
if (csound->multiThreadedThreadInfo != NULL) {
struct dag_t *dag2 = NULL;
- int main_played_count = 0;
- TIMER_START(thread, "Dag ")
+ TIMER_START(thread, "Dag ");
#if defined(LINEAR_CACHE) || defined(HASH_CACHE)
- csp_dag_cache_fetch(csound, &dag2, ip);
+ csp_dag_cache_fetch(csound, &dag2, ip);
csp_dag_build(csound, &dag2, ip);
#endif
- TIMER_END(thread, "Dag ")
+ TIMER_END(thread, "Dag ");
- TRACE_1("{Time: %f}\n", csound->GetScoreTime(csound));
+ TRACE_1("{Time: %f}\n", csound->GetScoreTime(csound));
#if TRACE > 1
csp_dag_print(csound, dag2);
#endif
@@ -1558,17 +1588,17 @@ extern "C" {
SHARK_SIGNPOST(BARRIER_1_WAIT_SYM);
csound->WaitBarrier(csound->barrier1);
- TIMER_START(thread, "[0] ")
+ TIMER_START(thread, "[0] ");
- main_played_count = nodePerf(csound, 0);
+ (void) nodePerf(csound, 0);
- TIMER_END(thread, "[0] ")
+ TIMER_END(thread, "[0] ");
SHARK_SIGNPOST(BARRIER_2_WAIT_SYM);
/* wait until partition is complete */
csound->WaitBarrier(csound->barrier2);
TRACE_1("[%i] Barrier2 Done\n", 0);
- TIMER_END(thread, "")
+ TIMER_END(thread, "");
#if !defined(LINEAR_CACHE) && !defined(HASH_CACHE)
csp_dag_dealloc(csound, &dag2);
diff --git a/Top/main.c b/Top/main.c
index 72af91f..94c2949 100644
--- a/Top/main.c
+++ b/Top/main.c
@@ -25,7 +25,7 @@
#include "csoundCore.h" /* MAIN.C */
#include "soundio.h"
#include "csmodule.h"
-
+#include "corfile.h"
#ifdef ENABLE_NEW_PARSER
#include "csound_orc.h"
@@ -85,7 +85,6 @@ PUBLIC int csoundCompile(CSOUND *csound, int argc, char **argv)
char *s;
char *sortedscore = NULL;
char *xtractedscore = "score.xtr";
- char *playscore = NULL; /* unless we extract */
FILE *scorin = NULL, *scorout = NULL, *xfile = NULL;
int n;
int csdFound = 0;
@@ -228,6 +227,7 @@ PUBLIC int csoundCompile(CSOUND *csound, int argc, char **argv)
csdFound = 1;
}
}
+
/* IV - Feb 19 2005: run a second pass of argdecode so that */
/* command line options override CSD options */
/* this assumes that argdecode is safe to run multiple times */
@@ -283,42 +283,38 @@ PUBLIC int csoundCompile(CSOUND *csound, int argc, char **argv)
O->sfsampsize = sfsampsize(FORMAT2SF(O->outformat));
O->informat = O->outformat; /* informat default */
- if (csound->scorename == NULL || strlen(csound->scorename) == 0) {
+ if (csound->scorename == NULL && csound->scorestr==NULL) {
/* No scorename yet */
- char *sconame = get_sconame(csound);
- FILE *scof;
+ csound->scorestr = corfile_create_r("f0 42000\n");
+ corfile_flush(csound->scorestr);
if (O->RTevents)
csound->Message(csound, Str("realtime performance using dummy "
"numeric scorefile\n"));
- csoundTmpFileName(csound, sconame, ".sco"); /* Generate score name */
- scof = fopen(sconame, "w");
- fprintf(scof, "f0 42000\n");
- fclose(scof);
- csound->scorename = sconame;
- add_tmpfile(csound, sconame); /* IV - Feb 03 2005 */
- csoundNotifyFileOpened(csound, sconame, CSFTYPE_SCORE, 1, 1);
- csound->tempStatus |= csScoInMask;
- } else if (!csdFound && !O->noDefaultPaths){
- /* Add directory of SCO file to search paths*/
- fileDir = csoundGetDirectoryForPath(csound, csound->scorename);
- csoundAppendEnv(csound, "SADIR", fileDir);
- csoundAppendEnv(csound, "SSDIR", fileDir);
- csoundAppendEnv(csound, "MFDIR", fileDir);
- mfree(csound, fileDir);
+ }
+ else if (!csdFound && !O->noDefaultPaths){
+ /* Add directory of SCO file to search paths*/
+ fileDir = csoundGetDirectoryForPath(csound, csound->scorename);
+ csoundAppendEnv(csound, "SADIR", fileDir);
+ csoundAppendEnv(csound, "SSDIR", fileDir);
+ csoundAppendEnv(csound, "MFDIR", fileDir);
+ mfree(csound, fileDir);
}
/* Add directory of ORC file to search paths*/
if (!csdFound && !O->noDefaultPaths) {
- fileDir = csoundGetDirectoryForPath(csound, csound->orchname);
- csoundAppendEnv(csound, "SADIR", fileDir);
- csoundAppendEnv(csound, "SSDIR", fileDir);
- csoundAppendEnv(csound, "MFDIR", fileDir);
- mfree(csound, fileDir);
+ fileDir = csoundGetDirectoryForPath(csound, csound->orchname);
+ csoundAppendEnv(csound, "SADIR", fileDir);
+ csoundAppendEnv(csound, "SSDIR", fileDir);
+ csoundAppendEnv(csound, "MFDIR", fileDir);
+ mfree(csound, fileDir);
}
- csound->Message(csound, Str("orchname: %s\n"), csound->orchname);
- if (csound->scorename != NULL)
- csound->Message(csound, Str("scorename: %s\n"), csound->scorename);
+ if (csound->orchstr==NULL) {
+ /* does not deal with search paths */
+ csound->Message(csound, Str("orchname: %s\n"), csound->orchname);
+ csound->orchstr = copy_to_corefile(csound, csound->orchname, NULL, 0);
+ csound->orchname = NULL;
+ }
if (csound->xfilename != NULL)
csound->Message(csound, "xfilename: %s\n", csound->xfilename);
/* IV - Oct 31 2002: moved orchestra compilation here, so that named */
@@ -330,11 +326,13 @@ PUBLIC int csoundCompile(CSOUND *csound, int argc, char **argv)
#ifdef ENABLE_NEW_PARSER
if (O->newParser) {
- extern void new_orc_parser(CSOUND *);
+ int new_orc_parser(CSOUND *);
csound->Message(csound, "********************\n");
csound->Message(csound, "* USING NEW PARSER *\n");
csound->Message(csound, "********************\n");
- new_orc_parser(csound);
+ if (new_orc_parser(csound)) {
+ csoundDie(csound, Str("Stopping on parser failure\n"));
+ }
}
else {
otran(csound); /* read orcfile, setup desblks & spaces */
@@ -344,8 +342,9 @@ PUBLIC int csoundCompile(CSOUND *csound, int argc, char **argv)
#endif
#if defined(USE_OPENMP)
if (csound->oparms->numThreads > 1) {
- omp_set_num_threads(csound->oparms->numThreads);
- csound->Message(csound, "OpenMP enabled: requested %d threads.\n", csound->oparms->numThreads);
+ omp_set_num_threads(csound->oparms->numThreads);
+ csound->Message(csound, "OpenMP enabled: requested %d threads.\n",
+ csound->oparms->numThreads);
}
#endif
@@ -358,43 +357,37 @@ PUBLIC int csoundCompile(CSOUND *csound, int argc, char **argv)
(!strcmp(csound->scorename + (n - 4), ".srt") ||
!strcmp(csound->scorename + (n - 4), ".xtr"))) {
csound->Message(csound, Str("using previous %s\n"), csound->scorename);
- playscore = sortedscore = csound->scorename; /* use that one */
+ //playscore = sortedscore = csound->scorename; /* use that one */
+ csound->scorestr = NULL;
+ csound->scorestr = copy_to_corefile(csound, csound->scorename, NULL, 1);
}
else {
- if (csound->keep_tmp) {
- playscore = sortedscore = "score.srt";
+ sortedscore = NULL;
+ if (csound->scorestr==NULL) {
+ csound->scorestr = copy_to_corefile(csound, csound->scorename, NULL, 1);
+ if (csound->scorestr==NULL)
+ csoundDie(csound, Str("cannot open scorefile %s"), csound->scorename);
}
- else {
- playscore = sortedscore = csoundTmpFileName(csound, NULL, ".srt");
- add_tmpfile(csound, playscore); /* IV - Feb 03 2005 */
- csound->tempStatus |= csScoSortMask + csPlayScoMask;
- }
- if (!(scorin = fopen(csound->scorename, "rb"))) /* else sort it */
- csoundDie(csound, Str("cannot open scorefile %s"), csound->scorename);
- /* notify the host that we are opening a file */
- csoundNotifyFileOpened(csound, csound->scorename, CSFTYPE_SCORE, 0,
- (csound->tempStatus & csScoInMask)!=0);
- if (!(scorout = fopen(sortedscore, "w")))
- csoundDie(csound, Str("cannot open %s for writing"), sortedscore);
- csoundNotifyFileOpened(csound, sortedscore, CSFTYPE_SCORE_OUT, 1,
- (csound->tempStatus & csScoSortMask)!=0);
csound->Message(csound, Str("sorting score ...\n"));
- scsort(csound, scorin, scorout);
- fclose(scorin);
- fclose(scorout);
+ scsortstr(csound, csound->scorestr);
+ if (csound->keep_tmp) {
+ FILE *ff = fopen("score.srt", "w");
+ fputs(corfile_body(csound->scstr), ff);
+ fclose(ff);
+ }
}
if (csound->xfilename != NULL) { /* optionally extract */
if (!strcmp(csound->scorename, "score.xtr"))
csoundDie(csound, Str("cannot extract %s, name conflict"),
- csound->scorename);
+ csound->scorename);
if (!(xfile = fopen(csound->xfilename, "r")))
csoundDie(csound, Str("cannot open extract file %s"),csound->xfilename);
csoundNotifyFileOpened(csound, csound->xfilename,
- CSFTYPE_EXTRACT_PARMS, 0, 0);
+ CSFTYPE_EXTRACT_PARMS, 0, 0);
if (!(scorin = fopen(sortedscore, "r")))
csoundDie(csound, Str("cannot reopen %s"), sortedscore);
csoundNotifyFileOpened(csound, sortedscore, CSFTYPE_SCORE_OUT, 0,
- (csound->tempStatus & csScoSortMask)!=0);
+ (csound->tempStatus & csScoSortMask)!=0);
if (!(scorout = fopen(xtractedscore, "w")))
csoundDie(csound, Str("cannot open %s for writing"), xtractedscore);
csoundNotifyFileOpened(csound, xtractedscore, CSFTYPE_SCORE_OUT, 1, 0);
@@ -403,13 +396,11 @@ PUBLIC int csoundCompile(CSOUND *csound, int argc, char **argv)
fclose(scorin);
fclose(scorout);
fclose(xfile);
- playscore = xtractedscore;
csound->tempStatus &= ~csPlayScoMask;
}
csound->Message(csound, Str("\t... done\n"));
/* copy sorted score name */
- O->playscore = (char*) mmalloc(csound, strlen(playscore) + 1);
- strcpy(O->playscore, playscore);
+ O->playscore = csound->scstr;
/* IV - Jan 28 2005 */
print_benchmark_info(csound, Str("end of score sort"));
if (O->syntaxCheckOnly) {
@@ -426,39 +417,40 @@ PUBLIC int csoundCompile(CSOUND *csound, int argc, char **argv)
openMIDIout(csound);
#ifdef PARCS
- if (O->numThreads > 1) {
- int i;
- THREADINFO *current = NULL;
+ if (O->numThreads > 1) {
+ void csp_barrier_alloc(CSOUND *, pthread_barrier_t **, int);
+ int i;
+ THREADINFO *current = NULL;
- csound->multiThreadedBarrier1 = csound->CreateBarrier(O->numThreads);
- csound->multiThreadedBarrier2 = csound->CreateBarrier(O->numThreads);
+ csound->multiThreadedBarrier1 = csound->CreateBarrier(O->numThreads);
+ csound->multiThreadedBarrier2 = csound->CreateBarrier(O->numThreads);
- csp_barrier_alloc(csound, &(csound->barrier1), O->numThreads);
- csp_barrier_alloc(csound, &(csound->barrier2), O->numThreads);
+ csp_barrier_alloc(csound, &(csound->barrier1), O->numThreads);
+ csp_barrier_alloc(csound, &(csound->barrier2), O->numThreads);
- csound->multiThreadedComplete = 0;
+ csound->multiThreadedComplete = 0;
- for(i = 1; i < O->numThreads; i++) {
- THREADINFO *t = csound->Malloc(csound, sizeof(THREADINFO));
+ for (i = 1; i < O->numThreads; i++) {
+ THREADINFO *t = csound->Malloc(csound, sizeof(THREADINFO));
- t->threadId = csound->CreateThread(&kperfThread, (void *)csound);
- t->next = NULL;
+ t->threadId = csound->CreateThread(&kperfThread, (void *)csound);
+ t->next = NULL;
- if(current == NULL) {
- csound->multiThreadedThreadInfo = t;
- } else {
- current->next = t;
- }
- current = t;
+ if (current == NULL) {
+ csound->multiThreadedThreadInfo = t;
}
+ else {
+ current->next = t;
+ }
+ current = t;
+ }
- csound->WaitBarrier(csound->barrier2);
+ csound->WaitBarrier(csound->barrier2);
- csp_parallel_compute_spec_setup(csound);
+ csp_parallel_compute_spec_setup(csound);
}
#endif
return musmon(csound);
}
-
diff --git a/Top/one_file.c b/Top/one_file.c
index 0c7155a..276ebc1 100644
--- a/Top/one_file.c
+++ b/Top/one_file.c
@@ -22,8 +22,12 @@
*/
#include "csoundCore.h"
+#include <stdlib.h>
+int mkstemp(char *);
#include <ctype.h>
#include <errno.h>
+#include "corfile.h"
+
#if defined(LINUX) || defined(__MACH__) || defined(WIN32)
# include <sys/types.h>
# include <sys/stat.h>
@@ -57,13 +61,14 @@ typedef struct namelst {
} NAMELST;
typedef struct {
- char buffer[CSD_MAX_LINE_LEN];
NAMELST *toremove;
char orcname[L_tmpnam + 4];
char sconame[L_tmpnam + 4];
char midname[L_tmpnam + 4];
int midiSet;
int csdlinecount;
+ char *orcstr;
+ char *scostr;
} ONE_FILE_GLOBALS;
#define ST(x) (((ONE_FILE_GLOBALS*) csound->oneFileGlobals)->x)
@@ -225,10 +230,11 @@ int readOptions(CSOUND *csound, FILE *unf, int readingCsOptions)
char *p;
int argc = 0;
char *argv[CSD_MAX_ARGS];
+ char buffer[CSD_MAX_LINE_LEN];
alloc_globals(csound);
- while (my_fgets(csound, ST(buffer), CSD_MAX_LINE_LEN, unf) != NULL) {
- p = ST(buffer);
+ while (my_fgets(csound, buffer, CSD_MAX_LINE_LEN, unf) != NULL) {
+ p = buffer;
/* Remove trailing spaces; rather heavy handed */
{
int len = strlen(p)-2;
@@ -289,8 +295,8 @@ int readOptions(CSOUND *csound, FILE *unf, int readingCsOptions)
if (*p=='*') {
p++; goto top;
}
- my_fgets(csound, ST(buffer), CSD_MAX_LINE_LEN, unf);
- p = ST(buffer); goto top;
+ my_fgets(csound, buffer, CSD_MAX_LINE_LEN, unf);
+ p = buffer; goto top;
}
if (UNLIKELY(argc == CSD_MAX_ARGS))
csoundDie(csound, Str("More than %d arguments in <CsOptions>"),
@@ -311,10 +317,10 @@ int readOptions(CSOUND *csound, FILE *unf, int readingCsOptions)
if (UNLIKELY(argc == 0)) {
if (readingCsOptions)
csoundErrorMsg(csound, Str("Invalid arguments in <CsOptions>: %s"),
- ST(buffer));
+ buffer);
else csoundErrorMsg(csound,
Str("Invalid arguments in .csoundrc or -@ file: %s"),
- ST(buffer));
+ buffer);
}
else argdecode(csound, argc, argv);
}
@@ -328,30 +334,22 @@ int readOptions(CSOUND *csound, FILE *unf, int readingCsOptions)
static int createOrchestra(CSOUND *csound, FILE *unf)
{
char *p;
- FILE *orcf;
- void *fd;
-
- /* Generate orchestra name */
- csoundTmpFileName(csound, ST(orcname), ".orc");
- fd = csoundFileOpenWithType(csound, &orcf, CSFILE_STD, ST(orcname), "w", NULL,
- CSFTYPE_ORCHESTRA, 1);
- csound->tempStatus |= csOrcMask;
-#ifdef _DEBUG
- csoundMessage(csound, Str("Creating %s (%p)\n"), ST(orcname), orcf);
-#endif
- if (UNLIKELY(fd == NULL)) {
- csoundDie(csound, Str("Failed to create %s"), ST(orcname));
- }
- csound->orcLineOffset = ST(csdlinecount);
- while (my_fgets(csound, ST(buffer), CSD_MAX_LINE_LEN, unf)!= NULL) {
- p = ST(buffer);
+ /* FILE *orcf; */
+ /* void *fd; */
+ CORFIL *incore = corfile_create_w();
+ char buffer[CSD_MAX_LINE_LEN];
+
+ csound->orcLineOffset = ST(csdlinecount)+1;
+ while (my_fgets(csound, buffer, CSD_MAX_LINE_LEN, unf)!= NULL) {
+ p = buffer;
while (*p == ' ' || *p == '\t') p++;
if (strstr(p, "</CsInstruments>") == p) {
- csoundFileClose(csound, fd);
- add_tmpfile(csound, ST(orcname)); /* IV - Feb 03 2005 */
+ corfile_flush(incore);
+ csound->orchstr = incore;
return TRUE;
}
- else fputs(ST(buffer), orcf);
+ else
+ corfile_puts(buffer, incore);
}
csoundErrorMsg(csound, Str("Missing end tag </CsInstruments>"));
return FALSE;
@@ -359,32 +357,21 @@ static int createOrchestra(CSOUND *csound, FILE *unf)
static int createScore(CSOUND *csound, FILE *unf)
{
- char *p;
- FILE *scof;
- void *fd;
-
- /* Generate score name */
- csoundTmpFileName(csound, ST(sconame), ".sco");
- fd = csoundFileOpenWithType(csound, &scof, CSFILE_STD, ST(sconame), "w", NULL,
- CSFTYPE_SCORE, 1);
- csound->tempStatus |= csScoInMask;
-#ifdef _DEBUG
- csoundMessage(csound, Str("Creating %s (%p)\n"), ST(sconame), scof);
-#endif
- /* RWD 3:2000 */
- if (UNLIKELY(fd == NULL))
- return FALSE;
+ char *p;
+ CORFIL *incore = corfile_create_w();
+ char buffer[CSD_MAX_LINE_LEN];
csound->scoLineOffset = ST(csdlinecount);
- while (my_fgets(csound, ST(buffer), CSD_MAX_LINE_LEN, unf)!= NULL) {
- p = ST(buffer);
+ while (my_fgets(csound, buffer, CSD_MAX_LINE_LEN, unf)!= NULL) {
+ p = buffer;
while (*p == ' ' || *p == '\t') p++;
- if (strstr(p, "</CsScore>") == p) {
- csoundFileClose(csound, fd);
- add_tmpfile(csound, ST(sconame)); /* IV - Feb 03 2005 */
+ if (strstr(p, "</CsScore>") == p) {
+ corfile_flush(incore);
+ csound->scorestr = incore;
return TRUE;
}
- else fputs(ST(buffer), scof);
+ else
+ corfile_puts(buffer, incore);
}
csoundErrorMsg(csound, Str("Missing end tag </CsScore>"));
return FALSE;
@@ -397,6 +384,7 @@ static int createExScore(CSOUND *csound, char *p, FILE *unf)
char prog[L_tmpnam + 4];
void *fd;
FILE *scof;
+ char buffer[CSD_MAX_LINE_LEN];
p = strstr(p, "bin=\"");
if (UNLIKELY(p==NULL)) {
@@ -423,8 +411,8 @@ static int createExScore(CSOUND *csound, char *p, FILE *unf)
return FALSE;
csound->scoLineOffset = ST(csdlinecount);
- while (my_fgets(csound, ST(buffer), CSD_MAX_LINE_LEN, unf)!= NULL) {
- p = ST(buffer);
+ while (my_fgets(csound, buffer, CSD_MAX_LINE_LEN, unf)!= NULL) {
+ p = buffer;
if (strstr(p, "</CsScore>") == p) {
char sys[1024];
csoundFileClose(csound, fd);
@@ -437,52 +425,12 @@ static int createExScore(CSOUND *csound, char *p, FILE *unf)
add_tmpfile(csound, ST(sconame)); /* IV - Feb 03 2005 */
return TRUE;
}
- else fputs(ST(buffer), scof);
+ else fputs(buffer, scof);
}
csoundErrorMsg(csound, Str("Missing end tag </CsScore>"));
return FALSE;
}
-/* static int createMIDI(CSOUND *csound, FILE *unf) */
-/* { */
-/* int size, c; */
-/* char *p; */
-/* FILE *midf; */
-/* void *fd; */
-
-/* /\* Generate MIDI file name *\/ */
-/* csoundTmpFileName(csound, ST(midname), ".mid"); */
-/* fd = csoundFileOpenWithType(csound, &midf, CSFILE_STD, ST(midname), "wb", NULL, */
-/* CSFTYPE_STD_MIDI, 1); */
-/* if (fd == NULL) { */
-/* csoundDie(csound, Str("Cannot open temporary file (%s) for MIDI subfile"), */
-/* ST(midname)); */
-/* } */
-/* csound->tempStatus |= csMidiScoMask; */
-/* my_fgets(csound, ST(buffer), CSD_MAX_LINE_LEN, unf); */
-/* if (sscanf(ST(buffer), "Size = %d", &size) == 0) { */
-/* csoundDie(csound, Str("Error in reading MIDI subfile -- no size read")); */
-/* } */
-/* for ( ; size > 0; size--) { */
-/* c = getc(unf); */
-/* putc(c, midf); */
-/* } */
-/* csoundFileClose(csound, fd); */
-/* add_tmpfile(csound, ST(midname)); /\* IV - Feb 03 2005 *\/ */
-/* ST(midiSet) = TRUE; */
-/* while (TRUE) { */
-/* if (my_fgets(csound, ST(buffer), CSD_MAX_LINE_LEN, unf)!= NULL) { */
-/* p = ST(buffer); */
-/* while (*p == ' ' || *p == '\t') p++; */
-/* if (strstr(p, "</CsMidifile>") == p) { */
-/* return TRUE; */
-/* } */
-/* } */
-/* } */
-/* csoundErrorMsg(csound, Str("Missing end tag </CsMidifile>")); */
-/* return FALSE; */
-/* } */
-
static void read_base64(CSOUND *csound, FILE *in, FILE *out)
{
int c;
@@ -545,6 +493,7 @@ static int createMIDI2(CSOUND *csound, FILE *unf)
char *p;
FILE *midf;
void *fd;
+ char buffer[CSD_MAX_LINE_LEN];
/* Generate MIDI file name */
csoundTmpFileName(csound, ST(midname), ".mid");
@@ -560,8 +509,8 @@ static int createMIDI2(CSOUND *csound, FILE *unf)
add_tmpfile(csound, ST(midname)); /* IV - Feb 03 2005 */
ST(midiSet) = TRUE;
while (TRUE) {
- if (my_fgets(csound, ST(buffer), CSD_MAX_LINE_LEN, unf)!= NULL) {
- p = ST(buffer);
+ if (my_fgets(csound, buffer, CSD_MAX_LINE_LEN, unf)!= NULL) {
+ p = buffer;
while (*p == ' ' || *p == '\t') p++;
if (strstr(p, "</CsMidifileB>") == p) {
return TRUE;
@@ -578,8 +527,9 @@ static int createSample(CSOUND *csound, FILE *unf)
FILE *smpf;
void *fd;
char sampname[256];
+ char buffer[CSD_MAX_LINE_LEN];
- sscanf(ST(buffer), "<CsSampleB filename=\"%d\">", &num);
+ sscanf(buffer, "<CsSampleB filename=\"%d\">", &num);
sprintf(sampname, "soundin.%d", num);
if (UNLIKELY((smpf = fopen(sampname, "rb")) != NULL)) {
fclose(smpf);
@@ -594,8 +544,8 @@ static int createSample(CSOUND *csound, FILE *unf)
csoundFileClose(csound, fd);
add_tmpfile(csound, sampname); /* IV - Feb 03 2005 */
while (TRUE) {
- if (my_fgets(csound, ST(buffer), CSD_MAX_LINE_LEN, unf)!= NULL) {
- char *p = ST(buffer);
+ if (my_fgets(csound, buffer, CSD_MAX_LINE_LEN, unf)!= NULL) {
+ char *p = buffer;
while (*p == ' ' || *p == '\t') p++;
if (strstr(p, "</CsSampleB>") == p) {
return TRUE;
@@ -611,7 +561,8 @@ static int createFile(CSOUND *csound, FILE *unf)
FILE *smpf;
void *fd;
char filename[256];
- char *p = ST(buffer), *q;
+ char buffer[CSD_MAX_LINE_LEN];
+ char *p = buffer, *q;
filename[0] = '\0';
@@ -624,7 +575,7 @@ static int createFile(CSOUND *csound, FILE *unf)
if (q) *q='\0';
// printf("p=>>%s<<\n", p);
strcpy(filename, p);
-//sscanf(ST(buffer), "<CsFileB filename=\"%s\">", filename);
+//sscanf(buffer, "<CsFileB filename=\"%s\">", filename);
// if (filename[0] != '\0' &&
// filename[strlen(filename) - 1] == '>' && filename[strlen(filename) - 2] == '"')
// filename[strlen(filename) - 2] = '\0';
@@ -642,8 +593,8 @@ static int createFile(CSOUND *csound, FILE *unf)
add_tmpfile(csound, filename); /* IV - Feb 03 2005 */
while (TRUE) {
- if (my_fgets(csound, ST(buffer), CSD_MAX_LINE_LEN, unf)!= NULL) {
- char *p = ST(buffer);
+ if (my_fgets(csound, buffer, CSD_MAX_LINE_LEN, unf)!= NULL) {
+ char *p = buffer;
while (*p == ' ' || *p == '\t') p++;
if (strstr(p, "</CsFileB>") == p) {
return TRUE;
@@ -660,9 +611,10 @@ static int checkVersion(CSOUND *csound, FILE *unf)
int major = 0, minor = 0;
int result = TRUE;
int version = csoundGetVersion();
+ char buffer[CSD_MAX_LINE_LEN];
- while (my_fgets(csound, ST(buffer), CSD_MAX_LINE_LEN, unf) != NULL) {
- p = ST(buffer);
+ while (my_fgets(csound, buffer, CSD_MAX_LINE_LEN, unf) != NULL) {
+ p = buffer;
while (*p == ' ' || *p == '\t') p++;
if (strstr(p, "</CsVersion>") != NULL)
return result;
@@ -698,11 +650,12 @@ static int checkLicence(CSOUND *csound, FILE *unf)
{
char *p, *licence;
int len = 1;
+ char buffer[CSD_MAX_LINE_LEN];
csoundMessage(csound, Str("**** Licence Information ****\n"));
licence = (char*) mcalloc(csound, len);
- while (my_fgets(csound, ST(buffer), CSD_MAX_LINE_LEN, unf) != NULL) {
- p = ST(buffer);
+ while (my_fgets(csound, buffer, CSD_MAX_LINE_LEN, unf) != NULL) {
+ p = buffer;
if (strstr(p, "</CsLicence>") != NULL ||
strstr(p, "</CsLicense>") != NULL) {
csoundMessage(csound, Str("**** End of Licence Information ****\n"));
@@ -720,10 +673,10 @@ static int checkLicence(CSOUND *csound, FILE *unf)
return FALSE;
}
-static int blank_buffer(CSOUND *csound)
+static int blank_buffer(CSOUND *csound, char *buffer)
{
const char *s;
- for (s = &(ST(buffer)[0]); *s != '\0' && *s != '\n'; s++) {
+ for (s = &(buffer[0]); *s != '\0' && *s != '\n'; s++) {
if (*s == ';')
return TRUE;
if (*s != ' ' && *s != '\t')
@@ -740,6 +693,7 @@ int read_unified_file(CSOUND *csound, char **pname, char **score)
int result = TRUE;
int started = FALSE;
int r;
+ char buffer[CSD_MAX_LINE_LEN];
/* Need to open in binary to deal with MIDI and the like. */
fd = csoundFileOpenWithType(csound, &unf, CSFILE_STD, name, "rb", NULL,
@@ -756,8 +710,8 @@ int read_unified_file(CSOUND *csound, char **pname, char **score)
#ifdef _DEBUG
csoundMessage(csound, "Calling unified file system with %s\n", name);
#endif
- while (my_fgets(csound, ST(buffer), CSD_MAX_LINE_LEN, unf)) {
- char *p = ST(buffer);
+ while (my_fgets(csound, buffer, CSD_MAX_LINE_LEN, unf)) {
+ char *p = buffer;
while (*p == ' ' || *p == '\t') p++;
if (strstr(p, "<CsoundSynthesizer>") == p ||
strstr(p, "<CsoundSynthesiser>") == p) {
@@ -785,13 +739,13 @@ int read_unified_file(CSOUND *csound, char **pname, char **score)
else {
csoundMessage(csound, Str("Skipping <CsOptions>\n"));
do {
- if (UNLIKELY(my_fgets(csound, ST(buffer),
+ if (UNLIKELY(my_fgets(csound, buffer,
CSD_MAX_LINE_LEN, unf) == NULL)) {
csoundErrorMsg(csound, Str("Missing end tag </CsOptions>"));
result = FALSE;
break;
}
- p = ST(buffer);
+ p = buffer;
while (*p == ' ' || *p == '\t') p++;
} while (strstr(p, "</CsOptions>") != p);
}
@@ -834,9 +788,9 @@ int read_unified_file(CSOUND *csound, char **pname, char **score)
r = checkLicence(csound, unf);
result = r && result;
}
- else if (blank_buffer(csound)) continue;
- else if (started && strchr(p, '<') == ST(buffer)) {
- csoundMessage(csound, Str("unknown CSD tag: %s\n"), ST(buffer));
+ else if (blank_buffer(csound, buffer)) continue;
+ else if (started && strchr(p, '<') == buffer){
+ csoundMessage(csound, Str("unknown CSD tag: %s\n"), buffer);
}
}
if (UNLIKELY(!started)) {
diff --git a/Top/threads.c b/Top/threads.c
index ea547e6..32d7b19 100644
--- a/Top/threads.c
+++ b/Top/threads.c
@@ -224,7 +224,7 @@ PUBLIC uintptr_t csoundJoinThread(void *thread)
}
}
-#if defined(LINUX) || defined(WIN32)
+#if !defined(ANDROID) && (defined(LINUX) || defined(WIN32))
PUBLIC void *csoundCreateThreadLock(void)
{
diff --git a/all_string_files b/all_string_files
index 27dcc0c..aae4bcd 100644
--- a/all_string_files
+++ b/all_string_files
@@ -1,14 +1,13 @@
./Engine/auxfd.c
./Engine/cfgvar.c
+./Engine/corfiles.c
./Engine/csound_orc_compile.c
./Engine/csound_orc_expressions.c
-./Engine/csound_orclex.c
./Engine/csound_orc_optimize.c
-./Engine/csound_orcparse.c
-./Engine/csound_orcparse.h
./Engine/csound_orc_semantics.c
./Engine/cs_par_base.c
./Engine/cs_par_dispatch.c
+./Engine/cs_par_orc_semantic_analysis.c
./Engine/entry1.c
./Engine/envvar.c
./Engine/express.c
@@ -22,6 +21,7 @@
./Engine/namedins.c
./Engine/new_orc_parser.c
./Engine/otran.c
+./Engine/parse_param.h
./Engine/rdorch.c
./Engine/rdscor.c
./Engine/scsort.c
@@ -29,6 +29,7 @@
./Engine/sort.c
./Engine/sread.c
./Engine/swrite.c
+./Engine/swritestr.c
./Engine/symbtab.c
./Engine/twarp.c
./Engine/typetabl.h
@@ -163,6 +164,7 @@
./H/cfgvar.h
./H/cmath.h
./H/convolve.h
+./H/corfile.h
./H/cscore.h
./H/csdl.h
./H/csGblMtx.h
@@ -224,6 +226,7 @@
./H/windin.h
./H/winEPS.h
./InOut/FL_graph.cpp
+./InOut/cmidi.c
./InOut/libsnd.c
./InOut/libsnd_u.c
./InOut/midifile.c
@@ -231,11 +234,20 @@
./InOut/midisend.c
./InOut/pmidi.c
./InOut/rtalsa.c
+./InOut/rtauhal.c
./InOut/rtcoreaudio.c
./InOut/rtjack.c
./InOut/rtpa.c
./InOut/rtpulse.c
./InOut/rtwinmm.c
+./InOut/widgets.h
+./InOut/widglobals.h
+./InOut/winascii.c
+./InOut/windin.c
+./InOut/window.c
+./InOut/winEPS.c
+./InOut/winFLTK.c
+./InOut/winFLTK.h
./InOut/virtual_keyboard/Bank.cpp
./InOut/virtual_keyboard/Bank.hpp
./InOut/virtual_keyboard/FLTKKeyboard.cpp
@@ -253,15 +265,6 @@
./InOut/virtual_keyboard/SliderData.cpp
./InOut/virtual_keyboard/SliderData.hpp
./InOut/virtual_keyboard/virtual_keyboard.cpp
-./InOut/widgets.cpp
-./InOut/widgets.h
-./InOut/widglobals.h
-./InOut/winascii.c
-./InOut/windin.c
-./InOut/window.c
-./InOut/winEPS.c
-./InOut/winFLTK.c
-./InOut/winFLTK.h
./interfaces/CppSound.cpp
./interfaces/CppSound.hpp
./interfaces/cs_glue.cpp
@@ -391,6 +394,8 @@
./Opcodes/hrtferX.c
./Opcodes/hrtferx.h
./Opcodes/hrtfopcodes.c
+./Opcodes/hrtfearly.c
+./Opcodes/hrtfreverb.c
./Opcodes/ifd.c
./Opcodes/imageOpcodes.c
./Opcodes/imageOpcodes.h
@@ -504,7 +509,6 @@
./Opcodes/sndwarp.h
./Opcodes/sockrecv.c
./Opcodes/socksend.c
-./Opcodes/socksend.old.c
./Opcodes/space.c
./Opcodes/space_cm.c
./Opcodes/space.h
diff --git a/cleanup.sh b/cleanup.sh
index 78693e3..356b951 100755
--- a/cleanup.sh
+++ b/cleanup.sh
@@ -16,8 +16,7 @@ fi
"$0" remove ".sconf_temp"
"$0" remove "config.log"
-patterns='*.xmg *.o *.os *.so *.a *.wav *.aif* *.sf *.pcm *.exe *.dll
-*.obj *.lib *.class'
+patterns='*.xmg *.o *.os *.so *.a *.wav *.aif* *.sf *.pcm *.exe *.dll *.obj *.lib *.class'
findexpr='-iname .scons*'
for pat in $patterns; do
findexpr="$findexpr -o -iname $pat"
@@ -43,8 +42,7 @@ find . -type f $findexpr -exec "$0" remove '{}' \;
find "./interfaces" -type f -iname "*.java" -exec "$0" remove '{}' \;
#find "./interfaces" -type f -iname "*.class" -exec "$0" remove '{}' \;
-notexecpatterns="*.cpp *.cxx *.h *.hpp *.fl *.i *.csd *.py *.sh *.sco *.orc
- *.txt *.tcl"
+notexecpatterns="*.cpp *.cxx *.h *.hpp *.fl *.i *.csd *.py *.sh *.sco *.orc *.txt *.tcl"
notexecexpr="-iname *.c"
for pat in $notexecpatterns; do
notexecexpr="$notexecexpr -o -iname $pat"
diff --git a/frontends/CsoundAC/Counterpoint.cpp b/frontends/CsoundAC/Counterpoint.cpp
index cd44e00..137128c 100644
--- a/frontends/CsoundAC/Counterpoint.cpp
+++ b/frontends/CsoundAC/Counterpoint.cpp
@@ -97,13 +97,13 @@ void Counterpoint::toCsoundScore(std::string filename, double secondsPerPulse)
key = double(Ctrpt(note,voice));
sprintf(buffer, "i %d %-1.7g %-1.7g %-1.7g %-1.7g %-1.7g %-1.7g %-1.7g %-1.7g %-1.7g\n",
(int)(voice + 1), time, duration, key, velocity, phase, x, y, z, pcs);
- fprintf(stderr, buffer);
+ fprintf(stderr, "%s", buffer);
stream << buffer;
totalnotes++;
}
}
sprintf(buffer, "; Total notes = %d\n", totalnotes);
- fprintf(stderr, buffer);
+ fprintf(stderr, "%s", buffer);
stream << buffer;
}
diff --git a/frontends/CsoundAC/System.cpp b/frontends/CsoundAC/System.cpp
index d5721d5..ac5fab9 100644
--- a/frontends/CsoundAC/System.cpp
+++ b/frontends/CsoundAC/System.cpp
@@ -44,7 +44,7 @@ namespace csound
void Logger::write(const char *text)
{
- fprintf(stderr, text);
+ fprintf(stderr, "%s", text);
}
ThreadLock::ThreadLock() : lock(0)
diff --git a/frontends/cscore/cscoremain.c b/frontends/cscore/cscoremain.c
index 728b6c1..d0c5aac 100644
--- a/frontends/cscore/cscoremain.c
+++ b/frontends/cscore/cscoremain.c
@@ -35,11 +35,13 @@ extern void cscore(CSOUND*);
Use this command (or your system's equivalent) to compile:
- gcc mycscore.c cscoremain.c -o cscore -lcsound -L/usr/local/lib -I/usr/local/include/csound
+ gcc mycscore.c cscoremain.c -o cscore -lcsound -L/usr/local/lib \
+ -I/usr/local/include/csound
On Mac OS X, use this command to compile:
- gcc mycscore.c cscoremain.c -o cscore -framework CsoundLib -I/Library/Frameworks/CsoundLib.framework/Headers
+ gcc mycscore.c cscoremain.c -o cscore -framework CsoundLib \
+ -I/Library/Frameworks/CsoundLib.framework/Headers
The resulting executable can be run with:
@@ -69,7 +71,8 @@ int main(int argc, char **argv)
/* open the command line scorein file */
if (argc < 2) {
- fprintf(stderr, "Insufficient arguments: must provide an input filename.\n");
+ fprintf(stderr,
+ "Insufficient arguments: must provide an input filename.\n");
return -1;
}
if (!(insco = fopen(argv[1], "r"))) {
diff --git a/frontends/cseditor/cseditor.cxx b/frontends/cseditor/cseditor.cxx
index 5034996..1ff9ba2 100644
--- a/frontends/cseditor/cseditor.cxx
+++ b/frontends/cseditor/cseditor.cxx
@@ -53,15 +53,15 @@ Fl_Text_Buffer *textbuf = 0;
// Syntax highlighting stuff...
Fl_Text_Buffer *stylebuf = 0;
Fl_Text_Display::Style_Table_Entry
- styletable[] = { // Style table
- { FL_BLACK, FL_COURIER, 14 }, // A - Plain
- { FL_DARK_GREEN, FL_COURIER_ITALIC, 14 }, // B - Line comments
- { FL_DARK_GREEN, FL_COURIER_ITALIC, 14 }, // C - Block comments
- { FL_RED, FL_COURIER, 14 }, // D - Strings
- { FL_DARK_RED, FL_COURIER, 14 }, // E - Directives
- { FL_DARK_RED, FL_COURIER_BOLD, 14 }, // F - Types
- { FL_BLUE, FL_COURIER_BOLD, 14 } // G - Keywords
- };
+styletable[] = { // Style table
+ { FL_BLACK, FL_COURIER, 14 }, // A - Plain
+ { FL_DARK_GREEN, FL_COURIER_ITALIC, 14 }, // B - Line comments
+ { FL_DARK_GREEN, FL_COURIER_ITALIC, 14 }, // C - Block comments
+ { FL_RED, FL_COURIER, 14 }, // D - Strings
+ { FL_DARK_RED, FL_COURIER, 14 }, // E - Directives
+ { FL_DARK_RED, FL_COURIER_BOLD, 14 }, // F - Types
+ { FL_BLUE, FL_COURIER_BOLD, 14 } // G - Keywords
+};
const char *code_keywords[] = { // List of known C/C++ keywords...
"ATSadd",
@@ -203,7 +203,7 @@ const char *code_keywords[] = { // List of known C/C++ keywords...
"cpuprc",
"cross2",
"crunch",
- "ctrl",
+ "ctrl",
"ctrl7",
"ctrl14",
"ctrl21",
@@ -249,7 +249,7 @@ const char *code_keywords[] = { // List of known C/C++ keywords...
"event_i",
"exitnow",
"exp",
- "expcurve",
+ "expcurve",
"expon",
"exprand",
"expseg",
@@ -315,7 +315,7 @@ const char *code_keywords[] = { // List of known C/C++ keywords...
"ftsavek",
"ftsr",
"gain",
- "gainslider",
+ "gainslider",
"gauss",
"gbuzz",
"getcfg",
@@ -369,7 +369,7 @@ const char *code_keywords[] = { // List of known C/C++ keywords...
"log",
"log10",
"logbtwo",
- "logcurve",
+ "logcurve",
"loop_ge",
"loop_gt",
"loop_le",
@@ -440,12 +440,12 @@ const char *code_keywords[] = { // List of known C/C++ keywords...
"minaccum",
"mirror",
"mod",
- "mode",
+ "mode",
"monitor",
"moog",
"moogladder",
"moogvcf",
- "moogvcf2",
+ "moogvcf2",
"moscil",
"mpulse",
"mrtmsg",
@@ -569,30 +569,30 @@ const char *code_keywords[] = { // List of known C/C++ keywords...
"pvsadsyn",
"pvsanal",
"pvsarp",
- "pvsbin",
+ "pvsbin",
"pvsblur",
"pvscale",
"pvscent",
"pvscross",
"pvsdemix",
- "pvsdisp",
+ "pvsdisp",
"pvsfilter",
"pvsfread",
"pvsfreeze",
"pvsftr",
"pvsftw",
- "pvsfwrite",
+ "pvsfwrite",
"pvshift",
"pvsifd",
- "pvsin",
+ "pvsin",
"pvsinfo",
"pvsinit",
"pvsmaska",
"pvsmix",
"pvsmooth",
- "pvsosc",
- "pvsout",
- "pvspitch",
+ "pvsosc",
+ "pvsout",
+ "pvspitch",
"pvstencil",
"pvsvoc",
"pvsynth",
@@ -719,7 +719,7 @@ const char *code_keywords[] = { // List of known C/C++ keywords...
"s32b14",
"samphold",
"sandpaper",
- "scale",
+ "scale",
"scanhammer",
"scans",
"scantable",
@@ -930,12 +930,12 @@ const char *code_keywords[] = { // List of known C/C++ keywords...
"upsamp",
"urd",
"vadd",
- "vadd_i",
+ "vadd_i",
"vaddv",
- "vaddv_i",
- "vaget",
+ "vaddv_i",
+ "vaget",
"valpass",
- "vaset",
+ "vaset",
"vbap16",
"vbap16move",
"vbap4",
@@ -1100,19 +1100,19 @@ const char *code_types[] = { // csd tags
"FLvalue",
"ctrlinit",
"else",
- "elseif",
+ "elseif",
"endif",
- "ftgen",
+ "ftgen",
"if",
- "kr",
- "ksmps",
- "massign",
- "nchnls",
- "pgmassign",
- "pset",
- "seed",
- "sr",
- "strset",
+ "kr",
+ "ksmps",
+ "massign",
+ "nchnls",
+ "pgmassign",
+ "pset",
+ "seed",
+ "sr",
+ "strset",
"then"
};
@@ -1122,11 +1122,11 @@ const char *code_types[] = { // csd tags
//
extern "C" {
- int
- compare_keywords(const void *a,
- const void *b) {
- return (strcmp(*((const char **)a), *((const char **)b)));
- }
+ int
+ compare_keywords(const void *a,
+ const void *b) {
+ return (strcmp(*((const char **)a), *((const char **)b)));
+ }
}
//
@@ -1135,14 +1135,13 @@ extern "C" {
void
style_parse(const char *text,
- char *style,
+ char *style,
int length) {
- char current;
- int col;
- int last;
- char buf[255],
- *bufptr;
- const char *temp;
+ char current;
+ int col;
+ int last;
+ char buf[255], *bufptr;
+ const char *temp;
// Style letters:
//
@@ -1154,34 +1153,37 @@ style_parse(const char *text,
// F - Types
// G - Keywords
- for (current = *style, col = 0, last = 0; length > 0; length --, text ++) {
- if (current == 'B' || current == 'F' || current == 'G') current = 'A';
- if (current == 'A') {
- // Check for directives, comments, strings, and keywords...
- if (col == 0 && (*text == '#' || *text == '<')) {
- // Set style to directive
- current = 'E';
- } else if (strncmp(text, ";", 1) == 0) {
- current = 'B';
- for (; length > 0 && *text != '\n'; length --, text ++) *style++ = 'B';
-
- if (length == 0) break;
- } else if (strncmp(text, "/*", 2) == 0) {
- current = 'C';
- } else if (strncmp(text, "\\\"", 2) == 0) {
- // Quoted quote...
- *style++ = current;
- *style++ = current;
- text ++;
- length --;
- col += 2;
- continue;
- } else if (*text == '\"') {
- current = 'D';
- } else if (!last && (( islower(*text) || isupper(*text) ) || *text == '_')) {
- // Might be a keyword...
- for (temp = text, bufptr = buf;
- (( islower(*temp) || isupper(*temp) ) || *temp == '_') && bufptr < (buf + sizeof(buf) - 1);
+ for (current = *style, col = 0, last = 0; length > 0; length --, text ++) {
+ if (current == 'B' || current == 'F' || current == 'G') current = 'A';
+ if (current == 'A') {
+ // Check for directives, comments, strings, and keywords...
+ if (col == 0 && (*text == '#' || *text == '<')) {
+ // Set style to directive
+ current = 'E';
+ } else if (strncmp(text, ";", 1) == 0) {
+ current = 'B';
+ for (; length > 0 && *text != '\n'; length --, text ++) *style++ = 'B';
+
+ if (length == 0) break;
+ } else if (strncmp(text, "/*", 2) == 0) {
+ current = 'C';
+ } else if (strncmp(text, "\\\"", 2) == 0) {
+ // Quoted quote...
+ *style++ = current;
+ *style++ = current;
+ text ++;
+ length --;
+ col += 2;
+ continue;
+ } else if (*text == '\"') {
+ current = 'D';
+ } else if (!last && (( islower(*text) || isupper(*text) ) ||
+ *text == '_')) {
+ // Might be a keyword...
+ for (temp = text, bufptr = buf;
+ (( islower(*temp) ||
+ isupper(*temp) ) ||
+ *temp == '_') && bufptr < (buf + sizeof(buf) - 1);
*bufptr++ = *temp++);
if (!( islower(*temp) || isupper(*temp) ) && *temp != '_') {
@@ -1270,20 +1272,20 @@ style_parse(const char *text,
void
style_init(void) {
- char *style = new char[textbuf->length() + 1];
- char *text = textbuf->text();
+ char *style = new char[textbuf->length() + 1];
+ char *text = textbuf->text();
- memset(style, 'A', textbuf->length());
- style[textbuf->length()] = '\0';
+ memset(style, 'A', textbuf->length());
+ style[textbuf->length()] = '\0';
- if (!stylebuf) stylebuf = new Fl_Text_Buffer(textbuf->length());
+ if (!stylebuf) stylebuf = new Fl_Text_Buffer(textbuf->length());
- style_parse(text, style, textbuf->length());
+ style_parse(text, style, textbuf->length());
- stylebuf->text(style);
- delete[] style;
- free(text);
+ stylebuf->text(style);
+ delete[] style;
+ free(text);
}
@@ -1302,88 +1304,88 @@ style_unfinished_cb(int, void*) {
void
style_update(int pos, // I - Position of update
- int nInserted, // I - Number of inserted chars
+ int nInserted, // I - Number of inserted chars
int nDeleted, // I - Number of deleted chars
- int /*nRestyled*/, // I - Number of restyled chars
+ int /*nRestyled*/, // I - Number of restyled chars
const char * /*deletedText*/,// I - Text that was deleted
- void *cbArg) { // I - Callback data
- int start, // Start of text
- end; // End of text
- char last, // Last style on line
- *style, // Style data
- *text; // Text data
+ void *cbArg) { // I - Callback data
+ int start, // Start of text
+ end; // End of text
+ char last, // Last style on line
+ *style, // Style data
+ *text; // Text data
// If this is just a selection change, just unselect the style buffer...
- if (nInserted == 0 && nDeleted == 0) {
- stylebuf->unselect();
- return;
- }
-
- // Track changes in the text buffer...
- if (nInserted > 0) {
- // Insert characters into the style buffer...
- style = new char[nInserted + 1];
- memset(style, 'A', nInserted);
- style[nInserted] = '\0';
-
- stylebuf->replace(pos, pos + nDeleted, style);
- delete[] style;
- } else {
- // Just delete characters in the style buffer...
- stylebuf->remove(pos, pos + nDeleted);
- }
-
- // Select the area that was just updated to avoid unnecessary
- // callbacks...
- stylebuf->select(pos, pos + nInserted - nDeleted);
-
- // Re-parse the changed region; we do this by parsing from the
- // beginning of the previous line of the changed region to the end of
- // the line of the changed region... Then we check the last
- // style character and keep updating if we have a multi-line
- // comment character...
- start = textbuf->line_start(pos);
-// if (start > 0) start = textbuf->line_start(start - 1);
- end = textbuf->line_end(pos + nInserted);
- text = textbuf->text_range(start, end);
- style = stylebuf->text_range(start, end);
- if (start==end)
- last = 0;
- else
- last = style[end - start - 1];
+ if (nInserted == 0 && nDeleted == 0) {
+ stylebuf->unselect();
+ return;
+ }
+
+ // Track changes in the text buffer...
+ if (nInserted > 0) {
+ // Insert characters into the style buffer...
+ style = new char[nInserted + 1];
+ memset(style, 'A', nInserted);
+ style[nInserted] = '\0';
+
+ stylebuf->replace(pos, pos + nDeleted, style);
+ delete[] style;
+ } else {
+ // Just delete characters in the style buffer...
+ stylebuf->remove(pos, pos + nDeleted);
+ }
+
+ // Select the area that was just updated to avoid unnecessary
+ // callbacks...
+ stylebuf->select(pos, pos + nInserted - nDeleted);
+
+ // Re-parse the changed region; we do this by parsing from the
+ // beginning of the previous line of the changed region to the end of
+ // the line of the changed region... Then we check the last
+ // style character and keep updating if we have a multi-line
+ // comment character...
+ start = textbuf->line_start(pos);
+ // if (start > 0) start = textbuf->line_start(start - 1);
+ end = textbuf->line_end(pos + nInserted);
+ text = textbuf->text_range(start, end);
+ style = stylebuf->text_range(start, end);
+ if (start==end)
+ last = 0;
+ else
+ last = style[end - start - 1];
// printf("start = %d, end = %d, text = \"%s\", style = \"%s\", last='%c'...\n",
// start, end, text, style, last);
- style_parse(text, style, end - start);
+ style_parse(text, style, end - start);
// printf("new style = \"%s\", new last='%c'...\n",
// style, style[end - start - 1]);
- stylebuf->replace(start, end, style);
- ((Fl_Text_Editor *)cbArg)->redisplay_range(start, end);
+ stylebuf->replace(start, end, style);
+ ((Fl_Text_Editor *)cbArg)->redisplay_range(start, end);
- if (start==end || last != style[end - start - 1]) {
+ if (start==end || last != style[end - start - 1]) {
// printf("Recalculate the rest of the buffer style\n");
// Either the user deleted some text, or the last character
// on the line changed styles, so reparse the
// remainder of the buffer...
- free(text);
- free(style);
+ free(text);
+ free(style);
- end = textbuf->length();
- text = textbuf->text_range(start, end);
- style = stylebuf->text_range(start, end);
+ end = textbuf->length();
+ text = textbuf->text_range(start, end);
+ style = stylebuf->text_range(start, end);
- style_parse(text, style, end - start);
+ style_parse(text, style, end - start);
- stylebuf->replace(start, end, style);
- ((Fl_Text_Editor *)cbArg)->redisplay_range(start, end);
- }
+ stylebuf->replace(start, end, style);
+ ((Fl_Text_Editor *)cbArg)->redisplay_range(start, end);
+ }
- free(text);
- free(style);
+ free(text);
+ free(style);
}
@@ -1396,369 +1398,369 @@ void replace2_cb(Fl_Widget*, void*);
void replcan_cb(Fl_Widget*, void*);
class EditorWindow : public Fl_Double_Window {
- public:
- EditorWindow(int w, int h, const char* t);
- ~EditorWindow();
-
- Fl_Window *replace_dlg;
- Fl_Input *replace_find;
- Fl_Input *replace_with;
- Fl_Button *replace_all;
- Fl_Return_Button *replace_next;
- Fl_Button *replace_cancel;
-
- Fl_Text_Editor *editor;
- char search[256];
+public:
+ EditorWindow(int w, int h, const char* t);
+ ~EditorWindow();
+
+ Fl_Window *replace_dlg;
+ Fl_Input *replace_find;
+ Fl_Input *replace_with;
+ Fl_Button *replace_all;
+ Fl_Return_Button *replace_next;
+ Fl_Button *replace_cancel;
+
+ Fl_Text_Editor *editor;
+ char search[256];
};
EditorWindow::EditorWindow(int w, int h, const char* t) :
-Fl_Double_Window(w, h, t) {
- replace_dlg = new Fl_Window(300, 105, "Replace");
- replace_find = new Fl_Input(80, 10, 210, 25, "Find:");
- replace_find->align(FL_ALIGN_LEFT);
-
- replace_with = new Fl_Input(80, 40, 210, 25, "Replace:");
- replace_with->align(FL_ALIGN_LEFT);
-
- replace_all = new Fl_Button(10, 70, 90, 25, "Replace All");
- replace_all->callback((Fl_Callback *)replall_cb, this);
-
- replace_next = new Fl_Return_Button(105, 70, 120, 25, "Replace Next");
- replace_next->callback((Fl_Callback *)replace2_cb, this);
-
- replace_cancel = new Fl_Button(230, 70, 60, 25, "Cancel");
- replace_cancel->callback((Fl_Callback *)replcan_cb, this);
- replace_dlg->end();
- replace_dlg->set_non_modal();
- editor = 0;
- *search = (char)0;
+ Fl_Double_Window(w, h, t) {
+ replace_dlg = new Fl_Window(300, 105, "Replace");
+ replace_find = new Fl_Input(80, 10, 210, 25, "Find:");
+ replace_find->align(FL_ALIGN_LEFT);
+
+ replace_with = new Fl_Input(80, 40, 210, 25, "Replace:");
+ replace_with->align(FL_ALIGN_LEFT);
+
+ replace_all = new Fl_Button(10, 70, 90, 25, "Replace All");
+ replace_all->callback((Fl_Callback *)replall_cb, this);
+
+ replace_next = new Fl_Return_Button(105, 70, 120, 25, "Replace Next");
+ replace_next->callback((Fl_Callback *)replace2_cb, this);
+
+ replace_cancel = new Fl_Button(230, 70, 60, 25, "Cancel");
+ replace_cancel->callback((Fl_Callback *)replcan_cb, this);
+ replace_dlg->end();
+ replace_dlg->set_non_modal();
+ editor = 0;
+ *search = (char)0;
}
EditorWindow::~EditorWindow() {
- delete replace_dlg;
+ delete replace_dlg;
}
int check_save(void) {
- if (!changed) return 1;
+ if (!changed) return 1;
- int r = fl_choice("The current file has not been saved.\n"
- "Would you like to save it now?",
- "Cancel", "Save", "Don't Save");
+ int r = fl_choice("The current file has not been saved.\n"
+ "Would you like to save it now?",
+ "Cancel", "Save", "Don't Save");
- if (r == 1) {
- save_cb(); // Save the file...
- return !changed;
- }
+ if (r == 1) {
+ save_cb(); // Save the file...
+ return !changed;
+ }
- return (r == 2) ? 1 : 0;
+ return (r == 2) ? 1 : 0;
}
int loading = 0;
void load_file(char *newfile, int ipos) {
- loading = 1;
- int insert = (ipos != -1);
- changed = insert;
- if (!insert) strcpy(filename, "");
- int r;
- if (!insert) r = textbuf->loadfile(newfile);
- else r = textbuf->insertfile(newfile, ipos);
- if (r)
- fl_alert("Error reading from file \'%s\':\n%s.", newfile, strerror(errno));
- else
- if (!insert) strcpy(filename, newfile);
- loading = 0;
- textbuf->call_modify_callbacks();
+ loading = 1;
+ int insert = (ipos != -1);
+ changed = insert;
+ if (!insert) strcpy(filename, "");
+ int r;
+ if (!insert) r = textbuf->loadfile(newfile);
+ else r = textbuf->insertfile(newfile, ipos);
+ if (r)
+ fl_alert("Error reading from file \'%s\':\n%s.", newfile, strerror(errno));
+ else
+ if (!insert) strcpy(filename, newfile);
+ loading = 0;
+ textbuf->call_modify_callbacks();
}
void save_file(char *newfile) {
- if (textbuf->savefile(newfile))
- fl_alert("Error writing to file \'%s\':\n%s.", newfile, strerror(errno));
- else
- strcpy(filename, newfile);
- changed = 0;
- textbuf->call_modify_callbacks();
+ if (textbuf->savefile(newfile))
+ fl_alert("Error writing to file \'%s\':\n%s.", newfile, strerror(errno));
+ else
+ strcpy(filename, newfile);
+ changed = 0;
+ textbuf->call_modify_callbacks();
}
void copy_cb(Fl_Widget*, void* v) {
- EditorWindow* e = (EditorWindow*)v;
- Fl_Text_Editor::kf_copy(0, e->editor);
+ EditorWindow* e = (EditorWindow*)v;
+ Fl_Text_Editor::kf_copy(0, e->editor);
}
void cut_cb(Fl_Widget*, void* v) {
- EditorWindow* e = (EditorWindow*)v;
- Fl_Text_Editor::kf_cut(0, e->editor);
+ EditorWindow* e = (EditorWindow*)v;
+ Fl_Text_Editor::kf_cut(0, e->editor);
}
void delete_cb(Fl_Widget*, void*) {
- textbuf->remove_selection();
+ textbuf->remove_selection();
}
void find_cb(Fl_Widget* w, void* v) {
- EditorWindow* e = (EditorWindow*)v;
- const char *val;
-
- val = fl_input("Search String:", e->search);
- if (val != NULL) {
- // User entered a string - go find it!
- strcpy(e->search, val);
- find2_cb(w, v);
- }
+ EditorWindow* e = (EditorWindow*)v;
+ const char *val;
+
+ val = fl_input("Search String:", e->search);
+ if (val != NULL) {
+ // User entered a string - go find it!
+ strcpy(e->search, val);
+ find2_cb(w, v);
+ }
}
void find2_cb(Fl_Widget* w, void* v) {
- EditorWindow* e = (EditorWindow*)v;
- if (e->search[0] == '\0') {
- // Search string is blank; get a new one...
- find_cb(w, v);
- return;
- }
-
- int pos = e->editor->insert_position();
- int found = textbuf->search_forward(pos, e->search, &pos);
- if (found) {
- // Found a match; select and update the position...
- textbuf->select(pos, pos+strlen(e->search));
- e->editor->insert_position(pos+strlen(e->search));
- e->editor->show_insert_position();
- }
- else fl_alert("No occurrences of \'%s\' found!", e->search);
+ EditorWindow* e = (EditorWindow*)v;
+ if (e->search[0] == '\0') {
+ // Search string is blank; get a new one...
+ find_cb(w, v);
+ return;
+ }
+
+ int pos = e->editor->insert_position();
+ int found = textbuf->search_forward(pos, e->search, &pos);
+ if (found) {
+ // Found a match; select and update the position...
+ textbuf->select(pos, pos+strlen(e->search));
+ e->editor->insert_position(pos+strlen(e->search));
+ e->editor->show_insert_position();
+ }
+ else fl_alert("No occurrences of \'%s\' found!", e->search);
}
void set_title(Fl_Window* w) {
- if (filename[0] == '\0') strcpy(title, "Untitled");
- else {
- char *slash;
- slash = strrchr(filename, '/');
+ if (filename[0] == '\0') strcpy(title, "Untitled");
+ else {
+ char *slash;
+ slash = strrchr(filename, '/');
#ifdef WIN32
- if (slash == NULL) slash = strrchr(filename, '\\');
+ if (slash == NULL) slash = strrchr(filename, '\\');
#endif
- if (slash != NULL) strcpy(title, slash + 1);
- else strcpy(title, filename);
- }
+ if (slash != NULL) strcpy(title, slash + 1);
+ else strcpy(title, filename);
+ }
- if (changed) strcat(title, " (modified)");
+ if (changed) strcat(title, " (modified)");
- w->label(title);
+ w->label(title);
}
void changed_cb(int, int nInserted, int nDeleted,int, const char*, void* v) {
- if ((nInserted || nDeleted) && !loading) changed = 1;
- EditorWindow *w = (EditorWindow *)v;
- set_title(w);
- if (loading) w->editor->show_insert_position();
+ if ((nInserted || nDeleted) && !loading) changed = 1;
+ EditorWindow *w = (EditorWindow *)v;
+ set_title(w);
+ if (loading) w->editor->show_insert_position();
}
void new_cb(Fl_Widget*, void*) {
- if (!check_save()) return;
+ if (!check_save()) return;
- filename[0] = '\0';
- textbuf->select(0, textbuf->length());
- textbuf->remove_selection();
- changed = 0;
- textbuf->call_modify_callbacks();
+ filename[0] = '\0';
+ textbuf->select(0, textbuf->length());
+ textbuf->remove_selection();
+ changed = 0;
+ textbuf->call_modify_callbacks();
}
void open_cb(Fl_Widget*, void*) {
- if (!check_save()) return;
+ if (!check_save()) return;
- char *newfile = fl_file_chooser("Open File?", "*", filename);
- if (newfile != NULL) load_file(newfile, -1);
+ char *newfile = fl_file_chooser("Open File?", "*", filename);
+ if (newfile != NULL) load_file(newfile, -1);
}
void insert_cb(Fl_Widget*, void *v) {
- char *newfile = fl_file_chooser("Insert File?", "*", filename);
- EditorWindow *w = (EditorWindow *)v;
- if (newfile != NULL) load_file(newfile, w->editor->insert_position());
+ char *newfile = fl_file_chooser("Insert File?", "*", filename);
+ EditorWindow *w = (EditorWindow *)v;
+ if (newfile != NULL) load_file(newfile, w->editor->insert_position());
}
void paste_cb(Fl_Widget*, void* v) {
- EditorWindow* e = (EditorWindow*)v;
- Fl_Text_Editor::kf_paste(0, e->editor);
+ EditorWindow* e = (EditorWindow*)v;
+ Fl_Text_Editor::kf_paste(0, e->editor);
}
int num_windows = 0;
void close_cb(Fl_Widget*, void* v) {
- Fl_Window* w = (Fl_Window*)v;
- if (num_windows == 1 && !check_save()) {
- return;
- }
-
- w->hide();
- textbuf->remove_modify_callback(changed_cb, w);
- delete w;
- num_windows--;
- if (!num_windows) exit(0);
+ Fl_Window* w = (Fl_Window*)v;
+ if (num_windows == 1 && !check_save()) {
+ return;
+ }
+
+ w->hide();
+ textbuf->remove_modify_callback(changed_cb, w);
+ delete w;
+ num_windows--;
+ if (!num_windows) exit(0);
}
void quit_cb(Fl_Widget*, void*) {
- if (changed && !check_save())
- return;
+ if (changed && !check_save())
+ return;
- exit(0);
+ exit(0);
}
void replace_cb(Fl_Widget*, void* v) {
- EditorWindow* e = (EditorWindow*)v;
- e->replace_dlg->show();
+ EditorWindow* e = (EditorWindow*)v;
+ e->replace_dlg->show();
}
void replace2_cb(Fl_Widget*, void* v) {
- EditorWindow* e = (EditorWindow*)v;
- const char *find = e->replace_find->value();
- const char *replace = e->replace_with->value();
-
- if (find[0] == '\0') {
- // Search string is blank; get a new one...
- e->replace_dlg->show();
- return;
- }
-
- e->replace_dlg->hide();
-
- int pos = e->editor->insert_position();
- int found = textbuf->search_forward(pos, find, &pos);
-
- if (found) {
- // Found a match; update the position and replace text...
- textbuf->select(pos, pos+strlen(find));
- textbuf->remove_selection();
- textbuf->insert(pos, replace);
- textbuf->select(pos, pos+strlen(replace));
- e->editor->insert_position(pos+strlen(replace));
- e->editor->show_insert_position();
- }
- else fl_alert("No occurrences of \'%s\' found!", find);
+ EditorWindow* e = (EditorWindow*)v;
+ const char *find = e->replace_find->value();
+ const char *replace = e->replace_with->value();
+
+ if (find[0] == '\0') {
+ // Search string is blank; get a new one...
+ e->replace_dlg->show();
+ return;
+ }
+
+ e->replace_dlg->hide();
+
+ int pos = e->editor->insert_position();
+ int found = textbuf->search_forward(pos, find, &pos);
+
+ if (found) {
+ // Found a match; update the position and replace text...
+ textbuf->select(pos, pos+strlen(find));
+ textbuf->remove_selection();
+ textbuf->insert(pos, replace);
+ textbuf->select(pos, pos+strlen(replace));
+ e->editor->insert_position(pos+strlen(replace));
+ e->editor->show_insert_position();
+ }
+ else fl_alert("No occurrences of \'%s\' found!", find);
}
void replall_cb(Fl_Widget*, void* v) {
- EditorWindow* e = (EditorWindow*)v;
- const char *find = e->replace_find->value();
- const char *replace = e->replace_with->value();
-
- find = e->replace_find->value();
- if (find[0] == '\0') {
- // Search string is blank; get a new one...
- e->replace_dlg->show();
- return;
- }
-
- e->replace_dlg->hide();
-
- e->editor->insert_position(0);
- int times = 0;
-
- // Loop through the whole string
- for (int found = 1; found;) {
- int pos = e->editor->insert_position();
- found = textbuf->search_forward(pos, find, &pos);
-
- if (found) {
- // Found a match; update the position and replace text...
- textbuf->select(pos, pos+strlen(find));
- textbuf->remove_selection();
- textbuf->insert(pos, replace);
- e->editor->insert_position(pos+strlen(replace));
- e->editor->show_insert_position();
- times++;
- }
- }
-
- if (times) fl_message("Replaced %d occurrences.", times);
- else fl_alert("No occurrences of \'%s\' found!", find);
+ EditorWindow* e = (EditorWindow*)v;
+ const char *find = e->replace_find->value();
+ const char *replace = e->replace_with->value();
+
+ find = e->replace_find->value();
+ if (find[0] == '\0') {
+ // Search string is blank; get a new one...
+ e->replace_dlg->show();
+ return;
+ }
+
+ e->replace_dlg->hide();
+
+ e->editor->insert_position(0);
+ int times = 0;
+
+ // Loop through the whole string
+ for (int found = 1; found;) {
+ int pos = e->editor->insert_position();
+ found = textbuf->search_forward(pos, find, &pos);
+
+ if (found) {
+ // Found a match; update the position and replace text...
+ textbuf->select(pos, pos+strlen(find));
+ textbuf->remove_selection();
+ textbuf->insert(pos, replace);
+ e->editor->insert_position(pos+strlen(replace));
+ e->editor->show_insert_position();
+ times++;
+ }
+ }
+
+ if (times) fl_message("Replaced %d occurrences.", times);
+ else fl_alert("No occurrences of \'%s\' found!", find);
}
void replcan_cb(Fl_Widget*, void* v) {
- EditorWindow* e = (EditorWindow*)v;
- e->replace_dlg->hide();
+ EditorWindow* e = (EditorWindow*)v;
+ e->replace_dlg->hide();
}
void save_cb() {
- if (filename[0] == '\0') {
- // No filename - get one!
- saveas_cb();
- return;
- }
- else save_file(filename);
+ if (filename[0] == '\0') {
+ // No filename - get one!
+ saveas_cb();
+ return;
+ }
+ else save_file(filename);
}
void saveas_cb() {
- char *newfile;
+ char *newfile;
- newfile = fl_file_chooser("Save File As?", "*", filename);
- if (newfile != NULL) save_file(newfile);
+ newfile = fl_file_chooser("Save File As?", "*", filename);
+ if (newfile != NULL) save_file(newfile);
}
Fl_Window* new_view();
void view_cb(Fl_Widget*, void*) {
- Fl_Window* w = new_view();
- w->show();
+ Fl_Window* w = new_view();
+ w->show();
}
Fl_Menu_Item menuitems[] = {
- { "&File", 0, 0, 0, FL_SUBMENU },
- { "&New File", 0, (Fl_Callback *)new_cb },
- { "&Open File...", FL_CTRL + 'o', (Fl_Callback *)open_cb },
- { "&Insert File...", FL_CTRL + 'i', (Fl_Callback *)insert_cb, 0,
-FL_MENU_DIVIDER },
- { "&Save File", FL_CTRL + 's', (Fl_Callback *)save_cb },
- { "Save File &As...", FL_CTRL + FL_SHIFT + 's', (Fl_Callback
-*)saveas_cb, 0, FL_MENU_DIVIDER },
- { "New &View", FL_ALT + 'v', (Fl_Callback *)view_cb, 0 },
- { "&Close View", FL_CTRL + 'w', (Fl_Callback *)close_cb, 0,
-FL_MENU_DIVIDER },
- { "E&xit", FL_CTRL + 'q', (Fl_Callback *)quit_cb, 0 },
- { 0 },
-
- { "&Edit", 0, 0, 0, FL_SUBMENU },
- { "Cu&t", FL_CTRL + 'x', (Fl_Callback *)cut_cb },
- { "&Copy", FL_CTRL + 'c', (Fl_Callback *)copy_cb },
- { "&Paste", FL_CTRL + 'v', (Fl_Callback *)paste_cb },
- { "&Delete", 0, (Fl_Callback *)delete_cb },
- { 0 },
-
- { "&Search", 0, 0, 0, FL_SUBMENU },
- { "&Find...", FL_CTRL + 'f', (Fl_Callback *)find_cb },
- { "F&ind Again", FL_CTRL + 'g', find2_cb },
- { "&Replace...", FL_CTRL + 'r', replace_cb },
- { "Re&place Again", FL_CTRL + 't', replace2_cb },
- { 0 },
-
- { 0 }
+ { "&File", 0, 0, 0, FL_SUBMENU },
+ { "&New File", 0, (Fl_Callback *)new_cb },
+ { "&Open File...", FL_CTRL + 'o', (Fl_Callback *)open_cb },
+ { "&Insert File...", FL_CTRL + 'i', (Fl_Callback *)insert_cb, 0,
+ FL_MENU_DIVIDER },
+ { "&Save File", FL_CTRL + 's', (Fl_Callback *)save_cb },
+ { "Save File &As...", FL_CTRL + FL_SHIFT + 's',
+ (Fl_Callback *)saveas_cb, 0, FL_MENU_DIVIDER },
+ { "New &View", FL_ALT + 'v', (Fl_Callback *)view_cb, 0 },
+ { "&Close View", FL_CTRL + 'w', (Fl_Callback *)close_cb, 0,
+ FL_MENU_DIVIDER },
+ { "E&xit", FL_CTRL + 'q', (Fl_Callback *)quit_cb, 0 },
+ { 0 },
+
+ { "&Edit", 0, 0, 0, FL_SUBMENU },
+ { "Cu&t", FL_CTRL + 'x', (Fl_Callback *)cut_cb },
+ { "&Copy", FL_CTRL + 'c', (Fl_Callback *)copy_cb },
+ { "&Paste", FL_CTRL + 'v', (Fl_Callback *)paste_cb },
+ { "&Delete", 0, (Fl_Callback *)delete_cb },
+ { 0 },
+
+ { "&Search", 0, 0, 0, FL_SUBMENU },
+ { "&Find...", FL_CTRL + 'f', (Fl_Callback *)find_cb },
+ { "F&ind Again", FL_CTRL + 'g', find2_cb },
+ { "&Replace...", FL_CTRL + 'r', replace_cb },
+ { "Re&place Again", FL_CTRL + 't', replace2_cb },
+ { 0 },
+
+ { 0 }
};
Fl_Window* new_view() {
- EditorWindow* w = new EditorWindow(660, 400, title);
- w->begin();
- Fl_Menu_Bar* m = new Fl_Menu_Bar(0, 0, 660, 30);
- m->copy(menuitems, w);
- w->editor = new Fl_Text_Editor(0, 30, 660, 370);
- w->editor->buffer(textbuf);
- w->editor->highlight_data(stylebuf, styletable,
- sizeof(styletable) / sizeof(styletable[0]),
+ EditorWindow* w = new EditorWindow(660, 400, title);
+ w->begin();
+ Fl_Menu_Bar* m = new Fl_Menu_Bar(0, 0, 660, 30);
+ m->copy(menuitems, w);
+ w->editor = new Fl_Text_Editor(0, 30, 660, 370);
+ w->editor->buffer(textbuf);
+ w->editor->highlight_data(stylebuf, styletable,
+ sizeof(styletable) / sizeof(styletable[0]),
'A', style_unfinished_cb, 0);
- w->editor->textfont(FL_COURIER);
- w->end();
- w->resizable(w->editor);
- w->callback((Fl_Callback *)close_cb, w);
-
- textbuf->add_modify_callback(style_update, w->editor);
- textbuf->add_modify_callback(changed_cb, w);
- textbuf->call_modify_callbacks();
- num_windows++;
- return w;
+ w->editor->textfont(FL_COURIER);
+ w->end();
+ w->resizable(w->editor);
+ w->callback((Fl_Callback *)close_cb, w);
+
+ textbuf->add_modify_callback(style_update, w->editor);
+ textbuf->add_modify_callback(changed_cb, w);
+ textbuf->call_modify_callbacks();
+ num_windows++;
+ return w;
}
int main(int argc, char **argv) {
- textbuf = new Fl_Text_Buffer;
- style_init();
+ textbuf = new Fl_Text_Buffer;
+ style_init();
- Fl_Window* window = new_view();
+ Fl_Window* window = new_view();
- window->show(1, argv);
+ window->show(1, argv);
- if (argc > 1) load_file(argv[1], -1);
+ if (argc > 1) load_file(argv[1], -1);
- return Fl::run();
+ return Fl::run();
}
diff --git a/frontends/csladspa/csladspa.cpp b/frontends/csladspa/csladspa.cpp
index 91cf093..567d184 100644
--- a/frontends/csladspa/csladspa.cpp
+++ b/frontends/csladspa/csladspa.cpp
@@ -32,16 +32,6 @@
#include "ladspa.h"
using namespace std;
-
-
-#ifdef WIN32
-#define PUBLIC __declspec(dllexport)
-#elif defined(__GNUC__)
-#define PUBLIC __attribute__ ( (visibility("default")) )
-#else
-#define PUBLIC
-#endif
-
#define MAXLINESIZE 4098
#define MAXPORTS 64
@@ -419,18 +409,18 @@ unsigned int CountCSD(char **csdnames)
DIR *dip = NULL;
struct dirent *dit;
string temp, name, path;
- char *ladspa_path;
int i = 0;
- unsigned int indx = 0;
+ size_t indx = 0;
+ char ladspa_path[1024] = "";
#ifndef MACOSX
- ladspa_path = getenv("LADSPA_PATH");
+ strcpy(ladspa_path, getenv("LADSPA_PATH"));
#else
- ladspa_path = "/Library/Audio/Plug-Ins/LADSPA";
+ strcpy(ladspa_path, "/Library/Audio/Plug-Ins/LADSPA");
#endif
// if no LADSPA_PATH attempt to open
// current directory
- if(ladspa_path == NULL) dip = opendir(".");
+ if(strlen(ladspa_path) == 0) dip = opendir(".");
else {
path = ladspa_path;
#ifdef WIN32
diff --git a/install.py b/install.py
index b1a23ea..0dc588c 100755
--- a/install.py
+++ b/install.py
@@ -24,7 +24,7 @@ exeFiles1 = ['csound', 'csound5gui', 'CsoundVST', 'winsound',
'het_export', 'het_import', 'hetro', 'lpanal',
'lpc_export', 'lpc_import', 'mixer', 'pvanal',
'pv_export', 'pv_import', 'atsa',
- 'pvlook', 'scale', 'sndinfo', 'srconv', 'beats',
+ 'pvlook', 'scale', 'sndinfo', 'srconv', 'csbeats',
'scsort', 'extract', 'cs', 'csb64enc', 'makecsd', 'scot']
exeFiles2 = ['brkpt', 'linseg', 'tabdes']
diff --git a/installer/macosx/Distribution.dist b/installer/macosx/Distribution.dist
new file mode 100644
index 0000000..8a660a6
--- /dev/null
+++ b/installer/macosx/Distribution.dist
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<installer-gui-script minSpecVersion="1">
+
+ <title>Csound 5 Environment</title>
+ <options customize="both" allow-external-scripts="no"/>
+ <domains enable_anywhere="true" enable_localSystem="true"/>
+ <background file="background.tiff" scaling="proportional" alignment="bottomleft" />
+ <welcome file="Welcome.rtf" />
+ <readme file="ReadMe.rtf" />
+ <license file="License.rtf" />
+
+ <pkg-ref id="com.csound.csound5Environment.csoundApps"/>
+ <pkg-ref id="com.csound.csound5Environment.csoundApps64"/>
+ <pkg-ref id="com.csound.csound5Environment.supportLibs"/>
+ <pkg-ref id="com.csound.csound5Environment.csoundLib"/>
+ <pkg-ref id="com.csound.csound5Environment.csoundLib64"/>
+ <choices-outline>
+ <line choice="com.csound.csound5Environment.csoundApps"/>
+ <line choice="com.csound.csound5Environment.csoundApps64"/>
+ <line choice="com.csound.csound5Environment.supportLibs"/>
+ <line choice="com.csound.csound5Environment.csoundLib"/>
+ <line choice="com.csound.csound5Environment.csoundLib64"/>
+ </choices-outline>
+
+ <choice id="com.csound.csound5Environment.csoundApps"
+ visible="true"
+ title="Csound Command Line Applications (floats)">
+ <pkg-ref id="com.csound.csound5Environment.csoundApps"/>
+ </choice>
+ <choice id="com.csound.csound5Environment.csoundApps64"
+ visible="true"
+ title="Csound Command Line Applications (doubles)">
+ <pkg-ref id="com.csound.csound5Environment.csoundApps64"/>
+ </choice>
+ <choice id="com.csound.csound5Environment.supportLibs"
+ visible="true"
+ title="Support Libraries">
+ <pkg-ref id="com.csound.csound5Environment.supportLibs"/>
+ </choice>
+ <choice id="com.csound.csound5Environment.csoundLib"
+ visible="true"
+ title="Csound Library (floats)">
+ <pkg-ref id="com.csound.csound5Environment.csoundLib"/>
+ </choice>
+ <choice id="com.csound.csound5Environment.csoundLib64"
+ visible="true"
+ title="Csound Library (doubles)">
+ <pkg-ref id="com.csound.csound5Environment.csoundLib64"/>
+ </choice>
+
+ <pkg-ref id="com.csound.csound5Environment.csoundApps" version="1" onConclusion="none" auth="root">CsoundApps.pkg</pkg-ref>
+ <pkg-ref id="com.csound.csound5Environment.csoundApps64" version="1" onConclusion="none" auth="root">CsoundApps64.pkg</pkg-ref>
+ <pkg-ref id="com.csound.csound5Environment.supportLibs" version="1" onConclusion="none" auth="root">SupportLibs.pkg</pkg-ref>
+ <pkg-ref id="com.csound.csound5Environment.csoundLib" version="1" onConclusion="none" auth="root">CsoundLib.pkg</pkg-ref>
+ <pkg-ref id="com.csound.csound5Environment.csoundLib64" version="1" onConclusion="none" auth="root">CsoundLib64.pkg</pkg-ref>
+</installer-gui-script>
diff --git a/installer/macosx/Makefile b/installer/macosx/Makefile
deleted file mode 100644
index dff15c2..0000000
--- a/installer/macosx/Makefile
+++ /dev/null
@@ -1,2 +0,0 @@
-installer: new_install.cxx installer.cxx installer.h
- c++ -g -o installer new_install.cxx -lfltk -lpthread -framework Carbon -framework ApplicationServices -lsupc++
diff --git a/installer/macosx/PkgResources/CsoundApps/License.rtf b/installer/macosx/PkgResources/CsoundApps/License.rtf
new file mode 100755
index 0000000..5ddd899
--- /dev/null
+++ b/installer/macosx/PkgResources/CsoundApps/License.rtf
@@ -0,0 +1,521 @@
+{\rtf1\mac\ansicpg10000\cocoartf102
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\margl1440\margr1440\vieww9000\viewh9000\viewkind0
+\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural
+
+\f0\fs24 \cf0 GNU LESSER GENERAL PUBLIC LICENSE\
+ Version 2.1, February 1999\
+\
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.\
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\
+ Everyone is permitted to copy and distribute verbatim copies\
+ of this license document, but changing it is not allowed.\
+\
+[This is the first released version of the Lesser GPL. It also counts\
+ as the successor of the GNU Library Public License, version 2, hence\
+ the version number 2.1.]\
+\
+ Preamble\
+\
+ The licenses for most software are designed to take away your\
+freedom to share and change it. By contrast, the GNU General Public\
+Licenses are intended to guarantee your freedom to share and change\
+free software--to make sure the software is free for all its users.\
+\
+ This license, the Lesser General Public License, applies to some\
+specially designated software packages--typically libraries--of the\
+Free Software Foundation and other authors who decide to use it. You\
+can use it too, but we suggest you first think carefully about whether\
+this license or the ordinary General Public License is the better\
+strategy to use in any particular case, based on the explanations below.\
+\
+ When we speak of free software, we are referring to freedom of use,\
+not price. Our General Public Licenses are designed to make sure that\
+you have the freedom to distribute copies of free software (and charge\
+for this service if you wish); that you receive source code or can get\
+it if you want it; that you can change the software and use pieces of\
+it in new free programs; and that you are informed that you can do\
+these things.\
+\
+ To protect your rights, we need to make restrictions that forbid\
+distributors to deny you these rights or to ask you to surrender these\
+rights. These restrictions translate to certain responsibilities for\
+you if you distribute copies of the library or if you modify it.\
+\
+ For example, if you distribute copies of the library, whether gratis\
+or for a fee, you must give the recipients all the rights that we gave\
+you. You must make sure that they, too, receive or can get the source\
+code. If you link other code with the library, you must provide\
+complete object files to the recipients, so that they can relink them\
+with the library after making changes to the library and recompiling\
+it. And you must show them these terms so they know their rights.\
+\
+ We protect your rights with a two-step method: (1) we copyright the\
+library, and (2) we offer you this license, which gives you legal\
+permission to copy, distribute and/or modify the library.\
+\
+ To protect each distributor, we want to make it very clear that\
+there is no warranty for the free library. Also, if the library is\
+modified by someone else and passed on, the recipients should know\
+that what they have is not the original version, so that the original\
+author's reputation will not be affected by problems that might be\
+introduced by others.\
+\
+\page \
+ Finally, software patents pose a constant threat to the existence of\
+any free program. We wish to make sure that a company cannot\
+effectively restrict the users of a free program by obtaining a\
+restrictive license from a patent holder. Therefore, we insist that\
+any patent license obtained for a version of the library must be\
+consistent with the full freedom of use specified in this license.\
+\
+ Most GNU software, including some libraries, is covered by the\
+ordinary GNU General Public License. This license, the GNU Lesser\
+General Public License, applies to certain designated libraries, and\
+is quite different from the ordinary General Public License. We use\
+this license for certain libraries in order to permit linking those\
+libraries into non-free programs.\
+\
+ When a program is linked with a library, whether statically or using\
+a shared library, the combination of the two is legally speaking a\
+combined work, a derivative of the original library. The ordinary\
+General Public License therefore permits such linking only if the\
+entire combination fits its criteria of freedom. The Lesser General\
+Public License permits more lax criteria for linking other code with\
+the library.\
+\
+ We call this license the "Lesser" General Public License because it\
+does Less to protect the user's freedom than the ordinary General\
+Public License. It also provides other free software developers Less\
+of an advantage over competing non-free programs. These disadvantages\
+are the reason we use the ordinary General Public License for many\
+libraries. However, the Lesser license provides advantages in certain\
+special circumstances.\
+\
+ For example, on rare occasions, there may be a special need to\
+encourage the widest possible use of a certain library, so that it becomes\
+a de-facto standard. To achieve this, non-free programs must be\
+allowed to use the library. A more frequent case is that a free\
+library does the same job as widely used non-free libraries. In this\
+case, there is little to gain by limiting the free library to free\
+software only, so we use the Lesser General Public License.\
+\
+ In other cases, permission to use a particular library in non-free\
+programs enables a greater number of people to use a large body of\
+free software. For example, permission to use the GNU C Library in\
+non-free programs enables many more people to use the whole GNU\
+operating system, as well as its variant, the GNU/Linux operating\
+system.\
+\
+ Although the Lesser General Public License is Less protective of the\
+users' freedom, it does ensure that the user of a program that is\
+linked with the Library has the freedom and the wherewithal to run\
+that program using a modified version of the Library.\
+\
+ The precise terms and conditions for copying, distribution and\
+modification follow. Pay close attention to the difference between a\
+"work based on the library" and a "work that uses the library". The\
+former contains code derived from the library, whereas the latter must\
+be combined with the library in order to run.\
+\
+\page \
+ GNU LESSER GENERAL PUBLIC LICENSE\
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\
+\
+ 0. This License Agreement applies to any software library or other\
+program which contains a notice placed by the copyright holder or\
+other authorized party saying it may be distributed under the terms of\
+this Lesser General Public License (also called "this License").\
+Each licensee is addressed as "you".\
+\
+ A "library" means a collection of software functions and/or data\
+prepared so as to be conveniently linked with application programs\
+(which use some of those functions and data) to form executables.\
+\
+ The "Library", below, refers to any such software library or work\
+which has been distributed under these terms. A "work based on the\
+Library" means either the Library or any derivative work under\
+copyright law: that is to say, a work containing the Library or a\
+portion of it, either verbatim or with modifications and/or translated\
+straightforwardly into another language. (Hereinafter, translation is\
+included without limitation in the term "modification".)\
+\
+ "Source code" for a work means the preferred form of the work for\
+making modifications to it. For a library, complete source code means\
+all the source code for all modules it contains, plus any associated\
+interface definition files, plus the scripts used to control compilation\
+and installation of the library.\
+\
+ Activities other than copying, distribution and modification are not\
+covered by this License; they are outside its scope. The act of\
+running a program using the Library is not restricted, and output from\
+such a program is covered only if its contents constitute a work based\
+on the Library (independent of the use of the Library in a tool for\
+writing it). Whether that is true depends on what the Library does\
+and what the program that uses the Library does.\
+ \
+ 1. You may copy and distribute verbatim copies of the Library's\
+complete source code as you receive it, in any medium, provided that\
+you conspicuously and appropriately publish on each copy an\
+appropriate copyright notice and disclaimer of warranty; keep intact\
+all the notices that refer to this License and to the absence of any\
+warranty; and distribute a copy of this License along with the\
+Library.\
+\
+ You may charge a fee for the physical act of transferring a copy,\
+and you may at your option offer warranty protection in exchange for a\
+fee.\
+\
+\page \
+ 2. You may modify your copy or copies of the Library or any portion\
+of it, thus forming a work based on the Library, and copy and\
+distribute such modifications or work under the terms of Section 1\
+above, provided that you also meet all of these conditions:\
+\
+ a) The modified work must itself be a software library.\
+\
+ b) You must cause the files modified to carry prominent notices\
+ stating that you changed the files and the date of any change.\
+\
+ c) You must cause the whole of the work to be licensed at no\
+ charge to all third parties under the terms of this License.\
+\
+ d) If a facility in the modified Library refers to a function or a\
+ table of data to be supplied by an application program that uses\
+ the facility, other than as an argument passed when the facility\
+ is invoked, then you must make a good faith effort to ensure that,\
+ in the event an application does not supply such function or\
+ table, the facility still operates, and performs whatever part of\
+ its purpose remains meaningful.\
+\
+ (For example, a function in a library to compute square roots has\
+ a purpose that is entirely well-defined independent of the\
+ application. Therefore, Subsection 2d requires that any\
+ application-supplied function or table used by this function must\
+ be optional: if the application does not supply it, the square\
+ root function must still compute square roots.)\
+\
+These requirements apply to the modified work as a whole. If\
+identifiable sections of that work are not derived from the Library,\
+and can be reasonably considered independent and separate works in\
+themselves, then this License, and its terms, do not apply to those\
+sections when you distribute them as separate works. But when you\
+distribute the same sections as part of a whole which is a work based\
+on the Library, the distribution of the whole must be on the terms of\
+this License, whose permissions for other licensees extend to the\
+entire whole, and thus to each and every part regardless of who wrote\
+it.\
+\
+Thus, it is not the intent of this section to claim rights or contest\
+your rights to work written entirely by you; rather, the intent is to\
+exercise the right to control the distribution of derivative or\
+collective works based on the Library.\
+\
+In addition, mere aggregation of another work not based on the Library\
+with the Library (or with a work based on the Library) on a volume of\
+a storage or distribution medium does not bring the other work under\
+the scope of this License.\
+\
+ 3. You may opt to apply the terms of the ordinary GNU General Public\
+License instead of this License to a given copy of the Library. To do\
+this, you must alter all the notices that refer to this License, so\
+that they refer to the ordinary GNU General Public License, version 2,\
+instead of to this License. (If a newer version than version 2 of the\
+ordinary GNU General Public License has appeared, then you can specify\
+that version instead if you wish.) Do not make any other change in\
+these notices.\
+\
+\page \
+ Once this change is made in a given copy, it is irreversible for\
+that copy, so the ordinary GNU General Public License applies to all\
+subsequent copies and derivative works made from that copy.\
+\
+ This option is useful when you wish to copy part of the code of\
+the Library into a program that is not a library.\
+\
+ 4. You may copy and distribute the Library (or a portion or\
+derivative of it, under Section 2) in object code or executable form\
+under the terms of Sections 1 and 2 above provided that you accompany\
+it with the complete corresponding machine-readable source code, which\
+must be distributed under the terms of Sections 1 and 2 above on a\
+medium customarily used for software interchange.\
+\
+ If distribution of object code is made by offering access to copy\
+from a designated place, then offering equivalent access to copy the\
+source code from the same place satisfies the requirement to\
+distribute the source code, even though third parties are not\
+compelled to copy the source along with the object code.\
+\
+ 5. A program that contains no derivative of any portion of the\
+Library, but is designed to work with the Library by being compiled or\
+linked with it, is called a "work that uses the Library". Such a\
+work, in isolation, is not a derivative work of the Library, and\
+therefore falls outside the scope of this License.\
+\
+ However, linking a "work that uses the Library" with the Library\
+creates an executable that is a derivative of the Library (because it\
+contains portions of the Library), rather than a "work that uses the\
+library". The executable is therefore covered by this License.\
+Section 6 states terms for distribution of such executables.\
+\
+ When a "work that uses the Library" uses material from a header file\
+that is part of the Library, the object code for the work may be a\
+derivative work of the Library even though the source code is not.\
+Whether this is true is especially significant if the work can be\
+linked without the Library, or if the work is itself a library. The\
+threshold for this to be true is not precisely defined by law.\
+\
+ If such an object file uses only numerical parameters, data\
+structure layouts and accessors, and small macros and small inline\
+functions (ten lines or less in length), then the use of the object\
+file is unrestricted, regardless of whether it is legally a derivative\
+work. (Executables containing this object code plus portions of the\
+Library will still fall under Section 6.)\
+\
+ Otherwise, if the work is a derivative of the Library, you may\
+distribute the object code for the work under the terms of Section 6.\
+Any executables containing that work also fall under Section 6,\
+whether or not they are linked directly with the Library itself.\
+\
+\page \
+ 6. As an exception to the Sections above, you may also combine or\
+link a "work that uses the Library" with the Library to produce a\
+work containing portions of the Library, and distribute that work\
+under terms of your choice, provided that the terms permit\
+modification of the work for the customer's own use and reverse\
+engineering for debugging such modifications.\
+\
+ You must give prominent notice with each copy of the work that the\
+Library is used in it and that the Library and its use are covered by\
+this License. You must supply a copy of this License. If the work\
+during execution displays copyright notices, you must include the\
+copyright notice for the Library among them, as well as a reference\
+directing the user to the copy of this License. Also, you must do one\
+of these things:\
+\
+ a) Accompany the work with the complete corresponding\
+ machine-readable source code for the Library including whatever\
+ changes were used in the work (which must be distributed under\
+ Sections 1 and 2 above); and, if the work is an executable linked\
+ with the Library, with the complete machine-readable "work that\
+ uses the Library", as object code and/or source code, so that the\
+ user can modify the Library and then relink to produce a modified\
+ executable containing the modified Library. (It is understood\
+ that the user who changes the contents of definitions files in the\
+ Library will not necessarily be able to recompile the application\
+ to use the modified definitions.)\
+\
+ b) Use a suitable shared library mechanism for linking with the\
+ Library. A suitable mechanism is one that (1) uses at run time a\
+ copy of the library already present on the user's computer system,\
+ rather than copying library functions into the executable, and (2)\
+ will operate properly with a modified version of the library, if\
+ the user installs one, as long as the modified version is\
+ interface-compatible with the version that the work was made with.\
+\
+ c) Accompany the work with a written offer, valid for at\
+ least three years, to give the same user the materials\
+ specified in Subsection 6a, above, for a charge no more\
+ than the cost of performing this distribution.\
+\
+ d) If distribution of the work is made by offering access to copy\
+ from a designated place, offer equivalent access to copy the above\
+ specified materials from the same place.\
+\
+ e) Verify that the user has already received a copy of these\
+ materials or that you have already sent this user a copy.\
+\
+ For an executable, the required form of the "work that uses the\
+Library" must include any data and utility programs needed for\
+reproducing the executable from it. However, as a special exception,\
+the materials to be distributed need not include anything that is\
+normally distributed (in either source or binary form) with the major\
+components (compiler, kernel, and so on) of the operating system on\
+which the executable runs, unless that component itself accompanies\
+the executable.\
+\
+ It may happen that this requirement contradicts the license\
+restrictions of other proprietary libraries that do not normally\
+accompany the operating system. Such a contradiction means you cannot\
+use both them and the Library together in an executable that you\
+distribute.\
+\
+\page \
+ 7. You may place library facilities that are a work based on the\
+Library side-by-side in a single library together with other library\
+facilities not covered by this License, and distribute such a combined\
+library, provided that the separate distribution of the work based on\
+the Library and of the other library facilities is otherwise\
+permitted, and provided that you do these two things:\
+\
+ a) Accompany the combined library with a copy of the same work\
+ based on the Library, uncombined with any other library\
+ facilities. This must be distributed under the terms of the\
+ Sections above.\
+\
+ b) Give prominent notice with the combined library of the fact\
+ that part of it is a work based on the Library, and explaining\
+ where to find the accompanying uncombined form of the same work.\
+\
+ 8. You may not copy, modify, sublicense, link with, or distribute\
+the Library except as expressly provided under this License. Any\
+attempt otherwise to copy, modify, sublicense, link with, or\
+distribute the Library is void, and will automatically terminate your\
+rights under this License. However, parties who have received copies,\
+or rights, from you under this License will not have their licenses\
+terminated so long as such parties remain in full compliance.\
+\
+ 9. You are not required to accept this License, since you have not\
+signed it. However, nothing else grants you permission to modify or\
+distribute the Library or its derivative works. These actions are\
+prohibited by law if you do not accept this License. Therefore, by\
+modifying or distributing the Library (or any work based on the\
+Library), you indicate your acceptance of this License to do so, and\
+all its terms and conditions for copying, distributing or modifying\
+the Library or works based on it.\
+\
+ 10. Each time you redistribute the Library (or any work based on the\
+Library), the recipient automatically receives a license from the\
+original licensor to copy, distribute, link with or modify the Library\
+subject to these terms and conditions. You may not impose any further\
+restrictions on the recipients' exercise of the rights granted herein.\
+You are not responsible for enforcing compliance by third parties with\
+this License.\
+\
+\page \
+ 11. If, as a consequence of a court judgment or allegation of patent\
+infringement or for any other reason (not limited to patent issues),\
+conditions are imposed on you (whether by court order, agreement or\
+otherwise) that contradict the conditions of this License, they do not\
+excuse you from the conditions of this License. If you cannot\
+distribute so as to satisfy simultaneously your obligations under this\
+License and any other pertinent obligations, then as a consequence you\
+may not distribute the Library at all. For example, if a patent\
+license would not permit royalty-free redistribution of the Library by\
+all those who receive copies directly or indirectly through you, then\
+the only way you could satisfy both it and this License would be to\
+refrain entirely from distribution of the Library.\
+\
+If any portion of this section is held invalid or unenforceable under any\
+particular circumstance, the balance of the section is intended to apply,\
+and the section as a whole is intended to apply in other circumstances.\
+\
+It is not the purpose of this section to induce you to infringe any\
+patents or other property right claims or to contest validity of any\
+such claims; this section has the sole purpose of protecting the\
+integrity of the free software distribution system which is\
+implemented by public license practices. Many people have made\
+generous contributions to the wide range of software distributed\
+through that system in reliance on consistent application of that\
+system; it is up to the author/donor to decide if he or she is willing\
+to distribute software through any other system and a licensee cannot\
+impose that choice.\
+\
+This section is intended to make thoroughly clear what is believed to\
+be a consequence of the rest of this License.\
+\
+ 12. If the distribution and/or use of the Library is restricted in\
+certain countries either by patents or by copyrighted interfaces, the\
+original copyright holder who places the Library under this License may add\
+an explicit geographical distribution limitation excluding those countries,\
+so that distribution is permitted only in or among countries not thus\
+excluded. In such case, this License incorporates the limitation as if\
+written in the body of this License.\
+\
+ 13. The Free Software Foundation may publish revised and/or new\
+versions of the Lesser General Public License from time to time.\
+Such new versions will be similar in spirit to the present version,\
+but may differ in detail to address new problems or concerns.\
+\
+Each version is given a distinguishing version number. If the Library\
+specifies a version number of this License which applies to it and\
+"any later version", you have the option of following the terms and\
+conditions either of that version or of any later version published by\
+the Free Software Foundation. If the Library does not specify a\
+license version number, you may choose any version ever published by\
+the Free Software Foundation.\
+\
+\page \
+ 14. If you wish to incorporate parts of the Library into other free\
+programs whose distribution conditions are incompatible with these,\
+write to the author to ask for permission. For software which is\
+copyrighted by the Free Software Foundation, write to the Free\
+Software Foundation; we sometimes make exceptions for this. Our\
+decision will be guided by the two goals of preserving the free status\
+of all derivatives of our free software and of promoting the sharing\
+and reuse of software generally.\
+\
+ NO WARRANTY\
+\
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY\
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\
+\
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\
+DAMAGES.\
+\
+ END OF TERMS AND CONDITIONS\
+\
+\page \
+ How to Apply These Terms to Your New Libraries\
+\
+ If you develop a new library, and you want it to be of the greatest\
+possible use to the public, we recommend making it free software that\
+everyone can redistribute and change. You can do so by permitting\
+redistribution under these terms (or, alternatively, under the terms of the\
+ordinary General Public License).\
+\
+ To apply these terms, attach the following notices to the library. It is\
+safest to attach them to the start of each source file to most effectively\
+convey the exclusion of warranty; and each file should have at least the\
+"copyright" line and a pointer to where the full notice is found.\
+\
+ <one line to give the library's name and a brief idea of what it does.>\
+ Copyright (C) <year> <name of author>\
+\
+ This library is free software; you can redistribute it and/or\
+ modify it under the terms of the GNU Lesser General Public\
+ License as published by the Free Software Foundation; either\
+ version 2.1 of the License, or (at your option) any later version.\
+\
+ This library is distributed in the hope that it will be useful,\
+ but WITHOUT ANY WARRANTY; without even the implied warranty of\
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\
+ Lesser General Public License for more details.\
+\
+ You should have received a copy of the GNU Lesser General Public\
+ License along with this library; if not, write to the Free Software\
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\
+\
+Also add information on how to contact you by electronic and paper mail.\
+\
+You should also get your employer (if you work as a programmer) or your\
+school, if any, to sign a "copyright disclaimer" for the library, if\
+necessary. Here is a sample; alter the names:\
+\
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the\
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.\
+\
+ <signature of Ty Coon>, 1 April 1990\
+ Ty Coon, President of Vice\
+\
+That's all there is to it!\
+\
+\
+\
+}
\ No newline at end of file
diff --git a/installer/macosx/PkgResources/CsoundApps/ReadMe.rtf b/installer/macosx/PkgResources/CsoundApps/ReadMe.rtf
new file mode 100755
index 0000000..ff3dfb3
--- /dev/null
+++ b/installer/macosx/PkgResources/CsoundApps/ReadMe.rtf
@@ -0,0 +1,31 @@
+{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\margl1440\margr1440\vieww9000\viewh9000\viewkind0
+\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural
+
+\f0\fs24 \cf0 Csound 5 Applications (using API version 2)\
+\
+This will install the basic Csound 5 applications in your computer.\
+These applications include:\
+\
+1.
+\b Csound 'classic' command-line frontend
+\b0 in /usr/local/bin\
+2. The
+\b cstclsh
+\b0 and
+\b cswish
+\b0 Tcl/Tk interpreters in /usr/local/bin\
+3.
+\b Command-line utilities
+\b0 in /usr/local/bin\
+4.
+\b Language wrapper
+\b0 and
+\b Tclcsound library
+\b0 links in /usr/local/lib\
+5. CsLADSPA plugin generator\
+\
+Victor Lazzarini, 2005\
+(c) 2005, The Csound Team , csound.sf.net }
\ No newline at end of file
diff --git a/installer/macosx/PkgResources/CsoundApps/Welcome.rtf b/installer/macosx/PkgResources/CsoundApps/Welcome.rtf
new file mode 100755
index 0000000..e09dca3
--- /dev/null
+++ b/installer/macosx/PkgResources/CsoundApps/Welcome.rtf
@@ -0,0 +1,12 @@
+{\rtf1\mac\ansicpg10000\cocoartf102
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\margl1440\margr1440\vieww9000\viewh9000\viewkind0
+\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural
+
+\f0\fs24 \cf0 You are about to install the Csound 5 applications in your\
+computer. \
+\
+\
+\
+}
\ No newline at end of file
diff --git a/installer/macosx/PkgResources/CsoundApps/postinstall b/installer/macosx/PkgResources/CsoundApps/postinstall
new file mode 100755
index 0000000..97743c0
--- /dev/null
+++ b/installer/macosx/PkgResources/CsoundApps/postinstall
@@ -0,0 +1,6 @@
+#!/bin/sh
+#/usr/local/bin/Reza -i APPL -o /usr/local/bin/csound /usr/local/bin/cs5.r
+#/usr/local/bin/Reza -i APPL -o /usr/local/bin/cswish /usr/local/bin/cs5.r
+/bin/ln -sF /Library/Frameworks/CsoundLib.framework/Versions/Current/TclTk/tclcsound.dylib /usr/local/lib/tclcsound.dylib
+/bin/ln -sF /Library/Frameworks/CsoundLib.framework/Versions/Current/libcsnd.dylib /usr/local/lib/lib_csnd.dylib
+/bin/ln -sF /Library/Frameworks/CsoundLib.framework/Versions/Current/libcsnd.dylib /usr/local/lib/libcsnd.dylib
diff --git a/installer/macosx/PkgResources/CsoundApps/postupgrade b/installer/macosx/PkgResources/CsoundApps/postupgrade
new file mode 100755
index 0000000..97743c0
--- /dev/null
+++ b/installer/macosx/PkgResources/CsoundApps/postupgrade
@@ -0,0 +1,6 @@
+#!/bin/sh
+#/usr/local/bin/Reza -i APPL -o /usr/local/bin/csound /usr/local/bin/cs5.r
+#/usr/local/bin/Reza -i APPL -o /usr/local/bin/cswish /usr/local/bin/cs5.r
+/bin/ln -sF /Library/Frameworks/CsoundLib.framework/Versions/Current/TclTk/tclcsound.dylib /usr/local/lib/tclcsound.dylib
+/bin/ln -sF /Library/Frameworks/CsoundLib.framework/Versions/Current/libcsnd.dylib /usr/local/lib/lib_csnd.dylib
+/bin/ln -sF /Library/Frameworks/CsoundLib.framework/Versions/Current/libcsnd.dylib /usr/local/lib/libcsnd.dylib
diff --git a/installer/macosx/PkgResources/CsoundApps64/License.rtf b/installer/macosx/PkgResources/CsoundApps64/License.rtf
new file mode 100755
index 0000000..5ddd899
--- /dev/null
+++ b/installer/macosx/PkgResources/CsoundApps64/License.rtf
@@ -0,0 +1,521 @@
+{\rtf1\mac\ansicpg10000\cocoartf102
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\margl1440\margr1440\vieww9000\viewh9000\viewkind0
+\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural
+
+\f0\fs24 \cf0 GNU LESSER GENERAL PUBLIC LICENSE\
+ Version 2.1, February 1999\
+\
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.\
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\
+ Everyone is permitted to copy and distribute verbatim copies\
+ of this license document, but changing it is not allowed.\
+\
+[This is the first released version of the Lesser GPL. It also counts\
+ as the successor of the GNU Library Public License, version 2, hence\
+ the version number 2.1.]\
+\
+ Preamble\
+\
+ The licenses for most software are designed to take away your\
+freedom to share and change it. By contrast, the GNU General Public\
+Licenses are intended to guarantee your freedom to share and change\
+free software--to make sure the software is free for all its users.\
+\
+ This license, the Lesser General Public License, applies to some\
+specially designated software packages--typically libraries--of the\
+Free Software Foundation and other authors who decide to use it. You\
+can use it too, but we suggest you first think carefully about whether\
+this license or the ordinary General Public License is the better\
+strategy to use in any particular case, based on the explanations below.\
+\
+ When we speak of free software, we are referring to freedom of use,\
+not price. Our General Public Licenses are designed to make sure that\
+you have the freedom to distribute copies of free software (and charge\
+for this service if you wish); that you receive source code or can get\
+it if you want it; that you can change the software and use pieces of\
+it in new free programs; and that you are informed that you can do\
+these things.\
+\
+ To protect your rights, we need to make restrictions that forbid\
+distributors to deny you these rights or to ask you to surrender these\
+rights. These restrictions translate to certain responsibilities for\
+you if you distribute copies of the library or if you modify it.\
+\
+ For example, if you distribute copies of the library, whether gratis\
+or for a fee, you must give the recipients all the rights that we gave\
+you. You must make sure that they, too, receive or can get the source\
+code. If you link other code with the library, you must provide\
+complete object files to the recipients, so that they can relink them\
+with the library after making changes to the library and recompiling\
+it. And you must show them these terms so they know their rights.\
+\
+ We protect your rights with a two-step method: (1) we copyright the\
+library, and (2) we offer you this license, which gives you legal\
+permission to copy, distribute and/or modify the library.\
+\
+ To protect each distributor, we want to make it very clear that\
+there is no warranty for the free library. Also, if the library is\
+modified by someone else and passed on, the recipients should know\
+that what they have is not the original version, so that the original\
+author's reputation will not be affected by problems that might be\
+introduced by others.\
+\
+\page \
+ Finally, software patents pose a constant threat to the existence of\
+any free program. We wish to make sure that a company cannot\
+effectively restrict the users of a free program by obtaining a\
+restrictive license from a patent holder. Therefore, we insist that\
+any patent license obtained for a version of the library must be\
+consistent with the full freedom of use specified in this license.\
+\
+ Most GNU software, including some libraries, is covered by the\
+ordinary GNU General Public License. This license, the GNU Lesser\
+General Public License, applies to certain designated libraries, and\
+is quite different from the ordinary General Public License. We use\
+this license for certain libraries in order to permit linking those\
+libraries into non-free programs.\
+\
+ When a program is linked with a library, whether statically or using\
+a shared library, the combination of the two is legally speaking a\
+combined work, a derivative of the original library. The ordinary\
+General Public License therefore permits such linking only if the\
+entire combination fits its criteria of freedom. The Lesser General\
+Public License permits more lax criteria for linking other code with\
+the library.\
+\
+ We call this license the "Lesser" General Public License because it\
+does Less to protect the user's freedom than the ordinary General\
+Public License. It also provides other free software developers Less\
+of an advantage over competing non-free programs. These disadvantages\
+are the reason we use the ordinary General Public License for many\
+libraries. However, the Lesser license provides advantages in certain\
+special circumstances.\
+\
+ For example, on rare occasions, there may be a special need to\
+encourage the widest possible use of a certain library, so that it becomes\
+a de-facto standard. To achieve this, non-free programs must be\
+allowed to use the library. A more frequent case is that a free\
+library does the same job as widely used non-free libraries. In this\
+case, there is little to gain by limiting the free library to free\
+software only, so we use the Lesser General Public License.\
+\
+ In other cases, permission to use a particular library in non-free\
+programs enables a greater number of people to use a large body of\
+free software. For example, permission to use the GNU C Library in\
+non-free programs enables many more people to use the whole GNU\
+operating system, as well as its variant, the GNU/Linux operating\
+system.\
+\
+ Although the Lesser General Public License is Less protective of the\
+users' freedom, it does ensure that the user of a program that is\
+linked with the Library has the freedom and the wherewithal to run\
+that program using a modified version of the Library.\
+\
+ The precise terms and conditions for copying, distribution and\
+modification follow. Pay close attention to the difference between a\
+"work based on the library" and a "work that uses the library". The\
+former contains code derived from the library, whereas the latter must\
+be combined with the library in order to run.\
+\
+\page \
+ GNU LESSER GENERAL PUBLIC LICENSE\
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\
+\
+ 0. This License Agreement applies to any software library or other\
+program which contains a notice placed by the copyright holder or\
+other authorized party saying it may be distributed under the terms of\
+this Lesser General Public License (also called "this License").\
+Each licensee is addressed as "you".\
+\
+ A "library" means a collection of software functions and/or data\
+prepared so as to be conveniently linked with application programs\
+(which use some of those functions and data) to form executables.\
+\
+ The "Library", below, refers to any such software library or work\
+which has been distributed under these terms. A "work based on the\
+Library" means either the Library or any derivative work under\
+copyright law: that is to say, a work containing the Library or a\
+portion of it, either verbatim or with modifications and/or translated\
+straightforwardly into another language. (Hereinafter, translation is\
+included without limitation in the term "modification".)\
+\
+ "Source code" for a work means the preferred form of the work for\
+making modifications to it. For a library, complete source code means\
+all the source code for all modules it contains, plus any associated\
+interface definition files, plus the scripts used to control compilation\
+and installation of the library.\
+\
+ Activities other than copying, distribution and modification are not\
+covered by this License; they are outside its scope. The act of\
+running a program using the Library is not restricted, and output from\
+such a program is covered only if its contents constitute a work based\
+on the Library (independent of the use of the Library in a tool for\
+writing it). Whether that is true depends on what the Library does\
+and what the program that uses the Library does.\
+ \
+ 1. You may copy and distribute verbatim copies of the Library's\
+complete source code as you receive it, in any medium, provided that\
+you conspicuously and appropriately publish on each copy an\
+appropriate copyright notice and disclaimer of warranty; keep intact\
+all the notices that refer to this License and to the absence of any\
+warranty; and distribute a copy of this License along with the\
+Library.\
+\
+ You may charge a fee for the physical act of transferring a copy,\
+and you may at your option offer warranty protection in exchange for a\
+fee.\
+\
+\page \
+ 2. You may modify your copy or copies of the Library or any portion\
+of it, thus forming a work based on the Library, and copy and\
+distribute such modifications or work under the terms of Section 1\
+above, provided that you also meet all of these conditions:\
+\
+ a) The modified work must itself be a software library.\
+\
+ b) You must cause the files modified to carry prominent notices\
+ stating that you changed the files and the date of any change.\
+\
+ c) You must cause the whole of the work to be licensed at no\
+ charge to all third parties under the terms of this License.\
+\
+ d) If a facility in the modified Library refers to a function or a\
+ table of data to be supplied by an application program that uses\
+ the facility, other than as an argument passed when the facility\
+ is invoked, then you must make a good faith effort to ensure that,\
+ in the event an application does not supply such function or\
+ table, the facility still operates, and performs whatever part of\
+ its purpose remains meaningful.\
+\
+ (For example, a function in a library to compute square roots has\
+ a purpose that is entirely well-defined independent of the\
+ application. Therefore, Subsection 2d requires that any\
+ application-supplied function or table used by this function must\
+ be optional: if the application does not supply it, the square\
+ root function must still compute square roots.)\
+\
+These requirements apply to the modified work as a whole. If\
+identifiable sections of that work are not derived from the Library,\
+and can be reasonably considered independent and separate works in\
+themselves, then this License, and its terms, do not apply to those\
+sections when you distribute them as separate works. But when you\
+distribute the same sections as part of a whole which is a work based\
+on the Library, the distribution of the whole must be on the terms of\
+this License, whose permissions for other licensees extend to the\
+entire whole, and thus to each and every part regardless of who wrote\
+it.\
+\
+Thus, it is not the intent of this section to claim rights or contest\
+your rights to work written entirely by you; rather, the intent is to\
+exercise the right to control the distribution of derivative or\
+collective works based on the Library.\
+\
+In addition, mere aggregation of another work not based on the Library\
+with the Library (or with a work based on the Library) on a volume of\
+a storage or distribution medium does not bring the other work under\
+the scope of this License.\
+\
+ 3. You may opt to apply the terms of the ordinary GNU General Public\
+License instead of this License to a given copy of the Library. To do\
+this, you must alter all the notices that refer to this License, so\
+that they refer to the ordinary GNU General Public License, version 2,\
+instead of to this License. (If a newer version than version 2 of the\
+ordinary GNU General Public License has appeared, then you can specify\
+that version instead if you wish.) Do not make any other change in\
+these notices.\
+\
+\page \
+ Once this change is made in a given copy, it is irreversible for\
+that copy, so the ordinary GNU General Public License applies to all\
+subsequent copies and derivative works made from that copy.\
+\
+ This option is useful when you wish to copy part of the code of\
+the Library into a program that is not a library.\
+\
+ 4. You may copy and distribute the Library (or a portion or\
+derivative of it, under Section 2) in object code or executable form\
+under the terms of Sections 1 and 2 above provided that you accompany\
+it with the complete corresponding machine-readable source code, which\
+must be distributed under the terms of Sections 1 and 2 above on a\
+medium customarily used for software interchange.\
+\
+ If distribution of object code is made by offering access to copy\
+from a designated place, then offering equivalent access to copy the\
+source code from the same place satisfies the requirement to\
+distribute the source code, even though third parties are not\
+compelled to copy the source along with the object code.\
+\
+ 5. A program that contains no derivative of any portion of the\
+Library, but is designed to work with the Library by being compiled or\
+linked with it, is called a "work that uses the Library". Such a\
+work, in isolation, is not a derivative work of the Library, and\
+therefore falls outside the scope of this License.\
+\
+ However, linking a "work that uses the Library" with the Library\
+creates an executable that is a derivative of the Library (because it\
+contains portions of the Library), rather than a "work that uses the\
+library". The executable is therefore covered by this License.\
+Section 6 states terms for distribution of such executables.\
+\
+ When a "work that uses the Library" uses material from a header file\
+that is part of the Library, the object code for the work may be a\
+derivative work of the Library even though the source code is not.\
+Whether this is true is especially significant if the work can be\
+linked without the Library, or if the work is itself a library. The\
+threshold for this to be true is not precisely defined by law.\
+\
+ If such an object file uses only numerical parameters, data\
+structure layouts and accessors, and small macros and small inline\
+functions (ten lines or less in length), then the use of the object\
+file is unrestricted, regardless of whether it is legally a derivative\
+work. (Executables containing this object code plus portions of the\
+Library will still fall under Section 6.)\
+\
+ Otherwise, if the work is a derivative of the Library, you may\
+distribute the object code for the work under the terms of Section 6.\
+Any executables containing that work also fall under Section 6,\
+whether or not they are linked directly with the Library itself.\
+\
+\page \
+ 6. As an exception to the Sections above, you may also combine or\
+link a "work that uses the Library" with the Library to produce a\
+work containing portions of the Library, and distribute that work\
+under terms of your choice, provided that the terms permit\
+modification of the work for the customer's own use and reverse\
+engineering for debugging such modifications.\
+\
+ You must give prominent notice with each copy of the work that the\
+Library is used in it and that the Library and its use are covered by\
+this License. You must supply a copy of this License. If the work\
+during execution displays copyright notices, you must include the\
+copyright notice for the Library among them, as well as a reference\
+directing the user to the copy of this License. Also, you must do one\
+of these things:\
+\
+ a) Accompany the work with the complete corresponding\
+ machine-readable source code for the Library including whatever\
+ changes were used in the work (which must be distributed under\
+ Sections 1 and 2 above); and, if the work is an executable linked\
+ with the Library, with the complete machine-readable "work that\
+ uses the Library", as object code and/or source code, so that the\
+ user can modify the Library and then relink to produce a modified\
+ executable containing the modified Library. (It is understood\
+ that the user who changes the contents of definitions files in the\
+ Library will not necessarily be able to recompile the application\
+ to use the modified definitions.)\
+\
+ b) Use a suitable shared library mechanism for linking with the\
+ Library. A suitable mechanism is one that (1) uses at run time a\
+ copy of the library already present on the user's computer system,\
+ rather than copying library functions into the executable, and (2)\
+ will operate properly with a modified version of the library, if\
+ the user installs one, as long as the modified version is\
+ interface-compatible with the version that the work was made with.\
+\
+ c) Accompany the work with a written offer, valid for at\
+ least three years, to give the same user the materials\
+ specified in Subsection 6a, above, for a charge no more\
+ than the cost of performing this distribution.\
+\
+ d) If distribution of the work is made by offering access to copy\
+ from a designated place, offer equivalent access to copy the above\
+ specified materials from the same place.\
+\
+ e) Verify that the user has already received a copy of these\
+ materials or that you have already sent this user a copy.\
+\
+ For an executable, the required form of the "work that uses the\
+Library" must include any data and utility programs needed for\
+reproducing the executable from it. However, as a special exception,\
+the materials to be distributed need not include anything that is\
+normally distributed (in either source or binary form) with the major\
+components (compiler, kernel, and so on) of the operating system on\
+which the executable runs, unless that component itself accompanies\
+the executable.\
+\
+ It may happen that this requirement contradicts the license\
+restrictions of other proprietary libraries that do not normally\
+accompany the operating system. Such a contradiction means you cannot\
+use both them and the Library together in an executable that you\
+distribute.\
+\
+\page \
+ 7. You may place library facilities that are a work based on the\
+Library side-by-side in a single library together with other library\
+facilities not covered by this License, and distribute such a combined\
+library, provided that the separate distribution of the work based on\
+the Library and of the other library facilities is otherwise\
+permitted, and provided that you do these two things:\
+\
+ a) Accompany the combined library with a copy of the same work\
+ based on the Library, uncombined with any other library\
+ facilities. This must be distributed under the terms of the\
+ Sections above.\
+\
+ b) Give prominent notice with the combined library of the fact\
+ that part of it is a work based on the Library, and explaining\
+ where to find the accompanying uncombined form of the same work.\
+\
+ 8. You may not copy, modify, sublicense, link with, or distribute\
+the Library except as expressly provided under this License. Any\
+attempt otherwise to copy, modify, sublicense, link with, or\
+distribute the Library is void, and will automatically terminate your\
+rights under this License. However, parties who have received copies,\
+or rights, from you under this License will not have their licenses\
+terminated so long as such parties remain in full compliance.\
+\
+ 9. You are not required to accept this License, since you have not\
+signed it. However, nothing else grants you permission to modify or\
+distribute the Library or its derivative works. These actions are\
+prohibited by law if you do not accept this License. Therefore, by\
+modifying or distributing the Library (or any work based on the\
+Library), you indicate your acceptance of this License to do so, and\
+all its terms and conditions for copying, distributing or modifying\
+the Library or works based on it.\
+\
+ 10. Each time you redistribute the Library (or any work based on the\
+Library), the recipient automatically receives a license from the\
+original licensor to copy, distribute, link with or modify the Library\
+subject to these terms and conditions. You may not impose any further\
+restrictions on the recipients' exercise of the rights granted herein.\
+You are not responsible for enforcing compliance by third parties with\
+this License.\
+\
+\page \
+ 11. If, as a consequence of a court judgment or allegation of patent\
+infringement or for any other reason (not limited to patent issues),\
+conditions are imposed on you (whether by court order, agreement or\
+otherwise) that contradict the conditions of this License, they do not\
+excuse you from the conditions of this License. If you cannot\
+distribute so as to satisfy simultaneously your obligations under this\
+License and any other pertinent obligations, then as a consequence you\
+may not distribute the Library at all. For example, if a patent\
+license would not permit royalty-free redistribution of the Library by\
+all those who receive copies directly or indirectly through you, then\
+the only way you could satisfy both it and this License would be to\
+refrain entirely from distribution of the Library.\
+\
+If any portion of this section is held invalid or unenforceable under any\
+particular circumstance, the balance of the section is intended to apply,\
+and the section as a whole is intended to apply in other circumstances.\
+\
+It is not the purpose of this section to induce you to infringe any\
+patents or other property right claims or to contest validity of any\
+such claims; this section has the sole purpose of protecting the\
+integrity of the free software distribution system which is\
+implemented by public license practices. Many people have made\
+generous contributions to the wide range of software distributed\
+through that system in reliance on consistent application of that\
+system; it is up to the author/donor to decide if he or she is willing\
+to distribute software through any other system and a licensee cannot\
+impose that choice.\
+\
+This section is intended to make thoroughly clear what is believed to\
+be a consequence of the rest of this License.\
+\
+ 12. If the distribution and/or use of the Library is restricted in\
+certain countries either by patents or by copyrighted interfaces, the\
+original copyright holder who places the Library under this License may add\
+an explicit geographical distribution limitation excluding those countries,\
+so that distribution is permitted only in or among countries not thus\
+excluded. In such case, this License incorporates the limitation as if\
+written in the body of this License.\
+\
+ 13. The Free Software Foundation may publish revised and/or new\
+versions of the Lesser General Public License from time to time.\
+Such new versions will be similar in spirit to the present version,\
+but may differ in detail to address new problems or concerns.\
+\
+Each version is given a distinguishing version number. If the Library\
+specifies a version number of this License which applies to it and\
+"any later version", you have the option of following the terms and\
+conditions either of that version or of any later version published by\
+the Free Software Foundation. If the Library does not specify a\
+license version number, you may choose any version ever published by\
+the Free Software Foundation.\
+\
+\page \
+ 14. If you wish to incorporate parts of the Library into other free\
+programs whose distribution conditions are incompatible with these,\
+write to the author to ask for permission. For software which is\
+copyrighted by the Free Software Foundation, write to the Free\
+Software Foundation; we sometimes make exceptions for this. Our\
+decision will be guided by the two goals of preserving the free status\
+of all derivatives of our free software and of promoting the sharing\
+and reuse of software generally.\
+\
+ NO WARRANTY\
+\
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY\
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\
+\
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\
+DAMAGES.\
+\
+ END OF TERMS AND CONDITIONS\
+\
+\page \
+ How to Apply These Terms to Your New Libraries\
+\
+ If you develop a new library, and you want it to be of the greatest\
+possible use to the public, we recommend making it free software that\
+everyone can redistribute and change. You can do so by permitting\
+redistribution under these terms (or, alternatively, under the terms of the\
+ordinary General Public License).\
+\
+ To apply these terms, attach the following notices to the library. It is\
+safest to attach them to the start of each source file to most effectively\
+convey the exclusion of warranty; and each file should have at least the\
+"copyright" line and a pointer to where the full notice is found.\
+\
+ <one line to give the library's name and a brief idea of what it does.>\
+ Copyright (C) <year> <name of author>\
+\
+ This library is free software; you can redistribute it and/or\
+ modify it under the terms of the GNU Lesser General Public\
+ License as published by the Free Software Foundation; either\
+ version 2.1 of the License, or (at your option) any later version.\
+\
+ This library is distributed in the hope that it will be useful,\
+ but WITHOUT ANY WARRANTY; without even the implied warranty of\
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\
+ Lesser General Public License for more details.\
+\
+ You should have received a copy of the GNU Lesser General Public\
+ License along with this library; if not, write to the Free Software\
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\
+\
+Also add information on how to contact you by electronic and paper mail.\
+\
+You should also get your employer (if you work as a programmer) or your\
+school, if any, to sign a "copyright disclaimer" for the library, if\
+necessary. Here is a sample; alter the names:\
+\
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the\
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.\
+\
+ <signature of Ty Coon>, 1 April 1990\
+ Ty Coon, President of Vice\
+\
+That's all there is to it!\
+\
+\
+\
+}
\ No newline at end of file
diff --git a/installer/macosx/PkgResources/CsoundApps64/ReadMe.rtf b/installer/macosx/PkgResources/CsoundApps64/ReadMe.rtf
new file mode 100755
index 0000000..ff3dfb3
--- /dev/null
+++ b/installer/macosx/PkgResources/CsoundApps64/ReadMe.rtf
@@ -0,0 +1,31 @@
+{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\margl1440\margr1440\vieww9000\viewh9000\viewkind0
+\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural
+
+\f0\fs24 \cf0 Csound 5 Applications (using API version 2)\
+\
+This will install the basic Csound 5 applications in your computer.\
+These applications include:\
+\
+1.
+\b Csound 'classic' command-line frontend
+\b0 in /usr/local/bin\
+2. The
+\b cstclsh
+\b0 and
+\b cswish
+\b0 Tcl/Tk interpreters in /usr/local/bin\
+3.
+\b Command-line utilities
+\b0 in /usr/local/bin\
+4.
+\b Language wrapper
+\b0 and
+\b Tclcsound library
+\b0 links in /usr/local/lib\
+5. CsLADSPA plugin generator\
+\
+Victor Lazzarini, 2005\
+(c) 2005, The Csound Team , csound.sf.net }
\ No newline at end of file
diff --git a/installer/macosx/PkgResources/CsoundApps64/Welcome.rtf b/installer/macosx/PkgResources/CsoundApps64/Welcome.rtf
new file mode 100755
index 0000000..e09dca3
--- /dev/null
+++ b/installer/macosx/PkgResources/CsoundApps64/Welcome.rtf
@@ -0,0 +1,12 @@
+{\rtf1\mac\ansicpg10000\cocoartf102
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\margl1440\margr1440\vieww9000\viewh9000\viewkind0
+\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural
+
+\f0\fs24 \cf0 You are about to install the Csound 5 applications in your\
+computer. \
+\
+\
+\
+}
\ No newline at end of file
diff --git a/installer/macosx/PkgResources/CsoundApps64/postinstall b/installer/macosx/PkgResources/CsoundApps64/postinstall
new file mode 100755
index 0000000..eb7e140
--- /dev/null
+++ b/installer/macosx/PkgResources/CsoundApps64/postinstall
@@ -0,0 +1,8 @@
+#!/bin/sh
+#/usr/local/bin/Reza -i APPL -o /usr/local/bin/csound /usr/local/bin/cs5.r
+#/usr/local/bin/Reza -i APPL -o /usr/local/bin/cswish /usr/local/bin/cs5.r
+
+/bin/ln -sF /Library/Frameworks/CsoundLib64.framework/Versions/Current/TclTk/tclcsound.dylib /usr/local/lib/tclcsound.dylib
+/bin/ln -sF /Library/Frameworks/CsoundLib64.framework/Versions/Current/libcsnd64.dylib /usr/local/lib/lib_csnd64.dylib
+/bin/ln -sF /Library/Frameworks/CsoundLib64.framework/Versions/Current/libcsnd64.dylib /usr/local/lib/libcsnd64.dylib
+
diff --git a/installer/macosx/PkgResources/CsoundApps64/postupgrade b/installer/macosx/PkgResources/CsoundApps64/postupgrade
new file mode 100755
index 0000000..eb7e140
--- /dev/null
+++ b/installer/macosx/PkgResources/CsoundApps64/postupgrade
@@ -0,0 +1,8 @@
+#!/bin/sh
+#/usr/local/bin/Reza -i APPL -o /usr/local/bin/csound /usr/local/bin/cs5.r
+#/usr/local/bin/Reza -i APPL -o /usr/local/bin/cswish /usr/local/bin/cs5.r
+
+/bin/ln -sF /Library/Frameworks/CsoundLib64.framework/Versions/Current/TclTk/tclcsound.dylib /usr/local/lib/tclcsound.dylib
+/bin/ln -sF /Library/Frameworks/CsoundLib64.framework/Versions/Current/libcsnd64.dylib /usr/local/lib/lib_csnd64.dylib
+/bin/ln -sF /Library/Frameworks/CsoundLib64.framework/Versions/Current/libcsnd64.dylib /usr/local/lib/libcsnd64.dylib
+
diff --git a/installer/macosx/PkgResources/CsoundLib/License.rtf b/installer/macosx/PkgResources/CsoundLib/License.rtf
new file mode 100755
index 0000000..5ddd899
--- /dev/null
+++ b/installer/macosx/PkgResources/CsoundLib/License.rtf
@@ -0,0 +1,521 @@
+{\rtf1\mac\ansicpg10000\cocoartf102
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\margl1440\margr1440\vieww9000\viewh9000\viewkind0
+\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural
+
+\f0\fs24 \cf0 GNU LESSER GENERAL PUBLIC LICENSE\
+ Version 2.1, February 1999\
+\
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.\
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\
+ Everyone is permitted to copy and distribute verbatim copies\
+ of this license document, but changing it is not allowed.\
+\
+[This is the first released version of the Lesser GPL. It also counts\
+ as the successor of the GNU Library Public License, version 2, hence\
+ the version number 2.1.]\
+\
+ Preamble\
+\
+ The licenses for most software are designed to take away your\
+freedom to share and change it. By contrast, the GNU General Public\
+Licenses are intended to guarantee your freedom to share and change\
+free software--to make sure the software is free for all its users.\
+\
+ This license, the Lesser General Public License, applies to some\
+specially designated software packages--typically libraries--of the\
+Free Software Foundation and other authors who decide to use it. You\
+can use it too, but we suggest you first think carefully about whether\
+this license or the ordinary General Public License is the better\
+strategy to use in any particular case, based on the explanations below.\
+\
+ When we speak of free software, we are referring to freedom of use,\
+not price. Our General Public Licenses are designed to make sure that\
+you have the freedom to distribute copies of free software (and charge\
+for this service if you wish); that you receive source code or can get\
+it if you want it; that you can change the software and use pieces of\
+it in new free programs; and that you are informed that you can do\
+these things.\
+\
+ To protect your rights, we need to make restrictions that forbid\
+distributors to deny you these rights or to ask you to surrender these\
+rights. These restrictions translate to certain responsibilities for\
+you if you distribute copies of the library or if you modify it.\
+\
+ For example, if you distribute copies of the library, whether gratis\
+or for a fee, you must give the recipients all the rights that we gave\
+you. You must make sure that they, too, receive or can get the source\
+code. If you link other code with the library, you must provide\
+complete object files to the recipients, so that they can relink them\
+with the library after making changes to the library and recompiling\
+it. And you must show them these terms so they know their rights.\
+\
+ We protect your rights with a two-step method: (1) we copyright the\
+library, and (2) we offer you this license, which gives you legal\
+permission to copy, distribute and/or modify the library.\
+\
+ To protect each distributor, we want to make it very clear that\
+there is no warranty for the free library. Also, if the library is\
+modified by someone else and passed on, the recipients should know\
+that what they have is not the original version, so that the original\
+author's reputation will not be affected by problems that might be\
+introduced by others.\
+\
+\page \
+ Finally, software patents pose a constant threat to the existence of\
+any free program. We wish to make sure that a company cannot\
+effectively restrict the users of a free program by obtaining a\
+restrictive license from a patent holder. Therefore, we insist that\
+any patent license obtained for a version of the library must be\
+consistent with the full freedom of use specified in this license.\
+\
+ Most GNU software, including some libraries, is covered by the\
+ordinary GNU General Public License. This license, the GNU Lesser\
+General Public License, applies to certain designated libraries, and\
+is quite different from the ordinary General Public License. We use\
+this license for certain libraries in order to permit linking those\
+libraries into non-free programs.\
+\
+ When a program is linked with a library, whether statically or using\
+a shared library, the combination of the two is legally speaking a\
+combined work, a derivative of the original library. The ordinary\
+General Public License therefore permits such linking only if the\
+entire combination fits its criteria of freedom. The Lesser General\
+Public License permits more lax criteria for linking other code with\
+the library.\
+\
+ We call this license the "Lesser" General Public License because it\
+does Less to protect the user's freedom than the ordinary General\
+Public License. It also provides other free software developers Less\
+of an advantage over competing non-free programs. These disadvantages\
+are the reason we use the ordinary General Public License for many\
+libraries. However, the Lesser license provides advantages in certain\
+special circumstances.\
+\
+ For example, on rare occasions, there may be a special need to\
+encourage the widest possible use of a certain library, so that it becomes\
+a de-facto standard. To achieve this, non-free programs must be\
+allowed to use the library. A more frequent case is that a free\
+library does the same job as widely used non-free libraries. In this\
+case, there is little to gain by limiting the free library to free\
+software only, so we use the Lesser General Public License.\
+\
+ In other cases, permission to use a particular library in non-free\
+programs enables a greater number of people to use a large body of\
+free software. For example, permission to use the GNU C Library in\
+non-free programs enables many more people to use the whole GNU\
+operating system, as well as its variant, the GNU/Linux operating\
+system.\
+\
+ Although the Lesser General Public License is Less protective of the\
+users' freedom, it does ensure that the user of a program that is\
+linked with the Library has the freedom and the wherewithal to run\
+that program using a modified version of the Library.\
+\
+ The precise terms and conditions for copying, distribution and\
+modification follow. Pay close attention to the difference between a\
+"work based on the library" and a "work that uses the library". The\
+former contains code derived from the library, whereas the latter must\
+be combined with the library in order to run.\
+\
+\page \
+ GNU LESSER GENERAL PUBLIC LICENSE\
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\
+\
+ 0. This License Agreement applies to any software library or other\
+program which contains a notice placed by the copyright holder or\
+other authorized party saying it may be distributed under the terms of\
+this Lesser General Public License (also called "this License").\
+Each licensee is addressed as "you".\
+\
+ A "library" means a collection of software functions and/or data\
+prepared so as to be conveniently linked with application programs\
+(which use some of those functions and data) to form executables.\
+\
+ The "Library", below, refers to any such software library or work\
+which has been distributed under these terms. A "work based on the\
+Library" means either the Library or any derivative work under\
+copyright law: that is to say, a work containing the Library or a\
+portion of it, either verbatim or with modifications and/or translated\
+straightforwardly into another language. (Hereinafter, translation is\
+included without limitation in the term "modification".)\
+\
+ "Source code" for a work means the preferred form of the work for\
+making modifications to it. For a library, complete source code means\
+all the source code for all modules it contains, plus any associated\
+interface definition files, plus the scripts used to control compilation\
+and installation of the library.\
+\
+ Activities other than copying, distribution and modification are not\
+covered by this License; they are outside its scope. The act of\
+running a program using the Library is not restricted, and output from\
+such a program is covered only if its contents constitute a work based\
+on the Library (independent of the use of the Library in a tool for\
+writing it). Whether that is true depends on what the Library does\
+and what the program that uses the Library does.\
+ \
+ 1. You may copy and distribute verbatim copies of the Library's\
+complete source code as you receive it, in any medium, provided that\
+you conspicuously and appropriately publish on each copy an\
+appropriate copyright notice and disclaimer of warranty; keep intact\
+all the notices that refer to this License and to the absence of any\
+warranty; and distribute a copy of this License along with the\
+Library.\
+\
+ You may charge a fee for the physical act of transferring a copy,\
+and you may at your option offer warranty protection in exchange for a\
+fee.\
+\
+\page \
+ 2. You may modify your copy or copies of the Library or any portion\
+of it, thus forming a work based on the Library, and copy and\
+distribute such modifications or work under the terms of Section 1\
+above, provided that you also meet all of these conditions:\
+\
+ a) The modified work must itself be a software library.\
+\
+ b) You must cause the files modified to carry prominent notices\
+ stating that you changed the files and the date of any change.\
+\
+ c) You must cause the whole of the work to be licensed at no\
+ charge to all third parties under the terms of this License.\
+\
+ d) If a facility in the modified Library refers to a function or a\
+ table of data to be supplied by an application program that uses\
+ the facility, other than as an argument passed when the facility\
+ is invoked, then you must make a good faith effort to ensure that,\
+ in the event an application does not supply such function or\
+ table, the facility still operates, and performs whatever part of\
+ its purpose remains meaningful.\
+\
+ (For example, a function in a library to compute square roots has\
+ a purpose that is entirely well-defined independent of the\
+ application. Therefore, Subsection 2d requires that any\
+ application-supplied function or table used by this function must\
+ be optional: if the application does not supply it, the square\
+ root function must still compute square roots.)\
+\
+These requirements apply to the modified work as a whole. If\
+identifiable sections of that work are not derived from the Library,\
+and can be reasonably considered independent and separate works in\
+themselves, then this License, and its terms, do not apply to those\
+sections when you distribute them as separate works. But when you\
+distribute the same sections as part of a whole which is a work based\
+on the Library, the distribution of the whole must be on the terms of\
+this License, whose permissions for other licensees extend to the\
+entire whole, and thus to each and every part regardless of who wrote\
+it.\
+\
+Thus, it is not the intent of this section to claim rights or contest\
+your rights to work written entirely by you; rather, the intent is to\
+exercise the right to control the distribution of derivative or\
+collective works based on the Library.\
+\
+In addition, mere aggregation of another work not based on the Library\
+with the Library (or with a work based on the Library) on a volume of\
+a storage or distribution medium does not bring the other work under\
+the scope of this License.\
+\
+ 3. You may opt to apply the terms of the ordinary GNU General Public\
+License instead of this License to a given copy of the Library. To do\
+this, you must alter all the notices that refer to this License, so\
+that they refer to the ordinary GNU General Public License, version 2,\
+instead of to this License. (If a newer version than version 2 of the\
+ordinary GNU General Public License has appeared, then you can specify\
+that version instead if you wish.) Do not make any other change in\
+these notices.\
+\
+\page \
+ Once this change is made in a given copy, it is irreversible for\
+that copy, so the ordinary GNU General Public License applies to all\
+subsequent copies and derivative works made from that copy.\
+\
+ This option is useful when you wish to copy part of the code of\
+the Library into a program that is not a library.\
+\
+ 4. You may copy and distribute the Library (or a portion or\
+derivative of it, under Section 2) in object code or executable form\
+under the terms of Sections 1 and 2 above provided that you accompany\
+it with the complete corresponding machine-readable source code, which\
+must be distributed under the terms of Sections 1 and 2 above on a\
+medium customarily used for software interchange.\
+\
+ If distribution of object code is made by offering access to copy\
+from a designated place, then offering equivalent access to copy the\
+source code from the same place satisfies the requirement to\
+distribute the source code, even though third parties are not\
+compelled to copy the source along with the object code.\
+\
+ 5. A program that contains no derivative of any portion of the\
+Library, but is designed to work with the Library by being compiled or\
+linked with it, is called a "work that uses the Library". Such a\
+work, in isolation, is not a derivative work of the Library, and\
+therefore falls outside the scope of this License.\
+\
+ However, linking a "work that uses the Library" with the Library\
+creates an executable that is a derivative of the Library (because it\
+contains portions of the Library), rather than a "work that uses the\
+library". The executable is therefore covered by this License.\
+Section 6 states terms for distribution of such executables.\
+\
+ When a "work that uses the Library" uses material from a header file\
+that is part of the Library, the object code for the work may be a\
+derivative work of the Library even though the source code is not.\
+Whether this is true is especially significant if the work can be\
+linked without the Library, or if the work is itself a library. The\
+threshold for this to be true is not precisely defined by law.\
+\
+ If such an object file uses only numerical parameters, data\
+structure layouts and accessors, and small macros and small inline\
+functions (ten lines or less in length), then the use of the object\
+file is unrestricted, regardless of whether it is legally a derivative\
+work. (Executables containing this object code plus portions of the\
+Library will still fall under Section 6.)\
+\
+ Otherwise, if the work is a derivative of the Library, you may\
+distribute the object code for the work under the terms of Section 6.\
+Any executables containing that work also fall under Section 6,\
+whether or not they are linked directly with the Library itself.\
+\
+\page \
+ 6. As an exception to the Sections above, you may also combine or\
+link a "work that uses the Library" with the Library to produce a\
+work containing portions of the Library, and distribute that work\
+under terms of your choice, provided that the terms permit\
+modification of the work for the customer's own use and reverse\
+engineering for debugging such modifications.\
+\
+ You must give prominent notice with each copy of the work that the\
+Library is used in it and that the Library and its use are covered by\
+this License. You must supply a copy of this License. If the work\
+during execution displays copyright notices, you must include the\
+copyright notice for the Library among them, as well as a reference\
+directing the user to the copy of this License. Also, you must do one\
+of these things:\
+\
+ a) Accompany the work with the complete corresponding\
+ machine-readable source code for the Library including whatever\
+ changes were used in the work (which must be distributed under\
+ Sections 1 and 2 above); and, if the work is an executable linked\
+ with the Library, with the complete machine-readable "work that\
+ uses the Library", as object code and/or source code, so that the\
+ user can modify the Library and then relink to produce a modified\
+ executable containing the modified Library. (It is understood\
+ that the user who changes the contents of definitions files in the\
+ Library will not necessarily be able to recompile the application\
+ to use the modified definitions.)\
+\
+ b) Use a suitable shared library mechanism for linking with the\
+ Library. A suitable mechanism is one that (1) uses at run time a\
+ copy of the library already present on the user's computer system,\
+ rather than copying library functions into the executable, and (2)\
+ will operate properly with a modified version of the library, if\
+ the user installs one, as long as the modified version is\
+ interface-compatible with the version that the work was made with.\
+\
+ c) Accompany the work with a written offer, valid for at\
+ least three years, to give the same user the materials\
+ specified in Subsection 6a, above, for a charge no more\
+ than the cost of performing this distribution.\
+\
+ d) If distribution of the work is made by offering access to copy\
+ from a designated place, offer equivalent access to copy the above\
+ specified materials from the same place.\
+\
+ e) Verify that the user has already received a copy of these\
+ materials or that you have already sent this user a copy.\
+\
+ For an executable, the required form of the "work that uses the\
+Library" must include any data and utility programs needed for\
+reproducing the executable from it. However, as a special exception,\
+the materials to be distributed need not include anything that is\
+normally distributed (in either source or binary form) with the major\
+components (compiler, kernel, and so on) of the operating system on\
+which the executable runs, unless that component itself accompanies\
+the executable.\
+\
+ It may happen that this requirement contradicts the license\
+restrictions of other proprietary libraries that do not normally\
+accompany the operating system. Such a contradiction means you cannot\
+use both them and the Library together in an executable that you\
+distribute.\
+\
+\page \
+ 7. You may place library facilities that are a work based on the\
+Library side-by-side in a single library together with other library\
+facilities not covered by this License, and distribute such a combined\
+library, provided that the separate distribution of the work based on\
+the Library and of the other library facilities is otherwise\
+permitted, and provided that you do these two things:\
+\
+ a) Accompany the combined library with a copy of the same work\
+ based on the Library, uncombined with any other library\
+ facilities. This must be distributed under the terms of the\
+ Sections above.\
+\
+ b) Give prominent notice with the combined library of the fact\
+ that part of it is a work based on the Library, and explaining\
+ where to find the accompanying uncombined form of the same work.\
+\
+ 8. You may not copy, modify, sublicense, link with, or distribute\
+the Library except as expressly provided under this License. Any\
+attempt otherwise to copy, modify, sublicense, link with, or\
+distribute the Library is void, and will automatically terminate your\
+rights under this License. However, parties who have received copies,\
+or rights, from you under this License will not have their licenses\
+terminated so long as such parties remain in full compliance.\
+\
+ 9. You are not required to accept this License, since you have not\
+signed it. However, nothing else grants you permission to modify or\
+distribute the Library or its derivative works. These actions are\
+prohibited by law if you do not accept this License. Therefore, by\
+modifying or distributing the Library (or any work based on the\
+Library), you indicate your acceptance of this License to do so, and\
+all its terms and conditions for copying, distributing or modifying\
+the Library or works based on it.\
+\
+ 10. Each time you redistribute the Library (or any work based on the\
+Library), the recipient automatically receives a license from the\
+original licensor to copy, distribute, link with or modify the Library\
+subject to these terms and conditions. You may not impose any further\
+restrictions on the recipients' exercise of the rights granted herein.\
+You are not responsible for enforcing compliance by third parties with\
+this License.\
+\
+\page \
+ 11. If, as a consequence of a court judgment or allegation of patent\
+infringement or for any other reason (not limited to patent issues),\
+conditions are imposed on you (whether by court order, agreement or\
+otherwise) that contradict the conditions of this License, they do not\
+excuse you from the conditions of this License. If you cannot\
+distribute so as to satisfy simultaneously your obligations under this\
+License and any other pertinent obligations, then as a consequence you\
+may not distribute the Library at all. For example, if a patent\
+license would not permit royalty-free redistribution of the Library by\
+all those who receive copies directly or indirectly through you, then\
+the only way you could satisfy both it and this License would be to\
+refrain entirely from distribution of the Library.\
+\
+If any portion of this section is held invalid or unenforceable under any\
+particular circumstance, the balance of the section is intended to apply,\
+and the section as a whole is intended to apply in other circumstances.\
+\
+It is not the purpose of this section to induce you to infringe any\
+patents or other property right claims or to contest validity of any\
+such claims; this section has the sole purpose of protecting the\
+integrity of the free software distribution system which is\
+implemented by public license practices. Many people have made\
+generous contributions to the wide range of software distributed\
+through that system in reliance on consistent application of that\
+system; it is up to the author/donor to decide if he or she is willing\
+to distribute software through any other system and a licensee cannot\
+impose that choice.\
+\
+This section is intended to make thoroughly clear what is believed to\
+be a consequence of the rest of this License.\
+\
+ 12. If the distribution and/or use of the Library is restricted in\
+certain countries either by patents or by copyrighted interfaces, the\
+original copyright holder who places the Library under this License may add\
+an explicit geographical distribution limitation excluding those countries,\
+so that distribution is permitted only in or among countries not thus\
+excluded. In such case, this License incorporates the limitation as if\
+written in the body of this License.\
+\
+ 13. The Free Software Foundation may publish revised and/or new\
+versions of the Lesser General Public License from time to time.\
+Such new versions will be similar in spirit to the present version,\
+but may differ in detail to address new problems or concerns.\
+\
+Each version is given a distinguishing version number. If the Library\
+specifies a version number of this License which applies to it and\
+"any later version", you have the option of following the terms and\
+conditions either of that version or of any later version published by\
+the Free Software Foundation. If the Library does not specify a\
+license version number, you may choose any version ever published by\
+the Free Software Foundation.\
+\
+\page \
+ 14. If you wish to incorporate parts of the Library into other free\
+programs whose distribution conditions are incompatible with these,\
+write to the author to ask for permission. For software which is\
+copyrighted by the Free Software Foundation, write to the Free\
+Software Foundation; we sometimes make exceptions for this. Our\
+decision will be guided by the two goals of preserving the free status\
+of all derivatives of our free software and of promoting the sharing\
+and reuse of software generally.\
+\
+ NO WARRANTY\
+\
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY\
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\
+\
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\
+DAMAGES.\
+\
+ END OF TERMS AND CONDITIONS\
+\
+\page \
+ How to Apply These Terms to Your New Libraries\
+\
+ If you develop a new library, and you want it to be of the greatest\
+possible use to the public, we recommend making it free software that\
+everyone can redistribute and change. You can do so by permitting\
+redistribution under these terms (or, alternatively, under the terms of the\
+ordinary General Public License).\
+\
+ To apply these terms, attach the following notices to the library. It is\
+safest to attach them to the start of each source file to most effectively\
+convey the exclusion of warranty; and each file should have at least the\
+"copyright" line and a pointer to where the full notice is found.\
+\
+ <one line to give the library's name and a brief idea of what it does.>\
+ Copyright (C) <year> <name of author>\
+\
+ This library is free software; you can redistribute it and/or\
+ modify it under the terms of the GNU Lesser General Public\
+ License as published by the Free Software Foundation; either\
+ version 2.1 of the License, or (at your option) any later version.\
+\
+ This library is distributed in the hope that it will be useful,\
+ but WITHOUT ANY WARRANTY; without even the implied warranty of\
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\
+ Lesser General Public License for more details.\
+\
+ You should have received a copy of the GNU Lesser General Public\
+ License along with this library; if not, write to the Free Software\
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\
+\
+Also add information on how to contact you by electronic and paper mail.\
+\
+You should also get your employer (if you work as a programmer) or your\
+school, if any, to sign a "copyright disclaimer" for the library, if\
+necessary. Here is a sample; alter the names:\
+\
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the\
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.\
+\
+ <signature of Ty Coon>, 1 April 1990\
+ Ty Coon, President of Vice\
+\
+That's all there is to it!\
+\
+\
+\
+}
\ No newline at end of file
diff --git a/installer/macosx/PkgResources/CsoundLib/ReadMe.rtf b/installer/macosx/PkgResources/CsoundLib/ReadMe.rtf
new file mode 100755
index 0000000..7f7ab7a
--- /dev/null
+++ b/installer/macosx/PkgResources/CsoundLib/ReadMe.rtf
@@ -0,0 +1,11 @@
+{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\margl1440\margr1440\vieww16680\viewh9760\viewkind0
+\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural
+
+\f0\fs24 \cf0 Csound 5 Library (API version 2) Framework, 32-bit floats\
+\
+Victor Lazzarini, 2005\
+(c) 2005, The Csound Team, csound.sf.net\
+}
\ No newline at end of file
diff --git a/installer/macosx/PkgResources/CsoundLib/Welcome.rtf b/installer/macosx/PkgResources/CsoundLib/Welcome.rtf
new file mode 100755
index 0000000..499cbdb
--- /dev/null
+++ b/installer/macosx/PkgResources/CsoundLib/Welcome.rtf
@@ -0,0 +1,16 @@
+{\rtf1\mac\ansicpg10000\cocoartf102
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\margl1440\margr1440\vieww9000\viewh9000\viewkind0
+\pard\tx565\tx1133\tx1700\tx2266\tx2833\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural
+
+\f0\fs24 \cf0 You are about to install the Csound 5 library in your\
+computer. This software will allow you to run Csound 5\
+applications.\
+\
+The Csound Team\
+csound.sf.net\
+\
+\
+\
+}
\ No newline at end of file
diff --git a/installer/macosx/PkgResources/CsoundLib/postinstall b/installer/macosx/PkgResources/CsoundLib/postinstall
new file mode 100755
index 0000000..0d76464
--- /dev/null
+++ b/installer/macosx/PkgResources/CsoundLib/postinstall
@@ -0,0 +1,3 @@
+#!/bin/sh
+#/bin/ln -sf /Library/Frameworks/CsoundLib.framework/Resources/Java/lib_jcsound.jnilib /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Libraries/lib_jcsound.jnilib
+
diff --git a/installer/macosx/PkgResources/CsoundLib/postupgrade b/installer/macosx/PkgResources/CsoundLib/postupgrade
new file mode 100755
index 0000000..0d76464
--- /dev/null
+++ b/installer/macosx/PkgResources/CsoundLib/postupgrade
@@ -0,0 +1,3 @@
+#!/bin/sh
+#/bin/ln -sf /Library/Frameworks/CsoundLib.framework/Resources/Java/lib_jcsound.jnilib /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Libraries/lib_jcsound.jnilib
+
diff --git a/installer/macosx/PkgResources/CsoundLib/preinstall b/installer/macosx/PkgResources/CsoundLib/preinstall
new file mode 100755
index 0000000..96edde3
--- /dev/null
+++ b/installer/macosx/PkgResources/CsoundLib/preinstall
@@ -0,0 +1,4 @@
+#!/bin/sh
+if /bin/test -d /Library/Frameworks/CsoundLib.Framework
+then /bin/rm -R /Library/Frameworks/CsoundLib.Framework
+fi
\ No newline at end of file
diff --git a/installer/macosx/PkgResources/CsoundLib/preupgrade b/installer/macosx/PkgResources/CsoundLib/preupgrade
new file mode 100755
index 0000000..96edde3
--- /dev/null
+++ b/installer/macosx/PkgResources/CsoundLib/preupgrade
@@ -0,0 +1,4 @@
+#!/bin/sh
+if /bin/test -d /Library/Frameworks/CsoundLib.Framework
+then /bin/rm -R /Library/Frameworks/CsoundLib.Framework
+fi
\ No newline at end of file
diff --git a/installer/macosx/PkgResources/CsoundLib64/License.rtf b/installer/macosx/PkgResources/CsoundLib64/License.rtf
new file mode 100755
index 0000000..5ddd899
--- /dev/null
+++ b/installer/macosx/PkgResources/CsoundLib64/License.rtf
@@ -0,0 +1,521 @@
+{\rtf1\mac\ansicpg10000\cocoartf102
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\margl1440\margr1440\vieww9000\viewh9000\viewkind0
+\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural
+
+\f0\fs24 \cf0 GNU LESSER GENERAL PUBLIC LICENSE\
+ Version 2.1, February 1999\
+\
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.\
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\
+ Everyone is permitted to copy and distribute verbatim copies\
+ of this license document, but changing it is not allowed.\
+\
+[This is the first released version of the Lesser GPL. It also counts\
+ as the successor of the GNU Library Public License, version 2, hence\
+ the version number 2.1.]\
+\
+ Preamble\
+\
+ The licenses for most software are designed to take away your\
+freedom to share and change it. By contrast, the GNU General Public\
+Licenses are intended to guarantee your freedom to share and change\
+free software--to make sure the software is free for all its users.\
+\
+ This license, the Lesser General Public License, applies to some\
+specially designated software packages--typically libraries--of the\
+Free Software Foundation and other authors who decide to use it. You\
+can use it too, but we suggest you first think carefully about whether\
+this license or the ordinary General Public License is the better\
+strategy to use in any particular case, based on the explanations below.\
+\
+ When we speak of free software, we are referring to freedom of use,\
+not price. Our General Public Licenses are designed to make sure that\
+you have the freedom to distribute copies of free software (and charge\
+for this service if you wish); that you receive source code or can get\
+it if you want it; that you can change the software and use pieces of\
+it in new free programs; and that you are informed that you can do\
+these things.\
+\
+ To protect your rights, we need to make restrictions that forbid\
+distributors to deny you these rights or to ask you to surrender these\
+rights. These restrictions translate to certain responsibilities for\
+you if you distribute copies of the library or if you modify it.\
+\
+ For example, if you distribute copies of the library, whether gratis\
+or for a fee, you must give the recipients all the rights that we gave\
+you. You must make sure that they, too, receive or can get the source\
+code. If you link other code with the library, you must provide\
+complete object files to the recipients, so that they can relink them\
+with the library after making changes to the library and recompiling\
+it. And you must show them these terms so they know their rights.\
+\
+ We protect your rights with a two-step method: (1) we copyright the\
+library, and (2) we offer you this license, which gives you legal\
+permission to copy, distribute and/or modify the library.\
+\
+ To protect each distributor, we want to make it very clear that\
+there is no warranty for the free library. Also, if the library is\
+modified by someone else and passed on, the recipients should know\
+that what they have is not the original version, so that the original\
+author's reputation will not be affected by problems that might be\
+introduced by others.\
+\
+\page \
+ Finally, software patents pose a constant threat to the existence of\
+any free program. We wish to make sure that a company cannot\
+effectively restrict the users of a free program by obtaining a\
+restrictive license from a patent holder. Therefore, we insist that\
+any patent license obtained for a version of the library must be\
+consistent with the full freedom of use specified in this license.\
+\
+ Most GNU software, including some libraries, is covered by the\
+ordinary GNU General Public License. This license, the GNU Lesser\
+General Public License, applies to certain designated libraries, and\
+is quite different from the ordinary General Public License. We use\
+this license for certain libraries in order to permit linking those\
+libraries into non-free programs.\
+\
+ When a program is linked with a library, whether statically or using\
+a shared library, the combination of the two is legally speaking a\
+combined work, a derivative of the original library. The ordinary\
+General Public License therefore permits such linking only if the\
+entire combination fits its criteria of freedom. The Lesser General\
+Public License permits more lax criteria for linking other code with\
+the library.\
+\
+ We call this license the "Lesser" General Public License because it\
+does Less to protect the user's freedom than the ordinary General\
+Public License. It also provides other free software developers Less\
+of an advantage over competing non-free programs. These disadvantages\
+are the reason we use the ordinary General Public License for many\
+libraries. However, the Lesser license provides advantages in certain\
+special circumstances.\
+\
+ For example, on rare occasions, there may be a special need to\
+encourage the widest possible use of a certain library, so that it becomes\
+a de-facto standard. To achieve this, non-free programs must be\
+allowed to use the library. A more frequent case is that a free\
+library does the same job as widely used non-free libraries. In this\
+case, there is little to gain by limiting the free library to free\
+software only, so we use the Lesser General Public License.\
+\
+ In other cases, permission to use a particular library in non-free\
+programs enables a greater number of people to use a large body of\
+free software. For example, permission to use the GNU C Library in\
+non-free programs enables many more people to use the whole GNU\
+operating system, as well as its variant, the GNU/Linux operating\
+system.\
+\
+ Although the Lesser General Public License is Less protective of the\
+users' freedom, it does ensure that the user of a program that is\
+linked with the Library has the freedom and the wherewithal to run\
+that program using a modified version of the Library.\
+\
+ The precise terms and conditions for copying, distribution and\
+modification follow. Pay close attention to the difference between a\
+"work based on the library" and a "work that uses the library". The\
+former contains code derived from the library, whereas the latter must\
+be combined with the library in order to run.\
+\
+\page \
+ GNU LESSER GENERAL PUBLIC LICENSE\
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\
+\
+ 0. This License Agreement applies to any software library or other\
+program which contains a notice placed by the copyright holder or\
+other authorized party saying it may be distributed under the terms of\
+this Lesser General Public License (also called "this License").\
+Each licensee is addressed as "you".\
+\
+ A "library" means a collection of software functions and/or data\
+prepared so as to be conveniently linked with application programs\
+(which use some of those functions and data) to form executables.\
+\
+ The "Library", below, refers to any such software library or work\
+which has been distributed under these terms. A "work based on the\
+Library" means either the Library or any derivative work under\
+copyright law: that is to say, a work containing the Library or a\
+portion of it, either verbatim or with modifications and/or translated\
+straightforwardly into another language. (Hereinafter, translation is\
+included without limitation in the term "modification".)\
+\
+ "Source code" for a work means the preferred form of the work for\
+making modifications to it. For a library, complete source code means\
+all the source code for all modules it contains, plus any associated\
+interface definition files, plus the scripts used to control compilation\
+and installation of the library.\
+\
+ Activities other than copying, distribution and modification are not\
+covered by this License; they are outside its scope. The act of\
+running a program using the Library is not restricted, and output from\
+such a program is covered only if its contents constitute a work based\
+on the Library (independent of the use of the Library in a tool for\
+writing it). Whether that is true depends on what the Library does\
+and what the program that uses the Library does.\
+ \
+ 1. You may copy and distribute verbatim copies of the Library's\
+complete source code as you receive it, in any medium, provided that\
+you conspicuously and appropriately publish on each copy an\
+appropriate copyright notice and disclaimer of warranty; keep intact\
+all the notices that refer to this License and to the absence of any\
+warranty; and distribute a copy of this License along with the\
+Library.\
+\
+ You may charge a fee for the physical act of transferring a copy,\
+and you may at your option offer warranty protection in exchange for a\
+fee.\
+\
+\page \
+ 2. You may modify your copy or copies of the Library or any portion\
+of it, thus forming a work based on the Library, and copy and\
+distribute such modifications or work under the terms of Section 1\
+above, provided that you also meet all of these conditions:\
+\
+ a) The modified work must itself be a software library.\
+\
+ b) You must cause the files modified to carry prominent notices\
+ stating that you changed the files and the date of any change.\
+\
+ c) You must cause the whole of the work to be licensed at no\
+ charge to all third parties under the terms of this License.\
+\
+ d) If a facility in the modified Library refers to a function or a\
+ table of data to be supplied by an application program that uses\
+ the facility, other than as an argument passed when the facility\
+ is invoked, then you must make a good faith effort to ensure that,\
+ in the event an application does not supply such function or\
+ table, the facility still operates, and performs whatever part of\
+ its purpose remains meaningful.\
+\
+ (For example, a function in a library to compute square roots has\
+ a purpose that is entirely well-defined independent of the\
+ application. Therefore, Subsection 2d requires that any\
+ application-supplied function or table used by this function must\
+ be optional: if the application does not supply it, the square\
+ root function must still compute square roots.)\
+\
+These requirements apply to the modified work as a whole. If\
+identifiable sections of that work are not derived from the Library,\
+and can be reasonably considered independent and separate works in\
+themselves, then this License, and its terms, do not apply to those\
+sections when you distribute them as separate works. But when you\
+distribute the same sections as part of a whole which is a work based\
+on the Library, the distribution of the whole must be on the terms of\
+this License, whose permissions for other licensees extend to the\
+entire whole, and thus to each and every part regardless of who wrote\
+it.\
+\
+Thus, it is not the intent of this section to claim rights or contest\
+your rights to work written entirely by you; rather, the intent is to\
+exercise the right to control the distribution of derivative or\
+collective works based on the Library.\
+\
+In addition, mere aggregation of another work not based on the Library\
+with the Library (or with a work based on the Library) on a volume of\
+a storage or distribution medium does not bring the other work under\
+the scope of this License.\
+\
+ 3. You may opt to apply the terms of the ordinary GNU General Public\
+License instead of this License to a given copy of the Library. To do\
+this, you must alter all the notices that refer to this License, so\
+that they refer to the ordinary GNU General Public License, version 2,\
+instead of to this License. (If a newer version than version 2 of the\
+ordinary GNU General Public License has appeared, then you can specify\
+that version instead if you wish.) Do not make any other change in\
+these notices.\
+\
+\page \
+ Once this change is made in a given copy, it is irreversible for\
+that copy, so the ordinary GNU General Public License applies to all\
+subsequent copies and derivative works made from that copy.\
+\
+ This option is useful when you wish to copy part of the code of\
+the Library into a program that is not a library.\
+\
+ 4. You may copy and distribute the Library (or a portion or\
+derivative of it, under Section 2) in object code or executable form\
+under the terms of Sections 1 and 2 above provided that you accompany\
+it with the complete corresponding machine-readable source code, which\
+must be distributed under the terms of Sections 1 and 2 above on a\
+medium customarily used for software interchange.\
+\
+ If distribution of object code is made by offering access to copy\
+from a designated place, then offering equivalent access to copy the\
+source code from the same place satisfies the requirement to\
+distribute the source code, even though third parties are not\
+compelled to copy the source along with the object code.\
+\
+ 5. A program that contains no derivative of any portion of the\
+Library, but is designed to work with the Library by being compiled or\
+linked with it, is called a "work that uses the Library". Such a\
+work, in isolation, is not a derivative work of the Library, and\
+therefore falls outside the scope of this License.\
+\
+ However, linking a "work that uses the Library" with the Library\
+creates an executable that is a derivative of the Library (because it\
+contains portions of the Library), rather than a "work that uses the\
+library". The executable is therefore covered by this License.\
+Section 6 states terms for distribution of such executables.\
+\
+ When a "work that uses the Library" uses material from a header file\
+that is part of the Library, the object code for the work may be a\
+derivative work of the Library even though the source code is not.\
+Whether this is true is especially significant if the work can be\
+linked without the Library, or if the work is itself a library. The\
+threshold for this to be true is not precisely defined by law.\
+\
+ If such an object file uses only numerical parameters, data\
+structure layouts and accessors, and small macros and small inline\
+functions (ten lines or less in length), then the use of the object\
+file is unrestricted, regardless of whether it is legally a derivative\
+work. (Executables containing this object code plus portions of the\
+Library will still fall under Section 6.)\
+\
+ Otherwise, if the work is a derivative of the Library, you may\
+distribute the object code for the work under the terms of Section 6.\
+Any executables containing that work also fall under Section 6,\
+whether or not they are linked directly with the Library itself.\
+\
+\page \
+ 6. As an exception to the Sections above, you may also combine or\
+link a "work that uses the Library" with the Library to produce a\
+work containing portions of the Library, and distribute that work\
+under terms of your choice, provided that the terms permit\
+modification of the work for the customer's own use and reverse\
+engineering for debugging such modifications.\
+\
+ You must give prominent notice with each copy of the work that the\
+Library is used in it and that the Library and its use are covered by\
+this License. You must supply a copy of this License. If the work\
+during execution displays copyright notices, you must include the\
+copyright notice for the Library among them, as well as a reference\
+directing the user to the copy of this License. Also, you must do one\
+of these things:\
+\
+ a) Accompany the work with the complete corresponding\
+ machine-readable source code for the Library including whatever\
+ changes were used in the work (which must be distributed under\
+ Sections 1 and 2 above); and, if the work is an executable linked\
+ with the Library, with the complete machine-readable "work that\
+ uses the Library", as object code and/or source code, so that the\
+ user can modify the Library and then relink to produce a modified\
+ executable containing the modified Library. (It is understood\
+ that the user who changes the contents of definitions files in the\
+ Library will not necessarily be able to recompile the application\
+ to use the modified definitions.)\
+\
+ b) Use a suitable shared library mechanism for linking with the\
+ Library. A suitable mechanism is one that (1) uses at run time a\
+ copy of the library already present on the user's computer system,\
+ rather than copying library functions into the executable, and (2)\
+ will operate properly with a modified version of the library, if\
+ the user installs one, as long as the modified version is\
+ interface-compatible with the version that the work was made with.\
+\
+ c) Accompany the work with a written offer, valid for at\
+ least three years, to give the same user the materials\
+ specified in Subsection 6a, above, for a charge no more\
+ than the cost of performing this distribution.\
+\
+ d) If distribution of the work is made by offering access to copy\
+ from a designated place, offer equivalent access to copy the above\
+ specified materials from the same place.\
+\
+ e) Verify that the user has already received a copy of these\
+ materials or that you have already sent this user a copy.\
+\
+ For an executable, the required form of the "work that uses the\
+Library" must include any data and utility programs needed for\
+reproducing the executable from it. However, as a special exception,\
+the materials to be distributed need not include anything that is\
+normally distributed (in either source or binary form) with the major\
+components (compiler, kernel, and so on) of the operating system on\
+which the executable runs, unless that component itself accompanies\
+the executable.\
+\
+ It may happen that this requirement contradicts the license\
+restrictions of other proprietary libraries that do not normally\
+accompany the operating system. Such a contradiction means you cannot\
+use both them and the Library together in an executable that you\
+distribute.\
+\
+\page \
+ 7. You may place library facilities that are a work based on the\
+Library side-by-side in a single library together with other library\
+facilities not covered by this License, and distribute such a combined\
+library, provided that the separate distribution of the work based on\
+the Library and of the other library facilities is otherwise\
+permitted, and provided that you do these two things:\
+\
+ a) Accompany the combined library with a copy of the same work\
+ based on the Library, uncombined with any other library\
+ facilities. This must be distributed under the terms of the\
+ Sections above.\
+\
+ b) Give prominent notice with the combined library of the fact\
+ that part of it is a work based on the Library, and explaining\
+ where to find the accompanying uncombined form of the same work.\
+\
+ 8. You may not copy, modify, sublicense, link with, or distribute\
+the Library except as expressly provided under this License. Any\
+attempt otherwise to copy, modify, sublicense, link with, or\
+distribute the Library is void, and will automatically terminate your\
+rights under this License. However, parties who have received copies,\
+or rights, from you under this License will not have their licenses\
+terminated so long as such parties remain in full compliance.\
+\
+ 9. You are not required to accept this License, since you have not\
+signed it. However, nothing else grants you permission to modify or\
+distribute the Library or its derivative works. These actions are\
+prohibited by law if you do not accept this License. Therefore, by\
+modifying or distributing the Library (or any work based on the\
+Library), you indicate your acceptance of this License to do so, and\
+all its terms and conditions for copying, distributing or modifying\
+the Library or works based on it.\
+\
+ 10. Each time you redistribute the Library (or any work based on the\
+Library), the recipient automatically receives a license from the\
+original licensor to copy, distribute, link with or modify the Library\
+subject to these terms and conditions. You may not impose any further\
+restrictions on the recipients' exercise of the rights granted herein.\
+You are not responsible for enforcing compliance by third parties with\
+this License.\
+\
+\page \
+ 11. If, as a consequence of a court judgment or allegation of patent\
+infringement or for any other reason (not limited to patent issues),\
+conditions are imposed on you (whether by court order, agreement or\
+otherwise) that contradict the conditions of this License, they do not\
+excuse you from the conditions of this License. If you cannot\
+distribute so as to satisfy simultaneously your obligations under this\
+License and any other pertinent obligations, then as a consequence you\
+may not distribute the Library at all. For example, if a patent\
+license would not permit royalty-free redistribution of the Library by\
+all those who receive copies directly or indirectly through you, then\
+the only way you could satisfy both it and this License would be to\
+refrain entirely from distribution of the Library.\
+\
+If any portion of this section is held invalid or unenforceable under any\
+particular circumstance, the balance of the section is intended to apply,\
+and the section as a whole is intended to apply in other circumstances.\
+\
+It is not the purpose of this section to induce you to infringe any\
+patents or other property right claims or to contest validity of any\
+such claims; this section has the sole purpose of protecting the\
+integrity of the free software distribution system which is\
+implemented by public license practices. Many people have made\
+generous contributions to the wide range of software distributed\
+through that system in reliance on consistent application of that\
+system; it is up to the author/donor to decide if he or she is willing\
+to distribute software through any other system and a licensee cannot\
+impose that choice.\
+\
+This section is intended to make thoroughly clear what is believed to\
+be a consequence of the rest of this License.\
+\
+ 12. If the distribution and/or use of the Library is restricted in\
+certain countries either by patents or by copyrighted interfaces, the\
+original copyright holder who places the Library under this License may add\
+an explicit geographical distribution limitation excluding those countries,\
+so that distribution is permitted only in or among countries not thus\
+excluded. In such case, this License incorporates the limitation as if\
+written in the body of this License.\
+\
+ 13. The Free Software Foundation may publish revised and/or new\
+versions of the Lesser General Public License from time to time.\
+Such new versions will be similar in spirit to the present version,\
+but may differ in detail to address new problems or concerns.\
+\
+Each version is given a distinguishing version number. If the Library\
+specifies a version number of this License which applies to it and\
+"any later version", you have the option of following the terms and\
+conditions either of that version or of any later version published by\
+the Free Software Foundation. If the Library does not specify a\
+license version number, you may choose any version ever published by\
+the Free Software Foundation.\
+\
+\page \
+ 14. If you wish to incorporate parts of the Library into other free\
+programs whose distribution conditions are incompatible with these,\
+write to the author to ask for permission. For software which is\
+copyrighted by the Free Software Foundation, write to the Free\
+Software Foundation; we sometimes make exceptions for this. Our\
+decision will be guided by the two goals of preserving the free status\
+of all derivatives of our free software and of promoting the sharing\
+and reuse of software generally.\
+\
+ NO WARRANTY\
+\
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY\
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\
+\
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\
+DAMAGES.\
+\
+ END OF TERMS AND CONDITIONS\
+\
+\page \
+ How to Apply These Terms to Your New Libraries\
+\
+ If you develop a new library, and you want it to be of the greatest\
+possible use to the public, we recommend making it free software that\
+everyone can redistribute and change. You can do so by permitting\
+redistribution under these terms (or, alternatively, under the terms of the\
+ordinary General Public License).\
+\
+ To apply these terms, attach the following notices to the library. It is\
+safest to attach them to the start of each source file to most effectively\
+convey the exclusion of warranty; and each file should have at least the\
+"copyright" line and a pointer to where the full notice is found.\
+\
+ <one line to give the library's name and a brief idea of what it does.>\
+ Copyright (C) <year> <name of author>\
+\
+ This library is free software; you can redistribute it and/or\
+ modify it under the terms of the GNU Lesser General Public\
+ License as published by the Free Software Foundation; either\
+ version 2.1 of the License, or (at your option) any later version.\
+\
+ This library is distributed in the hope that it will be useful,\
+ but WITHOUT ANY WARRANTY; without even the implied warranty of\
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\
+ Lesser General Public License for more details.\
+\
+ You should have received a copy of the GNU Lesser General Public\
+ License along with this library; if not, write to the Free Software\
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\
+\
+Also add information on how to contact you by electronic and paper mail.\
+\
+You should also get your employer (if you work as a programmer) or your\
+school, if any, to sign a "copyright disclaimer" for the library, if\
+necessary. Here is a sample; alter the names:\
+\
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the\
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.\
+\
+ <signature of Ty Coon>, 1 April 1990\
+ Ty Coon, President of Vice\
+\
+That's all there is to it!\
+\
+\
+\
+}
\ No newline at end of file
diff --git a/installer/macosx/PkgResources/CsoundLib64/ReadMe.rtf b/installer/macosx/PkgResources/CsoundLib64/ReadMe.rtf
new file mode 100755
index 0000000..345ccdc
--- /dev/null
+++ b/installer/macosx/PkgResources/CsoundLib64/ReadMe.rtf
@@ -0,0 +1,12 @@
+{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\margl1440\margr1440\vieww16680\viewh9760\viewkind0
+\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural
+
+\f0\fs24 \cf0 Csound 5 Library (API version 2) Framework, 64-bit floats\
+\
+\
+Victor Lazzarini, 2005\
+(c) 2005, The Csound Team, csound.sf.net\
+}
\ No newline at end of file
diff --git a/installer/macosx/PkgResources/CsoundLib64/Welcome.rtf b/installer/macosx/PkgResources/CsoundLib64/Welcome.rtf
new file mode 100755
index 0000000..499cbdb
--- /dev/null
+++ b/installer/macosx/PkgResources/CsoundLib64/Welcome.rtf
@@ -0,0 +1,16 @@
+{\rtf1\mac\ansicpg10000\cocoartf102
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\margl1440\margr1440\vieww9000\viewh9000\viewkind0
+\pard\tx565\tx1133\tx1700\tx2266\tx2833\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural
+
+\f0\fs24 \cf0 You are about to install the Csound 5 library in your\
+computer. This software will allow you to run Csound 5\
+applications.\
+\
+The Csound Team\
+csound.sf.net\
+\
+\
+\
+}
\ No newline at end of file
diff --git a/installer/macosx/PkgResources/CsoundLib64/postinstall b/installer/macosx/PkgResources/CsoundLib64/postinstall
new file mode 100755
index 0000000..b22c136
--- /dev/null
+++ b/installer/macosx/PkgResources/CsoundLib64/postinstall
@@ -0,0 +1,29 @@
+#!/bin/sh
+/bin/ln -sF /Library/Frameworks/CsoundLib64.framework/Resources/Java/lib_jcsound.jnilib /Library/Java/Extensions/lib_jcsound.jnilib
+
+PY_SRC_DIR="/Library/Frameworks/CsoundLib64.framework/Resources/Python/Current"
+
+PYTHON_DIR="/Library/Python/2.7/site-packages"
+if [ -d "$PYTHON_DIR" ]; then
+ /bin/ln -sF $PY_SRC_DIR/CsoundAC.py $PYTHON_DIR
+ /bin/ln -sF $PY_SRC_DIR/_CsoundAC.so $PYTHON_DIR
+ /bin/ln -sF $PY_SRC_DIR/_csnd.so $PYTHON_DIR
+ /bin/ln -sF $PY_SRC_DIR/csnd.py $PYTHON_DIR
+fi
+
+
+PYTHON_DIR="/Library/Python/2.6/site-packages"
+if [ -d "$PYTHON_DIR" ]; then
+ /bin/ln -sF $PY_SRC_DIR/CsoundAC.py $PYTHON_DIR
+ /bin/ln -sF $PY_SRC_DIR/_CsoundAC.so $PYTHON_DIR
+ /bin/ln -sF $PY_SRC_DIR/_csnd.so $PYTHON_DIR
+ /bin/ln -sF $PY_SRC_DIR/csnd.py $PYTHON_DIR
+fi
+
+PYTHON_DIR="/Library/Python/2.5/site-packages"
+if [ -d "$PYTHON_DIR" ]; then
+ /bin/ln -sF $PY_SRC_DIR/CsoundAC.py $PYTHON_DIR
+ /bin/ln -sF $PY_SRC_DIR/_CsoundAC.so $PYTHON_DIR
+ /bin/ln -sF $PY_SRC_DIR/_csnd.so $PYTHON_DIR
+ /bin/ln -sF $PY_SRC_DIR/csnd.py $PYTHON_DIR
+fi
diff --git a/installer/macosx/PkgResources/CsoundLib64/postupgrade b/installer/macosx/PkgResources/CsoundLib64/postupgrade
new file mode 100755
index 0000000..b22c136
--- /dev/null
+++ b/installer/macosx/PkgResources/CsoundLib64/postupgrade
@@ -0,0 +1,29 @@
+#!/bin/sh
+/bin/ln -sF /Library/Frameworks/CsoundLib64.framework/Resources/Java/lib_jcsound.jnilib /Library/Java/Extensions/lib_jcsound.jnilib
+
+PY_SRC_DIR="/Library/Frameworks/CsoundLib64.framework/Resources/Python/Current"
+
+PYTHON_DIR="/Library/Python/2.7/site-packages"
+if [ -d "$PYTHON_DIR" ]; then
+ /bin/ln -sF $PY_SRC_DIR/CsoundAC.py $PYTHON_DIR
+ /bin/ln -sF $PY_SRC_DIR/_CsoundAC.so $PYTHON_DIR
+ /bin/ln -sF $PY_SRC_DIR/_csnd.so $PYTHON_DIR
+ /bin/ln -sF $PY_SRC_DIR/csnd.py $PYTHON_DIR
+fi
+
+
+PYTHON_DIR="/Library/Python/2.6/site-packages"
+if [ -d "$PYTHON_DIR" ]; then
+ /bin/ln -sF $PY_SRC_DIR/CsoundAC.py $PYTHON_DIR
+ /bin/ln -sF $PY_SRC_DIR/_CsoundAC.so $PYTHON_DIR
+ /bin/ln -sF $PY_SRC_DIR/_csnd.so $PYTHON_DIR
+ /bin/ln -sF $PY_SRC_DIR/csnd.py $PYTHON_DIR
+fi
+
+PYTHON_DIR="/Library/Python/2.5/site-packages"
+if [ -d "$PYTHON_DIR" ]; then
+ /bin/ln -sF $PY_SRC_DIR/CsoundAC.py $PYTHON_DIR
+ /bin/ln -sF $PY_SRC_DIR/_CsoundAC.so $PYTHON_DIR
+ /bin/ln -sF $PY_SRC_DIR/_csnd.so $PYTHON_DIR
+ /bin/ln -sF $PY_SRC_DIR/csnd.py $PYTHON_DIR
+fi
diff --git a/installer/macosx/PkgResources/CsoundLib64/preinstall b/installer/macosx/PkgResources/CsoundLib64/preinstall
new file mode 100755
index 0000000..fed3638
--- /dev/null
+++ b/installer/macosx/PkgResources/CsoundLib64/preinstall
@@ -0,0 +1,4 @@
+#!/bin/sh
+if /bin/test -d /Library/Frameworks/CsoundLib64.Framework
+then /bin/rm -R /Library/Frameworks/CsoundLib64.Framework
+fi
\ No newline at end of file
diff --git a/installer/macosx/PkgResources/CsoundLib64/preupgrade b/installer/macosx/PkgResources/CsoundLib64/preupgrade
new file mode 100755
index 0000000..fed3638
--- /dev/null
+++ b/installer/macosx/PkgResources/CsoundLib64/preupgrade
@@ -0,0 +1,4 @@
+#!/bin/sh
+if /bin/test -d /Library/Frameworks/CsoundLib64.Framework
+then /bin/rm -R /Library/Frameworks/CsoundLib64.Framework
+fi
\ No newline at end of file
diff --git a/installer/macosx/PkgResources/SupportLibs/License.rtf b/installer/macosx/PkgResources/SupportLibs/License.rtf
new file mode 100755
index 0000000..5ddd899
--- /dev/null
+++ b/installer/macosx/PkgResources/SupportLibs/License.rtf
@@ -0,0 +1,521 @@
+{\rtf1\mac\ansicpg10000\cocoartf102
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\margl1440\margr1440\vieww9000\viewh9000\viewkind0
+\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural
+
+\f0\fs24 \cf0 GNU LESSER GENERAL PUBLIC LICENSE\
+ Version 2.1, February 1999\
+\
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.\
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\
+ Everyone is permitted to copy and distribute verbatim copies\
+ of this license document, but changing it is not allowed.\
+\
+[This is the first released version of the Lesser GPL. It also counts\
+ as the successor of the GNU Library Public License, version 2, hence\
+ the version number 2.1.]\
+\
+ Preamble\
+\
+ The licenses for most software are designed to take away your\
+freedom to share and change it. By contrast, the GNU General Public\
+Licenses are intended to guarantee your freedom to share and change\
+free software--to make sure the software is free for all its users.\
+\
+ This license, the Lesser General Public License, applies to some\
+specially designated software packages--typically libraries--of the\
+Free Software Foundation and other authors who decide to use it. You\
+can use it too, but we suggest you first think carefully about whether\
+this license or the ordinary General Public License is the better\
+strategy to use in any particular case, based on the explanations below.\
+\
+ When we speak of free software, we are referring to freedom of use,\
+not price. Our General Public Licenses are designed to make sure that\
+you have the freedom to distribute copies of free software (and charge\
+for this service if you wish); that you receive source code or can get\
+it if you want it; that you can change the software and use pieces of\
+it in new free programs; and that you are informed that you can do\
+these things.\
+\
+ To protect your rights, we need to make restrictions that forbid\
+distributors to deny you these rights or to ask you to surrender these\
+rights. These restrictions translate to certain responsibilities for\
+you if you distribute copies of the library or if you modify it.\
+\
+ For example, if you distribute copies of the library, whether gratis\
+or for a fee, you must give the recipients all the rights that we gave\
+you. You must make sure that they, too, receive or can get the source\
+code. If you link other code with the library, you must provide\
+complete object files to the recipients, so that they can relink them\
+with the library after making changes to the library and recompiling\
+it. And you must show them these terms so they know their rights.\
+\
+ We protect your rights with a two-step method: (1) we copyright the\
+library, and (2) we offer you this license, which gives you legal\
+permission to copy, distribute and/or modify the library.\
+\
+ To protect each distributor, we want to make it very clear that\
+there is no warranty for the free library. Also, if the library is\
+modified by someone else and passed on, the recipients should know\
+that what they have is not the original version, so that the original\
+author's reputation will not be affected by problems that might be\
+introduced by others.\
+\
+\page \
+ Finally, software patents pose a constant threat to the existence of\
+any free program. We wish to make sure that a company cannot\
+effectively restrict the users of a free program by obtaining a\
+restrictive license from a patent holder. Therefore, we insist that\
+any patent license obtained for a version of the library must be\
+consistent with the full freedom of use specified in this license.\
+\
+ Most GNU software, including some libraries, is covered by the\
+ordinary GNU General Public License. This license, the GNU Lesser\
+General Public License, applies to certain designated libraries, and\
+is quite different from the ordinary General Public License. We use\
+this license for certain libraries in order to permit linking those\
+libraries into non-free programs.\
+\
+ When a program is linked with a library, whether statically or using\
+a shared library, the combination of the two is legally speaking a\
+combined work, a derivative of the original library. The ordinary\
+General Public License therefore permits such linking only if the\
+entire combination fits its criteria of freedom. The Lesser General\
+Public License permits more lax criteria for linking other code with\
+the library.\
+\
+ We call this license the "Lesser" General Public License because it\
+does Less to protect the user's freedom than the ordinary General\
+Public License. It also provides other free software developers Less\
+of an advantage over competing non-free programs. These disadvantages\
+are the reason we use the ordinary General Public License for many\
+libraries. However, the Lesser license provides advantages in certain\
+special circumstances.\
+\
+ For example, on rare occasions, there may be a special need to\
+encourage the widest possible use of a certain library, so that it becomes\
+a de-facto standard. To achieve this, non-free programs must be\
+allowed to use the library. A more frequent case is that a free\
+library does the same job as widely used non-free libraries. In this\
+case, there is little to gain by limiting the free library to free\
+software only, so we use the Lesser General Public License.\
+\
+ In other cases, permission to use a particular library in non-free\
+programs enables a greater number of people to use a large body of\
+free software. For example, permission to use the GNU C Library in\
+non-free programs enables many more people to use the whole GNU\
+operating system, as well as its variant, the GNU/Linux operating\
+system.\
+\
+ Although the Lesser General Public License is Less protective of the\
+users' freedom, it does ensure that the user of a program that is\
+linked with the Library has the freedom and the wherewithal to run\
+that program using a modified version of the Library.\
+\
+ The precise terms and conditions for copying, distribution and\
+modification follow. Pay close attention to the difference between a\
+"work based on the library" and a "work that uses the library". The\
+former contains code derived from the library, whereas the latter must\
+be combined with the library in order to run.\
+\
+\page \
+ GNU LESSER GENERAL PUBLIC LICENSE\
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\
+\
+ 0. This License Agreement applies to any software library or other\
+program which contains a notice placed by the copyright holder or\
+other authorized party saying it may be distributed under the terms of\
+this Lesser General Public License (also called "this License").\
+Each licensee is addressed as "you".\
+\
+ A "library" means a collection of software functions and/or data\
+prepared so as to be conveniently linked with application programs\
+(which use some of those functions and data) to form executables.\
+\
+ The "Library", below, refers to any such software library or work\
+which has been distributed under these terms. A "work based on the\
+Library" means either the Library or any derivative work under\
+copyright law: that is to say, a work containing the Library or a\
+portion of it, either verbatim or with modifications and/or translated\
+straightforwardly into another language. (Hereinafter, translation is\
+included without limitation in the term "modification".)\
+\
+ "Source code" for a work means the preferred form of the work for\
+making modifications to it. For a library, complete source code means\
+all the source code for all modules it contains, plus any associated\
+interface definition files, plus the scripts used to control compilation\
+and installation of the library.\
+\
+ Activities other than copying, distribution and modification are not\
+covered by this License; they are outside its scope. The act of\
+running a program using the Library is not restricted, and output from\
+such a program is covered only if its contents constitute a work based\
+on the Library (independent of the use of the Library in a tool for\
+writing it). Whether that is true depends on what the Library does\
+and what the program that uses the Library does.\
+ \
+ 1. You may copy and distribute verbatim copies of the Library's\
+complete source code as you receive it, in any medium, provided that\
+you conspicuously and appropriately publish on each copy an\
+appropriate copyright notice and disclaimer of warranty; keep intact\
+all the notices that refer to this License and to the absence of any\
+warranty; and distribute a copy of this License along with the\
+Library.\
+\
+ You may charge a fee for the physical act of transferring a copy,\
+and you may at your option offer warranty protection in exchange for a\
+fee.\
+\
+\page \
+ 2. You may modify your copy or copies of the Library or any portion\
+of it, thus forming a work based on the Library, and copy and\
+distribute such modifications or work under the terms of Section 1\
+above, provided that you also meet all of these conditions:\
+\
+ a) The modified work must itself be a software library.\
+\
+ b) You must cause the files modified to carry prominent notices\
+ stating that you changed the files and the date of any change.\
+\
+ c) You must cause the whole of the work to be licensed at no\
+ charge to all third parties under the terms of this License.\
+\
+ d) If a facility in the modified Library refers to a function or a\
+ table of data to be supplied by an application program that uses\
+ the facility, other than as an argument passed when the facility\
+ is invoked, then you must make a good faith effort to ensure that,\
+ in the event an application does not supply such function or\
+ table, the facility still operates, and performs whatever part of\
+ its purpose remains meaningful.\
+\
+ (For example, a function in a library to compute square roots has\
+ a purpose that is entirely well-defined independent of the\
+ application. Therefore, Subsection 2d requires that any\
+ application-supplied function or table used by this function must\
+ be optional: if the application does not supply it, the square\
+ root function must still compute square roots.)\
+\
+These requirements apply to the modified work as a whole. If\
+identifiable sections of that work are not derived from the Library,\
+and can be reasonably considered independent and separate works in\
+themselves, then this License, and its terms, do not apply to those\
+sections when you distribute them as separate works. But when you\
+distribute the same sections as part of a whole which is a work based\
+on the Library, the distribution of the whole must be on the terms of\
+this License, whose permissions for other licensees extend to the\
+entire whole, and thus to each and every part regardless of who wrote\
+it.\
+\
+Thus, it is not the intent of this section to claim rights or contest\
+your rights to work written entirely by you; rather, the intent is to\
+exercise the right to control the distribution of derivative or\
+collective works based on the Library.\
+\
+In addition, mere aggregation of another work not based on the Library\
+with the Library (or with a work based on the Library) on a volume of\
+a storage or distribution medium does not bring the other work under\
+the scope of this License.\
+\
+ 3. You may opt to apply the terms of the ordinary GNU General Public\
+License instead of this License to a given copy of the Library. To do\
+this, you must alter all the notices that refer to this License, so\
+that they refer to the ordinary GNU General Public License, version 2,\
+instead of to this License. (If a newer version than version 2 of the\
+ordinary GNU General Public License has appeared, then you can specify\
+that version instead if you wish.) Do not make any other change in\
+these notices.\
+\
+\page \
+ Once this change is made in a given copy, it is irreversible for\
+that copy, so the ordinary GNU General Public License applies to all\
+subsequent copies and derivative works made from that copy.\
+\
+ This option is useful when you wish to copy part of the code of\
+the Library into a program that is not a library.\
+\
+ 4. You may copy and distribute the Library (or a portion or\
+derivative of it, under Section 2) in object code or executable form\
+under the terms of Sections 1 and 2 above provided that you accompany\
+it with the complete corresponding machine-readable source code, which\
+must be distributed under the terms of Sections 1 and 2 above on a\
+medium customarily used for software interchange.\
+\
+ If distribution of object code is made by offering access to copy\
+from a designated place, then offering equivalent access to copy the\
+source code from the same place satisfies the requirement to\
+distribute the source code, even though third parties are not\
+compelled to copy the source along with the object code.\
+\
+ 5. A program that contains no derivative of any portion of the\
+Library, but is designed to work with the Library by being compiled or\
+linked with it, is called a "work that uses the Library". Such a\
+work, in isolation, is not a derivative work of the Library, and\
+therefore falls outside the scope of this License.\
+\
+ However, linking a "work that uses the Library" with the Library\
+creates an executable that is a derivative of the Library (because it\
+contains portions of the Library), rather than a "work that uses the\
+library". The executable is therefore covered by this License.\
+Section 6 states terms for distribution of such executables.\
+\
+ When a "work that uses the Library" uses material from a header file\
+that is part of the Library, the object code for the work may be a\
+derivative work of the Library even though the source code is not.\
+Whether this is true is especially significant if the work can be\
+linked without the Library, or if the work is itself a library. The\
+threshold for this to be true is not precisely defined by law.\
+\
+ If such an object file uses only numerical parameters, data\
+structure layouts and accessors, and small macros and small inline\
+functions (ten lines or less in length), then the use of the object\
+file is unrestricted, regardless of whether it is legally a derivative\
+work. (Executables containing this object code plus portions of the\
+Library will still fall under Section 6.)\
+\
+ Otherwise, if the work is a derivative of the Library, you may\
+distribute the object code for the work under the terms of Section 6.\
+Any executables containing that work also fall under Section 6,\
+whether or not they are linked directly with the Library itself.\
+\
+\page \
+ 6. As an exception to the Sections above, you may also combine or\
+link a "work that uses the Library" with the Library to produce a\
+work containing portions of the Library, and distribute that work\
+under terms of your choice, provided that the terms permit\
+modification of the work for the customer's own use and reverse\
+engineering for debugging such modifications.\
+\
+ You must give prominent notice with each copy of the work that the\
+Library is used in it and that the Library and its use are covered by\
+this License. You must supply a copy of this License. If the work\
+during execution displays copyright notices, you must include the\
+copyright notice for the Library among them, as well as a reference\
+directing the user to the copy of this License. Also, you must do one\
+of these things:\
+\
+ a) Accompany the work with the complete corresponding\
+ machine-readable source code for the Library including whatever\
+ changes were used in the work (which must be distributed under\
+ Sections 1 and 2 above); and, if the work is an executable linked\
+ with the Library, with the complete machine-readable "work that\
+ uses the Library", as object code and/or source code, so that the\
+ user can modify the Library and then relink to produce a modified\
+ executable containing the modified Library. (It is understood\
+ that the user who changes the contents of definitions files in the\
+ Library will not necessarily be able to recompile the application\
+ to use the modified definitions.)\
+\
+ b) Use a suitable shared library mechanism for linking with the\
+ Library. A suitable mechanism is one that (1) uses at run time a\
+ copy of the library already present on the user's computer system,\
+ rather than copying library functions into the executable, and (2)\
+ will operate properly with a modified version of the library, if\
+ the user installs one, as long as the modified version is\
+ interface-compatible with the version that the work was made with.\
+\
+ c) Accompany the work with a written offer, valid for at\
+ least three years, to give the same user the materials\
+ specified in Subsection 6a, above, for a charge no more\
+ than the cost of performing this distribution.\
+\
+ d) If distribution of the work is made by offering access to copy\
+ from a designated place, offer equivalent access to copy the above\
+ specified materials from the same place.\
+\
+ e) Verify that the user has already received a copy of these\
+ materials or that you have already sent this user a copy.\
+\
+ For an executable, the required form of the "work that uses the\
+Library" must include any data and utility programs needed for\
+reproducing the executable from it. However, as a special exception,\
+the materials to be distributed need not include anything that is\
+normally distributed (in either source or binary form) with the major\
+components (compiler, kernel, and so on) of the operating system on\
+which the executable runs, unless that component itself accompanies\
+the executable.\
+\
+ It may happen that this requirement contradicts the license\
+restrictions of other proprietary libraries that do not normally\
+accompany the operating system. Such a contradiction means you cannot\
+use both them and the Library together in an executable that you\
+distribute.\
+\
+\page \
+ 7. You may place library facilities that are a work based on the\
+Library side-by-side in a single library together with other library\
+facilities not covered by this License, and distribute such a combined\
+library, provided that the separate distribution of the work based on\
+the Library and of the other library facilities is otherwise\
+permitted, and provided that you do these two things:\
+\
+ a) Accompany the combined library with a copy of the same work\
+ based on the Library, uncombined with any other library\
+ facilities. This must be distributed under the terms of the\
+ Sections above.\
+\
+ b) Give prominent notice with the combined library of the fact\
+ that part of it is a work based on the Library, and explaining\
+ where to find the accompanying uncombined form of the same work.\
+\
+ 8. You may not copy, modify, sublicense, link with, or distribute\
+the Library except as expressly provided under this License. Any\
+attempt otherwise to copy, modify, sublicense, link with, or\
+distribute the Library is void, and will automatically terminate your\
+rights under this License. However, parties who have received copies,\
+or rights, from you under this License will not have their licenses\
+terminated so long as such parties remain in full compliance.\
+\
+ 9. You are not required to accept this License, since you have not\
+signed it. However, nothing else grants you permission to modify or\
+distribute the Library or its derivative works. These actions are\
+prohibited by law if you do not accept this License. Therefore, by\
+modifying or distributing the Library (or any work based on the\
+Library), you indicate your acceptance of this License to do so, and\
+all its terms and conditions for copying, distributing or modifying\
+the Library or works based on it.\
+\
+ 10. Each time you redistribute the Library (or any work based on the\
+Library), the recipient automatically receives a license from the\
+original licensor to copy, distribute, link with or modify the Library\
+subject to these terms and conditions. You may not impose any further\
+restrictions on the recipients' exercise of the rights granted herein.\
+You are not responsible for enforcing compliance by third parties with\
+this License.\
+\
+\page \
+ 11. If, as a consequence of a court judgment or allegation of patent\
+infringement or for any other reason (not limited to patent issues),\
+conditions are imposed on you (whether by court order, agreement or\
+otherwise) that contradict the conditions of this License, they do not\
+excuse you from the conditions of this License. If you cannot\
+distribute so as to satisfy simultaneously your obligations under this\
+License and any other pertinent obligations, then as a consequence you\
+may not distribute the Library at all. For example, if a patent\
+license would not permit royalty-free redistribution of the Library by\
+all those who receive copies directly or indirectly through you, then\
+the only way you could satisfy both it and this License would be to\
+refrain entirely from distribution of the Library.\
+\
+If any portion of this section is held invalid or unenforceable under any\
+particular circumstance, the balance of the section is intended to apply,\
+and the section as a whole is intended to apply in other circumstances.\
+\
+It is not the purpose of this section to induce you to infringe any\
+patents or other property right claims or to contest validity of any\
+such claims; this section has the sole purpose of protecting the\
+integrity of the free software distribution system which is\
+implemented by public license practices. Many people have made\
+generous contributions to the wide range of software distributed\
+through that system in reliance on consistent application of that\
+system; it is up to the author/donor to decide if he or she is willing\
+to distribute software through any other system and a licensee cannot\
+impose that choice.\
+\
+This section is intended to make thoroughly clear what is believed to\
+be a consequence of the rest of this License.\
+\
+ 12. If the distribution and/or use of the Library is restricted in\
+certain countries either by patents or by copyrighted interfaces, the\
+original copyright holder who places the Library under this License may add\
+an explicit geographical distribution limitation excluding those countries,\
+so that distribution is permitted only in or among countries not thus\
+excluded. In such case, this License incorporates the limitation as if\
+written in the body of this License.\
+\
+ 13. The Free Software Foundation may publish revised and/or new\
+versions of the Lesser General Public License from time to time.\
+Such new versions will be similar in spirit to the present version,\
+but may differ in detail to address new problems or concerns.\
+\
+Each version is given a distinguishing version number. If the Library\
+specifies a version number of this License which applies to it and\
+"any later version", you have the option of following the terms and\
+conditions either of that version or of any later version published by\
+the Free Software Foundation. If the Library does not specify a\
+license version number, you may choose any version ever published by\
+the Free Software Foundation.\
+\
+\page \
+ 14. If you wish to incorporate parts of the Library into other free\
+programs whose distribution conditions are incompatible with these,\
+write to the author to ask for permission. For software which is\
+copyrighted by the Free Software Foundation, write to the Free\
+Software Foundation; we sometimes make exceptions for this. Our\
+decision will be guided by the two goals of preserving the free status\
+of all derivatives of our free software and of promoting the sharing\
+and reuse of software generally.\
+\
+ NO WARRANTY\
+\
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY\
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\
+\
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\
+DAMAGES.\
+\
+ END OF TERMS AND CONDITIONS\
+\
+\page \
+ How to Apply These Terms to Your New Libraries\
+\
+ If you develop a new library, and you want it to be of the greatest\
+possible use to the public, we recommend making it free software that\
+everyone can redistribute and change. You can do so by permitting\
+redistribution under these terms (or, alternatively, under the terms of the\
+ordinary General Public License).\
+\
+ To apply these terms, attach the following notices to the library. It is\
+safest to attach them to the start of each source file to most effectively\
+convey the exclusion of warranty; and each file should have at least the\
+"copyright" line and a pointer to where the full notice is found.\
+\
+ <one line to give the library's name and a brief idea of what it does.>\
+ Copyright (C) <year> <name of author>\
+\
+ This library is free software; you can redistribute it and/or\
+ modify it under the terms of the GNU Lesser General Public\
+ License as published by the Free Software Foundation; either\
+ version 2.1 of the License, or (at your option) any later version.\
+\
+ This library is distributed in the hope that it will be useful,\
+ but WITHOUT ANY WARRANTY; without even the implied warranty of\
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\
+ Lesser General Public License for more details.\
+\
+ You should have received a copy of the GNU Lesser General Public\
+ License along with this library; if not, write to the Free Software\
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\
+\
+Also add information on how to contact you by electronic and paper mail.\
+\
+You should also get your employer (if you work as a programmer) or your\
+school, if any, to sign a "copyright disclaimer" for the library, if\
+necessary. Here is a sample; alter the names:\
+\
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the\
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.\
+\
+ <signature of Ty Coon>, 1 April 1990\
+ Ty Coon, President of Vice\
+\
+That's all there is to it!\
+\
+\
+\
+}
\ No newline at end of file
diff --git a/installer/macosx/PkgResources/SupportLibs/ReadMe.rtf b/installer/macosx/PkgResources/SupportLibs/ReadMe.rtf
new file mode 100755
index 0000000..5d432d7
--- /dev/null
+++ b/installer/macosx/PkgResources/SupportLibs/ReadMe.rtf
@@ -0,0 +1,31 @@
+{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\margl1440\margr1440\vieww12440\viewh10020\viewkind0
+\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural
+
+\f0\fs24 \cf0 Csound 5 (API version 2) Dependencies.\
+\
+This will install a number of dynamic libraries on which\
+csound 5 depends. If you already have these, then you\
+can skip this installation. \
+\
+
+\b Warning:
+\b0 this installation will overwrite any previously\
+installed libraries (check the list below)\
+\
+These are the libraries (and files) that will be installed in your\
+/usr/local/:\
+\
+libfltk.1.1.dylib\
+libfltk_images.1.1.dylib\
+libfluidsynth.1.dylib\
+liblo.0.6.0.dylib\
+liblo.0.dylib -> /usr/local/lib/liblo.0.6.0.dylib\
+libpng12.0.dylib\
+ibportaudio.2.0.0.dylib\
+libportaudio.2.dylib -> /usr/local/lib/libportaudio.2.0.0.dylib\
+libportmidi.dylib\
+libsndfile.1.dylib\
+}
\ No newline at end of file
diff --git a/installer/macosx/PkgResources/SupportLibs/Welcome.rtf b/installer/macosx/PkgResources/SupportLibs/Welcome.rtf
new file mode 100755
index 0000000..3f5e82f
--- /dev/null
+++ b/installer/macosx/PkgResources/SupportLibs/Welcome.rtf
@@ -0,0 +1,13 @@
+{\rtf1\mac\ansicpg10000\cocoartf102
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\margl1440\margr1440\vieww9000\viewh9000\viewkind0
+\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural
+
+\f0\fs24 \cf0 You are about to install some libraries upon which Csound 5 depends:\
+FLTK, libsndfile, liblo, libjack, fluidsynth and portaudio v.19. If you do not\
+require these, please skip this installation.\
+\
+\
+\
+}
\ No newline at end of file
diff --git a/installer/macosx/PkgResources/en.lproj/License.rtf b/installer/macosx/PkgResources/en.lproj/License.rtf
new file mode 100644
index 0000000..5ddd899
--- /dev/null
+++ b/installer/macosx/PkgResources/en.lproj/License.rtf
@@ -0,0 +1,521 @@
+{\rtf1\mac\ansicpg10000\cocoartf102
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\margl1440\margr1440\vieww9000\viewh9000\viewkind0
+\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural
+
+\f0\fs24 \cf0 GNU LESSER GENERAL PUBLIC LICENSE\
+ Version 2.1, February 1999\
+\
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.\
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\
+ Everyone is permitted to copy and distribute verbatim copies\
+ of this license document, but changing it is not allowed.\
+\
+[This is the first released version of the Lesser GPL. It also counts\
+ as the successor of the GNU Library Public License, version 2, hence\
+ the version number 2.1.]\
+\
+ Preamble\
+\
+ The licenses for most software are designed to take away your\
+freedom to share and change it. By contrast, the GNU General Public\
+Licenses are intended to guarantee your freedom to share and change\
+free software--to make sure the software is free for all its users.\
+\
+ This license, the Lesser General Public License, applies to some\
+specially designated software packages--typically libraries--of the\
+Free Software Foundation and other authors who decide to use it. You\
+can use it too, but we suggest you first think carefully about whether\
+this license or the ordinary General Public License is the better\
+strategy to use in any particular case, based on the explanations below.\
+\
+ When we speak of free software, we are referring to freedom of use,\
+not price. Our General Public Licenses are designed to make sure that\
+you have the freedom to distribute copies of free software (and charge\
+for this service if you wish); that you receive source code or can get\
+it if you want it; that you can change the software and use pieces of\
+it in new free programs; and that you are informed that you can do\
+these things.\
+\
+ To protect your rights, we need to make restrictions that forbid\
+distributors to deny you these rights or to ask you to surrender these\
+rights. These restrictions translate to certain responsibilities for\
+you if you distribute copies of the library or if you modify it.\
+\
+ For example, if you distribute copies of the library, whether gratis\
+or for a fee, you must give the recipients all the rights that we gave\
+you. You must make sure that they, too, receive or can get the source\
+code. If you link other code with the library, you must provide\
+complete object files to the recipients, so that they can relink them\
+with the library after making changes to the library and recompiling\
+it. And you must show them these terms so they know their rights.\
+\
+ We protect your rights with a two-step method: (1) we copyright the\
+library, and (2) we offer you this license, which gives you legal\
+permission to copy, distribute and/or modify the library.\
+\
+ To protect each distributor, we want to make it very clear that\
+there is no warranty for the free library. Also, if the library is\
+modified by someone else and passed on, the recipients should know\
+that what they have is not the original version, so that the original\
+author's reputation will not be affected by problems that might be\
+introduced by others.\
+\
+\page \
+ Finally, software patents pose a constant threat to the existence of\
+any free program. We wish to make sure that a company cannot\
+effectively restrict the users of a free program by obtaining a\
+restrictive license from a patent holder. Therefore, we insist that\
+any patent license obtained for a version of the library must be\
+consistent with the full freedom of use specified in this license.\
+\
+ Most GNU software, including some libraries, is covered by the\
+ordinary GNU General Public License. This license, the GNU Lesser\
+General Public License, applies to certain designated libraries, and\
+is quite different from the ordinary General Public License. We use\
+this license for certain libraries in order to permit linking those\
+libraries into non-free programs.\
+\
+ When a program is linked with a library, whether statically or using\
+a shared library, the combination of the two is legally speaking a\
+combined work, a derivative of the original library. The ordinary\
+General Public License therefore permits such linking only if the\
+entire combination fits its criteria of freedom. The Lesser General\
+Public License permits more lax criteria for linking other code with\
+the library.\
+\
+ We call this license the "Lesser" General Public License because it\
+does Less to protect the user's freedom than the ordinary General\
+Public License. It also provides other free software developers Less\
+of an advantage over competing non-free programs. These disadvantages\
+are the reason we use the ordinary General Public License for many\
+libraries. However, the Lesser license provides advantages in certain\
+special circumstances.\
+\
+ For example, on rare occasions, there may be a special need to\
+encourage the widest possible use of a certain library, so that it becomes\
+a de-facto standard. To achieve this, non-free programs must be\
+allowed to use the library. A more frequent case is that a free\
+library does the same job as widely used non-free libraries. In this\
+case, there is little to gain by limiting the free library to free\
+software only, so we use the Lesser General Public License.\
+\
+ In other cases, permission to use a particular library in non-free\
+programs enables a greater number of people to use a large body of\
+free software. For example, permission to use the GNU C Library in\
+non-free programs enables many more people to use the whole GNU\
+operating system, as well as its variant, the GNU/Linux operating\
+system.\
+\
+ Although the Lesser General Public License is Less protective of the\
+users' freedom, it does ensure that the user of a program that is\
+linked with the Library has the freedom and the wherewithal to run\
+that program using a modified version of the Library.\
+\
+ The precise terms and conditions for copying, distribution and\
+modification follow. Pay close attention to the difference between a\
+"work based on the library" and a "work that uses the library". The\
+former contains code derived from the library, whereas the latter must\
+be combined with the library in order to run.\
+\
+\page \
+ GNU LESSER GENERAL PUBLIC LICENSE\
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\
+\
+ 0. This License Agreement applies to any software library or other\
+program which contains a notice placed by the copyright holder or\
+other authorized party saying it may be distributed under the terms of\
+this Lesser General Public License (also called "this License").\
+Each licensee is addressed as "you".\
+\
+ A "library" means a collection of software functions and/or data\
+prepared so as to be conveniently linked with application programs\
+(which use some of those functions and data) to form executables.\
+\
+ The "Library", below, refers to any such software library or work\
+which has been distributed under these terms. A "work based on the\
+Library" means either the Library or any derivative work under\
+copyright law: that is to say, a work containing the Library or a\
+portion of it, either verbatim or with modifications and/or translated\
+straightforwardly into another language. (Hereinafter, translation is\
+included without limitation in the term "modification".)\
+\
+ "Source code" for a work means the preferred form of the work for\
+making modifications to it. For a library, complete source code means\
+all the source code for all modules it contains, plus any associated\
+interface definition files, plus the scripts used to control compilation\
+and installation of the library.\
+\
+ Activities other than copying, distribution and modification are not\
+covered by this License; they are outside its scope. The act of\
+running a program using the Library is not restricted, and output from\
+such a program is covered only if its contents constitute a work based\
+on the Library (independent of the use of the Library in a tool for\
+writing it). Whether that is true depends on what the Library does\
+and what the program that uses the Library does.\
+ \
+ 1. You may copy and distribute verbatim copies of the Library's\
+complete source code as you receive it, in any medium, provided that\
+you conspicuously and appropriately publish on each copy an\
+appropriate copyright notice and disclaimer of warranty; keep intact\
+all the notices that refer to this License and to the absence of any\
+warranty; and distribute a copy of this License along with the\
+Library.\
+\
+ You may charge a fee for the physical act of transferring a copy,\
+and you may at your option offer warranty protection in exchange for a\
+fee.\
+\
+\page \
+ 2. You may modify your copy or copies of the Library or any portion\
+of it, thus forming a work based on the Library, and copy and\
+distribute such modifications or work under the terms of Section 1\
+above, provided that you also meet all of these conditions:\
+\
+ a) The modified work must itself be a software library.\
+\
+ b) You must cause the files modified to carry prominent notices\
+ stating that you changed the files and the date of any change.\
+\
+ c) You must cause the whole of the work to be licensed at no\
+ charge to all third parties under the terms of this License.\
+\
+ d) If a facility in the modified Library refers to a function or a\
+ table of data to be supplied by an application program that uses\
+ the facility, other than as an argument passed when the facility\
+ is invoked, then you must make a good faith effort to ensure that,\
+ in the event an application does not supply such function or\
+ table, the facility still operates, and performs whatever part of\
+ its purpose remains meaningful.\
+\
+ (For example, a function in a library to compute square roots has\
+ a purpose that is entirely well-defined independent of the\
+ application. Therefore, Subsection 2d requires that any\
+ application-supplied function or table used by this function must\
+ be optional: if the application does not supply it, the square\
+ root function must still compute square roots.)\
+\
+These requirements apply to the modified work as a whole. If\
+identifiable sections of that work are not derived from the Library,\
+and can be reasonably considered independent and separate works in\
+themselves, then this License, and its terms, do not apply to those\
+sections when you distribute them as separate works. But when you\
+distribute the same sections as part of a whole which is a work based\
+on the Library, the distribution of the whole must be on the terms of\
+this License, whose permissions for other licensees extend to the\
+entire whole, and thus to each and every part regardless of who wrote\
+it.\
+\
+Thus, it is not the intent of this section to claim rights or contest\
+your rights to work written entirely by you; rather, the intent is to\
+exercise the right to control the distribution of derivative or\
+collective works based on the Library.\
+\
+In addition, mere aggregation of another work not based on the Library\
+with the Library (or with a work based on the Library) on a volume of\
+a storage or distribution medium does not bring the other work under\
+the scope of this License.\
+\
+ 3. You may opt to apply the terms of the ordinary GNU General Public\
+License instead of this License to a given copy of the Library. To do\
+this, you must alter all the notices that refer to this License, so\
+that they refer to the ordinary GNU General Public License, version 2,\
+instead of to this License. (If a newer version than version 2 of the\
+ordinary GNU General Public License has appeared, then you can specify\
+that version instead if you wish.) Do not make any other change in\
+these notices.\
+\
+\page \
+ Once this change is made in a given copy, it is irreversible for\
+that copy, so the ordinary GNU General Public License applies to all\
+subsequent copies and derivative works made from that copy.\
+\
+ This option is useful when you wish to copy part of the code of\
+the Library into a program that is not a library.\
+\
+ 4. You may copy and distribute the Library (or a portion or\
+derivative of it, under Section 2) in object code or executable form\
+under the terms of Sections 1 and 2 above provided that you accompany\
+it with the complete corresponding machine-readable source code, which\
+must be distributed under the terms of Sections 1 and 2 above on a\
+medium customarily used for software interchange.\
+\
+ If distribution of object code is made by offering access to copy\
+from a designated place, then offering equivalent access to copy the\
+source code from the same place satisfies the requirement to\
+distribute the source code, even though third parties are not\
+compelled to copy the source along with the object code.\
+\
+ 5. A program that contains no derivative of any portion of the\
+Library, but is designed to work with the Library by being compiled or\
+linked with it, is called a "work that uses the Library". Such a\
+work, in isolation, is not a derivative work of the Library, and\
+therefore falls outside the scope of this License.\
+\
+ However, linking a "work that uses the Library" with the Library\
+creates an executable that is a derivative of the Library (because it\
+contains portions of the Library), rather than a "work that uses the\
+library". The executable is therefore covered by this License.\
+Section 6 states terms for distribution of such executables.\
+\
+ When a "work that uses the Library" uses material from a header file\
+that is part of the Library, the object code for the work may be a\
+derivative work of the Library even though the source code is not.\
+Whether this is true is especially significant if the work can be\
+linked without the Library, or if the work is itself a library. The\
+threshold for this to be true is not precisely defined by law.\
+\
+ If such an object file uses only numerical parameters, data\
+structure layouts and accessors, and small macros and small inline\
+functions (ten lines or less in length), then the use of the object\
+file is unrestricted, regardless of whether it is legally a derivative\
+work. (Executables containing this object code plus portions of the\
+Library will still fall under Section 6.)\
+\
+ Otherwise, if the work is a derivative of the Library, you may\
+distribute the object code for the work under the terms of Section 6.\
+Any executables containing that work also fall under Section 6,\
+whether or not they are linked directly with the Library itself.\
+\
+\page \
+ 6. As an exception to the Sections above, you may also combine or\
+link a "work that uses the Library" with the Library to produce a\
+work containing portions of the Library, and distribute that work\
+under terms of your choice, provided that the terms permit\
+modification of the work for the customer's own use and reverse\
+engineering for debugging such modifications.\
+\
+ You must give prominent notice with each copy of the work that the\
+Library is used in it and that the Library and its use are covered by\
+this License. You must supply a copy of this License. If the work\
+during execution displays copyright notices, you must include the\
+copyright notice for the Library among them, as well as a reference\
+directing the user to the copy of this License. Also, you must do one\
+of these things:\
+\
+ a) Accompany the work with the complete corresponding\
+ machine-readable source code for the Library including whatever\
+ changes were used in the work (which must be distributed under\
+ Sections 1 and 2 above); and, if the work is an executable linked\
+ with the Library, with the complete machine-readable "work that\
+ uses the Library", as object code and/or source code, so that the\
+ user can modify the Library and then relink to produce a modified\
+ executable containing the modified Library. (It is understood\
+ that the user who changes the contents of definitions files in the\
+ Library will not necessarily be able to recompile the application\
+ to use the modified definitions.)\
+\
+ b) Use a suitable shared library mechanism for linking with the\
+ Library. A suitable mechanism is one that (1) uses at run time a\
+ copy of the library already present on the user's computer system,\
+ rather than copying library functions into the executable, and (2)\
+ will operate properly with a modified version of the library, if\
+ the user installs one, as long as the modified version is\
+ interface-compatible with the version that the work was made with.\
+\
+ c) Accompany the work with a written offer, valid for at\
+ least three years, to give the same user the materials\
+ specified in Subsection 6a, above, for a charge no more\
+ than the cost of performing this distribution.\
+\
+ d) If distribution of the work is made by offering access to copy\
+ from a designated place, offer equivalent access to copy the above\
+ specified materials from the same place.\
+\
+ e) Verify that the user has already received a copy of these\
+ materials or that you have already sent this user a copy.\
+\
+ For an executable, the required form of the "work that uses the\
+Library" must include any data and utility programs needed for\
+reproducing the executable from it. However, as a special exception,\
+the materials to be distributed need not include anything that is\
+normally distributed (in either source or binary form) with the major\
+components (compiler, kernel, and so on) of the operating system on\
+which the executable runs, unless that component itself accompanies\
+the executable.\
+\
+ It may happen that this requirement contradicts the license\
+restrictions of other proprietary libraries that do not normally\
+accompany the operating system. Such a contradiction means you cannot\
+use both them and the Library together in an executable that you\
+distribute.\
+\
+\page \
+ 7. You may place library facilities that are a work based on the\
+Library side-by-side in a single library together with other library\
+facilities not covered by this License, and distribute such a combined\
+library, provided that the separate distribution of the work based on\
+the Library and of the other library facilities is otherwise\
+permitted, and provided that you do these two things:\
+\
+ a) Accompany the combined library with a copy of the same work\
+ based on the Library, uncombined with any other library\
+ facilities. This must be distributed under the terms of the\
+ Sections above.\
+\
+ b) Give prominent notice with the combined library of the fact\
+ that part of it is a work based on the Library, and explaining\
+ where to find the accompanying uncombined form of the same work.\
+\
+ 8. You may not copy, modify, sublicense, link with, or distribute\
+the Library except as expressly provided under this License. Any\
+attempt otherwise to copy, modify, sublicense, link with, or\
+distribute the Library is void, and will automatically terminate your\
+rights under this License. However, parties who have received copies,\
+or rights, from you under this License will not have their licenses\
+terminated so long as such parties remain in full compliance.\
+\
+ 9. You are not required to accept this License, since you have not\
+signed it. However, nothing else grants you permission to modify or\
+distribute the Library or its derivative works. These actions are\
+prohibited by law if you do not accept this License. Therefore, by\
+modifying or distributing the Library (or any work based on the\
+Library), you indicate your acceptance of this License to do so, and\
+all its terms and conditions for copying, distributing or modifying\
+the Library or works based on it.\
+\
+ 10. Each time you redistribute the Library (or any work based on the\
+Library), the recipient automatically receives a license from the\
+original licensor to copy, distribute, link with or modify the Library\
+subject to these terms and conditions. You may not impose any further\
+restrictions on the recipients' exercise of the rights granted herein.\
+You are not responsible for enforcing compliance by third parties with\
+this License.\
+\
+\page \
+ 11. If, as a consequence of a court judgment or allegation of patent\
+infringement or for any other reason (not limited to patent issues),\
+conditions are imposed on you (whether by court order, agreement or\
+otherwise) that contradict the conditions of this License, they do not\
+excuse you from the conditions of this License. If you cannot\
+distribute so as to satisfy simultaneously your obligations under this\
+License and any other pertinent obligations, then as a consequence you\
+may not distribute the Library at all. For example, if a patent\
+license would not permit royalty-free redistribution of the Library by\
+all those who receive copies directly or indirectly through you, then\
+the only way you could satisfy both it and this License would be to\
+refrain entirely from distribution of the Library.\
+\
+If any portion of this section is held invalid or unenforceable under any\
+particular circumstance, the balance of the section is intended to apply,\
+and the section as a whole is intended to apply in other circumstances.\
+\
+It is not the purpose of this section to induce you to infringe any\
+patents or other property right claims or to contest validity of any\
+such claims; this section has the sole purpose of protecting the\
+integrity of the free software distribution system which is\
+implemented by public license practices. Many people have made\
+generous contributions to the wide range of software distributed\
+through that system in reliance on consistent application of that\
+system; it is up to the author/donor to decide if he or she is willing\
+to distribute software through any other system and a licensee cannot\
+impose that choice.\
+\
+This section is intended to make thoroughly clear what is believed to\
+be a consequence of the rest of this License.\
+\
+ 12. If the distribution and/or use of the Library is restricted in\
+certain countries either by patents or by copyrighted interfaces, the\
+original copyright holder who places the Library under this License may add\
+an explicit geographical distribution limitation excluding those countries,\
+so that distribution is permitted only in or among countries not thus\
+excluded. In such case, this License incorporates the limitation as if\
+written in the body of this License.\
+\
+ 13. The Free Software Foundation may publish revised and/or new\
+versions of the Lesser General Public License from time to time.\
+Such new versions will be similar in spirit to the present version,\
+but may differ in detail to address new problems or concerns.\
+\
+Each version is given a distinguishing version number. If the Library\
+specifies a version number of this License which applies to it and\
+"any later version", you have the option of following the terms and\
+conditions either of that version or of any later version published by\
+the Free Software Foundation. If the Library does not specify a\
+license version number, you may choose any version ever published by\
+the Free Software Foundation.\
+\
+\page \
+ 14. If you wish to incorporate parts of the Library into other free\
+programs whose distribution conditions are incompatible with these,\
+write to the author to ask for permission. For software which is\
+copyrighted by the Free Software Foundation, write to the Free\
+Software Foundation; we sometimes make exceptions for this. Our\
+decision will be guided by the two goals of preserving the free status\
+of all derivatives of our free software and of promoting the sharing\
+and reuse of software generally.\
+\
+ NO WARRANTY\
+\
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY\
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\
+\
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\
+DAMAGES.\
+\
+ END OF TERMS AND CONDITIONS\
+\
+\page \
+ How to Apply These Terms to Your New Libraries\
+\
+ If you develop a new library, and you want it to be of the greatest\
+possible use to the public, we recommend making it free software that\
+everyone can redistribute and change. You can do so by permitting\
+redistribution under these terms (or, alternatively, under the terms of the\
+ordinary General Public License).\
+\
+ To apply these terms, attach the following notices to the library. It is\
+safest to attach them to the start of each source file to most effectively\
+convey the exclusion of warranty; and each file should have at least the\
+"copyright" line and a pointer to where the full notice is found.\
+\
+ <one line to give the library's name and a brief idea of what it does.>\
+ Copyright (C) <year> <name of author>\
+\
+ This library is free software; you can redistribute it and/or\
+ modify it under the terms of the GNU Lesser General Public\
+ License as published by the Free Software Foundation; either\
+ version 2.1 of the License, or (at your option) any later version.\
+\
+ This library is distributed in the hope that it will be useful,\
+ but WITHOUT ANY WARRANTY; without even the implied warranty of\
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\
+ Lesser General Public License for more details.\
+\
+ You should have received a copy of the GNU Lesser General Public\
+ License along with this library; if not, write to the Free Software\
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\
+\
+Also add information on how to contact you by electronic and paper mail.\
+\
+You should also get your employer (if you work as a programmer) or your\
+school, if any, to sign a "copyright disclaimer" for the library, if\
+necessary. Here is a sample; alter the names:\
+\
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the\
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.\
+\
+ <signature of Ty Coon>, 1 April 1990\
+ Ty Coon, President of Vice\
+\
+That's all there is to it!\
+\
+\
+\
+}
\ No newline at end of file
diff --git a/installer/macosx/PkgResources/en.lproj/ReadMe.rtf b/installer/macosx/PkgResources/en.lproj/ReadMe.rtf
new file mode 100644
index 0000000..57f70da
--- /dev/null
+++ b/installer/macosx/PkgResources/en.lproj/ReadMe.rtf
@@ -0,0 +1,48 @@
+{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\margl1440\margr1440\vieww13520\viewh8920\viewkind0
+\pard\tx565\tx1133\tx1700\tx2266\tx2832\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural
+
+\f0\fs24 \cf0 Csound 5 Environment (API version 2).\
+\
+This package installs all the required components\
+for the Csound 5 Environment. It is divided into three\
+separate installers. If you do not require one of them,\
+please unselect the package in custom installation\
+mode.\
+\
+
+\b 1. Csound 5 Library (API version 2) Framework (32-bit floating-point)\
+2. Csound 5 Library (API Version 2) Framework (64-bit floating-point)\
+3. Csound command-line applications (32-bit floating-point)\
+4. Csound command-line applications (64-bit floating-point)\
+5. Support libraries: \
+
+\b0 This component will install a number of dynamic libraries on which\
+csound 5 depends. If you already have these, then you\
+can skip this installation. \
+\
+
+\b Warning:
+\b0 this installation will overwrite any previously\
+installed libraries. These are the libraries that will be \
+installed in your /usr/local/lib directory:
+\b \
+
+\b0 \
+libfltk.1.1.dylib\
+libfltk_images.1.1.dylib\
+libfluidsynth.1.dylib\
+liblo.0.6.0.dylib\
+libpng12.0.dylib\
+libportaudio.2.0.0.dylib\
+libportmidi.dylib\
+libsndfile.1.dylib
+\b \
+
+\b0 \
+\
+Victor Lazzarini, 2009\
+(c) 2009, The Csound Team, csound.sf.net\
+}
\ No newline at end of file
diff --git a/installer/macosx/PkgResources/en.lproj/Welcome.rtf b/installer/macosx/PkgResources/en.lproj/Welcome.rtf
new file mode 100644
index 0000000..a61a85f
--- /dev/null
+++ b/installer/macosx/PkgResources/en.lproj/Welcome.rtf
@@ -0,0 +1,13 @@
+{\rtf1\mac\ansicpg10000\cocoartf102
+{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\margl1440\margr1440\vieww9000\viewh9000\viewkind0
+\pard\tx565\tx1133\tx1700\tx2266\tx2833\tx3401\tx3967\tx4535\tx5102\tx5669\tx6235\tx6802\ql\qnatural
+
+\f0\fs24 \cf0 You are about to install Csound 5 in your\
+computer. This includes the CsoundLib framework, applications and\
+support libs.\
+\
+\
+\
+}
\ No newline at end of file
diff --git a/installer/macosx/PkgResources/en.lproj/background.tiff b/installer/macosx/PkgResources/en.lproj/background.tiff
new file mode 100644
index 0000000..809c703
Binary files /dev/null and b/installer/macosx/PkgResources/en.lproj/background.tiff differ
diff --git a/installer/macosx/Readme_temp.txt b/installer/macosx/Readme_temp.txt
deleted file mode 100644
index 50beb11..0000000
--- a/installer/macosx/Readme_temp.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-Here are the files from Hans showing how to build an OS X installer package
-and make a DMG disk image of the package from a command-line script. His files
-were for Csound 4.23 and his email about them is below. This should hopefully
-help someone get started on this task for Csound 5.
-
-The package-building commands are in the Makefile.macosx.
-
-I would also suggest including a nice README intro to Csound in the DMG
-explaining how to install and configure. (Links to the manual might be nice
-too :)
-
--- Anthony Kozar
-
-Date: Tue, 14 Oct 2003 12:20:47 -0400
-Subject: [CSOUND-DEV:3135] MacOS X installer maker
-From: Hans-Christoph Steiner <hans at eds.org>
-To: Csound Developers Discussion List <csound-dev at eartha.mills.edu>
-
-I have written up a section for the Makefile which creates a MacOS X
-installer for csound just by typing 'make darwin_pkg'. You can make a
-distributable .dmg file by typing 'make dmg' afterwards. There are
-three files involved: csound.info (the .pkg info), mkdmg (script to
-make the .dmg), and Makefile.macosx. These three files are all
-attached.
-For Makefile.macosx, all of the pkg building stuff is appended to the
-end of the file. I would love to see these files added to the CVS.
diff --git a/installer/macosx/csound.info b/installer/macosx/csound.info
deleted file mode 100644
index 4c35d72..0000000
--- a/installer/macosx/csound.info
+++ /dev/null
@@ -1,17 +0,0 @@
-Title Csound
-Version UNIX-style paths
-Description Csound is a sound and music synthesis system, providing facilities for composition and performance over a wide range of platforms.
-DefaultLocation /usr/local
-DeleteWarning No more Csound? :(
-
-### Package Flags
-
-NeedsAuthorization YES
-Required YES
-Relocatable YES
-RequiresReboot NO
-UseUserMask NO
-OverwritePermissions NO
-InstallFat NO
-RootVolumeOnly NO
-
diff --git a/installer/macosx/custom.10.7.py b/installer/macosx/custom.10.7.py
new file mode 100755
index 0000000..639b49e
--- /dev/null
+++ b/installer/macosx/custom.10.7.py
@@ -0,0 +1,128 @@
+'''
+Modify this file, by platform, to handle nonstandard options for third-party
+dependencies. If you do modify this file, you should make it read-only
+(or otherwise protect it) so that CVS will not overwrite it.
+
+Order is important: place local paths ahead of system paths.
+'''
+import sys
+
+customCPPPATH = []
+customCCFLAGS = []
+customCCPFLAGS = []
+customCXXFLAGS = []
+customLIBS = []
+customLIBPATH = []
+customSHLINKFLAGS = []
+customSWIGFLAGS = []
+
+## This seems to do nothing
+if sys.platform != 'darwin':
+ customSHLINKFLAGS.append('-Wl,--as-needed')
+if sys.platform[:5] == 'linux':
+ platform = 'linux'
+ customCPPPATH.append('/usr/lib/jvm/java-1.5.0/include')
+ customCPPPATH.append('/usr/lib/jvm/java-1.5.0/include/linux')
+ customCCFLAGS.append('-I/usr/local/include/libcwiimote-0.4.0/libcwiimote')
+elif sys.platform == 'darwin':
+ platform = 'darwin'
+ customLIBPATH.append('/usr/local/lib')
+ customCPPPATH.append('/usr/local/include')
+ customCPPPATH.append('/usr/local/include/luajit-2.0')
+ customCPPPATH.append('/usr/include/malloc')
+ customCPPPATH.append('/opt/local/include/boost-1_32/')
+ customCPPPATH.append('/usr/include/python2.3')
+ customCXXFLAGS.append('-fabi-version=0')
+ customCPPPATH.append('/Applications/Pd-extended.app/Contents/Resources/include/')
+ customCPPPATH.append('/Users/stevenyi/work/csound/dependencies/boost_1_47_0')
+ #customCPPPATH.append('/opt/local/include')
+ #customLIBPATH.append('/opt/local/lib')
+elif sys.platform[:3] == 'win':
+ # For the basic build you need MinGW, MSys, and libsndfile.
+ # Add them here:
+ customCPPPATH.append('c:/utah/usr/msys/1.0/local/include')
+ customLIBPATH.append('c:/utah/usr/msys/1.0/local/lib')
+ customCPPPATH.append('c:/utah/usr/mingw/include')
+ customLIBPATH.append('c:/utah/usr/mingw/lib')
+ # If libsndfile is not in a standard location add it here:
+ customCPPPATH.append('C:/utah/opt/libsndfile-1.0.13pre6/src')
+ customLIBPATH.append('C:/utah/opt/libsndfile-1.0.13pre6/src/.libs')
+ ################################################################
+ # If you want real-time audio you need PortAudio.
+ # If it is not in a standard location add it here
+ # (of course you must build it first):
+ customCPPPATH.append('C:/utah/home/mkg/projects/portaudio/pa_common')
+ customLIBPATH.append('C:/utah/home/mkg/projects/portaudio/lib')
+ ################################################################
+ # If you want PortMidi for real-time midi,
+ # if it is not in a standard location add it here
+ # (of course you must build it first):
+ customCPPPATH.append('C:/utah/opt/portmidi/pa_common')
+ customLIBPATH.append('C:/utah/opt/portmidi')
+ ################################################################
+ # If you want FLTK widgets or if you want to build CsoundVST,
+ # you need FLTK. If it is not in a standard location,
+ # add it here (of course you must build it first):
+ customCPPPATH.append('C:/utah/opt/fltk-1.1.6')
+ customLIBPATH.append('C:/utah/opt/fltk-1.1.6/lib')
+ ################################################################
+ # If you want to build CsoundVST you need Python and
+ # a MinGW import library for Python. Add them here:
+ customCPPPATH.append('c:/utah/opt/Python24/include')
+ customLIBPATH.append('c:/WINDOWS/system32')
+ ################################################################
+ # If you want to build Lua interfaces you need Lua.
+ # Add it here:
+ customCPPPATH.append('c:/utah/opt/lua50/include')
+ customLIBPATH.append('c:/utah/opt/lua50/lib/mingw3')
+ ################################################################
+ # If you want to build Tcl/Tk interfaces
+ # and Tclcsound you need Tcl/Tk.
+ # Add it here:
+ customCPPPATH.append('c:/utah/opt/Tcl/include')
+ customLIBPATH.append('c:/utah/opt/Tcl/bin')
+ ################################################################
+ # If you want to build CsoundVST you need boost.
+ # If it is not in a standard lcoation add it here
+ # (you do NOT need to build it first):
+ customCPPPATH.append('c:/utah/opt/boost/')
+ ################################################################
+ # If you want to build the FluidSynth opcodes
+ # you need FluidSynth. If it is not a standard location,
+ # add it here (you do NOT need to build it first):
+ customLIBPATH.append('c:/utah/opt/fluidsynth-1.0.3-win32')
+ customCPPPATH.append('c:/utah/opt/fluidsynth-1.0.3-win32/include')
+ ################################################################
+ # If you want to build the Java wrapper for CsoundVST
+ # you need Java. If it is not in a standard location,
+ # add it here (you do NOT need to build it first):
+ customCPPPATH.append('c:/utah/opt/jdk1.5.0/include')
+ customCPPPATH.append('c:/utah/opt/jdk1.5.0/include/win32')
+ ################################################################
+ # If you want to build the PD external csoundapi~
+ # you need PD. If it is not in a standard location,
+ # add it here (you do NOT need to build it first):
+ customCPPPATH.append('c:/utah/opt/pd-0.38-4-devel-2/src')
+ customLIBPATH.append('c:/utah/opt/pd-0.38-4-devel-2/bin')
+ platform = 'mingw'
+ ################################################################
+ # If you want to build the Loris opcodes,
+ # then copy Loris to csound5/Opcodes/Loris. Loris also
+ # requires FFTW, if it is not in a standard location,
+ # add it here (you do need to build it first):
+ customCPPPATH.append('c:/utah/opt/fftw-3.0.1/api')
+ customLIBPATH.append('c:/utah/opt/fftw-3.0.1/.libs')
+ ################################################################
+ # If you want to build the OSC opcodes,
+ # if it is not in a standard location,
+ # add it here (you do need to build it first):
+ customCPPPATH.append('c:/utah/home/mkg/projects/liblo')
+ customLIBPATH.append('c:/utah/home/mkg/projects/liblo/src/.libs')
+ # For OSC on Windows you will also need a Windows pthread library,
+ # if it is not in a standard location,
+ # add it here (you do need to build it first):
+ customCPPPATH.append('c:/utah/opt/pthreads')
+ customLIBPATH.append('c:/utah/opt/pthreads')
+else:
+ platform = 'unsupported platform'
+
diff --git a/installer/macosx/installer.cxx b/installer/macosx/installer.cxx
deleted file mode 100644
index 4fec181..0000000
--- a/installer/macosx/installer.cxx
+++ /dev/null
@@ -1,174 +0,0 @@
-// generated by Fast Light User Interface Designer (fluid) version 1.0106
-
-#include "installer.h"
-
-Fl_Output *bintype=(Fl_Output *)0;
-
-Fl_Check_Button *systemp=(Fl_Check_Button *)0;
-
-Fl_File_Input *bindir=(Fl_File_Input *)0;
-
-Fl_File_Input *opcdir=(Fl_File_Input *)0;
-
-Fl_File_Input *doc=(Fl_File_Input *)0;
-
-Fl_File_Input *libdir=(Fl_File_Input *)0;
-
-Fl_Progress *progress=(Fl_Progress *)0;
-
-static void cb_INSTALL(Fl_Button*, void*) {
- do_install = 1;
-}
-
-static void cb_ABORT(Fl_Button*, void*) {
- exit(0);
-}
-
-Fl_Check_Button *doBin=(Fl_Check_Button *)0;
-
-Fl_Check_Button *doOpc=(Fl_Check_Button *)0;
-
-Fl_Check_Button *doDoc=(Fl_Check_Button *)0;
-
-Fl_Check_Button *doLib=(Fl_Check_Button *)0;
-
-Fl_Double_Window* make_window(char* type) {
- Fl_Double_Window* w;
- { Fl_Double_Window* o = new Fl_Double_Window(370, 325, "Csound5 Installer");
- w = o;
- { Fl_Text_Display* o = new Fl_Text_Display(85, 30, 25, 25, "Csound5 Installer for");
- o->box(FL_NO_BOX);
- o->labelfont(9);
- o->labelsize(20);
- }
- { Fl_Output* o = bintype = new Fl_Output(185, 6, 170, 30);
- o->box(FL_NO_BOX);
- o->labelfont(1);
- o->labelsize(20);
- o->textfont(9);
- o->textsize(20);
- bintype->value(type);
- }
- { Fl_Check_Button* o = systemp = new Fl_Check_Button(265, 45, 25, 25, "Install in System Files");
- o->down_box(FL_DOWN_BOX);
- o->callback((Fl_Callback*)set_system);
- o->align(FL_ALIGN_LEFT);
- }
- bindir = new Fl_File_Input(90, 75, 235, 30, "Binary");
- opcdir = new Fl_File_Input(90, 115, 235, 30, "Opcodes");
- doc = new Fl_File_Input(90, 155, 235, 30, "Manual");
- libdir = new Fl_File_Input(90, 195, 235, 30, "Libraries");
- progress = new Fl_Progress(150, 275, 210, 30);
- { Fl_Button* o = new Fl_Button(10, 245, 70, 60, "INSTALL");
- o->color((Fl_Color)1);
- o->labelfont(9);
- o->labelsize(12);
- o->callback((Fl_Callback*)cb_INSTALL);
- }
- { Fl_Button* o = new Fl_Button(90, 260, 50, 45, "ABORT");
- o->color((Fl_Color)10);
- o->labelfont(9);
- o->labelsize(12);
- o->callback((Fl_Callback*)cb_ABORT);
- }
- { Fl_Check_Button* o = doBin = new Fl_Check_Button(10, 80, 25, 25);
- o->down_box(FL_DOWN_BOX);
- }
- { Fl_Check_Button* o = doOpc = new Fl_Check_Button(10, 120, 25, 25);
- o->down_box(FL_DOWN_BOX);
- }
- { Fl_Check_Button* o = doDoc = new Fl_Check_Button(10, 160, 25, 25);
- o->down_box(FL_DOWN_BOX);
- }
- { Fl_Check_Button* o = doLib = new Fl_Check_Button(10, 200, 25, 25);
- o->down_box(FL_DOWN_BOX);
- }
- o->end();
- }
- return w;
-}
-
-Fl_Output *err_text=(Fl_Output *)0;
-
-static void cb_OK(Fl_Return_Button*, void*) {
- end_alert = 1;
-}
-
-Fl_Double_Window* make_alert() {
- Fl_Double_Window* w;
- { Fl_Double_Window* o = new Fl_Double_Window(345, 75, "Installer Alert");
- w = o;
- o->color((Fl_Color)1);
- o->labelcolor(FL_BACKGROUND2_COLOR);
- { Fl_Output* o = err_text = new Fl_Output(5, 10, 310, 25);
- o->color((Fl_Color)1);
- o->textcolor(7);
- }
- { Fl_Return_Button* o = new Fl_Return_Button(5, 45, 50, 25, "OK");
- o->color((Fl_Color)1);
- o->callback((Fl_Callback*)cb_OK);
- }
- o->end();
- }
- return w;
-}
-
-Fl_Check_Button *do_asound=(Fl_Check_Button *)0;
-
-Fl_Check_Button *do_fluidsynth=(Fl_Check_Button *)0;
-
-Fl_Check_Button *do_jack=(Fl_Check_Button *)0;
-
-Fl_Check_Button *do_lo=(Fl_Check_Button *)0;
-
-Fl_Check_Button *do_portaudio=(Fl_Check_Button *)0;
-
-Fl_Check_Button *do_sndfile=(Fl_Check_Button *)0;
-
-static void cb_install(Fl_Button*, void*) {
- do_libinstall=1;
-lib_exit=1;
-}
-
-static void cb_cancel(Fl_Button*, void*) {
- do_libinstall=0;
-lib_exit=1;
-}
-
-Fl_Double_Window* make_libraries() {
- Fl_Double_Window* w;
- { Fl_Double_Window* o = new Fl_Double_Window(255, 210);
- w = o;
- { Fl_Text_Display* o = new Fl_Text_Display(25, 25, 25, 25, "Optional Libraries Installation");
- o->box(FL_NO_BOX);
- o->labelfont(1);
- o->align(FL_ALIGN_TOP_LEFT);
- }
- { Fl_Check_Button* o = do_asound = new Fl_Check_Button(25, 50, 200, 20, "libasound");
- o->down_box(FL_DOWN_BOX);
- }
- { Fl_Check_Button* o = do_fluidsynth = new Fl_Check_Button(25, 75, 200, 20, "libfluidsynth");
- o->down_box(FL_DOWN_BOX);
- }
- { Fl_Check_Button* o = do_jack = new Fl_Check_Button(25, 100, 200, 25, "libjack");
- o->down_box(FL_DOWN_BOX);
- }
- { Fl_Check_Button* o = do_lo = new Fl_Check_Button(25, 125, 200, 20, "liblo");
- o->down_box(FL_DOWN_BOX);
- }
- { Fl_Check_Button* o = do_portaudio = new Fl_Check_Button(25, 150, 200, 20, "libportaudio");
- o->down_box(FL_DOWN_BOX);
- }
- { Fl_Check_Button* o = do_sndfile = new Fl_Check_Button(25, 175, 200, 20, "libsndfile");
- o->down_box(FL_DOWN_BOX);
- }
- { Fl_Button* o = new Fl_Button(25, 25, 55, 20, "install");
- o->callback((Fl_Callback*)cb_install);
- }
- { Fl_Button* o = new Fl_Button(175, 25, 55, 20, "cancel");
- o->callback((Fl_Callback*)cb_cancel);
- }
- o->end();
- }
- return w;
-}
diff --git a/installer/macosx/installer.fl b/installer/macosx/installer.fl
deleted file mode 100644
index 0ffd602..0000000
--- a/installer/macosx/installer.fl
+++ /dev/null
@@ -1,131 +0,0 @@
-# data file for the Fltk User Interface Designer (fluid)
-version 1.0106
-header_name {.h}
-code_name {.cxx}
-Function {make_window(char* type)} {open
-} {
- Fl_Window {} {
- label {Csound5 Installer} open
- xywh {504 123 370 325} type Double visible
- } {
- Fl_Text_Display {} {
- label {Csound5 Installer for}
- xywh {85 30 25 25} box NO_BOX labelfont 9 labelsize 20
- }
- Fl_Output bintype {
- xywh {185 6 170 30} box NO_BOX labelfont 1 labelsize 20 textfont 9 textsize 20
- code0 {bintype->value(type);}
- }
- Fl_Check_Button systemp {
- label {Install in System Files}
- callback set_system
- xywh {265 45 25 25} down_box DOWN_BOX align 4
- }
- Fl_File_Input bindir {
- label Binary
- xywh {90 75 235 30}
- }
- Fl_File_Input opcdir {
- label Opcodes
- xywh {90 115 235 30}
- }
- Fl_File_Input doc {
- label Manual
- xywh {90 155 235 30}
- }
- Fl_File_Input libdir {
- label Libraries
- xywh {90 195 235 30}
- }
- Fl_Progress progress {
- xywh {150 275 210 30}
- }
- Fl_Button {} {
- label INSTALL
- callback {do_install = 1;}
- xywh {10 245 70 60} color 1 labelfont 9 labelsize 12
- }
- Fl_Button {} {
- label ABORT
- callback {exit(0);}
- xywh {90 260 50 45} color 10 labelfont 9 labelsize 12
- }
- Fl_Check_Button doBin {
- xywh {10 80 25 25} down_box DOWN_BOX
- }
- Fl_Check_Button doOpc {
- xywh {10 120 25 25} down_box DOWN_BOX
- }
- Fl_Check_Button doDoc {
- xywh {10 160 25 25} down_box DOWN_BOX
- }
- Fl_Check_Button doLib {
- xywh {10 200 25 25} down_box DOWN_BOX
- }
- }
-}
-
-Function {make_alert()} {open
-} {
- Fl_Window {} {
- label {Installer Alert} open
- xywh {678 283 345 75} type Double color 1 labelcolor 7 visible
- } {
- Fl_Output err_text {
- xywh {5 10 310 25} color 1 textcolor 7
- }
- Fl_Return_Button {} {
- label OK
- callback {end_alert = 1;}
- xywh {5 45 50 25} color 1
- }
- }
-}
-
-Function {make_libraries()} {open
-} {
- Fl_Window {} {open
- xywh {471 242 255 210} type Double visible
- } {
- Fl_Text_Display {} {
- label {Optional Libraries Installation}
- xywh {25 25 25 25} box NO_BOX labelfont 1 align 5
- }
- Fl_Check_Button do_asound {
- label libasound
- xywh {25 50 200 20} down_box DOWN_BOX
- }
- Fl_Check_Button do_fluidsynth {
- label libfluidsynth
- xywh {25 75 200 20} down_box DOWN_BOX
- }
- Fl_Check_Button do_jack {
- label libjack
- xywh {25 100 200 25} down_box DOWN_BOX
- }
- Fl_Check_Button do_lo {
- label liblo
- xywh {25 125 200 20} down_box DOWN_BOX
- }
- Fl_Check_Button do_portaudio {
- label libportaudio
- xywh {25 150 200 20} down_box DOWN_BOX
- }
- Fl_Check_Button do_sndfile {
- label libsndfile
- xywh {25 175 200 20} down_box DOWN_BOX
- }
- Fl_Button {} {
- label install
- callback {do_libinstall=1;
-lib_exit=1;} selected
- xywh {25 25 55 20}
- }
- Fl_Button {} {
- label cancel
- callback {do_libinstall=0;
-lib_exit=1;}
- xywh {175 25 55 20}
- }
- }
-}
diff --git a/installer/macosx/installer.h b/installer/macosx/installer.h
deleted file mode 100644
index 52d621d..0000000
--- a/installer/macosx/installer.h
+++ /dev/null
@@ -1,36 +0,0 @@
-// generated by Fast Light User Interface Designer (fluid) version 1.0106
-
-#ifndef installer_h
-#define installer_h
-#include <FL/Fl.H>
-#include <FL/Fl_Double_Window.H>
-#include <FL/Fl_Text_Display.H>
-#include <FL/Fl_Output.H>
-extern Fl_Output *bintype;
-#include <FL/Fl_Check_Button.H>
-extern void set_system(Fl_Check_Button*, void*);
-extern Fl_Check_Button *systemp;
-#include <FL/Fl_File_Input.H>
-extern Fl_File_Input *bindir;
-extern Fl_File_Input *opcdir;
-extern Fl_File_Input *doc;
-extern Fl_File_Input *libdir;
-#include <FL/Fl_Progress.H>
-extern Fl_Progress *progress;
-#include <FL/Fl_Button.H>
-extern Fl_Check_Button *doBin;
-extern Fl_Check_Button *doOpc;
-extern Fl_Check_Button *doDoc;
-extern Fl_Check_Button *doLib;
-Fl_Double_Window* make_window(char* type);
-extern Fl_Output *err_text;
-#include <FL/Fl_Return_Button.H>
-Fl_Double_Window* make_alert();
-extern Fl_Check_Button *do_asound;
-extern Fl_Check_Button *do_fluidsynth;
-extern Fl_Check_Button *do_jack;
-extern Fl_Check_Button *do_lo;
-extern Fl_Check_Button *do_portaudio;
-extern Fl_Check_Button *do_sndfile;
-Fl_Double_Window* make_libraries();
-#endif
diff --git a/installer/macosx/mkdmg b/installer/macosx/mkdmg
deleted file mode 100644
index 5fc657b..0000000
--- a/installer/macosx/mkdmg
+++ /dev/null
@@ -1,95 +0,0 @@
-#!/bin/sh
-#
-# from: http://www.macosxhints.com/article.php?story=20020311215452999
-#
-#
-# Creates a disk image (dmg) on Mac OS X from the command line
-# from a folder.
-
-FOLDER="$1"
-if [ -z "$FOLDER" ]; then
-echo
-echo "usage: $0 <folder>"
-echo
-exit 1
-fi
-
-if [ ! -d "$FOLDER" ]; then
-echo $FOLDER does not exist
-exit 2
-fi
-
-SIZE=`/usr/bin/du -s "$FOLDER" | awk '{ print $1 }'`
-# allow space for partition map and directory structure
-SIZE=`echo 1024 + $SIZE \* 1.1 / 1 | bc`
-NAME=`basename "$FOLDER"`
-FILE=$NAME.dmg
-TMP=${TMP:-/tmp}
-
-if [ $SIZE -lt 9216 ]; then
-SIZE=9216
-fi
-
-if [ -e "$FILE" ] ; then
-echo $FILE already exists!
-exit 3
-fi
-
-TMPFILE=$TMP/$$.dmg
-
-echo Creating $TMPFILE from $FOLDER, $SIZE sectors...
-hdiutil create $TMPFILE -sectors $SIZE -ov
-if [ $? -ne 0 ] ; then
-rm -f $TMPFILE
-exit 4
-fi
-echo
-
-DEVICES=`hdid -nomount $TMPFILE`
-DEVMASTER=`echo $DEVICES| awk '{ print $1 }'`
-DEVHFS=`echo $DEVICES| awk '{ print $5 }'`
-echo Creating HFS partition $NAME on $TMPFILE at $DEVHFS
-newfs_hfs -v "$NAME" $DEVHFS
-if [ $? -ne 0 ] ; then
-rm -f $TMPFILE
-exit 5
-fi
-hdiutil eject $DEVMASTER
-if [ $? -ne 0 ] ; then
-rm -f $TMPFILE
-exit 6
-fi
-DEVICES=`hdid $TMPFILE`
-if [ $? -ne 0 ] ; then
-rm -f $TMPFILE
-exit 7
-fi
-
-DEVMASTER=`echo $DEVICES| awk '{ print $1 }'`
-DEVHFS=`echo $DEVICES| awk '{ print $5 }'`
-echo Copying $FOLDER to /Volumes/$NAME on $DEVMASTER
-sudo ditto -rsrcFork "$FOLDER" "/Volumes/$NAME"
-if [ $? -ne 0 ]; then
-hdiutil eject $DEVMASTER
-rm -f $TMPFILE
-exit 8
-fi
-
-hdiutil eject $DEVMASTER
-if [ $? -ne 0 ]; then
-#rm -f $TMPFILE
-exit 9
-fi
-
-echo "Compressing $NAME to $FILE"
-#hdiutil convert $TMPFILE -format UDZO -o "$FILE"
-hdiutil convert $TMPFILE -format UDZO -imagekey zlib-level=9 -o "$FILE"
-if [ $? -ne 0 ]; then
-rm -f "$FILE" $TMPFILE
-exit 10
-fi
-
-rm -f $TMPFILE
-
-# end
-
diff --git a/installer/macosx/new_install.cxx b/installer/macosx/new_install.cxx
deleted file mode 100644
index e365c1b..0000000
--- a/installer/macosx/new_install.cxx
+++ /dev/null
@@ -1,285 +0,0 @@
-#include <stdio.h>
-#include <sys/types.h>
-#include <dirent.h>
-#include <sys/stat.h>
-#include <string.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-int do_install = 0;
-int end_alert = 0;
-int do_libinstall = 0;
-int lib_exit = 0;
-
-char type[256];
-char bin[256];
-char opc[256];
-char doh[256];
-char lib[256];
-char envy[256];
-
-#include "installer.cxx"
-
-void set_system(Fl_Check_Button*, void*)
-{
- bindir->value(bin);
- opcdir->value(opc);
- doc->value(doh);
- libdir->value(lib);
-}
-
-Fl_Double_Window* err;
-
-void do_alert(char *msg)
-{
- err_text->value(msg);
- end_alert = 0;
- err->show();
- while (end_alert==0) Fl::wait();
- err->hide();
-}
-
-/* Unsure that dir exists with all directories on the way. */
-void check_exists(const char *dir)
-{
- char test[80];
- char *p;
- int ans;
- struct stat buf;
- strcpy(test,dir);
- // printf("Checking %s\n", dir);
- p = test;
- while ((p = strchr(p+1, '/')) != NULL) {
- *p = '\0';
- if (test[0]=='\0') break; // Should not happen
- // printf("..Checking %s\n", test);
- ans = stat(test, &buf);
- if (ans!=0 || !S_ISDIR(buf.st_mode)) {
- if (ans!=0) {
- // printf("Directory %s does not exist; creating...\n", test);
- mkdir(test, 0766);
- }
- else {
- do_alert("Trouble with file; stopping");
- exit(1);
- }
- }
- else {
- // printf("Directory %s OK\n", test);
- }
- *p = '/';
- }
- return;
-}
-
-int main(void)
-{
- FILE *defs = fopen("def.ins", "r");
- Fl_Double_Window* www;
- char *p;
- if (defs==0) {
- err = make_alert();
- do_alert("Definitions file is missing");
- exit(1);
- }
- fgets(type,256,defs);
- p = strchr(type,'\n');
- if (p!=type) *p = '\0';
- fgets(bin,256,defs);
- p = strchr(bin,'\n');
- if (p!=bin) *p = '\0';
- fgets(opc,256,defs);
- p = strchr(opc,'\n');
- if (p!=opc) *p = '\0';
- fgets(doh,256,defs);
- p = strchr(doh,'\n');
- if (p!=doh) *p = '\0';
- fgets(lib,256,defs);
- p = strchr(lib,'\n');
- if (p!=lib) *p = '\0';
- fgets(envy,256,defs);
- p = strchr(envy,'\n');
- if (p!=envy) *p = '\0';
- www = make_window(type);
- doBin->value(1); doOpc->value(1);
- www->show();
- err = make_alert();
- again:
- while (do_install==0) Fl::wait(1.0);
- // Check that install is correct
- if (doBin->value() && strlen(bindir->value())==0) {
- do_alert("No binary directory");
- goto again;
- }
- if (doOpc->value() && strlen(opcdir->value())==0) {
- do_alert("No opcode directory");
- goto again;
- }
- //Copy binaries
- if (doBin->value()) {
- struct dirent **namelist;
- char b[256];
- int n = scandir("./bin", &namelist, NULL, alphasort);
- int i;
- progress->label("binaries");
- strcpy(b, bindir->value());
- if (b[strlen(b)-1]!='/')
- strcat(b, "/");
- check_exists(b);
- progress->minimum(0.0f); progress->maximum((float)n);
- progress->value(0.0f);
- Fl::wait(0.1);
- for (i=0; i<n; i++)
- if ((namelist[i]->d_name)[0]!='.') {
- char buff[256];
- sprintf(buff,"cp -pv ./bin/%s %s>/dev/null", namelist[i]->d_name,b);
- system(buff);
- progress->value((float)(i+1));
- Fl::wait(0.1);
- }
- else progress->value((float)(i+1));
- }
- //Copy opcodes
- if (doOpc->value()) {
- struct dirent **namelist;
- char b[256];
- int n = scandir("./opc", &namelist, NULL, alphasort);
- int i;
- progress->label("opcodes");
- strcpy(b, opcdir->value());
- if (b[strlen(b)-1]!='/')
- strcat(b, "/");
- check_exists(b);
- progress->minimum(0.0f); progress->maximum((float)n);
- progress->value(0.0f);
- Fl::wait(0.1);
- for (i=0; i<n; i++)
- if ((namelist[i]->d_name)[0]!='.') {
- char buff[256];
- sprintf(buff,"cp -pv ./opc/%s %s>/dev/null", namelist[i]->d_name,b);
- system(buff);
- progress->value((float)(i+1));
- Fl::wait(0.1);
- }
- else progress->value((float)(i+1));
- }
- if (doDoc->value() && strlen(doc->value())!=0) {
- struct dirent **namelist;
- char b[256];
- int n = scandir("./html", &namelist, NULL, alphasort);
- int i;
- progress->label("documentation");
- strcpy(b, doc->value());
- check_exists(b);
- if (b[strlen(b)-1]!='/')
- strcat(b, "/");
- check_exists(b);
- check_exists(doc->value());
- progress->minimum(0.0f); progress->maximum((float)n);
- progress->value(0.0f);
- Fl::wait(0.1);
- for (i=0; i<n; i++)
- if ((namelist[i]->d_name)[0]!='.') {
- char buff[256];
- sprintf(buff,"cp -pv ./html/%s %s>/dev/null", namelist[i]->d_name,b);
- system(buff);
- progress->value((float)(i+1));
- Fl::wait(0.1);
- }
- else progress->value((float)(i+1));
- }
- if (doLib->value() && strlen(libdir->value())!=0) {
- char b[256];
- Fl_Double_Window *ll = make_libraries();
- strcpy(b, libdir->value());
- // really ought to pre-mark acording to availability
- lib_exit = 0;
- ll->show();
- while (lib_exit==0) Fl::wait();
- progress->label("libraries");
- progress->minimum(0.0f); progress->maximum(7.0);
- progress->value(0.0f);
- if (do_libinstall) {
- char buff[256];
- float n = 0.0f;
- check_exists(b);
- sprintf(buff,"cp -pv ./lib/libcsound.a %s>/dev/null", b);
- system(buff);
- progress->value(n+= 1.0f);
- if (do_asound->value()) {
- sprintf(buff,"cp -pv ./lib/libasound.so.2 %s>/dev/null", b);
- system(buff);
- sprintf(buff,"ln -s %s/libasound.so.2 %s/libasound.so",b,b);
- system(buff);
- progress->value(n+= 1.0f);
- }
- if (do_fluidsynth->value()) {
- sprintf(buff,"cp -pv ./lib/libfluidsynth.so.1 %s>/dev/null", b);
- system(buff);
- sprintf(buff,"ln -s %s/libfluidsynth.so.1 %s/libfluidsynth.so",b,b);
- system(buff);
- progress->value(n+= 1.0f);
- }
- if (do_jack->value()) {
- sprintf(buff,"cp -pv ./lib/libjack.so.0 %s>/dev/null", b);
- system(buff);
- sprintf(buff,"ln -s %s/libjacl.so.0 %s/libjack.so",b,b);
- system(buff);
- progress->value(n+= 1.0f);
- }
- if (do_lo->value()) {
- sprintf(buff,"cp -pv ./lib/liblo.so.0 %s>/dev/null", b);
- system(buff);
- sprintf(buff,"ln -s %s/liblo.so.0 %s/liblo.so",b,b);
- system(buff);
- progress->value(n+= 1.0f);
- }
- if (do_portaudio->value()) {
- sprintf(buff,"cp -pv ./lib/libportaudio.so %s>/dev/null", b);
- system(buff);
- progress->value(n+= 1.0f);
- }
- if (do_sndfile->value()) {
- sprintf(buff,"cp -pv ./lib/libsndfile.so.1 %s>/dev/null", b);
- system(buff);
- sprintf(buff,"ln -s %s/libsndfile.so.1 %s/libsndfile.so",b,b);
- system(buff);
- progress->value(n+= 1.0f);
- }
- }
- }
- if (doBin->value() && strlen(opcdir->value())!=0) {
- /* Need to setup OPCODEDIR or OPCODEDIR64 */
- /* This differs according to which shell is being used, so for
- bash/sh add to .profile "OPCODEDIRxx=yyy; export OPCODEDIRxx"
- csh/tcsh add to .cshrc "setenv OPCODEDIRxx yyyy"
- */
- char buff[120];
- char binlink[256];
- char oplink[256];
- FILE *rc;
- // Make full address
- if (bindir->value()[0]!='/') {
- char bb[200];
- getcwd(bb, 200);
- sprintf(binlink, "%s/%s", bb, bindir->value());
- }
- else
- strcpy(binlink, bindir->value());
- if (opcdir->value()[0]!='/') {
- char bb[200];
- getcwd(bb, 200);
- sprintf(oplink, "%s/%s", bb, opcdir->value());
- }
- else
- strcpy(oplink, opcdir->value());
- sprintf(buff, "%s/cs5", binlink);
- rc = fopen(buff, "w");
- fprintf(rc, "#!/bin/sh\n%s=%s\n%s/csound $0\n",
- envy, oplink, binlink);
- fclose(rc);
- chmod(buff,S_IEXEC|S_IREAD|S_IWRITE|S_IXGRP|S_IXOTH);
- }
- err->color(FL_GRAY);
- do_alert("Installation finished");
-}
diff --git a/installer/macosx/release-build-10.7.sh b/installer/macosx/release-build-10.7.sh
new file mode 100755
index 0000000..e0dc235
--- /dev/null
+++ b/installer/macosx/release-build-10.7.sh
@@ -0,0 +1,275 @@
+#!/bin/sh
+
+export MANUAL_DIR=`pwd`/../../../manual
+export PACKAGE_NAME=csound5.14-OSX10.7-universal.pkg
+export DMG_DIR="Csound 5.14"
+export DMG_NAME="csound5.14-OSX10.7-universal.dmg"
+# If arg2 passed in, will cd into that dir and rebuild, otherwise
+# will clone from repo and do a fresh build
+
+if [ $# -gt 0 ]; then
+ cd $1
+ echo "Using directory $1 `pwd`"
+ export INSTALLER_DIR=`pwd`/installer
+ rm -rf installer
+ mkdir installer
+else
+ export RELEASE_DIR="`eval date +%Y-%m-%d-%H%M%S`"
+ export INSTALLER_DIR=`pwd`/$RELEASE_DIR/installer
+ mkdir $RELEASE_DIR
+ mkdir $INSTALLER_DIR
+ cd $RELEASE_DIR
+
+ #git clone git://csound.git.sourceforge.net/gitroot/csound/csound5
+ git clone ../../.. csound5
+ cp -R csound5 csound5-f
+fi
+
+#BUILD DOUBLES CSOUND
+echo "Building Csound (double)..."
+cd csound5
+cp ../../custom.10.7.py custom.py
+
+export SCONSFLAGS="CC=gcc-4.2 CXX=g++-4.2 gcc4opt=universalX86 useFLTK=1 includeMP3=1 noDebug=1 buildInterfaces=1 buildPythonOpcodes=1 buildRelease=1 buildTclcsound=1 buildPDClass=1 useOSC=1 buildNewParser=1 dynamicCsoundLibrary=1 buildVirtual=1 useJack=1 buildCsoundAC=1 useGettext=0 NewParserDebug=0 buildPythonWrapper=1 buildMultiCore=1 buildJavaWrapper=1 buildLuaOpcodes=0 useDouble=1"
+/usr/local/bin/scons -j2 &> ../csound5_build_log.txt
+
+# BUILD FLOAT CSOUND5
+echo "Building Csound (float)..."
+
+cd ../csound5-f
+cp ../../custom.10.7.py custom.py
+
+export SCONSFLAGS="CC=gcc-4.2 CXX=g++-4.2 gcc4opt=universalX86 useFLTK=1 includeMP3=1 noDebug=1 buildInterfaces=1 buildPythonOpcodes=1 buildRelease=1 buildTclcsound=1 buildPDClass=1 useOSC=1 buildNewParser=1 dynamicCsoundLibrary=1 buildVirtual=1 useJack=1 buildCsoundAC=1 useGettext=0 NewParserDebug=0 buildPythonWrapper=1 buildMultiCore=1 buildJavaWrapper=1 buildLuaOpcodes=0"
+/usr/local/bin/scons -j2 &> ../csound5-f_build_log.txt
+
+cd ..
+
+# ASSEMBLE FILES FOR INSTALLER
+export CSLIBVERSION=5.2
+export SUPPORT_LIBS_DIR=$INSTALLER_DIR/SupportLibs/Package_Contents/usr/local/lib
+export APPS32_DIR=$INSTALLER_DIR/CsoundApps/Package_Contents/usr/local/bin
+export APPS64_DIR=$INSTALLER_DIR/CsoundApps64/Package_Contents/usr/local/bin
+export FRAMEWORK32_DIR=$INSTALLER_DIR/CsoundLib/Package_Contents/Library/Frameworks/CsoundLib.framework
+export FRAMEWORK64_DIR=$INSTALLER_DIR/CsoundLib64/Package_Contents/Library/Frameworks/CsoundLib64.framework
+
+export PYTHON_DIR=Versions/$CSLIBVERSION/Resources/Python/Current
+export TCLTK_DIR=Versions/$CSLIBVERSION/Resources/TclTk
+export JAVA_DIR=Versions/$CSLIBVERSION/Resources/Java
+export CSLADSPA_DIR=Versions/$CSLIBVERSION/Resources/csladspa
+export SAMPLES_DIR=Versions/$CSLIBVERSION/Resources/samples
+export PD_DIR=Versions/$CSLIBVERSION/Resources/PD
+
+mkdir -p $SUPPORT_LIBS_DIR
+mkdir -p $APPS32_DIR
+mkdir -p $APPS64_DIR
+mkdir -p $FRAMEWORK32_DIR
+mkdir -p $FRAMEWORK64_DIR
+
+mkdir -p $FRAMEWORK32_DIR/$PYTHON_DIR
+mkdir -p $FRAMEWORK32_DIR/$TCLTK_DIR
+mkdir -p $FRAMEWORK32_DIR/$PYTHON_DIR
+mkdir -p $FRAMEWORK32_DIR/$JAVA_DIR
+mkdir -p $FRAMEWORK32_DIR/$SAMPLES_DIR
+mkdir -p $FRAMEWORK32_DIR/$PD_DIR
+mkdir -p $FRAMEWORK32_DIR/../Documentation
+#mkdir -p $FRAMEWORK32_DIR/Headers
+
+mkdir -p $FRAMEWORK64_DIR/$PYTHON_DIR
+mkdir -p $FRAMEWORK64_DIR/$TCLTK_DIR
+mkdir -p $FRAMEWORK64_DIR/$PYTHON_DIR
+mkdir -p $FRAMEWORK64_DIR/$JAVA_DIR
+mkdir -p $FRAMEWORK64_DIR/$SAMPLES_DIR
+mkdir -p $FRAMEWORK64_DIR/$PD_DIR
+mkdir -p $FRAMEWORK64_DIR/../Documentation
+#mkdir -p $FRAMEWORK64_DIR/Headers
+
+cp -R csound5/CsoundLib64.framework/ $FRAMEWORK64_DIR
+cp -R csound5-f/CsoundLib.framework/ $FRAMEWORK32_DIR
+
+
+
+echo "Copying Python Libs..."
+
+cp csound5-f/_csnd.so $FRAMEWORK32_DIR/$PYTHON_DIR
+cp csound5-f/csnd.py $FRAMEWORK32_DIR/$PYTHON_DIR
+cp csound5-f/CsoundAC.py $FRAMEWORK32_DIR/$PYTHON_DIR
+cp csound5-f/_CsoundAC.so $FRAMEWORK32_DIR/$PYTHON_DIR
+
+cp csound5/_csnd.so $FRAMEWORK64_DIR/$PYTHON_DIR
+cp csound5/csnd.py $FRAMEWORK64_DIR/$PYTHON_DIR
+cp csound5/CsoundAC.py $FRAMEWORK64_DIR/$PYTHON_DIR
+cp csound5/_CsoundAC.so $FRAMEWORK64_DIR/$PYTHON_DIR
+
+
+
+echo "preparing framework..."
+
+cp csound5-f/lib_csnd.dylib $FRAMEWORK32_DIR/Versions/$CSLIBVERSION/
+cp csound5-f/tclcsound.dylib $FRAMEWORK32_DIR/$TCLTK_DIR
+cp csound5-f/csladspa.so $FRAMEWORK32_DIR/$CSLADSPA_DIR
+cp csound5-f/lib_jcsound.jnilib $FRAMEWORK32_DIR/$JAVA_DIR
+cp csound5-f/csnd.jar $FRAMEWORK32_DIR/$JAVA_DIR
+cp csound5-f/csoundapi~.pd_darwin $FRAMEWORK32_DIR/$PD_DIR
+cp csound5-f/examples/csoundapi_tilde/csoundapi-osx.pd $FRAMEWORK32_DIR/$PD_DIR/csoundapi.pd
+cp csound5-f/examples/csoundapi_tilde/csapi_demo.csd $FRAMEWORK32_DIR/../Documentation/
+
+cp csound5/lib_csnd.dylib $FRAMEWORK64_DIR/Versions/$CSLIBVERSION/
+cp csound5/tclcsound.dylib $FRAMEWORK64_DIR/$TCLTK_DIR
+cp csound5/csladspa.so $FRAMEWORK64_DIR/$CSLADSPA_DIR
+cp csound5/lib_jcsound.jnilib $FRAMEWORK64_DIR/$JAVA_DIR
+cp csound5/csnd.jar $FRAMEWORK64_DIR/$JAVA_DIR
+cp csound5/csoundapi~.pd_darwin $FRAMEWORK64_DIR/$PD_DIR
+cp csound5/examples/csoundapi_tilde/csoundapi-osx.pd $FRAMEWORK64_DIR/$PD_DIR/csoundapi.pd
+cp csound5/examples/csoundapi_tilde/csapi_demo.csd $FRAMEWORK64_DIR/../Documentation/
+
+
+echo "copying manual..."
+
+cp -Rf $MANUAL_DIR/html $FRAMEWORK32_DIR/Resources/
+mv $FRAMEWORK32_DIR/Resources/html $FRAMEWORK32_DIR/Resources/Manual
+
+cp -Rf $MANUAL_DIR/html $FRAMEWORK64_DIR/Resources/
+mv $FRAMEWORK64_DIR/Resources/html $FRAMEWORK64_DIR/Resources/Manual
+
+
+echo "copying headers..."
+
+cp csound5-f/interfaces/*.hpp $FRAMEWORK32_DIR/Headers
+cp csound5/interfaces/*.hpp $FRAMEWORK64_DIR/Headers
+
+
+echo "copying samples..."
+
+cp csound5-f/samples/*.dat $FRAMEWORK32_DIR/$SAMPLES_DIR
+cp csound5/samples/*.dat $FRAMEWORK64_DIR/$SAMPLES_DIR
+
+
+echo "copying csladspa..."
+
+mkdir -p $APPS32_DIR/../../../Library/Audio/Plug-Ins/LADSPA
+cp csound5-f/csladspa.so $APPS32_DIR/../../../Library/Audio/Plug-Ins/LADSPA/csladspa.so
+
+
+mkdir -p $APPS64_DIR/../../../Library/Audio/Plug-Ins/LADSPA
+cp csound5/csladspa.so $APPS64_DIR/../../../Library/Audio/Plug-Ins/LADSPA/csladspa64.so
+
+
+echo "copying apps..."
+
+cd csound5-f
+
+cp csound $APPS32_DIR
+cp dnoise $APPS32_DIR
+cp het_export $APPS32_DIR
+cp lpanal $APPS32_DIR
+cp scale $APPS32_DIR
+cp tabdes $APPS32_DIR
+cp cs $APPS32_DIR
+cp cstclsh $APPS32_DIR
+cp envext $APPS32_DIR
+cp het_import $APPS32_DIR
+cp lpc_export $APPS32_DIR
+cp mixer $APPS32_DIR
+cp scsort $APPS32_DIR
+cp cswish $APPS32_DIR
+cp extract $APPS32_DIR
+cp hetro $APPS32_DIR
+cp lpc_import $APPS32_DIR
+cp pvanal $APPS32_DIR
+cp sndinfo $APPS32_DIR
+cp csb64enc $APPS32_DIR
+cp cvanal $APPS32_DIR
+cp extractor $APPS32_DIR
+cp linseg $APPS32_DIR
+cp makecsd $APPS32_DIR
+cp pvlook $APPS32_DIR
+cp srconv $APPS32_DIR
+cp atsa $APPS32_DIR
+
+cd ../csound5
+
+cp csound $APPS64_DIR/csound64
+
+cd ..
+
+
+
+echo "copying support libs..."
+
+cp /usr/local/lib/libfltk.1.3.dylib $SUPPORT_LIBS_DIR
+cp /usr/local/lib/libfltk_images.1.3.dylib $SUPPORT_LIBS_DIR
+cp /usr/local/lib/libfluidsynth.1.dylib $SUPPORT_LIBS_DIR
+cp /usr/local/lib/liblo.7.dylib $SUPPORT_LIBS_DIR
+cp /usr/local/lib/libsndfile.1.dylib $SUPPORT_LIBS_DIR
+cp /usr/local/lib/libportaudio.2.dylib $SUPPORT_LIBS_DIR
+cp /usr/local/lib/libportmidi.dylib $SUPPORT_LIBS_DIR
+#cp /usr/local/lib/libpng12.0.dylib $SUPLIBS
+cp /usr/local/lib/libmpadec.so $SUPPORT_LIBS_DIR
+#cp /usr/local/lib/libmpadec.dylib $SUPPORT_LIBS_DIR
+#cp /usr/local/lib/libluajit.dylib $SUPLIBS
+
+
+echo "...setting permissions..."
+
+cd installer
+
+chgrp -R admin CsoundLib/Package_Contents/Library
+chown -R root CsoundLib/Package_Contents/Library
+chmod -R 775 CsoundLib/Package_Contents/Library
+#chgrp -R wheel CsoundLib/Package_Contents/System
+#chown -R root CsoundLib/Package_Contents/System
+#chmod -R 755 CsoundLib/Package_Contents/System
+
+chgrp -R admin CsoundApps/Package_Contents/Library
+chown -R root CsoundApps/Package_Contents/Library
+chmod -R 775 CsoundApps/Package_Contents/Library
+chgrp -R wheel CsoundApps/Package_Contents/usr
+chown -R root CsoundApps/Package_Contents/usr
+chmod -R 755 CsoundApps/Package_Contents/usr
+
+chgrp -R admin CsoundLib64/Package_Contents/Library
+chown -R root CsoundLib64/Package_Contents/Library
+chmod -R 775 CsoundLib64/Package_Contents/Library
+#chgrp -R wheel CsoundLib64/Package_Contents/System
+#chown -R root CsoundLib64/Package_Contents/System
+#chmod -R 755 CsoundLib64/Package_Contents/System
+
+chgrp -R admin CsoundApps64/Package_Contents/Library
+chown -R root CsoundApps64/Package_Contents/Library
+chmod -R 775 CsoundApps64/Package_Contents/Library
+chgrp -R wheel CsoundApps64/Package_Contents/usr
+chown -R root CsoundApps64/Package_Contents/usr
+chmod -R 755 CsoundApps64/Package_Contents/usr
+
+
+chgrp -R wheel SupportLibs/Package_Contents/usr
+chown -R root SupportLibs/Package_Contents/usr
+chmod -R 755 SupportLibs/Package_Contents/usr
+
+echo "building packages ..."
+
+pkgbuild --identifier com.csound.csound5Environment.csoundLib64 --root CsoundLib64/Package_Contents/ --version 1 --scripts ../../PkgResources/CsoundLib64 CsoundLib64.pkg
+pkgbuild --identifier com.csound.csound5Environment.csoundLib --root CsoundLib/Package_Contents/ --version 1 --scripts ../../PkgResources/CsoundLib CsoundLib.pkg
+pkgbuild --identifier com.csound.csound5Environment.csoundApps --root CsoundApps/Package_Contents/ --version 1 --scripts ../../PkgResources/CsoundApps CsoundApps.pkg
+pkgbuild --identifier com.csound.csound5Environment.csoundApps64 --root CsoundApps64/Package_Contents/ --version 1 --scripts ../../PkgResources/CsoundApps64 CsoundApps64.pkg
+pkgbuild --identifier com.csound.csound5Environment.supportLibs --root SupportLibs/Package_Contents/ --version 1 --scripts ../../PkgResources/SupportLibs SupportLibs.pkg
+
+
+echo "building product..."
+
+productbuild --distribution ../../Distribution.dist --resources ../../PkgResources/en.lproj $PACKAGE_NAME
+
+echo "assembling DMG..."
+
+mkdir "$DMG_DIR"
+cd "$DMG_DIR"
+cp ../$PACKAGE_NAME .
+cp -R ../../../DmgResources/* .
+ln -s /Applications .
+cd ..
+
+hdiutil create "$DMG_NAME" -srcfolder "$DMG_DIR"
+
+echo "... finished."
+
+open $INSTALLER_DIR
diff --git a/installer/windows/csoundd.nsi b/installer/windows/csoundd.nsi
index 368a338..91d6a9a 100644
--- a/installer/windows/csoundd.nsi
+++ b/installer/windows/csoundd.nsi
@@ -18,7 +18,7 @@
#######################################################################
!define PRODUCT "Csound"
-!define PROGRAM "Csound5.14.0"
+!define PROGRAM "Csound5.14.2"
!echo "Building installer for: ${PROGRAM}"
!ifdef FLOAT
!ifdef NONFREE
diff --git a/po/american.po b/po/american.po
index 294f4f4..2e66851 100644
--- a/po/american.po
+++ b/po/american.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: CSOUND 5.xx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-07-26 19:39+0100\n"
-"PO-Revision-Date: 2010-12-28 14:14+0000\n"
+"PO-Revision-Date: 2011-12-20 13:18+0000\n"
"Last-Translator: John ffitch <jpff at sourceforge.net>\n"
"Language-Team: English (USA)\n"
"Language: \n"
@@ -31,22 +31,22 @@ msgstr ""
msgid "auxlist for instr %d (%p):\n"
msgstr ""
-#: Engine/auxfd.c:153
+#: Engine/auxfd.c:154
#, c-format
msgid "\tauxch at %p: size %ld, auxp %p, endp %p\n"
msgstr ""
-#: Engine/auxfd.c:165
+#: Engine/auxfd.c:166
#, c-format
msgid "fdlist for instr %s [%d] (%p):"
msgstr ""
-#: Engine/auxfd.c:168
+#: Engine/auxfd.c:169
#, c-format
msgid "fdlist for instr %d (%p):"
msgstr ""
-#: Engine/auxfd.c:171
+#: Engine/auxfd.c:172
#, c-format
msgid " fd %p in %p"
msgstr ""
@@ -99,356 +99,316 @@ msgstr ""
msgid "(unknown error)"
msgstr ""
-#: Engine/csound_orc_compile.c:214 Engine/rdorch.c:1832
+#: Engine/csound_orc_compile.c:138
+#, c-format
+msgid ""
+"input arg %d '%s' of type %s not allowed when expecting %c (for opcode %s), "
+"line %d\n"
+msgstr ""
+
+#: Engine/csound_orc_compile.c:265 Engine/rdorch.c:1862
msgid "missing or extra arg"
msgstr ""
-#: Engine/csound_orc_compile.c:218
+#: Engine/csound_orc_compile.c:269
msgid "too many input args\n"
msgstr ""
-#: Engine/csound_orc_compile.c:475
+#: Engine/csound_orc_compile.c:304
#, c-format
-msgid "create_opcode: No rule to handle statement of type %d\n"
+msgid "input arg '%s' used before defined (in opcode %s), line %d\n"
msgstr ""
-#: Engine/csound_orc_compile.c:671
+#: Engine/csound_orc_compile.c:380
#, c-format
-msgid "create_instrument: instr num %ld\n"
+msgid ""
+"output name previously used, type '%c' must be uniquely defined, line %d"
msgstr ""
-#: Engine/csound_orc_compile.c:681
+#: Engine/csound_orc_compile.c:386
#, c-format
-msgid "create_instrument: instr name %s\n"
+msgid "output arg '%s' illegal type (for opcode %s), line %d\n"
msgstr ""
-#: Engine/csound_orc_compile.c:688 Engine/otran.c:351
-msgid "invalid name for instrument"
-msgstr ""
-
-#: Engine/csound_orc_compile.c:692 Engine/otran.c:356
+#: Engine/csound_orc_compile.c:541
#, c-format
-msgid "instr %s redefined"
-msgstr "instr %s redefined"
+msgid "create_opcode: No rule to handle statement of type %d\n"
+msgstr ""
-#: Engine/csound_orc_compile.c:833 Engine/otran.c:145 Engine/symbtab.c:394
+#: Engine/csound_orc_compile.c:738
#, c-format
-msgid "invalid input type for opcode %s"
+msgid "create_instrument: instr num %ld\n"
msgstr ""
-#: Engine/csound_orc_compile.c:838 Engine/otran.c:150 Engine/symbtab.c:399
+#: Engine/csound_orc_compile.c:748
#, c-format
-msgid "too many input args for opcode %s"
+msgid "create_instrument: instr name %s\n"
msgstr ""
-#: Engine/csound_orc_compile.c:853 Engine/otran.c:165 Engine/symbtab.c:414
-#, c-format
-msgid "too many output args for opcode %s"
+#: Engine/csound_orc_compile.c:755 Engine/otran.c:364
+msgid "invalid name for instrument"
msgstr ""
-#: Engine/csound_orc_compile.c:869 Engine/otran.c:187 Engine/symbtab.c:433
+#: Engine/csound_orc_compile.c:759 Engine/otran.c:370
#, c-format
-msgid "invalid output type for opcode %s"
-msgstr ""
+msgid "instr %s redefined"
+msgstr "instr %s redefined"
-#: Engine/csound_orc_compile.c:954 Engine/otran.c:339
+#: Engine/csound_orc_compile.c:903 Engine/otran.c:352
#, c-format
msgid "instr %ld redefined"
msgstr ""
-#: Engine/csound_orc_compile.c:964
+#: Engine/csound_orc_compile.c:914
msgid "!!! csound->opcodeInfo is NULL !!!\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1111
+#: Engine/csound_orc_compile.c:1083
#, c-format
msgid "Unknown TREE node of type %d found in root.\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1168 Engine/otran.c:565 Engine/otran.c:1414
+#: Engine/csound_orc_compile.c:1140 Engine/otran.c:579 Engine/otran.c:1433
#, c-format
msgid "%s invalid sample rate"
msgstr ""
-#: Engine/csound_orc_compile.c:1170 Engine/otran.c:567 Engine/otran.c:1416
+#: Engine/csound_orc_compile.c:1142 Engine/otran.c:581 Engine/otran.c:1435
#, c-format
msgid "%s invalid control rate"
msgstr ""
-#: Engine/csound_orc_compile.c:1173 Engine/otran.c:570 Engine/otran.c:1412
+#: Engine/csound_orc_compile.c:1146 Engine/otran.c:584 Engine/otran.c:1431
#, c-format
msgid "%s invalid ksmps value"
msgstr ""
-#: Engine/csound_orc_compile.c:1176 Engine/otran.c:572 Engine/otran.c:1418
+#: Engine/csound_orc_compile.c:1149 Engine/otran.c:587 Engine/otran.c:1437
#, c-format
msgid "%s inconsistent sr, kr, ksmps"
msgstr ""
-#: Engine/csound_orc_compile.c:1190
+#: Engine/csound_orc_compile.c:1165
msgid "perf-pass statements illegal in header blk\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1195
+#: Engine/csound_orc_compile.c:1170
#, c-format
msgid "%d syntax errors in orchestra. compilation invalid\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1255 Engine/otran.c:656
+#: Engine/csound_orc_compile.c:1230 Engine/otran.c:671
msgid "inconsistent argoff sumcount"
msgstr ""
-#: Engine/csound_orc_compile.c:1327 Engine/otran.c:725
+#: Engine/csound_orc_compile.c:1302 Engine/otran.c:740
#, c-format
msgid "LABELS list is full...extending to %d\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1365 Engine/otran.c:763
+#: Engine/csound_orc_compile.c:1340 Engine/otran.c:778
#, c-format
msgid "GOTOS list is full..extending to %d\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1398 Engine/otran.c:796
+#: Engine/csound_orc_compile.c:1373 Engine/otran.c:811
#, c-format
msgid "target label '%s' not found"
msgstr ""
-#: Engine/csound_orc_compile.c:1463 Engine/otran.c:851
+#: Engine/csound_orc_compile.c:1451 Engine/otran.c:866
#, c-format
msgid "string syntax '%s'"
msgstr ""
-#: Engine/csound_orc_compile.c:1513 Engine/otran.c:901
+#: Engine/csound_orc_compile.c:1501 Engine/otran.c:916
#, c-format
msgid "numeric syntax '%s'"
msgstr ""
-#: Engine/csound_orc_compile.c:1539 Engine/otran.c:927
+#: Engine/csound_orc_compile.c:1527 Engine/otran.c:942
#, c-format
msgid "extending Floating pool to %d\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1578 Engine/otran.c:999
+#: Engine/csound_orc_compile.c:1566 Engine/otran.c:1018
msgid "gblnamset(): memory allocation failure"
msgstr ""
-#: Engine/csound_orc_compile.c:1606 Engine/otran.c:1027
+#: Engine/csound_orc_compile.c:1594 Engine/otran.c:1046
msgid "lclnamset(): memory allocation failure"
msgstr ""
-#: Engine/csound_orc_compile.c:1632 Engine/otran.c:1052
+#: Engine/csound_orc_compile.c:1620 Engine/otran.c:1071
msgid "unexpected global name"
msgstr ""
-#: Engine/csound_orc_compile.c:1655 Engine/otran.c:1074
+#: Engine/csound_orc_compile.c:1643 Engine/otran.c:1093
msgid "unknown nametype"
msgstr ""
-#: Engine/csound_orc.l:239
+#: Engine/csound_orc_expressions.c:459
#, c-format
-msgid "unterminated string found on line %d >>%s<<\n"
+msgid "error: function %s with arg type %c not found, line %d \n"
msgstr ""
-#: Engine/csound_orc.l:259 Engine/csound_orc.l:286 Engine/csound_orc.l:314
-#: Engine/csound_orc.l:367 Engine/rdorch.c:901 Engine/sread.c:396
+#: Engine/csound_orc_expressions.c:862
#, c-format
-msgid "Undefined macro: '%s'"
-msgstr ""
-
-#: Engine/csound_orc.l:265 Engine/csound_orc.l:292
-msgid "Includes nested too deeply"
+msgid "error: non-existent statement in conditional, line %d \n"
msgstr ""
-#: Engine/csound_orc.l:335 Engine/csound_orc.l:388 Engine/rdorch.c:940
+#: Engine/csound_orc_semantics.c:157
#, c-format
msgid ""
-"Missing argument terminator\n"
-"%.98s"
-msgstr ""
-
-#: Engine/csound_orc.l:484
-#, c-format
-msgid "Line %d: Unknown character: '%c'(%2x)\n"
-msgstr ""
-
-#: Engine/csound_orc.l:527
-#, c-format
-msgid "Cannot open file \"%s\"\n"
-msgstr "Can't open input file \"%s\"\n"
-
-#: Engine/csound_orc.l:573 Engine/rdorch.c:689 Engine/sread.c:1595
-msgid "macro error\n"
-msgstr ""
-
-#: Engine/csound_orc.l:631 Engine/rdorch.c:845 Engine/sread.c:1686
-#, c-format
-msgid "macro %s undefined\n"
-msgstr ""
-
-#: Engine/csound_orc.l:645 Engine/rdorch.c:859 Engine/sread.c:294
-msgid "Undefining undefined macro"
-msgstr ""
-
-#: Engine/csound_orc.l:786 Engine/rdorch.c:413 Engine/sread.c:741
-#, c-format
-msgid "Macro definition for %*s\n"
-msgstr ""
-
-#: Engine/csound_orc.l:789 Engine/rdorch.c:416
-msgid "Invalid macro name for --omacro"
-msgstr ""
-
-#: Engine/csound_orc.y:270
-msgid "No number following instr\n"
+"\n"
+"error: %s (token \"%s\")"
msgstr ""
-#: Engine/csound_orc_semantics.c:127
+#: Engine/csound_orc_semantics.c:159
#, c-format
-msgid "error: %s (token \"%s\")"
+msgid ""
+" line %d:\n"
+">>>"
msgstr ""
-#: Engine/csound_orc_semantics.c:129
+#: Engine/csound_orc_semantics.c:732
#, c-format
-msgid " line %d: %s"
-msgstr ""
-
-#: Engine/csound_orc_semantics.c:702 Engine/rdorch.c:1863
-msgid "insufficient required arguments"
+msgid "insufficient required arguments for opcode %s on line %d\n"
msgstr ""
-#: Engine/csound_orc_semantics.c:768 Engine/rdorch.c:1617 Engine/rdorch.c:1635
-#: Engine/rdorch.c:1676 Engine/rdorch.c:1811 Engine/rdorch.c:1980
+#: Engine/csound_orc_semantics.c:797 Engine/rdorch.c:1644 Engine/rdorch.c:1662
+#: Engine/rdorch.c:1703 Engine/rdorch.c:1841 Engine/rdorch.c:2011
#, c-format
msgid "modified opcod: %s"
msgstr ""
-#: Engine/cs_par_dispatch.c:113 Engine/cs_par_dispatch.c:125
+#: Engine/cs_par_dispatch.c:115 Engine/cs_par_dispatch.c:128
#, c-format
msgid "Poorly specified global lock index: %i [max: %i]\n"
msgstr ""
-#: Engine/cs_par_dispatch.c:138 Engine/cs_par_dispatch.c:157
+#: Engine/cs_par_dispatch.c:142 Engine/cs_par_dispatch.c:162
msgid "Invalid NULL parameter name for a global variable\n"
msgstr ""
-#: Engine/cs_par_dispatch.c:505 Engine/cs_par_dispatch.c:528
-#: Engine/cs_par_dispatch.c:2463 Engine/cs_par_dispatch.c:2507
-#: Engine/cs_par_dispatch.c:2509 Engine/cs_par_dispatch.c:2570
+#: Engine/cs_par_dispatch.c:526 Engine/cs_par_dispatch.c:553
+#: Engine/cs_par_dispatch.c:2543 Engine/cs_par_dispatch.c:2588
+#: Engine/cs_par_dispatch.c:2590 Engine/cs_par_dispatch.c:2654
msgid "Invalid NULL Parameter entry"
msgstr ""
-#: Engine/cs_par_dispatch.c:507 Engine/cs_par_dispatch.c:541
-#: Engine/cs_par_dispatch.c:566 Engine/cs_par_dispatch.c:605
+#: Engine/cs_par_dispatch.c:528 Engine/cs_par_dispatch.c:567
+#: Engine/cs_par_dispatch.c:594 Engine/cs_par_dispatch.c:635
msgid "Invalid NULL Parameter name"
msgstr ""
-#: Engine/cs_par_dispatch.c:512
+#: Engine/cs_par_dispatch.c:535
msgid "Failed to allocate Opcode Weight cache entry"
msgstr ""
-#: Engine/cs_par_dispatch.c:632 Engine/cs_par_dispatch.c:718
+#: Engine/cs_par_dispatch.c:664 Engine/cs_par_dispatch.c:755
msgid "No Weights to Dump (Using Defaults)\n"
msgstr ""
-#: Engine/cs_par_dispatch.c:670 Engine/cs_par_dispatch.c:794
+#: Engine/cs_par_dispatch.c:705 Engine/cs_par_dispatch.c:835
#, c-format
msgid "Opcode Weight Spec File not found at: %s"
msgstr ""
-#: Engine/cs_par_dispatch.c:722
+#: Engine/cs_par_dispatch.c:759
msgid "Weights Dump\n"
msgstr ""
-#: Engine/cs_par_dispatch.c:866
+#: Engine/cs_par_dispatch.c:907
#, c-format
msgid "Parallel Spec File not found at: %s"
msgstr ""
-#: Engine/cs_par_dispatch.c:872
+#: Engine/cs_par_dispatch.c:913
msgid "Parallel Spec File invalid format expected weight_min parameter"
msgstr ""
-#: Engine/cs_par_dispatch.c:877
+#: Engine/cs_par_dispatch.c:918
msgid "Parallel Spec File invalid format expected weight_max parameter"
msgstr ""
-#: Engine/cs_par_dispatch.c:881
+#: Engine/cs_par_dispatch.c:922
msgid "Parallel Spec File invalid format expected roots_avail_min parameter"
msgstr ""
-#: Engine/cs_par_dispatch.c:885
+#: Engine/cs_par_dispatch.c:926
msgid "Parallel Spec File invalid format expected roots_avail_max parameter"
msgstr ""
-#: Engine/cs_par_dispatch.c:961 Engine/cs_par_dispatch.c:985
-#: Engine/cs_par_dispatch.c:1109 Engine/cs_par_dispatch.c:1195
-#: Engine/cs_par_dispatch.c:1332 Engine/cs_par_dispatch.c:1366
-#: Engine/cs_par_dispatch.c:1383 Engine/cs_par_dispatch.c:1405
-#: Engine/cs_par_dispatch.c:1432 Engine/cs_par_dispatch.c:1452
-#: Engine/cs_par_dispatch.c:1476 Engine/cs_par_dispatch.c:1566
-#: Engine/cs_par_dispatch.c:1621 Engine/cs_par_dispatch.c:1714
-#: Engine/cs_par_dispatch.c:1769 Engine/cs_par_dispatch.c:2597
+#: Engine/cs_par_dispatch.c:1003 Engine/cs_par_dispatch.c:1027
+#: Engine/cs_par_dispatch.c:1155 Engine/cs_par_dispatch.c:1251
+#: Engine/cs_par_dispatch.c:1405 Engine/cs_par_dispatch.c:1439
+#: Engine/cs_par_dispatch.c:1456 Engine/cs_par_dispatch.c:1478
+#: Engine/cs_par_dispatch.c:1506 Engine/cs_par_dispatch.c:1528
+#: Engine/cs_par_dispatch.c:1552 Engine/cs_par_dispatch.c:1644
+#: Engine/cs_par_dispatch.c:1699 Engine/cs_par_dispatch.c:1792
+#: Engine/cs_par_dispatch.c:1847 Engine/cs_par_dispatch.c:2681
msgid "Invalid NULL Parameter dag"
msgstr ""
-#: Engine/cs_par_dispatch.c:966
+#: Engine/cs_par_dispatch.c:1008
msgid "Failed to allocate dag"
msgstr ""
-#: Engine/cs_par_dispatch.c:1017 Engine/cs_par_dispatch.c:1040
-#: Engine/cs_par_dispatch.c:1062 Engine/cs_par_dispatch.c:1064
+#: Engine/cs_par_dispatch.c:1060 Engine/cs_par_dispatch.c:1083
+#: Engine/cs_par_dispatch.c:1105 Engine/cs_par_dispatch.c:1107
msgid "Invalid NULL Parameter dag_node"
msgstr ""
-#: Engine/cs_par_dispatch.c:1019
+#: Engine/cs_par_dispatch.c:1062
msgid "Invalid NULL Parameter instr"
msgstr ""
-#: Engine/cs_par_dispatch.c:1021
+#: Engine/cs_par_dispatch.c:1064
msgid "Invalid NULL Parameter insds"
msgstr ""
-#: Engine/cs_par_dispatch.c:1026 Engine/cs_par_dispatch.c:1048
+#: Engine/cs_par_dispatch.c:1069 Engine/cs_par_dispatch.c:1091
msgid "Failed to allocate dag_node"
msgstr ""
-#: Engine/cs_par_dispatch.c:1043
+#: Engine/cs_par_dispatch.c:1086
msgid "Invalid Parameter count must be greater than 0"
msgstr ""
-#: Engine/cs_par_dispatch.c:1175 Engine/cs_par_dispatch.c:1433
-#: Engine/cs_par_dispatch.c:2465 Engine/cs_par_dispatch.c:2571
-#: Engine/cs_par_dispatch.c:2598
+#: Engine/cs_par_dispatch.c:1229 Engine/cs_par_dispatch.c:1508
+#: Engine/cs_par_dispatch.c:2545 Engine/cs_par_dispatch.c:2655
+#: Engine/cs_par_dispatch.c:2682
msgid "Invalid NULL Parameter chain"
msgstr ""
-#: Engine/cs_par_dispatch.c:1183
+#: Engine/cs_par_dispatch.c:1237
#, c-format
msgid "Failed to find semantic information for instrument '%i'"
msgstr ""
-#: Engine/cs_par_dispatch.c:1478
+#: Engine/cs_par_dispatch.c:1554
msgid "Invalid NULL Parameter node"
msgstr ""
-#: Engine/cs_par_dispatch.c:1480
+#: Engine/cs_par_dispatch.c:1556
msgid "Invalid NULL Parameter update_hdl"
msgstr ""
-#: Engine/cs_par_dispatch.c:1569
+#: Engine/cs_par_dispatch.c:1647
msgid "Invalid Parameter update_hdl is outside the DAG range"
msgstr ""
-#: Engine/cs_par_dispatch.c:2417
-#, fuzzy, c-format
+#: Engine/cs_par_dispatch.c:2497
+#, c-format
msgid "Parallel Dump File not found at: %s for writing"
-msgstr "can't open %s for writing"
+msgstr "Parallel Dump File not found at: %s for writing"
-#: Engine/cs_par_dispatch.c:2477
+#: Engine/cs_par_dispatch.c:2557
msgid "Failed to allocate Dag2 cache entry"
msgstr ""
-#: Engine/cs_par_dispatch.c:2527
+#: Engine/cs_par_dispatch.c:2610
msgid "Cache Update\n"
msgstr ""
@@ -462,12 +422,12 @@ msgstr ""
msgid "Creating search path cache for '%s':"
msgstr ""
-#: Engine/envvar.c:1082
+#: Engine/envvar.c:1083
#, c-format
msgid "internal error: csoundFileOpen(): invalid type: %d"
msgstr ""
-#: Engine/envvar.c:1264
+#: Engine/envvar.c:1266
#, c-format
msgid "internal error: csoundCreateFileHandle(): invalid type: %d"
msgstr ""
@@ -525,345 +485,346 @@ msgstr ""
msgid "expression syntax"
msgstr ""
-#: Engine/fgens.c:95
+#: Engine/fgens.c:91
msgid "unknown GEN number"
msgstr ""
-#: Engine/fgens.c:137
+#: Engine/fgens.c:133
msgid "ftable does not exist"
msgstr "ftable doesn't exist"
-#: Engine/fgens.c:142
+#: Engine/fgens.c:138
#, c-format
msgid "ftable %d now deleted\n"
msgstr ""
-#: Engine/fgens.c:157 Engine/fgens.c:1597 Engine/fgens.c:1683
-#: Engine/fgens.c:1762 Engine/fgens.c:1878 Engine/fgens.c:1959
-#: Engine/fgens.c:2867
+#: Engine/fgens.c:153 Engine/fgens.c:1593 Engine/fgens.c:1679
+#: Engine/fgens.c:1758 Engine/fgens.c:1874 Engine/fgens.c:1955
+#: Engine/fgens.c:2909
msgid "insufficient gen arguments"
msgstr ""
-#: Engine/fgens.c:183 Opcodes/ftgen.c:116
+#: Engine/fgens.c:179 Opcodes/ftgen.c:116
#, c-format
msgid "Named gen \"%s\" not defined"
msgstr ""
-#: Engine/fgens.c:190
+#: Engine/fgens.c:186
msgid "illegal gen number"
msgstr ""
-#: Engine/fgens.c:198
-msgid "deferred size for GENs 1, 23 or 28 only"
+#: Engine/fgens.c:194
+msgid "deferred size for GENs 1, 23, 28 or 49 only"
msgstr ""
-#: Engine/fgens.c:201 Engine/fgens.c:249
+#: Engine/fgens.c:197 Engine/fgens.c:245
#, c-format
msgid "ftable %d:\n"
msgstr ""
-#: Engine/fgens.c:226 Engine/fgens.c:233
+#: Engine/fgens.c:222 Engine/fgens.c:229
msgid "illegal table length"
msgstr ""
-#: Engine/fgens.c:292 Engine/fgens.c:2219
+#: Engine/fgens.c:288 Engine/fgens.c:2215
#, c-format
msgid ""
"ftable %d relocating due to size change\n"
" currently active instruments may find this disturbing"
msgstr ""
-#: Engine/fgens.c:350 Engine/fgens.c:471 Engine/fgens.c:555 Engine/fgens.c:636
-#: Engine/fgens.c:711 Engine/fgens.c:760 Engine/fgens.c:881 Engine/fgens.c:958
-#: Engine/fgens.c:1053 Engine/fgens.c:1097 Engine/fgens.c:1144
-#: Engine/fgens.c:1397 Engine/fgens.c:1459 Engine/fgens.c:1681
-#: Engine/fgens.c:1759 Engine/fgens.c:2114 Engine/fgens.c:2821
-#: Engine/fgens.c:2864
+#: Engine/fgens.c:346 Engine/fgens.c:467 Engine/fgens.c:551 Engine/fgens.c:632
+#: Engine/fgens.c:707 Engine/fgens.c:756 Engine/fgens.c:877 Engine/fgens.c:954
+#: Engine/fgens.c:1049 Engine/fgens.c:1093 Engine/fgens.c:1140
+#: Engine/fgens.c:1393 Engine/fgens.c:1455 Engine/fgens.c:1677
+#: Engine/fgens.c:1755 Engine/fgens.c:2110 Engine/fgens.c:2863
+#: Engine/fgens.c:2906
msgid "using extended arguments\n"
msgstr ""
-#: Engine/fgens.c:374
+#: Engine/fgens.c:370
msgid "no coefs present"
msgstr ""
-#: Engine/fgens.c:379 Engine/fgens.c:645 Engine/fgens.c:653
+#: Engine/fgens.c:375 Engine/fgens.c:641 Engine/fgens.c:649
msgid "illegal x interval"
msgstr ""
-#: Engine/fgens.c:408 Engine/fgens.c:557 Engine/fgens.c:638 Engine/fgens.c:883
-#: Engine/fgens.c:1354 Engine/fgens.c:2378 Engine/fgens.c:2694 Top/main.c:142
-#: util/cvanal.c:66 util/lpanal.c:398 util/pvanal.c:170
+#: Engine/fgens.c:404 Engine/fgens.c:553 Engine/fgens.c:634 Engine/fgens.c:879
+#: Engine/fgens.c:1350 Engine/fgens.c:2375 Engine/fgens.c:2690
+#: Engine/fgens.c:2810 Top/main.c:141 util/cvanal.c:66 util/lpanal.c:398
+#: util/pvanal.c:170
msgid "insufficient arguments"
msgstr ""
-#: Engine/fgens.c:412 Engine/fgens.c:1359
+#: Engine/fgens.c:408 Engine/fgens.c:1355
msgid "unknown srctable number"
msgstr ""
-#: Engine/fgens.c:425
+#: Engine/fgens.c:421
msgid "table size too large"
msgstr ""
-#: Engine/fgens.c:510 Engine/fgens.c:543
+#: Engine/fgens.c:506 Engine/fgens.c:539
msgid "gen call has negative segment size:"
msgstr ""
-#: Engine/fgens.c:512
+#: Engine/fgens.c:508
msgid "illegal input vals for gen call, beginning:"
msgstr ""
-#: Engine/fgens.c:578
+#: Engine/fgens.c:574
msgid "negative segsiz"
msgstr ""
-#: Engine/fgens.c:787
+#: Engine/fgens.c:783
msgid "nh partials < 1"
msgstr ""
-#: Engine/fgens.c:886
+#: Engine/fgens.c:882
msgid "illegal xint value"
msgstr ""
-#: Engine/fgens.c:889
+#: Engine/fgens.c:885
msgid "illegal xamp value"
msgstr ""
-#: Engine/fgens.c:961
+#: Engine/fgens.c:957
msgid "uneven number of args"
msgstr ""
-#: Engine/fgens.c:1081
+#: Engine/fgens.c:1077
msgid "gen call has illegal x-ordinate values:"
msgstr ""
-#: Engine/fgens.c:1099
+#: Engine/fgens.c:1095
msgid "wrong number of args"
msgstr ""
-#: Engine/fgens.c:1113
+#: Engine/fgens.c:1109
msgid "a range given exceeds table length"
msgstr ""
-#: Engine/fgens.c:1120
+#: Engine/fgens.c:1116
msgid "an input function does not exist"
msgstr "an input function doesn't exist"
-#: Engine/fgens.c:1253
+#: Engine/fgens.c:1249
msgid "No such window!"
msgstr ""
-#: Engine/fgens.c:1271
+#: Engine/fgens.c:1267
msgid "Wrong number of input arguments"
msgstr ""
-#: Engine/fgens.c:1272
+#: Engine/fgens.c:1268
msgid "unknown distribution"
msgstr ""
-#: Engine/fgens.c:1321
+#: Engine/fgens.c:1317
msgid "error opening ASCII file"
msgstr ""
-#: Engine/fgens.c:1327
+#: Engine/fgens.c:1323
#, c-format
msgid "%ld elements in %s\n"
msgstr ""
-#: Engine/fgens.c:1338
+#: Engine/fgens.c:1334
msgid "Numbers after table full in GEN23"
msgstr ""
-#: Engine/fgens.c:1367
+#: Engine/fgens.c:1363
msgid "table size must be the same of source table"
msgstr ""
-#: Engine/fgens.c:1439 Engine/fgens.c:1499
+#: Engine/fgens.c:1435 Engine/fgens.c:1495
msgid "x coordinates must all be in increasing order:"
msgstr ""
-#: Engine/fgens.c:1442 Engine/fgens.c:1501
+#: Engine/fgens.c:1438 Engine/fgens.c:1497
msgid "x coordinate greater than function size:"
msgstr ""
-#: Engine/fgens.c:1446
+#: Engine/fgens.c:1442
msgid "illegal input val (y <= 0) for gen call, beginning:"
msgstr ""
-#: Engine/fgens.c:1519
+#: Engine/fgens.c:1515
msgid "GEN28 requires zero table length"
msgstr ""
-#: Engine/fgens.c:1581
+#: Engine/fgens.c:1577
msgid "could not open space file"
msgstr "couldn't open space file"
-#: Engine/fgens.c:1583
+#: Engine/fgens.c:1579
msgid "Time values must be in increasing order"
msgstr ""
-#: Engine/fgens.c:1604
+#: Engine/fgens.c:1600
msgid "GEN30: source ftable not found"
msgstr ""
-#: Engine/fgens.c:1687
+#: Engine/fgens.c:1683
msgid "GEN31: source ftable not found"
msgstr ""
-#: Engine/fgens.c:1795
+#: Engine/fgens.c:1791
#, c-format
msgid "GEN32: source ftable %d not found"
msgstr ""
-#: Engine/fgens.c:1889
+#: Engine/fgens.c:1885
msgid "GEN33: source ftable not found"
msgstr ""
-#: Engine/fgens.c:2057
+#: Engine/fgens.c:2053
msgid "unknown source table number"
msgstr ""
-#: Engine/fgens.c:2089
+#: Engine/fgens.c:2085
msgid "Gen41: negative probability not allowed"
msgstr ""
-#: Engine/fgens.c:2155 Opcodes/fareygen.c:70
+#: Engine/fgens.c:2151 Opcodes/fareygen.c:70
#, c-format
msgid "ftable %d: "
msgstr ""
-#: Engine/fgens.c:2199
+#: Engine/fgens.c:2195
#, c-format
msgid "ftable %d:"
msgstr ""
-#: Engine/fgens.c:2214
+#: Engine/fgens.c:2210
#, c-format
msgid "replacing previous ftable %d"
msgstr ""
-#: Engine/fgens.c:2250 Engine/fgens.c:2337 Engine/fgens.c:2361
-#: Opcodes/gab/gab.c:578 Opcodes/gab/gab.c:632 Opcodes/midiops2.c:218
+#: Engine/fgens.c:2246 Engine/fgens.c:2334 Engine/fgens.c:2358
+#: Opcodes/gab/gab.c:580 Opcodes/gab/gab.c:634 Opcodes/midiops2.c:218
#: Opcodes/midiops2.c:370 Opcodes/midiops2.c:452 Opcodes/uggab.c:1317
#: Opcodes/uggab.c:1344 Opcodes/uggab.c:1364 Opcodes/uggab.c:1407
#, c-format
msgid "Invalid ftable no. %f"
msgstr ""
-#: Engine/fgens.c:2255
+#: Engine/fgens.c:2251
#, c-format
msgid "deferred-size ftable %f illegal here"
msgstr ""
-#: Engine/fgens.c:2281
+#: Engine/fgens.c:2278 Engine/fgens.c:2848
#, c-format
msgid "Deferred load of '%s' failed"
msgstr ""
-#: Engine/fgens.c:2343
+#: Engine/fgens.c:2340
#, c-format
msgid "Deferred-size ftable %f load not available at perf time."
msgstr ""
-#: Engine/fgens.c:2402
+#: Engine/fgens.c:2399
#, c-format
msgid "non-deferred ftable %d needs size %d\n"
msgstr ""
-#: Engine/fgens.c:2449 Opcodes/loscilx.c:62
+#: Engine/fgens.c:2446 Opcodes/loscilx.c:64
#, c-format
msgid "invalid sample format: %d"
msgstr ""
-#: Engine/fgens.c:2457 Engine/fgens.c:2718
+#: Engine/fgens.c:2454 Engine/fgens.c:2714
#, c-format
msgid "channel %d illegal"
msgstr ""
-#: Engine/fgens.c:2463
+#: Engine/fgens.c:2460
msgid "deferred alloc\n"
msgstr ""
-#: Engine/fgens.c:2471
+#: Engine/fgens.c:2468
msgid "deferred size, but filesize unknown"
msgstr ""
-#: Engine/fgens.c:2474
+#: Engine/fgens.c:2471
#, c-format
msgid " defer length %d\n"
msgstr ""
-#: Engine/fgens.c:2543
+#: Engine/fgens.c:2540
msgid "GEN1: input file truncated by ftable size"
msgstr ""
-#: Engine/fgens.c:2547
+#: Engine/fgens.c:2544
#, c-format
msgid "\tlooping endpoint %d exceeds ftsize %d\n"
msgstr ""
-#: Engine/fgens.c:2569
+#: Engine/fgens.c:2566
msgid "GEN1 read error"
msgstr ""
-#: Engine/fgens.c:2574
+#: Engine/fgens.c:2571
msgid "GEN1: aiff file truncated by ftable size"
msgstr ""
-#: Engine/fgens.c:2575
+#: Engine/fgens.c:2572
#, c-format
msgid "\taudio samps %d exceeds ftsize %d"
msgstr ""
-#: Engine/fgens.c:2619
+#: Engine/fgens.c:2616
msgid "wrong number of ftable arguments"
msgstr ""
-#: Engine/fgens.c:2629 OOps/pstream.c:326
+#: Engine/fgens.c:2626 OOps/pstream.c:326
msgid "Failed to load PVOC-EX file"
msgstr ""
-#: Engine/fgens.c:2640 InOut/midirecv.c:416 OOps/midiops.c:377
+#: Engine/fgens.c:2637 InOut/midirecv.c:416 OOps/midiops.c:377
#: OOps/midiops.c:419 OOps/midiops.c:431
msgid "illegal channel number"
msgstr ""
-#: Engine/fgens.c:2658
+#: Engine/fgens.c:2655
msgid "ftable size too small"
msgstr ""
-#: Engine/fgens.c:2734 Opcodes/mp3in.c:79 Opcodes/mp3in.c:218
+#: Engine/fgens.c:2730 Opcodes/mp3in.c:80 Opcodes/mp3in.c:219
msgid "Not enough memory\n"
msgstr ""
-#: Engine/fgens.c:2831
+#: Engine/fgens.c:2873
msgid "gen51: invalid number of p-fields (too few grades)"
msgstr ""
-#: Engine/fgens.c:2871
+#: Engine/fgens.c:2913
msgid "number of channels inconsistent with number of args"
msgstr ""
-#: Engine/fgens.c:3030
+#: Engine/fgens.c:3072
msgid "GEN53: invalid number of gen arguments"
msgstr ""
-#: Engine/fgens.c:3040
+#: Engine/fgens.c:3082
msgid "GEN53: invalid table length"
msgstr ""
-#: Engine/fgens.c:3044
+#: Engine/fgens.c:3086
msgid "GEN53: invalid source table number"
msgstr ""
-#: Engine/fgens.c:3047
+#: Engine/fgens.c:3089
msgid "GEN53: mode must be in the range 0 to 15"
msgstr ""
-#: Engine/fgens.c:3051
+#: Engine/fgens.c:3093
msgid "GEN53: invalid source table length"
msgstr ""
-#: Engine/fgens.c:3056
+#: Engine/fgens.c:3098
msgid "GEN53: invalid window table"
msgstr ""
@@ -887,31 +848,31 @@ msgstr ""
msgid "Instrument %d muted\n"
msgstr ""
-#: Engine/insert.c:103 Engine/insert.c:1249
+#: Engine/insert.c:103 Engine/insert.c:1301
#, c-format
msgid "instr %s expects midi event data, cannot run from score\n"
msgstr "instr %s expects midi event data, can't run from score\n"
-#: Engine/insert.c:106 Engine/insert.c:1252
+#: Engine/insert.c:106 Engine/insert.c:1304
#, c-format
msgid "instr %d expects midi event data, cannot run from score\n"
msgstr "instr %d expects midi event data, can't run from score\n"
-#: Engine/insert.c:115 Engine/insert.c:279 Engine/insert.c:1234
+#: Engine/insert.c:115 Engine/insert.c:279 Engine/insert.c:1286
#, c-format
msgid "cannot allocate last note because it exceeds 100%% of cpu time"
msgstr "can't allocate last note because it exceeds 100%% of cpu time"
-#: Engine/insert.c:121 Engine/insert.c:285 Engine/insert.c:1239
+#: Engine/insert.c:121 Engine/insert.c:285 Engine/insert.c:1291
msgid "cannot allocate last note because it exceeds instr maxalloc"
msgstr "can't allocate last note because it exceeds instr maxalloc"
-#: Engine/insert.c:137 Engine/insert.c:305 Engine/insert.c:1270
+#: Engine/insert.c:137 Engine/insert.c:305 Engine/insert.c:1322
#, c-format
msgid "new alloc for instr %s:\n"
msgstr ""
-#: Engine/insert.c:139 Engine/insert.c:307 Engine/insert.c:1272
+#: Engine/insert.c:139 Engine/insert.c:307 Engine/insert.c:1324
#, c-format
msgid "new alloc for instr %d:\n"
msgstr ""
@@ -926,12 +887,12 @@ msgstr ""
msgid "instr %d uses %d p-fields but is given %d"
msgstr ""
-#: Engine/insert.c:251 Engine/insert.c:463
+#: Engine/insert.c:251 Engine/insert.c:482
#, c-format
msgid "instr %s now active:\n"
msgstr ""
-#: Engine/insert.c:253 Engine/insert.c:465
+#: Engine/insert.c:253 Engine/insert.c:484
#, c-format
msgid "instr %d now active:\n"
msgstr ""
@@ -951,153 +912,153 @@ msgstr ""
msgid "MIDI note overlaps with key %d on same channel"
msgstr ""
-#: Engine/insert.c:566
+#: Engine/insert.c:585
#, c-format
msgid "removed instance of instr %s\n"
msgstr ""
-#: Engine/insert.c:568
+#: Engine/insert.c:587
#, c-format
msgid "removed instance of instr %d\n"
msgstr ""
-#: Engine/insert.c:691
+#: Engine/insert.c:710
msgid "inactive allocs returned to freespace\n"
msgstr ""
-#: Engine/insert.c:716
+#: Engine/insert.c:735
#, c-format
msgid "could not find playing instr %f\n"
msgstr "couldn't find playing instr %f\n"
-#: Engine/insert.c:729
+#: Engine/insert.c:748
msgid ""
"\n"
"INIT ERROR: "
msgstr ""
-#: Engine/insert.c:742
+#: Engine/insert.c:761
#, c-format
msgid "INIT ERROR in instr %d (opcode %s): "
msgstr ""
-#: Engine/insert.c:745
+#: Engine/insert.c:764
#, c-format
msgid "INIT ERROR in instr %d (subinstr %d): "
msgstr ""
-#: Engine/insert.c:749
+#: Engine/insert.c:768
#, c-format
msgid "INIT ERROR in instr %d: "
msgstr ""
-#: Engine/insert.c:767
+#: Engine/insert.c:786
msgid ""
"\n"
"PERF ERROR: "
msgstr ""
-#: Engine/insert.c:780
+#: Engine/insert.c:799
#, c-format
msgid "PERF ERROR in instr %d (opcode %s): "
msgstr ""
-#: Engine/insert.c:783
+#: Engine/insert.c:802
#, c-format
msgid "PERF ERROR in instr %d (subinstr %d): "
msgstr ""
-#: Engine/insert.c:787
+#: Engine/insert.c:806
#, c-format
msgid "PERF ERROR in instr %d: "
msgstr ""
-#: Engine/insert.c:792
+#: Engine/insert.c:811
msgid " note aborted\n"
msgstr ""
-#: Engine/insert.c:820
+#: Engine/insert.c:839
msgid "subinstr: number of output args greater than nchnls"
msgstr ""
-#: Engine/insert.c:861
+#: Engine/insert.c:880
msgid "subinstr: too many p-fields"
msgstr ""
-#: Engine/insert.c:920
+#: Engine/insert.c:939
#, c-format
msgid "%s: invalid local ksmps value: %d"
msgstr ""
-#: Engine/insert.c:1040 OOps/bus.c:835 Opcodes/stackops.c:293
+#: Engine/insert.c:1062 OOps/bus.c:835 Opcodes/stackops.c:286
#, c-format
msgid "%s: not initialised"
msgstr "%s: not initialized"
-#: Engine/insert.c:1169
+#: Engine/insert.c:1221
#, c-format
msgid "setksmps: invalid ksmps value: %d"
msgstr ""
-#: Engine/insert.c:1225
+#: Engine/insert.c:1277
#, c-format
msgid "schedule event ignored. instr %d undefined\n"
msgstr ""
-#: Engine/insert.c:1303
+#: Engine/insert.c:1355
#, c-format
msgid "instr %s pmax = %d, note pcnt = %d"
msgstr ""
-#: Engine/insert.c:1306
+#: Engine/insert.c:1358
#, c-format
msgid "instr %d pmax = %d, note pcnt = %d"
msgstr ""
-#: Engine/insert.c:1314
+#: Engine/insert.c:1366
#, c-format
msgid "psave beg at %p\n"
msgstr ""
-#: Engine/insert.c:1322
+#: Engine/insert.c:1374
#, c-format
msgid " ending at %p\n"
msgstr ""
-#: Engine/insert.c:1466
+#: Engine/insert.c:1518
msgid "subinstr: not initialised"
msgstr "subinstr: not initialized"
-#: Engine/insert.c:1723
+#: Engine/insert.c:1855
#, c-format
msgid ""
"instr %d allocated at %p\n"
"\tlclbas %p, opds %p\n"
msgstr ""
-#: Engine/insert.c:1740
+#: Engine/insert.c:1872
#, c-format
msgid "op %d (%s) allocated at %p\n"
msgstr ""
-#: Engine/insert.c:1766
+#: Engine/insert.c:1898
msgid "null iopadr"
msgstr ""
-#: Engine/insert.c:1777
+#: Engine/insert.c:1909
msgid "null opadr"
msgstr ""
-#: Engine/insert.c:1834
+#: Engine/insert.c:1966
msgid "inconsistent opds total"
msgstr ""
-#: Engine/insert.c:1879
+#: Engine/insert.c:2011
#, c-format
msgid "Instrument %s is still active"
msgstr ""
-#: Engine/insert.c:1882
+#: Engine/insert.c:2014
#, c-format
msgid "Instrument %d is still active"
msgstr ""
@@ -1131,7 +1092,7 @@ msgstr ""
msgid "multiple string p-fields"
msgstr ""
-#: Engine/linevent.c:273 Engine/rdorch.c:1157
+#: Engine/linevent.c:273 Engine/rdorch.c:1184
msgid "unmatched quotes"
msgstr ""
@@ -1190,297 +1151,292 @@ msgstr ""
msgid "memory allocate failure for %lu"
msgstr ""
-#: Engine/memfiles.c:112
+#: Engine/memfiles.c:113
#, c-format
msgid "cannot load %s\n"
msgstr "can't load %s\n"
-#: Engine/memfiles.c:118
+#: Engine/memfiles.c:119
#, c-format
msgid "cannot load %s, or SADIR undefined\n"
msgstr "can't load %s, or SADIR undefined\n"
-#: Engine/memfiles.c:130
+#: Engine/memfiles.c:131
#, c-format
msgid "error processing file %s\n"
msgstr ""
-#: Engine/memfiles.c:136 Engine/memfiles.c:319
+#: Engine/memfiles.c:137 Engine/memfiles.c:320
#, c-format
msgid "file %s (%ld bytes) loaded into memory\n"
msgstr ""
-#: Engine/memfiles.c:199
+#: Engine/memfiles.c:200
msgid ""
"PVOCEX_LoadFile(): error:\n"
" "
msgstr ""
-#: Engine/memfiles.c:216
+#: Engine/memfiles.c:217
msgid "Empty or NULL file name"
msgstr ""
-#: Engine/memfiles.c:234
+#: Engine/memfiles.c:235
#, c-format
msgid "unable to open pvocex file %s: %s"
msgstr ""
-#: Engine/memfiles.c:240
+#: Engine/memfiles.c:241
#, c-format
msgid "pvoc-ex file %s is not 32bit floats"
msgstr ""
-#: Engine/memfiles.c:246
+#: Engine/memfiles.c:247
#, c-format
msgid "pvoc-ex file %s not in AMP_FREQ format"
msgstr ""
-#: Engine/memfiles.c:252
+#: Engine/memfiles.c:253
#, c-format
msgid "pvoc-ex file %s is empty!"
msgstr ""
-#: Engine/memfiles.c:282
+#: Engine/memfiles.c:283
#, c-format
msgid "error reading pvoc-ex file %s"
msgstr ""
-#: Engine/memfiles.c:286
+#: Engine/memfiles.c:287
#, c-format
msgid "error reading pvoc-ex file %s after %d frames"
msgstr ""
-#: Engine/memfiles.c:291 Opcodes/pvinterp.c:71 Opcodes/pvinterp.c:174
-#: Opcodes/pvinterp.c:346 Opcodes/ugens9.c:97 Opcodes/vpvoc.c:201
+#: Engine/memfiles.c:292 Opcodes/pvinterp.c:71 Opcodes/pvinterp.c:173
+#: Opcodes/pvinterp.c:344 Opcodes/ugens9.c:97 Opcodes/vpvoc.c:202
#, c-format
msgid "%s's srate = %8.0f, orch's srate = %8.0f"
msgstr ""
-#: Engine/memfiles.c:389
+#: Engine/memfiles.c:390
#, c-format
msgid "csoundLoadSoundFile(): failed to open '%s'"
msgstr ""
-#: Engine/memfiles.c:444
+#: Engine/memfiles.c:445
#, c-format
msgid "csoundLoadSoundFile(): error reading '%s'"
msgstr ""
-#: Engine/memfiles.c:450
+#: Engine/memfiles.c:451
#, c-format
msgid ""
"File '%s' (sr = %d Hz, %d channel(s), %lu sample frames) loaded into memory\n"
msgstr ""
-#: Engine/musmon.c:79
+#: Engine/musmon.c:81
#, c-format
msgid "Elapsed time at %s: real: %.3fs, CPU: %.3fs\n"
msgstr ""
-#: Engine/musmon.c:106
+#: Engine/musmon.c:108
msgid "illegal istartempo value"
msgstr ""
-#: Engine/musmon.c:109
+#: Engine/musmon.c:111
msgid "Beat mode not in force"
msgstr ""
-#: Engine/musmon.c:182 Top/main.c:122
+#: Engine/musmon.c:184 Top/main.c:121
#, c-format
msgid "Csound version %s beta (double samples) %s\n"
msgstr ""
-#: Engine/musmon.c:185 Top/main.c:125
+#: Engine/musmon.c:187 Top/main.c:124
#, c-format
msgid "Csound version %s (double samples) %s\n"
msgstr ""
-#: Engine/musmon.c:190 Top/main.c:114
+#: Engine/musmon.c:192 Top/main.c:113
#, c-format
msgid "Csound version %s beta (float samples) %s\n"
msgstr ""
-#: Engine/musmon.c:193 Top/main.c:117
+#: Engine/musmon.c:195 Top/main.c:116
#, c-format
msgid "Csound version %s (float samples) %s\n"
msgstr ""
-#: Engine/musmon.c:218
+#: Engine/musmon.c:220
msgid "orch now loaded\n"
msgstr ""
-#: Engine/musmon.c:243
+#: Engine/musmon.c:245
msgid "k-period aligned audio buffering\n"
msgstr ""
-#: Engine/musmon.c:259
+#: Engine/musmon.c:261
#, c-format
msgid "audio buffered in %d sample-frame blocks\n"
msgstr ""
-#: Engine/musmon.c:276 Top/main.c:395
-#, c-format
-msgid "cannot reopen %s"
-msgstr "can't reopen %s"
-
-#: Engine/musmon.c:287
+#: Engine/musmon.c:283
msgid "using Cscore processing\n"
msgstr ""
-#: Engine/musmon.c:290
+#: Engine/musmon.c:286
msgid "cannot create cscore.out"
msgstr "can't create cscore.out"
-#: Engine/musmon.c:303
+#: Engine/musmon.c:299
msgid "cannot reopen cscore.out"
msgstr "can't reopen cscore.out"
-#: Engine/musmon.c:307 Engine/musmon.c:315
+#: Engine/musmon.c:303
msgid "cannot reopen cscore.srt"
msgstr "can't reopen cscore.srt"
-#: Engine/musmon.c:309
+#: Engine/musmon.c:305
msgid "sorting cscore.out ..\n"
msgstr ""
-#: Engine/musmon.c:313 Top/main.c:409
+#: Engine/musmon.c:311 Top/main.c:401
msgid "\t... done\n"
msgstr ""
-#: Engine/musmon.c:317
+#: Engine/musmon.c:312
msgid "playing from cscore.srt\n"
msgstr ""
-#: Engine/musmon.c:321 Engine/musmon.c:453 Engine/musmon.c:1021
-#: Engine/musmon.c:1225
+#: Engine/musmon.c:316 Engine/musmon.c:446 Engine/musmon.c:1015
+#: Engine/musmon.c:1216
#, c-format
msgid "SECTION %d:\n"
msgstr ""
-#: Engine/musmon.c:397
+#: Engine/musmon.c:390
msgid "end of score.\t\t overall amps:"
msgstr ""
-#: Engine/musmon.c:408
+#: Engine/musmon.c:401
msgid ""
"\n"
"\t overall samples out of range:"
msgstr ""
-#: Engine/musmon.c:412
+#: Engine/musmon.c:405
#, c-format
msgid ""
"\n"
"%d errors in performance\n"
msgstr ""
-#: Engine/musmon.c:414
+#: Engine/musmon.c:407
msgid "end of performance"
msgstr ""
-#: Engine/musmon.c:428
+#: Engine/musmon.c:421
msgid "no sound written to disk\n"
msgstr ""
-#: Engine/musmon.c:443
+#: Engine/musmon.c:436
#, c-format
msgid "%c\tbeep!\n"
msgstr ""
-#: Engine/musmon.c:509 Engine/musmon.c:555
+#: Engine/musmon.c:502 Engine/musmon.c:548
msgid "\t number of samples out of range:"
msgstr ""
-#: Engine/musmon.c:548
+#: Engine/musmon.c:541
#, c-format
msgid "end of section %d\t sect peak amps:"
msgstr ""
-#: Engine/musmon.c:550
+#: Engine/musmon.c:543
msgid "end of lplay event list\t peak amps:"
msgstr ""
-#: Engine/musmon.c:614 Engine/musmon.c:639
+#: Engine/musmon.c:607 Engine/musmon.c:632
#, c-format
msgid " - note deleted. instr %s undefined"
msgstr ""
-#: Engine/musmon.c:618
+#: Engine/musmon.c:611
#, c-format
msgid "Setting instrument %s %s\n"
msgstr ""
-#: Engine/musmon.c:619 Engine/musmon.c:632
+#: Engine/musmon.c:612 Engine/musmon.c:625
#: Opcodes/fluidOpcodes/fluidOpcodes.c:207
#: Opcodes/fluidOpcodes/fluidOpcodes.c:208
msgid "off"
msgstr ""
-#: Engine/musmon.c:619 Engine/musmon.c:632
+#: Engine/musmon.c:612 Engine/musmon.c:625
#: Opcodes/fluidOpcodes/fluidOpcodes.c:207
#: Opcodes/fluidOpcodes/fluidOpcodes.c:208
msgid "on"
msgstr ""
-#: Engine/musmon.c:627 Engine/musmon.c:666
+#: Engine/musmon.c:620 Engine/musmon.c:659
#, c-format
msgid " - note deleted. instr %d(%d) undefined"
msgstr ""
-#: Engine/musmon.c:631
+#: Engine/musmon.c:624
#, c-format
msgid "Setting instrument %d %s\n"
msgstr ""
-#: Engine/musmon.c:657
+#: Engine/musmon.c:650
#, c-format
msgid " - note deleted. i%d (%s) had %d init errors"
msgstr ""
-#: Engine/musmon.c:687
+#: Engine/musmon.c:680
#, c-format
msgid " - note deleted. i%d had %d init errors"
msgstr ""
-#: Engine/musmon.c:708
+#: Engine/musmon.c:701
#, c-format
msgid "time advanced %5.3f beats by score request\n"
msgstr ""
-#: Engine/musmon.c:725
+#: Engine/musmon.c:719
#, c-format
msgid "\t\t T%7.3f - note deleted. "
msgstr ""
-#: Engine/musmon.c:729
+#: Engine/musmon.c:723
#, c-format
msgid "instr %s had %d init errors\n"
msgstr ""
-#: Engine/musmon.c:731
+#: Engine/musmon.c:725
#, c-format
msgid "instr %d had %d init errors\n"
msgstr ""
-#: Engine/musmon.c:822
+#: Engine/musmon.c:816
msgid "terminating.\n"
msgstr ""
-#: Engine/musmon.c:908
+#: Engine/musmon.c:902
#, c-format
msgid "error in score. illegal opcode %c (ASCII %d)\n"
msgstr ""
-#: Engine/musmon.c:1135
+#: Engine/musmon.c:1129
msgid "insert_score_event(): invalid instrument number or name\n"
msgstr ""
-#: Engine/musmon.c:1155
+#: Engine/musmon.c:1149
#, c-format
msgid "insert_score_event(): unknown opcode: %c\n"
msgstr ""
-#: Engine/musmon.c:1178
+#: Engine/musmon.c:1172
msgid "insert_score_event(): insufficient p-fields\n"
msgstr ""
@@ -1503,350 +1459,402 @@ msgstr "Can't Find Instrument %d"
msgid "cannot find the specified instrument or opcode"
msgstr "can't find the specified instrument or opcode"
-#: Engine/new_orc_parser.c:74 Engine/rdorch.c:488
+#: Engine/new_orc_parser.c:91
+msgid "Unmatched #ifdef\n"
+msgstr ""
+
+#: Engine/otran.c:149 Engine/symbtab.c:413
#, c-format
-msgid "cannot open orch file %s"
-msgstr "can't open orch file %s"
+msgid "invalid input type for opcode %s"
+msgstr ""
-#: Engine/otran.c:312 Engine/otran.c:319
+#: Engine/otran.c:154 Engine/symbtab.c:418
+#, c-format
+msgid "too many input args for opcode %s"
+msgstr ""
+
+#: Engine/otran.c:169 Engine/symbtab.c:433
+#, c-format
+msgid "too many output args for opcode %s"
+msgstr ""
+
+#: Engine/otran.c:194 Engine/symbtab.c:458
+#, c-format
+msgid "invalid output type for opcode %s"
+msgstr ""
+
+#: Engine/otran.c:325 Engine/otran.c:332
msgid "missing instrument number or name"
msgstr ""
-#: Engine/otran.c:324
+#: Engine/otran.c:337
msgid "illegal instr number"
msgstr ""
-#: Engine/otran.c:374
+#: Engine/otran.c:388
msgid "No opcode name"
msgstr ""
-#: Engine/otran.c:379 Engine/symbtab.c:501
+#: Engine/otran.c:393 Engine/symbtab.c:538
msgid "invalid name for opcode"
msgstr ""
-#: Engine/otran.c:383
+#: Engine/otran.c:397
#, c-format
msgid ""
"opcode declaration error (usage: opcode name, outtypes, intypes) -- opcode %s"
msgstr ""
-#: Engine/otran.c:394 Engine/symbtab.c:511
+#: Engine/otran.c:408 Engine/symbtab.c:548
#, c-format
msgid "cannot redefine %s"
msgstr "can't redefine %s"
-#: Engine/otran.c:398 Engine/symbtab.c:516
+#: Engine/otran.c:412 Engine/symbtab.c:553
#, c-format
msgid "WARNING: redefined opcode: %s\n"
msgstr ""
-#: Engine/otran.c:489
+#: Engine/otran.c:503
msgid "string constant used as output"
msgstr ""
-#: Engine/otran.c:520
+#: Engine/otran.c:534
msgid "Missing endin"
msgstr ""
-#: Engine/otran.c:584
+#: Engine/otran.c:599
msgid "perf-pass statements illegal in header blk"
msgstr ""
-#: Engine/otran.c:588
+#: Engine/otran.c:603
#, c-format
msgid "%d syntax errors in orchestra. compilation invalid"
msgstr ""
-#: Engine/otran.c:1238
+#: Engine/otran.c:1257
msgid "bad value for 0dbfs: must be positive."
msgstr ""
-#: Engine/otran.c:1248
+#: Engine/otran.c:1267
#, c-format
msgid "sample rate overrides: esr = %7.4f, ekr = %7.4f, ksmps = %d\n"
msgstr ""
-#: Engine/otran.c:1320
+#: Engine/otran.c:1339
msgid "internal error: string constant outarg"
msgstr ""
-#: Engine/otran.c:1346
+#: Engine/otran.c:1365
#, c-format
msgid "i%d pset args != pmax"
msgstr ""
-#: Engine/otran.c:1409
+#: Engine/otran.c:1428
#, c-format
msgid ""
"sr = %.7g, kr = %.7g, ksmps = %.7g\n"
"error:"
msgstr ""
-#: Engine/otran.c:1442
+#: Engine/otran.c:1461
msgid "header init errors"
msgstr ""
-#: Engine/rdorch.c:166
+#: Engine/rdorch.c:169
msgid "ungetorchar(): buffer overflow"
msgstr ""
-#: Engine/rdorch.c:330
+#: Engine/rdorch.c:348
msgid "Unexpected end of orchestra file"
msgstr ""
-#: Engine/rdorch.c:484
+#: Engine/rdorch.c:431 Engine/sread.c:758
+#, c-format
+msgid "Macro definition for %*s\n"
+msgstr ""
+
+#: Engine/rdorch.c:434
+msgid "Invalid macro name for --omacro"
+msgstr ""
+
+#: Engine/rdorch.c:502
msgid "orch compiler:\n"
msgstr ""
-#: Engine/rdorch.c:490
+#: Engine/rdorch.c:520
#, c-format
-msgid "cannot find end of file %s"
-msgstr "can't find end of file %s"
+msgid "cannot open orch file %s"
+msgstr "can't open orch file %s"
-#: Engine/rdorch.c:492
+#: Engine/rdorch.c:684 Engine/sread.c:1584
#, c-format
-msgid "ftell error on %s"
+msgid "Macro definition for %s\n"
msgstr ""
-#: Engine/rdorch.c:657 Engine/sread.c:1572
-#, c-format
-msgid "Macro definition for %s\n"
+#: Engine/rdorch.c:716 Engine/sread.c:1607
+msgid "macro error\n"
msgstr ""
-#: Engine/rdorch.c:748
+#: Engine/rdorch.c:775
#, c-format
msgid "Cannot open #include'd file %s\n"
msgstr "Can't open #include'd file %s\n"
-#: Engine/rdorch.c:797
+#: Engine/rdorch.c:824
msgid "unmatched #ifdef"
msgstr ""
-#: Engine/rdorch.c:808
+#: Engine/rdorch.c:835
msgid "Unmatched #else"
msgstr ""
-#: Engine/rdorch.c:822
+#: Engine/rdorch.c:849
msgid "Unmatched #endif"
msgstr ""
-#: Engine/rdorch.c:875
+#: Engine/rdorch.c:872 Engine/sread.c:1694
+#, c-format
+msgid "macro %s undefined\n"
+msgstr ""
+
+#: Engine/rdorch.c:886 Engine/sread.c:286
+msgid "Undefining undefined macro"
+msgstr ""
+
+#: Engine/rdorch.c:902
msgid "Unexpected # character"
msgstr ""
-#: Engine/rdorch.c:877
+#: Engine/rdorch.c:904
#, c-format
msgid "Unknown # option: '%s'"
msgstr ""
-#: Engine/rdorch.c:903 Engine/sread.c:394
+#: Engine/rdorch.c:928 Engine/sread.c:380
+#, c-format
+msgid "Undefined macro: '%s'"
+msgstr ""
+
+#: Engine/rdorch.c:930 Engine/sread.c:378
msgid "Macro expansion symbol ($) without macro name"
msgstr ""
-#: Engine/rdorch.c:908 Engine/sread.c:400
+#: Engine/rdorch.c:935 Engine/sread.c:384
#, c-format
msgid "$%s matches macro name $%s"
msgstr ""
-#: Engine/rdorch.c:925 Engine/sread.c:417
+#: Engine/rdorch.c:952 Engine/sread.c:401
msgid "Syntax error in macro call"
msgstr ""
-#: Engine/rdorch.c:975
+#: Engine/rdorch.c:967
+#, c-format
+msgid ""
+"Missing argument terminator\n"
+"%.98s"
+msgstr ""
+
+#: Engine/rdorch.c:1002
msgid "Unmatched #ifdef"
msgstr ""
-#: Engine/rdorch.c:977
+#: Engine/rdorch.c:1004
msgid "file too large for ortext space"
msgstr ""
-#: Engine/rdorch.c:984
+#: Engine/rdorch.c:1011
#, c-format
msgid "%d (%d) lines read\n"
msgstr ""
-#: Engine/rdorch.c:1052
+#: Engine/rdorch.c:1079
#, c-format
msgid "LINE %d:"
msgstr ""
-#: Engine/rdorch.c:1071
+#: Engine/rdorch.c:1098
msgid "invalid 'elseif' statement. must have a corresponding 'if'"
msgstr ""
-#: Engine/rdorch.c:1078
+#: Engine/rdorch.c:1105
msgid "'elseif' statement cannot occur after an 'else'"
msgstr "'elseif' statement can't occur after an 'else'"
-#: Engine/rdorch.c:1134
+#: Engine/rdorch.c:1161
msgid "Unmatched comment"
msgstr ""
-#: Engine/rdorch.c:1198
+#: Engine/rdorch.c:1225
msgid "misplaced comma"
msgstr ""
-#: Engine/rdorch.c:1200 Engine/rdorch.c:1342 Engine/rdorch.c:1440
+#: Engine/rdorch.c:1227 Engine/rdorch.c:1369 Engine/rdorch.c:1467
msgid "unbalanced parens"
msgstr ""
-#: Engine/rdorch.c:1364
+#: Engine/rdorch.c:1391
#, c-format
msgid "illegal character %c"
msgstr ""
-#: Engine/rdorch.c:1377
+#: Engine/rdorch.c:1404
msgid "invalid 'else' statement. must have a corresponding 'if'"
msgstr ""
-#: Engine/rdorch.c:1384
+#: Engine/rdorch.c:1411
msgid "duplicate 'else' statement"
msgstr ""
-#: Engine/rdorch.c:1413
+#: Engine/rdorch.c:1440
msgid "invalid 'endif' statement. must have a corresponding 'if'"
msgstr ""
-#: Engine/rdorch.c:1442
+#: Engine/rdorch.c:1469
msgid "no legal opcode"
msgstr ""
-#: Engine/rdorch.c:1573
+#: Engine/rdorch.c:1600
msgid "illegal opcod from expr anal"
msgstr ""
-#: Engine/rdorch.c:1606 Engine/rdorch.c:1628
+#: Engine/rdorch.c:1633 Engine/rdorch.c:1655
#, c-format
msgid "failed to find %s, output arg '%s' illegal type"
msgstr ""
-#: Engine/rdorch.c:1670
+#: Engine/rdorch.c:1697
#, c-format
msgid "failed to find %s, input arg illegal type"
msgstr ""
-#: Engine/rdorch.c:1684
+#: Engine/rdorch.c:1711
msgid "setksmps is allowed only in user defined opcodes"
msgstr ""
-#: Engine/rdorch.c:1687
+#: Engine/rdorch.c:1714
msgid "multiple uses of setksmps in the same opcode definition"
msgstr ""
-#: Engine/rdorch.c:1710
+#: Engine/rdorch.c:1739
#, c-format
msgid "%s inconsistent with global nchnls (%d); replaced with %s\n"
msgstr ""
-#: Engine/rdorch.c:1740
+#: Engine/rdorch.c:1770
msgid "opcode blks cannot be nested (missing 'endop'?)"
msgstr "opcode blks can't be nested (missing 'endop'?)"
-#: Engine/rdorch.c:1742
+#: Engine/rdorch.c:1772
msgid "opcode not allowed in instr block"
msgstr ""
-#: Engine/rdorch.c:1751
+#: Engine/rdorch.c:1781
msgid "unmatched endop"
msgstr ""
-#: Engine/rdorch.c:1753
+#: Engine/rdorch.c:1783
msgid "endop not allowed in instr block"
msgstr ""
-#: Engine/rdorch.c:1758
+#: Engine/rdorch.c:1788
msgid "instr not allowed in opcode block"
msgstr ""
-#: Engine/rdorch.c:1761
+#: Engine/rdorch.c:1791
msgid "instr blocks cannot be nested (missing 'endin'?)"
msgstr "instr blocks can't be nested (missing 'endin'?)"
-#: Engine/rdorch.c:1769
+#: Engine/rdorch.c:1799
msgid "endin not allowed in opcode blk"
msgstr ""
-#: Engine/rdorch.c:1771
+#: Engine/rdorch.c:1801
msgid "unmatched endin"
msgstr ""
-#: Engine/rdorch.c:1781
+#: Engine/rdorch.c:1811
msgid "misplaced opcode"
msgstr ""
-#: Engine/rdorch.c:1787
+#: Engine/rdorch.c:1817
msgid "xout is allowed only in user defined opcodes"
msgstr ""
-#: Engine/rdorch.c:1790
+#: Engine/rdorch.c:1820
msgid "multiple uses of xout in the same opcode definition"
msgstr ""
-#: Engine/rdorch.c:1837
+#: Engine/rdorch.c:1867
msgid "too many input args"
msgstr ""
-#: Engine/rdorch.c:1909
+#: Engine/rdorch.c:1893
+msgid "insufficient required arguments"
+msgstr ""
+
+#: Engine/rdorch.c:1940
#, c-format
-msgid "input arg '%s' used before defined"
+msgid "input arg '%s' used before defined \n"
msgstr ""
-#: Engine/rdorch.c:1956
+#: Engine/rdorch.c:1987
msgid "xin is allowed only in user defined opcodes"
msgstr ""
-#: Engine/rdorch.c:1959
+#: Engine/rdorch.c:1990
msgid "multiple uses of xin in the same opcode definition"
msgstr ""
-#: Engine/rdorch.c:2004
+#: Engine/rdorch.c:2035
msgid "illegal no of output args"
msgstr ""
-#: Engine/rdorch.c:2023
+#: Engine/rdorch.c:2054
#, c-format
msgid "output name previously used, type '%c' must be uniquely defined"
msgstr ""
-#: Engine/rdorch.c:2028
+#: Engine/rdorch.c:2059
#, c-format
msgid "output arg '%s' illegal type"
msgstr ""
-#: Engine/rdorch.c:2069
+#: Engine/rdorch.c:2100
#, c-format
msgid "input arg '%s' of type %s not allowed when expecting %c"
msgstr ""
-#: Engine/rdorch.c:2155
+#: Engine/rdorch.c:2187
msgid "duplicate label"
msgstr ""
-#: Engine/rdorch.c:2177
+#: Engine/rdorch.c:2209
#, c-format
msgid "error line %d. unknown label:\n"
msgstr ""
-#: Engine/rdorch.c:2192 Engine/rdorch.c:2239
+#: Engine/rdorch.c:2222 Engine/rdorch.c:2271
msgid "error: "
msgstr ""
-#: Engine/rdorch.c:2208
+#: Engine/rdorch.c:2239
#, c-format
msgid ", line %d:\n"
msgstr ""
-#: Engine/rdorch.c:2246
+#: Engine/rdorch.c:2278
#, c-format
msgid "called from line %d of macro %s"
msgstr ""
-#: Engine/rdorch.c:2250
+#: Engine/rdorch.c:2282
#, c-format
msgid "in line %d of file input %s"
msgstr ""
-#: Engine/rdscor.c:79
+#: Engine/rdscor.c:80
#, c-format
msgid "ERROR: illegal character %c(%.2x) in scoreline: "
msgstr ""
@@ -1857,7 +1865,7 @@ msgid ""
"\tremainder of line flushed\n"
msgstr ""
-#: Engine/rdscor.c:144
+#: Engine/rdscor.c:146
msgid "ERROR: too many pfields: "
msgstr ""
@@ -1883,349 +1891,316 @@ msgstr ""
msgid " section %d: at position %d%s"
msgstr ""
-#: Engine/sread.c:217
+#: Engine/sread.c:216
msgid "Internal error in print_input_backtrace()"
msgstr ""
-#: Engine/sread.c:219
+#: Engine/sread.c:218
#, c-format
msgid " included from line %d of macro %s%s"
msgstr ""
-#: Engine/sread.c:220
+#: Engine/sread.c:219
#, c-format
msgid " called from line %d of macro %s%s"
msgstr ""
-#: Engine/sread.c:222
+#: Engine/sread.c:221
#, c-format
msgid " in line %d of macro %s%s"
msgstr ""
-#: Engine/sread.c:229
-#, c-format
-msgid " included from line %d of file input %s%s"
-msgstr ""
-
-#: Engine/sread.c:230
-#, c-format
-msgid " called from line %d of file input %s%s"
-msgstr ""
-
-#: Engine/sread.c:232
-#, c-format
-msgid " in line %d of file input %s%s"
-msgstr ""
-
-#: Engine/sread.c:268
+#: Engine/sread.c:256
#, c-format
msgid "Internal error op=%c"
msgstr ""
-#: Engine/sread.c:322
-msgid "ungetscochar(): buffer overflow"
-msgstr ""
-
-#: Engine/sread.c:479
+#: Engine/sread.c:464
msgid "illegal placement of number in [] expression"
msgstr ""
-#: Engine/sread.c:506
+#: Engine/sread.c:491
msgid "illegal placement of operator ~ in [] expression"
msgstr ""
-#: Engine/sread.c:516
+#: Engine/sread.c:501
msgid "illegal placement of operator @ or @@ in [] expression"
msgstr ""
-#: Engine/sread.c:548 Engine/sread.c:562
+#: Engine/sread.c:533 Engine/sread.c:547
#, c-format
msgid "illegal placement of operator %c in [] expression"
msgstr ""
-#: Engine/sread.c:574
+#: Engine/sread.c:559
msgid "illegal placement of '(' in [] expression"
msgstr ""
-#: Engine/sread.c:580
+#: Engine/sread.c:565
msgid "missing operand before ')' in [] expression"
msgstr ""
-#: Engine/sread.c:594
+#: Engine/sread.c:579
msgid "missing operand before closing bracket in []"
msgstr ""
-#: Engine/sread.c:609
+#: Engine/sread.c:594
#, c-format
msgid "illegal character %c(%.2x) in [] expression"
msgstr ""
-#: Engine/sread.c:658
+#: Engine/sread.c:646
#, c-format
msgid "%s Nested LOOP terminated, level:%d\n"
msgstr ""
-#: Engine/sread.c:664
+#: Engine/sread.c:652
#, c-format
msgid "External LOOP terminated, level:%d\n"
msgstr ""
-#: Engine/sread.c:684
+#: Engine/sread.c:696
#, c-format
msgid "%s Nested LOOP section (%d) Level:%d\n"
msgstr ""
-#: Engine/sread.c:689
+#: Engine/sread.c:701
#, c-format
msgid " External LOOP section (%d) Level:%d\n"
msgstr ""
-#: Engine/sread.c:703
+#: Engine/sread.c:715
msgid "Loop terminated\n"
msgstr ""
-#: Engine/sread.c:716
+#: Engine/sread.c:733
#, c-format
msgid "Repeat section (%d)\n"
msgstr ""
-#: Engine/sread.c:719
+#: Engine/sread.c:736
msgid "Repeat section\n"
msgstr ""
-#: Engine/sread.c:744
+#: Engine/sread.c:761
msgid "Invalid macro name for --smacro"
msgstr ""
-#: Engine/sread.c:831
+#: Engine/sread.c:865
#, c-format
msgid "Clockbase = %f\n"
msgstr ""
-#: Engine/sread.c:898
+#: Engine/sread.c:934
msgid "Loops are nested too deeply"
msgstr ""
-#: Engine/sread.c:901
-msgid "Loop cannot start inside of a macro"
-msgstr "Loop can't start inside of a macro"
-
-#: Engine/sread.c:920
+#: Engine/sread.c:948
msgid "{: invalid repeat count"
msgstr ""
-#: Engine/sread.c:929
+#: Engine/sread.c:957
#, c-format
msgid "%s Nested LOOP=%d Level:%d\n"
msgstr ""
-#: Engine/sread.c:935
+#: Engine/sread.c:963
#, c-format
msgid "External LOOP=%d Level:%d\n"
msgstr ""
-#: Engine/sread.c:1004
-msgid "Repeat cannot start inside of a macro (ignored)"
-msgstr "Repeat can't start inside of a macro (ignored)"
-
-#: Engine/sread.c:1019
+#: Engine/sread.c:1047
msgid "r: invalid repeat count"
msgstr ""
-#: Engine/sread.c:1021
+#: Engine/sread.c:1049
#, c-format
msgid "Repeats=%d\n"
msgstr ""
-#: Engine/sread.c:1063
+#: Engine/sread.c:1093
#, c-format
msgid "Named section >>>%s<<<\n"
msgstr ""
-#: Engine/sread.c:1079
+#: Engine/sread.c:1108
#, c-format
msgid "%d: File %s position %ld\n"
msgstr ""
-#: Engine/sread.c:1085
-#, c-format
-msgid "Ignoring name %s not in file\n"
-msgstr ""
-
-#: Engine/sread.c:1110
+#: Engine/sread.c:1133
#, c-format
msgid "Name %s not found"
msgstr ""
-#: Engine/sread.c:1112
+#: Engine/sread.c:1135
#, c-format
msgid "Duplicate %d: %s (%s,%ld)\n"
msgstr ""
-#: Engine/sread.c:1129
-#, c-format
-msgid "cannot open input file %s"
-msgstr "can't open input file %s"
-
-#: Engine/sread.c:1149
+#: Engine/sread.c:1164
#, c-format
msgid "Warp_factor = %f\n"
msgstr ""
-#: Engine/sread.c:1174
+#: Engine/sread.c:1189
msgid "sread is confused on legal opcodes\n"
msgstr ""
-#: Engine/sread.c:1236
+#: Engine/sread.c:1251
msgid "No previous event for ^"
msgstr ""
-#: Engine/sread.c:1241
+#: Engine/sread.c:1256
#, c-format
msgid "illegal space following %s, zero substituted"
msgstr ""
-#: Engine/sread.c:1271
+#: Engine/sread.c:1286
#, c-format
msgid "ignoring '%s' in '%c' event"
msgstr ""
-#: Engine/sread.c:1274
+#: Engine/sread.c:1289
msgid "! invalid in p1, p2, or p3"
msgstr ""
-#: Engine/sread.c:1275 Engine/sread.c:1280 Engine/sread.c:1730
-#: Engine/sread.c:1753 Engine/sread.c:1767
+#: Engine/sread.c:1290 Engine/sread.c:1295 Engine/sread.c:1738
+#: Engine/sread.c:1761 Engine/sread.c:1775
msgid " remainder of line flushed\n"
msgstr ""
-#: Engine/sread.c:1279
+#: Engine/sread.c:1294
#, c-format
msgid "illegal character after !: '%c'"
msgstr ""
-#: Engine/sread.c:1358
+#: Engine/sread.c:1373
#, c-format
msgid "WARNING: instr %s not found, assuming insno = -1\n"
msgstr ""
-#: Engine/sread.c:1378
+#: Engine/sread.c:1393
msgid "sread: illegal use of carry, 0 substituted\n"
msgstr ""
-#: Engine/sread.c:1526
+#: Engine/sread.c:1539
msgid "Improper \\"
msgstr ""
-#: Engine/sread.c:1558
+#: Engine/sread.c:1570
msgid "Not #define"
msgstr ""
-#: Engine/sread.c:1620
+#: Engine/sread.c:1630
#, c-format
msgid "Macro %s with %d arguments defined\n"
msgstr ""
-#: Engine/sread.c:1631
+#: Engine/sread.c:1642
msgid "Not #include"
msgstr ""
-#: Engine/sread.c:1662
+#: Engine/sread.c:1671
#, c-format
msgid "Cannot open #include'd file %s"
msgstr "Can't open #include'd file %s"
-#: Engine/sread.c:1673
+#: Engine/sread.c:1681
msgid "Not #undef"
msgstr ""
-#: Engine/sread.c:1692
+#: Engine/sread.c:1700
msgid "unknown # option"
msgstr ""
-#: Engine/sread.c:1729
+#: Engine/sread.c:1737
#, c-format
msgid "illegal opcode %c"
msgstr ""
-#: Engine/sread.c:1752
+#: Engine/sread.c:1760
#, c-format
msgid "unexpected char %c"
msgstr ""
-#: Engine/sread.c:1766
+#: Engine/sread.c:1774
msgid "illegally placed string"
msgstr ""
-#: Engine/sread.c:1773
+#: Engine/sread.c:1781
msgid "unmatched quote"
msgstr ""
-#: Engine/sread.c:1817
+#: Engine/sread.c:1825
msgid "sread: illegal number format: "
msgstr ""
-#: Engine/sread.c:1823
+#: Engine/sread.c:1831
msgid " zero substituted.\n"
msgstr ""
-#: Engine/swrite.c:123
+#: Engine/swrite.c:123 Engine/swritestr.c:134
#, c-format
msgid "swrite: unexpected opcode, section %d line %d\n"
msgstr ""
-#: Engine/swrite.c:209 Engine/swrite.c:249
+#: Engine/swrite.c:209 Engine/swrite.c:249 Engine/swritestr.c:220
+#: Engine/swritestr.c:260
#, c-format
msgid "swrite: output, sect%d line%d p%d makes illegal reference to "
msgstr ""
-#: Engine/swrite.c:216 Engine/swrite.c:255
+#: Engine/swrite.c:216 Engine/swrite.c:255 Engine/swritestr.c:227
+#: Engine/swritestr.c:266
msgid " Zero substituted\n"
msgstr ""
-#: Engine/swrite.c:313
+#: Engine/swrite.c:313 Engine/swritestr.c:324
#, c-format
msgid "swrite: output, sect%d line%d p%d has illegal ramp symbol\n"
msgstr ""
-#: Engine/swrite.c:317
+#: Engine/swrite.c:317 Engine/swritestr.c:328
#, c-format
msgid ""
"swrite: output, sect%d line%d p%d ramp has illegal forward or backward ref\n"
msgstr ""
-#: Engine/swrite.c:380 Engine/swrite.c:445
+#: Engine/swrite.c:380 Engine/swrite.c:445 Engine/swritestr.c:391
+#: Engine/swritestr.c:456
#, c-format
msgid "swrite: output, sect%d line%d p%d has illegal expramp symbol\n"
msgstr ""
-#: Engine/swrite.c:385 Engine/swrite.c:450
+#: Engine/swrite.c:385 Engine/swrite.c:450 Engine/swritestr.c:396
+#: Engine/swritestr.c:461
#, c-format
msgid ""
"swrite: output, sect%d line%d p%d expramp has illegal forward or backward "
"ref\n"
msgstr ""
-#: Engine/swrite.c:466
+#: Engine/swrite.c:466 Engine/swritestr.c:477
#, c-format
msgid "swrite: output, sect%d line%d p%d has illegally terminated string "
msgstr ""
-#: Engine/swrite.c:514
+#: Engine/swrite.c:514 Engine/swritestr.c:529
#, c-format
msgid "swrite: output, sect%d line%d p%d has illegal number "
msgstr ""
-#: Engine/swrite.c:521
+#: Engine/swrite.c:521 Engine/swritestr.c:536
msgid " String truncated\n"
msgstr ""
-#: Engine/symbtab.c:202
+#: Engine/symbtab.c:208
#, c-format
msgid "Type confusion for %s (%d,%d), replacing\n"
msgstr ""
-#: Engine/symbtab.c:333
+#: Engine/symbtab.c:345
#, c-format
msgid "Unknown word type for %s on line %d\n"
msgstr ""
@@ -2246,6 +2221,14 @@ msgstr ""
msgid "twarp: t segments exceed twarp array\n"
msgstr ""
+#: InOut/cmidi.c:233
+msgid "CoreMIDI real time MIDI plugin for Csound\n"
+msgstr ""
+
+#: InOut/cmidi.c:247
+msgid "rtmidi: CoreMIDI module enabled\n"
+msgstr ""
+
#: InOut/libsnd.c:486
msgid "error: no input file name"
msgstr ""
@@ -2269,54 +2252,69 @@ msgstr ""
msgid "audio_in %s has %d chnls, orch %d chnls_i"
msgstr ""
-#: InOut/libsnd.c:573
+#: InOut/libsnd.c:574
+#, c-format
+msgid "reading %d sample blks of %d-bit floats from %s \n"
+msgstr ""
+
+#: InOut/libsnd.c:578
#, c-format
msgid "reading %d-byte blks of %s from %s (%s)\n"
msgstr ""
-#: InOut/libsnd.c:608
+#: InOut/libsnd.c:614
msgid "Output file type changed to IRCAM for use in pipe\n"
msgstr ""
-#: InOut/libsnd.c:628
+#: InOut/libsnd.c:634
msgid "Failed to initialise real time audio output"
msgstr "Failed to initialize real time audio output"
-#: InOut/libsnd.c:669 InOut/libsnd.c:673
+#: InOut/libsnd.c:675 InOut/libsnd.c:679
#, c-format
msgid "sfinit: cannot open %s"
msgstr "sfinit: can't open %s"
-#: InOut/libsnd.c:733 util/srconv.c:485
+#: InOut/libsnd.c:741
+#, c-format
+msgid "writing %d sample blks of %d-bit floats to %s \n"
+msgstr ""
+
+#: InOut/libsnd.c:744 util/srconv.c:484
#, c-format
msgid "writing %d-byte blks of %s to %s"
msgstr ""
-#: InOut/libsnd.c:740 InOut/libsnd.c:810
+#: InOut/libsnd.c:749 InOut/libsnd.c:824
msgid " (raw)\n"
msgstr ""
-#: InOut/libsnd.c:803
+#: InOut/libsnd.c:815
#, c-format
-msgid "%ld %d-byte soundblks of %s written to %s"
+msgid "%ld %d sample blks of %d-bit floats written to %s\n"
msgstr ""
-#: InOut/libsnd.c:822
+#: InOut/libsnd.c:820
+#, c-format
+msgid "%ld %d sample blks of %s written to %s"
+msgstr ""
+
+#: InOut/libsnd.c:837
#, c-format
msgid "soundfile write returned bytecount of %d, not %d"
msgstr ""
-#: InOut/libsnd.c:825
+#: InOut/libsnd.c:840
msgid ""
"(disk may be full...\n"
" closing the file ...)"
msgstr ""
-#: InOut/libsnd.c:828 util/dnoise.c:1192
+#: InOut/libsnd.c:843 util/dnoise.c:1177
msgid "\t... closed\n"
msgstr ""
-#: InOut/libsnd.c:834
+#: InOut/libsnd.c:849
msgid "not writing to sound disk\n"
msgstr ""
@@ -2716,20 +2714,20 @@ msgstr ""
msgid "Error closing MIDI out device: %d (%s)"
msgstr ""
-#: InOut/midisend.c:171
+#: InOut/midisend.c:170
msgid " *** no callback for opening MIDI output"
msgstr ""
-#: InOut/midisend.c:173
+#: InOut/midisend.c:172
msgid " *** no callback for writing MIDI data"
msgstr ""
-#: InOut/midisend.c:179
+#: InOut/midisend.c:178
#, c-format
msgid " *** error opening MIDI out device: %d (%s)"
msgstr ""
-#: InOut/midisend.c:190
+#: InOut/midisend.c:189
#, c-format
msgid " *** error opening MIDI out file '%s'"
msgstr ""
@@ -2983,7 +2981,7 @@ msgstr ""
msgid "Opened MIDI output device file '%s'\n"
msgstr ""
-#: InOut/rtalsa.c:1101 InOut/rtcoreaudio.c:64 InOut/rtcoreaudio.c:74
+#: InOut/rtalsa.c:1101 InOut/rtcoreaudio.c:71 InOut/rtcoreaudio.c:81
msgid "warning... could not create global var\n"
msgstr "warning... couldn't create global var\n"
@@ -3007,64 +3005,82 @@ msgstr ""
msgid "rtmidi: devfile module enabled\n"
msgstr ""
-#: InOut/rtcoreaudio.c:83
+#: InOut/rtauhal.c:163
+#, c-format
+msgid "selected input device: %s \n"
+msgstr ""
+
+#: InOut/rtauhal.c:166
+#, c-format
+msgid "selected output device: %s \n"
+msgstr ""
+
+#: InOut/rtauhal.c:524
+msgid "AuHAL module: device closed\n"
+msgstr ""
+
+#: InOut/rtauhal.c:541
+msgid "rtaudio: coreaaudio-AuHAL module enabled\n"
+msgstr ""
+
+#: InOut/rtcoreaudio.c:90
msgid ""
"CoreAudio real-time audio module for Csound\n"
"by Victor Lazzarini\n"
msgstr ""
-#: InOut/rtcoreaudio.c:105
+#: InOut/rtcoreaudio.c:112
msgid "rtaudio: CoreAudio module enabled\n"
msgstr ""
-#: InOut/rtcoreaudio.c:254
+#: InOut/rtcoreaudio.c:261
#, c-format
msgid "selected device: %u \n"
msgstr ""
-#: InOut/rtcoreaudio.c:263
+#: InOut/rtcoreaudio.c:270
#, c-format
msgid "CoreAudio module: opening %s \n"
msgstr ""
-#: InOut/rtcoreaudio.c:297
+#: InOut/rtcoreaudio.c:304
msgid " *** CoreAudio: open: could not set buffer size\n"
msgstr ""
-#: InOut/rtcoreaudio.c:342
+#: InOut/rtcoreaudio.c:349
#, c-format
msgid " *** CoreAudio: open: could not set device parameter sr: %d \n"
msgstr ""
-#: InOut/rtcoreaudio.c:344
+#: InOut/rtcoreaudio.c:351
#, c-format
msgid ""
" *** CoreAudio: current device sampling rate is:%d \n"
" try setting the above value in your csound orchestra \n"
msgstr ""
-#: InOut/rtcoreaudio.c:353
+#: InOut/rtcoreaudio.c:360
#, c-format
msgid "CoreAudio module: sr set to %d with %d audio channels \n"
msgstr ""
-#: InOut/rtcoreaudio.c:374 InOut/rtcoreaudio.c:387 InOut/rtcoreaudio.c:432
-#: InOut/rtcoreaudio.c:452
+#: InOut/rtcoreaudio.c:381 InOut/rtcoreaudio.c:394 InOut/rtcoreaudio.c:439
+#: InOut/rtcoreaudio.c:459
msgid " *** CoreAudio: open: memory allocation failure\n"
msgstr ""
-#: InOut/rtcoreaudio.c:414
+#: InOut/rtcoreaudio.c:421
#, c-format
msgid ""
"CoreAudio module: device open with %d buffers of %d frames\n"
"==========================================================\n"
msgstr ""
-#: InOut/rtcoreaudio.c:552
+#: InOut/rtcoreaudio.c:559
msgid "coreaudio module: closing device...\n"
msgstr ""
-#: InOut/rtcoreaudio.c:566
+#: InOut/rtcoreaudio.c:573
msgid "coreaudio module: device closed\n"
msgstr ""
@@ -3464,294 +3480,12 @@ msgstr "couldn't allocate global structure"
msgid "rtaudio: WinMM module enabled\n"
msgstr ""
-#: InOut/virtual_keyboard/virtual_keyboard.cpp:435
-msgid "virtual_keyboard.cpp: error allocating FLTK flags"
-msgstr ""
-
-#: InOut/virtual_keyboard/virtual_keyboard.cpp:443 InOut/winFLTK.c:125
-#: InOut/winFLTK.c:139
-#, c-format
-msgid "Error registering opcode '%s'"
-msgstr ""
-
-#: InOut/widgets.cpp:1081
-msgid ""
-"Invalid snapshot. Perhaps you modified orchestra widget code after you saved "
-"the snapshot bank."
-msgstr ""
-
-#: InOut/widgets.cpp:1226
-msgid "No name for FLbutbank"
-msgstr ""
-
-#: InOut/widgets.cpp:1466
-msgid "FLsetsnap: invalid table"
-msgstr ""
-
-#: InOut/widgets.cpp:1504
-msgid ""
-"Saving could overwrite the old file.\n"
-"Are you sure to save ?"
-msgstr ""
-
-#: InOut/widgets.cpp:1516
-msgid ""
-"Saving could overwrite the old file.\n"
-"Are you sure you want to save ?"
-msgstr ""
-
-#: InOut/widgets.cpp:1518
-msgid "No"
-msgstr ""
-
-#: InOut/widgets.cpp:1518
-msgid "Yes"
-msgstr ""
-
-#: InOut/widgets.cpp:1527
-msgid "FLsavesnap: cannot open file"
-msgstr "FLsavesnap: can't open file"
-
-#: InOut/widgets.cpp:1580
-msgid "FLloadsnap: cannot open file"
-msgstr "FLloadsnap: can't open file"
-
-#: InOut/widgets.cpp:1625
-msgid ""
-"unmatched widget, probably due to a modified orchestra. Modifying an "
-"orchestra makes it incompatible with old snapshot files"
-msgstr ""
-
-#: InOut/widgets.cpp:1994
-msgid "end of widget thread\n"
-msgstr ""
-
-#: InOut/widgets.cpp:2020
-msgid "FLrun was already called"
-msgstr ""
-
-#: InOut/widgets.cpp:2023
-msgid "FL_run: memory allocation failure"
-msgstr ""
-
-#: InOut/widgets.cpp:2125 InOut/widgets.cpp:2145
-msgid "Error: Unable to fork process\n"
-msgstr ""
-
-#: InOut/widgets.cpp:2545
-msgid "FLpanel_end: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2548
-msgid ""
-"FLpanel_end: invalid stack count: verify FLpanel/FLpanel_end count and "
-"placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2573 InOut/widgets.cpp:2604
-msgid "FLscroll_end: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2576
-msgid ""
-"FLscroll_end: invalid stack count: verify FLscroll/FLscroll_end count and "
-"placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2607
-msgid ""
-"FLtabs_end: invalid stack count: verify FLtabs/FLtabs_end count and placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2651
-msgid "FLgroup_end: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2654
-msgid ""
-"FLgroup_end: invalid stack count: verify FLgroup/FLgroup_end count and "
-"placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2684
-msgid "FLpack_end: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2687
-msgid ""
-"FLpack_end: invalid stack count: verify FLpack/FLpack_end count and placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2840
-msgid "FLvalue cannot be set by FLsetVal.\n"
-msgstr "FLvalue can't be set by FLsetVal.\n"
-
-#: InOut/widgets.cpp:2857
-#, c-format
-msgid "(fl_setWidgetValuei): not fully implemented yet; exp=%d"
-msgstr ""
-
-#: InOut/widgets.cpp:2876
-msgid "FLvalue cannot be set by FLsetVal\n"
-msgstr "FLvalue can't be set by FLsetVal\n"
-
-#: InOut/widgets.cpp:2893
-#, c-format
-msgid "(fl_setWidgetValue_set): not fully implemented yet; exp=%d"
-msgstr ""
-
-#: InOut/widgets.cpp:3242 InOut/widgets.cpp:4648
-msgid "FLslider exponential, using non-labeled slider"
-msgstr ""
-
-#: InOut/widgets.cpp:3264
-msgid "FLslider: invalid slider type"
-msgstr ""
-
-#: InOut/widgets.cpp:3276 InOut/widgets.cpp:4072
-msgid "FLslider: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:3337 InOut/widgets.cpp:4399 InOut/widgets.cpp:4610
-#: InOut/widgets.cpp:4787
-msgid "invalid ZAK space allocation"
-msgstr ""
-
-#: InOut/widgets.cpp:3451
-msgid "FLslidBnk: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:3548 InOut/widgets.cpp:3581
-msgid "FLjoy X axe: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:3675
-msgid "FLknob: invalid knob type"
-msgstr ""
-
-#: InOut/widgets.cpp:3690
-msgid "FLknob: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:3790 InOut/widgets.cpp:3912
-#, c-format
-msgid "FLbutton \"%s\" ignoring snapshot capture retrieve"
-msgstr ""
-
-#: InOut/widgets.cpp:3831
-msgid "FLbutton: invalid button type"
-msgstr ""
-
-#: InOut/widgets.cpp:3863
-msgid "FLcloseButton: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:3882
-#, c-format
-msgid "Command Found: %s\n"
-msgstr ""
-
-#: InOut/widgets.cpp:3954
-msgid "FLbuttonBank: invalid button type"
-msgstr ""
-
-#: InOut/widgets.cpp:3992
-#, c-format
-msgid "FLcount \"%s\" ignoring snapshot capture retrieve"
-msgstr ""
-
-#: InOut/widgets.cpp:4059
-msgid "FLroller: invalid roller type"
-msgstr ""
-
-#: InOut/widgets.cpp:4254
-msgid "FLhvsBox: a square area must be delimited by 2 lines at least"
-msgstr ""
-
-#: InOut/widgets.cpp:4302
-msgid "FLkeyIn: invalid table number"
-msgstr ""
-
-#: InOut/widgets.cpp:4305
-msgid "FLkeyIn: table too short!"
-msgstr ""
-
-#: InOut/widgets.cpp:4522
-msgid "FLvslidBnk: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:4698 InOut/widgets.cpp:4875
-msgid "FLsliderBank: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:4825
-msgid "FLslidBnk2: FLslider exponential, using non-labeled slider"
-msgstr ""
-
-#: InOut/widgets.cpp:4955 InOut/widgets.cpp:5018
-msgid "FLsldBnkSet: invalid table number"
-msgstr ""
-
-#: InOut/widgets.cpp:4959 InOut/widgets.cpp:5022
-msgid "FLslidBnkSet: table too short!"
-msgstr ""
-
-#: InOut/widgets.cpp:4967 InOut/widgets.cpp:5031
-msgid "FLsldBnkSet: invalid outable number"
-msgstr ""
-
-#: InOut/widgets.cpp:4972 InOut/widgets.cpp:5037
-msgid "FLslidBnkSet: too many sliders to reset!"
-msgstr ""
-
-#: InOut/widgets.cpp:4995
-msgid "FLslidBnkSet: function mapping not available"
-msgstr ""
-
-#: InOut/widgets.cpp:5064 InOut/widgets.cpp:5149 InOut/widgets.cpp:5236
-msgid ""
-"FLslidBnk2Setk: value out of range: function mapping requires a 0 to 1 range "
-"for input"
-msgstr ""
-
-#: InOut/widgets.cpp:5093
-msgid "FLsldBnkSetk: invalid table number"
-msgstr ""
-
-#: InOut/widgets.cpp:5097 InOut/widgets.cpp:5183
-msgid "FLslidBnkSetk: table too short!"
-msgstr ""
-
-#: InOut/widgets.cpp:5105
-msgid "FLsldBnkSetk: invalid outable number"
-msgstr ""
-
-#: InOut/widgets.cpp:5111 InOut/widgets.cpp:5197
-msgid "FLslidBnkSetk: too many sliders to reset!"
-msgstr ""
-
-#: InOut/widgets.cpp:5179
-msgid "FLslidBnkSetk: invalid table number"
-msgstr ""
-
-#: InOut/widgets.cpp:5191
-msgid "FLslidBnkSetk: invalid outable number"
-msgstr ""
-
-#: InOut/widgets.cpp:5268
-msgid "FLxyin: none of X limits can be zero in exponential mode!"
-msgstr ""
-
-#: InOut/widgets.cpp:5294
-msgid "FLxyin: none of Y limits can be zero in exponential mode!"
-msgstr ""
-
#: InOut/winascii.c:75
#, c-format
msgid "%s\t%ld points, scalemax %5.3f\n"
msgstr ""
-#: InOut/windin.c:46 Opcodes/pitch.c:82 Opcodes/spectra.c:76
+#: InOut/windin.c:46 Opcodes/pitch.c:83 Opcodes/spectra.c:78
msgid "illegal iprd"
msgstr ""
@@ -3794,47 +3528,61 @@ msgstr ""
msgid "widgets.cpp: error allocating FLTK flags"
msgstr ""
-#: OOps/aops.c:95 OOps/aops.c:119
+#: InOut/winFLTK.c:124 InOut/winFLTK.c:137
+#: InOut/virtual_keyboard/virtual_keyboard.cpp:443
+#, c-format
+msgid "Error registering opcode '%s'"
+msgstr ""
+
+#: InOut/virtual_keyboard/virtual_keyboard.cpp:435
+msgid "virtual_keyboard.cpp: error allocating FLTK flags"
+msgstr ""
+
+#: OOps/aops.c:120 OOps/aops.c:144
#, c-format
msgid "Cannot be more In arguments than Out in init (%d,%d)"
msgstr ""
-#: OOps/aops.c:175 OOps/aops.c:194
+#: OOps/aops.c:200 OOps/aops.c:219
#, c-format
msgid "Index %d out of range [0,%d] in t[]\n"
msgstr ""
-#: OOps/aops.c:184
-#, fuzzy
-msgid "Vector notinitialised\n"
-msgstr "vco: not initialized"
+#: OOps/aops.c:209
+#
+msgid "Vector not initialised\n"
+msgstr "Vector not initialized\n"
-#: OOps/aops.c:686
+#: OOps/aops.c:711
msgid "non-looping sample"
msgstr ""
-#: OOps/aops.c:828 OOps/aops.c:856
+#: OOps/aops.c:853 OOps/aops.c:881
#, c-format
msgid "No tuning table %d"
msgstr ""
-#: OOps/aops.c:901 OOps/aops.c:939
+#: OOps/aops.c:926 OOps/aops.c:964
msgid "cpstun: invalid table"
msgstr ""
-#: OOps/aops.c:1189
+#: OOps/aops.c:1214
msgid "Input and output argument count differs in inch"
msgstr ""
-#: OOps/aops.c:1193
+#: OOps/aops.c:1218
#, c-format
msgid "Input channel %d too large; ignored"
msgstr ""
-#: OOps/aops.c:1667
+#: OOps/aops.c:1698
msgid "k-rate invalue ChannelName cannot start with $"
msgstr "k-rate invalue ChannelName can't start with $"
+#: OOps/aops.c:1835
+msgid "Unknown functuon called"
+msgstr ""
+
#: OOps/bus.c:313 OOps/bus.c:345
msgid "chani: invalid index"
msgstr ""
@@ -4117,7 +3865,7 @@ msgstr ""
msgid "dispfft: not initialised"
msgstr "dispfft: not initialized"
-#: OOps/disprep.c:435 Opcodes/spectra.c:516
+#: OOps/disprep.c:435 Opcodes/spectra.c:518
msgid "illegal iperiod"
msgstr ""
@@ -4181,15 +3929,15 @@ msgstr ""
msgid " *** fftlib.c: internal error: invalid FFT size: %d"
msgstr ""
-#: OOps/goto_ops.c:92
+#: OOps/goto_ops.c:93
msgid "negative time period"
msgstr ""
-#: OOps/goto_ops.c:182
+#: OOps/goto_ops.c:186
msgid "turnoff2: invalid instrument number"
msgstr ""
-#: OOps/goto_ops.c:187
+#: OOps/goto_ops.c:191
msgid "turnoff2: invalid mode parameter"
msgstr ""
@@ -4206,7 +3954,7 @@ msgid "cpstabm: invalid modulator table"
msgstr ""
#: OOps/midiops.c:304 OOps/midiops.c:314 OOps/midiops.c:334 OOps/midiops.c:344
-#: OOps/midiops.c:421 OOps/midiops.c:435 Opcodes/gab/sliderTable.c:563
+#: OOps/midiops.c:421 OOps/midiops.c:435 Opcodes/gab/sliderTable.c:567
#: Opcodes/midiops2.c:56 Opcodes/midiops2.c:73 Opcodes/midiops2.c:111
#: Opcodes/midiops2.c:145 Opcodes/midiops2.c:206 Opcodes/midiops2.c:237
#: Opcodes/midiops2.c:298 Opcodes/midiops2.c:317 Opcodes/midiops2.c:357
@@ -4222,7 +3970,7 @@ msgstr ""
msgid "illegal mrtmsg argument"
msgstr ""
-#: OOps/midiout.c:383
+#: OOps/midiout.c:389
#, c-format
msgid "out contr14 msb:%x lsb:%x\n"
msgstr ""
@@ -4688,148 +4436,148 @@ msgstr "pvsanal: Not Initialized.\n"
msgid "Unknown window type; replaced by rectangular\n"
msgstr ""
-#: OOps/pvsanal.c:1025
+#: OOps/pvsanal.c:1027
msgid "pvsynth: Not Initialised.\n"
msgstr "pvsynth: Not Initialized.\n"
-#: OOps/remote.c:100
+#: OOps/remote.c:103
msgid "insufficient memory to initialise remote globals."
msgstr ""
-#: OOps/remote.c:109
+#: OOps/remote.c:112
msgid "insufficient memory to initialise outgoing socket table."
msgstr ""
-#: OOps/remote.c:116
+#: OOps/remote.c:119
msgid "insufficient memory to initialise incoming socket table."
msgstr ""
-#: OOps/remote.c:124
+#: OOps/remote.c:127
msgid "insufficient memory to initialise insrfd_list."
msgstr ""
-#: OOps/remote.c:132
+#: OOps/remote.c:135
msgid "insufficient memory to initialise chnrfd_list."
msgstr ""
-#: OOps/remote.c:139
+#: OOps/remote.c:142
msgid "insufficient memory to initialise insrfd table."
msgstr ""
-#: OOps/remote.c:146
+#: OOps/remote.c:149
msgid "insufficient memory to initialise chnrfd table."
msgstr ""
-#: OOps/remote.c:153
+#: OOps/remote.c:156
msgid "insufficient memory to initialise local ip address."
msgstr ""
-#: OOps/remote.c:161
+#: OOps/remote.c:164
msgid "unable to get local ip address."
msgstr ""
-#: OOps/remote.c:222
+#: OOps/remote.c:225
msgid "could not open remote port"
msgstr "couldn't open remote port"
-#: OOps/remote.c:237
+#: OOps/remote.c:240
msgid "---> Could not connect \n"
msgstr "---> Couldn't connect \n"
-#: OOps/remote.c:241
+#: OOps/remote.c:244
msgid "---> Failed all attempts to connect. \n"
msgstr ""
-#: OOps/remote.c:244
+#: OOps/remote.c:247
msgid "---> Connected. \n"
msgstr ""
-#: OOps/remote.c:258 Opcodes/socksend.c:232
+#: OOps/remote.c:261 Opcodes/socksend.c:305
msgid "write to socket failed"
msgstr ""
-#: OOps/remote.c:278
+#: OOps/remote.c:281
msgid "creating socket\n"
msgstr ""
-#: OOps/remote.c:280
+#: OOps/remote.c:283
msgid "created socket \n"
msgstr ""
-#: OOps/remote.c:292
+#: OOps/remote.c:295
msgid "setting socket option to reuse the addresse \n"
msgstr ""
-#: OOps/remote.c:309 Opcodes/sockrecv.c:133 Opcodes/sockrecv.c:223
-#: Opcodes/socksend.c:211
+#: OOps/remote.c:312 Opcodes/sockrecv.c:141 Opcodes/sockrecv.c:237
+#: Opcodes/socksend.c:284
msgid "bind failed"
msgstr ""
-#: OOps/remote.c:313 Opcodes/socksend.c:216
+#: OOps/remote.c:316 Opcodes/socksend.c:289
msgid "listen failed"
msgstr ""
-#: OOps/remote.c:318 Opcodes/socksend.c:222
+#: OOps/remote.c:321 Opcodes/socksend.c:295
msgid "accept failed"
msgstr ""
-#: OOps/remote.c:321
+#: OOps/remote.c:324
#, c-format
msgid "accepted, conn=%d \n"
msgstr ""
-#: OOps/remote.c:353 OOps/remote.c:374 OOps/remote.c:417 OOps/remote.c:449
-#: OOps/remote.c:489
+#: OOps/remote.c:356 OOps/remote.c:377 OOps/remote.c:420 OOps/remote.c:452
+#: OOps/remote.c:492
msgid "failed to initialise remote globals."
msgstr "failed to initialize remote globals."
-#: OOps/remote.c:378 OOps/remote.c:421
+#: OOps/remote.c:381 OOps/remote.c:424
msgid "missing instr nos"
msgstr ""
-#: OOps/remote.c:390 OOps/remote.c:430
+#: OOps/remote.c:393 OOps/remote.c:433
msgid "illegal instr no"
msgstr ""
-#: OOps/remote.c:393
+#: OOps/remote.c:396
msgid "insno already remote"
msgstr ""
-#: OOps/remote.c:403 OOps/remote.c:474
+#: OOps/remote.c:406 OOps/remote.c:477
msgid "Failed to open port to listen"
msgstr ""
-#: OOps/remote.c:423
+#: OOps/remote.c:426
#, c-format
msgid "*** str1: %s own:%s\n"
msgstr ""
-#: OOps/remote.c:433
+#: OOps/remote.c:436
msgid "insno already specific remote"
msgstr ""
-#: OOps/remote.c:453 OOps/remote.c:493
+#: OOps/remote.c:456 OOps/remote.c:496
msgid "missing channel nos"
msgstr ""
-#: OOps/remote.c:463 OOps/remote.c:502
+#: OOps/remote.c:466 OOps/remote.c:505
msgid "illegal channel no"
msgstr ""
-#: OOps/remote.c:466
+#: OOps/remote.c:469
msgid "channel already remote"
msgstr ""
-#: OOps/remote.c:505
+#: OOps/remote.c:508
msgid "channel already specific remote"
msgstr ""
-#: OOps/remote.c:531 OOps/remote.c:555 OOps/remote.c:579
+#: OOps/remote.c:534 OOps/remote.c:558 OOps/remote.c:582
msgid "CLsend failed"
msgstr ""
-#: OOps/remote.c:645 OOps/remote.c:653 OOps/remote.c:661 OOps/remote.c:669
-#: OOps/remote.c:677
+#: OOps/remote.c:648 OOps/remote.c:656 OOps/remote.c:664 OOps/remote.c:672
+#: OOps/remote.c:680
msgid ""
"*** This version of Csound was not compiled with remote event support ***\n"
msgstr ""
@@ -4938,53 +4686,53 @@ msgstr "linseg not initialized (krate)\n"
msgid "linseg: not initialised (arate)\n"
msgstr "linseg: not initialized (arate)\n"
-#: OOps/ugens1.c:463 OOps/ugens1.c:465 OOps/ugens1.c:512 OOps/ugens1.c:514
-#: OOps/ugens1.c:564 OOps/ugens1.c:566 OOps/ugens1.c:610 OOps/ugens1.c:612
-#: OOps/ugens1.c:774 OOps/ugens1.c:776
+#: OOps/ugens1.c:464 OOps/ugens1.c:466 OOps/ugens1.c:513 OOps/ugens1.c:515
+#: OOps/ugens1.c:565 OOps/ugens1.c:567 OOps/ugens1.c:611 OOps/ugens1.c:613
+#: OOps/ugens1.c:775 OOps/ugens1.c:777
#, c-format
msgid "ival%d is zero"
msgstr ""
-#: OOps/ugens1.c:466 OOps/ugens1.c:515 OOps/ugens1.c:567 OOps/ugens1.c:613
-#: OOps/ugens1.c:777
+#: OOps/ugens1.c:467 OOps/ugens1.c:516 OOps/ugens1.c:568 OOps/ugens1.c:614
+#: OOps/ugens1.c:778
#, c-format
msgid "ival%d sign conflict"
msgstr ""
-#: OOps/ugens1.c:495 OOps/ugens1.c:544
+#: OOps/ugens1.c:496 OOps/ugens1.c:545
#, c-format
msgid "Breakpoint time %f not valid"
msgstr ""
-#: OOps/ugens1.c:706
+#: OOps/ugens1.c:707
msgid "expseg (krate): not initialised"
msgstr "expseg (krate): not initialized"
-#: OOps/ugens1.c:732
+#: OOps/ugens1.c:733
msgid "expseg (arate): not initialised"
msgstr "expseg (arate): not initialized"
-#: OOps/ugens1.c:1013 OOps/ugens1.c:1149 OOps/ugens1.c:1311
+#: OOps/ugens1.c:1014 OOps/ugens1.c:1150 OOps/ugens1.c:1312
msgid "non-positive iatdec"
msgstr ""
-#: OOps/ugens1.c:1106 OOps/ugens1.c:1273
+#: OOps/ugens1.c:1107 OOps/ugens1.c:1274
msgid "ixmod out of range."
msgstr ""
-#: OOps/ugens1.c:1134 OOps/ugens1.c:1301
+#: OOps/ugens1.c:1135 OOps/ugens1.c:1302
msgid "rise func ends with zero"
msgstr ""
-#: OOps/ugens1.c:1178 OOps/ugens1.c:1257
+#: OOps/ugens1.c:1179 OOps/ugens1.c:1258
msgid "envlpx rise func ends with zero"
msgstr ""
-#: OOps/ugens1.c:1199 OOps/ugens1.c:1254
+#: OOps/ugens1.c:1200 OOps/ugens1.c:1255
msgid "envlpx(krate): not initialised"
msgstr "envlpx(krate): not initialized"
-#: OOps/ugens2.c:48 OOps/ugens2.c:61 Opcodes/shape.c:377
+#: OOps/ugens2.c:48 OOps/ugens2.c:61 Opcodes/shape.c:379
msgid "init phase truncation\n"
msgstr ""
@@ -5048,8 +4796,8 @@ msgid "oscil(krate): not initialised"
msgstr "oscil(krate): not initialized"
#: OOps/ugens2.c:1139 OOps/ugens2.c:1167 OOps/ugens2.c:1192 OOps/ugens2.c:1219
-#: Opcodes/pitch.c:1579 Opcodes/pitch.c:1606 Opcodes/pitch.c:1633
-#: Opcodes/pitch.c:1662
+#: Opcodes/pitch.c:1580 Opcodes/pitch.c:1607 Opcodes/pitch.c:1634
+#: Opcodes/pitch.c:1663
msgid "oscil: not initialised"
msgstr "oscil: not initialized"
@@ -5165,7 +4913,7 @@ msgstr ""
msgid "Seeding from current time %lu\n"
msgstr ""
-#: OOps/ugens5.c:198 OOps/ugens5.c:260 Opcodes/gab/gab.c:45 Opcodes/ugsc.c:188
+#: OOps/ugens5.c:198 OOps/ugens5.c:260 Opcodes/gab/gab.c:47 Opcodes/ugsc.c:186
#, c-format
msgid "illegal reson iscl value, %f"
msgstr ""
@@ -5397,8 +5145,8 @@ msgstr ""
msgid "Table no. < 1 dft=%.2f sft=%.2f"
msgstr ""
-#: OOps/ugrw1.c:1781 OOps/ugrw1.c:1822 Opcodes/fareyseq.c:455
-#: Opcodes/fareyseq.c:477
+#: OOps/ugrw1.c:1781 OOps/ugrw1.c:1822 Opcodes/fareyseq.c:453
+#: Opcodes/fareyseq.c:475
#, c-format
msgid "Source sft table %.2f not found."
msgstr ""
@@ -5628,19 +5376,19 @@ msgstr ""
msgid "reverbx: not initialised"
msgstr "reverbx: not initialized"
-#: Opcodes/ambicode1.c:80
+#: Opcodes/ambicode1.c:82
msgid "The numbers of input and output arguments are not valid."
msgstr ""
-#: Opcodes/ambicode1.c:163
+#: Opcodes/ambicode1.c:165
msgid "The number of input arguments is not valid."
msgstr ""
-#: Opcodes/ambicode1.c:167
+#: Opcodes/ambicode1.c:169
msgid "The isetup value should be between 1 and 5."
msgstr ""
-#: Opcodes/ambicode1.c:193
+#: Opcodes/ambicode1.c:195
msgid "The output channel count does not match the isetup value."
msgstr ""
@@ -5680,16 +5428,16 @@ msgstr ""
msgid "Not supported setup number!"
msgstr ""
-#: Opcodes/babo.c:740
+#: Opcodes/babo.c:742
#, c-format
msgid "Babo: resonator dimensions are incorrect (%.1f, %.1f, %.1f)"
msgstr ""
-#: Opcodes/bilbar.c:82
+#: Opcodes/bilbar.c:83
msgid "No data to continue"
msgstr ""
-#: Opcodes/bilbar.c:108
+#: Opcodes/bilbar.c:109
msgid "Ends must be clamped(1), pivoting(2) or free(3)"
msgstr ""
@@ -5702,8 +5450,8 @@ msgstr "vco: not initialized"
msgid "DLineN: Delay length too big ... setting to maximum length of %ld.\n"
msgstr ""
-#: Opcodes/bowedbar.c:98 Opcodes/physmod.c:489
-msgid "unknown lowest frequency for bowed string -- assuming 50Hz\n"
+#: Opcodes/bowedbar.c:98
+msgid "unknown lowest frequency for bowed bar -- assuming 50Hz\n"
msgstr ""
#: Opcodes/clfilt.c:53
@@ -5781,17 +5529,17 @@ msgstr ""
msgid "Unknown control %d"
msgstr ""
-#: Opcodes/cpumeter.c:73
+#: Opcodes/cpumeter.c:77
#, c-format
msgid "Failed to open /proc/stat: %s"
msgstr ""
-#: Opcodes/cpumeter.c:75 Opcodes/cpumeter.c:80 Opcodes/cpumeter.c:107
-#: Opcodes/cpumeter.c:147
+#: Opcodes/cpumeter.c:79 Opcodes/cpumeter.c:84 Opcodes/cpumeter.c:111
+#: Opcodes/cpumeter.c:151
msgid "failed /proc/stat read"
msgstr ""
-#: Opcodes/crossfm.c:33
+#: Opcodes/crossfm.c:34
msgid "crossfm: ftable not found"
msgstr ""
@@ -5832,31 +5580,31 @@ msgstr ""
msgid "insufficient arguments for fareytable"
msgstr ""
-#: Opcodes/fareyseq.c:250 Opcodes/fareyseq.c:300
+#: Opcodes/fareyseq.c:251 Opcodes/fareyseq.c:301
#, c-format
msgid "Farey: Table no. < 1 dft=%.2f sft=%.2f"
msgstr ""
-#: Opcodes/fareyseq.c:255
+#: Opcodes/fareyseq.c:256
#, c-format
msgid "Farey: Filter type < 1 dft=%.2f sft=%.2f"
msgstr ""
-#: Opcodes/fareyseq.c:270 Opcodes/fareyseq.c:318
+#: Opcodes/fareyseq.c:271 Opcodes/fareyseq.c:319
#, c-format
msgid "Farey: Destination dft table %.2f not found."
msgstr ""
-#: Opcodes/fareyseq.c:281 Opcodes/fareyseq.c:329
+#: Opcodes/fareyseq.c:282 Opcodes/fareyseq.c:330
#, c-format
msgid "Farey: Source sft table %.2f not found."
msgstr ""
-#: Opcodes/fareyseq.c:305
+#: Opcodes/fareyseq.c:306
msgid "Farey: Filter type < 1"
msgstr ""
-#: Opcodes/fareyseq.c:447 Opcodes/fareyseq.c:468
+#: Opcodes/fareyseq.c:445 Opcodes/fareyseq.c:466
#, c-format
msgid "Table no. < 1 sft=%.2f"
msgstr ""
@@ -5964,45 +5712,45 @@ msgstr ""
msgid "follow - zero length!"
msgstr ""
-#: Opcodes/fout.c:59
+#: Opcodes/fout.c:60
#, c-format
msgid "Closing file '%s'...\n"
msgstr ""
-#: Opcodes/fout.c:101
+#: Opcodes/fout.c:102
msgid "invalid file handle"
msgstr ""
-#: Opcodes/fout.c:108 Opcodes/fout.c:420
+#: Opcodes/fout.c:109 Opcodes/fout.c:421
msgid "invalid file name"
msgstr ""
-#: Opcodes/fout.c:165
+#: Opcodes/fout.c:166
#, c-format
msgid "error opening file '%s'"
msgstr ""
-#: Opcodes/fout.c:192
+#: Opcodes/fout.c:193
#, c-format
msgid "error opening sound file '%s'"
msgstr ""
-#: Opcodes/fout.c:429
+#: Opcodes/fout.c:430
#, c-format
msgid "cannot close '%s': not found in list of open files"
msgstr "can't close '%s': not found in list of open files"
-#: Opcodes/fout.c:440
+#: Opcodes/fout.c:441
#, c-format
msgid "cannot close file #%d: not a valid handle"
msgstr "can't close file #%d: not a valid handle"
-#: Opcodes/fout.c:447
+#: Opcodes/fout.c:448
#, c-format
msgid "file #%d (%s) is in use, will be closed when released"
msgstr ""
-#: Opcodes/fout.c:476 Opcodes/fout.c:479 Opcodes/fout.c:550 Opcodes/fout.c:553
+#: Opcodes/fout.c:477 Opcodes/fout.c:480 Opcodes/fout.c:551 Opcodes/fout.c:554
msgid "fouti: invalid file handle"
msgstr ""
@@ -6080,554 +5828,689 @@ msgstr ""
msgid "ftsave: failed to write file"
msgstr "ftsave: failed to write file"
-#: Opcodes/gab/gab.c:109
+#: Opcodes/gab/gab.c:111
msgid "fastab: incorrect table number"
msgstr ""
-#: Opcodes/gab/gab.c:132 Opcodes/gab/gab.c:141 Opcodes/gab/gab.c:171
+#: Opcodes/gab/gab.c:134 Opcodes/gab/gab.c:143 Opcodes/gab/gab.c:173
msgid "tabw off end"
msgstr ""
-#: Opcodes/gab/gab.c:157 Opcodes/gab/gab.c:225 Opcodes/gab/gab.c:234
+#: Opcodes/gab/gab.c:159 Opcodes/gab/gab.c:227 Opcodes/gab/gab.c:236
msgid "tab off end"
msgstr ""
-#: Opcodes/gab/gab.c:183
+#: Opcodes/gab/gab.c:185
msgid "tab_i: incorrect table number"
msgstr ""
-#: Opcodes/gab/gab.c:190
-msgid "tab_i off end"
+#: Opcodes/gab/gab.c:192
+#, c-format
+msgid "tab_i off end: table number: %d\n"
msgstr ""
-#: Opcodes/gab/gab.c:202
+#: Opcodes/gab/gab.c:204
msgid "tabw_i: incorrect table number"
msgstr ""
-#: Opcodes/gab/gab.c:209
+#: Opcodes/gab/gab.c:211
msgid "tabw_i off end"
msgstr ""
-#: Opcodes/gab/gab.c:247
+#: Opcodes/gab/gab.c:249
msgid "tab_init: incorrect table number"
msgstr ""
-#: Opcodes/gab/gab.c:316
+#: Opcodes/gab/gab.c:318
msgid "printi parameter was not a \"quoted string\""
msgstr ""
-#: Opcodes/gab/gab.c:423
+#: Opcodes/gab/gab.c:425
msgid "adsynt2: wavetable not found!"
msgstr ""
-#: Opcodes/gab/gab.c:435
+#: Opcodes/gab/gab.c:437
msgid "adsynt2: freqtable not found!"
msgstr ""
-#: Opcodes/gab/gab.c:440
+#: Opcodes/gab/gab.c:442
msgid "adsynt2: partial count is greater than freqtable size!"
msgstr ""
-#: Opcodes/gab/gab.c:449
+#: Opcodes/gab/gab.c:451
msgid "adsynt2: amptable not found!"
msgstr ""
-#: Opcodes/gab/gab.c:454
+#: Opcodes/gab/gab.c:456
msgid "adsynt2: partial count is greater than amptable size!"
msgstr ""
-#: Opcodes/gab/gab.c:499
+#: Opcodes/gab/gab.c:501
msgid "adsynt2: not initialised"
msgstr ""
-#: Opcodes/gab/gab.c:741
+#: Opcodes/gab/gab.c:743
msgid "max_k: invalid imaxflag value"
msgstr ""
-#: Opcodes/gab/hvs.c:68
+#: Opcodes/gab/hvs.c:70
msgid "hvs1: a line segment must be delimited by 2 points at least"
msgstr ""
-#: Opcodes/gab/hvs.c:150
+#: Opcodes/gab/hvs.c:152
msgid "hvs2: a square area must be delimited by 2 lines at least"
msgstr ""
-#: Opcodes/gab/hvs.c:246
+#: Opcodes/gab/hvs.c:248
msgid "hvs3: a square area must be delimited by 2 lines at least"
msgstr ""
-#: Opcodes/gab/hvs.c:389
+#: Opcodes/gab/hvs.c:390
msgid "vphaseseg: the first function is invalid or missing"
msgstr ""
-#: Opcodes/gab/hvs.c:396
+#: Opcodes/gab/hvs.c:398 Opcodes/gab/vectorial.c:2301
msgid "vphaseseg: invalid num. of elements"
msgstr ""
-#: Opcodes/gab/hvs.c:414
+#: Opcodes/gab/hvs.c:416
msgid "vphaseseg: function invalid or missing"
msgstr ""
-#: Opcodes/gab/newgabopc.c:39 Opcodes/gab/newgabopc.c:54
+#: Opcodes/gab/newgabopc.c:40 Opcodes/gab/newgabopc.c:55
msgid "vtable1: incorrect table number"
msgstr ""
-#: Opcodes/gab/newgabopc.c:359
+#: Opcodes/gab/newgabopc.c:241 Opcodes/gab/newgabopc.c:296
+msgid "copyTabElems: incorrect destination table number"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:246 Opcodes/gab/newgabopc.c:301
+msgid ""
+"copyTabElems: destination table too short or number of elements to copy too "
+"big"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:252 Opcodes/gab/newgabopc.c:306
+msgid "copyTabElems: incorrect source table number"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:257 Opcodes/gab/newgabopc.c:310
+msgid ""
+"copyTabElems: source table size less than the number of elements to copy"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:273 Opcodes/gab/newgabopc.c:318
+msgid "copyTabElems: source table too short"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:276 Opcodes/gab/newgabopc.c:321
+msgid "copyTabElems: destination table too short"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:347
+msgid "inrg: audio input is not enabled"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:362
msgid "inrg: channel number cannot be < 1 (1 is the first channel)"
msgstr "inrg: channel number can't be < 1 (1 is the first channel)"
-#: Opcodes/gab/newgabopc.c:400
+#: Opcodes/gab/newgabopc.c:403
msgid "outrg: channel number cannot be < 1 (1 is the first channel)"
msgstr "outrg: channel number can't be < 1 (1 is the first channel)"
-#: Opcodes/gab/newgabopc.c:439 Opcodes/gab/newgabopc.c:671
+#: Opcodes/gab/newgabopc.c:440 Opcodes/gab/newgabopc.c:574
+#: Opcodes/gab/newgabopc.c:672
msgid "invalid function"
msgstr ""
-#: Opcodes/gab/newgabopc.c:442
+#: Opcodes/gab/newgabopc.c:443
msgid "lposc: no sample rate stored in function; assuming=sr\n"
msgstr ""
-#: Opcodes/gab/newgabopc.c:673
+#: Opcodes/gab/newgabopc.c:577
+msgid "lposcil: no sample rate stored in function assuming=sr\n"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:674
msgid "lposcil: no sample rate stored in function; assuming=sr\n"
msgstr ""
-#: Opcodes/gab/sliderTable.c:45 Opcodes/gab/sliderTable.c:254
+#: Opcodes/gab/sliderTable.c:47 Opcodes/gab/sliderTable.c:256
#: Opcodes/midiops3.c:44 Opcodes/midiops3.c:146 Opcodes/midiops3.c:259
#: Opcodes/midiops3.c:317 Opcodes/midiops3.c:413
msgid "illegal channel"
msgstr ""
-#: Opcodes/gab/sliderTable.c:65 Opcodes/gab/sliderTable.c:277
+#: Opcodes/gab/sliderTable.c:67 Opcodes/gab/sliderTable.c:280
#: Opcodes/midiops3.c:58 Opcodes/midiops3.c:162 Opcodes/midiops3.c:273
#, c-format
msgid "illegal control number at position n.%d"
msgstr ""
-#: Opcodes/gab/sliderTable.c:74
+#: Opcodes/gab/sliderTable.c:76
#, c-format
msgid ""
"sliderXtable: illegal initvalue at position %d. When using table indexing, "
"the init range is 0 to 1"
msgstr ""
-#: Opcodes/gab/sliderTable.c:84 Opcodes/gab/sliderTable.c:284
-#: Opcodes/gab/sliderTable.c:509 Opcodes/midiops3.c:64 Opcodes/midiops3.c:168
+#: Opcodes/gab/sliderTable.c:86 Opcodes/gab/sliderTable.c:287
+#: Opcodes/gab/sliderTable.c:513 Opcodes/midiops3.c:64 Opcodes/midiops3.c:168
#: Opcodes/midiops3.c:347
#, c-format
msgid "illegal initvalue at position n.%d"
msgstr ""
-#: Opcodes/gab/sliderTable.c:96 Opcodes/gab/sliderTable.c:296
+#: Opcodes/gab/sliderTable.c:98 Opcodes/gab/sliderTable.c:299
msgid "sliderXtable: zero is illegal in exponential operations"
msgstr ""
-#: Opcodes/gab/sliderTable.c:312
+#: Opcodes/gab/sliderTable.c:315
#, c-format
msgid ""
"sliderXtable: illegal initvalue at position %d. When using table indexing, "
"the init range is 0 to 1"
msgstr ""
-#: Opcodes/gab/sliderTable.c:565 Opcodes/midiops2.c:321 Opcodes/midiops2.c:359
+#: Opcodes/gab/sliderTable.c:569 Opcodes/midiops2.c:321 Opcodes/midiops2.c:359
#: Opcodes/midiops2.c:391 Opcodes/midiops2.c:440 Opcodes/midiops2.c:475
#: Opcodes/midiops2.c:517 Opcodes/midiops2.c:532 Opcodes/midiops2.c:551
msgid "illegal midi channel"
msgstr ""
-#: Opcodes/gab/tabmorph.c:42
+#: Opcodes/gab/tabmorph.c:43
msgid "tabmorph: invalid table number"
msgstr ""
-#: Opcodes/gab/tabmorph.c:46
+#: Opcodes/gab/tabmorph.c:47
msgid "tabmorph: all tables must have the same length!"
msgstr ""
-#: Opcodes/gab/vectorial.c:33
+#: Opcodes/gab/vectorial.c:35
msgid "mtablei: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:63 Opcodes/gab/vectorial.c:83
-#: Opcodes/gab/vectorial.c:133 Opcodes/gab/vectorial.c:200
+#: Opcodes/gab/vectorial.c:65 Opcodes/gab/vectorial.c:85
+#: Opcodes/gab/vectorial.c:135 Opcodes/gab/vectorial.c:202
msgid "mtable: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:185
+#: Opcodes/gab/vectorial.c:187
msgid "mtabi: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:252
+#: Opcodes/gab/vectorial.c:254
msgid "mtablewi: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:268 Opcodes/gab/vectorial.c:288
-#: Opcodes/gab/vectorial.c:317 Opcodes/gab/vectorial.c:362
-#: Opcodes/gab/vectorial.c:406
+#: Opcodes/gab/vectorial.c:270 Opcodes/gab/vectorial.c:290
+#: Opcodes/gab/vectorial.c:319 Opcodes/gab/vectorial.c:364
+#: Opcodes/gab/vectorial.c:408
msgid "mtabw: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:348
+#: Opcodes/gab/vectorial.c:350
msgid "mtabwi: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:380
+#: Opcodes/gab/vectorial.c:382
msgid "mtablew: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:454 Opcodes/gab/vectorial.c:513
+#: Opcodes/gab/vectorial.c:457 Opcodes/gab/vectorial.c:516
#, c-format
msgid "vadd_i: invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:470
+#: Opcodes/gab/vectorial.c:473
msgid "vadd_i: ifn length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:497
+#: Opcodes/gab/vectorial.c:500
msgid "vadd: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:529
+#: Opcodes/gab/vectorial.c:532
msgid "vmult_i: ifn length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:556
+#: Opcodes/gab/vectorial.c:559
msgid "vmult: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:572
+#: Opcodes/gab/vectorial.c:575
#, c-format
msgid "vpow_i: invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:589
+#: Opcodes/gab/vectorial.c:592
msgid "vpow_i: ifn length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:617
+#: Opcodes/gab/vectorial.c:620
msgid "vpow: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:633
+#: Opcodes/gab/vectorial.c:636
#, c-format
msgid "vexp_i: invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:649
+#: Opcodes/gab/vectorial.c:652
msgid "vexp_i: ifn length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:676
+#: Opcodes/gab/vectorial.c:679
msgid "vexp: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:694
+#: Opcodes/gab/vectorial.c:697
#, c-format
msgid "vectorsop: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:699
+#: Opcodes/gab/vectorial.c:702
#, c-format
msgid "vectorsop: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:738
+#: Opcodes/gab/vectorial.c:742
msgid "vcopy: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:756
+#: Opcodes/gab/vectorial.c:760
msgid "vcopy: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:783
+#: Opcodes/gab/vectorial.c:787
#, c-format
msgid "vcopy_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:788
+#: Opcodes/gab/vectorial.c:792
#, c-format
msgid "vcopy_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:810
+#: Opcodes/gab/vectorial.c:814
msgid "vcopy_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:827
+#: Opcodes/gab/vectorial.c:831
msgid "vcopy_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:866
+#: Opcodes/gab/vectorial.c:870
msgid "vaddv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:885
+#: Opcodes/gab/vectorial.c:889
msgid "vaddv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:911
+#: Opcodes/gab/vectorial.c:915
#, c-format
msgid "vaddv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:916
+#: Opcodes/gab/vectorial.c:920
#, c-format
msgid "vaddv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:938
+#: Opcodes/gab/vectorial.c:942
msgid "vaddv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:956
+#: Opcodes/gab/vectorial.c:960
msgid "vaddv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:987
+#: Opcodes/gab/vectorial.c:991
msgid "vsubv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1006
+#: Opcodes/gab/vectorial.c:1010
msgid "vsubv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1033
+#: Opcodes/gab/vectorial.c:1037
#, c-format
msgid "vsubv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1038
+#: Opcodes/gab/vectorial.c:1042
#, c-format
msgid "vsubv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1060
+#: Opcodes/gab/vectorial.c:1064
msgid "vsubv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1078
+#: Opcodes/gab/vectorial.c:1082
msgid "vsubv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1115
+#: Opcodes/gab/vectorial.c:1119
msgid "vmultv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1134
+#: Opcodes/gab/vectorial.c:1138
msgid "vmultv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1161
+#: Opcodes/gab/vectorial.c:1165
#, c-format
msgid "vmultv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1166
+#: Opcodes/gab/vectorial.c:1170
#, c-format
msgid "vmultv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1188
+#: Opcodes/gab/vectorial.c:1192
msgid "vmultv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1205
+#: Opcodes/gab/vectorial.c:1209
msgid "vmultv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1242
+#: Opcodes/gab/vectorial.c:1246
msgid "vdivv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1261
+#: Opcodes/gab/vectorial.c:1265
msgid "vdivv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1288
+#: Opcodes/gab/vectorial.c:1292
#, c-format
msgid "vdivv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1293
+#: Opcodes/gab/vectorial.c:1297
#, c-format
msgid "vdivv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1315
+#: Opcodes/gab/vectorial.c:1319
msgid "vdivv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1333
+#: Opcodes/gab/vectorial.c:1337
msgid "vdivv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1370
+#: Opcodes/gab/vectorial.c:1374
msgid "vpowv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1389
+#: Opcodes/gab/vectorial.c:1393
msgid "vpowv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1416
+#: Opcodes/gab/vectorial.c:1420
#, c-format
msgid "vpowv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1421
+#: Opcodes/gab/vectorial.c:1425
#, c-format
msgid "vpowv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1443
+#: Opcodes/gab/vectorial.c:1447
msgid "vpowv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1460
+#: Opcodes/gab/vectorial.c:1464
msgid "vpowv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1497
+#: Opcodes/gab/vectorial.c:1501
msgid "vexpv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1516
+#: Opcodes/gab/vectorial.c:1520
msgid "vexpv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1543
+#: Opcodes/gab/vectorial.c:1547
#, c-format
msgid "vexpv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1548
+#: Opcodes/gab/vectorial.c:1552
#, c-format
msgid "vexpv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1570
+#: Opcodes/gab/vectorial.c:1574
msgid "vexpv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1588
+#: Opcodes/gab/vectorial.c:1592
msgid "vexpv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1625
+#: Opcodes/gab/vectorial.c:1629
msgid "vmap: Error: ifn1 and ifn2 can not be the same"
msgstr ""
-#: Opcodes/gab/vectorial.c:1630
+#: Opcodes/gab/vectorial.c:1634
#, c-format
msgid "vmap: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1635
+#: Opcodes/gab/vectorial.c:1639
#, c-format
msgid "vmap: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1657
+#: Opcodes/gab/vectorial.c:1661
msgid "vmap: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1674
+#: Opcodes/gab/vectorial.c:1678
msgid "vmap: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1870
+#: Opcodes/gab/vectorial.c:1698
+msgid "vectorop: invalid num of elements"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1727
+msgid "vport: invalid table length or num of elements"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1730
+msgid "vport: invalid table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1735
+msgid "vport: invalid init table length or num of elements"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1738
+msgid "vport: invalid init table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1875
#, c-format
msgid "vrandh: Seeding from current time %lu\n"
msgstr ""
-#: Opcodes/gab/vectorial.c:1968
+#: Opcodes/gab/vectorial.c:1888
+msgid "vrandh: Invalid table."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1891
+msgid "vrandh: idstoffset is greater than table length."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1896
+msgid "randh: Table length exceeded, last elements discarded."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1975
#, c-format
msgid "vrandi: Seeding from current time %lu\n"
msgstr ""
-#: Opcodes/grain4.c:57
+#: Opcodes/gab/vectorial.c:1987
+msgid "vrandi: Invalid table."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1990
+msgid "vrandi: idstoffset is greater thantable length."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1995
+msgid "vrandi: Table length exceeded, last elements discarded."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2077 Opcodes/gab/vectorial.c:2084
+#: Opcodes/gab/vectorial.c:2091
+msgid "vecdelay: invalid num of elements"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2079
+msgid "vecdly: invalid output table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2086
+msgid "vecdly: invalid input table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2093
+msgid "vecdly: invalid delay table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2138
+msgid "vecdly: not initialised"
+msgstr "vecdly: not initialized"
+
+#: Opcodes/gab/vectorial.c:2181
+msgid "vlinseg/vexpseg: invalid num. of elements"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2223 Opcodes/vpvoc.c:118
+msgid "tableseg: not initialised"
+msgstr "tableseg: not initialized"
+
+#: Opcodes/gab/vectorial.c:2253 Opcodes/vpvoc.c:146
+msgid "tablexseg: not initialised"
+msgstr "tablexseg: not initialized"
+
+#: Opcodes/gab/vectorial.c:2406
+#
+msgid "vdelayk: not initialised"
+msgstr "vdelayk: not initialized"
+
+#: Opcodes/gab/vectorial.c:2439 Opcodes/gab/vectorial.c:2445
+msgid "cella: invalid num of elements"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2441
+msgid "cella: invalid output table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2448
+msgid "cella: invalid initial state table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2452
+msgid "cella: invalid rule table"
+msgstr ""
+
+#: Opcodes/grain4.c:59
msgid "granule_set: Unable to find function table"
msgstr ""
-#: Opcodes/grain4.c:67
+#: Opcodes/grain4.c:69
msgid "granule_set: Unable to find function table for envelope"
msgstr ""
-#: Opcodes/grain4.c:73
+#: Opcodes/grain4.c:75
msgid "granule_set: Too many voices"
msgstr ""
-#: Opcodes/grain4.c:76
+#: Opcodes/grain4.c:78
msgid "granule_set: iratio must be greater then 0"
msgstr ""
-#: Opcodes/grain4.c:80
+#: Opcodes/grain4.c:82
msgid "granule_set: imode must be -1, 0 or +1"
msgstr ""
-#: Opcodes/grain4.c:84
+#: Opcodes/grain4.c:86
msgid "granule_set: Illegal ithd, must be greater than zero"
msgstr ""
-#: Opcodes/grain4.c:89
+#: Opcodes/grain4.c:91
msgid "granule_set: ipshift must be integer between 0 and 4"
msgstr ""
-#: Opcodes/grain4.c:94
+#: Opcodes/grain4.c:96
msgid "granule_set: Not enough voices for the number of pitches"
msgstr ""
-#: Opcodes/grain4.c:101
+#: Opcodes/grain4.c:103
msgid "granule_set: ipitch1 must be greater then zero"
msgstr ""
-#: Opcodes/grain4.c:106
+#: Opcodes/grain4.c:108
msgid "granule_set: ipitch2 must be greater then zero"
msgstr ""
-#: Opcodes/grain4.c:111
+#: Opcodes/grain4.c:113
msgid "granule_set: ipitch3 must be greater then zero"
msgstr ""
-#: Opcodes/grain4.c:116
+#: Opcodes/grain4.c:118
msgid "granule_set: ipitch4 must be greater then zero"
msgstr ""
-#: Opcodes/grain4.c:121
+#: Opcodes/grain4.c:123
msgid "granule_set: must be positive and less than function table length"
msgstr ""
-#: Opcodes/grain4.c:125
+#: Opcodes/grain4.c:127
msgid "granule_set: igskip_os must be greater then 0"
msgstr ""
-#: Opcodes/grain4.c:134
+#: Opcodes/grain4.c:136
msgid "granule_set: kgap must be greater then 0"
msgstr ""
-#: Opcodes/grain4.c:138
+#: Opcodes/grain4.c:140
#, c-format
msgid "granule_set: igap_os must be 0%% to 100%%"
msgstr ""
-#: Opcodes/grain4.c:142
+#: Opcodes/grain4.c:144
msgid "granule_set: kgsize must be greater then 0"
msgstr ""
-#: Opcodes/grain4.c:146
+#: Opcodes/grain4.c:148
#, c-format
msgid "granule_set: igsize_os must be 0%% to 100%%"
msgstr ""
-#: Opcodes/grain4.c:152
+#: Opcodes/grain4.c:154
msgid "granule_set: Illegal value of iatt and/or idec"
msgstr ""
-#: Opcodes/grain4.c:236
+#: Opcodes/grain4.c:238
msgid "granule_set: Illegal combination of igskip and ilength"
msgstr ""
-#: Opcodes/grain4.c:243
+#: Opcodes/grain4.c:245
#, c-format
msgid ""
"granule_set: WARNING * ilength may be too short * \n"
@@ -6637,7 +6520,7 @@ msgid ""
"ilength is %f Sec, kgsize is %f Sec\n"
msgstr ""
-#: Opcodes/grain4.c:418
+#: Opcodes/grain4.c:419
msgid "grain4: not initialised"
msgstr "grain4: not initialized"
@@ -6649,54 +6532,53 @@ msgstr ""
msgid "grain: not initialised"
msgstr "grain: not initialized"
-#: Opcodes/harmon.c:224
+#: Opcodes/harmon.c:226
msgid "harm signal has positive lead\n"
msgstr ""
-#: Opcodes/harmon.c:231
+#: Opcodes/harmon.c:233
msgid "harm signal has negative lead\n"
msgstr ""
-#: Opcodes/harmon.c:361
+#: Opcodes/harmon.c:363
msgid "harmon234: out of range\n"
msgstr ""
-#: Opcodes/hrtferX.c:79
+#: Opcodes/hrtferX.c:81
#, c-format
msgid ""
"Orchestra sampling rate is not compatible with HRTF.\n"
"Should be %d...exiting."
msgstr ""
-#: Opcodes/hrtferX.c:87
+#: Opcodes/hrtferX.c:89
msgid ""
"\n"
"Last argument must be the string 'HRTFcompact' ...correcting.\n"
msgstr ""
-#: Opcodes/hrtferX.c:489
+#: Opcodes/hrtferX.c:494
msgid "hrtfer: not initialised"
msgstr "hrtfer: not initialized"
-#: Opcodes/hrtfopcodes.c:232
+#: Opcodes/hrtfopcodes.c:260 Opcodes/hrtfopcodes.c:1434
+#: Opcodes/hrtfearly.c:300 Opcodes/hrtfreverb.c:257
#, c-format
msgid ""
"\n"
-"Orchestra sampling rate is not compatible with HRTF data files\n"
-"Should be %.0f, see Csound help for object\n"
+"\n"
+"WARNING!!:\n"
+"Orchestra SR not compatible with HRTF processing SR of: %.0f\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:251 Opcodes/hrtfopcodes.c:275
-#: Opcodes/hrtfopcodes.c:298 Opcodes/hrtfopcodes.c:1257
-#: Opcodes/hrtfopcodes.c:1280 Opcodes/hrtfopcodes.c:1303
-#: Opcodes/hrtfopcodes.c:1854 Opcodes/hrtfopcodes.c:1876
-#: Opcodes/hrtfopcodes.c:1898
+#: Opcodes/hrtfopcodes.c:287 Opcodes/hrtfopcodes.c:1461
+#: Opcodes/hrtfopcodes.c:2071 Opcodes/hrtfearly.c:327 Opcodes/hrtfreverb.c:300
msgid ""
"\n"
"\n"
"\n"
-"cannot load left data file, exiting\n"
+"Cannot load left data file, exiting\n"
"\n"
msgstr ""
"\n"
@@ -6705,16 +6587,13 @@ msgstr ""
"can't load left data file, exiting\n"
"\n"
-#: Opcodes/hrtfopcodes.c:259 Opcodes/hrtfopcodes.c:283
-#: Opcodes/hrtfopcodes.c:306 Opcodes/hrtfopcodes.c:1265
-#: Opcodes/hrtfopcodes.c:1288 Opcodes/hrtfopcodes.c:1311
-#: Opcodes/hrtfopcodes.c:1862 Opcodes/hrtfopcodes.c:1884
-#: Opcodes/hrtfopcodes.c:1906
+#: Opcodes/hrtfopcodes.c:294 Opcodes/hrtfopcodes.c:1468
+#: Opcodes/hrtfopcodes.c:2078 Opcodes/hrtfearly.c:334 Opcodes/hrtfreverb.c:306
msgid ""
"\n"
"\n"
"\n"
-"cannot load right data file, exiting\n"
+"Cannot load right data file, exiting\n"
"\n"
msgstr ""
"\n"
@@ -6723,28 +6602,28 @@ msgstr ""
"can't load right data file, exiting\n"
"\n"
-#: Opcodes/hrtfopcodes.c:313 Opcodes/hrtfopcodes.c:1912
+#: Opcodes/hrtfopcodes.c:690 Opcodes/hrtfearly.c:1241
msgid ""
"\n"
-"\n"
-"\n"
-" Sampling rate not supported, exiting\n"
+"WARNING: fades are overlapping: this could lead to noise: reduce fade size "
+"or change trajectory\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:600
+#: Opcodes/hrtfopcodes.c:2052
+#, c-format
msgid ""
-"fades are overlapping: this could lead to noise: reduce fade size or change "
-"trajectory\n"
+"\n"
+"\n"
+"WARNING!!:\n"
+"Orchestra SR not compatiblewith HRTF processing SR of: %.0f\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:1239 Opcodes/hrtfopcodes.c:1837
-#, c-format
+#: Opcodes/hrtfreverb.c:832
msgid ""
-"Orchestra sampling rate is not compatible with HRTF data files\n"
-"Should be %.0f, see Csound help for object\n"
"\n"
+"warning, approaching instability, fixed with a flat late reverb!"
msgstr ""
#: Opcodes/ifd.c:74
@@ -6770,10 +6649,9 @@ msgid "imageload: file %s is not in PNG format.\n"
msgstr ""
#: Opcodes/imageOpcodes.c:119 Opcodes/imageOpcodes.c:126
-#: Opcodes/imageOpcodes.c:134 Opcodes/imageOpcodes.c:165
-#: Opcodes/imageOpcodes.c:174 Opcodes/imageOpcodes.c:188
-#: Opcodes/imageOpcodes.c:291 Opcodes/imageOpcodes.c:298
-#: Opcodes/imageOpcodes.c:311
+#: Opcodes/imageOpcodes.c:165 Opcodes/imageOpcodes.c:174
+#: Opcodes/imageOpcodes.c:188 Opcodes/imageOpcodes.c:291
+#: Opcodes/imageOpcodes.c:298 Opcodes/imageOpcodes.c:311
msgid "imageload: out of memory.\n"
msgstr ""
@@ -6793,62 +6671,62 @@ msgid ""
"Status: %d\n"
msgstr ""
-#: Opcodes/jacko.cpp:543
+#: Opcodes/jacko.cpp:545
#, c-format
msgid "Created Jack client \"%s\" for Jack server \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:548
+#: Opcodes/jacko.cpp:551
#, c-format
msgid "Jack buffer size %d != Csound ksmps %d, exiting...\n"
msgstr ""
-#: Opcodes/jacko.cpp:556
+#: Opcodes/jacko.cpp:559
#, c-format
msgid "Jack sampling rate %d != Csound sr %d, exiting...\n"
msgstr ""
-#: Opcodes/jacko.cpp:567
+#: Opcodes/jacko.cpp:570
#, c-format
msgid "Activated Jack client \"%s\".\n"
msgstr "Activated Jack client \"%s\".\n"
-#: Opcodes/jacko.cpp:571
+#: Opcodes/jacko.cpp:574
#, c-format
msgid "Failed to activate Jack client \"%s\": status %d.\n"
msgstr ""
-#: Opcodes/jacko.cpp:586
+#: Opcodes/jacko.cpp:589
msgid "BEGAN JackoState::close()...\n"
msgstr ""
-#: Opcodes/jacko.cpp:622
+#: Opcodes/jacko.cpp:629
msgid "ENDED JackoState::close().\n"
msgstr ""
-#: Opcodes/jacko.cpp:876
+#: Opcodes/jacko.cpp:892
#, c-format
msgid "Failed to set Jack freewheeling mode to \"%s\": error %d.\n"
msgstr ""
-#: Opcodes/jacko.cpp:878
+#: Opcodes/jacko.cpp:895
#, c-format
msgid "Set Jack freewheeling mode to \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:893
+#: Opcodes/jacko.cpp:911
#, c-format
msgid "Turned Jack connections \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:934 Opcodes/jacko.cpp:1034 Opcodes/jacko.cpp:1134
-#: Opcodes/jacko.cpp:1200
+#: Opcodes/jacko.cpp:955 Opcodes/jacko.cpp:1062 Opcodes/jacko.cpp:1169
+#: Opcodes/jacko.cpp:1241
#, c-format
msgid "Could not create Jack port \"%s\".\n"
msgstr "Couldn't create Jack port \"%s\".\n"
-#: Opcodes/jacko.cpp:946 Opcodes/jacko.cpp:1046 Opcodes/jacko.cpp:1146
-#: Opcodes/jacko.cpp:1212
+#: Opcodes/jacko.cpp:969 Opcodes/jacko.cpp:1077 Opcodes/jacko.cpp:1184
+#: Opcodes/jacko.cpp:1255
#, c-format
msgid "Could not create Jack connection from \"%s\" to \"%s\": status %d.\n"
msgstr "Couldn't create Jack connection from \"%s\" to \"%s\": status %d.\n"
@@ -6887,27 +6765,27 @@ msgstr ""
msgid "lorisread cannot load %s"
msgstr "lorisread can't load %s"
-#: Opcodes/loscilx.c:74 Opcodes/loscilx.c:178
+#: Opcodes/loscilx.c:76 Opcodes/loscilx.c:180
#, c-format
msgid "could not load '%s'"
msgstr "couldn't load '%s'"
-#: Opcodes/loscilx.c:88 Opcodes/loscilx.c:258
+#: Opcodes/loscilx.c:90 Opcodes/loscilx.c:260
#, c-format
msgid "invalid loop mode: %d"
msgstr ""
-#: Opcodes/loscilx.c:170
+#: Opcodes/loscilx.c:172
msgid "loscilx: invalid number of output arguments"
msgstr ""
-#: Opcodes/loscilx.c:190 Opcodes/loscilx.c:219 Opcodes/pvlock.c:94
-#: Opcodes/pvlock.c:296 Opcodes/pvsbasic.c:460
+#: Opcodes/loscilx.c:192 Opcodes/loscilx.c:221 Opcodes/pvlock.c:118
+#: Opcodes/pvlock.c:320 Opcodes/pvsbasic.c:460
msgid ""
"number of output arguments inconsistent with number of sound file channels"
msgstr ""
-#: Opcodes/loscilx.c:665
+#: Opcodes/loscilx.c:667
msgid "loscilx: not initialised"
msgstr "loscilx: not initialized"
@@ -6915,11 +6793,11 @@ msgstr "loscilx: not initialized"
msgid "illegal order num. (min 1, max 10)"
msgstr ""
-#: Opcodes/mandolin.c:80
+#: Opcodes/mandolin.c:81
msgid "No table for Mandolin"
msgstr ""
-#: Opcodes/mandolin.c:90
+#: Opcodes/mandolin.c:91
msgid "No base frequency for mandolin"
msgstr ""
@@ -6950,27 +6828,27 @@ msgstr ""
msgid "illegal lsb control number at position n.%d"
msgstr ""
-#: Opcodes/modal4.c:45
+#: Opcodes/modal4.c:46
msgid "No table for Modal4 case"
msgstr ""
-#: Opcodes/modal4.c:245
+#: Opcodes/modal4.c:246
msgid "No table for Marimba strike"
msgstr ""
-#: Opcodes/modal4.c:284
+#: Opcodes/modal4.c:285
msgid "striking three times here!!!\n"
msgstr ""
-#: Opcodes/modal4.c:289
+#: Opcodes/modal4.c:290
msgid "striking twice here!!\n"
msgstr ""
-#: Opcodes/modal4.c:359
+#: Opcodes/modal4.c:360
msgid "No table for Vibraphone strike"
msgstr ""
-#: Opcodes/modal4.c:440
+#: Opcodes/modal4.c:441
msgid "No table for Agogobell strike"
msgstr ""
@@ -6978,12 +6856,12 @@ msgstr ""
msgid "modmatrix: "
msgstr ""
-#: Opcodes/mp3in.c:92 Opcodes/mp3in.c:230
+#: Opcodes/mp3in.c:93 Opcodes/mp3in.c:231
#, c-format
msgid "mp3in: %s: failed to open file"
msgstr ""
-#: Opcodes/mp3in.c:139
+#: Opcodes/mp3in.c:140
#, c-format
msgid "mp3in: file sample rate (%d) != orchestra sr (%d)\n"
msgstr ""
@@ -7216,9 +7094,9 @@ msgid "Time stamp is two values"
msgstr ""
#: Opcodes/OSC.c:240
-#, fuzzy, c-format
+#, c-format
msgid "ftable %.2f does not exist"
-msgstr "ftable doesn't exist"
+msgstr "ftable %.2f doesn't exist"
#: Opcodes/OSC.c:249
#, c-format
@@ -7270,7 +7148,7 @@ msgstr ""
msgid "No open glove"
msgstr ""
-#: Opcodes/pan2.c:43
+#: Opcodes/pan2.c:45
msgid "Unknown panning type"
msgstr ""
@@ -7286,192 +7164,196 @@ msgstr ""
msgid "partikkelsync: could not find opcode id"
msgstr "partikkelsync: couldn't find opcode id"
-#: Opcodes/physmod.c:121
+#: Opcodes/physmod.c:122
msgid "No table for Clarinet"
msgstr ""
-#: Opcodes/physmod.c:129
+#: Opcodes/physmod.c:130
msgid "No base frequency for clarinet -- assuming 50Hz\n"
msgstr ""
-#: Opcodes/physmod.c:283
+#: Opcodes/physmod.c:284
msgid "No table for Flute"
msgstr ""
-#: Opcodes/physmod.c:291
+#: Opcodes/physmod.c:292
msgid "No base frequency for flute -- assumed to be 50Hz\n"
msgstr ""
-#: Opcodes/physmod.c:481
+#: Opcodes/physmod.c:482
msgid "No table for wgbow vibrato"
msgstr ""
-#: Opcodes/physmod.c:689
+#: Opcodes/physmod.c:490
+msgid "unknown lowest frequency for bowed string -- assuming 50Hz\n"
+msgstr ""
+
+#: Opcodes/physmod.c:690
msgid "DlineA not initialised"
msgstr "DlineA not initialized"
-#: Opcodes/physmod.c:756
+#: Opcodes/physmod.c:757
msgid "No table for Brass"
msgstr ""
-#: Opcodes/physmod.c:765
+#: Opcodes/physmod.c:766
msgid "No base frequency for brass -- assumed to be 50Hz\n"
msgstr ""
-#: Opcodes/physutil.c:137 Opcodes/physutil.c:312 Opcodes/physutil.c:324
-#: Opcodes/physutil.c:345
+#: Opcodes/physutil.c:138 Opcodes/physutil.c:313 Opcodes/physutil.c:325
+#: Opcodes/physutil.c:346
msgid "negative rates not allowed!!, correcting\n"
msgstr ""
-#: Opcodes/physutil.c:186
+#: Opcodes/physutil.c:187
#, c-format
msgid "Envelope: value=%f target=%f rate=%f state=%d\n"
msgstr ""
-#: Opcodes/physutil.c:335
+#: Opcodes/physutil.c:336
msgid "Sustain level out of range!!, correcting\n"
msgstr ""
-#: Opcodes/physutil.c:356 Opcodes/physutil.c:366 Opcodes/physutil.c:376
+#: Opcodes/physutil.c:357 Opcodes/physutil.c:367 Opcodes/physutil.c:377
msgid "negative times not allowed!!, correcting\n"
msgstr ""
-#: Opcodes/pitch0.c:37
+#: Opcodes/pitch0.c:38
#, c-format
msgid "Muting new instances of instr %d\n"
msgstr ""
-#: Opcodes/pitch0.c:40
+#: Opcodes/pitch0.c:41
#, c-format
msgid "Allowing instrument %d to start\n"
msgstr ""
-#: Opcodes/pitch.c:84 Opcodes/spectra.c:78
+#: Opcodes/pitch.c:85 Opcodes/spectra.c:80
msgid "illegal iocts"
msgstr ""
-#: Opcodes/pitch.c:86 Opcodes/spectra.c:80
+#: Opcodes/pitch.c:87 Opcodes/spectra.c:82
msgid "illegal ifrqs"
msgstr ""
-#: Opcodes/pitch.c:180 Opcodes/spectra.c:584
+#: Opcodes/pitch.c:181 Opcodes/spectra.c:586
msgid "illegal no of partials"
msgstr ""
-#: Opcodes/pitch.c:205
+#: Opcodes/pitch.c:206
msgid "per octave rolloff too steep"
msgstr ""
-#: Opcodes/pitch.c:219 Opcodes/spectra.c:625
+#: Opcodes/pitch.c:220 Opcodes/spectra.c:627
msgid "illegal lo-hi values"
msgstr ""
-#: Opcodes/pitch.c:454
+#: Opcodes/pitch.c:455
msgid "pitch: not initialised"
msgstr "pitch: not initialized"
-#: Opcodes/pitch.c:463
+#: Opcodes/pitch.c:464
msgid "Must have even number of arguments in mac\n"
msgstr ""
-#: Opcodes/pitch.c:552
+#: Opcodes/pitch.c:553
msgid "clockread: clock still running, call clockoff first"
msgstr ""
-#: Opcodes/pitch.c:578
+#: Opcodes/pitch.c:579
msgid "adsynt: wavetable not found!"
msgstr ""
-#: Opcodes/pitch.c:591
+#: Opcodes/pitch.c:592
msgid "adsynt: freqtable not found!"
msgstr ""
-#: Opcodes/pitch.c:596
+#: Opcodes/pitch.c:597
msgid "adsynt: partial count is greater than freqtable size!"
msgstr ""
-#: Opcodes/pitch.c:604
+#: Opcodes/pitch.c:605
msgid "adsynt: amptable not found!"
msgstr ""
-#: Opcodes/pitch.c:609
+#: Opcodes/pitch.c:610
msgid "adsynt: partial count is greater than amptable size!"
msgstr ""
-#: Opcodes/pitch.c:640
+#: Opcodes/pitch.c:641
msgid "adsynt: not initialised"
msgstr "adsynt: not initialized"
-#: Opcodes/pitch.c:716
+#: Opcodes/pitch.c:717
msgid "hsboscil: not initialised"
msgstr "hsboscil: not initialized"
-#: Opcodes/pitch.c:799
+#: Opcodes/pitch.c:800
msgid "pitchamdf: maxcps must be > mincps !"
msgstr ""
-#: Opcodes/pitch.c:945
+#: Opcodes/pitch.c:946
msgid "pitchamdf: not initialised"
msgstr "pitchamdf: not initialized"
-#: Opcodes/pitch.c:1125 Opcodes/pitch.c:1152
+#: Opcodes/pitch.c:1126 Opcodes/pitch.c:1153
msgid "phasorbnk: not initialised"
msgstr "phasorbnk: not initialized"
-#: Opcodes/pitch.c:1214
+#: Opcodes/pitch.c:1215
msgid "pinkish: Invalid method code"
msgstr ""
-#: Opcodes/pitch.c:1225
+#: Opcodes/pitch.c:1226
msgid "pinkish: Filter method requires a-rate (noise) input"
msgstr ""
-#: Opcodes/pitch.c:1348
+#: Opcodes/pitch.c:1349
#, c-format
msgid ""
"pinkish: Gardner method requires 4-%d bands. Default %ld substituted for "
"%d.\n"
msgstr ""
-#: Opcodes/pitch.c:1731
+#: Opcodes/pitch.c:1733
msgid "Incorrect argument count in transeg"
msgstr ""
-#: Opcodes/pitch.c:1782
+#: Opcodes/pitch.c:1784
msgid "Incorrect argument count in transegb"
msgstr ""
-#: Opcodes/pitch.c:1832 Opcodes/pitch.c:1971
+#: Opcodes/pitch.c:1834 Opcodes/pitch.c:1977
msgid "Error: transeg not initialised (krate)\n"
msgstr "Error: transeg not initialized (krate)\n"
-#: Opcodes/pitch.c:1867 Opcodes/pitch.c:2013
+#: Opcodes/pitch.c:1869 Opcodes/pitch.c:2027
msgid "transeg: not initialised (arate)\n"
msgstr "transeg: not initialized (arate)\n"
-#: Opcodes/pitch.c:1921
+#: Opcodes/pitch.c:1924
msgid "Incorrect argument count in transegr"
msgstr ""
-#: Opcodes/pitch.c:2269
+#: Opcodes/pitch.c:2294
msgid "median: not initialised (arate)\n"
msgstr "median: not initialized (arate)\n"
-#: Opcodes/pitch.c:2273 Opcodes/pitch.c:2321
+#: Opcodes/pitch.c:2298 Opcodes/pitch.c:2345
#, c-format
msgid "median: window (%d)larger than maximum(%d); truncated"
msgstr ""
-#: Opcodes/pitch.c:2317
+#: Opcodes/pitch.c:2341
msgid "median: not initialised (krate)\n"
msgstr "median: not initialized (krate)\n"
-#: Opcodes/pitchtrack.c:369
+#: Opcodes/pitchtrack.c:370
#, c-format
msgid "ptrack: FFT size out of range; using %d\n"
msgstr ""
-#: Opcodes/pitchtrack.c:382
+#: Opcodes/pitchtrack.c:383
#, c-format
msgid "ptrack: FFT size not a power of 2; using %d\n"
msgstr ""
@@ -7489,7 +7371,7 @@ msgstr ""
msgid "Error: %s, %s"
msgstr ""
-#: Opcodes/ppp.c:20 Opcodes/pvlock.c:454 Opcodes/pvsband.c:46
+#: Opcodes/ppp.c:20 Opcodes/pvlock.c:478 Opcodes/pvsband.c:46
#: Opcodes/pvsbasic.c:575 Opcodes/pvsbasic.c:880 Opcodes/pvsbasic.c:1080
#: Opcodes/pvsbasic.c:1180 Opcodes/pvsbasic.c:1395 Opcodes/pvsbasic.c:1593
#: Opcodes/pvsbasic.c:1756 Opcodes/pvslock.c:20
@@ -7508,62 +7390,62 @@ msgstr ""
msgid "psynth: function table not found\n"
msgstr ""
-#: Opcodes/psynth.c:569 Opcodes/psynth.c:662
+#: Opcodes/psynth.c:567 Opcodes/psynth.c:660
msgid "Input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:767
+#: Opcodes/psynth.c:765
msgid "trsplit: input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:863 Opcodes/psynth.c:1027
+#: Opcodes/psynth.c:861 Opcodes/psynth.c:1023
msgid "trmix: first input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:868 Opcodes/psynth.c:1032
+#: Opcodes/psynth.c:866 Opcodes/psynth.c:1028
msgid "trmix: second input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:943
+#: Opcodes/psynth.c:939
msgid "trfil: input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:948
+#: Opcodes/psynth.c:944
msgid "trfil: could not find function table\n"
msgstr "trfil: couldn't find function table\n"
-#: Opcodes/psynth.c:1135
+#: Opcodes/psynth.c:1131
msgid "binit: first input not in TRACKS format\n"
msgstr ""
-#: Opcodes/pvadd.c:153
+#: Opcodes/pvadd.c:150
msgid "PVADD ktimpnt truncated to last frame"
msgstr ""
-#: Opcodes/pvadd.c:191
+#: Opcodes/pvadd.c:188
msgid "pvadd: not initialised"
msgstr "pvadd: not initialized"
-#: Opcodes/pvadd.c:193
+#: Opcodes/pvadd.c:190
msgid "PVADD timpnt < 0"
msgstr ""
-#: Opcodes/pvadd.c:201
+#: Opcodes/pvadd.c:198
#, c-format
msgid "PVADD cannot load %s"
msgstr "PVADD can't load %s"
-#: Opcodes/pvadd.c:205 Opcodes/ugens8.c:223
+#: Opcodes/pvadd.c:202 Opcodes/ugens8.c:223
#, c-format
msgid "pvoc-ex file %s: FFT size %d too large for Csound"
msgstr ""
-#: Opcodes/pvadd.c:210
+#: Opcodes/pvadd.c:207
#, c-format
msgid "PV frame %ld seems too small in %s"
msgstr ""
-#: Opcodes/pvadd.c:215 Opcodes/pvread.c:115 Opcodes/ugens8.c:229
+#: Opcodes/pvadd.c:212 Opcodes/pvread.c:115 Opcodes/ugens8.c:229
#, c-format
msgid "pvoc-ex file %s is not mono"
msgstr ""
@@ -7573,97 +7455,97 @@ msgstr ""
msgid "PVBUFREAD cannot load %s"
msgstr "PVBUFREAD can't load %s"
-#: Opcodes/pvinterp.c:76 Opcodes/vpvoc.c:206
+#: Opcodes/pvinterp.c:76 Opcodes/vpvoc.c:207
#, c-format
msgid "PVOC frame %ld bigger than %ld in %s"
msgstr ""
-#: Opcodes/pvinterp.c:81 Opcodes/vpvoc.c:211
+#: Opcodes/pvinterp.c:81 Opcodes/vpvoc.c:212
#, c-format
msgid "PVOC frame %ld seems too small in %s"
msgstr ""
-#: Opcodes/pvinterp.c:85 Opcodes/pvinterp.c:184 Opcodes/pvinterp.c:356
-#: Opcodes/vpvoc.c:215
+#: Opcodes/pvinterp.c:85 Opcodes/pvinterp.c:183 Opcodes/pvinterp.c:354
+#: Opcodes/vpvoc.c:216
#, c-format
msgid "%d chans (not 1) in PVOC file %s"
msgstr ""
-#: Opcodes/pvinterp.c:101 Opcodes/pvinterp.c:212 Opcodes/pvinterp.c:382
+#: Opcodes/pvinterp.c:100 Opcodes/pvinterp.c:210 Opcodes/pvinterp.c:379
#: Opcodes/ugens8.c:95 Opcodes/vpvoc.c:244
#, c-format
msgid "ksmps of %d needs wdw of %d, max is %d for pv %s"
msgstr ""
-#: Opcodes/pvinterp.c:122 Opcodes/pvinterp.c:256 Opcodes/pvinterp.c:431
+#: Opcodes/pvinterp.c:121 Opcodes/pvinterp.c:254 Opcodes/pvinterp.c:428
#: Opcodes/pvread.c:95 Opcodes/ugens8.c:156 Opcodes/vpvoc.c:297
msgid "PVOC ktimpnt truncated to last frame"
msgstr ""
-#: Opcodes/pvinterp.c:130
+#: Opcodes/pvinterp.c:129
msgid "pvbufread: not initialised"
msgstr "pvbufread: not initialized"
-#: Opcodes/pvinterp.c:132 Opcodes/pvinterp.c:306 Opcodes/pvinterp.c:492
+#: Opcodes/pvinterp.c:131 Opcodes/pvinterp.c:304 Opcodes/pvinterp.c:489
#: Opcodes/pvread.c:103 Opcodes/ugens8.c:206 Opcodes/vpvoc.c:361
msgid "PVOC timpnt < 0"
msgstr ""
-#: Opcodes/pvinterp.c:149
+#: Opcodes/pvinterp.c:148
msgid "pvinterp: associated pvbufread not found"
msgstr ""
-#: Opcodes/pvinterp.c:166
+#: Opcodes/pvinterp.c:165
#, c-format
msgid "PVINTERP cannot load %s"
msgstr "PVINTERP can't load %s"
-#: Opcodes/pvinterp.c:179
+#: Opcodes/pvinterp.c:178
#, c-format
msgid "pvinterp: %s: frame size %d does not match pvbufread frame size %d\n"
msgstr "pvinterp: %s: frame size %d doesn't match pvbufread frame size %d\n"
-#: Opcodes/pvinterp.c:300
+#: Opcodes/pvinterp.c:298
msgid "pvinterp: not initialised"
msgstr "pvinterp: not initialized"
-#: Opcodes/pvinterp.c:302 Opcodes/pvinterp.c:488 Opcodes/ugens8.c:202
+#: Opcodes/pvinterp.c:300 Opcodes/pvinterp.c:485 Opcodes/ugens8.c:202
#: Opcodes/vpvoc.c:357
msgid "PVOC transpose too low"
msgstr ""
-#: Opcodes/pvinterp.c:304 Opcodes/pvinterp.c:490 Opcodes/ugens8.c:204
+#: Opcodes/pvinterp.c:302 Opcodes/pvinterp.c:487 Opcodes/ugens8.c:204
#: Opcodes/vpvoc.c:359
msgid "PVOC transpose too high"
msgstr ""
-#: Opcodes/pvinterp.c:323
+#: Opcodes/pvinterp.c:321
msgid "pvcross: associated pvbufread not found"
msgstr ""
-#: Opcodes/pvinterp.c:339
+#: Opcodes/pvinterp.c:337
#, c-format
msgid "PVCROSS cannot load %s"
msgstr "PVCROSS can't load %s"
-#: Opcodes/pvinterp.c:351
+#: Opcodes/pvinterp.c:349
#, c-format
msgid "pvcross: %s: frame size %d does not match pvbufread frame size %d\n"
msgstr "pvcross: %s: frame size %d doesn't match pvbufread frame size %d\n"
-#: Opcodes/pvinterp.c:454 Opcodes/vpvoc.c:322
+#: Opcodes/pvinterp.c:451 Opcodes/vpvoc.c:322
msgid "PVOC debug: one frame gets through\n"
msgstr ""
-#: Opcodes/pvinterp.c:486
+#: Opcodes/pvinterp.c:483
msgid "pvcross: not initialised"
msgstr "pvcross: not initialized"
-#: Opcodes/pvlock.c:35 Opcodes/pvsbasic.c:380
+#: Opcodes/pvlock.c:59 Opcodes/pvsbasic.c:380
msgid "invalid number of output arguments"
msgstr ""
-#: Opcodes/pvlock.c:466
+#: Opcodes/pvlock.c:490
msgid "pvsfreeze: signal format must be amp-freq."
msgstr ""
@@ -7770,29 +7652,33 @@ msgstr "pvstencil: not initialized"
msgid "pvs2tab: signal format must be amp-phase or amp-freq."
msgstr ""
-#: Opcodes/pvsbasic.c:2151 Opcodes/pvsbasic.c:2190 Opcodes/tabvars.c:53
-#: Opcodes/tabvars.c:89 Opcodes/tabvars.c:131 Opcodes/tabvars.c:176
-#: Opcodes/tabvars.c:178
-#, fuzzy
+#: Opcodes/pvsbasic.c:2151 Opcodes/pvsbasic.c:2189 Opcodes/tabvars.c:56
+#: Opcodes/tabvars.c:92 Opcodes/tabvars.c:134 Opcodes/tabvars.c:179
+#: Opcodes/tabvars.c:181
msgid "t-variable not initialised"
-msgstr "table: not initialized"
+msgstr "t-variable not initialized"
-#: Opcodes/pvsbuffer.c:53 Opcodes/pvscent.c:164 Opcodes/pvsdemix.c:49
+#: Opcodes/pvsbuffer.c:56 Opcodes/pvscent.c:164 Opcodes/pvsdemix.c:49
msgid "SDFT case not implemented yet"
msgstr ""
-#: Opcodes/pvsbuffer.c:85
+#: Opcodes/pvsbuffer.c:89
msgid "error... could not create global var for handle\n"
msgstr "error... couldn't create global var for handle\n"
-#: Opcodes/pvsbuffer.c:143 Opcodes/pvsbuffer.c:190 Opcodes/pvsbuffer.c:258
+#: Opcodes/pvsbuffer.c:148 Opcodes/pvsbuffer.c:197 Opcodes/pvsbuffer.c:266
msgid "error... could not read handle from global variable\n"
msgstr "error... couldn't read handle from global variable\n"
-#: Opcodes/pvsbuffer.c:238 Opcodes/pvsbuffer.c:306
+#: Opcodes/pvsbuffer.c:246 Opcodes/pvsbuffer.c:316
msgid "Invalid buffer handle"
msgstr ""
+#: Opcodes/pvsbuffer.c:285 Opcodes/pvsbuffer.c:291
+#, c-format
+msgid "table length too small: needed %d, got %d\n"
+msgstr ""
+
#: Opcodes/pvscent.c:42
msgid "pvscent: format must be amp-phase or amp-freq.\n"
msgstr ""
@@ -7981,48 +7867,48 @@ msgstr ""
msgid "seqtim: incorrect table number"
msgstr ""
-#: Opcodes/sfont.c:118
+#: Opcodes/sfont.c:121
#, c-format
msgid "sfload: cannot open SoundFont file \"%s\" (error %s)"
msgstr "sfload: can't open SoundFont file \"%s\" (error %s)"
-#: Opcodes/sfont.c:123
+#: Opcodes/sfont.c:126
msgid "Sfload: cannot use globals"
msgstr "Sfload: can't use globals"
-#: Opcodes/sfont.c:153
+#: Opcodes/sfont.c:156
msgid "sfload: could not open globals\n"
msgstr "Sfload: can't open globals\n"
-#: Opcodes/sfont.c:170
+#: Opcodes/sfont.c:173
msgid "Extending soundfonts"
msgstr ""
-#: Opcodes/sfont.c:201
+#: Opcodes/sfont.c:204
#, c-format
msgid ""
"\n"
"Preset list of \"%s\"\n"
msgstr ""
-#: Opcodes/sfont.c:204
+#: Opcodes/sfont.c:207
#, c-format
msgid "%3d) %-20s\tprog:%-3d bank:%d\n"
msgstr ""
-#: Opcodes/sfont.c:226
+#: Opcodes/sfont.c:229
#, c-format
msgid ""
"\n"
"Assigning all Presets of \"%s\" starting from %d (preset handle number)\n"
msgstr ""
-#: Opcodes/sfont.c:231
+#: Opcodes/sfont.c:234
#, c-format
msgid "%3d<--%-20s\t(prog:%-3d bank:%d)\n"
msgstr ""
-#: Opcodes/sfont.c:238
+#: Opcodes/sfont.c:241
#, c-format
msgid ""
"\n"
@@ -8030,19 +7916,19 @@ msgid ""
"\n"
msgstr ""
-#: Opcodes/sfont.c:251
+#: Opcodes/sfont.c:254
#, c-format
msgid ""
"\n"
"Instrument list of \"%s\"\n"
msgstr ""
-#: Opcodes/sfont.c:268
+#: Opcodes/sfont.c:271
#, c-format
msgid "sfpreset: preset handle too big (%d), max: %d"
msgstr ""
-#: Opcodes/sfont.c:284
+#: Opcodes/sfont.c:287
#, c-format
msgid ""
"sfpreset: cannot find any preset having prog number %d and bank number %d in "
@@ -8051,19 +7937,19 @@ msgstr ""
"sfpreset: can't find any preset having prog number %d and bank number %d in "
"SoundFont file \"%s\""
-#: Opcodes/sfont.c:306 Opcodes/sfont.c:2189
+#: Opcodes/sfont.c:309 Opcodes/sfont.c:2192
msgid "sfplay: invalid or out-of-range preset number"
msgstr ""
-#: Opcodes/sfont.c:633
+#: Opcodes/sfont.c:636
msgid "sfplaym: invalid or out-of-range preset number"
msgstr ""
-#: Opcodes/sfont.c:888 Opcodes/sfont.c:1150
+#: Opcodes/sfont.c:891 Opcodes/sfont.c:1153
msgid "sfinstr: instrument out of range"
msgstr ""
-#: Opcodes/sfont.c:1598 Opcodes/sfont.c:1835
+#: Opcodes/sfont.c:1601 Opcodes/sfont.c:1838
#, c-format
msgid ""
"SoundFont file \"%s\" contains ROM samples !\n"
@@ -8071,19 +7957,19 @@ msgid ""
"Session aborted !"
msgstr ""
-#: Opcodes/sfont.c:1987 Opcodes/sfont.c:1993
+#: Opcodes/sfont.c:1990 Opcodes/sfont.c:1996
msgid "Sfont: cannot use globals/"
msgstr "Sfont: can't use globals/"
-#: Opcodes/sfont.c:1996
+#: Opcodes/sfont.c:1999
msgid "Sfont format not compatible"
msgstr ""
-#: Opcodes/sfont.c:2534
+#: Opcodes/sfont.c:2537
msgid "error... could not create sfont globals\n"
msgstr "error... couldn't create sfont globals\n"
-#: Opcodes/shape.c:49
+#: Opcodes/shape.c:51
msgid "powershape: ifullscale must be strictly positive"
msgstr ""
@@ -8095,25 +7981,25 @@ msgstr ""
msgid "ftgenonce error"
msgstr ""
-#: Opcodes/singwave.c:85
+#: Opcodes/singwave.c:86
msgid "No table for Modulatr"
msgstr ""
-#: Opcodes/singwave.c:127
+#: Opcodes/singwave.c:128
msgid "No table for Singwave"
msgstr ""
-#: Opcodes/singwave.c:207
+#: Opcodes/singwave.c:208
#, c-format
msgid "SingWave: rate=%f sweepRate=%f mytime=%f\n"
msgstr ""
-#: Opcodes/singwave.c:273
+#: Opcodes/singwave.c:280
#, c-format
msgid "Found Formant: %s (number %i)\n"
msgstr ""
-#: Opcodes/singwave.c:395
+#: Opcodes/singwave.c:397
#, c-format
msgid "Setting Phoneme: %d %f\n"
msgstr ""
@@ -8146,15 +8032,15 @@ msgstr ""
msgid "pvsarp: not initialised\n"
msgstr "pvsarp: not initialized\n"
-#: Opcodes/sndloop.c:995 Opcodes/sndloop.c:1092
+#: Opcodes/sndloop.c:995 Opcodes/sndloop.c:1091
msgid "signal format must be amp-phase or amp-freq.\n"
msgstr ""
-#: Opcodes/sndloop.c:1072
+#: Opcodes/sndloop.c:1071
msgid "pvsvoc: not initialised\n"
msgstr "pvsvoc: not initialized\n"
-#: Opcodes/sndloop.c:1123
+#: Opcodes/sndloop.c:1122
msgid "pvsmorph: not initialised\n"
msgstr "pvsmorph: not initialized\n"
@@ -8174,25 +8060,27 @@ msgstr ""
msgid "sndwarpst: not initialised"
msgstr "sndwarpst: not initialized"
-#: Opcodes/sockrecv.c:123 Opcodes/sockrecv.c:213 Opcodes/sockrecv.c:300
-#: Opcodes/socksend.c:75 Opcodes/socksend.c:133 Opcodes/socksend.c:190
-msgid "creating socket"
+#: Opcodes/sockrecv.c:117 Opcodes/sockrecv.c:215 Opcodes/sockrecv.c:314
+#: Opcodes/socksend.c:73 Opcodes/socksend.c:157 Opcodes/socksend.c:252
+#, c-format
+msgid "Winsock2 failed to start: %d"
msgstr ""
-#: Opcodes/sockrecv.c:322
-msgid "connect failed"
+#: Opcodes/sockrecv.c:131 Opcodes/sockrecv.c:227 Opcodes/sockrecv.c:320
+#: Opcodes/socksend.c:86 Opcodes/socksend.c:171 Opcodes/socksend.c:259
+msgid "creating socket"
msgstr ""
-#: Opcodes/sockrecv.c:335
-msgid "read from socket failed"
+#: Opcodes/sockrecv.c:347
+#, c-format
+msgid "connect failed (%d)"
msgstr ""
-#: Opcodes/socksend.c:67 Opcodes/socksend.c:125
-#, c-format
-msgid "The buffersize must be <= %d samples to fit in a udp-packet."
+#: Opcodes/sockrecv.c:360
+msgid "read from socket failed"
msgstr ""
-#: Opcodes/socksend.c:107 Opcodes/socksend.c:169
+#: Opcodes/socksend.c:126 Opcodes/socksend.c:215
msgid "sendto failed"
msgstr ""
@@ -8212,199 +8100,199 @@ msgstr "spat3d: not initialized"
msgid "spat3di: not initialised"
msgstr "spat3di: not initialized"
-#: Opcodes/spectra.c:82
+#: Opcodes/spectra.c:84
msgid "illegal Q value"
msgstr ""
-#: Opcodes/spectra.c:84
+#: Opcodes/spectra.c:86
msgid "unknown dbout code"
msgstr ""
-#: Opcodes/spectra.c:104
+#: Opcodes/spectra.c:106
#, c-format
msgid "spectrum: %s window, %s out, making tables ...\n"
msgstr ""
-#: Opcodes/spectra.c:123
+#: Opcodes/spectra.c:125
#, c-format
msgid ""
"\thigh cps %7.1f\n"
"\t low cps %7.1f\n"
msgstr ""
-#: Opcodes/spectra.c:138
+#: Opcodes/spectra.c:140
#, c-format
msgid "\tQ %4.1f uses a %d sample window each octdown\n"
msgstr ""
-#: Opcodes/spectra.c:169
+#: Opcodes/spectra.c:171
msgid "spectrum windowed sines:"
msgstr ""
-#: Opcodes/spectra.c:187
+#: Opcodes/spectra.c:189
#, c-format
msgid "\t%d oct analysis window delay = %ld samples (%d msecs)\n"
msgstr ""
-#: Opcodes/spectra.c:195
+#: Opcodes/spectra.c:197
msgid "octdown buffers:"
msgstr ""
-#: Opcodes/spectra.c:513 Opcodes/spectra.c:553
+#: Opcodes/spectra.c:515 Opcodes/spectra.c:555
msgid "specdisp: not initialised"
msgstr "specdisp: not initialized"
-#: Opcodes/spectra.c:523
+#: Opcodes/spectra.c:525
#, c-format
msgid "instr %d %s, dft (%s), %ld octaves (%d - %d Hz):"
msgstr ""
-#: Opcodes/spectra.c:530
+#: Opcodes/spectra.c:532
#, c-format
msgid "instr %d %s, dft (%s), %ld octaves (%3.1f - %3.1f Hz):"
msgstr ""
-#: Opcodes/spectra.c:611
+#: Opcodes/spectra.c:613
msgid "per oct rolloff too steep"
msgstr ""
-#: Opcodes/spectra.c:632
+#: Opcodes/spectra.c:634
#, c-format
msgid "specptrk: %d freqs, %d%s ptls at "
msgstr ""
-#: Opcodes/spectra.c:633
+#: Opcodes/spectra.c:635
msgid " odd"
msgstr ""
-#: Opcodes/spectra.c:637
+#: Opcodes/spectra.c:639
msgid ""
"\n"
"\t\trolloff vals:"
msgstr ""
-#: Opcodes/spectra.c:660
+#: Opcodes/spectra.c:662
#, c-format
msgid ""
"\n"
"\tdbthresh %4.1f: X-corr %s threshon %4.1f, threshoff %4.1f\n"
msgstr ""
-#: Opcodes/spectra.c:817
+#: Opcodes/spectra.c:819
msgid "specptrk: not initialised"
msgstr "specptrk: not initialized"
-#: Opcodes/spectra.c:849
+#: Opcodes/spectra.c:851
msgid "specsum: not initialised"
msgstr "specsum: not initialized"
-#: Opcodes/spectra.c:860
+#: Opcodes/spectra.c:862
msgid "inputs have different sizes"
msgstr ""
-#: Opcodes/spectra.c:863
+#: Opcodes/spectra.c:865
msgid "inputs have diff. time periods"
msgstr ""
-#: Opcodes/spectra.c:867
+#: Opcodes/spectra.c:869
msgid "inputs have different freq resolution"
msgstr ""
-#: Opcodes/spectra.c:870
+#: Opcodes/spectra.c:872
msgid "inputs have different amptypes"
msgstr ""
-#: Opcodes/spectra.c:902
+#: Opcodes/spectra.c:904
msgid "specaddm: not initialised"
msgstr "specaddm: not initialized"
-#: Opcodes/spectra.c:926
+#: Opcodes/spectra.c:928
msgid "specdiff: local buffers not initialised"
msgstr "specdiff: local buffers not initialized"
-#: Opcodes/spectra.c:964
+#: Opcodes/spectra.c:966
msgid "specdiff: not initialised"
msgstr "specdiff: not initialized"
-#: Opcodes/spectra.c:986
+#: Opcodes/spectra.c:988
msgid "specscal: local buffer not initialised"
msgstr "specscal: local buffer not initialized"
-#: Opcodes/spectra.c:991
+#: Opcodes/spectra.c:993
msgid "missing fscale table"
msgstr ""
-#: Opcodes/spectra.c:1057
+#: Opcodes/spectra.c:1059
msgid "specscal: not initialised"
msgstr "specscal: not initialized"
-#: Opcodes/spectra.c:1081
+#: Opcodes/spectra.c:1083
msgid "spechist: local buffers not intiialised"
msgstr ""
-#: Opcodes/spectra.c:1113
+#: Opcodes/spectra.c:1115
msgid "spechist: not initialised"
msgstr "spechist: not initialized"
-#: Opcodes/spectra.c:1134
+#: Opcodes/spectra.c:1136
msgid "specfilt: local buffers not initialised"
msgstr "specfilt: local buffers not initialized"
-#: Opcodes/spectra.c:1142
+#: Opcodes/spectra.c:1144
msgid "missing htim ftable"
msgstr ""
-#: Opcodes/spectra.c:1165
+#: Opcodes/spectra.c:1167
msgid "htim ftable must be all-positive"
msgstr ""
-#: Opcodes/spectra.c:1169
+#: Opcodes/spectra.c:1171
#, c-format
msgid "coef range: %6.3f - %6.3f\n"
msgstr ""
-#: Opcodes/spectra.c:1201
+#: Opcodes/spectra.c:1203
msgid "specfilt: not initialised"
msgstr "specfilt: not initialized"
-#: Opcodes/stackops.c:80
+#: Opcodes/stackops.c:81
msgid "fsig = : source signal is not initialised"
msgstr "fsig = : source signal is not initialized"
-#: Opcodes/stackops.c:126
+#: Opcodes/stackops.c:125
msgid "stack overflow"
msgstr ""
-#: Opcodes/stackops.c:134
+#: Opcodes/stackops.c:131
msgid "cannot pop from empty stack"
msgstr "can't pop from empty stack"
-#: Opcodes/stackops.c:142
+#: Opcodes/stackops.c:137
msgid "argument number or type mismatch"
msgstr ""
-#: Opcodes/stackops.c:150
+#: Opcodes/stackops.c:143
msgid "string argument is too long"
msgstr ""
-#: Opcodes/stackops.c:167
+#: Opcodes/stackops.c:160
msgid "Error allocating argument stack"
msgstr ""
-#: Opcodes/stackops.c:207 Top/argdecode.c:1212 util/envext.c:99
+#: Opcodes/stackops.c:200 Top/argdecode.c:1212 util/envext.c:99
#: util/scale.c:248
msgid "too many arguments"
msgstr ""
-#: Opcodes/stackops.c:286
+#: Opcodes/stackops.c:279
msgid "the stack is already allocated"
msgstr ""
-#: Opcodes/stackops.c:637
+#: Opcodes/stackops.c:630
msgid "number of arguments != nchnls"
msgstr ""
-#: Opcodes/stdopcod.c:36
+#: Opcodes/stdopcod.c:37
msgid "stdopcod.c: error: globals already allocated"
msgstr ""
@@ -8419,35 +8307,43 @@ msgstr ""
msgid "RAWWAVE_PATH: %s\n"
msgstr ""
-#: Opcodes/syncgrain.c:175 Opcodes/syncgrain.c:338 Opcodes/syncgrain.c:683
+#: Opcodes/syncgrain.c:176 Opcodes/syncgrain.c:339 Opcodes/syncgrain.c:684
msgid "grain size smaller than 1 sample\n"
msgstr ""
-#: Opcodes/syncgrain.c:387
+#: Opcodes/syncgrain.c:388
msgid "diskgrain: invalid number of channels"
msgstr ""
-#: Opcodes/syncgrain.c:419
+#: Opcodes/syncgrain.c:420
msgid "diskgrain: could not open file\n"
msgstr "diskgrain: couldn't open file\n"
-#: Opcodes/syncgrain.c:423
+#: Opcodes/syncgrain.c:424
msgid ""
"diskgrain: soundfile channel numbers do not match the number of outputs \n"
msgstr ""
-#: Opcodes/syncgrain.c:435
+#: Opcodes/syncgrain.c:436
msgid "diskgrain: could not read file \n"
msgstr "diskgrain: couldn't read file \n"
-#: Opcodes/tabsum.c:39
+#: Opcodes/tabsum.c:40
msgid "tabsum: No table"
msgstr "tabsum: No table"
-#: Opcodes/tabsum.c:54
+#: Opcodes/tabsum.c:55
msgid "tabsum: Not initialised"
msgstr "tabsum: not initialized"
+#: Opcodes/tabvars.c:201 Opcodes/tabvars.c:218
+msgid "t-var not initialised"
+msgstr "t-var not initialized"
+
+#: Opcodes/tabvars.c:203 Opcodes/tabvars.c:220
+msgid "No table for copy2ftab"
+msgstr ""
+
#: Opcodes/ugens7.c:46 Opcodes/ugensa.c:49
msgid "illegal value for iolaps"
msgstr ""
@@ -8593,17 +8489,17 @@ msgstr ""
msgid "table in iftfn for ftmorf does not exist"
msgstr "table in iftfn for ftmorf doesn't exist"
-#: Opcodes/ugnorman.c:120
+#: Opcodes/ugnorman.c:121
#, c-format
msgid "%s: Ats file %s not read (does it exist?)"
msgstr ""
-#: Opcodes/ugnorman.c:131
+#: Opcodes/ugnorman.c:132
#, c-format
msgid "%s: either %s is not an ATS file or the byte endianness is wrong"
msgstr ""
-#: Opcodes/ugnorman.c:139
+#: Opcodes/ugnorman.c:140
#, c-format
msgid ""
"%s: %s is byte-swapped\n"
@@ -8611,125 +8507,125 @@ msgid ""
"\twill not result in different audio, but they may slow down processing."
msgstr ""
-#: Opcodes/ugnorman.c:175
+#: Opcodes/ugnorman.c:176
msgid ""
"ATSINFO: location is out of bounds: 0-8 are the only possible selections"
msgstr ""
-#: Opcodes/ugnorman.c:265
+#: Opcodes/ugnorman.c:266
#, c-format
msgid "ATSREAD: partial %i out of range, max allowed is %i"
msgstr ""
-#: Opcodes/ugnorman.c:291
+#: Opcodes/ugnorman.c:292
msgid "Type not implemented"
msgstr ""
-#: Opcodes/ugnorman.c:310
+#: Opcodes/ugnorman.c:311
msgid "ATSREAD: only positive time pointer values allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:319
+#: Opcodes/ugnorman.c:320
msgid "ATSREAD: timepointer out of range, truncated to last frame\n"
msgstr ""
-#: Opcodes/ugnorman.c:332
+#: Opcodes/ugnorman.c:333
msgid "ATSREAD: not initialised"
msgstr "ATSREAD: not initialized"
-#: Opcodes/ugnorman.c:394
+#: Opcodes/ugnorman.c:395
#, c-format
msgid "ATSREADNZ: band %i out of range, 1-25 are the valid band values"
msgstr ""
-#: Opcodes/ugnorman.c:412
+#: Opcodes/ugnorman.c:413
msgid "ATSREADNZ: Type either not implemented or does not contain noise"
msgstr "ATSREADNZ: Type either not implemented or doesn't contain noise"
-#: Opcodes/ugnorman.c:431
+#: Opcodes/ugnorman.c:432
msgid "ATSREADNZ: only positive time pointer values allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:440
+#: Opcodes/ugnorman.c:441
msgid "ATSREADNZ: timepointer out of range, truncated to last frame\n"
msgstr ""
-#: Opcodes/ugnorman.c:449
+#: Opcodes/ugnorman.c:450
msgid "ATSREADNZ: not initialised"
msgstr "ATSREADNZ: not initialized"
-#: Opcodes/ugnorman.c:467
+#: Opcodes/ugnorman.c:468
msgid "ATSADD: Function table number for synthesis waveform not valid"
msgstr ""
-#: Opcodes/ugnorman.c:475
+#: Opcodes/ugnorman.c:476
msgid "ATSADD: Gate Function table number not valid"
msgstr ""
-#: Opcodes/ugnorman.c:521
+#: Opcodes/ugnorman.c:522
#, c-format
msgid "ATSADD: Partial(s) out of range, max partial allowed is %i"
msgstr ""
-#: Opcodes/ugnorman.c:555
+#: Opcodes/ugnorman.c:556
msgid "ATSADD: Type not implemented"
msgstr ""
-#: Opcodes/ugnorman.c:585
+#: Opcodes/ugnorman.c:586
msgid ""
"ATSADD: only positive time pointer values are allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:594
+#: Opcodes/ugnorman.c:595
msgid "ATSADD: time pointer out of range, truncating to last frame\n"
msgstr ""
-#: Opcodes/ugnorman.c:638
+#: Opcodes/ugnorman.c:639
msgid "ATSADD: not initialised"
msgstr "ATSADD: not initialized"
-#: Opcodes/ugnorman.c:842
+#: Opcodes/ugnorman.c:845
msgid "ATSADDNZ: This file type contains no noise"
msgstr ""
-#: Opcodes/ugnorman.c:846
+#: Opcodes/ugnorman.c:849
msgid "ATSADDNZ: This file type has not been implemented in this code yet."
msgstr ""
-#: Opcodes/ugnorman.c:869
+#: Opcodes/ugnorman.c:872
msgid "ATSADDNZ: Band(s) out of range, max band allowed is 25"
msgstr ""
-#: Opcodes/ugnorman.c:886
+#: Opcodes/ugnorman.c:889
msgid ""
"ATSADDNZ: Type either has no noise or is not implemented (only type 3 and 4 "
"work now)"
msgstr ""
-#: Opcodes/ugnorman.c:1002
+#: Opcodes/ugnorman.c:1005
msgid ""
"ATSADDNZ: only positive time pointer values are allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:1011
+#: Opcodes/ugnorman.c:1014
msgid "ATSADDNZ: time pointer out of range, truncating to last frame\n"
msgstr ""
-#: Opcodes/ugnorman.c:1165
+#: Opcodes/ugnorman.c:1168
#, c-format
msgid "ATSSINNOI: Partial(s) out of range, max partial allowed is %i"
msgstr ""
-#: Opcodes/ugnorman.c:1202
+#: Opcodes/ugnorman.c:1205
msgid "ATSSINNOI: Type not implemented"
msgstr ""
-#: Opcodes/ugnorman.c:1315
+#: Opcodes/ugnorman.c:1316
msgid ""
"ATSSINNOI: only positive time pointer values are allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:1324
+#: Opcodes/ugnorman.c:1325
msgid "ATSSINNOI: time pointer out of range, truncating to last frame\n"
msgstr ""
@@ -8802,44 +8698,44 @@ msgstr ""
msgid "ATSCROSS: you must have an atsbufread before an atsinterpread"
msgstr ""
-#: Opcodes/ugsc.c:394
+#: Opcodes/ugsc.c:390
msgid "Phaser mode must be either 1 or 2"
msgstr ""
-#: Opcodes/vbap.c:57
+#: Opcodes/vbap.c:59
msgid "vbap: error allocating loudspeaker table"
msgstr ""
-#: Opcodes/vbap.c:264
+#: Opcodes/vbap.c:266
msgid ""
"Number of loudspeakers is zero\n"
"Exiting"
msgstr ""
-#: Opcodes/vbap.c:573
+#: Opcodes/vbap.c:575
msgid "Error in loudspeaker dimension."
msgstr ""
-#: Opcodes/vbap.c:596
+#: Opcodes/vbap.c:598
msgid "Too few loudspeakers"
msgstr ""
-#: Opcodes/vbap.c:622
+#: Opcodes/vbap.c:624
msgid "Not valid 3-D configuration"
msgstr ""
-#: Opcodes/vbap.c:668 Opcodes/vbap.c:767
+#: Opcodes/vbap.c:670 Opcodes/vbap.c:769
msgid ""
"\n"
"Configured loudspeakers\n"
msgstr ""
-#: Opcodes/vbap.c:670
+#: Opcodes/vbap.c:672
#, c-format
msgid "Triplet %d Loudspeakers: "
msgstr ""
-#: Opcodes/vbap.c:769
+#: Opcodes/vbap.c:771
#, c-format
msgid "Pair %d Loudspeakers: "
msgstr ""
@@ -8921,41 +8817,33 @@ msgstr ""
msgid "Have to have at least %d directions in vbapzmove"
msgstr ""
-#: Opcodes/Vosim.c:49
+#: Opcodes/Vosim.c:51
msgid "vosim: pulse table not found"
msgstr ""
-#: Opcodes/Vosim.c:72
+#: Opcodes/Vosim.c:74
msgid "vosim: zero kfund. 'Infinite' length event generated."
msgstr ""
-#: Opcodes/Vosim.c:80
+#: Opcodes/Vosim.c:82
#, c-format
msgid "vosim: kfund (%f) > sr. Generating ksmps silence."
msgstr ""
-#: Opcodes/Vosim.c:158
+#: Opcodes/Vosim.c:160
msgid "vosim: not initialised"
msgstr "vosim: not initialized"
-#: Opcodes/vpvoc.c:118
-msgid "tableseg: not initialised"
-msgstr "tableseg: not initialized"
-
-#: Opcodes/vpvoc.c:146
-msgid "tablexseg: not initialised"
-msgstr "tablexseg: not initialized"
-
-#: Opcodes/vpvoc.c:172
+#: Opcodes/vpvoc.c:173
#, c-format
msgid "vpvoc: Could not find ifnmagctrl table %f"
msgstr "vpvoc: Couldn't find ifnmagctrl table %f"
-#: Opcodes/vpvoc.c:178
+#: Opcodes/vpvoc.c:179
msgid "vpvoc: associated tableseg not found"
msgstr ""
-#: Opcodes/vpvoc.c:194
+#: Opcodes/vpvoc.c:195
#, c-format
msgid "VPVOC cannot load %s"
msgstr "VPVOC can't load %s"
@@ -9072,47 +8960,47 @@ msgstr ""
msgid "-B N\tsamples per hardware sound I/O buffer"
msgstr ""
-#: Top/argdecode.c:75 util/mixer.c:95 util/scale.c:46 util/srconv.c:739
+#: Top/argdecode.c:75 util/mixer.c:95 util/scale.c:46 util/srconv.c:738
msgid "-A\tcreate an AIFF format output soundfile"
msgstr ""
-#: Top/argdecode.c:76 util/mixer.c:96 util/scale.c:47 util/srconv.c:741
+#: Top/argdecode.c:76 util/mixer.c:96 util/scale.c:47 util/srconv.c:740
msgid "-W\tcreate a WAV format output soundfile"
msgstr ""
-#: Top/argdecode.c:77 util/srconv.c:740
+#: Top/argdecode.c:77 util/srconv.c:739
msgid "-J\tcreate an IRCAM format output soundfile"
msgstr ""
-#: Top/argdecode.c:78 util/mixer.c:97 util/scale.c:48 util/srconv.c:742
+#: Top/argdecode.c:78 util/mixer.c:97 util/scale.c:48 util/srconv.c:741
msgid "-h\tno header on output soundfile"
msgstr ""
-#: Top/argdecode.c:79 util/mixer.c:99 util/scale.c:49 util/srconv.c:743
+#: Top/argdecode.c:79 util/mixer.c:99 util/scale.c:49 util/srconv.c:742
msgid "-c\t8-bit signed_char sound samples"
msgstr ""
-#: Top/argdecode.c:81 util/mixer.c:101 util/scale.c:50 util/srconv.c:744
+#: Top/argdecode.c:81 util/mixer.c:101 util/scale.c:50 util/srconv.c:743
msgid "-a\talaw sound samples"
msgstr ""
-#: Top/argdecode.c:83 util/mixer.c:98 util/mixer.c:100 util/srconv.c:745
+#: Top/argdecode.c:83 util/mixer.c:98 util/mixer.c:100 util/srconv.c:744
msgid "-8\t8-bit unsigned_char sound samples"
msgstr ""
-#: Top/argdecode.c:84 util/mixer.c:102 util/scale.c:51 util/srconv.c:746
+#: Top/argdecode.c:84 util/mixer.c:102 util/scale.c:51 util/srconv.c:745
msgid "-u\tulaw sound samples"
msgstr ""
-#: Top/argdecode.c:85 util/mixer.c:103 util/scale.c:52 util/srconv.c:747
+#: Top/argdecode.c:85 util/mixer.c:103 util/scale.c:52 util/srconv.c:746
msgid "-s\tshort_int sound samples"
msgstr ""
-#: Top/argdecode.c:86 util/mixer.c:104 util/scale.c:53 util/srconv.c:748
+#: Top/argdecode.c:86 util/mixer.c:104 util/scale.c:53 util/srconv.c:747
msgid "-l\tlong_int sound samples"
msgstr ""
-#: Top/argdecode.c:87 util/mixer.c:105 util/scale.c:54 util/srconv.c:749
+#: Top/argdecode.c:87 util/mixer.c:105 util/scale.c:54 util/srconv.c:748
msgid "-f\tfloat sound samples"
msgstr ""
@@ -9120,7 +9008,7 @@ msgstr ""
msgid "-3\t24bit sound samples"
msgstr ""
-#: Top/argdecode.c:89 util/srconv.c:750
+#: Top/argdecode.c:89 util/srconv.c:749
msgid "-r N\torchestra srate override"
msgstr ""
@@ -9128,7 +9016,7 @@ msgstr ""
msgid "-k N\torchestra krate override"
msgstr ""
-#: Top/argdecode.c:91 util/srconv.c:751
+#: Top/argdecode.c:91 util/srconv.c:750
msgid "-K\tDo not generate PEAK chunks"
msgstr ""
@@ -9188,7 +9076,7 @@ msgstr ""
msgid "-F fnam\tread MIDIfile event stream from file 'fnam'"
msgstr ""
-#: Top/argdecode.c:107 util/mixer.c:106 util/scale.c:59 util/srconv.c:752
+#: Top/argdecode.c:107 util/mixer.c:106 util/scale.c:59 util/srconv.c:751
msgid "-R\tcontinually rewrite header while writing soundfile (WAV/AIFF)"
msgstr ""
@@ -9196,7 +9084,7 @@ msgstr ""
msgid "-H#\tprint heartbeat style 1, 2 or 3 at each soundfile write"
msgstr ""
-#: Top/argdecode.c:109 util/mixer.c:108 util/scale.c:61 util/srconv.c:754
+#: Top/argdecode.c:109 util/mixer.c:108 util/scale.c:61 util/srconv.c:753
msgid "-N\tnotify (ring the bell) when score or miditrack is done"
msgstr ""
@@ -9682,16 +9570,16 @@ msgid "-M: stdin not supported on this platform"
msgstr ""
#: Top/argdecode.c:668 Top/argdecode.c:959 util/envext.c:84 util/mixer.c:205
-#: util/scale.c:173 util/srconv.c:248 util/xtrct.c:116
+#: util/scale.c:173 util/srconv.c:247 util/xtrct.c:116
msgid "no outfilename"
msgstr ""
-#: Top/argdecode.c:671 Top/argdecode.c:963 util/scale.c:177 util/srconv.c:252
+#: Top/argdecode.c:671 Top/argdecode.c:963 util/scale.c:177 util/srconv.c:251
#: util/xtrct.c:120
msgid "-o cannot be stdin"
msgstr "-o can't be stdin"
-#: Top/argdecode.c:675 Top/argdecode.c:967 util/scale.c:180 util/srconv.c:257
+#: Top/argdecode.c:675 Top/argdecode.c:967 util/scale.c:180 util/srconv.c:256
#: util/xtrct.c:123
msgid "stdout audio not supported"
msgstr ""
@@ -9810,164 +9698,164 @@ msgstr ""
msgid "cscoreFileGetCurrent: no fp current"
msgstr ""
-#: Top/csmodule.c:192
+#: Top/csmodule.c:199
#, c-format
msgid "not loading '%s' (uses incompatible floating point type)"
msgstr ""
-#: Top/csmodule.c:201
+#: Top/csmodule.c:209
#, c-format
msgid ""
"not loading '%s' (incompatible with this version of Csound (%d.%d/%d.%d)"
msgstr ""
-#: Top/csmodule.c:244
+#: Top/csmodule.c:252
#, c-format
msgid "could not open library '%s' (%s)"
msgstr "couldn't open library '%s' (%s)"
-#: Top/csmodule.c:247
+#: Top/csmodule.c:255
#, c-format
msgid "could not open library '%s' (%d)"
msgstr "couldn't open library '%s' (%d)"
-#: Top/csmodule.c:303
+#: Top/csmodule.c:311
#, c-format
msgid "'%s' is not a Csound plugin library"
msgstr "'%s' isn't a Csound plugin library"
-#: Top/csmodule.c:314
+#: Top/csmodule.c:322
msgid "csoundLoadExternal(): memory allocation failure"
msgstr ""
-#: Top/csmodule.c:328 Top/csmodule.c:336
+#: Top/csmodule.c:336 Top/csmodule.c:344
#, c-format
msgid "Error in pre-initialisation function of module '%s'"
msgstr ""
-#: Top/csmodule.c:599 Top/csmodule.c:605 Top/csmodule.c:616 Top/csmodule.c:623
-#: Top/csmodule.c:629 Top/csmodule.c:637
+#: Top/csmodule.c:608 Top/csmodule.c:614 Top/csmodule.c:625 Top/csmodule.c:632
+#: Top/csmodule.c:638 Top/csmodule.c:646
msgid "Error opening plugin directory\n"
msgstr ""
-#: Top/csmodule.c:687
+#: Top/csmodule.c:696
#, c-format
msgid "Error opening plugin directory '%s': %s"
msgstr ""
-#: Top/csmodule.c:722
+#: Top/csmodule.c:731
#, c-format
msgid "path name too long, skipping '%s'"
msgstr ""
-#: Top/csmodule.c:728
+#: Top/csmodule.c:737
#, c-format
msgid "Library %s omitted\n"
msgstr ""
-#: Top/csmodule.c:764
+#: Top/csmodule.c:773
msgid "Loading command-line libraries:\n"
msgstr ""
-#: Top/csmodule.c:787
+#: Top/csmodule.c:796
#, c-format
msgid " *** error loading '%s'"
msgstr ""
-#: Top/csmodule.c:810
+#: Top/csmodule.c:819
#, c-format
msgid "Error starting module '%s'"
msgstr ""
-#: Top/csmodule.c:907
+#: Top/csmodule.c:918
#, c-format
msgid "Error de-initialising module '%s'"
msgstr ""
-#: Top/csound.c:1606 Top/csound.c:1626
+#: Top/csound.c:1636 Top/csound.c:1656
msgid "Early return from csoundPerformKsmps().\n"
msgstr ""
-#: Top/csound.c:1612
+#: Top/csound.c:1642
msgid "Score finished in csoundPerformKsmps().\n"
msgstr ""
-#: Top/csound.c:1645
+#: Top/csound.c:1675
msgid "Early return from csoundPerformBuffer().\n"
msgstr ""
-#: Top/csound.c:1670
+#: Top/csound.c:1700
msgid "Early return from csoundPerform().\n"
msgstr ""
-#: Top/csound.c:1677
+#: Top/csound.c:1707
msgid "Score finished in csoundPerform().\n"
msgstr ""
-#: Top/csound.c:1697
+#: Top/csound.c:1727
msgid "csoundPerform(): stopped.\n"
msgstr ""
-#: Top/csound.c:1968
+#: Top/csound.c:1998
msgid "WARNING: "
msgstr ""
-#: Top/csound.c:2089
+#: Top/csound.c:2119
msgid "rtdummy: failed to allocate globals"
msgstr ""
-#: Top/csound.c:2090
+#: Top/csound.c:2120
msgid "rtaudio: dummy module enabled\n"
msgstr ""
-#: Top/csound.c:2119 Top/csound.c:2155
+#: Top/csound.c:2149 Top/csound.c:2185
msgid " *** error: rtaudio module set to empty string"
msgstr ""
-#: Top/csound.c:2123 Top/csound.c:2159
+#: Top/csound.c:2153 Top/csound.c:2189
#, c-format
msgid " *** error: unknown rtaudio module: '%s'"
msgstr ""
-#: Top/csound.c:2241
+#: Top/csound.c:2271
msgid "WARNING: real time midi input disabled, using dummy functions\n"
msgstr ""
-#: Top/csound.c:2246 Top/csound.c:2280
+#: Top/csound.c:2276 Top/csound.c:2310
msgid "error: -+rtmidi set to empty string"
msgstr ""
-#: Top/csound.c:2249 Top/csound.c:2283
+#: Top/csound.c:2279 Top/csound.c:2313
#, c-format
msgid "error: -+rtmidi='%s': unknown module"
msgstr ""
-#: Top/csound.c:2275
+#: Top/csound.c:2305
msgid "WARNING: real time midi output disabled, using dummy functions\n"
msgstr ""
-#: Top/csound.c:2297
+#: Top/csound.c:2327
msgid "Unknown MIDI error"
msgstr ""
-#: Top/csound.c:2415
+#: Top/csound.c:2445
msgid "xyin not supported. use invalue opcode instead."
msgstr ""
-#: Top/csound.c:2522
+#: Top/csound.c:2552
msgid "Failed to allocate new opcode entry."
msgstr ""
-#: Top/csound.c:2545
+#: Top/csound.c:2575
#, c-format
msgid "Failed to allocate opcode entry for %s."
msgstr ""
-#: Top/csound.c:2876
+#: Top/csound.c:2906
msgid "Cannot open /proc/cpuinfo. Support for RDTSC is not available.\n"
msgstr "Can't open /proc/cpuinfo. Support for RDTSC is not available.\n"
-#: Top/csound.c:2927
+#: Top/csound.c:2957
msgid "No valid CPU frequency entry was found in /proc/cpuinfo.\n"
msgstr ""
@@ -9975,25 +9863,25 @@ msgstr ""
msgid "Error allocating opcode list"
msgstr ""
-#: Top/main.c:161
+#: Top/main.c:160
#, c-format
msgid "WARNING: cannot open csoundrc file %s\n"
msgstr "WARNING: can't open csoundrc file %s\n"
-#: Top/main.c:164
+#: Top/main.c:163
#, c-format
msgid "Reading options from $CSOUNDRC: %s \n"
msgstr ""
-#: Top/main.c:173
+#: Top/main.c:172
msgid "Reading options from $HOME/.csoundrc\n"
msgstr ""
-#: Top/main.c:200
+#: Top/main.c:199
msgid "no orchestra name"
msgstr ""
-#: Top/main.c:225
+#: Top/main.c:224
msgid "Reading CSD failed ... stopping"
msgstr ""
@@ -10005,7 +9893,7 @@ msgstr ""
msgid "error: multiple uses of stdout"
msgstr ""
-#: Top/main.c:260 util/dnoise.c:268
+#: Top/main.c:260 util/dnoise.c:264
#, c-format
msgid "%s not a recognised SFOUTYP env setting"
msgstr ""
@@ -10018,58 +9906,62 @@ msgstr ""
msgid "realtime performance using dummy numeric scorefile\n"
msgstr ""
-#: Top/main.c:319
+#: Top/main.c:314
#, c-format
msgid "orchname: %s\n"
msgstr ""
-#: Top/main.c:321
-#, c-format
-msgid "scorename: %s\n"
+#: Top/main.c:334
+msgid "Stopping on parser failure\n"
msgstr ""
-#: Top/main.c:353
+#: Top/main.c:352
msgid "end of orchestra compile"
msgstr ""
-#: Top/main.c:360
+#: Top/main.c:359
#, c-format
msgid "using previous %s\n"
msgstr ""
-#: Top/main.c:373
+#: Top/main.c:369
#, c-format
msgid "cannot open scorefile %s"
msgstr "can't open scorefile %s"
-#: Top/main.c:378 Top/main.c:399
-#, c-format
-msgid "cannot open %s for writing"
-msgstr "can't open %s for writing"
-
-#: Top/main.c:381
+#: Top/main.c:371
msgid "sorting score ...\n"
msgstr ""
-#: Top/main.c:388
+#: Top/main.c:381
#, c-format
msgid "cannot extract %s, name conflict"
msgstr "can't extract %s, name conflict"
-#: Top/main.c:391
+#: Top/main.c:384
#, c-format
msgid "cannot open extract file %s"
msgstr "can't open extract file %s"
-#: Top/main.c:401
+#: Top/main.c:388
+#, c-format
+msgid "cannot reopen %s"
+msgstr "can't reopen %s"
+
+#: Top/main.c:392
+#, c-format
+msgid "cannot open %s for writing"
+msgstr "can't open %s for writing"
+
+#: Top/main.c:394
msgid " ... extracting ...\n"
msgstr ""
-#: Top/main.c:414
+#: Top/main.c:405
msgid "end of score sort"
msgstr ""
-#: Top/main.c:416
+#: Top/main.c:407
msgid "Syntax check completed.\n"
msgstr ""
@@ -10134,163 +10026,158 @@ msgstr ""
msgid " *** error setting option '%s' to '%s': %s\n"
msgstr ""
-#: Top/one_file.c:105 Top/one_file.c:113
+#: Top/one_file.c:110 Top/one_file.c:118
msgid " *** cannot create temporary file"
msgstr " *** can't create temporary file"
-#: Top/one_file.c:198
+#: Top/one_file.c:203
#, c-format
msgid "Removing temporary file %s ...\n"
msgstr ""
-#: Top/one_file.c:202
+#: Top/one_file.c:207
#, c-format
msgid "WARNING: could not remove %s\n"
msgstr "WARNING: couldn't remove %s\n"
-#: Top/one_file.c:268 Top/one_file.c:296
+#: Top/one_file.c:274 Top/one_file.c:302
#, c-format
msgid "More than %d arguments in <CsOptions>"
msgstr ""
-#: Top/one_file.c:313
+#: Top/one_file.c:319
#, c-format
msgid "Invalid arguments in <CsOptions>: %s"
msgstr ""
-#: Top/one_file.c:316
+#: Top/one_file.c:322
#, c-format
msgid "Invalid arguments in .csoundrc or -@ file: %s"
msgstr ""
-#: Top/one_file.c:322 Top/one_file.c:790
+#: Top/one_file.c:328 Top/one_file.c:744
msgid "Missing end tag </CsOptions>"
msgstr ""
-#: Top/one_file.c:340 Top/one_file.c:372 Top/one_file.c:420
-#, c-format
-msgid "Creating %s (%p)\n"
-msgstr ""
-
-#: Top/one_file.c:343
-#, c-format
-msgid "Failed to create %s"
-msgstr ""
-
-#: Top/one_file.c:356
+#: Top/one_file.c:354
msgid "Missing end tag </CsInstruments>"
msgstr ""
-#: Top/one_file.c:389 Top/one_file.c:442
+#: Top/one_file.c:376 Top/one_file.c:430
msgid "Missing end tag </CsScore>"
msgstr ""
-#: Top/one_file.c:403 Top/one_file.c:408
+#: Top/one_file.c:391 Top/one_file.c:396
msgid "Missing program in tag <CsScore>"
msgstr ""
-#: Top/one_file.c:433
+#: Top/one_file.c:408
+#, c-format
+msgid "Creating %s (%p)\n"
+msgstr ""
+
+#: Top/one_file.c:421
msgid "External generation failed"
msgstr ""
-#: Top/one_file.c:520
+#: Top/one_file.c:468
#, c-format
msgid "Non base64 character %c(%2x)"
msgstr ""
-#: Top/one_file.c:539
+#: Top/one_file.c:487
msgid "Truncated byte at end of base64 stream"
msgstr ""
-#: Top/one_file.c:554
+#: Top/one_file.c:503
#, c-format
msgid "Cannot open temporary file (%s) for MIDI subfile"
msgstr "Can't open temporary file (%s) for MIDI subfile"
-#: Top/one_file.c:571
+#: Top/one_file.c:520
msgid "Missing end tag </CsMidifileB>"
msgstr ""
-#: Top/one_file.c:586 Top/one_file.c:633
+#: Top/one_file.c:536 Top/one_file.c:584
#, c-format
msgid "File %s already exists"
msgstr ""
-#: Top/one_file.c:591
+#: Top/one_file.c:541
#, c-format
msgid "Cannot open sample file (%s) subfile"
msgstr "Can't open sample file (%s) subfile"
-#: Top/one_file.c:605
+#: Top/one_file.c:555
msgid "Missing end tag </CsSampleB>"
msgstr ""
-#: Top/one_file.c:638
+#: Top/one_file.c:589
#, c-format
msgid "Cannot open file (%s) subfile"
msgstr "Can't open file (%s) subfile"
-#: Top/one_file.c:653
+#: Top/one_file.c:604
msgid "Missing end tag </CsFileB>"
msgstr ""
-#: Top/one_file.c:672
+#: Top/one_file.c:624
#, c-format
msgid "This CSD file requires a version of Csound before %d.%02d"
msgstr ""
-#: Top/one_file.c:680 Top/one_file.c:687
+#: Top/one_file.c:632 Top/one_file.c:639
#, c-format
msgid "This CSD file requires a version of Csound after %d.%02d"
msgstr ""
-#: Top/one_file.c:693
+#: Top/one_file.c:645
msgid "Missing end tag </CsVersion>"
msgstr ""
-#: Top/one_file.c:702
+#: Top/one_file.c:655
msgid "**** Licence Information ****\n"
msgstr "**** License Information ****\n"
-#: Top/one_file.c:708
+#: Top/one_file.c:661
msgid "**** End of Licence Information ****\n"
msgstr "**** End of License Information ****\n"
-#: Top/one_file.c:719
+#: Top/one_file.c:672
msgid "Missing end tag </CsLicence>"
msgstr ""
-#: Top/one_file.c:749
+#: Top/one_file.c:703
#, c-format
msgid "Failed to open csd file: %s"
msgstr ""
-#: Top/one_file.c:764
+#: Top/one_file.c:718
msgid "STARTING FILE\n"
msgstr ""
-#: Top/one_file.c:780
+#: Top/one_file.c:734
msgid "Creating options\n"
msgstr ""
-#: Top/one_file.c:786
+#: Top/one_file.c:740
msgid "Skipping <CsOptions>\n"
msgstr ""
-#: Top/one_file.c:800
+#: Top/one_file.c:754
msgid "Creating orchestra\n"
msgstr ""
-#: Top/one_file.c:805
+#: Top/one_file.c:759
msgid "Creating score\n"
msgstr ""
-#: Top/one_file.c:839
+#: Top/one_file.c:793
#, c-format
msgid "unknown CSD tag: %s\n"
msgstr ""
-#: Top/one_file.c:844
+#: Top/one_file.c:798
msgid "Could not find <CsoundSynthesizer> tag in CSD file.\n"
msgstr "Couldn't find <CsoundSynthesizer> tag in CSD file.\n"
@@ -10464,7 +10351,7 @@ msgstr ""
#, c-format
msgid ""
"\n"
-" Could not open %s for writing, bye...\n"
+"Could not open %s for writing, bye...\n"
msgstr ""
"\n"
" Couldn't open %s for writing, bye...\n"
@@ -10473,8 +10360,8 @@ msgstr ""
msgid "saving ATS data..."
msgstr ""
-#: util/atsa.c:546 util/atsa.c:2344 util/atsa.c:2358 util/atsa.c:2368
-#: util/atsa.c:2548 util/atsa.c:2611 util/atsa.c:2699
+#: util/atsa.c:546 util/atsa.c:2354 util/atsa.c:2368 util/atsa.c:2387
+#: util/atsa.c:2567 util/atsa.c:2630 util/atsa.c:2718
msgid "done!\n"
msgstr ""
@@ -10582,17 +10469,17 @@ msgid ""
"\n"
msgstr ""
-#: util/atsa.c:1482
+#: util/atsa.c:1492
#, c-format
msgid "atsa: error opening residual file '%s'"
msgstr ""
-#: util/atsa.c:1486
+#: util/atsa.c:1496
#, c-format
msgid "atsa: residual file has %d channels, must be stereo !"
msgstr ""
-#: util/atsa.c:1813
+#: util/atsa.c:1823
#, c-format
msgid ""
"\n"
@@ -10601,164 +10488,164 @@ msgstr ""
"\n"
"ERROR: can't open file %s for writing\n"
-#: util/atsa.c:1908
+#: util/atsa.c:1918
msgid "Error: sound not optimised !"
msgstr ""
-#: util/atsa.c:2003
+#: util/atsa.c:2013
#, c-format
msgid "atsa: cannot open input file '%s'"
msgstr "atsa: can't open input file '%s'"
-#: util/atsa.c:2010
+#: util/atsa.c:2020
#, c-format
msgid "atsa: file has %d channels, must be mono !"
msgstr ""
-#: util/atsa.c:2015
+#: util/atsa.c:2025
msgid "tracking...\n"
msgstr ""
-#: util/atsa.c:2024
+#: util/atsa.c:2034
#, c-format
msgid "start %f out of bounds, corrected to 0.0"
msgstr ""
-#: util/atsa.c:2034
+#: util/atsa.c:2044
#, c-format
msgid "duration %f out of bounds, limited to file duration"
msgstr ""
-#: util/atsa.c:2040
+#: util/atsa.c:2050
#, c-format
msgid "start: %f duration: %f file dur: %f\n"
msgstr ""
-#: util/atsa.c:2047
+#: util/atsa.c:2057
#, c-format
msgid "lowest freq. %f out of bounds, forced to default: %f"
msgstr ""
-#: util/atsa.c:2057
+#: util/atsa.c:2067
#, c-format
msgid "highest freq. %f out of bounds, forced to default: %f"
msgstr ""
-#: util/atsa.c:2064
+#: util/atsa.c:2074
#, c-format
msgid ""
"freq. dev. %f out of bounds, should be > 0.0 and <= 1.0, forced to default: "
"%f"
msgstr ""
-#: util/atsa.c:2072
+#: util/atsa.c:2082
#, c-format
msgid ""
"windows cycles %d out of bounds, should be between 1 and 8, forced to "
"default: %d"
msgstr ""
-#: util/atsa.c:2080
+#: util/atsa.c:2090
#, c-format
msgid ""
"window type %d out of bounds, should be between 0 and 3, forced to default: "
"%d"
msgstr ""
-#: util/atsa.c:2088
+#: util/atsa.c:2098
#, c-format
msgid ""
"hop size %f out of bounds, should be > 0.0 and <= 1.0, forced to default: %f"
msgstr ""
-#: util/atsa.c:2096
+#: util/atsa.c:2106
#, c-format
msgid ""
"lowest magnitude %f out of bounds, should be >= 0.0 and <= 1.0, forced to "
"default: %f"
msgstr ""
-#: util/atsa.c:2120
+#: util/atsa.c:2130
#, c-format
msgid "atsa: %d frames are not enough for analysis, need at least %d"
msgstr ""
-#: util/atsa.c:2129
+#: util/atsa.c:2139
#, c-format
msgid "track length %d out of bounds, forced to: %d"
msgstr ""
-#: util/atsa.c:2138
+#: util/atsa.c:2148
#, c-format
msgid "min. segment length %d out of bounds, forced to: %d"
msgstr ""
-#: util/atsa.c:2147
+#: util/atsa.c:2157
#, c-format
msgid "min. gap length %d out of bounds, forced to: %d"
msgstr ""
-#: util/atsa.c:2153
+#: util/atsa.c:2163
#, c-format
msgid ""
"SMR threshold %f out of bounds, should be >= 0.0 and < %f dB SPL, forced to "
"default: %f"
msgstr ""
-#: util/atsa.c:2164
+#: util/atsa.c:2174
#, c-format
msgid ""
"min. seg. SMR %f out of bounds, should be >= %f and < %f dB SPL, forced to "
"default: %f"
msgstr ""
-#: util/atsa.c:2172
+#: util/atsa.c:2182
#, c-format
msgid ""
"last peak contribution %f out of bounds, should be >= 0.0 and <= 1.0, forced "
"to default: %f"
msgstr ""
-#: util/atsa.c:2180
+#: util/atsa.c:2190
#, c-format
msgid ""
"SMR contribution %f out of bounds, should be >= 0.0 and <= 1.0, forced to "
"default: %f"
msgstr ""
-#: util/atsa.c:2325
+#: util/atsa.c:2335
msgid "Initializing ATS data..."
msgstr ""
-#: util/atsa.c:2355
+#: util/atsa.c:2365
msgid "Computing residual..."
msgstr ""
-#: util/atsa.c:2366
+#: util/atsa.c:2381 util/atsa.c:2384
msgid "Analysing residual..."
msgstr ""
-#: util/atsa.c:2370
+#: util/atsa.c:2389
msgid "tracking completed.\n"
msgstr ""
-#: util/atsa.c:2478
+#: util/atsa.c:2497
msgid "Filling sound gaps..."
msgstr ""
-#: util/atsa.c:2566
+#: util/atsa.c:2585
msgid "Trimming short partials..."
msgstr ""
-#: util/atsa.c:2662
+#: util/atsa.c:2681
msgid "Computing averages..."
msgstr ""
-#: util/atsa.c:2713
+#: util/atsa.c:2732
msgid "No partials to track -- stopping\n"
msgstr ""
-#: util/atsa.c:2813
+#: util/atsa.c:2832
msgid "Soundfile analysis for ATS opcodes"
msgstr ""
@@ -10790,8 +10677,8 @@ msgstr ""
msgid "illegal number of filenames"
msgstr ""
-#: util/cvanal.c:113 util/dnoise.c:456 util/lpanal.c:518 util/pvanal.c:258
-#: util/srconv.c:351
+#: util/cvanal.c:113 util/dnoise.c:445 util/lpanal.c:518 util/pvanal.c:258
+#: util/srconv.c:350
#, c-format
msgid "error while opening %s"
msgstr ""
@@ -10831,256 +10718,256 @@ msgstr ""
msgid "Soundfile analysis for convolve"
msgstr ""
-#: util/dnoise.c:285
+#: util/dnoise.c:281
msgid "-o cannot be stdin\n"
msgstr "-o can't be stdin\n"
-#: util/dnoise.c:297
+#: util/dnoise.c:293
msgid "-A overriding local default WAV out"
msgstr ""
-#: util/dnoise.c:302
+#: util/dnoise.c:298
msgid "-J overriding local default AIFF/WAV out"
msgstr ""
-#: util/dnoise.c:309
+#: util/dnoise.c:305
msgid "-W overriding local default AIFF out"
msgstr ""
-#: util/dnoise.c:356
+#: util/dnoise.c:345
msgid "no t argument"
msgstr ""
-#: util/dnoise.c:379
+#: util/dnoise.c:368
msgid "no n argument"
msgstr ""
-#: util/dnoise.c:384
+#: util/dnoise.c:373
msgid "no b argument"
msgstr ""
-#: util/dnoise.c:392
+#: util/dnoise.c:381
msgid "no B argument"
msgstr ""
-#: util/dnoise.c:404
+#: util/dnoise.c:393
msgid "no E argument"
msgstr ""
-#: util/dnoise.c:408
+#: util/dnoise.c:397
msgid "no N argument"
msgstr ""
-#: util/dnoise.c:412
+#: util/dnoise.c:401
msgid "no M argument"
msgstr ""
-#: util/dnoise.c:416
+#: util/dnoise.c:405
msgid "no L argument"
msgstr ""
-#: util/dnoise.c:420
+#: util/dnoise.c:409
msgid "no w argument"
msgstr ""
-#: util/dnoise.c:424
+#: util/dnoise.c:413
msgid "no D argument"
msgstr ""
-#: util/dnoise.c:431 util/srconv.c:328
+#: util/dnoise.c:420 util/srconv.c:327
#, c-format
msgid "Looking at %c\n"
msgstr ""
-#: util/dnoise.c:438 util/srconv.c:336
+#: util/dnoise.c:427 util/srconv.c:335
#, c-format
msgid "Infile set to %s\n"
msgstr ""
-#: util/dnoise.c:441 util/srconv.c:339
+#: util/dnoise.c:430 util/srconv.c:338
#, c-format
msgid "End with %s\n"
msgstr ""
-#: util/dnoise.c:447
+#: util/dnoise.c:436
msgid "dnoise: no input file\n"
msgstr ""
-#: util/dnoise.c:451
+#: util/dnoise.c:440
msgid "Must have an example noise file (-i name)\n"
msgstr ""
-#: util/dnoise.c:479
+#: util/dnoise.c:468
#, c-format
msgid "cannot open %s.\n"
msgstr "can't open %s.\n"
-#: util/dnoise.c:491 util/srconv.c:461 util/srconv.c:473
+#: util/dnoise.c:480 util/srconv.c:460 util/srconv.c:472
#, c-format
msgid "cannot open %s."
msgstr "can't open %s."
-#: util/dnoise.c:510
+#: util/dnoise.c:499
msgid "dnoise: input MUST be mono or stereo\n"
msgstr ""
-#: util/dnoise.c:518
+#: util/dnoise.c:507
msgid "dnoise: cannot open noise reference file\n"
msgstr "dnoise: can't open noise reference file\n"
-#: util/dnoise.c:523
+#: util/dnoise.c:512
msgid "Incompatible sample rates\n"
msgstr ""
-#: util/dnoise.c:542
+#: util/dnoise.c:531
#, c-format
msgid "dnoise: warning - N not a valid power of two; revised N = %d\n"
msgstr ""
-#: util/dnoise.c:552
+#: util/dnoise.c:541
msgid "dnoise: warning - do not specify both M and W\n"
msgstr "dnoise: warning - don't specify both M and W\n"
-#: util/dnoise.c:562
+#: util/dnoise.c:551
msgid "dnoise: warning - invalid W ignored\n"
msgstr ""
-#: util/dnoise.c:576
+#: util/dnoise.c:565
msgid "dnoise: warning - M is too small\n"
msgstr ""
-#: util/dnoise.c:586
+#: util/dnoise.c:575
msgid "dnoise: M too large\n"
msgstr ""
-#: util/dnoise.c:592
+#: util/dnoise.c:581
msgid "dnoise: L too large\n"
msgstr ""
-#: util/dnoise.c:602
+#: util/dnoise.c:591
#, c-format
msgid "writing %u-byte blks of %s to %s"
msgstr ""
-#: util/dnoise.c:627 util/dnoise.c:666 util/dnoise.c:721 util/dnoise.c:732
-#: util/dnoise.c:736 util/dnoise.c:743 util/dnoise.c:753 util/dnoise.c:758
-#: util/dnoise.c:762 util/dnoise.c:766 util/dnoise.c:770
+#: util/dnoise.c:616 util/dnoise.c:655 util/dnoise.c:710 util/dnoise.c:721
+#: util/dnoise.c:725 util/dnoise.c:732 util/dnoise.c:742 util/dnoise.c:747
+#: util/dnoise.c:751 util/dnoise.c:755 util/dnoise.c:759
msgid "dnoise: insufficient memory\n"
msgstr ""
-#: util/dnoise.c:779 util/dnoise.c:788
+#: util/dnoise.c:768 util/dnoise.c:777
msgid "dnoise: begin time is greater than EOF of noise file!"
msgstr ""
-#: util/dnoise.c:820
+#: util/dnoise.c:809
msgid "dnoise: not enough samples of noise reference\n"
msgstr ""
-#: util/dnoise.c:1118
+#: util/dnoise.c:1103
#, c-format
msgid "%5.1f seconds of input complete\n"
msgstr ""
-#: util/dnoise.c:1137
+#: util/dnoise.c:1122
msgid "processing complete\n"
msgstr ""
-#: util/dnoise.c:1147
+#: util/dnoise.c:1132
msgid "usage: dnoise [flags] input_file"
msgstr ""
-#: util/dnoise.c:1149
+#: util/dnoise.c:1134
msgid "flags:"
msgstr ""
-#: util/dnoise.c:1150
+#: util/dnoise.c:1135
msgid "i = noise reference soundfile"
msgstr ""
-#: util/dnoise.c:1151
+#: util/dnoise.c:1136
msgid "o = output file"
msgstr ""
-#: util/dnoise.c:1152
+#: util/dnoise.c:1137
msgid "N = # of bandpass filters (1024)"
msgstr ""
-#: util/dnoise.c:1153
+#: util/dnoise.c:1138
msgid "w = filter overlap factor: {0,1,(2),3} DON'T USE -w AND -M"
msgstr ""
-#: util/dnoise.c:1154
+#: util/dnoise.c:1139
msgid "M = analysis window length (N-1 unless -w is specified)"
msgstr ""
-#: util/dnoise.c:1155
+#: util/dnoise.c:1140
msgid "L = synthesis window length (M)"
msgstr ""
-#: util/dnoise.c:1156
+#: util/dnoise.c:1141
msgid "D = decimation factor (M/8)"
msgstr ""
-#: util/dnoise.c:1157
+#: util/dnoise.c:1142
msgid "b = begin time in noise reference soundfile (0)"
msgstr ""
-#: util/dnoise.c:1158
+#: util/dnoise.c:1143
msgid "B = starting sample in noise reference soundfile (0)"
msgstr ""
-#: util/dnoise.c:1159
+#: util/dnoise.c:1144
msgid "e = end time in noise reference soundfile (end)"
msgstr ""
-#: util/dnoise.c:1160
+#: util/dnoise.c:1145
msgid "E = final sample in noise reference soundfile (end)"
msgstr ""
-#: util/dnoise.c:1161
+#: util/dnoise.c:1146
msgid "t = threshold above noise reference in dB (30)"
msgstr ""
-#: util/dnoise.c:1162
+#: util/dnoise.c:1147
msgid "S = sharpness of noise-gate turnoff (1) (1 to 5)"
msgstr ""
-#: util/dnoise.c:1163
+#: util/dnoise.c:1148
msgid "n = number of FFT frames to average over (5)"
msgstr ""
-#: util/dnoise.c:1164
+#: util/dnoise.c:1149
msgid "m = minimum gain of noise-gate when off in dB (-40)"
msgstr ""
-#: util/dnoise.c:1165
+#: util/dnoise.c:1150
msgid "V : verbose - print status info"
msgstr ""
-#: util/dnoise.c:1166
+#: util/dnoise.c:1151
msgid "A : AIFF format output"
msgstr ""
-#: util/dnoise.c:1167
+#: util/dnoise.c:1152
msgid "W : WAV format output"
msgstr ""
-#: util/dnoise.c:1168
+#: util/dnoise.c:1153
msgid "J : IRCAM format output"
msgstr ""
-#: util/dnoise.c:1187
+#: util/dnoise.c:1172
#, c-format
msgid "soundfile write returned sample count of %d, not %d\n"
msgstr ""
-#: util/dnoise.c:1189
+#: util/dnoise.c:1174
msgid ""
"(disk may be full...\n"
" closing the file ...)\n"
msgstr ""
-#: util/dnoise.c:1257
+#: util/dnoise.c:1242
msgid "Removes noise from a sound file"
msgstr ""
@@ -11088,7 +10975,7 @@ msgstr ""
msgid "Usage:\tenvext [-flags] soundfile\n"
msgstr ""
-#: util/envext.c:54 util/srconv.c:738
+#: util/envext.c:54 util/srconv.c:737
msgid "-o fnam\tsound output filename\n"
msgstr ""
@@ -11122,7 +11009,7 @@ msgstr ""
msgid "enveloping %ld sample frames (%3.1f secs)\n"
msgstr ""
-#: util/envext.c:179
+#: util/envext.c:177
msgid "Create a text file of envelope"
msgstr ""
@@ -11536,7 +11423,7 @@ msgstr ""
msgid "Legal flags are:"
msgstr ""
-#: util/mixer.c:107 util/scale.c:60 util/srconv.c:753
+#: util/mixer.c:107 util/scale.c:60 util/srconv.c:752
msgid "-H#\tprint a heartbeat style 1, 2 or 3 at each soundfile write"
msgstr ""
@@ -11576,7 +11463,7 @@ msgstr ""
msgid "mixer: error: "
msgstr ""
-#: util/mixer.c:188 util/scale.c:161 util/srconv.c:232
+#: util/mixer.c:188 util/scale.c:161 util/srconv.c:231
#, c-format
msgid "%s not a recognized SFOUTYP env setting"
msgstr ""
@@ -11805,17 +11692,17 @@ msgstr ""
msgid "Soundfile analysis for pvoc"
msgstr ""
-#: util/pvanal.c:469
+#: util/pvanal.c:467
#, c-format
msgid "pvxanal: unable to create analysis file: %s"
msgstr ""
-#: util/pvanal.c:500 util/pvanal.c:532
+#: util/pvanal.c:498 util/pvanal.c:530
#, c-format
msgid "pvxanal: error writing analysis frames: %s\n"
msgstr ""
-#: util/pvanal.c:542
+#: util/pvanal.c:540
#, c-format
msgid ""
"\n"
@@ -11905,7 +11792,7 @@ msgstr ""
msgid "-P fpnum\tscale file to given percentage of full"
msgstr ""
-#: util/scale.c:62 util/srconv.c:755
+#: util/scale.c:62 util/srconv.c:754
msgid "-- fnam\tlog output to file"
msgstr ""
@@ -12058,75 +11945,75 @@ msgstr ""
msgid "Sound format -%c has been overruled by -%c"
msgstr ""
-#: util/srconv.c:299
+#: util/srconv.c:298
msgid "No Q argument"
msgstr ""
-#: util/srconv.c:304
+#: util/srconv.c:303
msgid "No P argument"
msgstr ""
-#: util/srconv.c:313
+#: util/srconv.c:312
msgid "No r argument"
msgstr ""
-#: util/srconv.c:322
+#: util/srconv.c:321
msgid "No break file"
msgstr ""
-#: util/srconv.c:345
+#: util/srconv.c:344
msgid "No input given\n"
msgstr ""
-#: util/srconv.c:362
+#: util/srconv.c:361
msgid "srconv: cannot specify both -r and -P"
msgstr "srconv: can't specify both -r and -P"
-#: util/srconv.c:373
+#: util/srconv.c:372
msgid "srconv: cannot open time-vary function file"
msgstr "srconv: can't open time-vary function file"
-#: util/srconv.c:389
+#: util/srconv.c:388
msgid "srconv: too few x-y pairs in time-vary function file"
msgstr ""
-#: util/srconv.c:403
+#: util/srconv.c:402
msgid "srconv: first x value in time-vary function must be 0"
msgstr ""
-#: util/srconv.c:408
+#: util/srconv.c:407
msgid "srconv: invalid initial y value in time-vary function"
msgstr ""
-#: util/srconv.c:413 util/srconv.c:705
+#: util/srconv.c:412 util/srconv.c:704
msgid "srconv: invalid x values in time-vary function"
msgstr ""
-#: util/srconv.c:732
+#: util/srconv.c:731
msgid ""
"usage: srconv [flags] infile\n"
"\n"
"flags:"
msgstr ""
-#: util/srconv.c:733
+#: util/srconv.c:732
msgid ""
"-P num\tpitch transposition ratio (srate/r) [do not specify both P and r]"
msgstr ""
-#: util/srconv.c:735
+#: util/srconv.c:734
msgid "-Q num\tquality factor (1 to 8: default = 2)"
msgstr ""
-#: util/srconv.c:736
+#: util/srconv.c:735
msgid "-i filnam\tbreak file"
msgstr ""
-#: util/srconv.c:737
+#: util/srconv.c:736
msgid "-r num\toutput sample rate (must be specified)"
msgstr ""
-#: util/srconv.c:821
+#: util/srconv.c:820
msgid "Sample rate conversion"
msgstr ""
@@ -12276,6 +12163,42 @@ msgstr ""
msgid "Extract part of a sound file"
msgstr ""
+#~ msgid "tableseg: not initialized"
+#~ msgstr "tableseg: not initialized"
+
+#~ msgid "tablexseg: not initialized"
+#~ msgstr "tablexseg: not initialized"
+
+#~ msgid "vdelayk: not initialized"
+#~ msgstr "vdelayk: not initialized"
+
+#~ msgid "Cannot open file \"%s\"\n"
+#~ msgstr "Can't open input file \"%s\"\n"
+
+#~ msgid "cannot find end of file %s"
+#~ msgstr "can't find end of file %s"
+
+#~ msgid "Loop cannot start inside of a macro"
+#~ msgstr "Loop can't start inside of a macro"
+
+#~ msgid "Repeat cannot start inside of a macro (ignored)"
+#~ msgstr "Repeat can't start inside of a macro (ignored)"
+
+#~ msgid "cannot open input file %s"
+#~ msgstr "can't open input file %s"
+
+#~ msgid "FLsavesnap: cannot open file"
+#~ msgstr "FLsavesnap: can't open file"
+
+#~ msgid "FLloadsnap: cannot open file"
+#~ msgstr "FLloadsnap: can't open file"
+
+#~ msgid "FLvalue cannot be set by FLsetVal.\n"
+#~ msgstr "FLvalue can't be set by FLsetVal.\n"
+
+#~ msgid "FLvalue cannot be set by FLsetVal\n"
+#~ msgstr "FLvalue can't be set by FLsetVal\n"
+
#~ msgid "cannot open %s. Not in cur dir, SSDIR or SFDIR as defined"
#~ msgstr "can't open %s. Not in cur dir, SSDIR or SFDIR as defined"
diff --git a/po/csound.po b/po/csound.po
index 3999fa3..f1b052f 100644
--- a/po/csound.po
+++ b/po/csound.po
@@ -32,22 +32,22 @@ msgstr ""
msgid "auxlist for instr %d (%p):\n"
msgstr ""
-#: Engine/auxfd.c:153
+#: Engine/auxfd.c:154
#, c-format
msgid "\tauxch at %p: size %ld, auxp %p, endp %p\n"
msgstr ""
-#: Engine/auxfd.c:165
+#: Engine/auxfd.c:166
#, c-format
msgid "fdlist for instr %s [%d] (%p):"
msgstr ""
-#: Engine/auxfd.c:168
+#: Engine/auxfd.c:169
#, c-format
msgid "fdlist for instr %d (%p):"
msgstr ""
-#: Engine/auxfd.c:171
+#: Engine/auxfd.c:172
#, c-format
msgid " fd %p in %p"
msgstr ""
@@ -100,356 +100,316 @@ msgstr ""
msgid "(unknown error)"
msgstr ""
-#: Engine/csound_orc_compile.c:214 Engine/rdorch.c:1832
+#: Engine/csound_orc_compile.c:138
+#, c-format
+msgid ""
+"input arg %d '%s' of type %s not allowed when expecting %c (for opcode %s), "
+"line %d\n"
+msgstr ""
+
+#: Engine/csound_orc_compile.c:265 Engine/rdorch.c:1862
msgid "missing or extra arg"
msgstr ""
-#: Engine/csound_orc_compile.c:218
+#: Engine/csound_orc_compile.c:269
msgid "too many input args\n"
msgstr ""
-#: Engine/csound_orc_compile.c:475
+#: Engine/csound_orc_compile.c:304
#, c-format
-msgid "create_opcode: No rule to handle statement of type %d\n"
+msgid "input arg '%s' used before defined (in opcode %s), line %d\n"
msgstr ""
-#: Engine/csound_orc_compile.c:671
+#: Engine/csound_orc_compile.c:380
#, c-format
-msgid "create_instrument: instr num %ld\n"
+msgid ""
+"output name previously used, type '%c' must be uniquely defined, line %d"
msgstr ""
-#: Engine/csound_orc_compile.c:681
+#: Engine/csound_orc_compile.c:386
#, c-format
-msgid "create_instrument: instr name %s\n"
+msgid "output arg '%s' illegal type (for opcode %s), line %d\n"
msgstr ""
-#: Engine/csound_orc_compile.c:688 Engine/otran.c:351
-msgid "invalid name for instrument"
-msgstr ""
-
-#: Engine/csound_orc_compile.c:692 Engine/otran.c:356
+#: Engine/csound_orc_compile.c:541
#, c-format
-msgid "instr %s redefined"
+msgid "create_opcode: No rule to handle statement of type %d\n"
msgstr ""
-#: Engine/csound_orc_compile.c:833 Engine/otran.c:145 Engine/symbtab.c:394
+#: Engine/csound_orc_compile.c:738
#, c-format
-msgid "invalid input type for opcode %s"
+msgid "create_instrument: instr num %ld\n"
msgstr ""
-#: Engine/csound_orc_compile.c:838 Engine/otran.c:150 Engine/symbtab.c:399
+#: Engine/csound_orc_compile.c:748
#, c-format
-msgid "too many input args for opcode %s"
+msgid "create_instrument: instr name %s\n"
msgstr ""
-#: Engine/csound_orc_compile.c:853 Engine/otran.c:165 Engine/symbtab.c:414
-#, c-format
-msgid "too many output args for opcode %s"
+#: Engine/csound_orc_compile.c:755 Engine/otran.c:364
+msgid "invalid name for instrument"
msgstr ""
-#: Engine/csound_orc_compile.c:869 Engine/otran.c:187 Engine/symbtab.c:433
+#: Engine/csound_orc_compile.c:759 Engine/otran.c:370
#, c-format
-msgid "invalid output type for opcode %s"
+msgid "instr %s redefined"
msgstr ""
-#: Engine/csound_orc_compile.c:954 Engine/otran.c:339
+#: Engine/csound_orc_compile.c:903 Engine/otran.c:352
#, c-format
msgid "instr %ld redefined"
msgstr ""
-#: Engine/csound_orc_compile.c:964
+#: Engine/csound_orc_compile.c:914
msgid "!!! csound->opcodeInfo is NULL !!!\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1111
+#: Engine/csound_orc_compile.c:1083
#, c-format
msgid "Unknown TREE node of type %d found in root.\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1168 Engine/otran.c:565 Engine/otran.c:1414
+#: Engine/csound_orc_compile.c:1140 Engine/otran.c:579 Engine/otran.c:1433
#, c-format
msgid "%s invalid sample rate"
msgstr ""
-#: Engine/csound_orc_compile.c:1170 Engine/otran.c:567 Engine/otran.c:1416
+#: Engine/csound_orc_compile.c:1142 Engine/otran.c:581 Engine/otran.c:1435
#, c-format
msgid "%s invalid control rate"
msgstr ""
-#: Engine/csound_orc_compile.c:1173 Engine/otran.c:570 Engine/otran.c:1412
+#: Engine/csound_orc_compile.c:1146 Engine/otran.c:584 Engine/otran.c:1431
#, c-format
msgid "%s invalid ksmps value"
msgstr ""
-#: Engine/csound_orc_compile.c:1176 Engine/otran.c:572 Engine/otran.c:1418
+#: Engine/csound_orc_compile.c:1149 Engine/otran.c:587 Engine/otran.c:1437
#, c-format
msgid "%s inconsistent sr, kr, ksmps"
msgstr ""
-#: Engine/csound_orc_compile.c:1190
+#: Engine/csound_orc_compile.c:1165
msgid "perf-pass statements illegal in header blk\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1195
+#: Engine/csound_orc_compile.c:1170
#, c-format
msgid "%d syntax errors in orchestra. compilation invalid\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1255 Engine/otran.c:656
+#: Engine/csound_orc_compile.c:1230 Engine/otran.c:671
msgid "inconsistent argoff sumcount"
msgstr ""
-#: Engine/csound_orc_compile.c:1327 Engine/otran.c:725
+#: Engine/csound_orc_compile.c:1302 Engine/otran.c:740
#, c-format
msgid "LABELS list is full...extending to %d\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1365 Engine/otran.c:763
+#: Engine/csound_orc_compile.c:1340 Engine/otran.c:778
#, c-format
msgid "GOTOS list is full..extending to %d\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1398 Engine/otran.c:796
+#: Engine/csound_orc_compile.c:1373 Engine/otran.c:811
#, c-format
msgid "target label '%s' not found"
msgstr ""
-#: Engine/csound_orc_compile.c:1463 Engine/otran.c:851
+#: Engine/csound_orc_compile.c:1451 Engine/otran.c:866
#, c-format
msgid "string syntax '%s'"
msgstr ""
-#: Engine/csound_orc_compile.c:1513 Engine/otran.c:901
+#: Engine/csound_orc_compile.c:1501 Engine/otran.c:916
#, c-format
msgid "numeric syntax '%s'"
msgstr ""
-#: Engine/csound_orc_compile.c:1539 Engine/otran.c:927
+#: Engine/csound_orc_compile.c:1527 Engine/otran.c:942
#, c-format
msgid "extending Floating pool to %d\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1578 Engine/otran.c:999
+#: Engine/csound_orc_compile.c:1566 Engine/otran.c:1018
msgid "gblnamset(): memory allocation failure"
msgstr ""
-#: Engine/csound_orc_compile.c:1606 Engine/otran.c:1027
+#: Engine/csound_orc_compile.c:1594 Engine/otran.c:1046
msgid "lclnamset(): memory allocation failure"
msgstr ""
-#: Engine/csound_orc_compile.c:1632 Engine/otran.c:1052
+#: Engine/csound_orc_compile.c:1620 Engine/otran.c:1071
msgid "unexpected global name"
msgstr ""
-#: Engine/csound_orc_compile.c:1655 Engine/otran.c:1074
+#: Engine/csound_orc_compile.c:1643 Engine/otran.c:1093
msgid "unknown nametype"
msgstr ""
-#: Engine/csound_orc.l:239
+#: Engine/csound_orc_expressions.c:459
#, c-format
-msgid "unterminated string found on line %d >>%s<<\n"
+msgid "error: function %s with arg type %c not found, line %d \n"
msgstr ""
-#: Engine/csound_orc.l:259 Engine/csound_orc.l:286 Engine/csound_orc.l:314
-#: Engine/csound_orc.l:367 Engine/rdorch.c:901 Engine/sread.c:396
+#: Engine/csound_orc_expressions.c:862
#, c-format
-msgid "Undefined macro: '%s'"
+msgid "error: non-existent statement in conditional, line %d \n"
msgstr ""
-#: Engine/csound_orc.l:265 Engine/csound_orc.l:292
-msgid "Includes nested too deeply"
-msgstr ""
-
-#: Engine/csound_orc.l:335 Engine/csound_orc.l:388 Engine/rdorch.c:940
+#: Engine/csound_orc_semantics.c:157
#, c-format
msgid ""
-"Missing argument terminator\n"
-"%.98s"
-msgstr ""
-
-#: Engine/csound_orc.l:484
-#, c-format
-msgid "Line %d: Unknown character: '%c'(%2x)\n"
-msgstr ""
-
-#: Engine/csound_orc.l:527
-#, c-format
-msgid "Cannot open file \"%s\"\n"
-msgstr ""
-
-#: Engine/csound_orc.l:573 Engine/rdorch.c:689 Engine/sread.c:1595
-msgid "macro error\n"
-msgstr ""
-
-#: Engine/csound_orc.l:631 Engine/rdorch.c:845 Engine/sread.c:1686
-#, c-format
-msgid "macro %s undefined\n"
-msgstr ""
-
-#: Engine/csound_orc.l:645 Engine/rdorch.c:859 Engine/sread.c:294
-msgid "Undefining undefined macro"
-msgstr ""
-
-#: Engine/csound_orc.l:786 Engine/rdorch.c:413 Engine/sread.c:741
-#, c-format
-msgid "Macro definition for %*s\n"
-msgstr ""
-
-#: Engine/csound_orc.l:789 Engine/rdorch.c:416
-msgid "Invalid macro name for --omacro"
-msgstr ""
-
-#: Engine/csound_orc.y:270
-msgid "No number following instr\n"
+"\n"
+"error: %s (token \"%s\")"
msgstr ""
-#: Engine/csound_orc_semantics.c:127
+#: Engine/csound_orc_semantics.c:159
#, c-format
-msgid "error: %s (token \"%s\")"
+msgid ""
+" line %d:\n"
+">>>"
msgstr ""
-#: Engine/csound_orc_semantics.c:129
+#: Engine/csound_orc_semantics.c:732
#, c-format
-msgid " line %d: %s"
+msgid "insufficient required arguments for opcode %s on line %d\n"
msgstr ""
-#: Engine/csound_orc_semantics.c:702 Engine/rdorch.c:1863
-msgid "insufficient required arguments"
-msgstr ""
-
-#: Engine/csound_orc_semantics.c:768 Engine/rdorch.c:1617 Engine/rdorch.c:1635
-#: Engine/rdorch.c:1676 Engine/rdorch.c:1811 Engine/rdorch.c:1980
+#: Engine/csound_orc_semantics.c:797 Engine/rdorch.c:1644 Engine/rdorch.c:1662
+#: Engine/rdorch.c:1703 Engine/rdorch.c:1841 Engine/rdorch.c:2011
#, c-format
msgid "modified opcod: %s"
msgstr ""
-#: Engine/cs_par_dispatch.c:113 Engine/cs_par_dispatch.c:125
+#: Engine/cs_par_dispatch.c:115 Engine/cs_par_dispatch.c:128
#, c-format
msgid "Poorly specified global lock index: %i [max: %i]\n"
msgstr ""
-#: Engine/cs_par_dispatch.c:138 Engine/cs_par_dispatch.c:157
+#: Engine/cs_par_dispatch.c:142 Engine/cs_par_dispatch.c:162
msgid "Invalid NULL parameter name for a global variable\n"
msgstr ""
-#: Engine/cs_par_dispatch.c:505 Engine/cs_par_dispatch.c:528
-#: Engine/cs_par_dispatch.c:2463 Engine/cs_par_dispatch.c:2507
-#: Engine/cs_par_dispatch.c:2509 Engine/cs_par_dispatch.c:2570
+#: Engine/cs_par_dispatch.c:526 Engine/cs_par_dispatch.c:553
+#: Engine/cs_par_dispatch.c:2543 Engine/cs_par_dispatch.c:2588
+#: Engine/cs_par_dispatch.c:2590 Engine/cs_par_dispatch.c:2654
msgid "Invalid NULL Parameter entry"
msgstr ""
-#: Engine/cs_par_dispatch.c:507 Engine/cs_par_dispatch.c:541
-#: Engine/cs_par_dispatch.c:566 Engine/cs_par_dispatch.c:605
+#: Engine/cs_par_dispatch.c:528 Engine/cs_par_dispatch.c:567
+#: Engine/cs_par_dispatch.c:594 Engine/cs_par_dispatch.c:635
msgid "Invalid NULL Parameter name"
msgstr ""
-#: Engine/cs_par_dispatch.c:512
+#: Engine/cs_par_dispatch.c:535
msgid "Failed to allocate Opcode Weight cache entry"
msgstr ""
-#: Engine/cs_par_dispatch.c:632 Engine/cs_par_dispatch.c:718
+#: Engine/cs_par_dispatch.c:664 Engine/cs_par_dispatch.c:755
msgid "No Weights to Dump (Using Defaults)\n"
msgstr ""
-#: Engine/cs_par_dispatch.c:670 Engine/cs_par_dispatch.c:794
+#: Engine/cs_par_dispatch.c:705 Engine/cs_par_dispatch.c:835
#, c-format
msgid "Opcode Weight Spec File not found at: %s"
msgstr ""
-#: Engine/cs_par_dispatch.c:722
+#: Engine/cs_par_dispatch.c:759
msgid "Weights Dump\n"
msgstr ""
-#: Engine/cs_par_dispatch.c:866
+#: Engine/cs_par_dispatch.c:907
#, c-format
msgid "Parallel Spec File not found at: %s"
msgstr ""
-#: Engine/cs_par_dispatch.c:872
+#: Engine/cs_par_dispatch.c:913
msgid "Parallel Spec File invalid format expected weight_min parameter"
msgstr ""
-#: Engine/cs_par_dispatch.c:877
+#: Engine/cs_par_dispatch.c:918
msgid "Parallel Spec File invalid format expected weight_max parameter"
msgstr ""
-#: Engine/cs_par_dispatch.c:881
+#: Engine/cs_par_dispatch.c:922
msgid "Parallel Spec File invalid format expected roots_avail_min parameter"
msgstr ""
-#: Engine/cs_par_dispatch.c:885
+#: Engine/cs_par_dispatch.c:926
msgid "Parallel Spec File invalid format expected roots_avail_max parameter"
msgstr ""
-#: Engine/cs_par_dispatch.c:961 Engine/cs_par_dispatch.c:985
-#: Engine/cs_par_dispatch.c:1109 Engine/cs_par_dispatch.c:1195
-#: Engine/cs_par_dispatch.c:1332 Engine/cs_par_dispatch.c:1366
-#: Engine/cs_par_dispatch.c:1383 Engine/cs_par_dispatch.c:1405
-#: Engine/cs_par_dispatch.c:1432 Engine/cs_par_dispatch.c:1452
-#: Engine/cs_par_dispatch.c:1476 Engine/cs_par_dispatch.c:1566
-#: Engine/cs_par_dispatch.c:1621 Engine/cs_par_dispatch.c:1714
-#: Engine/cs_par_dispatch.c:1769 Engine/cs_par_dispatch.c:2597
+#: Engine/cs_par_dispatch.c:1003 Engine/cs_par_dispatch.c:1027
+#: Engine/cs_par_dispatch.c:1155 Engine/cs_par_dispatch.c:1251
+#: Engine/cs_par_dispatch.c:1405 Engine/cs_par_dispatch.c:1439
+#: Engine/cs_par_dispatch.c:1456 Engine/cs_par_dispatch.c:1478
+#: Engine/cs_par_dispatch.c:1506 Engine/cs_par_dispatch.c:1528
+#: Engine/cs_par_dispatch.c:1552 Engine/cs_par_dispatch.c:1644
+#: Engine/cs_par_dispatch.c:1699 Engine/cs_par_dispatch.c:1792
+#: Engine/cs_par_dispatch.c:1847 Engine/cs_par_dispatch.c:2681
msgid "Invalid NULL Parameter dag"
msgstr ""
-#: Engine/cs_par_dispatch.c:966
+#: Engine/cs_par_dispatch.c:1008
msgid "Failed to allocate dag"
msgstr ""
-#: Engine/cs_par_dispatch.c:1017 Engine/cs_par_dispatch.c:1040
-#: Engine/cs_par_dispatch.c:1062 Engine/cs_par_dispatch.c:1064
+#: Engine/cs_par_dispatch.c:1060 Engine/cs_par_dispatch.c:1083
+#: Engine/cs_par_dispatch.c:1105 Engine/cs_par_dispatch.c:1107
msgid "Invalid NULL Parameter dag_node"
msgstr ""
-#: Engine/cs_par_dispatch.c:1019
+#: Engine/cs_par_dispatch.c:1062
msgid "Invalid NULL Parameter instr"
msgstr ""
-#: Engine/cs_par_dispatch.c:1021
+#: Engine/cs_par_dispatch.c:1064
msgid "Invalid NULL Parameter insds"
msgstr ""
-#: Engine/cs_par_dispatch.c:1026 Engine/cs_par_dispatch.c:1048
+#: Engine/cs_par_dispatch.c:1069 Engine/cs_par_dispatch.c:1091
msgid "Failed to allocate dag_node"
msgstr ""
-#: Engine/cs_par_dispatch.c:1043
+#: Engine/cs_par_dispatch.c:1086
msgid "Invalid Parameter count must be greater than 0"
msgstr ""
-#: Engine/cs_par_dispatch.c:1175 Engine/cs_par_dispatch.c:1433
-#: Engine/cs_par_dispatch.c:2465 Engine/cs_par_dispatch.c:2571
-#: Engine/cs_par_dispatch.c:2598
+#: Engine/cs_par_dispatch.c:1229 Engine/cs_par_dispatch.c:1508
+#: Engine/cs_par_dispatch.c:2545 Engine/cs_par_dispatch.c:2655
+#: Engine/cs_par_dispatch.c:2682
msgid "Invalid NULL Parameter chain"
msgstr ""
-#: Engine/cs_par_dispatch.c:1183
+#: Engine/cs_par_dispatch.c:1237
#, c-format
msgid "Failed to find semantic information for instrument '%i'"
msgstr ""
-#: Engine/cs_par_dispatch.c:1478
+#: Engine/cs_par_dispatch.c:1554
msgid "Invalid NULL Parameter node"
msgstr ""
-#: Engine/cs_par_dispatch.c:1480
+#: Engine/cs_par_dispatch.c:1556
msgid "Invalid NULL Parameter update_hdl"
msgstr ""
-#: Engine/cs_par_dispatch.c:1569
+#: Engine/cs_par_dispatch.c:1647
msgid "Invalid Parameter update_hdl is outside the DAG range"
msgstr ""
-#: Engine/cs_par_dispatch.c:2417
+#: Engine/cs_par_dispatch.c:2497
#, c-format
msgid "Parallel Dump File not found at: %s for writing"
msgstr ""
-#: Engine/cs_par_dispatch.c:2477
+#: Engine/cs_par_dispatch.c:2557
msgid "Failed to allocate Dag2 cache entry"
msgstr ""
-#: Engine/cs_par_dispatch.c:2527
+#: Engine/cs_par_dispatch.c:2610
msgid "Cache Update\n"
msgstr ""
@@ -463,12 +423,12 @@ msgstr ""
msgid "Creating search path cache for '%s':"
msgstr ""
-#: Engine/envvar.c:1082
+#: Engine/envvar.c:1083
#, c-format
msgid "internal error: csoundFileOpen(): invalid type: %d"
msgstr ""
-#: Engine/envvar.c:1264
+#: Engine/envvar.c:1266
#, c-format
msgid "internal error: csoundCreateFileHandle(): invalid type: %d"
msgstr ""
@@ -526,345 +486,346 @@ msgstr ""
msgid "expression syntax"
msgstr ""
-#: Engine/fgens.c:95
+#: Engine/fgens.c:91
msgid "unknown GEN number"
msgstr ""
-#: Engine/fgens.c:137
+#: Engine/fgens.c:133
msgid "ftable does not exist"
msgstr ""
-#: Engine/fgens.c:142
+#: Engine/fgens.c:138
#, c-format
msgid "ftable %d now deleted\n"
msgstr ""
-#: Engine/fgens.c:157 Engine/fgens.c:1597 Engine/fgens.c:1683
-#: Engine/fgens.c:1762 Engine/fgens.c:1878 Engine/fgens.c:1959
-#: Engine/fgens.c:2867
+#: Engine/fgens.c:153 Engine/fgens.c:1593 Engine/fgens.c:1679
+#: Engine/fgens.c:1758 Engine/fgens.c:1874 Engine/fgens.c:1955
+#: Engine/fgens.c:2909
msgid "insufficient gen arguments"
msgstr ""
-#: Engine/fgens.c:183 Opcodes/ftgen.c:116
+#: Engine/fgens.c:179 Opcodes/ftgen.c:116
#, c-format
msgid "Named gen \"%s\" not defined"
msgstr ""
-#: Engine/fgens.c:190
+#: Engine/fgens.c:186
msgid "illegal gen number"
msgstr ""
-#: Engine/fgens.c:198
-msgid "deferred size for GENs 1, 23 or 28 only"
+#: Engine/fgens.c:194
+msgid "deferred size for GENs 1, 23, 28 or 49 only"
msgstr ""
-#: Engine/fgens.c:201 Engine/fgens.c:249
+#: Engine/fgens.c:197 Engine/fgens.c:245
#, c-format
msgid "ftable %d:\n"
msgstr ""
-#: Engine/fgens.c:226 Engine/fgens.c:233
+#: Engine/fgens.c:222 Engine/fgens.c:229
msgid "illegal table length"
msgstr ""
-#: Engine/fgens.c:292 Engine/fgens.c:2219
+#: Engine/fgens.c:288 Engine/fgens.c:2215
#, c-format
msgid ""
"ftable %d relocating due to size change\n"
" currently active instruments may find this disturbing"
msgstr ""
-#: Engine/fgens.c:350 Engine/fgens.c:471 Engine/fgens.c:555 Engine/fgens.c:636
-#: Engine/fgens.c:711 Engine/fgens.c:760 Engine/fgens.c:881 Engine/fgens.c:958
-#: Engine/fgens.c:1053 Engine/fgens.c:1097 Engine/fgens.c:1144
-#: Engine/fgens.c:1397 Engine/fgens.c:1459 Engine/fgens.c:1681
-#: Engine/fgens.c:1759 Engine/fgens.c:2114 Engine/fgens.c:2821
-#: Engine/fgens.c:2864
+#: Engine/fgens.c:346 Engine/fgens.c:467 Engine/fgens.c:551 Engine/fgens.c:632
+#: Engine/fgens.c:707 Engine/fgens.c:756 Engine/fgens.c:877 Engine/fgens.c:954
+#: Engine/fgens.c:1049 Engine/fgens.c:1093 Engine/fgens.c:1140
+#: Engine/fgens.c:1393 Engine/fgens.c:1455 Engine/fgens.c:1677
+#: Engine/fgens.c:1755 Engine/fgens.c:2110 Engine/fgens.c:2863
+#: Engine/fgens.c:2906
msgid "using extended arguments\n"
msgstr ""
-#: Engine/fgens.c:374
+#: Engine/fgens.c:370
msgid "no coefs present"
msgstr ""
-#: Engine/fgens.c:379 Engine/fgens.c:645 Engine/fgens.c:653
+#: Engine/fgens.c:375 Engine/fgens.c:641 Engine/fgens.c:649
msgid "illegal x interval"
msgstr ""
-#: Engine/fgens.c:408 Engine/fgens.c:557 Engine/fgens.c:638 Engine/fgens.c:883
-#: Engine/fgens.c:1354 Engine/fgens.c:2378 Engine/fgens.c:2694 Top/main.c:142
-#: util/cvanal.c:66 util/lpanal.c:398 util/pvanal.c:170
+#: Engine/fgens.c:404 Engine/fgens.c:553 Engine/fgens.c:634 Engine/fgens.c:879
+#: Engine/fgens.c:1350 Engine/fgens.c:2375 Engine/fgens.c:2690
+#: Engine/fgens.c:2810 Top/main.c:141 util/cvanal.c:66 util/lpanal.c:398
+#: util/pvanal.c:170
msgid "insufficient arguments"
msgstr ""
-#: Engine/fgens.c:412 Engine/fgens.c:1359
+#: Engine/fgens.c:408 Engine/fgens.c:1355
msgid "unknown srctable number"
msgstr ""
-#: Engine/fgens.c:425
+#: Engine/fgens.c:421
msgid "table size too large"
msgstr ""
-#: Engine/fgens.c:510 Engine/fgens.c:543
+#: Engine/fgens.c:506 Engine/fgens.c:539
msgid "gen call has negative segment size:"
msgstr ""
-#: Engine/fgens.c:512
+#: Engine/fgens.c:508
msgid "illegal input vals for gen call, beginning:"
msgstr ""
-#: Engine/fgens.c:578
+#: Engine/fgens.c:574
msgid "negative segsiz"
msgstr ""
-#: Engine/fgens.c:787
+#: Engine/fgens.c:783
msgid "nh partials < 1"
msgstr ""
-#: Engine/fgens.c:886
+#: Engine/fgens.c:882
msgid "illegal xint value"
msgstr ""
-#: Engine/fgens.c:889
+#: Engine/fgens.c:885
msgid "illegal xamp value"
msgstr ""
-#: Engine/fgens.c:961
+#: Engine/fgens.c:957
msgid "uneven number of args"
msgstr ""
-#: Engine/fgens.c:1081
+#: Engine/fgens.c:1077
msgid "gen call has illegal x-ordinate values:"
msgstr ""
-#: Engine/fgens.c:1099
+#: Engine/fgens.c:1095
msgid "wrong number of args"
msgstr ""
-#: Engine/fgens.c:1113
+#: Engine/fgens.c:1109
msgid "a range given exceeds table length"
msgstr ""
-#: Engine/fgens.c:1120
+#: Engine/fgens.c:1116
msgid "an input function does not exist"
msgstr ""
-#: Engine/fgens.c:1253
+#: Engine/fgens.c:1249
msgid "No such window!"
msgstr ""
-#: Engine/fgens.c:1271
+#: Engine/fgens.c:1267
msgid "Wrong number of input arguments"
msgstr ""
-#: Engine/fgens.c:1272
+#: Engine/fgens.c:1268
msgid "unknown distribution"
msgstr ""
-#: Engine/fgens.c:1321
+#: Engine/fgens.c:1317
msgid "error opening ASCII file"
msgstr ""
-#: Engine/fgens.c:1327
+#: Engine/fgens.c:1323
#, c-format
msgid "%ld elements in %s\n"
msgstr ""
-#: Engine/fgens.c:1338
+#: Engine/fgens.c:1334
msgid "Numbers after table full in GEN23"
msgstr ""
-#: Engine/fgens.c:1367
+#: Engine/fgens.c:1363
msgid "table size must be the same of source table"
msgstr ""
-#: Engine/fgens.c:1439 Engine/fgens.c:1499
+#: Engine/fgens.c:1435 Engine/fgens.c:1495
msgid "x coordinates must all be in increasing order:"
msgstr ""
-#: Engine/fgens.c:1442 Engine/fgens.c:1501
+#: Engine/fgens.c:1438 Engine/fgens.c:1497
msgid "x coordinate greater than function size:"
msgstr ""
-#: Engine/fgens.c:1446
+#: Engine/fgens.c:1442
msgid "illegal input val (y <= 0) for gen call, beginning:"
msgstr ""
-#: Engine/fgens.c:1519
+#: Engine/fgens.c:1515
msgid "GEN28 requires zero table length"
msgstr ""
-#: Engine/fgens.c:1581
+#: Engine/fgens.c:1577
msgid "could not open space file"
msgstr ""
-#: Engine/fgens.c:1583
+#: Engine/fgens.c:1579
msgid "Time values must be in increasing order"
msgstr ""
-#: Engine/fgens.c:1604
+#: Engine/fgens.c:1600
msgid "GEN30: source ftable not found"
msgstr ""
-#: Engine/fgens.c:1687
+#: Engine/fgens.c:1683
msgid "GEN31: source ftable not found"
msgstr ""
-#: Engine/fgens.c:1795
+#: Engine/fgens.c:1791
#, c-format
msgid "GEN32: source ftable %d not found"
msgstr ""
-#: Engine/fgens.c:1889
+#: Engine/fgens.c:1885
msgid "GEN33: source ftable not found"
msgstr ""
-#: Engine/fgens.c:2057
+#: Engine/fgens.c:2053
msgid "unknown source table number"
msgstr ""
-#: Engine/fgens.c:2089
+#: Engine/fgens.c:2085
msgid "Gen41: negative probability not allowed"
msgstr ""
-#: Engine/fgens.c:2155 Opcodes/fareygen.c:70
+#: Engine/fgens.c:2151 Opcodes/fareygen.c:70
#, c-format
msgid "ftable %d: "
msgstr ""
-#: Engine/fgens.c:2199
+#: Engine/fgens.c:2195
#, c-format
msgid "ftable %d:"
msgstr ""
-#: Engine/fgens.c:2214
+#: Engine/fgens.c:2210
#, c-format
msgid "replacing previous ftable %d"
msgstr ""
-#: Engine/fgens.c:2250 Engine/fgens.c:2337 Engine/fgens.c:2361
-#: Opcodes/gab/gab.c:578 Opcodes/gab/gab.c:632 Opcodes/midiops2.c:218
+#: Engine/fgens.c:2246 Engine/fgens.c:2334 Engine/fgens.c:2358
+#: Opcodes/gab/gab.c:580 Opcodes/gab/gab.c:634 Opcodes/midiops2.c:218
#: Opcodes/midiops2.c:370 Opcodes/midiops2.c:452 Opcodes/uggab.c:1317
#: Opcodes/uggab.c:1344 Opcodes/uggab.c:1364 Opcodes/uggab.c:1407
#, c-format
msgid "Invalid ftable no. %f"
msgstr ""
-#: Engine/fgens.c:2255
+#: Engine/fgens.c:2251
#, c-format
msgid "deferred-size ftable %f illegal here"
msgstr ""
-#: Engine/fgens.c:2281
+#: Engine/fgens.c:2278 Engine/fgens.c:2848
#, c-format
msgid "Deferred load of '%s' failed"
msgstr ""
-#: Engine/fgens.c:2343
+#: Engine/fgens.c:2340
#, c-format
msgid "Deferred-size ftable %f load not available at perf time."
msgstr ""
-#: Engine/fgens.c:2402
+#: Engine/fgens.c:2399
#, c-format
msgid "non-deferred ftable %d needs size %d\n"
msgstr ""
-#: Engine/fgens.c:2449 Opcodes/loscilx.c:62
+#: Engine/fgens.c:2446 Opcodes/loscilx.c:64
#, c-format
msgid "invalid sample format: %d"
msgstr ""
-#: Engine/fgens.c:2457 Engine/fgens.c:2718
+#: Engine/fgens.c:2454 Engine/fgens.c:2714
#, c-format
msgid "channel %d illegal"
msgstr ""
-#: Engine/fgens.c:2463
+#: Engine/fgens.c:2460
msgid "deferred alloc\n"
msgstr ""
-#: Engine/fgens.c:2471
+#: Engine/fgens.c:2468
msgid "deferred size, but filesize unknown"
msgstr ""
-#: Engine/fgens.c:2474
+#: Engine/fgens.c:2471
#, c-format
msgid " defer length %d\n"
msgstr ""
-#: Engine/fgens.c:2543
+#: Engine/fgens.c:2540
msgid "GEN1: input file truncated by ftable size"
msgstr ""
-#: Engine/fgens.c:2547
+#: Engine/fgens.c:2544
#, c-format
msgid "\tlooping endpoint %d exceeds ftsize %d\n"
msgstr ""
-#: Engine/fgens.c:2569
+#: Engine/fgens.c:2566
msgid "GEN1 read error"
msgstr ""
-#: Engine/fgens.c:2574
+#: Engine/fgens.c:2571
msgid "GEN1: aiff file truncated by ftable size"
msgstr ""
-#: Engine/fgens.c:2575
+#: Engine/fgens.c:2572
#, c-format
msgid "\taudio samps %d exceeds ftsize %d"
msgstr ""
-#: Engine/fgens.c:2619
+#: Engine/fgens.c:2616
msgid "wrong number of ftable arguments"
msgstr ""
-#: Engine/fgens.c:2629 OOps/pstream.c:326
+#: Engine/fgens.c:2626 OOps/pstream.c:326
msgid "Failed to load PVOC-EX file"
msgstr ""
-#: Engine/fgens.c:2640 InOut/midirecv.c:416 OOps/midiops.c:377
+#: Engine/fgens.c:2637 InOut/midirecv.c:416 OOps/midiops.c:377
#: OOps/midiops.c:419 OOps/midiops.c:431
msgid "illegal channel number"
msgstr ""
-#: Engine/fgens.c:2658
+#: Engine/fgens.c:2655
msgid "ftable size too small"
msgstr ""
-#: Engine/fgens.c:2734 Opcodes/mp3in.c:79 Opcodes/mp3in.c:218
+#: Engine/fgens.c:2730 Opcodes/mp3in.c:80 Opcodes/mp3in.c:219
msgid "Not enough memory\n"
msgstr ""
-#: Engine/fgens.c:2831
+#: Engine/fgens.c:2873
msgid "gen51: invalid number of p-fields (too few grades)"
msgstr ""
-#: Engine/fgens.c:2871
+#: Engine/fgens.c:2913
msgid "number of channels inconsistent with number of args"
msgstr ""
-#: Engine/fgens.c:3030
+#: Engine/fgens.c:3072
msgid "GEN53: invalid number of gen arguments"
msgstr ""
-#: Engine/fgens.c:3040
+#: Engine/fgens.c:3082
msgid "GEN53: invalid table length"
msgstr ""
-#: Engine/fgens.c:3044
+#: Engine/fgens.c:3086
msgid "GEN53: invalid source table number"
msgstr ""
-#: Engine/fgens.c:3047
+#: Engine/fgens.c:3089
msgid "GEN53: mode must be in the range 0 to 15"
msgstr ""
-#: Engine/fgens.c:3051
+#: Engine/fgens.c:3093
msgid "GEN53: invalid source table length"
msgstr ""
-#: Engine/fgens.c:3056
+#: Engine/fgens.c:3098
msgid "GEN53: invalid window table"
msgstr ""
@@ -888,31 +849,31 @@ msgstr ""
msgid "Instrument %d muted\n"
msgstr ""
-#: Engine/insert.c:103 Engine/insert.c:1249
+#: Engine/insert.c:103 Engine/insert.c:1301
#, c-format
msgid "instr %s expects midi event data, cannot run from score\n"
msgstr ""
-#: Engine/insert.c:106 Engine/insert.c:1252
+#: Engine/insert.c:106 Engine/insert.c:1304
#, c-format
msgid "instr %d expects midi event data, cannot run from score\n"
msgstr ""
-#: Engine/insert.c:115 Engine/insert.c:279 Engine/insert.c:1234
+#: Engine/insert.c:115 Engine/insert.c:279 Engine/insert.c:1286
#, c-format
msgid "cannot allocate last note because it exceeds 100%% of cpu time"
msgstr ""
-#: Engine/insert.c:121 Engine/insert.c:285 Engine/insert.c:1239
+#: Engine/insert.c:121 Engine/insert.c:285 Engine/insert.c:1291
msgid "cannot allocate last note because it exceeds instr maxalloc"
msgstr ""
-#: Engine/insert.c:137 Engine/insert.c:305 Engine/insert.c:1270
+#: Engine/insert.c:137 Engine/insert.c:305 Engine/insert.c:1322
#, c-format
msgid "new alloc for instr %s:\n"
msgstr ""
-#: Engine/insert.c:139 Engine/insert.c:307 Engine/insert.c:1272
+#: Engine/insert.c:139 Engine/insert.c:307 Engine/insert.c:1324
#, c-format
msgid "new alloc for instr %d:\n"
msgstr ""
@@ -927,12 +888,12 @@ msgstr ""
msgid "instr %d uses %d p-fields but is given %d"
msgstr ""
-#: Engine/insert.c:251 Engine/insert.c:463
+#: Engine/insert.c:251 Engine/insert.c:482
#, c-format
msgid "instr %s now active:\n"
msgstr ""
-#: Engine/insert.c:253 Engine/insert.c:465
+#: Engine/insert.c:253 Engine/insert.c:484
#, c-format
msgid "instr %d now active:\n"
msgstr ""
@@ -952,153 +913,153 @@ msgstr ""
msgid "MIDI note overlaps with key %d on same channel"
msgstr ""
-#: Engine/insert.c:566
+#: Engine/insert.c:585
#, c-format
msgid "removed instance of instr %s\n"
msgstr ""
-#: Engine/insert.c:568
+#: Engine/insert.c:587
#, c-format
msgid "removed instance of instr %d\n"
msgstr ""
-#: Engine/insert.c:691
+#: Engine/insert.c:710
msgid "inactive allocs returned to freespace\n"
msgstr ""
-#: Engine/insert.c:716
+#: Engine/insert.c:735
#, c-format
msgid "could not find playing instr %f\n"
msgstr ""
-#: Engine/insert.c:729
+#: Engine/insert.c:748
msgid ""
"\n"
"INIT ERROR: "
msgstr ""
-#: Engine/insert.c:742
+#: Engine/insert.c:761
#, c-format
msgid "INIT ERROR in instr %d (opcode %s): "
msgstr ""
-#: Engine/insert.c:745
+#: Engine/insert.c:764
#, c-format
msgid "INIT ERROR in instr %d (subinstr %d): "
msgstr ""
-#: Engine/insert.c:749
+#: Engine/insert.c:768
#, c-format
msgid "INIT ERROR in instr %d: "
msgstr ""
-#: Engine/insert.c:767
+#: Engine/insert.c:786
msgid ""
"\n"
"PERF ERROR: "
msgstr ""
-#: Engine/insert.c:780
+#: Engine/insert.c:799
#, c-format
msgid "PERF ERROR in instr %d (opcode %s): "
msgstr ""
-#: Engine/insert.c:783
+#: Engine/insert.c:802
#, c-format
msgid "PERF ERROR in instr %d (subinstr %d): "
msgstr ""
-#: Engine/insert.c:787
+#: Engine/insert.c:806
#, c-format
msgid "PERF ERROR in instr %d: "
msgstr ""
-#: Engine/insert.c:792
+#: Engine/insert.c:811
msgid " note aborted\n"
msgstr ""
-#: Engine/insert.c:820
+#: Engine/insert.c:839
msgid "subinstr: number of output args greater than nchnls"
msgstr ""
-#: Engine/insert.c:861
+#: Engine/insert.c:880
msgid "subinstr: too many p-fields"
msgstr ""
-#: Engine/insert.c:920
+#: Engine/insert.c:939
#, c-format
msgid "%s: invalid local ksmps value: %d"
msgstr ""
-#: Engine/insert.c:1040 OOps/bus.c:835 Opcodes/stackops.c:293
+#: Engine/insert.c:1062 OOps/bus.c:835 Opcodes/stackops.c:286
#, c-format
msgid "%s: not initialised"
msgstr ""
-#: Engine/insert.c:1169
+#: Engine/insert.c:1221
#, c-format
msgid "setksmps: invalid ksmps value: %d"
msgstr ""
-#: Engine/insert.c:1225
+#: Engine/insert.c:1277
#, c-format
msgid "schedule event ignored. instr %d undefined\n"
msgstr ""
-#: Engine/insert.c:1303
+#: Engine/insert.c:1355
#, c-format
msgid "instr %s pmax = %d, note pcnt = %d"
msgstr ""
-#: Engine/insert.c:1306
+#: Engine/insert.c:1358
#, c-format
msgid "instr %d pmax = %d, note pcnt = %d"
msgstr ""
-#: Engine/insert.c:1314
+#: Engine/insert.c:1366
#, c-format
msgid "psave beg at %p\n"
msgstr ""
-#: Engine/insert.c:1322
+#: Engine/insert.c:1374
#, c-format
msgid " ending at %p\n"
msgstr ""
-#: Engine/insert.c:1466
+#: Engine/insert.c:1518
msgid "subinstr: not initialised"
msgstr ""
-#: Engine/insert.c:1723
+#: Engine/insert.c:1855
#, c-format
msgid ""
"instr %d allocated at %p\n"
"\tlclbas %p, opds %p\n"
msgstr ""
-#: Engine/insert.c:1740
+#: Engine/insert.c:1872
#, c-format
msgid "op %d (%s) allocated at %p\n"
msgstr ""
-#: Engine/insert.c:1766
+#: Engine/insert.c:1898
msgid "null iopadr"
msgstr ""
-#: Engine/insert.c:1777
+#: Engine/insert.c:1909
msgid "null opadr"
msgstr ""
-#: Engine/insert.c:1834
+#: Engine/insert.c:1966
msgid "inconsistent opds total"
msgstr ""
-#: Engine/insert.c:1879
+#: Engine/insert.c:2011
#, c-format
msgid "Instrument %s is still active"
msgstr ""
-#: Engine/insert.c:1882
+#: Engine/insert.c:2014
#, c-format
msgid "Instrument %d is still active"
msgstr ""
@@ -1132,7 +1093,7 @@ msgstr ""
msgid "multiple string p-fields"
msgstr ""
-#: Engine/linevent.c:273 Engine/rdorch.c:1157
+#: Engine/linevent.c:273 Engine/rdorch.c:1184
msgid "unmatched quotes"
msgstr ""
@@ -1191,297 +1152,292 @@ msgstr ""
msgid "memory allocate failure for %lu"
msgstr ""
-#: Engine/memfiles.c:112
+#: Engine/memfiles.c:113
#, c-format
msgid "cannot load %s\n"
msgstr ""
-#: Engine/memfiles.c:118
+#: Engine/memfiles.c:119
#, c-format
msgid "cannot load %s, or SADIR undefined\n"
msgstr ""
-#: Engine/memfiles.c:130
+#: Engine/memfiles.c:131
#, c-format
msgid "error processing file %s\n"
msgstr ""
-#: Engine/memfiles.c:136 Engine/memfiles.c:319
+#: Engine/memfiles.c:137 Engine/memfiles.c:320
#, c-format
msgid "file %s (%ld bytes) loaded into memory\n"
msgstr ""
-#: Engine/memfiles.c:199
+#: Engine/memfiles.c:200
msgid ""
"PVOCEX_LoadFile(): error:\n"
" "
msgstr ""
-#: Engine/memfiles.c:216
+#: Engine/memfiles.c:217
msgid "Empty or NULL file name"
msgstr ""
-#: Engine/memfiles.c:234
+#: Engine/memfiles.c:235
#, c-format
msgid "unable to open pvocex file %s: %s"
msgstr ""
-#: Engine/memfiles.c:240
+#: Engine/memfiles.c:241
#, c-format
msgid "pvoc-ex file %s is not 32bit floats"
msgstr ""
-#: Engine/memfiles.c:246
+#: Engine/memfiles.c:247
#, c-format
msgid "pvoc-ex file %s not in AMP_FREQ format"
msgstr ""
-#: Engine/memfiles.c:252
+#: Engine/memfiles.c:253
#, c-format
msgid "pvoc-ex file %s is empty!"
msgstr ""
-#: Engine/memfiles.c:282
+#: Engine/memfiles.c:283
#, c-format
msgid "error reading pvoc-ex file %s"
msgstr ""
-#: Engine/memfiles.c:286
+#: Engine/memfiles.c:287
#, c-format
msgid "error reading pvoc-ex file %s after %d frames"
msgstr ""
-#: Engine/memfiles.c:291 Opcodes/pvinterp.c:71 Opcodes/pvinterp.c:174
-#: Opcodes/pvinterp.c:346 Opcodes/ugens9.c:97 Opcodes/vpvoc.c:201
+#: Engine/memfiles.c:292 Opcodes/pvinterp.c:71 Opcodes/pvinterp.c:173
+#: Opcodes/pvinterp.c:344 Opcodes/ugens9.c:97 Opcodes/vpvoc.c:202
#, c-format
msgid "%s's srate = %8.0f, orch's srate = %8.0f"
msgstr ""
-#: Engine/memfiles.c:389
+#: Engine/memfiles.c:390
#, c-format
msgid "csoundLoadSoundFile(): failed to open '%s'"
msgstr ""
-#: Engine/memfiles.c:444
+#: Engine/memfiles.c:445
#, c-format
msgid "csoundLoadSoundFile(): error reading '%s'"
msgstr ""
-#: Engine/memfiles.c:450
+#: Engine/memfiles.c:451
#, c-format
msgid ""
"File '%s' (sr = %d Hz, %d channel(s), %lu sample frames) loaded into memory\n"
msgstr ""
-#: Engine/musmon.c:79
+#: Engine/musmon.c:81
#, c-format
msgid "Elapsed time at %s: real: %.3fs, CPU: %.3fs\n"
msgstr ""
-#: Engine/musmon.c:106
+#: Engine/musmon.c:108
msgid "illegal istartempo value"
msgstr ""
-#: Engine/musmon.c:109
+#: Engine/musmon.c:111
msgid "Beat mode not in force"
msgstr ""
-#: Engine/musmon.c:182 Top/main.c:122
+#: Engine/musmon.c:184 Top/main.c:121
#, c-format
msgid "Csound version %s beta (double samples) %s\n"
msgstr ""
-#: Engine/musmon.c:185 Top/main.c:125
+#: Engine/musmon.c:187 Top/main.c:124
#, c-format
msgid "Csound version %s (double samples) %s\n"
msgstr ""
-#: Engine/musmon.c:190 Top/main.c:114
+#: Engine/musmon.c:192 Top/main.c:113
#, c-format
msgid "Csound version %s beta (float samples) %s\n"
msgstr ""
-#: Engine/musmon.c:193 Top/main.c:117
+#: Engine/musmon.c:195 Top/main.c:116
#, c-format
msgid "Csound version %s (float samples) %s\n"
msgstr ""
-#: Engine/musmon.c:218
+#: Engine/musmon.c:220
msgid "orch now loaded\n"
msgstr ""
-#: Engine/musmon.c:243
+#: Engine/musmon.c:245
msgid "k-period aligned audio buffering\n"
msgstr ""
-#: Engine/musmon.c:259
+#: Engine/musmon.c:261
#, c-format
msgid "audio buffered in %d sample-frame blocks\n"
msgstr ""
-#: Engine/musmon.c:276 Top/main.c:395
-#, c-format
-msgid "cannot reopen %s"
-msgstr ""
-
-#: Engine/musmon.c:287
+#: Engine/musmon.c:283
msgid "using Cscore processing\n"
msgstr ""
-#: Engine/musmon.c:290
+#: Engine/musmon.c:286
msgid "cannot create cscore.out"
msgstr ""
-#: Engine/musmon.c:303
+#: Engine/musmon.c:299
msgid "cannot reopen cscore.out"
msgstr ""
-#: Engine/musmon.c:307 Engine/musmon.c:315
+#: Engine/musmon.c:303
msgid "cannot reopen cscore.srt"
msgstr ""
-#: Engine/musmon.c:309
+#: Engine/musmon.c:305
msgid "sorting cscore.out ..\n"
msgstr ""
-#: Engine/musmon.c:313 Top/main.c:409
+#: Engine/musmon.c:311 Top/main.c:401
msgid "\t... done\n"
msgstr ""
-#: Engine/musmon.c:317
+#: Engine/musmon.c:312
msgid "playing from cscore.srt\n"
msgstr ""
-#: Engine/musmon.c:321 Engine/musmon.c:453 Engine/musmon.c:1021
-#: Engine/musmon.c:1225
+#: Engine/musmon.c:316 Engine/musmon.c:446 Engine/musmon.c:1015
+#: Engine/musmon.c:1216
#, c-format
msgid "SECTION %d:\n"
msgstr ""
-#: Engine/musmon.c:397
+#: Engine/musmon.c:390
msgid "end of score.\t\t overall amps:"
msgstr ""
-#: Engine/musmon.c:408
+#: Engine/musmon.c:401
msgid ""
"\n"
"\t overall samples out of range:"
msgstr ""
-#: Engine/musmon.c:412
+#: Engine/musmon.c:405
#, c-format
msgid ""
"\n"
"%d errors in performance\n"
msgstr ""
-#: Engine/musmon.c:414
+#: Engine/musmon.c:407
msgid "end of performance"
msgstr ""
-#: Engine/musmon.c:428
+#: Engine/musmon.c:421
msgid "no sound written to disk\n"
msgstr ""
-#: Engine/musmon.c:443
+#: Engine/musmon.c:436
#, c-format
msgid "%c\tbeep!\n"
msgstr ""
-#: Engine/musmon.c:509 Engine/musmon.c:555
+#: Engine/musmon.c:502 Engine/musmon.c:548
msgid "\t number of samples out of range:"
msgstr ""
-#: Engine/musmon.c:548
+#: Engine/musmon.c:541
#, c-format
msgid "end of section %d\t sect peak amps:"
msgstr ""
-#: Engine/musmon.c:550
+#: Engine/musmon.c:543
msgid "end of lplay event list\t peak amps:"
msgstr ""
-#: Engine/musmon.c:614 Engine/musmon.c:639
+#: Engine/musmon.c:607 Engine/musmon.c:632
#, c-format
msgid " - note deleted. instr %s undefined"
msgstr ""
-#: Engine/musmon.c:618
+#: Engine/musmon.c:611
#, c-format
msgid "Setting instrument %s %s\n"
msgstr ""
-#: Engine/musmon.c:619 Engine/musmon.c:632
+#: Engine/musmon.c:612 Engine/musmon.c:625
#: Opcodes/fluidOpcodes/fluidOpcodes.c:207
#: Opcodes/fluidOpcodes/fluidOpcodes.c:208
msgid "off"
msgstr ""
-#: Engine/musmon.c:619 Engine/musmon.c:632
+#: Engine/musmon.c:612 Engine/musmon.c:625
#: Opcodes/fluidOpcodes/fluidOpcodes.c:207
#: Opcodes/fluidOpcodes/fluidOpcodes.c:208
msgid "on"
msgstr ""
-#: Engine/musmon.c:627 Engine/musmon.c:666
+#: Engine/musmon.c:620 Engine/musmon.c:659
#, c-format
msgid " - note deleted. instr %d(%d) undefined"
msgstr ""
-#: Engine/musmon.c:631
+#: Engine/musmon.c:624
#, c-format
msgid "Setting instrument %d %s\n"
msgstr ""
-#: Engine/musmon.c:657
+#: Engine/musmon.c:650
#, c-format
msgid " - note deleted. i%d (%s) had %d init errors"
msgstr ""
-#: Engine/musmon.c:687
+#: Engine/musmon.c:680
#, c-format
msgid " - note deleted. i%d had %d init errors"
msgstr ""
-#: Engine/musmon.c:708
+#: Engine/musmon.c:701
#, c-format
msgid "time advanced %5.3f beats by score request\n"
msgstr ""
-#: Engine/musmon.c:725
+#: Engine/musmon.c:719
#, c-format
msgid "\t\t T%7.3f - note deleted. "
msgstr ""
-#: Engine/musmon.c:729
+#: Engine/musmon.c:723
#, c-format
msgid "instr %s had %d init errors\n"
msgstr ""
-#: Engine/musmon.c:731
+#: Engine/musmon.c:725
#, c-format
msgid "instr %d had %d init errors\n"
msgstr ""
-#: Engine/musmon.c:822
+#: Engine/musmon.c:816
msgid "terminating.\n"
msgstr ""
-#: Engine/musmon.c:908
+#: Engine/musmon.c:902
#, c-format
msgid "error in score. illegal opcode %c (ASCII %d)\n"
msgstr ""
-#: Engine/musmon.c:1135
+#: Engine/musmon.c:1129
msgid "insert_score_event(): invalid instrument number or name\n"
msgstr ""
-#: Engine/musmon.c:1155
+#: Engine/musmon.c:1149
#, c-format
msgid "insert_score_event(): unknown opcode: %c\n"
msgstr ""
-#: Engine/musmon.c:1178
+#: Engine/musmon.c:1172
msgid "insert_score_event(): insufficient p-fields\n"
msgstr ""
@@ -1504,350 +1460,402 @@ msgstr ""
msgid "cannot find the specified instrument or opcode"
msgstr ""
-#: Engine/new_orc_parser.c:74 Engine/rdorch.c:488
+#: Engine/new_orc_parser.c:91
+msgid "Unmatched #ifdef\n"
+msgstr ""
+
+#: Engine/otran.c:149 Engine/symbtab.c:413
#, c-format
-msgid "cannot open orch file %s"
+msgid "invalid input type for opcode %s"
+msgstr ""
+
+#: Engine/otran.c:154 Engine/symbtab.c:418
+#, c-format
+msgid "too many input args for opcode %s"
+msgstr ""
+
+#: Engine/otran.c:169 Engine/symbtab.c:433
+#, c-format
+msgid "too many output args for opcode %s"
+msgstr ""
+
+#: Engine/otran.c:194 Engine/symbtab.c:458
+#, c-format
+msgid "invalid output type for opcode %s"
msgstr ""
-#: Engine/otran.c:312 Engine/otran.c:319
+#: Engine/otran.c:325 Engine/otran.c:332
msgid "missing instrument number or name"
msgstr ""
-#: Engine/otran.c:324
+#: Engine/otran.c:337
msgid "illegal instr number"
msgstr ""
-#: Engine/otran.c:374
+#: Engine/otran.c:388
msgid "No opcode name"
msgstr ""
-#: Engine/otran.c:379 Engine/symbtab.c:501
+#: Engine/otran.c:393 Engine/symbtab.c:538
msgid "invalid name for opcode"
msgstr ""
-#: Engine/otran.c:383
+#: Engine/otran.c:397
#, c-format
msgid ""
"opcode declaration error (usage: opcode name, outtypes, intypes) -- opcode %s"
msgstr ""
-#: Engine/otran.c:394 Engine/symbtab.c:511
+#: Engine/otran.c:408 Engine/symbtab.c:548
#, c-format
msgid "cannot redefine %s"
msgstr ""
-#: Engine/otran.c:398 Engine/symbtab.c:516
+#: Engine/otran.c:412 Engine/symbtab.c:553
#, c-format
msgid "WARNING: redefined opcode: %s\n"
msgstr ""
-#: Engine/otran.c:489
+#: Engine/otran.c:503
msgid "string constant used as output"
msgstr ""
-#: Engine/otran.c:520
+#: Engine/otran.c:534
msgid "Missing endin"
msgstr ""
-#: Engine/otran.c:584
+#: Engine/otran.c:599
msgid "perf-pass statements illegal in header blk"
msgstr ""
-#: Engine/otran.c:588
+#: Engine/otran.c:603
#, c-format
msgid "%d syntax errors in orchestra. compilation invalid"
msgstr ""
-#: Engine/otran.c:1238
+#: Engine/otran.c:1257
msgid "bad value for 0dbfs: must be positive."
msgstr ""
-#: Engine/otran.c:1248
+#: Engine/otran.c:1267
#, c-format
msgid "sample rate overrides: esr = %7.4f, ekr = %7.4f, ksmps = %d\n"
msgstr ""
-#: Engine/otran.c:1320
+#: Engine/otran.c:1339
msgid "internal error: string constant outarg"
msgstr ""
-#: Engine/otran.c:1346
+#: Engine/otran.c:1365
#, c-format
msgid "i%d pset args != pmax"
msgstr ""
-#: Engine/otran.c:1409
+#: Engine/otran.c:1428
#, c-format
msgid ""
"sr = %.7g, kr = %.7g, ksmps = %.7g\n"
"error:"
msgstr ""
-#: Engine/otran.c:1442
+#: Engine/otran.c:1461
msgid "header init errors"
msgstr ""
-#: Engine/rdorch.c:166
+#: Engine/rdorch.c:169
msgid "ungetorchar(): buffer overflow"
msgstr ""
-#: Engine/rdorch.c:330
+#: Engine/rdorch.c:348
msgid "Unexpected end of orchestra file"
msgstr ""
-#: Engine/rdorch.c:484
-msgid "orch compiler:\n"
+#: Engine/rdorch.c:431 Engine/sread.c:758
+#, c-format
+msgid "Macro definition for %*s\n"
msgstr ""
-#: Engine/rdorch.c:490
-#, c-format
-msgid "cannot find end of file %s"
+#: Engine/rdorch.c:434
+msgid "Invalid macro name for --omacro"
+msgstr ""
+
+#: Engine/rdorch.c:502
+msgid "orch compiler:\n"
msgstr ""
-#: Engine/rdorch.c:492
+#: Engine/rdorch.c:520
#, c-format
-msgid "ftell error on %s"
+msgid "cannot open orch file %s"
msgstr ""
-#: Engine/rdorch.c:657 Engine/sread.c:1572
+#: Engine/rdorch.c:684 Engine/sread.c:1584
#, c-format
msgid "Macro definition for %s\n"
msgstr ""
-#: Engine/rdorch.c:748
+#: Engine/rdorch.c:716 Engine/sread.c:1607
+msgid "macro error\n"
+msgstr ""
+
+#: Engine/rdorch.c:775
#, c-format
msgid "Cannot open #include'd file %s\n"
msgstr ""
-#: Engine/rdorch.c:797
+#: Engine/rdorch.c:824
msgid "unmatched #ifdef"
msgstr ""
-#: Engine/rdorch.c:808
+#: Engine/rdorch.c:835
msgid "Unmatched #else"
msgstr ""
-#: Engine/rdorch.c:822
+#: Engine/rdorch.c:849
msgid "Unmatched #endif"
msgstr ""
-#: Engine/rdorch.c:875
+#: Engine/rdorch.c:872 Engine/sread.c:1694
+#, c-format
+msgid "macro %s undefined\n"
+msgstr ""
+
+#: Engine/rdorch.c:886 Engine/sread.c:286
+msgid "Undefining undefined macro"
+msgstr ""
+
+#: Engine/rdorch.c:902
msgid "Unexpected # character"
msgstr ""
-#: Engine/rdorch.c:877
+#: Engine/rdorch.c:904
#, c-format
msgid "Unknown # option: '%s'"
msgstr ""
-#: Engine/rdorch.c:903 Engine/sread.c:394
+#: Engine/rdorch.c:928 Engine/sread.c:380
+#, c-format
+msgid "Undefined macro: '%s'"
+msgstr ""
+
+#: Engine/rdorch.c:930 Engine/sread.c:378
msgid "Macro expansion symbol ($) without macro name"
msgstr ""
-#: Engine/rdorch.c:908 Engine/sread.c:400
+#: Engine/rdorch.c:935 Engine/sread.c:384
#, c-format
msgid "$%s matches macro name $%s"
msgstr ""
-#: Engine/rdorch.c:925 Engine/sread.c:417
+#: Engine/rdorch.c:952 Engine/sread.c:401
msgid "Syntax error in macro call"
msgstr ""
-#: Engine/rdorch.c:975
+#: Engine/rdorch.c:967
+#, c-format
+msgid ""
+"Missing argument terminator\n"
+"%.98s"
+msgstr ""
+
+#: Engine/rdorch.c:1002
msgid "Unmatched #ifdef"
msgstr ""
-#: Engine/rdorch.c:977
+#: Engine/rdorch.c:1004
msgid "file too large for ortext space"
msgstr ""
-#: Engine/rdorch.c:984
+#: Engine/rdorch.c:1011
#, c-format
msgid "%d (%d) lines read\n"
msgstr ""
-#: Engine/rdorch.c:1052
+#: Engine/rdorch.c:1079
#, c-format
msgid "LINE %d:"
msgstr ""
-#: Engine/rdorch.c:1071
+#: Engine/rdorch.c:1098
msgid "invalid 'elseif' statement. must have a corresponding 'if'"
msgstr ""
-#: Engine/rdorch.c:1078
+#: Engine/rdorch.c:1105
msgid "'elseif' statement cannot occur after an 'else'"
msgstr ""
-#: Engine/rdorch.c:1134
+#: Engine/rdorch.c:1161
msgid "Unmatched comment"
msgstr ""
-#: Engine/rdorch.c:1198
+#: Engine/rdorch.c:1225
msgid "misplaced comma"
msgstr ""
-#: Engine/rdorch.c:1200 Engine/rdorch.c:1342 Engine/rdorch.c:1440
+#: Engine/rdorch.c:1227 Engine/rdorch.c:1369 Engine/rdorch.c:1467
msgid "unbalanced parens"
msgstr ""
-#: Engine/rdorch.c:1364
+#: Engine/rdorch.c:1391
#, c-format
msgid "illegal character %c"
msgstr ""
-#: Engine/rdorch.c:1377
+#: Engine/rdorch.c:1404
msgid "invalid 'else' statement. must have a corresponding 'if'"
msgstr ""
-#: Engine/rdorch.c:1384
+#: Engine/rdorch.c:1411
msgid "duplicate 'else' statement"
msgstr ""
-#: Engine/rdorch.c:1413
+#: Engine/rdorch.c:1440
msgid "invalid 'endif' statement. must have a corresponding 'if'"
msgstr ""
-#: Engine/rdorch.c:1442
+#: Engine/rdorch.c:1469
msgid "no legal opcode"
msgstr ""
-#: Engine/rdorch.c:1573
+#: Engine/rdorch.c:1600
msgid "illegal opcod from expr anal"
msgstr ""
-#: Engine/rdorch.c:1606 Engine/rdorch.c:1628
+#: Engine/rdorch.c:1633 Engine/rdorch.c:1655
#, c-format
msgid "failed to find %s, output arg '%s' illegal type"
msgstr ""
-#: Engine/rdorch.c:1670
+#: Engine/rdorch.c:1697
#, c-format
msgid "failed to find %s, input arg illegal type"
msgstr ""
-#: Engine/rdorch.c:1684
+#: Engine/rdorch.c:1711
msgid "setksmps is allowed only in user defined opcodes"
msgstr ""
-#: Engine/rdorch.c:1687
+#: Engine/rdorch.c:1714
msgid "multiple uses of setksmps in the same opcode definition"
msgstr ""
-#: Engine/rdorch.c:1710
+#: Engine/rdorch.c:1739
#, c-format
msgid "%s inconsistent with global nchnls (%d); replaced with %s\n"
msgstr ""
-#: Engine/rdorch.c:1740
+#: Engine/rdorch.c:1770
msgid "opcode blks cannot be nested (missing 'endop'?)"
msgstr ""
-#: Engine/rdorch.c:1742
+#: Engine/rdorch.c:1772
msgid "opcode not allowed in instr block"
msgstr ""
-#: Engine/rdorch.c:1751
+#: Engine/rdorch.c:1781
msgid "unmatched endop"
msgstr ""
-#: Engine/rdorch.c:1753
+#: Engine/rdorch.c:1783
msgid "endop not allowed in instr block"
msgstr ""
-#: Engine/rdorch.c:1758
+#: Engine/rdorch.c:1788
msgid "instr not allowed in opcode block"
msgstr ""
-#: Engine/rdorch.c:1761
+#: Engine/rdorch.c:1791
msgid "instr blocks cannot be nested (missing 'endin'?)"
msgstr ""
-#: Engine/rdorch.c:1769
+#: Engine/rdorch.c:1799
msgid "endin not allowed in opcode blk"
msgstr ""
-#: Engine/rdorch.c:1771
+#: Engine/rdorch.c:1801
msgid "unmatched endin"
msgstr ""
-#: Engine/rdorch.c:1781
+#: Engine/rdorch.c:1811
msgid "misplaced opcode"
msgstr ""
-#: Engine/rdorch.c:1787
+#: Engine/rdorch.c:1817
msgid "xout is allowed only in user defined opcodes"
msgstr ""
-#: Engine/rdorch.c:1790
+#: Engine/rdorch.c:1820
msgid "multiple uses of xout in the same opcode definition"
msgstr ""
-#: Engine/rdorch.c:1837
+#: Engine/rdorch.c:1867
msgid "too many input args"
msgstr ""
-#: Engine/rdorch.c:1909
+#: Engine/rdorch.c:1893
+msgid "insufficient required arguments"
+msgstr ""
+
+#: Engine/rdorch.c:1940
#, c-format
-msgid "input arg '%s' used before defined"
+msgid "input arg '%s' used before defined \n"
msgstr ""
-#: Engine/rdorch.c:1956
+#: Engine/rdorch.c:1987
msgid "xin is allowed only in user defined opcodes"
msgstr ""
-#: Engine/rdorch.c:1959
+#: Engine/rdorch.c:1990
msgid "multiple uses of xin in the same opcode definition"
msgstr ""
-#: Engine/rdorch.c:2004
+#: Engine/rdorch.c:2035
msgid "illegal no of output args"
msgstr ""
-#: Engine/rdorch.c:2023
+#: Engine/rdorch.c:2054
#, c-format
msgid "output name previously used, type '%c' must be uniquely defined"
msgstr ""
-#: Engine/rdorch.c:2028
+#: Engine/rdorch.c:2059
#, c-format
msgid "output arg '%s' illegal type"
msgstr ""
-#: Engine/rdorch.c:2069
+#: Engine/rdorch.c:2100
#, c-format
msgid "input arg '%s' of type %s not allowed when expecting %c"
msgstr ""
-#: Engine/rdorch.c:2155
+#: Engine/rdorch.c:2187
msgid "duplicate label"
msgstr ""
-#: Engine/rdorch.c:2177
+#: Engine/rdorch.c:2209
#, c-format
msgid "error line %d. unknown label:\n"
msgstr ""
-#: Engine/rdorch.c:2192 Engine/rdorch.c:2239
+#: Engine/rdorch.c:2222 Engine/rdorch.c:2271
msgid "error: "
msgstr ""
-#: Engine/rdorch.c:2208
+#: Engine/rdorch.c:2239
#, c-format
msgid ", line %d:\n"
msgstr ""
-#: Engine/rdorch.c:2246
+#: Engine/rdorch.c:2278
#, c-format
msgid "called from line %d of macro %s"
msgstr ""
-#: Engine/rdorch.c:2250
+#: Engine/rdorch.c:2282
#, c-format
msgid "in line %d of file input %s"
msgstr ""
-#: Engine/rdscor.c:79
+#: Engine/rdscor.c:80
#, c-format
msgid "ERROR: illegal character %c(%.2x) in scoreline: "
msgstr ""
@@ -1858,7 +1866,7 @@ msgid ""
"\tremainder of line flushed\n"
msgstr ""
-#: Engine/rdscor.c:144
+#: Engine/rdscor.c:146
msgid "ERROR: too many pfields: "
msgstr ""
@@ -1884,349 +1892,316 @@ msgstr ""
msgid " section %d: at position %d%s"
msgstr ""
-#: Engine/sread.c:217
+#: Engine/sread.c:216
msgid "Internal error in print_input_backtrace()"
msgstr ""
-#: Engine/sread.c:219
+#: Engine/sread.c:218
#, c-format
msgid " included from line %d of macro %s%s"
msgstr ""
-#: Engine/sread.c:220
+#: Engine/sread.c:219
#, c-format
msgid " called from line %d of macro %s%s"
msgstr ""
-#: Engine/sread.c:222
+#: Engine/sread.c:221
#, c-format
msgid " in line %d of macro %s%s"
msgstr ""
-#: Engine/sread.c:229
-#, c-format
-msgid " included from line %d of file input %s%s"
-msgstr ""
-
-#: Engine/sread.c:230
-#, c-format
-msgid " called from line %d of file input %s%s"
-msgstr ""
-
-#: Engine/sread.c:232
-#, c-format
-msgid " in line %d of file input %s%s"
-msgstr ""
-
-#: Engine/sread.c:268
+#: Engine/sread.c:256
#, c-format
msgid "Internal error op=%c"
msgstr ""
-#: Engine/sread.c:322
-msgid "ungetscochar(): buffer overflow"
-msgstr ""
-
-#: Engine/sread.c:479
+#: Engine/sread.c:464
msgid "illegal placement of number in [] expression"
msgstr ""
-#: Engine/sread.c:506
+#: Engine/sread.c:491
msgid "illegal placement of operator ~ in [] expression"
msgstr ""
-#: Engine/sread.c:516
+#: Engine/sread.c:501
msgid "illegal placement of operator @ or @@ in [] expression"
msgstr ""
-#: Engine/sread.c:548 Engine/sread.c:562
+#: Engine/sread.c:533 Engine/sread.c:547
#, c-format
msgid "illegal placement of operator %c in [] expression"
msgstr ""
-#: Engine/sread.c:574
+#: Engine/sread.c:559
msgid "illegal placement of '(' in [] expression"
msgstr ""
-#: Engine/sread.c:580
+#: Engine/sread.c:565
msgid "missing operand before ')' in [] expression"
msgstr ""
-#: Engine/sread.c:594
+#: Engine/sread.c:579
msgid "missing operand before closing bracket in []"
msgstr ""
-#: Engine/sread.c:609
+#: Engine/sread.c:594
#, c-format
msgid "illegal character %c(%.2x) in [] expression"
msgstr ""
-#: Engine/sread.c:658
+#: Engine/sread.c:646
#, c-format
msgid "%s Nested LOOP terminated, level:%d\n"
msgstr ""
-#: Engine/sread.c:664
+#: Engine/sread.c:652
#, c-format
msgid "External LOOP terminated, level:%d\n"
msgstr ""
-#: Engine/sread.c:684
+#: Engine/sread.c:696
#, c-format
msgid "%s Nested LOOP section (%d) Level:%d\n"
msgstr ""
-#: Engine/sread.c:689
+#: Engine/sread.c:701
#, c-format
msgid " External LOOP section (%d) Level:%d\n"
msgstr ""
-#: Engine/sread.c:703
+#: Engine/sread.c:715
msgid "Loop terminated\n"
msgstr ""
-#: Engine/sread.c:716
+#: Engine/sread.c:733
#, c-format
msgid "Repeat section (%d)\n"
msgstr ""
-#: Engine/sread.c:719
+#: Engine/sread.c:736
msgid "Repeat section\n"
msgstr ""
-#: Engine/sread.c:744
+#: Engine/sread.c:761
msgid "Invalid macro name for --smacro"
msgstr ""
-#: Engine/sread.c:831
+#: Engine/sread.c:865
#, c-format
msgid "Clockbase = %f\n"
msgstr ""
-#: Engine/sread.c:898
+#: Engine/sread.c:934
msgid "Loops are nested too deeply"
msgstr ""
-#: Engine/sread.c:901
-msgid "Loop cannot start inside of a macro"
-msgstr ""
-
-#: Engine/sread.c:920
+#: Engine/sread.c:948
msgid "{: invalid repeat count"
msgstr ""
-#: Engine/sread.c:929
+#: Engine/sread.c:957
#, c-format
msgid "%s Nested LOOP=%d Level:%d\n"
msgstr ""
-#: Engine/sread.c:935
+#: Engine/sread.c:963
#, c-format
msgid "External LOOP=%d Level:%d\n"
msgstr ""
-#: Engine/sread.c:1004
-msgid "Repeat cannot start inside of a macro (ignored)"
-msgstr ""
-
-#: Engine/sread.c:1019
+#: Engine/sread.c:1047
msgid "r: invalid repeat count"
msgstr ""
-#: Engine/sread.c:1021
+#: Engine/sread.c:1049
#, c-format
msgid "Repeats=%d\n"
msgstr ""
-#: Engine/sread.c:1063
+#: Engine/sread.c:1093
#, c-format
msgid "Named section >>>%s<<<\n"
msgstr ""
-#: Engine/sread.c:1079
+#: Engine/sread.c:1108
#, c-format
msgid "%d: File %s position %ld\n"
msgstr ""
-#: Engine/sread.c:1085
-#, c-format
-msgid "Ignoring name %s not in file\n"
-msgstr ""
-
-#: Engine/sread.c:1110
+#: Engine/sread.c:1133
#, c-format
msgid "Name %s not found"
msgstr ""
-#: Engine/sread.c:1112
+#: Engine/sread.c:1135
#, c-format
msgid "Duplicate %d: %s (%s,%ld)\n"
msgstr ""
-#: Engine/sread.c:1129
-#, c-format
-msgid "cannot open input file %s"
-msgstr ""
-
-#: Engine/sread.c:1149
+#: Engine/sread.c:1164
#, c-format
msgid "Warp_factor = %f\n"
msgstr ""
-#: Engine/sread.c:1174
+#: Engine/sread.c:1189
msgid "sread is confused on legal opcodes\n"
msgstr ""
-#: Engine/sread.c:1236
+#: Engine/sread.c:1251
msgid "No previous event for ^"
msgstr ""
-#: Engine/sread.c:1241
+#: Engine/sread.c:1256
#, c-format
msgid "illegal space following %s, zero substituted"
msgstr ""
-#: Engine/sread.c:1271
+#: Engine/sread.c:1286
#, c-format
msgid "ignoring '%s' in '%c' event"
msgstr ""
-#: Engine/sread.c:1274
+#: Engine/sread.c:1289
msgid "! invalid in p1, p2, or p3"
msgstr ""
-#: Engine/sread.c:1275 Engine/sread.c:1280 Engine/sread.c:1730
-#: Engine/sread.c:1753 Engine/sread.c:1767
+#: Engine/sread.c:1290 Engine/sread.c:1295 Engine/sread.c:1738
+#: Engine/sread.c:1761 Engine/sread.c:1775
msgid " remainder of line flushed\n"
msgstr ""
-#: Engine/sread.c:1279
+#: Engine/sread.c:1294
#, c-format
msgid "illegal character after !: '%c'"
msgstr ""
-#: Engine/sread.c:1358
+#: Engine/sread.c:1373
#, c-format
msgid "WARNING: instr %s not found, assuming insno = -1\n"
msgstr ""
-#: Engine/sread.c:1378
+#: Engine/sread.c:1393
msgid "sread: illegal use of carry, 0 substituted\n"
msgstr ""
-#: Engine/sread.c:1526
+#: Engine/sread.c:1539
msgid "Improper \\"
msgstr ""
-#: Engine/sread.c:1558
+#: Engine/sread.c:1570
msgid "Not #define"
msgstr ""
-#: Engine/sread.c:1620
+#: Engine/sread.c:1630
#, c-format
msgid "Macro %s with %d arguments defined\n"
msgstr ""
-#: Engine/sread.c:1631
+#: Engine/sread.c:1642
msgid "Not #include"
msgstr ""
-#: Engine/sread.c:1662
+#: Engine/sread.c:1671
#, c-format
msgid "Cannot open #include'd file %s"
msgstr ""
-#: Engine/sread.c:1673
+#: Engine/sread.c:1681
msgid "Not #undef"
msgstr ""
-#: Engine/sread.c:1692
+#: Engine/sread.c:1700
msgid "unknown # option"
msgstr ""
-#: Engine/sread.c:1729
+#: Engine/sread.c:1737
#, c-format
msgid "illegal opcode %c"
msgstr ""
-#: Engine/sread.c:1752
+#: Engine/sread.c:1760
#, c-format
msgid "unexpected char %c"
msgstr ""
-#: Engine/sread.c:1766
+#: Engine/sread.c:1774
msgid "illegally placed string"
msgstr ""
-#: Engine/sread.c:1773
+#: Engine/sread.c:1781
msgid "unmatched quote"
msgstr ""
-#: Engine/sread.c:1817
+#: Engine/sread.c:1825
msgid "sread: illegal number format: "
msgstr ""
-#: Engine/sread.c:1823
+#: Engine/sread.c:1831
msgid " zero substituted.\n"
msgstr ""
-#: Engine/swrite.c:123
+#: Engine/swrite.c:123 Engine/swritestr.c:134
#, c-format
msgid "swrite: unexpected opcode, section %d line %d\n"
msgstr ""
-#: Engine/swrite.c:209 Engine/swrite.c:249
+#: Engine/swrite.c:209 Engine/swrite.c:249 Engine/swritestr.c:220
+#: Engine/swritestr.c:260
#, c-format
msgid "swrite: output, sect%d line%d p%d makes illegal reference to "
msgstr ""
-#: Engine/swrite.c:216 Engine/swrite.c:255
+#: Engine/swrite.c:216 Engine/swrite.c:255 Engine/swritestr.c:227
+#: Engine/swritestr.c:266
msgid " Zero substituted\n"
msgstr ""
-#: Engine/swrite.c:313
+#: Engine/swrite.c:313 Engine/swritestr.c:324
#, c-format
msgid "swrite: output, sect%d line%d p%d has illegal ramp symbol\n"
msgstr ""
-#: Engine/swrite.c:317
+#: Engine/swrite.c:317 Engine/swritestr.c:328
#, c-format
msgid ""
"swrite: output, sect%d line%d p%d ramp has illegal forward or backward ref\n"
msgstr ""
-#: Engine/swrite.c:380 Engine/swrite.c:445
+#: Engine/swrite.c:380 Engine/swrite.c:445 Engine/swritestr.c:391
+#: Engine/swritestr.c:456
#, c-format
msgid "swrite: output, sect%d line%d p%d has illegal expramp symbol\n"
msgstr ""
-#: Engine/swrite.c:385 Engine/swrite.c:450
+#: Engine/swrite.c:385 Engine/swrite.c:450 Engine/swritestr.c:396
+#: Engine/swritestr.c:461
#, c-format
msgid ""
"swrite: output, sect%d line%d p%d expramp has illegal forward or backward "
"ref\n"
msgstr ""
-#: Engine/swrite.c:466
+#: Engine/swrite.c:466 Engine/swritestr.c:477
#, c-format
msgid "swrite: output, sect%d line%d p%d has illegally terminated string "
msgstr ""
-#: Engine/swrite.c:514
+#: Engine/swrite.c:514 Engine/swritestr.c:529
#, c-format
msgid "swrite: output, sect%d line%d p%d has illegal number "
msgstr ""
-#: Engine/swrite.c:521
+#: Engine/swrite.c:521 Engine/swritestr.c:536
msgid " String truncated\n"
msgstr ""
-#: Engine/symbtab.c:202
+#: Engine/symbtab.c:208
#, c-format
msgid "Type confusion for %s (%d,%d), replacing\n"
msgstr ""
-#: Engine/symbtab.c:333
+#: Engine/symbtab.c:345
#, c-format
msgid "Unknown word type for %s on line %d\n"
msgstr ""
@@ -2247,6 +2222,14 @@ msgstr ""
msgid "twarp: t segments exceed twarp array\n"
msgstr ""
+#: InOut/cmidi.c:233
+msgid "CoreMIDI real time MIDI plugin for Csound\n"
+msgstr ""
+
+#: InOut/cmidi.c:247
+msgid "rtmidi: CoreMIDI module enabled\n"
+msgstr ""
+
#: InOut/libsnd.c:486
msgid "error: no input file name"
msgstr ""
@@ -2270,54 +2253,69 @@ msgstr ""
msgid "audio_in %s has %d chnls, orch %d chnls_i"
msgstr ""
-#: InOut/libsnd.c:573
+#: InOut/libsnd.c:574
+#, c-format
+msgid "reading %d sample blks of %d-bit floats from %s \n"
+msgstr ""
+
+#: InOut/libsnd.c:578
#, c-format
msgid "reading %d-byte blks of %s from %s (%s)\n"
msgstr ""
-#: InOut/libsnd.c:608
+#: InOut/libsnd.c:614
msgid "Output file type changed to IRCAM for use in pipe\n"
msgstr ""
-#: InOut/libsnd.c:628
+#: InOut/libsnd.c:634
msgid "Failed to initialise real time audio output"
msgstr ""
-#: InOut/libsnd.c:669 InOut/libsnd.c:673
+#: InOut/libsnd.c:675 InOut/libsnd.c:679
#, c-format
msgid "sfinit: cannot open %s"
msgstr ""
-#: InOut/libsnd.c:733 util/srconv.c:485
+#: InOut/libsnd.c:741
+#, c-format
+msgid "writing %d sample blks of %d-bit floats to %s \n"
+msgstr ""
+
+#: InOut/libsnd.c:744 util/srconv.c:484
#, c-format
msgid "writing %d-byte blks of %s to %s"
msgstr ""
-#: InOut/libsnd.c:740 InOut/libsnd.c:810
+#: InOut/libsnd.c:749 InOut/libsnd.c:824
msgid " (raw)\n"
msgstr ""
-#: InOut/libsnd.c:803
+#: InOut/libsnd.c:815
+#, c-format
+msgid "%ld %d sample blks of %d-bit floats written to %s\n"
+msgstr ""
+
+#: InOut/libsnd.c:820
#, c-format
-msgid "%ld %d-byte soundblks of %s written to %s"
+msgid "%ld %d sample blks of %s written to %s"
msgstr ""
-#: InOut/libsnd.c:822
+#: InOut/libsnd.c:837
#, c-format
msgid "soundfile write returned bytecount of %d, not %d"
msgstr ""
-#: InOut/libsnd.c:825
+#: InOut/libsnd.c:840
msgid ""
"(disk may be full...\n"
" closing the file ...)"
msgstr ""
-#: InOut/libsnd.c:828 util/dnoise.c:1192
+#: InOut/libsnd.c:843 util/dnoise.c:1177
msgid "\t... closed\n"
msgstr ""
-#: InOut/libsnd.c:834
+#: InOut/libsnd.c:849
msgid "not writing to sound disk\n"
msgstr ""
@@ -2717,20 +2715,20 @@ msgstr ""
msgid "Error closing MIDI out device: %d (%s)"
msgstr ""
-#: InOut/midisend.c:171
+#: InOut/midisend.c:170
msgid " *** no callback for opening MIDI output"
msgstr ""
-#: InOut/midisend.c:173
+#: InOut/midisend.c:172
msgid " *** no callback for writing MIDI data"
msgstr ""
-#: InOut/midisend.c:179
+#: InOut/midisend.c:178
#, c-format
msgid " *** error opening MIDI out device: %d (%s)"
msgstr ""
-#: InOut/midisend.c:190
+#: InOut/midisend.c:189
#, c-format
msgid " *** error opening MIDI out file '%s'"
msgstr ""
@@ -2984,7 +2982,7 @@ msgstr ""
msgid "Opened MIDI output device file '%s'\n"
msgstr ""
-#: InOut/rtalsa.c:1101 InOut/rtcoreaudio.c:64 InOut/rtcoreaudio.c:74
+#: InOut/rtalsa.c:1101 InOut/rtcoreaudio.c:71 InOut/rtcoreaudio.c:81
msgid "warning... could not create global var\n"
msgstr ""
@@ -3008,64 +3006,82 @@ msgstr ""
msgid "rtmidi: devfile module enabled\n"
msgstr ""
-#: InOut/rtcoreaudio.c:83
+#: InOut/rtauhal.c:163
+#, c-format
+msgid "selected input device: %s \n"
+msgstr ""
+
+#: InOut/rtauhal.c:166
+#, c-format
+msgid "selected output device: %s \n"
+msgstr ""
+
+#: InOut/rtauhal.c:524
+msgid "AuHAL module: device closed\n"
+msgstr ""
+
+#: InOut/rtauhal.c:541
+msgid "rtaudio: coreaaudio-AuHAL module enabled\n"
+msgstr ""
+
+#: InOut/rtcoreaudio.c:90
msgid ""
"CoreAudio real-time audio module for Csound\n"
"by Victor Lazzarini\n"
msgstr ""
-#: InOut/rtcoreaudio.c:105
+#: InOut/rtcoreaudio.c:112
msgid "rtaudio: CoreAudio module enabled\n"
msgstr ""
-#: InOut/rtcoreaudio.c:254
+#: InOut/rtcoreaudio.c:261
#, c-format
msgid "selected device: %u \n"
msgstr ""
-#: InOut/rtcoreaudio.c:263
+#: InOut/rtcoreaudio.c:270
#, c-format
msgid "CoreAudio module: opening %s \n"
msgstr ""
-#: InOut/rtcoreaudio.c:297
+#: InOut/rtcoreaudio.c:304
msgid " *** CoreAudio: open: could not set buffer size\n"
msgstr ""
-#: InOut/rtcoreaudio.c:342
+#: InOut/rtcoreaudio.c:349
#, c-format
msgid " *** CoreAudio: open: could not set device parameter sr: %d \n"
msgstr ""
-#: InOut/rtcoreaudio.c:344
+#: InOut/rtcoreaudio.c:351
#, c-format
msgid ""
" *** CoreAudio: current device sampling rate is:%d \n"
" try setting the above value in your csound orchestra \n"
msgstr ""
-#: InOut/rtcoreaudio.c:353
+#: InOut/rtcoreaudio.c:360
#, c-format
msgid "CoreAudio module: sr set to %d with %d audio channels \n"
msgstr ""
-#: InOut/rtcoreaudio.c:374 InOut/rtcoreaudio.c:387 InOut/rtcoreaudio.c:432
-#: InOut/rtcoreaudio.c:452
+#: InOut/rtcoreaudio.c:381 InOut/rtcoreaudio.c:394 InOut/rtcoreaudio.c:439
+#: InOut/rtcoreaudio.c:459
msgid " *** CoreAudio: open: memory allocation failure\n"
msgstr ""
-#: InOut/rtcoreaudio.c:414
+#: InOut/rtcoreaudio.c:421
#, c-format
msgid ""
"CoreAudio module: device open with %d buffers of %d frames\n"
"==========================================================\n"
msgstr ""
-#: InOut/rtcoreaudio.c:552
+#: InOut/rtcoreaudio.c:559
msgid "coreaudio module: closing device...\n"
msgstr ""
-#: InOut/rtcoreaudio.c:566
+#: InOut/rtcoreaudio.c:573
msgid "coreaudio module: device closed\n"
msgstr ""
@@ -3465,294 +3481,12 @@ msgstr ""
msgid "rtaudio: WinMM module enabled\n"
msgstr ""
-#: InOut/virtual_keyboard/virtual_keyboard.cpp:435
-msgid "virtual_keyboard.cpp: error allocating FLTK flags"
-msgstr ""
-
-#: InOut/virtual_keyboard/virtual_keyboard.cpp:443 InOut/winFLTK.c:125
-#: InOut/winFLTK.c:139
-#, c-format
-msgid "Error registering opcode '%s'"
-msgstr ""
-
-#: InOut/widgets.cpp:1081
-msgid ""
-"Invalid snapshot. Perhaps you modified orchestra widget code after you saved "
-"the snapshot bank."
-msgstr ""
-
-#: InOut/widgets.cpp:1226
-msgid "No name for FLbutbank"
-msgstr ""
-
-#: InOut/widgets.cpp:1466
-msgid "FLsetsnap: invalid table"
-msgstr ""
-
-#: InOut/widgets.cpp:1504
-msgid ""
-"Saving could overwrite the old file.\n"
-"Are you sure to save ?"
-msgstr ""
-
-#: InOut/widgets.cpp:1516
-msgid ""
-"Saving could overwrite the old file.\n"
-"Are you sure you want to save ?"
-msgstr ""
-
-#: InOut/widgets.cpp:1518
-msgid "No"
-msgstr ""
-
-#: InOut/widgets.cpp:1518
-msgid "Yes"
-msgstr ""
-
-#: InOut/widgets.cpp:1527
-msgid "FLsavesnap: cannot open file"
-msgstr ""
-
-#: InOut/widgets.cpp:1580
-msgid "FLloadsnap: cannot open file"
-msgstr ""
-
-#: InOut/widgets.cpp:1625
-msgid ""
-"unmatched widget, probably due to a modified orchestra. Modifying an "
-"orchestra makes it incompatible with old snapshot files"
-msgstr ""
-
-#: InOut/widgets.cpp:1994
-msgid "end of widget thread\n"
-msgstr ""
-
-#: InOut/widgets.cpp:2020
-msgid "FLrun was already called"
-msgstr ""
-
-#: InOut/widgets.cpp:2023
-msgid "FL_run: memory allocation failure"
-msgstr ""
-
-#: InOut/widgets.cpp:2125 InOut/widgets.cpp:2145
-msgid "Error: Unable to fork process\n"
-msgstr ""
-
-#: InOut/widgets.cpp:2545
-msgid "FLpanel_end: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2548
-msgid ""
-"FLpanel_end: invalid stack count: verify FLpanel/FLpanel_end count and "
-"placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2573 InOut/widgets.cpp:2604
-msgid "FLscroll_end: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2576
-msgid ""
-"FLscroll_end: invalid stack count: verify FLscroll/FLscroll_end count and "
-"placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2607
-msgid ""
-"FLtabs_end: invalid stack count: verify FLtabs/FLtabs_end count and placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2651
-msgid "FLgroup_end: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2654
-msgid ""
-"FLgroup_end: invalid stack count: verify FLgroup/FLgroup_end count and "
-"placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2684
-msgid "FLpack_end: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2687
-msgid ""
-"FLpack_end: invalid stack count: verify FLpack/FLpack_end count and placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2840
-msgid "FLvalue cannot be set by FLsetVal.\n"
-msgstr ""
-
-#: InOut/widgets.cpp:2857
-#, c-format
-msgid "(fl_setWidgetValuei): not fully implemented yet; exp=%d"
-msgstr ""
-
-#: InOut/widgets.cpp:2876
-msgid "FLvalue cannot be set by FLsetVal\n"
-msgstr ""
-
-#: InOut/widgets.cpp:2893
-#, c-format
-msgid "(fl_setWidgetValue_set): not fully implemented yet; exp=%d"
-msgstr ""
-
-#: InOut/widgets.cpp:3242 InOut/widgets.cpp:4648
-msgid "FLslider exponential, using non-labeled slider"
-msgstr ""
-
-#: InOut/widgets.cpp:3264
-msgid "FLslider: invalid slider type"
-msgstr ""
-
-#: InOut/widgets.cpp:3276 InOut/widgets.cpp:4072
-msgid "FLslider: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:3337 InOut/widgets.cpp:4399 InOut/widgets.cpp:4610
-#: InOut/widgets.cpp:4787
-msgid "invalid ZAK space allocation"
-msgstr ""
-
-#: InOut/widgets.cpp:3451
-msgid "FLslidBnk: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:3548 InOut/widgets.cpp:3581
-msgid "FLjoy X axe: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:3675
-msgid "FLknob: invalid knob type"
-msgstr ""
-
-#: InOut/widgets.cpp:3690
-msgid "FLknob: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:3790 InOut/widgets.cpp:3912
-#, c-format
-msgid "FLbutton \"%s\" ignoring snapshot capture retrieve"
-msgstr ""
-
-#: InOut/widgets.cpp:3831
-msgid "FLbutton: invalid button type"
-msgstr ""
-
-#: InOut/widgets.cpp:3863
-msgid "FLcloseButton: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:3882
-#, c-format
-msgid "Command Found: %s\n"
-msgstr ""
-
-#: InOut/widgets.cpp:3954
-msgid "FLbuttonBank: invalid button type"
-msgstr ""
-
-#: InOut/widgets.cpp:3992
-#, c-format
-msgid "FLcount \"%s\" ignoring snapshot capture retrieve"
-msgstr ""
-
-#: InOut/widgets.cpp:4059
-msgid "FLroller: invalid roller type"
-msgstr ""
-
-#: InOut/widgets.cpp:4254
-msgid "FLhvsBox: a square area must be delimited by 2 lines at least"
-msgstr ""
-
-#: InOut/widgets.cpp:4302
-msgid "FLkeyIn: invalid table number"
-msgstr ""
-
-#: InOut/widgets.cpp:4305
-msgid "FLkeyIn: table too short!"
-msgstr ""
-
-#: InOut/widgets.cpp:4522
-msgid "FLvslidBnk: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:4698 InOut/widgets.cpp:4875
-msgid "FLsliderBank: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:4825
-msgid "FLslidBnk2: FLslider exponential, using non-labeled slider"
-msgstr ""
-
-#: InOut/widgets.cpp:4955 InOut/widgets.cpp:5018
-msgid "FLsldBnkSet: invalid table number"
-msgstr ""
-
-#: InOut/widgets.cpp:4959 InOut/widgets.cpp:5022
-msgid "FLslidBnkSet: table too short!"
-msgstr ""
-
-#: InOut/widgets.cpp:4967 InOut/widgets.cpp:5031
-msgid "FLsldBnkSet: invalid outable number"
-msgstr ""
-
-#: InOut/widgets.cpp:4972 InOut/widgets.cpp:5037
-msgid "FLslidBnkSet: too many sliders to reset!"
-msgstr ""
-
-#: InOut/widgets.cpp:4995
-msgid "FLslidBnkSet: function mapping not available"
-msgstr ""
-
-#: InOut/widgets.cpp:5064 InOut/widgets.cpp:5149 InOut/widgets.cpp:5236
-msgid ""
-"FLslidBnk2Setk: value out of range: function mapping requires a 0 to 1 range "
-"for input"
-msgstr ""
-
-#: InOut/widgets.cpp:5093
-msgid "FLsldBnkSetk: invalid table number"
-msgstr ""
-
-#: InOut/widgets.cpp:5097 InOut/widgets.cpp:5183
-msgid "FLslidBnkSetk: table too short!"
-msgstr ""
-
-#: InOut/widgets.cpp:5105
-msgid "FLsldBnkSetk: invalid outable number"
-msgstr ""
-
-#: InOut/widgets.cpp:5111 InOut/widgets.cpp:5197
-msgid "FLslidBnkSetk: too many sliders to reset!"
-msgstr ""
-
-#: InOut/widgets.cpp:5179
-msgid "FLslidBnkSetk: invalid table number"
-msgstr ""
-
-#: InOut/widgets.cpp:5191
-msgid "FLslidBnkSetk: invalid outable number"
-msgstr ""
-
-#: InOut/widgets.cpp:5268
-msgid "FLxyin: none of X limits can be zero in exponential mode!"
-msgstr ""
-
-#: InOut/widgets.cpp:5294
-msgid "FLxyin: none of Y limits can be zero in exponential mode!"
-msgstr ""
-
#: InOut/winascii.c:75
#, c-format
msgid "%s\t%ld points, scalemax %5.3f\n"
msgstr ""
-#: InOut/windin.c:46 Opcodes/pitch.c:82 Opcodes/spectra.c:76
+#: InOut/windin.c:46 Opcodes/pitch.c:83 Opcodes/spectra.c:78
msgid "illegal iprd"
msgstr ""
@@ -3795,46 +3529,60 @@ msgstr ""
msgid "widgets.cpp: error allocating FLTK flags"
msgstr ""
-#: OOps/aops.c:95 OOps/aops.c:119
+#: InOut/winFLTK.c:124 InOut/winFLTK.c:137
+#: InOut/virtual_keyboard/virtual_keyboard.cpp:443
+#, c-format
+msgid "Error registering opcode '%s'"
+msgstr ""
+
+#: InOut/virtual_keyboard/virtual_keyboard.cpp:435
+msgid "virtual_keyboard.cpp: error allocating FLTK flags"
+msgstr ""
+
+#: OOps/aops.c:120 OOps/aops.c:144
#, c-format
msgid "Cannot be more In arguments than Out in init (%d,%d)"
msgstr ""
-#: OOps/aops.c:175 OOps/aops.c:194
+#: OOps/aops.c:200 OOps/aops.c:219
#, c-format
msgid "Index %d out of range [0,%d] in t[]\n"
msgstr ""
-#: OOps/aops.c:184
-msgid "Vector notinitialised\n"
+#: OOps/aops.c:209
+msgid "Vector not initialised\n"
msgstr ""
-#: OOps/aops.c:686
+#: OOps/aops.c:711
msgid "non-looping sample"
msgstr ""
-#: OOps/aops.c:828 OOps/aops.c:856
+#: OOps/aops.c:853 OOps/aops.c:881
#, c-format
msgid "No tuning table %d"
msgstr ""
-#: OOps/aops.c:901 OOps/aops.c:939
+#: OOps/aops.c:926 OOps/aops.c:964
msgid "cpstun: invalid table"
msgstr ""
-#: OOps/aops.c:1189
+#: OOps/aops.c:1214
msgid "Input and output argument count differs in inch"
msgstr ""
-#: OOps/aops.c:1193
+#: OOps/aops.c:1218
#, c-format
msgid "Input channel %d too large; ignored"
msgstr ""
-#: OOps/aops.c:1667
+#: OOps/aops.c:1698
msgid "k-rate invalue ChannelName cannot start with $"
msgstr ""
+#: OOps/aops.c:1835
+msgid "Unknown functuon called"
+msgstr ""
+
#: OOps/bus.c:313 OOps/bus.c:345
msgid "chani: invalid index"
msgstr ""
@@ -4117,7 +3865,7 @@ msgstr ""
msgid "dispfft: not initialised"
msgstr ""
-#: OOps/disprep.c:435 Opcodes/spectra.c:516
+#: OOps/disprep.c:435 Opcodes/spectra.c:518
msgid "illegal iperiod"
msgstr ""
@@ -4181,15 +3929,15 @@ msgstr ""
msgid " *** fftlib.c: internal error: invalid FFT size: %d"
msgstr ""
-#: OOps/goto_ops.c:92
+#: OOps/goto_ops.c:93
msgid "negative time period"
msgstr ""
-#: OOps/goto_ops.c:182
+#: OOps/goto_ops.c:186
msgid "turnoff2: invalid instrument number"
msgstr ""
-#: OOps/goto_ops.c:187
+#: OOps/goto_ops.c:191
msgid "turnoff2: invalid mode parameter"
msgstr ""
@@ -4206,7 +3954,7 @@ msgid "cpstabm: invalid modulator table"
msgstr ""
#: OOps/midiops.c:304 OOps/midiops.c:314 OOps/midiops.c:334 OOps/midiops.c:344
-#: OOps/midiops.c:421 OOps/midiops.c:435 Opcodes/gab/sliderTable.c:563
+#: OOps/midiops.c:421 OOps/midiops.c:435 Opcodes/gab/sliderTable.c:567
#: Opcodes/midiops2.c:56 Opcodes/midiops2.c:73 Opcodes/midiops2.c:111
#: Opcodes/midiops2.c:145 Opcodes/midiops2.c:206 Opcodes/midiops2.c:237
#: Opcodes/midiops2.c:298 Opcodes/midiops2.c:317 Opcodes/midiops2.c:357
@@ -4222,7 +3970,7 @@ msgstr ""
msgid "illegal mrtmsg argument"
msgstr ""
-#: OOps/midiout.c:383
+#: OOps/midiout.c:389
#, c-format
msgid "out contr14 msb:%x lsb:%x\n"
msgstr ""
@@ -4684,148 +4432,148 @@ msgstr ""
msgid "Unknown window type; replaced by rectangular\n"
msgstr ""
-#: OOps/pvsanal.c:1025
+#: OOps/pvsanal.c:1027
msgid "pvsynth: Not Initialised.\n"
msgstr ""
-#: OOps/remote.c:100
+#: OOps/remote.c:103
msgid "insufficient memory to initialise remote globals."
msgstr ""
-#: OOps/remote.c:109
+#: OOps/remote.c:112
msgid "insufficient memory to initialise outgoing socket table."
msgstr ""
-#: OOps/remote.c:116
+#: OOps/remote.c:119
msgid "insufficient memory to initialise incoming socket table."
msgstr ""
-#: OOps/remote.c:124
+#: OOps/remote.c:127
msgid "insufficient memory to initialise insrfd_list."
msgstr ""
-#: OOps/remote.c:132
+#: OOps/remote.c:135
msgid "insufficient memory to initialise chnrfd_list."
msgstr ""
-#: OOps/remote.c:139
+#: OOps/remote.c:142
msgid "insufficient memory to initialise insrfd table."
msgstr ""
-#: OOps/remote.c:146
+#: OOps/remote.c:149
msgid "insufficient memory to initialise chnrfd table."
msgstr ""
-#: OOps/remote.c:153
+#: OOps/remote.c:156
msgid "insufficient memory to initialise local ip address."
msgstr ""
-#: OOps/remote.c:161
+#: OOps/remote.c:164
msgid "unable to get local ip address."
msgstr ""
-#: OOps/remote.c:222
+#: OOps/remote.c:225
msgid "could not open remote port"
msgstr ""
-#: OOps/remote.c:237
+#: OOps/remote.c:240
msgid "---> Could not connect \n"
msgstr ""
-#: OOps/remote.c:241
+#: OOps/remote.c:244
msgid "---> Failed all attempts to connect. \n"
msgstr ""
-#: OOps/remote.c:244
+#: OOps/remote.c:247
msgid "---> Connected. \n"
msgstr ""
-#: OOps/remote.c:258 Opcodes/socksend.c:232
+#: OOps/remote.c:261 Opcodes/socksend.c:305
msgid "write to socket failed"
msgstr ""
-#: OOps/remote.c:278
+#: OOps/remote.c:281
msgid "creating socket\n"
msgstr ""
-#: OOps/remote.c:280
+#: OOps/remote.c:283
msgid "created socket \n"
msgstr ""
-#: OOps/remote.c:292
+#: OOps/remote.c:295
msgid "setting socket option to reuse the addresse \n"
msgstr ""
-#: OOps/remote.c:309 Opcodes/sockrecv.c:133 Opcodes/sockrecv.c:223
-#: Opcodes/socksend.c:211
+#: OOps/remote.c:312 Opcodes/sockrecv.c:141 Opcodes/sockrecv.c:237
+#: Opcodes/socksend.c:284
msgid "bind failed"
msgstr ""
-#: OOps/remote.c:313 Opcodes/socksend.c:216
+#: OOps/remote.c:316 Opcodes/socksend.c:289
msgid "listen failed"
msgstr ""
-#: OOps/remote.c:318 Opcodes/socksend.c:222
+#: OOps/remote.c:321 Opcodes/socksend.c:295
msgid "accept failed"
msgstr ""
-#: OOps/remote.c:321
+#: OOps/remote.c:324
#, c-format
msgid "accepted, conn=%d \n"
msgstr ""
-#: OOps/remote.c:353 OOps/remote.c:374 OOps/remote.c:417 OOps/remote.c:449
-#: OOps/remote.c:489
+#: OOps/remote.c:356 OOps/remote.c:377 OOps/remote.c:420 OOps/remote.c:452
+#: OOps/remote.c:492
msgid "failed to initialise remote globals."
msgstr ""
-#: OOps/remote.c:378 OOps/remote.c:421
+#: OOps/remote.c:381 OOps/remote.c:424
msgid "missing instr nos"
msgstr ""
-#: OOps/remote.c:390 OOps/remote.c:430
+#: OOps/remote.c:393 OOps/remote.c:433
msgid "illegal instr no"
msgstr ""
-#: OOps/remote.c:393
+#: OOps/remote.c:396
msgid "insno already remote"
msgstr ""
-#: OOps/remote.c:403 OOps/remote.c:474
+#: OOps/remote.c:406 OOps/remote.c:477
msgid "Failed to open port to listen"
msgstr ""
-#: OOps/remote.c:423
+#: OOps/remote.c:426
#, c-format
msgid "*** str1: %s own:%s\n"
msgstr ""
-#: OOps/remote.c:433
+#: OOps/remote.c:436
msgid "insno already specific remote"
msgstr ""
-#: OOps/remote.c:453 OOps/remote.c:493
+#: OOps/remote.c:456 OOps/remote.c:496
msgid "missing channel nos"
msgstr ""
-#: OOps/remote.c:463 OOps/remote.c:502
+#: OOps/remote.c:466 OOps/remote.c:505
msgid "illegal channel no"
msgstr ""
-#: OOps/remote.c:466
+#: OOps/remote.c:469
msgid "channel already remote"
msgstr ""
-#: OOps/remote.c:505
+#: OOps/remote.c:508
msgid "channel already specific remote"
msgstr ""
-#: OOps/remote.c:531 OOps/remote.c:555 OOps/remote.c:579
+#: OOps/remote.c:534 OOps/remote.c:558 OOps/remote.c:582
msgid "CLsend failed"
msgstr ""
-#: OOps/remote.c:645 OOps/remote.c:653 OOps/remote.c:661 OOps/remote.c:669
-#: OOps/remote.c:677
+#: OOps/remote.c:648 OOps/remote.c:656 OOps/remote.c:664 OOps/remote.c:672
+#: OOps/remote.c:680
msgid ""
"*** This version of Csound was not compiled with remote event support ***\n"
msgstr ""
@@ -4934,53 +4682,53 @@ msgstr ""
msgid "linseg: not initialised (arate)\n"
msgstr ""
-#: OOps/ugens1.c:463 OOps/ugens1.c:465 OOps/ugens1.c:512 OOps/ugens1.c:514
-#: OOps/ugens1.c:564 OOps/ugens1.c:566 OOps/ugens1.c:610 OOps/ugens1.c:612
-#: OOps/ugens1.c:774 OOps/ugens1.c:776
+#: OOps/ugens1.c:464 OOps/ugens1.c:466 OOps/ugens1.c:513 OOps/ugens1.c:515
+#: OOps/ugens1.c:565 OOps/ugens1.c:567 OOps/ugens1.c:611 OOps/ugens1.c:613
+#: OOps/ugens1.c:775 OOps/ugens1.c:777
#, c-format
msgid "ival%d is zero"
msgstr ""
-#: OOps/ugens1.c:466 OOps/ugens1.c:515 OOps/ugens1.c:567 OOps/ugens1.c:613
-#: OOps/ugens1.c:777
+#: OOps/ugens1.c:467 OOps/ugens1.c:516 OOps/ugens1.c:568 OOps/ugens1.c:614
+#: OOps/ugens1.c:778
#, c-format
msgid "ival%d sign conflict"
msgstr ""
-#: OOps/ugens1.c:495 OOps/ugens1.c:544
+#: OOps/ugens1.c:496 OOps/ugens1.c:545
#, c-format
msgid "Breakpoint time %f not valid"
msgstr ""
-#: OOps/ugens1.c:706
+#: OOps/ugens1.c:707
msgid "expseg (krate): not initialised"
msgstr ""
-#: OOps/ugens1.c:732
+#: OOps/ugens1.c:733
msgid "expseg (arate): not initialised"
msgstr ""
-#: OOps/ugens1.c:1013 OOps/ugens1.c:1149 OOps/ugens1.c:1311
+#: OOps/ugens1.c:1014 OOps/ugens1.c:1150 OOps/ugens1.c:1312
msgid "non-positive iatdec"
msgstr ""
-#: OOps/ugens1.c:1106 OOps/ugens1.c:1273
+#: OOps/ugens1.c:1107 OOps/ugens1.c:1274
msgid "ixmod out of range."
msgstr ""
-#: OOps/ugens1.c:1134 OOps/ugens1.c:1301
+#: OOps/ugens1.c:1135 OOps/ugens1.c:1302
msgid "rise func ends with zero"
msgstr ""
-#: OOps/ugens1.c:1178 OOps/ugens1.c:1257
+#: OOps/ugens1.c:1179 OOps/ugens1.c:1258
msgid "envlpx rise func ends with zero"
msgstr ""
-#: OOps/ugens1.c:1199 OOps/ugens1.c:1254
+#: OOps/ugens1.c:1200 OOps/ugens1.c:1255
msgid "envlpx(krate): not initialised"
msgstr ""
-#: OOps/ugens2.c:48 OOps/ugens2.c:61 Opcodes/shape.c:377
+#: OOps/ugens2.c:48 OOps/ugens2.c:61 Opcodes/shape.c:379
msgid "init phase truncation\n"
msgstr ""
@@ -5044,8 +4792,8 @@ msgid "oscil(krate): not initialised"
msgstr ""
#: OOps/ugens2.c:1139 OOps/ugens2.c:1167 OOps/ugens2.c:1192 OOps/ugens2.c:1219
-#: Opcodes/pitch.c:1579 Opcodes/pitch.c:1606 Opcodes/pitch.c:1633
-#: Opcodes/pitch.c:1662
+#: Opcodes/pitch.c:1580 Opcodes/pitch.c:1607 Opcodes/pitch.c:1634
+#: Opcodes/pitch.c:1663
msgid "oscil: not initialised"
msgstr ""
@@ -5161,7 +4909,7 @@ msgstr ""
msgid "Seeding from current time %lu\n"
msgstr ""
-#: OOps/ugens5.c:198 OOps/ugens5.c:260 Opcodes/gab/gab.c:45 Opcodes/ugsc.c:188
+#: OOps/ugens5.c:198 OOps/ugens5.c:260 Opcodes/gab/gab.c:47 Opcodes/ugsc.c:186
#, c-format
msgid "illegal reson iscl value, %f"
msgstr ""
@@ -5393,8 +5141,8 @@ msgstr ""
msgid "Table no. < 1 dft=%.2f sft=%.2f"
msgstr ""
-#: OOps/ugrw1.c:1781 OOps/ugrw1.c:1822 Opcodes/fareyseq.c:455
-#: Opcodes/fareyseq.c:477
+#: OOps/ugrw1.c:1781 OOps/ugrw1.c:1822 Opcodes/fareyseq.c:453
+#: Opcodes/fareyseq.c:475
#, c-format
msgid "Source sft table %.2f not found."
msgstr ""
@@ -5624,19 +5372,19 @@ msgstr ""
msgid "reverbx: not initialised"
msgstr ""
-#: Opcodes/ambicode1.c:80
+#: Opcodes/ambicode1.c:82
msgid "The numbers of input and output arguments are not valid."
msgstr ""
-#: Opcodes/ambicode1.c:163
+#: Opcodes/ambicode1.c:165
msgid "The number of input arguments is not valid."
msgstr ""
-#: Opcodes/ambicode1.c:167
+#: Opcodes/ambicode1.c:169
msgid "The isetup value should be between 1 and 5."
msgstr ""
-#: Opcodes/ambicode1.c:193
+#: Opcodes/ambicode1.c:195
msgid "The output channel count does not match the isetup value."
msgstr ""
@@ -5676,16 +5424,16 @@ msgstr ""
msgid "Not supported setup number!"
msgstr ""
-#: Opcodes/babo.c:740
+#: Opcodes/babo.c:742
#, c-format
msgid "Babo: resonator dimensions are incorrect (%.1f, %.1f, %.1f)"
msgstr ""
-#: Opcodes/bilbar.c:82
+#: Opcodes/bilbar.c:83
msgid "No data to continue"
msgstr ""
-#: Opcodes/bilbar.c:108
+#: Opcodes/bilbar.c:109
msgid "Ends must be clamped(1), pivoting(2) or free(3)"
msgstr ""
@@ -5698,8 +5446,8 @@ msgstr ""
msgid "DLineN: Delay length too big ... setting to maximum length of %ld.\n"
msgstr ""
-#: Opcodes/bowedbar.c:98 Opcodes/physmod.c:489
-msgid "unknown lowest frequency for bowed string -- assuming 50Hz\n"
+#: Opcodes/bowedbar.c:98
+msgid "unknown lowest frequency for bowed bar -- assuming 50Hz\n"
msgstr ""
#: Opcodes/clfilt.c:53
@@ -5777,17 +5525,17 @@ msgstr ""
msgid "Unknown control %d"
msgstr ""
-#: Opcodes/cpumeter.c:73
+#: Opcodes/cpumeter.c:77
#, c-format
msgid "Failed to open /proc/stat: %s"
msgstr ""
-#: Opcodes/cpumeter.c:75 Opcodes/cpumeter.c:80 Opcodes/cpumeter.c:107
-#: Opcodes/cpumeter.c:147
+#: Opcodes/cpumeter.c:79 Opcodes/cpumeter.c:84 Opcodes/cpumeter.c:111
+#: Opcodes/cpumeter.c:151
msgid "failed /proc/stat read"
msgstr ""
-#: Opcodes/crossfm.c:33
+#: Opcodes/crossfm.c:34
msgid "crossfm: ftable not found"
msgstr ""
@@ -5828,31 +5576,31 @@ msgstr ""
msgid "insufficient arguments for fareytable"
msgstr ""
-#: Opcodes/fareyseq.c:250 Opcodes/fareyseq.c:300
+#: Opcodes/fareyseq.c:251 Opcodes/fareyseq.c:301
#, c-format
msgid "Farey: Table no. < 1 dft=%.2f sft=%.2f"
msgstr ""
-#: Opcodes/fareyseq.c:255
+#: Opcodes/fareyseq.c:256
#, c-format
msgid "Farey: Filter type < 1 dft=%.2f sft=%.2f"
msgstr ""
-#: Opcodes/fareyseq.c:270 Opcodes/fareyseq.c:318
+#: Opcodes/fareyseq.c:271 Opcodes/fareyseq.c:319
#, c-format
msgid "Farey: Destination dft table %.2f not found."
msgstr ""
-#: Opcodes/fareyseq.c:281 Opcodes/fareyseq.c:329
+#: Opcodes/fareyseq.c:282 Opcodes/fareyseq.c:330
#, c-format
msgid "Farey: Source sft table %.2f not found."
msgstr ""
-#: Opcodes/fareyseq.c:305
+#: Opcodes/fareyseq.c:306
msgid "Farey: Filter type < 1"
msgstr ""
-#: Opcodes/fareyseq.c:447 Opcodes/fareyseq.c:468
+#: Opcodes/fareyseq.c:445 Opcodes/fareyseq.c:466
#, c-format
msgid "Table no. < 1 sft=%.2f"
msgstr ""
@@ -5960,45 +5708,45 @@ msgstr ""
msgid "follow - zero length!"
msgstr ""
-#: Opcodes/fout.c:59
+#: Opcodes/fout.c:60
#, c-format
msgid "Closing file '%s'...\n"
msgstr ""
-#: Opcodes/fout.c:101
+#: Opcodes/fout.c:102
msgid "invalid file handle"
msgstr ""
-#: Opcodes/fout.c:108 Opcodes/fout.c:420
+#: Opcodes/fout.c:109 Opcodes/fout.c:421
msgid "invalid file name"
msgstr ""
-#: Opcodes/fout.c:165
+#: Opcodes/fout.c:166
#, c-format
msgid "error opening file '%s'"
msgstr ""
-#: Opcodes/fout.c:192
+#: Opcodes/fout.c:193
#, c-format
msgid "error opening sound file '%s'"
msgstr ""
-#: Opcodes/fout.c:429
+#: Opcodes/fout.c:430
#, c-format
msgid "cannot close '%s': not found in list of open files"
msgstr ""
-#: Opcodes/fout.c:440
+#: Opcodes/fout.c:441
#, c-format
msgid "cannot close file #%d: not a valid handle"
msgstr ""
-#: Opcodes/fout.c:447
+#: Opcodes/fout.c:448
#, c-format
msgid "file #%d (%s) is in use, will be closed when released"
msgstr ""
-#: Opcodes/fout.c:476 Opcodes/fout.c:479 Opcodes/fout.c:550 Opcodes/fout.c:553
+#: Opcodes/fout.c:477 Opcodes/fout.c:480 Opcodes/fout.c:551 Opcodes/fout.c:554
msgid "fouti: invalid file handle"
msgstr ""
@@ -6076,554 +5824,688 @@ msgstr ""
msgid "ftsave: failed to write file"
msgstr ""
-#: Opcodes/gab/gab.c:109
+#: Opcodes/gab/gab.c:111
msgid "fastab: incorrect table number"
msgstr ""
-#: Opcodes/gab/gab.c:132 Opcodes/gab/gab.c:141 Opcodes/gab/gab.c:171
+#: Opcodes/gab/gab.c:134 Opcodes/gab/gab.c:143 Opcodes/gab/gab.c:173
msgid "tabw off end"
msgstr ""
-#: Opcodes/gab/gab.c:157 Opcodes/gab/gab.c:225 Opcodes/gab/gab.c:234
+#: Opcodes/gab/gab.c:159 Opcodes/gab/gab.c:227 Opcodes/gab/gab.c:236
msgid "tab off end"
msgstr ""
-#: Opcodes/gab/gab.c:183
+#: Opcodes/gab/gab.c:185
msgid "tab_i: incorrect table number"
msgstr ""
-#: Opcodes/gab/gab.c:190
-msgid "tab_i off end"
+#: Opcodes/gab/gab.c:192
+#, c-format
+msgid "tab_i off end: table number: %d\n"
msgstr ""
-#: Opcodes/gab/gab.c:202
+#: Opcodes/gab/gab.c:204
msgid "tabw_i: incorrect table number"
msgstr ""
-#: Opcodes/gab/gab.c:209
+#: Opcodes/gab/gab.c:211
msgid "tabw_i off end"
msgstr ""
-#: Opcodes/gab/gab.c:247
+#: Opcodes/gab/gab.c:249
msgid "tab_init: incorrect table number"
msgstr ""
-#: Opcodes/gab/gab.c:316
+#: Opcodes/gab/gab.c:318
msgid "printi parameter was not a \"quoted string\""
msgstr ""
-#: Opcodes/gab/gab.c:423
+#: Opcodes/gab/gab.c:425
msgid "adsynt2: wavetable not found!"
msgstr ""
-#: Opcodes/gab/gab.c:435
+#: Opcodes/gab/gab.c:437
msgid "adsynt2: freqtable not found!"
msgstr ""
-#: Opcodes/gab/gab.c:440
+#: Opcodes/gab/gab.c:442
msgid "adsynt2: partial count is greater than freqtable size!"
msgstr ""
-#: Opcodes/gab/gab.c:449
+#: Opcodes/gab/gab.c:451
msgid "adsynt2: amptable not found!"
msgstr ""
-#: Opcodes/gab/gab.c:454
+#: Opcodes/gab/gab.c:456
msgid "adsynt2: partial count is greater than amptable size!"
msgstr ""
-#: Opcodes/gab/gab.c:499
+#: Opcodes/gab/gab.c:501
msgid "adsynt2: not initialised"
msgstr ""
-#: Opcodes/gab/gab.c:741
+#: Opcodes/gab/gab.c:743
msgid "max_k: invalid imaxflag value"
msgstr ""
-#: Opcodes/gab/hvs.c:68
+#: Opcodes/gab/hvs.c:70
msgid "hvs1: a line segment must be delimited by 2 points at least"
msgstr ""
-#: Opcodes/gab/hvs.c:150
+#: Opcodes/gab/hvs.c:152
msgid "hvs2: a square area must be delimited by 2 lines at least"
msgstr ""
-#: Opcodes/gab/hvs.c:246
+#: Opcodes/gab/hvs.c:248
msgid "hvs3: a square area must be delimited by 2 lines at least"
msgstr ""
-#: Opcodes/gab/hvs.c:389
+#: Opcodes/gab/hvs.c:390
msgid "vphaseseg: the first function is invalid or missing"
msgstr ""
-#: Opcodes/gab/hvs.c:396
+#: Opcodes/gab/hvs.c:398 Opcodes/gab/vectorial.c:2301
msgid "vphaseseg: invalid num. of elements"
msgstr ""
-#: Opcodes/gab/hvs.c:414
+#: Opcodes/gab/hvs.c:416
msgid "vphaseseg: function invalid or missing"
msgstr ""
-#: Opcodes/gab/newgabopc.c:39 Opcodes/gab/newgabopc.c:54
+#: Opcodes/gab/newgabopc.c:40 Opcodes/gab/newgabopc.c:55
msgid "vtable1: incorrect table number"
msgstr ""
-#: Opcodes/gab/newgabopc.c:359
+#: Opcodes/gab/newgabopc.c:241 Opcodes/gab/newgabopc.c:296
+msgid "copyTabElems: incorrect destination table number"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:246 Opcodes/gab/newgabopc.c:301
+msgid ""
+"copyTabElems: destination table too short or number of elements to copy too "
+"big"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:252 Opcodes/gab/newgabopc.c:306
+msgid "copyTabElems: incorrect source table number"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:257 Opcodes/gab/newgabopc.c:310
+msgid ""
+"copyTabElems: source table size less than the number of elements to copy"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:273 Opcodes/gab/newgabopc.c:318
+msgid "copyTabElems: source table too short"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:276 Opcodes/gab/newgabopc.c:321
+msgid "copyTabElems: destination table too short"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:347
+msgid "inrg: audio input is not enabled"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:362
msgid "inrg: channel number cannot be < 1 (1 is the first channel)"
msgstr ""
-#: Opcodes/gab/newgabopc.c:400
+#: Opcodes/gab/newgabopc.c:403
msgid "outrg: channel number cannot be < 1 (1 is the first channel)"
msgstr ""
-#: Opcodes/gab/newgabopc.c:439 Opcodes/gab/newgabopc.c:671
+#: Opcodes/gab/newgabopc.c:440 Opcodes/gab/newgabopc.c:574
+#: Opcodes/gab/newgabopc.c:672
msgid "invalid function"
msgstr ""
-#: Opcodes/gab/newgabopc.c:442
+#: Opcodes/gab/newgabopc.c:443
msgid "lposc: no sample rate stored in function; assuming=sr\n"
msgstr ""
-#: Opcodes/gab/newgabopc.c:673
+#: Opcodes/gab/newgabopc.c:577
+msgid "lposcil: no sample rate stored in function assuming=sr\n"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:674
msgid "lposcil: no sample rate stored in function; assuming=sr\n"
msgstr ""
-#: Opcodes/gab/sliderTable.c:45 Opcodes/gab/sliderTable.c:254
+#: Opcodes/gab/sliderTable.c:47 Opcodes/gab/sliderTable.c:256
#: Opcodes/midiops3.c:44 Opcodes/midiops3.c:146 Opcodes/midiops3.c:259
#: Opcodes/midiops3.c:317 Opcodes/midiops3.c:413
msgid "illegal channel"
msgstr ""
-#: Opcodes/gab/sliderTable.c:65 Opcodes/gab/sliderTable.c:277
+#: Opcodes/gab/sliderTable.c:67 Opcodes/gab/sliderTable.c:280
#: Opcodes/midiops3.c:58 Opcodes/midiops3.c:162 Opcodes/midiops3.c:273
#, c-format
msgid "illegal control number at position n.%d"
msgstr ""
-#: Opcodes/gab/sliderTable.c:74
+#: Opcodes/gab/sliderTable.c:76
#, c-format
msgid ""
"sliderXtable: illegal initvalue at position %d. When using table indexing, "
"the init range is 0 to 1"
msgstr ""
-#: Opcodes/gab/sliderTable.c:84 Opcodes/gab/sliderTable.c:284
-#: Opcodes/gab/sliderTable.c:509 Opcodes/midiops3.c:64 Opcodes/midiops3.c:168
+#: Opcodes/gab/sliderTable.c:86 Opcodes/gab/sliderTable.c:287
+#: Opcodes/gab/sliderTable.c:513 Opcodes/midiops3.c:64 Opcodes/midiops3.c:168
#: Opcodes/midiops3.c:347
#, c-format
msgid "illegal initvalue at position n.%d"
msgstr ""
-#: Opcodes/gab/sliderTable.c:96 Opcodes/gab/sliderTable.c:296
+#: Opcodes/gab/sliderTable.c:98 Opcodes/gab/sliderTable.c:299
msgid "sliderXtable: zero is illegal in exponential operations"
msgstr ""
-#: Opcodes/gab/sliderTable.c:312
+#: Opcodes/gab/sliderTable.c:315
#, c-format
msgid ""
"sliderXtable: illegal initvalue at position %d. When using table indexing, "
"the init range is 0 to 1"
msgstr ""
-#: Opcodes/gab/sliderTable.c:565 Opcodes/midiops2.c:321 Opcodes/midiops2.c:359
+#: Opcodes/gab/sliderTable.c:569 Opcodes/midiops2.c:321 Opcodes/midiops2.c:359
#: Opcodes/midiops2.c:391 Opcodes/midiops2.c:440 Opcodes/midiops2.c:475
#: Opcodes/midiops2.c:517 Opcodes/midiops2.c:532 Opcodes/midiops2.c:551
msgid "illegal midi channel"
msgstr ""
-#: Opcodes/gab/tabmorph.c:42
+#: Opcodes/gab/tabmorph.c:43
msgid "tabmorph: invalid table number"
msgstr ""
-#: Opcodes/gab/tabmorph.c:46
+#: Opcodes/gab/tabmorph.c:47
msgid "tabmorph: all tables must have the same length!"
msgstr ""
-#: Opcodes/gab/vectorial.c:33
+#: Opcodes/gab/vectorial.c:35
msgid "mtablei: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:63 Opcodes/gab/vectorial.c:83
-#: Opcodes/gab/vectorial.c:133 Opcodes/gab/vectorial.c:200
+#: Opcodes/gab/vectorial.c:65 Opcodes/gab/vectorial.c:85
+#: Opcodes/gab/vectorial.c:135 Opcodes/gab/vectorial.c:202
msgid "mtable: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:185
+#: Opcodes/gab/vectorial.c:187
msgid "mtabi: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:252
+#: Opcodes/gab/vectorial.c:254
msgid "mtablewi: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:268 Opcodes/gab/vectorial.c:288
-#: Opcodes/gab/vectorial.c:317 Opcodes/gab/vectorial.c:362
-#: Opcodes/gab/vectorial.c:406
+#: Opcodes/gab/vectorial.c:270 Opcodes/gab/vectorial.c:290
+#: Opcodes/gab/vectorial.c:319 Opcodes/gab/vectorial.c:364
+#: Opcodes/gab/vectorial.c:408
msgid "mtabw: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:348
+#: Opcodes/gab/vectorial.c:350
msgid "mtabwi: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:380
+#: Opcodes/gab/vectorial.c:382
msgid "mtablew: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:454 Opcodes/gab/vectorial.c:513
+#: Opcodes/gab/vectorial.c:457 Opcodes/gab/vectorial.c:516
#, c-format
msgid "vadd_i: invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:470
+#: Opcodes/gab/vectorial.c:473
msgid "vadd_i: ifn length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:497
+#: Opcodes/gab/vectorial.c:500
msgid "vadd: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:529
+#: Opcodes/gab/vectorial.c:532
msgid "vmult_i: ifn length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:556
+#: Opcodes/gab/vectorial.c:559
msgid "vmult: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:572
+#: Opcodes/gab/vectorial.c:575
#, c-format
msgid "vpow_i: invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:589
+#: Opcodes/gab/vectorial.c:592
msgid "vpow_i: ifn length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:617
+#: Opcodes/gab/vectorial.c:620
msgid "vpow: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:633
+#: Opcodes/gab/vectorial.c:636
#, c-format
msgid "vexp_i: invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:649
+#: Opcodes/gab/vectorial.c:652
msgid "vexp_i: ifn length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:676
+#: Opcodes/gab/vectorial.c:679
msgid "vexp: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:694
+#: Opcodes/gab/vectorial.c:697
#, c-format
msgid "vectorsop: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:699
+#: Opcodes/gab/vectorial.c:702
#, c-format
msgid "vectorsop: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:738
+#: Opcodes/gab/vectorial.c:742
msgid "vcopy: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:756
+#: Opcodes/gab/vectorial.c:760
msgid "vcopy: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:783
+#: Opcodes/gab/vectorial.c:787
#, c-format
msgid "vcopy_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:788
+#: Opcodes/gab/vectorial.c:792
#, c-format
msgid "vcopy_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:810
+#: Opcodes/gab/vectorial.c:814
msgid "vcopy_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:827
+#: Opcodes/gab/vectorial.c:831
msgid "vcopy_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:866
+#: Opcodes/gab/vectorial.c:870
msgid "vaddv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:885
+#: Opcodes/gab/vectorial.c:889
msgid "vaddv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:911
+#: Opcodes/gab/vectorial.c:915
#, c-format
msgid "vaddv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:916
+#: Opcodes/gab/vectorial.c:920
#, c-format
msgid "vaddv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:938
+#: Opcodes/gab/vectorial.c:942
msgid "vaddv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:956
+#: Opcodes/gab/vectorial.c:960
msgid "vaddv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:987
+#: Opcodes/gab/vectorial.c:991
msgid "vsubv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1006
+#: Opcodes/gab/vectorial.c:1010
msgid "vsubv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1033
+#: Opcodes/gab/vectorial.c:1037
#, c-format
msgid "vsubv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1038
+#: Opcodes/gab/vectorial.c:1042
#, c-format
msgid "vsubv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1060
+#: Opcodes/gab/vectorial.c:1064
msgid "vsubv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1078
+#: Opcodes/gab/vectorial.c:1082
msgid "vsubv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1115
+#: Opcodes/gab/vectorial.c:1119
msgid "vmultv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1134
+#: Opcodes/gab/vectorial.c:1138
msgid "vmultv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1161
+#: Opcodes/gab/vectorial.c:1165
#, c-format
msgid "vmultv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1166
+#: Opcodes/gab/vectorial.c:1170
#, c-format
msgid "vmultv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1188
+#: Opcodes/gab/vectorial.c:1192
msgid "vmultv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1205
+#: Opcodes/gab/vectorial.c:1209
msgid "vmultv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1242
+#: Opcodes/gab/vectorial.c:1246
msgid "vdivv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1261
+#: Opcodes/gab/vectorial.c:1265
msgid "vdivv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1288
+#: Opcodes/gab/vectorial.c:1292
#, c-format
msgid "vdivv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1293
+#: Opcodes/gab/vectorial.c:1297
#, c-format
msgid "vdivv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1315
+#: Opcodes/gab/vectorial.c:1319
msgid "vdivv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1333
+#: Opcodes/gab/vectorial.c:1337
msgid "vdivv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1370
+#: Opcodes/gab/vectorial.c:1374
msgid "vpowv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1389
+#: Opcodes/gab/vectorial.c:1393
msgid "vpowv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1416
+#: Opcodes/gab/vectorial.c:1420
#, c-format
msgid "vpowv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1421
+#: Opcodes/gab/vectorial.c:1425
#, c-format
msgid "vpowv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1443
+#: Opcodes/gab/vectorial.c:1447
msgid "vpowv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1460
+#: Opcodes/gab/vectorial.c:1464
msgid "vpowv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1497
+#: Opcodes/gab/vectorial.c:1501
msgid "vexpv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1516
+#: Opcodes/gab/vectorial.c:1520
msgid "vexpv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1543
+#: Opcodes/gab/vectorial.c:1547
#, c-format
msgid "vexpv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1548
+#: Opcodes/gab/vectorial.c:1552
#, c-format
msgid "vexpv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1570
+#: Opcodes/gab/vectorial.c:1574
msgid "vexpv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1588
+#: Opcodes/gab/vectorial.c:1592
msgid "vexpv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1625
+#: Opcodes/gab/vectorial.c:1629
msgid "vmap: Error: ifn1 and ifn2 can not be the same"
msgstr ""
-#: Opcodes/gab/vectorial.c:1630
+#: Opcodes/gab/vectorial.c:1634
#, c-format
msgid "vmap: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1635
+#: Opcodes/gab/vectorial.c:1639
#, c-format
msgid "vmap: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1657
+#: Opcodes/gab/vectorial.c:1661
msgid "vmap: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1674
+#: Opcodes/gab/vectorial.c:1678
msgid "vmap: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1870
+#: Opcodes/gab/vectorial.c:1698
+msgid "vectorop: invalid num of elements"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1727
+msgid "vport: invalid table length or num of elements"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1730
+msgid "vport: invalid table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1735
+msgid "vport: invalid init table length or num of elements"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1738
+msgid "vport: invalid init table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1875
#, c-format
msgid "vrandh: Seeding from current time %lu\n"
msgstr ""
-#: Opcodes/gab/vectorial.c:1968
+#: Opcodes/gab/vectorial.c:1888
+msgid "vrandh: Invalid table."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1891
+msgid "vrandh: idstoffset is greater than table length."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1896
+msgid "randh: Table length exceeded, last elements discarded."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1975
#, c-format
msgid "vrandi: Seeding from current time %lu\n"
msgstr ""
-#: Opcodes/grain4.c:57
+#: Opcodes/gab/vectorial.c:1987
+msgid "vrandi: Invalid table."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1990
+msgid "vrandi: idstoffset is greater thantable length."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1995
+msgid "vrandi: Table length exceeded, last elements discarded."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2077 Opcodes/gab/vectorial.c:2084
+#: Opcodes/gab/vectorial.c:2091
+msgid "vecdelay: invalid num of elements"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2079
+msgid "vecdly: invalid output table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2086
+msgid "vecdly: invalid input table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2093
+msgid "vecdly: invalid delay table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2138
+msgid "vecdly: not initialised"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2181
+msgid "vlinseg/vexpseg: invalid num. of elements"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2223 Opcodes/vpvoc.c:118
+msgid "tableseg: not initialised"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2253 Opcodes/vpvoc.c:146
+msgid "tablexseg: not initialised"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2406
+msgid "vdelayk: not initialised"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2439 Opcodes/gab/vectorial.c:2445
+msgid "cella: invalid num of elements"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2441
+msgid "cella: invalid output table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2448
+msgid "cella: invalid initial state table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2452
+msgid "cella: invalid rule table"
+msgstr ""
+
+#: Opcodes/grain4.c:59
msgid "granule_set: Unable to find function table"
msgstr ""
-#: Opcodes/grain4.c:67
+#: Opcodes/grain4.c:69
msgid "granule_set: Unable to find function table for envelope"
msgstr ""
-#: Opcodes/grain4.c:73
+#: Opcodes/grain4.c:75
msgid "granule_set: Too many voices"
msgstr ""
-#: Opcodes/grain4.c:76
+#: Opcodes/grain4.c:78
msgid "granule_set: iratio must be greater then 0"
msgstr ""
-#: Opcodes/grain4.c:80
+#: Opcodes/grain4.c:82
msgid "granule_set: imode must be -1, 0 or +1"
msgstr ""
-#: Opcodes/grain4.c:84
+#: Opcodes/grain4.c:86
msgid "granule_set: Illegal ithd, must be greater than zero"
msgstr ""
-#: Opcodes/grain4.c:89
+#: Opcodes/grain4.c:91
msgid "granule_set: ipshift must be integer between 0 and 4"
msgstr ""
-#: Opcodes/grain4.c:94
+#: Opcodes/grain4.c:96
msgid "granule_set: Not enough voices for the number of pitches"
msgstr ""
-#: Opcodes/grain4.c:101
+#: Opcodes/grain4.c:103
msgid "granule_set: ipitch1 must be greater then zero"
msgstr ""
-#: Opcodes/grain4.c:106
+#: Opcodes/grain4.c:108
msgid "granule_set: ipitch2 must be greater then zero"
msgstr ""
-#: Opcodes/grain4.c:111
+#: Opcodes/grain4.c:113
msgid "granule_set: ipitch3 must be greater then zero"
msgstr ""
-#: Opcodes/grain4.c:116
+#: Opcodes/grain4.c:118
msgid "granule_set: ipitch4 must be greater then zero"
msgstr ""
-#: Opcodes/grain4.c:121
+#: Opcodes/grain4.c:123
msgid "granule_set: must be positive and less than function table length"
msgstr ""
-#: Opcodes/grain4.c:125
+#: Opcodes/grain4.c:127
msgid "granule_set: igskip_os must be greater then 0"
msgstr ""
-#: Opcodes/grain4.c:134
+#: Opcodes/grain4.c:136
msgid "granule_set: kgap must be greater then 0"
msgstr ""
-#: Opcodes/grain4.c:138
+#: Opcodes/grain4.c:140
#, c-format
msgid "granule_set: igap_os must be 0%% to 100%%"
msgstr ""
-#: Opcodes/grain4.c:142
+#: Opcodes/grain4.c:144
msgid "granule_set: kgsize must be greater then 0"
msgstr ""
-#: Opcodes/grain4.c:146
+#: Opcodes/grain4.c:148
#, c-format
msgid "granule_set: igsize_os must be 0%% to 100%%"
msgstr ""
-#: Opcodes/grain4.c:152
+#: Opcodes/grain4.c:154
msgid "granule_set: Illegal value of iatt and/or idec"
msgstr ""
-#: Opcodes/grain4.c:236
+#: Opcodes/grain4.c:238
msgid "granule_set: Illegal combination of igskip and ilength"
msgstr ""
-#: Opcodes/grain4.c:243
+#: Opcodes/grain4.c:245
#, c-format
msgid ""
"granule_set: WARNING * ilength may be too short * \n"
@@ -6633,7 +6515,7 @@ msgid ""
"ilength is %f Sec, kgsize is %f Sec\n"
msgstr ""
-#: Opcodes/grain4.c:418
+#: Opcodes/grain4.c:419
msgid "grain4: not initialised"
msgstr ""
@@ -6645,92 +6527,88 @@ msgstr ""
msgid "grain: not initialised"
msgstr ""
-#: Opcodes/harmon.c:224
+#: Opcodes/harmon.c:226
msgid "harm signal has positive lead\n"
msgstr ""
-#: Opcodes/harmon.c:231
+#: Opcodes/harmon.c:233
msgid "harm signal has negative lead\n"
msgstr ""
-#: Opcodes/harmon.c:361
+#: Opcodes/harmon.c:363
msgid "harmon234: out of range\n"
msgstr ""
-#: Opcodes/hrtferX.c:79
+#: Opcodes/hrtferX.c:81
#, c-format
msgid ""
"Orchestra sampling rate is not compatible with HRTF.\n"
"Should be %d...exiting."
msgstr ""
-#: Opcodes/hrtferX.c:87
+#: Opcodes/hrtferX.c:89
msgid ""
"\n"
"Last argument must be the string 'HRTFcompact' ...correcting.\n"
msgstr ""
-#: Opcodes/hrtferX.c:489
+#: Opcodes/hrtferX.c:494
msgid "hrtfer: not initialised"
msgstr ""
-#: Opcodes/hrtfopcodes.c:232
+#: Opcodes/hrtfopcodes.c:260 Opcodes/hrtfopcodes.c:1434
+#: Opcodes/hrtfearly.c:300 Opcodes/hrtfreverb.c:257
#, c-format
msgid ""
"\n"
-"Orchestra sampling rate is not compatible with HRTF data files\n"
-"Should be %.0f, see Csound help for object\n"
+"\n"
+"WARNING!!:\n"
+"Orchestra SR not compatible with HRTF processing SR of: %.0f\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:251 Opcodes/hrtfopcodes.c:275
-#: Opcodes/hrtfopcodes.c:298 Opcodes/hrtfopcodes.c:1257
-#: Opcodes/hrtfopcodes.c:1280 Opcodes/hrtfopcodes.c:1303
-#: Opcodes/hrtfopcodes.c:1854 Opcodes/hrtfopcodes.c:1876
-#: Opcodes/hrtfopcodes.c:1898
+#: Opcodes/hrtfopcodes.c:287 Opcodes/hrtfopcodes.c:1461
+#: Opcodes/hrtfopcodes.c:2071 Opcodes/hrtfearly.c:327 Opcodes/hrtfreverb.c:300
msgid ""
"\n"
"\n"
"\n"
-"cannot load left data file, exiting\n"
+"Cannot load left data file, exiting\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:259 Opcodes/hrtfopcodes.c:283
-#: Opcodes/hrtfopcodes.c:306 Opcodes/hrtfopcodes.c:1265
-#: Opcodes/hrtfopcodes.c:1288 Opcodes/hrtfopcodes.c:1311
-#: Opcodes/hrtfopcodes.c:1862 Opcodes/hrtfopcodes.c:1884
-#: Opcodes/hrtfopcodes.c:1906
+#: Opcodes/hrtfopcodes.c:294 Opcodes/hrtfopcodes.c:1468
+#: Opcodes/hrtfopcodes.c:2078 Opcodes/hrtfearly.c:334 Opcodes/hrtfreverb.c:306
msgid ""
"\n"
"\n"
"\n"
-"cannot load right data file, exiting\n"
+"Cannot load right data file, exiting\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:313 Opcodes/hrtfopcodes.c:1912
+#: Opcodes/hrtfopcodes.c:690 Opcodes/hrtfearly.c:1241
msgid ""
"\n"
-"\n"
-"\n"
-" Sampling rate not supported, exiting\n"
+"WARNING: fades are overlapping: this could lead to noise: reduce fade size "
+"or change trajectory\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:600
+#: Opcodes/hrtfopcodes.c:2052
+#, c-format
msgid ""
-"fades are overlapping: this could lead to noise: reduce fade size or change "
-"trajectory\n"
+"\n"
+"\n"
+"WARNING!!:\n"
+"Orchestra SR not compatiblewith HRTF processing SR of: %.0f\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:1239 Opcodes/hrtfopcodes.c:1837
-#, c-format
+#: Opcodes/hrtfreverb.c:832
msgid ""
-"Orchestra sampling rate is not compatible with HRTF data files\n"
-"Should be %.0f, see Csound help for object\n"
"\n"
+"warning, approaching instability, fixed with a flat late reverb!"
msgstr ""
#: Opcodes/ifd.c:74
@@ -6756,10 +6634,9 @@ msgid "imageload: file %s is not in PNG format.\n"
msgstr ""
#: Opcodes/imageOpcodes.c:119 Opcodes/imageOpcodes.c:126
-#: Opcodes/imageOpcodes.c:134 Opcodes/imageOpcodes.c:165
-#: Opcodes/imageOpcodes.c:174 Opcodes/imageOpcodes.c:188
-#: Opcodes/imageOpcodes.c:291 Opcodes/imageOpcodes.c:298
-#: Opcodes/imageOpcodes.c:311
+#: Opcodes/imageOpcodes.c:165 Opcodes/imageOpcodes.c:174
+#: Opcodes/imageOpcodes.c:188 Opcodes/imageOpcodes.c:291
+#: Opcodes/imageOpcodes.c:298 Opcodes/imageOpcodes.c:311
msgid "imageload: out of memory.\n"
msgstr ""
@@ -6779,62 +6656,62 @@ msgid ""
"Status: %d\n"
msgstr ""
-#: Opcodes/jacko.cpp:543
+#: Opcodes/jacko.cpp:545
#, c-format
msgid "Created Jack client \"%s\" for Jack server \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:548
+#: Opcodes/jacko.cpp:551
#, c-format
msgid "Jack buffer size %d != Csound ksmps %d, exiting...\n"
msgstr ""
-#: Opcodes/jacko.cpp:556
+#: Opcodes/jacko.cpp:559
#, c-format
msgid "Jack sampling rate %d != Csound sr %d, exiting...\n"
msgstr ""
-#: Opcodes/jacko.cpp:567
+#: Opcodes/jacko.cpp:570
#, c-format
msgid "Activated Jack client \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:571
+#: Opcodes/jacko.cpp:574
#, c-format
msgid "Failed to activate Jack client \"%s\": status %d.\n"
msgstr ""
-#: Opcodes/jacko.cpp:586
+#: Opcodes/jacko.cpp:589
msgid "BEGAN JackoState::close()...\n"
msgstr ""
-#: Opcodes/jacko.cpp:622
+#: Opcodes/jacko.cpp:629
msgid "ENDED JackoState::close().\n"
msgstr ""
-#: Opcodes/jacko.cpp:876
+#: Opcodes/jacko.cpp:892
#, c-format
msgid "Failed to set Jack freewheeling mode to \"%s\": error %d.\n"
msgstr ""
-#: Opcodes/jacko.cpp:878
+#: Opcodes/jacko.cpp:895
#, c-format
msgid "Set Jack freewheeling mode to \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:893
+#: Opcodes/jacko.cpp:911
#, c-format
msgid "Turned Jack connections \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:934 Opcodes/jacko.cpp:1034 Opcodes/jacko.cpp:1134
-#: Opcodes/jacko.cpp:1200
+#: Opcodes/jacko.cpp:955 Opcodes/jacko.cpp:1062 Opcodes/jacko.cpp:1169
+#: Opcodes/jacko.cpp:1241
#, c-format
msgid "Could not create Jack port \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:946 Opcodes/jacko.cpp:1046 Opcodes/jacko.cpp:1146
-#: Opcodes/jacko.cpp:1212
+#: Opcodes/jacko.cpp:969 Opcodes/jacko.cpp:1077 Opcodes/jacko.cpp:1184
+#: Opcodes/jacko.cpp:1255
#, c-format
msgid "Could not create Jack connection from \"%s\" to \"%s\": status %d.\n"
msgstr ""
@@ -6873,27 +6750,27 @@ msgstr ""
msgid "lorisread cannot load %s"
msgstr ""
-#: Opcodes/loscilx.c:74 Opcodes/loscilx.c:178
+#: Opcodes/loscilx.c:76 Opcodes/loscilx.c:180
#, c-format
msgid "could not load '%s'"
msgstr ""
-#: Opcodes/loscilx.c:88 Opcodes/loscilx.c:258
+#: Opcodes/loscilx.c:90 Opcodes/loscilx.c:260
#, c-format
msgid "invalid loop mode: %d"
msgstr ""
-#: Opcodes/loscilx.c:170
+#: Opcodes/loscilx.c:172
msgid "loscilx: invalid number of output arguments"
msgstr ""
-#: Opcodes/loscilx.c:190 Opcodes/loscilx.c:219 Opcodes/pvlock.c:94
-#: Opcodes/pvlock.c:296 Opcodes/pvsbasic.c:460
+#: Opcodes/loscilx.c:192 Opcodes/loscilx.c:221 Opcodes/pvlock.c:118
+#: Opcodes/pvlock.c:320 Opcodes/pvsbasic.c:460
msgid ""
"number of output arguments inconsistent with number of sound file channels"
msgstr ""
-#: Opcodes/loscilx.c:665
+#: Opcodes/loscilx.c:667
msgid "loscilx: not initialised"
msgstr ""
@@ -6901,11 +6778,11 @@ msgstr ""
msgid "illegal order num. (min 1, max 10)"
msgstr ""
-#: Opcodes/mandolin.c:80
+#: Opcodes/mandolin.c:81
msgid "No table for Mandolin"
msgstr ""
-#: Opcodes/mandolin.c:90
+#: Opcodes/mandolin.c:91
msgid "No base frequency for mandolin"
msgstr ""
@@ -6936,27 +6813,27 @@ msgstr ""
msgid "illegal lsb control number at position n.%d"
msgstr ""
-#: Opcodes/modal4.c:45
+#: Opcodes/modal4.c:46
msgid "No table for Modal4 case"
msgstr ""
-#: Opcodes/modal4.c:245
+#: Opcodes/modal4.c:246
msgid "No table for Marimba strike"
msgstr ""
-#: Opcodes/modal4.c:284
+#: Opcodes/modal4.c:285
msgid "striking three times here!!!\n"
msgstr ""
-#: Opcodes/modal4.c:289
+#: Opcodes/modal4.c:290
msgid "striking twice here!!\n"
msgstr ""
-#: Opcodes/modal4.c:359
+#: Opcodes/modal4.c:360
msgid "No table for Vibraphone strike"
msgstr ""
-#: Opcodes/modal4.c:440
+#: Opcodes/modal4.c:441
msgid "No table for Agogobell strike"
msgstr ""
@@ -6964,12 +6841,12 @@ msgstr ""
msgid "modmatrix: "
msgstr ""
-#: Opcodes/mp3in.c:92 Opcodes/mp3in.c:230
+#: Opcodes/mp3in.c:93 Opcodes/mp3in.c:231
#, c-format
msgid "mp3in: %s: failed to open file"
msgstr ""
-#: Opcodes/mp3in.c:139
+#: Opcodes/mp3in.c:140
#, c-format
msgid "mp3in: file sample rate (%d) != orchestra sr (%d)\n"
msgstr ""
@@ -7256,7 +7133,7 @@ msgstr ""
msgid "No open glove"
msgstr ""
-#: Opcodes/pan2.c:43
+#: Opcodes/pan2.c:45
msgid "Unknown panning type"
msgstr ""
@@ -7272,192 +7149,196 @@ msgstr ""
msgid "partikkelsync: could not find opcode id"
msgstr ""
-#: Opcodes/physmod.c:121
+#: Opcodes/physmod.c:122
msgid "No table for Clarinet"
msgstr ""
-#: Opcodes/physmod.c:129
+#: Opcodes/physmod.c:130
msgid "No base frequency for clarinet -- assuming 50Hz\n"
msgstr ""
-#: Opcodes/physmod.c:283
+#: Opcodes/physmod.c:284
msgid "No table for Flute"
msgstr ""
-#: Opcodes/physmod.c:291
+#: Opcodes/physmod.c:292
msgid "No base frequency for flute -- assumed to be 50Hz\n"
msgstr ""
-#: Opcodes/physmod.c:481
+#: Opcodes/physmod.c:482
msgid "No table for wgbow vibrato"
msgstr ""
-#: Opcodes/physmod.c:689
+#: Opcodes/physmod.c:490
+msgid "unknown lowest frequency for bowed string -- assuming 50Hz\n"
+msgstr ""
+
+#: Opcodes/physmod.c:690
msgid "DlineA not initialised"
msgstr ""
-#: Opcodes/physmod.c:756
+#: Opcodes/physmod.c:757
msgid "No table for Brass"
msgstr ""
-#: Opcodes/physmod.c:765
+#: Opcodes/physmod.c:766
msgid "No base frequency for brass -- assumed to be 50Hz\n"
msgstr ""
-#: Opcodes/physutil.c:137 Opcodes/physutil.c:312 Opcodes/physutil.c:324
-#: Opcodes/physutil.c:345
+#: Opcodes/physutil.c:138 Opcodes/physutil.c:313 Opcodes/physutil.c:325
+#: Opcodes/physutil.c:346
msgid "negative rates not allowed!!, correcting\n"
msgstr ""
-#: Opcodes/physutil.c:186
+#: Opcodes/physutil.c:187
#, c-format
msgid "Envelope: value=%f target=%f rate=%f state=%d\n"
msgstr ""
-#: Opcodes/physutil.c:335
+#: Opcodes/physutil.c:336
msgid "Sustain level out of range!!, correcting\n"
msgstr ""
-#: Opcodes/physutil.c:356 Opcodes/physutil.c:366 Opcodes/physutil.c:376
+#: Opcodes/physutil.c:357 Opcodes/physutil.c:367 Opcodes/physutil.c:377
msgid "negative times not allowed!!, correcting\n"
msgstr ""
-#: Opcodes/pitch0.c:37
+#: Opcodes/pitch0.c:38
#, c-format
msgid "Muting new instances of instr %d\n"
msgstr ""
-#: Opcodes/pitch0.c:40
+#: Opcodes/pitch0.c:41
#, c-format
msgid "Allowing instrument %d to start\n"
msgstr ""
-#: Opcodes/pitch.c:84 Opcodes/spectra.c:78
+#: Opcodes/pitch.c:85 Opcodes/spectra.c:80
msgid "illegal iocts"
msgstr ""
-#: Opcodes/pitch.c:86 Opcodes/spectra.c:80
+#: Opcodes/pitch.c:87 Opcodes/spectra.c:82
msgid "illegal ifrqs"
msgstr ""
-#: Opcodes/pitch.c:180 Opcodes/spectra.c:584
+#: Opcodes/pitch.c:181 Opcodes/spectra.c:586
msgid "illegal no of partials"
msgstr ""
-#: Opcodes/pitch.c:205
+#: Opcodes/pitch.c:206
msgid "per octave rolloff too steep"
msgstr ""
-#: Opcodes/pitch.c:219 Opcodes/spectra.c:625
+#: Opcodes/pitch.c:220 Opcodes/spectra.c:627
msgid "illegal lo-hi values"
msgstr ""
-#: Opcodes/pitch.c:454
+#: Opcodes/pitch.c:455
msgid "pitch: not initialised"
msgstr ""
-#: Opcodes/pitch.c:463
+#: Opcodes/pitch.c:464
msgid "Must have even number of arguments in mac\n"
msgstr ""
-#: Opcodes/pitch.c:552
+#: Opcodes/pitch.c:553
msgid "clockread: clock still running, call clockoff first"
msgstr ""
-#: Opcodes/pitch.c:578
+#: Opcodes/pitch.c:579
msgid "adsynt: wavetable not found!"
msgstr ""
-#: Opcodes/pitch.c:591
+#: Opcodes/pitch.c:592
msgid "adsynt: freqtable not found!"
msgstr ""
-#: Opcodes/pitch.c:596
+#: Opcodes/pitch.c:597
msgid "adsynt: partial count is greater than freqtable size!"
msgstr ""
-#: Opcodes/pitch.c:604
+#: Opcodes/pitch.c:605
msgid "adsynt: amptable not found!"
msgstr ""
-#: Opcodes/pitch.c:609
+#: Opcodes/pitch.c:610
msgid "adsynt: partial count is greater than amptable size!"
msgstr ""
-#: Opcodes/pitch.c:640
+#: Opcodes/pitch.c:641
msgid "adsynt: not initialised"
msgstr ""
-#: Opcodes/pitch.c:716
+#: Opcodes/pitch.c:717
msgid "hsboscil: not initialised"
msgstr ""
-#: Opcodes/pitch.c:799
+#: Opcodes/pitch.c:800
msgid "pitchamdf: maxcps must be > mincps !"
msgstr ""
-#: Opcodes/pitch.c:945
+#: Opcodes/pitch.c:946
msgid "pitchamdf: not initialised"
msgstr ""
-#: Opcodes/pitch.c:1125 Opcodes/pitch.c:1152
+#: Opcodes/pitch.c:1126 Opcodes/pitch.c:1153
msgid "phasorbnk: not initialised"
msgstr ""
-#: Opcodes/pitch.c:1214
+#: Opcodes/pitch.c:1215
msgid "pinkish: Invalid method code"
msgstr ""
-#: Opcodes/pitch.c:1225
+#: Opcodes/pitch.c:1226
msgid "pinkish: Filter method requires a-rate (noise) input"
msgstr ""
-#: Opcodes/pitch.c:1348
+#: Opcodes/pitch.c:1349
#, c-format
msgid ""
"pinkish: Gardner method requires 4-%d bands. Default %ld substituted for "
"%d.\n"
msgstr ""
-#: Opcodes/pitch.c:1731
+#: Opcodes/pitch.c:1733
msgid "Incorrect argument count in transeg"
msgstr ""
-#: Opcodes/pitch.c:1782
+#: Opcodes/pitch.c:1784
msgid "Incorrect argument count in transegb"
msgstr ""
-#: Opcodes/pitch.c:1832 Opcodes/pitch.c:1971
+#: Opcodes/pitch.c:1834 Opcodes/pitch.c:1977
msgid "Error: transeg not initialised (krate)\n"
msgstr ""
-#: Opcodes/pitch.c:1867 Opcodes/pitch.c:2013
+#: Opcodes/pitch.c:1869 Opcodes/pitch.c:2027
msgid "transeg: not initialised (arate)\n"
msgstr ""
-#: Opcodes/pitch.c:1921
+#: Opcodes/pitch.c:1924
msgid "Incorrect argument count in transegr"
msgstr ""
-#: Opcodes/pitch.c:2269
+#: Opcodes/pitch.c:2294
msgid "median: not initialised (arate)\n"
msgstr ""
-#: Opcodes/pitch.c:2273 Opcodes/pitch.c:2321
+#: Opcodes/pitch.c:2298 Opcodes/pitch.c:2345
#, c-format
msgid "median: window (%d)larger than maximum(%d); truncated"
msgstr ""
-#: Opcodes/pitch.c:2317
+#: Opcodes/pitch.c:2341
msgid "median: not initialised (krate)\n"
msgstr ""
-#: Opcodes/pitchtrack.c:369
+#: Opcodes/pitchtrack.c:370
#, c-format
msgid "ptrack: FFT size out of range; using %d\n"
msgstr ""
-#: Opcodes/pitchtrack.c:382
+#: Opcodes/pitchtrack.c:383
#, c-format
msgid "ptrack: FFT size not a power of 2; using %d\n"
msgstr ""
@@ -7475,7 +7356,7 @@ msgstr ""
msgid "Error: %s, %s"
msgstr ""
-#: Opcodes/ppp.c:20 Opcodes/pvlock.c:454 Opcodes/pvsband.c:46
+#: Opcodes/ppp.c:20 Opcodes/pvlock.c:478 Opcodes/pvsband.c:46
#: Opcodes/pvsbasic.c:575 Opcodes/pvsbasic.c:880 Opcodes/pvsbasic.c:1080
#: Opcodes/pvsbasic.c:1180 Opcodes/pvsbasic.c:1395 Opcodes/pvsbasic.c:1593
#: Opcodes/pvsbasic.c:1756 Opcodes/pvslock.c:20
@@ -7494,62 +7375,62 @@ msgstr ""
msgid "psynth: function table not found\n"
msgstr ""
-#: Opcodes/psynth.c:569 Opcodes/psynth.c:662
+#: Opcodes/psynth.c:567 Opcodes/psynth.c:660
msgid "Input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:767
+#: Opcodes/psynth.c:765
msgid "trsplit: input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:863 Opcodes/psynth.c:1027
+#: Opcodes/psynth.c:861 Opcodes/psynth.c:1023
msgid "trmix: first input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:868 Opcodes/psynth.c:1032
+#: Opcodes/psynth.c:866 Opcodes/psynth.c:1028
msgid "trmix: second input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:943
+#: Opcodes/psynth.c:939
msgid "trfil: input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:948
+#: Opcodes/psynth.c:944
msgid "trfil: could not find function table\n"
msgstr ""
-#: Opcodes/psynth.c:1135
+#: Opcodes/psynth.c:1131
msgid "binit: first input not in TRACKS format\n"
msgstr ""
-#: Opcodes/pvadd.c:153
+#: Opcodes/pvadd.c:150
msgid "PVADD ktimpnt truncated to last frame"
msgstr ""
-#: Opcodes/pvadd.c:191
+#: Opcodes/pvadd.c:188
msgid "pvadd: not initialised"
msgstr ""
-#: Opcodes/pvadd.c:193
+#: Opcodes/pvadd.c:190
msgid "PVADD timpnt < 0"
msgstr ""
-#: Opcodes/pvadd.c:201
+#: Opcodes/pvadd.c:198
#, c-format
msgid "PVADD cannot load %s"
msgstr ""
-#: Opcodes/pvadd.c:205 Opcodes/ugens8.c:223
+#: Opcodes/pvadd.c:202 Opcodes/ugens8.c:223
#, c-format
msgid "pvoc-ex file %s: FFT size %d too large for Csound"
msgstr ""
-#: Opcodes/pvadd.c:210
+#: Opcodes/pvadd.c:207
#, c-format
msgid "PV frame %ld seems too small in %s"
msgstr ""
-#: Opcodes/pvadd.c:215 Opcodes/pvread.c:115 Opcodes/ugens8.c:229
+#: Opcodes/pvadd.c:212 Opcodes/pvread.c:115 Opcodes/ugens8.c:229
#, c-format
msgid "pvoc-ex file %s is not mono"
msgstr ""
@@ -7559,97 +7440,97 @@ msgstr ""
msgid "PVBUFREAD cannot load %s"
msgstr ""
-#: Opcodes/pvinterp.c:76 Opcodes/vpvoc.c:206
+#: Opcodes/pvinterp.c:76 Opcodes/vpvoc.c:207
#, c-format
msgid "PVOC frame %ld bigger than %ld in %s"
msgstr ""
-#: Opcodes/pvinterp.c:81 Opcodes/vpvoc.c:211
+#: Opcodes/pvinterp.c:81 Opcodes/vpvoc.c:212
#, c-format
msgid "PVOC frame %ld seems too small in %s"
msgstr ""
-#: Opcodes/pvinterp.c:85 Opcodes/pvinterp.c:184 Opcodes/pvinterp.c:356
-#: Opcodes/vpvoc.c:215
+#: Opcodes/pvinterp.c:85 Opcodes/pvinterp.c:183 Opcodes/pvinterp.c:354
+#: Opcodes/vpvoc.c:216
#, c-format
msgid "%d chans (not 1) in PVOC file %s"
msgstr ""
-#: Opcodes/pvinterp.c:101 Opcodes/pvinterp.c:212 Opcodes/pvinterp.c:382
+#: Opcodes/pvinterp.c:100 Opcodes/pvinterp.c:210 Opcodes/pvinterp.c:379
#: Opcodes/ugens8.c:95 Opcodes/vpvoc.c:244
#, c-format
msgid "ksmps of %d needs wdw of %d, max is %d for pv %s"
msgstr ""
-#: Opcodes/pvinterp.c:122 Opcodes/pvinterp.c:256 Opcodes/pvinterp.c:431
+#: Opcodes/pvinterp.c:121 Opcodes/pvinterp.c:254 Opcodes/pvinterp.c:428
#: Opcodes/pvread.c:95 Opcodes/ugens8.c:156 Opcodes/vpvoc.c:297
msgid "PVOC ktimpnt truncated to last frame"
msgstr ""
-#: Opcodes/pvinterp.c:130
+#: Opcodes/pvinterp.c:129
msgid "pvbufread: not initialised"
msgstr ""
-#: Opcodes/pvinterp.c:132 Opcodes/pvinterp.c:306 Opcodes/pvinterp.c:492
+#: Opcodes/pvinterp.c:131 Opcodes/pvinterp.c:304 Opcodes/pvinterp.c:489
#: Opcodes/pvread.c:103 Opcodes/ugens8.c:206 Opcodes/vpvoc.c:361
msgid "PVOC timpnt < 0"
msgstr ""
-#: Opcodes/pvinterp.c:149
+#: Opcodes/pvinterp.c:148
msgid "pvinterp: associated pvbufread not found"
msgstr ""
-#: Opcodes/pvinterp.c:166
+#: Opcodes/pvinterp.c:165
#, c-format
msgid "PVINTERP cannot load %s"
msgstr ""
-#: Opcodes/pvinterp.c:179
+#: Opcodes/pvinterp.c:178
#, c-format
msgid "pvinterp: %s: frame size %d does not match pvbufread frame size %d\n"
msgstr ""
-#: Opcodes/pvinterp.c:300
+#: Opcodes/pvinterp.c:298
msgid "pvinterp: not initialised"
msgstr ""
-#: Opcodes/pvinterp.c:302 Opcodes/pvinterp.c:488 Opcodes/ugens8.c:202
+#: Opcodes/pvinterp.c:300 Opcodes/pvinterp.c:485 Opcodes/ugens8.c:202
#: Opcodes/vpvoc.c:357
msgid "PVOC transpose too low"
msgstr ""
-#: Opcodes/pvinterp.c:304 Opcodes/pvinterp.c:490 Opcodes/ugens8.c:204
+#: Opcodes/pvinterp.c:302 Opcodes/pvinterp.c:487 Opcodes/ugens8.c:204
#: Opcodes/vpvoc.c:359
msgid "PVOC transpose too high"
msgstr ""
-#: Opcodes/pvinterp.c:323
+#: Opcodes/pvinterp.c:321
msgid "pvcross: associated pvbufread not found"
msgstr ""
-#: Opcodes/pvinterp.c:339
+#: Opcodes/pvinterp.c:337
#, c-format
msgid "PVCROSS cannot load %s"
msgstr ""
-#: Opcodes/pvinterp.c:351
+#: Opcodes/pvinterp.c:349
#, c-format
msgid "pvcross: %s: frame size %d does not match pvbufread frame size %d\n"
msgstr ""
-#: Opcodes/pvinterp.c:454 Opcodes/vpvoc.c:322
+#: Opcodes/pvinterp.c:451 Opcodes/vpvoc.c:322
msgid "PVOC debug: one frame gets through\n"
msgstr ""
-#: Opcodes/pvinterp.c:486
+#: Opcodes/pvinterp.c:483
msgid "pvcross: not initialised"
msgstr ""
-#: Opcodes/pvlock.c:35 Opcodes/pvsbasic.c:380
+#: Opcodes/pvlock.c:59 Opcodes/pvsbasic.c:380
msgid "invalid number of output arguments"
msgstr ""
-#: Opcodes/pvlock.c:466
+#: Opcodes/pvlock.c:490
msgid "pvsfreeze: signal format must be amp-freq."
msgstr ""
@@ -7756,28 +7637,33 @@ msgstr ""
msgid "pvs2tab: signal format must be amp-phase or amp-freq."
msgstr ""
-#: Opcodes/pvsbasic.c:2151 Opcodes/pvsbasic.c:2190 Opcodes/tabvars.c:53
-#: Opcodes/tabvars.c:89 Opcodes/tabvars.c:131 Opcodes/tabvars.c:176
-#: Opcodes/tabvars.c:178
+#: Opcodes/pvsbasic.c:2151 Opcodes/pvsbasic.c:2189 Opcodes/tabvars.c:56
+#: Opcodes/tabvars.c:92 Opcodes/tabvars.c:134 Opcodes/tabvars.c:179
+#: Opcodes/tabvars.c:181
msgid "t-variable not initialised"
msgstr ""
-#: Opcodes/pvsbuffer.c:53 Opcodes/pvscent.c:164 Opcodes/pvsdemix.c:49
+#: Opcodes/pvsbuffer.c:56 Opcodes/pvscent.c:164 Opcodes/pvsdemix.c:49
msgid "SDFT case not implemented yet"
msgstr ""
-#: Opcodes/pvsbuffer.c:85
+#: Opcodes/pvsbuffer.c:89
msgid "error... could not create global var for handle\n"
msgstr ""
-#: Opcodes/pvsbuffer.c:143 Opcodes/pvsbuffer.c:190 Opcodes/pvsbuffer.c:258
+#: Opcodes/pvsbuffer.c:148 Opcodes/pvsbuffer.c:197 Opcodes/pvsbuffer.c:266
msgid "error... could not read handle from global variable\n"
msgstr ""
-#: Opcodes/pvsbuffer.c:238 Opcodes/pvsbuffer.c:306
+#: Opcodes/pvsbuffer.c:246 Opcodes/pvsbuffer.c:316
msgid "Invalid buffer handle"
msgstr ""
+#: Opcodes/pvsbuffer.c:285 Opcodes/pvsbuffer.c:291
+#, c-format
+msgid "table length too small: needed %d, got %d\n"
+msgstr ""
+
#: Opcodes/pvscent.c:42
msgid "pvscent: format must be amp-phase or amp-freq.\n"
msgstr ""
@@ -7966,48 +7852,48 @@ msgstr ""
msgid "seqtim: incorrect table number"
msgstr ""
-#: Opcodes/sfont.c:118
+#: Opcodes/sfont.c:121
#, c-format
msgid "sfload: cannot open SoundFont file \"%s\" (error %s)"
msgstr ""
-#: Opcodes/sfont.c:123
+#: Opcodes/sfont.c:126
msgid "Sfload: cannot use globals"
msgstr ""
-#: Opcodes/sfont.c:153
+#: Opcodes/sfont.c:156
msgid "sfload: could not open globals\n"
msgstr ""
-#: Opcodes/sfont.c:170
+#: Opcodes/sfont.c:173
msgid "Extending soundfonts"
msgstr ""
-#: Opcodes/sfont.c:201
+#: Opcodes/sfont.c:204
#, c-format
msgid ""
"\n"
"Preset list of \"%s\"\n"
msgstr ""
-#: Opcodes/sfont.c:204
+#: Opcodes/sfont.c:207
#, c-format
msgid "%3d) %-20s\tprog:%-3d bank:%d\n"
msgstr ""
-#: Opcodes/sfont.c:226
+#: Opcodes/sfont.c:229
#, c-format
msgid ""
"\n"
"Assigning all Presets of \"%s\" starting from %d (preset handle number)\n"
msgstr ""
-#: Opcodes/sfont.c:231
+#: Opcodes/sfont.c:234
#, c-format
msgid "%3d<--%-20s\t(prog:%-3d bank:%d)\n"
msgstr ""
-#: Opcodes/sfont.c:238
+#: Opcodes/sfont.c:241
#, c-format
msgid ""
"\n"
@@ -8015,38 +7901,38 @@ msgid ""
"\n"
msgstr ""
-#: Opcodes/sfont.c:251
+#: Opcodes/sfont.c:254
#, c-format
msgid ""
"\n"
"Instrument list of \"%s\"\n"
msgstr ""
-#: Opcodes/sfont.c:268
+#: Opcodes/sfont.c:271
#, c-format
msgid "sfpreset: preset handle too big (%d), max: %d"
msgstr ""
-#: Opcodes/sfont.c:284
+#: Opcodes/sfont.c:287
#, c-format
msgid ""
"sfpreset: cannot find any preset having prog number %d and bank number %d in "
"SoundFont file \"%s\""
msgstr ""
-#: Opcodes/sfont.c:306 Opcodes/sfont.c:2189
+#: Opcodes/sfont.c:309 Opcodes/sfont.c:2192
msgid "sfplay: invalid or out-of-range preset number"
msgstr ""
-#: Opcodes/sfont.c:633
+#: Opcodes/sfont.c:636
msgid "sfplaym: invalid or out-of-range preset number"
msgstr ""
-#: Opcodes/sfont.c:888 Opcodes/sfont.c:1150
+#: Opcodes/sfont.c:891 Opcodes/sfont.c:1153
msgid "sfinstr: instrument out of range"
msgstr ""
-#: Opcodes/sfont.c:1598 Opcodes/sfont.c:1835
+#: Opcodes/sfont.c:1601 Opcodes/sfont.c:1838
#, c-format
msgid ""
"SoundFont file \"%s\" contains ROM samples !\n"
@@ -8054,19 +7940,19 @@ msgid ""
"Session aborted !"
msgstr ""
-#: Opcodes/sfont.c:1987 Opcodes/sfont.c:1993
+#: Opcodes/sfont.c:1990 Opcodes/sfont.c:1996
msgid "Sfont: cannot use globals/"
msgstr ""
-#: Opcodes/sfont.c:1996
+#: Opcodes/sfont.c:1999
msgid "Sfont format not compatible"
msgstr ""
-#: Opcodes/sfont.c:2534
+#: Opcodes/sfont.c:2537
msgid "error... could not create sfont globals\n"
msgstr ""
-#: Opcodes/shape.c:49
+#: Opcodes/shape.c:51
msgid "powershape: ifullscale must be strictly positive"
msgstr ""
@@ -8078,25 +7964,25 @@ msgstr ""
msgid "ftgenonce error"
msgstr ""
-#: Opcodes/singwave.c:85
+#: Opcodes/singwave.c:86
msgid "No table for Modulatr"
msgstr ""
-#: Opcodes/singwave.c:127
+#: Opcodes/singwave.c:128
msgid "No table for Singwave"
msgstr ""
-#: Opcodes/singwave.c:207
+#: Opcodes/singwave.c:208
#, c-format
msgid "SingWave: rate=%f sweepRate=%f mytime=%f\n"
msgstr ""
-#: Opcodes/singwave.c:273
+#: Opcodes/singwave.c:280
#, c-format
msgid "Found Formant: %s (number %i)\n"
msgstr ""
-#: Opcodes/singwave.c:395
+#: Opcodes/singwave.c:397
#, c-format
msgid "Setting Phoneme: %d %f\n"
msgstr ""
@@ -8129,15 +8015,15 @@ msgstr ""
msgid "pvsarp: not initialised\n"
msgstr ""
-#: Opcodes/sndloop.c:995 Opcodes/sndloop.c:1092
+#: Opcodes/sndloop.c:995 Opcodes/sndloop.c:1091
msgid "signal format must be amp-phase or amp-freq.\n"
msgstr ""
-#: Opcodes/sndloop.c:1072
+#: Opcodes/sndloop.c:1071
msgid "pvsvoc: not initialised\n"
msgstr ""
-#: Opcodes/sndloop.c:1123
+#: Opcodes/sndloop.c:1122
msgid "pvsmorph: not initialised\n"
msgstr ""
@@ -8157,25 +8043,27 @@ msgstr ""
msgid "sndwarpst: not initialised"
msgstr ""
-#: Opcodes/sockrecv.c:123 Opcodes/sockrecv.c:213 Opcodes/sockrecv.c:300
-#: Opcodes/socksend.c:75 Opcodes/socksend.c:133 Opcodes/socksend.c:190
-msgid "creating socket"
+#: Opcodes/sockrecv.c:117 Opcodes/sockrecv.c:215 Opcodes/sockrecv.c:314
+#: Opcodes/socksend.c:73 Opcodes/socksend.c:157 Opcodes/socksend.c:252
+#, c-format
+msgid "Winsock2 failed to start: %d"
msgstr ""
-#: Opcodes/sockrecv.c:322
-msgid "connect failed"
+#: Opcodes/sockrecv.c:131 Opcodes/sockrecv.c:227 Opcodes/sockrecv.c:320
+#: Opcodes/socksend.c:86 Opcodes/socksend.c:171 Opcodes/socksend.c:259
+msgid "creating socket"
msgstr ""
-#: Opcodes/sockrecv.c:335
-msgid "read from socket failed"
+#: Opcodes/sockrecv.c:347
+#, c-format
+msgid "connect failed (%d)"
msgstr ""
-#: Opcodes/socksend.c:67 Opcodes/socksend.c:125
-#, c-format
-msgid "The buffersize must be <= %d samples to fit in a udp-packet."
+#: Opcodes/sockrecv.c:360
+msgid "read from socket failed"
msgstr ""
-#: Opcodes/socksend.c:107 Opcodes/socksend.c:169
+#: Opcodes/socksend.c:126 Opcodes/socksend.c:215
msgid "sendto failed"
msgstr ""
@@ -8195,199 +8083,199 @@ msgstr ""
msgid "spat3di: not initialised"
msgstr ""
-#: Opcodes/spectra.c:82
+#: Opcodes/spectra.c:84
msgid "illegal Q value"
msgstr ""
-#: Opcodes/spectra.c:84
+#: Opcodes/spectra.c:86
msgid "unknown dbout code"
msgstr ""
-#: Opcodes/spectra.c:104
+#: Opcodes/spectra.c:106
#, c-format
msgid "spectrum: %s window, %s out, making tables ...\n"
msgstr ""
-#: Opcodes/spectra.c:123
+#: Opcodes/spectra.c:125
#, c-format
msgid ""
"\thigh cps %7.1f\n"
"\t low cps %7.1f\n"
msgstr ""
-#: Opcodes/spectra.c:138
+#: Opcodes/spectra.c:140
#, c-format
msgid "\tQ %4.1f uses a %d sample window each octdown\n"
msgstr ""
-#: Opcodes/spectra.c:169
+#: Opcodes/spectra.c:171
msgid "spectrum windowed sines:"
msgstr ""
-#: Opcodes/spectra.c:187
+#: Opcodes/spectra.c:189
#, c-format
msgid "\t%d oct analysis window delay = %ld samples (%d msecs)\n"
msgstr ""
-#: Opcodes/spectra.c:195
+#: Opcodes/spectra.c:197
msgid "octdown buffers:"
msgstr ""
-#: Opcodes/spectra.c:513 Opcodes/spectra.c:553
+#: Opcodes/spectra.c:515 Opcodes/spectra.c:555
msgid "specdisp: not initialised"
msgstr ""
-#: Opcodes/spectra.c:523
+#: Opcodes/spectra.c:525
#, c-format
msgid "instr %d %s, dft (%s), %ld octaves (%d - %d Hz):"
msgstr ""
-#: Opcodes/spectra.c:530
+#: Opcodes/spectra.c:532
#, c-format
msgid "instr %d %s, dft (%s), %ld octaves (%3.1f - %3.1f Hz):"
msgstr ""
-#: Opcodes/spectra.c:611
+#: Opcodes/spectra.c:613
msgid "per oct rolloff too steep"
msgstr ""
-#: Opcodes/spectra.c:632
+#: Opcodes/spectra.c:634
#, c-format
msgid "specptrk: %d freqs, %d%s ptls at "
msgstr ""
-#: Opcodes/spectra.c:633
+#: Opcodes/spectra.c:635
msgid " odd"
msgstr ""
-#: Opcodes/spectra.c:637
+#: Opcodes/spectra.c:639
msgid ""
"\n"
"\t\trolloff vals:"
msgstr ""
-#: Opcodes/spectra.c:660
+#: Opcodes/spectra.c:662
#, c-format
msgid ""
"\n"
"\tdbthresh %4.1f: X-corr %s threshon %4.1f, threshoff %4.1f\n"
msgstr ""
-#: Opcodes/spectra.c:817
+#: Opcodes/spectra.c:819
msgid "specptrk: not initialised"
msgstr ""
-#: Opcodes/spectra.c:849
+#: Opcodes/spectra.c:851
msgid "specsum: not initialised"
msgstr ""
-#: Opcodes/spectra.c:860
+#: Opcodes/spectra.c:862
msgid "inputs have different sizes"
msgstr ""
-#: Opcodes/spectra.c:863
+#: Opcodes/spectra.c:865
msgid "inputs have diff. time periods"
msgstr ""
-#: Opcodes/spectra.c:867
+#: Opcodes/spectra.c:869
msgid "inputs have different freq resolution"
msgstr ""
-#: Opcodes/spectra.c:870
+#: Opcodes/spectra.c:872
msgid "inputs have different amptypes"
msgstr ""
-#: Opcodes/spectra.c:902
+#: Opcodes/spectra.c:904
msgid "specaddm: not initialised"
msgstr ""
-#: Opcodes/spectra.c:926
+#: Opcodes/spectra.c:928
msgid "specdiff: local buffers not initialised"
msgstr ""
-#: Opcodes/spectra.c:964
+#: Opcodes/spectra.c:966
msgid "specdiff: not initialised"
msgstr ""
-#: Opcodes/spectra.c:986
+#: Opcodes/spectra.c:988
msgid "specscal: local buffer not initialised"
msgstr ""
-#: Opcodes/spectra.c:991
+#: Opcodes/spectra.c:993
msgid "missing fscale table"
msgstr ""
-#: Opcodes/spectra.c:1057
+#: Opcodes/spectra.c:1059
msgid "specscal: not initialised"
msgstr ""
-#: Opcodes/spectra.c:1081
+#: Opcodes/spectra.c:1083
msgid "spechist: local buffers not intiialised"
msgstr ""
-#: Opcodes/spectra.c:1113
+#: Opcodes/spectra.c:1115
msgid "spechist: not initialised"
msgstr ""
-#: Opcodes/spectra.c:1134
+#: Opcodes/spectra.c:1136
msgid "specfilt: local buffers not initialised"
msgstr ""
-#: Opcodes/spectra.c:1142
+#: Opcodes/spectra.c:1144
msgid "missing htim ftable"
msgstr ""
-#: Opcodes/spectra.c:1165
+#: Opcodes/spectra.c:1167
msgid "htim ftable must be all-positive"
msgstr ""
-#: Opcodes/spectra.c:1169
+#: Opcodes/spectra.c:1171
#, c-format
msgid "coef range: %6.3f - %6.3f\n"
msgstr ""
-#: Opcodes/spectra.c:1201
+#: Opcodes/spectra.c:1203
msgid "specfilt: not initialised"
msgstr ""
-#: Opcodes/stackops.c:80
+#: Opcodes/stackops.c:81
msgid "fsig = : source signal is not initialised"
msgstr ""
-#: Opcodes/stackops.c:126
+#: Opcodes/stackops.c:125
msgid "stack overflow"
msgstr ""
-#: Opcodes/stackops.c:134
+#: Opcodes/stackops.c:131
msgid "cannot pop from empty stack"
msgstr ""
-#: Opcodes/stackops.c:142
+#: Opcodes/stackops.c:137
msgid "argument number or type mismatch"
msgstr ""
-#: Opcodes/stackops.c:150
+#: Opcodes/stackops.c:143
msgid "string argument is too long"
msgstr ""
-#: Opcodes/stackops.c:167
+#: Opcodes/stackops.c:160
msgid "Error allocating argument stack"
msgstr ""
-#: Opcodes/stackops.c:207 Top/argdecode.c:1212 util/envext.c:99
+#: Opcodes/stackops.c:200 Top/argdecode.c:1212 util/envext.c:99
#: util/scale.c:248
msgid "too many arguments"
msgstr ""
-#: Opcodes/stackops.c:286
+#: Opcodes/stackops.c:279
msgid "the stack is already allocated"
msgstr ""
-#: Opcodes/stackops.c:637
+#: Opcodes/stackops.c:630
msgid "number of arguments != nchnls"
msgstr ""
-#: Opcodes/stdopcod.c:36
+#: Opcodes/stdopcod.c:37
msgid "stdopcod.c: error: globals already allocated"
msgstr ""
@@ -8402,35 +8290,43 @@ msgstr ""
msgid "RAWWAVE_PATH: %s\n"
msgstr ""
-#: Opcodes/syncgrain.c:175 Opcodes/syncgrain.c:338 Opcodes/syncgrain.c:683
+#: Opcodes/syncgrain.c:176 Opcodes/syncgrain.c:339 Opcodes/syncgrain.c:684
msgid "grain size smaller than 1 sample\n"
msgstr ""
-#: Opcodes/syncgrain.c:387
+#: Opcodes/syncgrain.c:388
msgid "diskgrain: invalid number of channels"
msgstr ""
-#: Opcodes/syncgrain.c:419
+#: Opcodes/syncgrain.c:420
msgid "diskgrain: could not open file\n"
msgstr ""
-#: Opcodes/syncgrain.c:423
+#: Opcodes/syncgrain.c:424
msgid ""
"diskgrain: soundfile channel numbers do not match the number of outputs \n"
msgstr ""
-#: Opcodes/syncgrain.c:435
+#: Opcodes/syncgrain.c:436
msgid "diskgrain: could not read file \n"
msgstr ""
-#: Opcodes/tabsum.c:39
+#: Opcodes/tabsum.c:40
msgid "tabsum: No table"
msgstr ""
-#: Opcodes/tabsum.c:54
+#: Opcodes/tabsum.c:55
msgid "tabsum: Not initialised"
msgstr ""
+#: Opcodes/tabvars.c:201 Opcodes/tabvars.c:218
+msgid "t-var not initialised"
+msgstr ""
+
+#: Opcodes/tabvars.c:203 Opcodes/tabvars.c:220
+msgid "No table for copy2ftab"
+msgstr ""
+
#: Opcodes/ugens7.c:46 Opcodes/ugensa.c:49
msgid "illegal value for iolaps"
msgstr ""
@@ -8576,17 +8472,17 @@ msgstr ""
msgid "table in iftfn for ftmorf does not exist"
msgstr ""
-#: Opcodes/ugnorman.c:120
+#: Opcodes/ugnorman.c:121
#, c-format
msgid "%s: Ats file %s not read (does it exist?)"
msgstr ""
-#: Opcodes/ugnorman.c:131
+#: Opcodes/ugnorman.c:132
#, c-format
msgid "%s: either %s is not an ATS file or the byte endianness is wrong"
msgstr ""
-#: Opcodes/ugnorman.c:139
+#: Opcodes/ugnorman.c:140
#, c-format
msgid ""
"%s: %s is byte-swapped\n"
@@ -8594,125 +8490,125 @@ msgid ""
"\twill not result in different audio, but they may slow down processing."
msgstr ""
-#: Opcodes/ugnorman.c:175
+#: Opcodes/ugnorman.c:176
msgid ""
"ATSINFO: location is out of bounds: 0-8 are the only possible selections"
msgstr ""
-#: Opcodes/ugnorman.c:265
+#: Opcodes/ugnorman.c:266
#, c-format
msgid "ATSREAD: partial %i out of range, max allowed is %i"
msgstr ""
-#: Opcodes/ugnorman.c:291
+#: Opcodes/ugnorman.c:292
msgid "Type not implemented"
msgstr ""
-#: Opcodes/ugnorman.c:310
+#: Opcodes/ugnorman.c:311
msgid "ATSREAD: only positive time pointer values allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:319
+#: Opcodes/ugnorman.c:320
msgid "ATSREAD: timepointer out of range, truncated to last frame\n"
msgstr ""
-#: Opcodes/ugnorman.c:332
+#: Opcodes/ugnorman.c:333
msgid "ATSREAD: not initialised"
msgstr ""
-#: Opcodes/ugnorman.c:394
+#: Opcodes/ugnorman.c:395
#, c-format
msgid "ATSREADNZ: band %i out of range, 1-25 are the valid band values"
msgstr ""
-#: Opcodes/ugnorman.c:412
+#: Opcodes/ugnorman.c:413
msgid "ATSREADNZ: Type either not implemented or does not contain noise"
msgstr ""
-#: Opcodes/ugnorman.c:431
+#: Opcodes/ugnorman.c:432
msgid "ATSREADNZ: only positive time pointer values allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:440
+#: Opcodes/ugnorman.c:441
msgid "ATSREADNZ: timepointer out of range, truncated to last frame\n"
msgstr ""
-#: Opcodes/ugnorman.c:449
+#: Opcodes/ugnorman.c:450
msgid "ATSREADNZ: not initialised"
msgstr ""
-#: Opcodes/ugnorman.c:467
+#: Opcodes/ugnorman.c:468
msgid "ATSADD: Function table number for synthesis waveform not valid"
msgstr ""
-#: Opcodes/ugnorman.c:475
+#: Opcodes/ugnorman.c:476
msgid "ATSADD: Gate Function table number not valid"
msgstr ""
-#: Opcodes/ugnorman.c:521
+#: Opcodes/ugnorman.c:522
#, c-format
msgid "ATSADD: Partial(s) out of range, max partial allowed is %i"
msgstr ""
-#: Opcodes/ugnorman.c:555
+#: Opcodes/ugnorman.c:556
msgid "ATSADD: Type not implemented"
msgstr ""
-#: Opcodes/ugnorman.c:585
+#: Opcodes/ugnorman.c:586
msgid ""
"ATSADD: only positive time pointer values are allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:594
+#: Opcodes/ugnorman.c:595
msgid "ATSADD: time pointer out of range, truncating to last frame\n"
msgstr ""
-#: Opcodes/ugnorman.c:638
+#: Opcodes/ugnorman.c:639
msgid "ATSADD: not initialised"
msgstr ""
-#: Opcodes/ugnorman.c:842
+#: Opcodes/ugnorman.c:845
msgid "ATSADDNZ: This file type contains no noise"
msgstr ""
-#: Opcodes/ugnorman.c:846
+#: Opcodes/ugnorman.c:849
msgid "ATSADDNZ: This file type has not been implemented in this code yet."
msgstr ""
-#: Opcodes/ugnorman.c:869
+#: Opcodes/ugnorman.c:872
msgid "ATSADDNZ: Band(s) out of range, max band allowed is 25"
msgstr ""
-#: Opcodes/ugnorman.c:886
+#: Opcodes/ugnorman.c:889
msgid ""
"ATSADDNZ: Type either has no noise or is not implemented (only type 3 and 4 "
"work now)"
msgstr ""
-#: Opcodes/ugnorman.c:1002
+#: Opcodes/ugnorman.c:1005
msgid ""
"ATSADDNZ: only positive time pointer values are allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:1011
+#: Opcodes/ugnorman.c:1014
msgid "ATSADDNZ: time pointer out of range, truncating to last frame\n"
msgstr ""
-#: Opcodes/ugnorman.c:1165
+#: Opcodes/ugnorman.c:1168
#, c-format
msgid "ATSSINNOI: Partial(s) out of range, max partial allowed is %i"
msgstr ""
-#: Opcodes/ugnorman.c:1202
+#: Opcodes/ugnorman.c:1205
msgid "ATSSINNOI: Type not implemented"
msgstr ""
-#: Opcodes/ugnorman.c:1315
+#: Opcodes/ugnorman.c:1316
msgid ""
"ATSSINNOI: only positive time pointer values are allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:1324
+#: Opcodes/ugnorman.c:1325
msgid "ATSSINNOI: time pointer out of range, truncating to last frame\n"
msgstr ""
@@ -8785,44 +8681,44 @@ msgstr ""
msgid "ATSCROSS: you must have an atsbufread before an atsinterpread"
msgstr ""
-#: Opcodes/ugsc.c:394
+#: Opcodes/ugsc.c:390
msgid "Phaser mode must be either 1 or 2"
msgstr ""
-#: Opcodes/vbap.c:57
+#: Opcodes/vbap.c:59
msgid "vbap: error allocating loudspeaker table"
msgstr ""
-#: Opcodes/vbap.c:264
+#: Opcodes/vbap.c:266
msgid ""
"Number of loudspeakers is zero\n"
"Exiting"
msgstr ""
-#: Opcodes/vbap.c:573
+#: Opcodes/vbap.c:575
msgid "Error in loudspeaker dimension."
msgstr ""
-#: Opcodes/vbap.c:596
+#: Opcodes/vbap.c:598
msgid "Too few loudspeakers"
msgstr ""
-#: Opcodes/vbap.c:622
+#: Opcodes/vbap.c:624
msgid "Not valid 3-D configuration"
msgstr ""
-#: Opcodes/vbap.c:668 Opcodes/vbap.c:767
+#: Opcodes/vbap.c:670 Opcodes/vbap.c:769
msgid ""
"\n"
"Configured loudspeakers\n"
msgstr ""
-#: Opcodes/vbap.c:670
+#: Opcodes/vbap.c:672
#, c-format
msgid "Triplet %d Loudspeakers: "
msgstr ""
-#: Opcodes/vbap.c:769
+#: Opcodes/vbap.c:771
#, c-format
msgid "Pair %d Loudspeakers: "
msgstr ""
@@ -8904,41 +8800,33 @@ msgstr ""
msgid "Have to have at least %d directions in vbapzmove"
msgstr ""
-#: Opcodes/Vosim.c:49
+#: Opcodes/Vosim.c:51
msgid "vosim: pulse table not found"
msgstr ""
-#: Opcodes/Vosim.c:72
+#: Opcodes/Vosim.c:74
msgid "vosim: zero kfund. 'Infinite' length event generated."
msgstr ""
-#: Opcodes/Vosim.c:80
+#: Opcodes/Vosim.c:82
#, c-format
msgid "vosim: kfund (%f) > sr. Generating ksmps silence."
msgstr ""
-#: Opcodes/Vosim.c:158
+#: Opcodes/Vosim.c:160
msgid "vosim: not initialised"
msgstr ""
-#: Opcodes/vpvoc.c:118
-msgid "tableseg: not initialised"
-msgstr ""
-
-#: Opcodes/vpvoc.c:146
-msgid "tablexseg: not initialised"
-msgstr ""
-
-#: Opcodes/vpvoc.c:172
+#: Opcodes/vpvoc.c:173
#, c-format
msgid "vpvoc: Could not find ifnmagctrl table %f"
msgstr ""
-#: Opcodes/vpvoc.c:178
+#: Opcodes/vpvoc.c:179
msgid "vpvoc: associated tableseg not found"
msgstr ""
-#: Opcodes/vpvoc.c:194
+#: Opcodes/vpvoc.c:195
#, c-format
msgid "VPVOC cannot load %s"
msgstr ""
@@ -9055,47 +8943,47 @@ msgstr ""
msgid "-B N\tsamples per hardware sound I/O buffer"
msgstr ""
-#: Top/argdecode.c:75 util/mixer.c:95 util/scale.c:46 util/srconv.c:739
+#: Top/argdecode.c:75 util/mixer.c:95 util/scale.c:46 util/srconv.c:738
msgid "-A\tcreate an AIFF format output soundfile"
msgstr ""
-#: Top/argdecode.c:76 util/mixer.c:96 util/scale.c:47 util/srconv.c:741
+#: Top/argdecode.c:76 util/mixer.c:96 util/scale.c:47 util/srconv.c:740
msgid "-W\tcreate a WAV format output soundfile"
msgstr ""
-#: Top/argdecode.c:77 util/srconv.c:740
+#: Top/argdecode.c:77 util/srconv.c:739
msgid "-J\tcreate an IRCAM format output soundfile"
msgstr ""
-#: Top/argdecode.c:78 util/mixer.c:97 util/scale.c:48 util/srconv.c:742
+#: Top/argdecode.c:78 util/mixer.c:97 util/scale.c:48 util/srconv.c:741
msgid "-h\tno header on output soundfile"
msgstr ""
-#: Top/argdecode.c:79 util/mixer.c:99 util/scale.c:49 util/srconv.c:743
+#: Top/argdecode.c:79 util/mixer.c:99 util/scale.c:49 util/srconv.c:742
msgid "-c\t8-bit signed_char sound samples"
msgstr ""
-#: Top/argdecode.c:81 util/mixer.c:101 util/scale.c:50 util/srconv.c:744
+#: Top/argdecode.c:81 util/mixer.c:101 util/scale.c:50 util/srconv.c:743
msgid "-a\talaw sound samples"
msgstr ""
-#: Top/argdecode.c:83 util/mixer.c:98 util/mixer.c:100 util/srconv.c:745
+#: Top/argdecode.c:83 util/mixer.c:98 util/mixer.c:100 util/srconv.c:744
msgid "-8\t8-bit unsigned_char sound samples"
msgstr ""
-#: Top/argdecode.c:84 util/mixer.c:102 util/scale.c:51 util/srconv.c:746
+#: Top/argdecode.c:84 util/mixer.c:102 util/scale.c:51 util/srconv.c:745
msgid "-u\tulaw sound samples"
msgstr ""
-#: Top/argdecode.c:85 util/mixer.c:103 util/scale.c:52 util/srconv.c:747
+#: Top/argdecode.c:85 util/mixer.c:103 util/scale.c:52 util/srconv.c:746
msgid "-s\tshort_int sound samples"
msgstr ""
-#: Top/argdecode.c:86 util/mixer.c:104 util/scale.c:53 util/srconv.c:748
+#: Top/argdecode.c:86 util/mixer.c:104 util/scale.c:53 util/srconv.c:747
msgid "-l\tlong_int sound samples"
msgstr ""
-#: Top/argdecode.c:87 util/mixer.c:105 util/scale.c:54 util/srconv.c:749
+#: Top/argdecode.c:87 util/mixer.c:105 util/scale.c:54 util/srconv.c:748
msgid "-f\tfloat sound samples"
msgstr ""
@@ -9103,7 +8991,7 @@ msgstr ""
msgid "-3\t24bit sound samples"
msgstr ""
-#: Top/argdecode.c:89 util/srconv.c:750
+#: Top/argdecode.c:89 util/srconv.c:749
msgid "-r N\torchestra srate override"
msgstr ""
@@ -9111,7 +8999,7 @@ msgstr ""
msgid "-k N\torchestra krate override"
msgstr ""
-#: Top/argdecode.c:91 util/srconv.c:751
+#: Top/argdecode.c:91 util/srconv.c:750
msgid "-K\tDo not generate PEAK chunks"
msgstr ""
@@ -9171,7 +9059,7 @@ msgstr ""
msgid "-F fnam\tread MIDIfile event stream from file 'fnam'"
msgstr ""
-#: Top/argdecode.c:107 util/mixer.c:106 util/scale.c:59 util/srconv.c:752
+#: Top/argdecode.c:107 util/mixer.c:106 util/scale.c:59 util/srconv.c:751
msgid "-R\tcontinually rewrite header while writing soundfile (WAV/AIFF)"
msgstr ""
@@ -9179,7 +9067,7 @@ msgstr ""
msgid "-H#\tprint heartbeat style 1, 2 or 3 at each soundfile write"
msgstr ""
-#: Top/argdecode.c:109 util/mixer.c:108 util/scale.c:61 util/srconv.c:754
+#: Top/argdecode.c:109 util/mixer.c:108 util/scale.c:61 util/srconv.c:753
msgid "-N\tnotify (ring the bell) when score or miditrack is done"
msgstr ""
@@ -9665,16 +9553,16 @@ msgid "-M: stdin not supported on this platform"
msgstr ""
#: Top/argdecode.c:668 Top/argdecode.c:959 util/envext.c:84 util/mixer.c:205
-#: util/scale.c:173 util/srconv.c:248 util/xtrct.c:116
+#: util/scale.c:173 util/srconv.c:247 util/xtrct.c:116
msgid "no outfilename"
msgstr ""
-#: Top/argdecode.c:671 Top/argdecode.c:963 util/scale.c:177 util/srconv.c:252
+#: Top/argdecode.c:671 Top/argdecode.c:963 util/scale.c:177 util/srconv.c:251
#: util/xtrct.c:120
msgid "-o cannot be stdin"
msgstr ""
-#: Top/argdecode.c:675 Top/argdecode.c:967 util/scale.c:180 util/srconv.c:257
+#: Top/argdecode.c:675 Top/argdecode.c:967 util/scale.c:180 util/srconv.c:256
#: util/xtrct.c:123
msgid "stdout audio not supported"
msgstr ""
@@ -9793,164 +9681,164 @@ msgstr ""
msgid "cscoreFileGetCurrent: no fp current"
msgstr ""
-#: Top/csmodule.c:192
+#: Top/csmodule.c:199
#, c-format
msgid "not loading '%s' (uses incompatible floating point type)"
msgstr ""
-#: Top/csmodule.c:201
+#: Top/csmodule.c:209
#, c-format
msgid ""
"not loading '%s' (incompatible with this version of Csound (%d.%d/%d.%d)"
msgstr ""
-#: Top/csmodule.c:244
+#: Top/csmodule.c:252
#, c-format
msgid "could not open library '%s' (%s)"
msgstr ""
-#: Top/csmodule.c:247
+#: Top/csmodule.c:255
#, c-format
msgid "could not open library '%s' (%d)"
msgstr ""
-#: Top/csmodule.c:303
+#: Top/csmodule.c:311
#, c-format
msgid "'%s' is not a Csound plugin library"
msgstr ""
-#: Top/csmodule.c:314
+#: Top/csmodule.c:322
msgid "csoundLoadExternal(): memory allocation failure"
msgstr ""
-#: Top/csmodule.c:328 Top/csmodule.c:336
+#: Top/csmodule.c:336 Top/csmodule.c:344
#, c-format
msgid "Error in pre-initialisation function of module '%s'"
msgstr ""
-#: Top/csmodule.c:599 Top/csmodule.c:605 Top/csmodule.c:616 Top/csmodule.c:623
-#: Top/csmodule.c:629 Top/csmodule.c:637
+#: Top/csmodule.c:608 Top/csmodule.c:614 Top/csmodule.c:625 Top/csmodule.c:632
+#: Top/csmodule.c:638 Top/csmodule.c:646
msgid "Error opening plugin directory\n"
msgstr ""
-#: Top/csmodule.c:687
+#: Top/csmodule.c:696
#, c-format
msgid "Error opening plugin directory '%s': %s"
msgstr ""
-#: Top/csmodule.c:722
+#: Top/csmodule.c:731
#, c-format
msgid "path name too long, skipping '%s'"
msgstr ""
-#: Top/csmodule.c:728
+#: Top/csmodule.c:737
#, c-format
msgid "Library %s omitted\n"
msgstr ""
-#: Top/csmodule.c:764
+#: Top/csmodule.c:773
msgid "Loading command-line libraries:\n"
msgstr ""
-#: Top/csmodule.c:787
+#: Top/csmodule.c:796
#, c-format
msgid " *** error loading '%s'"
msgstr ""
-#: Top/csmodule.c:810
+#: Top/csmodule.c:819
#, c-format
msgid "Error starting module '%s'"
msgstr ""
-#: Top/csmodule.c:907
+#: Top/csmodule.c:918
#, c-format
msgid "Error de-initialising module '%s'"
msgstr ""
-#: Top/csound.c:1606 Top/csound.c:1626
+#: Top/csound.c:1636 Top/csound.c:1656
msgid "Early return from csoundPerformKsmps().\n"
msgstr ""
-#: Top/csound.c:1612
+#: Top/csound.c:1642
msgid "Score finished in csoundPerformKsmps().\n"
msgstr ""
-#: Top/csound.c:1645
+#: Top/csound.c:1675
msgid "Early return from csoundPerformBuffer().\n"
msgstr ""
-#: Top/csound.c:1670
+#: Top/csound.c:1700
msgid "Early return from csoundPerform().\n"
msgstr ""
-#: Top/csound.c:1677
+#: Top/csound.c:1707
msgid "Score finished in csoundPerform().\n"
msgstr ""
-#: Top/csound.c:1697
+#: Top/csound.c:1727
msgid "csoundPerform(): stopped.\n"
msgstr ""
-#: Top/csound.c:1968
+#: Top/csound.c:1998
msgid "WARNING: "
msgstr ""
-#: Top/csound.c:2089
+#: Top/csound.c:2119
msgid "rtdummy: failed to allocate globals"
msgstr ""
-#: Top/csound.c:2090
+#: Top/csound.c:2120
msgid "rtaudio: dummy module enabled\n"
msgstr ""
-#: Top/csound.c:2119 Top/csound.c:2155
+#: Top/csound.c:2149 Top/csound.c:2185
msgid " *** error: rtaudio module set to empty string"
msgstr ""
-#: Top/csound.c:2123 Top/csound.c:2159
+#: Top/csound.c:2153 Top/csound.c:2189
#, c-format
msgid " *** error: unknown rtaudio module: '%s'"
msgstr ""
-#: Top/csound.c:2241
+#: Top/csound.c:2271
msgid "WARNING: real time midi input disabled, using dummy functions\n"
msgstr ""
-#: Top/csound.c:2246 Top/csound.c:2280
+#: Top/csound.c:2276 Top/csound.c:2310
msgid "error: -+rtmidi set to empty string"
msgstr ""
-#: Top/csound.c:2249 Top/csound.c:2283
+#: Top/csound.c:2279 Top/csound.c:2313
#, c-format
msgid "error: -+rtmidi='%s': unknown module"
msgstr ""
-#: Top/csound.c:2275
+#: Top/csound.c:2305
msgid "WARNING: real time midi output disabled, using dummy functions\n"
msgstr ""
-#: Top/csound.c:2297
+#: Top/csound.c:2327
msgid "Unknown MIDI error"
msgstr ""
-#: Top/csound.c:2415
+#: Top/csound.c:2445
msgid "xyin not supported. use invalue opcode instead."
msgstr ""
-#: Top/csound.c:2522
+#: Top/csound.c:2552
msgid "Failed to allocate new opcode entry."
msgstr ""
-#: Top/csound.c:2545
+#: Top/csound.c:2575
#, c-format
msgid "Failed to allocate opcode entry for %s."
msgstr ""
-#: Top/csound.c:2876
+#: Top/csound.c:2906
msgid "Cannot open /proc/cpuinfo. Support for RDTSC is not available.\n"
msgstr ""
-#: Top/csound.c:2927
+#: Top/csound.c:2957
msgid "No valid CPU frequency entry was found in /proc/cpuinfo.\n"
msgstr ""
@@ -9958,25 +9846,25 @@ msgstr ""
msgid "Error allocating opcode list"
msgstr ""
-#: Top/main.c:161
+#: Top/main.c:160
#, c-format
msgid "WARNING: cannot open csoundrc file %s\n"
msgstr ""
-#: Top/main.c:164
+#: Top/main.c:163
#, c-format
msgid "Reading options from $CSOUNDRC: %s \n"
msgstr ""
-#: Top/main.c:173
+#: Top/main.c:172
msgid "Reading options from $HOME/.csoundrc\n"
msgstr ""
-#: Top/main.c:200
+#: Top/main.c:199
msgid "no orchestra name"
msgstr ""
-#: Top/main.c:225
+#: Top/main.c:224
msgid "Reading CSD failed ... stopping"
msgstr ""
@@ -9988,7 +9876,7 @@ msgstr ""
msgid "error: multiple uses of stdout"
msgstr ""
-#: Top/main.c:260 util/dnoise.c:268
+#: Top/main.c:260 util/dnoise.c:264
#, c-format
msgid "%s not a recognised SFOUTYP env setting"
msgstr ""
@@ -10001,58 +9889,62 @@ msgstr ""
msgid "realtime performance using dummy numeric scorefile\n"
msgstr ""
-#: Top/main.c:319
+#: Top/main.c:314
#, c-format
msgid "orchname: %s\n"
msgstr ""
-#: Top/main.c:321
-#, c-format
-msgid "scorename: %s\n"
+#: Top/main.c:334
+msgid "Stopping on parser failure\n"
msgstr ""
-#: Top/main.c:353
+#: Top/main.c:352
msgid "end of orchestra compile"
msgstr ""
-#: Top/main.c:360
+#: Top/main.c:359
#, c-format
msgid "using previous %s\n"
msgstr ""
-#: Top/main.c:373
+#: Top/main.c:369
#, c-format
msgid "cannot open scorefile %s"
msgstr ""
-#: Top/main.c:378 Top/main.c:399
-#, c-format
-msgid "cannot open %s for writing"
+#: Top/main.c:371
+msgid "sorting score ...\n"
msgstr ""
#: Top/main.c:381
-msgid "sorting score ...\n"
+#, c-format
+msgid "cannot extract %s, name conflict"
+msgstr ""
+
+#: Top/main.c:384
+#, c-format
+msgid "cannot open extract file %s"
msgstr ""
#: Top/main.c:388
#, c-format
-msgid "cannot extract %s, name conflict"
+msgid "cannot reopen %s"
msgstr ""
-#: Top/main.c:391
+#: Top/main.c:392
#, c-format
-msgid "cannot open extract file %s"
+msgid "cannot open %s for writing"
msgstr ""
-#: Top/main.c:401
+#: Top/main.c:394
msgid " ... extracting ...\n"
msgstr ""
-#: Top/main.c:414
+#: Top/main.c:405
msgid "end of score sort"
msgstr ""
-#: Top/main.c:416
+#: Top/main.c:407
msgid "Syntax check completed.\n"
msgstr ""
@@ -10117,163 +10009,158 @@ msgstr ""
msgid " *** error setting option '%s' to '%s': %s\n"
msgstr ""
-#: Top/one_file.c:105 Top/one_file.c:113
+#: Top/one_file.c:110 Top/one_file.c:118
msgid " *** cannot create temporary file"
msgstr ""
-#: Top/one_file.c:198
+#: Top/one_file.c:203
#, c-format
msgid "Removing temporary file %s ...\n"
msgstr ""
-#: Top/one_file.c:202
+#: Top/one_file.c:207
#, c-format
msgid "WARNING: could not remove %s\n"
msgstr ""
-#: Top/one_file.c:268 Top/one_file.c:296
+#: Top/one_file.c:274 Top/one_file.c:302
#, c-format
msgid "More than %d arguments in <CsOptions>"
msgstr ""
-#: Top/one_file.c:313
+#: Top/one_file.c:319
#, c-format
msgid "Invalid arguments in <CsOptions>: %s"
msgstr ""
-#: Top/one_file.c:316
+#: Top/one_file.c:322
#, c-format
msgid "Invalid arguments in .csoundrc or -@ file: %s"
msgstr ""
-#: Top/one_file.c:322 Top/one_file.c:790
+#: Top/one_file.c:328 Top/one_file.c:744
msgid "Missing end tag </CsOptions>"
msgstr ""
-#: Top/one_file.c:340 Top/one_file.c:372 Top/one_file.c:420
-#, c-format
-msgid "Creating %s (%p)\n"
-msgstr ""
-
-#: Top/one_file.c:343
-#, c-format
-msgid "Failed to create %s"
-msgstr ""
-
-#: Top/one_file.c:356
+#: Top/one_file.c:354
msgid "Missing end tag </CsInstruments>"
msgstr ""
-#: Top/one_file.c:389 Top/one_file.c:442
+#: Top/one_file.c:376 Top/one_file.c:430
msgid "Missing end tag </CsScore>"
msgstr ""
-#: Top/one_file.c:403 Top/one_file.c:408
+#: Top/one_file.c:391 Top/one_file.c:396
msgid "Missing program in tag <CsScore>"
msgstr ""
-#: Top/one_file.c:433
+#: Top/one_file.c:408
+#, c-format
+msgid "Creating %s (%p)\n"
+msgstr ""
+
+#: Top/one_file.c:421
msgid "External generation failed"
msgstr ""
-#: Top/one_file.c:520
+#: Top/one_file.c:468
#, c-format
msgid "Non base64 character %c(%2x)"
msgstr ""
-#: Top/one_file.c:539
+#: Top/one_file.c:487
msgid "Truncated byte at end of base64 stream"
msgstr ""
-#: Top/one_file.c:554
+#: Top/one_file.c:503
#, c-format
msgid "Cannot open temporary file (%s) for MIDI subfile"
msgstr ""
-#: Top/one_file.c:571
+#: Top/one_file.c:520
msgid "Missing end tag </CsMidifileB>"
msgstr ""
-#: Top/one_file.c:586 Top/one_file.c:633
+#: Top/one_file.c:536 Top/one_file.c:584
#, c-format
msgid "File %s already exists"
msgstr ""
-#: Top/one_file.c:591
+#: Top/one_file.c:541
#, c-format
msgid "Cannot open sample file (%s) subfile"
msgstr ""
-#: Top/one_file.c:605
+#: Top/one_file.c:555
msgid "Missing end tag </CsSampleB>"
msgstr ""
-#: Top/one_file.c:638
+#: Top/one_file.c:589
#, c-format
msgid "Cannot open file (%s) subfile"
msgstr ""
-#: Top/one_file.c:653
+#: Top/one_file.c:604
msgid "Missing end tag </CsFileB>"
msgstr ""
-#: Top/one_file.c:672
+#: Top/one_file.c:624
#, c-format
msgid "This CSD file requires a version of Csound before %d.%02d"
msgstr ""
-#: Top/one_file.c:680 Top/one_file.c:687
+#: Top/one_file.c:632 Top/one_file.c:639
#, c-format
msgid "This CSD file requires a version of Csound after %d.%02d"
msgstr ""
-#: Top/one_file.c:693
+#: Top/one_file.c:645
msgid "Missing end tag </CsVersion>"
msgstr ""
-#: Top/one_file.c:702
+#: Top/one_file.c:655
msgid "**** Licence Information ****\n"
msgstr ""
-#: Top/one_file.c:708
+#: Top/one_file.c:661
msgid "**** End of Licence Information ****\n"
msgstr ""
-#: Top/one_file.c:719
+#: Top/one_file.c:672
msgid "Missing end tag </CsLicence>"
msgstr ""
-#: Top/one_file.c:749
+#: Top/one_file.c:703
#, c-format
msgid "Failed to open csd file: %s"
msgstr ""
-#: Top/one_file.c:764
+#: Top/one_file.c:718
msgid "STARTING FILE\n"
msgstr ""
-#: Top/one_file.c:780
+#: Top/one_file.c:734
msgid "Creating options\n"
msgstr ""
-#: Top/one_file.c:786
+#: Top/one_file.c:740
msgid "Skipping <CsOptions>\n"
msgstr ""
-#: Top/one_file.c:800
+#: Top/one_file.c:754
msgid "Creating orchestra\n"
msgstr ""
-#: Top/one_file.c:805
+#: Top/one_file.c:759
msgid "Creating score\n"
msgstr ""
-#: Top/one_file.c:839
+#: Top/one_file.c:793
#, c-format
msgid "unknown CSD tag: %s\n"
msgstr ""
-#: Top/one_file.c:844
+#: Top/one_file.c:798
msgid "Could not find <CsoundSynthesizer> tag in CSD file.\n"
msgstr ""
@@ -10447,15 +10334,15 @@ msgstr ""
#, c-format
msgid ""
"\n"
-" Could not open %s for writing, bye...\n"
+"Could not open %s for writing, bye...\n"
msgstr ""
#: util/atsa.c:544
msgid "saving ATS data..."
msgstr ""
-#: util/atsa.c:546 util/atsa.c:2344 util/atsa.c:2358 util/atsa.c:2368
-#: util/atsa.c:2548 util/atsa.c:2611 util/atsa.c:2699
+#: util/atsa.c:546 util/atsa.c:2354 util/atsa.c:2368 util/atsa.c:2387
+#: util/atsa.c:2567 util/atsa.c:2630 util/atsa.c:2718
msgid "done!\n"
msgstr ""
@@ -10563,181 +10450,181 @@ msgid ""
"\n"
msgstr ""
-#: util/atsa.c:1482
+#: util/atsa.c:1492
#, c-format
msgid "atsa: error opening residual file '%s'"
msgstr ""
-#: util/atsa.c:1486
+#: util/atsa.c:1496
#, c-format
msgid "atsa: residual file has %d channels, must be stereo !"
msgstr ""
-#: util/atsa.c:1813
+#: util/atsa.c:1823
#, c-format
msgid ""
"\n"
"ERROR: cannot open file %s for writing\n"
msgstr ""
-#: util/atsa.c:1908
+#: util/atsa.c:1918
msgid "Error: sound not optimised !"
msgstr ""
-#: util/atsa.c:2003
+#: util/atsa.c:2013
#, c-format
msgid "atsa: cannot open input file '%s'"
msgstr ""
-#: util/atsa.c:2010
+#: util/atsa.c:2020
#, c-format
msgid "atsa: file has %d channels, must be mono !"
msgstr ""
-#: util/atsa.c:2015
+#: util/atsa.c:2025
msgid "tracking...\n"
msgstr ""
-#: util/atsa.c:2024
+#: util/atsa.c:2034
#, c-format
msgid "start %f out of bounds, corrected to 0.0"
msgstr ""
-#: util/atsa.c:2034
+#: util/atsa.c:2044
#, c-format
msgid "duration %f out of bounds, limited to file duration"
msgstr ""
-#: util/atsa.c:2040
+#: util/atsa.c:2050
#, c-format
msgid "start: %f duration: %f file dur: %f\n"
msgstr ""
-#: util/atsa.c:2047
+#: util/atsa.c:2057
#, c-format
msgid "lowest freq. %f out of bounds, forced to default: %f"
msgstr ""
-#: util/atsa.c:2057
+#: util/atsa.c:2067
#, c-format
msgid "highest freq. %f out of bounds, forced to default: %f"
msgstr ""
-#: util/atsa.c:2064
+#: util/atsa.c:2074
#, c-format
msgid ""
"freq. dev. %f out of bounds, should be > 0.0 and <= 1.0, forced to default: "
"%f"
msgstr ""
-#: util/atsa.c:2072
+#: util/atsa.c:2082
#, c-format
msgid ""
"windows cycles %d out of bounds, should be between 1 and 8, forced to "
"default: %d"
msgstr ""
-#: util/atsa.c:2080
+#: util/atsa.c:2090
#, c-format
msgid ""
"window type %d out of bounds, should be between 0 and 3, forced to default: "
"%d"
msgstr ""
-#: util/atsa.c:2088
+#: util/atsa.c:2098
#, c-format
msgid ""
"hop size %f out of bounds, should be > 0.0 and <= 1.0, forced to default: %f"
msgstr ""
-#: util/atsa.c:2096
+#: util/atsa.c:2106
#, c-format
msgid ""
"lowest magnitude %f out of bounds, should be >= 0.0 and <= 1.0, forced to "
"default: %f"
msgstr ""
-#: util/atsa.c:2120
+#: util/atsa.c:2130
#, c-format
msgid "atsa: %d frames are not enough for analysis, need at least %d"
msgstr ""
-#: util/atsa.c:2129
+#: util/atsa.c:2139
#, c-format
msgid "track length %d out of bounds, forced to: %d"
msgstr ""
-#: util/atsa.c:2138
+#: util/atsa.c:2148
#, c-format
msgid "min. segment length %d out of bounds, forced to: %d"
msgstr ""
-#: util/atsa.c:2147
+#: util/atsa.c:2157
#, c-format
msgid "min. gap length %d out of bounds, forced to: %d"
msgstr ""
-#: util/atsa.c:2153
+#: util/atsa.c:2163
#, c-format
msgid ""
"SMR threshold %f out of bounds, should be >= 0.0 and < %f dB SPL, forced to "
"default: %f"
msgstr ""
-#: util/atsa.c:2164
+#: util/atsa.c:2174
#, c-format
msgid ""
"min. seg. SMR %f out of bounds, should be >= %f and < %f dB SPL, forced to "
"default: %f"
msgstr ""
-#: util/atsa.c:2172
+#: util/atsa.c:2182
#, c-format
msgid ""
"last peak contribution %f out of bounds, should be >= 0.0 and <= 1.0, forced "
"to default: %f"
msgstr ""
-#: util/atsa.c:2180
+#: util/atsa.c:2190
#, c-format
msgid ""
"SMR contribution %f out of bounds, should be >= 0.0 and <= 1.0, forced to "
"default: %f"
msgstr ""
-#: util/atsa.c:2325
+#: util/atsa.c:2335
msgid "Initializing ATS data..."
msgstr ""
-#: util/atsa.c:2355
+#: util/atsa.c:2365
msgid "Computing residual..."
msgstr ""
-#: util/atsa.c:2366
+#: util/atsa.c:2381 util/atsa.c:2384
msgid "Analysing residual..."
msgstr ""
-#: util/atsa.c:2370
+#: util/atsa.c:2389
msgid "tracking completed.\n"
msgstr ""
-#: util/atsa.c:2478
+#: util/atsa.c:2497
msgid "Filling sound gaps..."
msgstr ""
-#: util/atsa.c:2566
+#: util/atsa.c:2585
msgid "Trimming short partials..."
msgstr ""
-#: util/atsa.c:2662
+#: util/atsa.c:2681
msgid "Computing averages..."
msgstr ""
-#: util/atsa.c:2713
+#: util/atsa.c:2732
msgid "No partials to track -- stopping\n"
msgstr ""
-#: util/atsa.c:2813
+#: util/atsa.c:2832
msgid "Soundfile analysis for ATS opcodes"
msgstr ""
@@ -10769,8 +10656,8 @@ msgstr ""
msgid "illegal number of filenames"
msgstr ""
-#: util/cvanal.c:113 util/dnoise.c:456 util/lpanal.c:518 util/pvanal.c:258
-#: util/srconv.c:351
+#: util/cvanal.c:113 util/dnoise.c:445 util/lpanal.c:518 util/pvanal.c:258
+#: util/srconv.c:350
#, c-format
msgid "error while opening %s"
msgstr ""
@@ -10810,256 +10697,256 @@ msgstr ""
msgid "Soundfile analysis for convolve"
msgstr ""
-#: util/dnoise.c:285
+#: util/dnoise.c:281
msgid "-o cannot be stdin\n"
msgstr ""
-#: util/dnoise.c:297
+#: util/dnoise.c:293
msgid "-A overriding local default WAV out"
msgstr ""
-#: util/dnoise.c:302
+#: util/dnoise.c:298
msgid "-J overriding local default AIFF/WAV out"
msgstr ""
-#: util/dnoise.c:309
+#: util/dnoise.c:305
msgid "-W overriding local default AIFF out"
msgstr ""
-#: util/dnoise.c:356
+#: util/dnoise.c:345
msgid "no t argument"
msgstr ""
-#: util/dnoise.c:379
+#: util/dnoise.c:368
msgid "no n argument"
msgstr ""
-#: util/dnoise.c:384
+#: util/dnoise.c:373
msgid "no b argument"
msgstr ""
-#: util/dnoise.c:392
+#: util/dnoise.c:381
msgid "no B argument"
msgstr ""
-#: util/dnoise.c:404
+#: util/dnoise.c:393
msgid "no E argument"
msgstr ""
-#: util/dnoise.c:408
+#: util/dnoise.c:397
msgid "no N argument"
msgstr ""
-#: util/dnoise.c:412
+#: util/dnoise.c:401
msgid "no M argument"
msgstr ""
-#: util/dnoise.c:416
+#: util/dnoise.c:405
msgid "no L argument"
msgstr ""
-#: util/dnoise.c:420
+#: util/dnoise.c:409
msgid "no w argument"
msgstr ""
-#: util/dnoise.c:424
+#: util/dnoise.c:413
msgid "no D argument"
msgstr ""
-#: util/dnoise.c:431 util/srconv.c:328
+#: util/dnoise.c:420 util/srconv.c:327
#, c-format
msgid "Looking at %c\n"
msgstr ""
-#: util/dnoise.c:438 util/srconv.c:336
+#: util/dnoise.c:427 util/srconv.c:335
#, c-format
msgid "Infile set to %s\n"
msgstr ""
-#: util/dnoise.c:441 util/srconv.c:339
+#: util/dnoise.c:430 util/srconv.c:338
#, c-format
msgid "End with %s\n"
msgstr ""
-#: util/dnoise.c:447
+#: util/dnoise.c:436
msgid "dnoise: no input file\n"
msgstr ""
-#: util/dnoise.c:451
+#: util/dnoise.c:440
msgid "Must have an example noise file (-i name)\n"
msgstr ""
-#: util/dnoise.c:479
+#: util/dnoise.c:468
#, c-format
msgid "cannot open %s.\n"
msgstr ""
-#: util/dnoise.c:491 util/srconv.c:461 util/srconv.c:473
+#: util/dnoise.c:480 util/srconv.c:460 util/srconv.c:472
#, c-format
msgid "cannot open %s."
msgstr ""
-#: util/dnoise.c:510
+#: util/dnoise.c:499
msgid "dnoise: input MUST be mono or stereo\n"
msgstr ""
-#: util/dnoise.c:518
+#: util/dnoise.c:507
msgid "dnoise: cannot open noise reference file\n"
msgstr ""
-#: util/dnoise.c:523
+#: util/dnoise.c:512
msgid "Incompatible sample rates\n"
msgstr ""
-#: util/dnoise.c:542
+#: util/dnoise.c:531
#, c-format
msgid "dnoise: warning - N not a valid power of two; revised N = %d\n"
msgstr ""
-#: util/dnoise.c:552
+#: util/dnoise.c:541
msgid "dnoise: warning - do not specify both M and W\n"
msgstr ""
-#: util/dnoise.c:562
+#: util/dnoise.c:551
msgid "dnoise: warning - invalid W ignored\n"
msgstr ""
-#: util/dnoise.c:576
+#: util/dnoise.c:565
msgid "dnoise: warning - M is too small\n"
msgstr ""
-#: util/dnoise.c:586
+#: util/dnoise.c:575
msgid "dnoise: M too large\n"
msgstr ""
-#: util/dnoise.c:592
+#: util/dnoise.c:581
msgid "dnoise: L too large\n"
msgstr ""
-#: util/dnoise.c:602
+#: util/dnoise.c:591
#, c-format
msgid "writing %u-byte blks of %s to %s"
msgstr ""
-#: util/dnoise.c:627 util/dnoise.c:666 util/dnoise.c:721 util/dnoise.c:732
-#: util/dnoise.c:736 util/dnoise.c:743 util/dnoise.c:753 util/dnoise.c:758
-#: util/dnoise.c:762 util/dnoise.c:766 util/dnoise.c:770
+#: util/dnoise.c:616 util/dnoise.c:655 util/dnoise.c:710 util/dnoise.c:721
+#: util/dnoise.c:725 util/dnoise.c:732 util/dnoise.c:742 util/dnoise.c:747
+#: util/dnoise.c:751 util/dnoise.c:755 util/dnoise.c:759
msgid "dnoise: insufficient memory\n"
msgstr ""
-#: util/dnoise.c:779 util/dnoise.c:788
+#: util/dnoise.c:768 util/dnoise.c:777
msgid "dnoise: begin time is greater than EOF of noise file!"
msgstr ""
-#: util/dnoise.c:820
+#: util/dnoise.c:809
msgid "dnoise: not enough samples of noise reference\n"
msgstr ""
-#: util/dnoise.c:1118
+#: util/dnoise.c:1103
#, c-format
msgid "%5.1f seconds of input complete\n"
msgstr ""
-#: util/dnoise.c:1137
+#: util/dnoise.c:1122
msgid "processing complete\n"
msgstr ""
-#: util/dnoise.c:1147
+#: util/dnoise.c:1132
msgid "usage: dnoise [flags] input_file"
msgstr ""
-#: util/dnoise.c:1149
+#: util/dnoise.c:1134
msgid "flags:"
msgstr ""
-#: util/dnoise.c:1150
+#: util/dnoise.c:1135
msgid "i = noise reference soundfile"
msgstr ""
-#: util/dnoise.c:1151
+#: util/dnoise.c:1136
msgid "o = output file"
msgstr ""
-#: util/dnoise.c:1152
+#: util/dnoise.c:1137
msgid "N = # of bandpass filters (1024)"
msgstr ""
-#: util/dnoise.c:1153
+#: util/dnoise.c:1138
msgid "w = filter overlap factor: {0,1,(2),3} DON'T USE -w AND -M"
msgstr ""
-#: util/dnoise.c:1154
+#: util/dnoise.c:1139
msgid "M = analysis window length (N-1 unless -w is specified)"
msgstr ""
-#: util/dnoise.c:1155
+#: util/dnoise.c:1140
msgid "L = synthesis window length (M)"
msgstr ""
-#: util/dnoise.c:1156
+#: util/dnoise.c:1141
msgid "D = decimation factor (M/8)"
msgstr ""
-#: util/dnoise.c:1157
+#: util/dnoise.c:1142
msgid "b = begin time in noise reference soundfile (0)"
msgstr ""
-#: util/dnoise.c:1158
+#: util/dnoise.c:1143
msgid "B = starting sample in noise reference soundfile (0)"
msgstr ""
-#: util/dnoise.c:1159
+#: util/dnoise.c:1144
msgid "e = end time in noise reference soundfile (end)"
msgstr ""
-#: util/dnoise.c:1160
+#: util/dnoise.c:1145
msgid "E = final sample in noise reference soundfile (end)"
msgstr ""
-#: util/dnoise.c:1161
+#: util/dnoise.c:1146
msgid "t = threshold above noise reference in dB (30)"
msgstr ""
-#: util/dnoise.c:1162
+#: util/dnoise.c:1147
msgid "S = sharpness of noise-gate turnoff (1) (1 to 5)"
msgstr ""
-#: util/dnoise.c:1163
+#: util/dnoise.c:1148
msgid "n = number of FFT frames to average over (5)"
msgstr ""
-#: util/dnoise.c:1164
+#: util/dnoise.c:1149
msgid "m = minimum gain of noise-gate when off in dB (-40)"
msgstr ""
-#: util/dnoise.c:1165
+#: util/dnoise.c:1150
msgid "V : verbose - print status info"
msgstr ""
-#: util/dnoise.c:1166
+#: util/dnoise.c:1151
msgid "A : AIFF format output"
msgstr ""
-#: util/dnoise.c:1167
+#: util/dnoise.c:1152
msgid "W : WAV format output"
msgstr ""
-#: util/dnoise.c:1168
+#: util/dnoise.c:1153
msgid "J : IRCAM format output"
msgstr ""
-#: util/dnoise.c:1187
+#: util/dnoise.c:1172
#, c-format
msgid "soundfile write returned sample count of %d, not %d\n"
msgstr ""
-#: util/dnoise.c:1189
+#: util/dnoise.c:1174
msgid ""
"(disk may be full...\n"
" closing the file ...)\n"
msgstr ""
-#: util/dnoise.c:1257
+#: util/dnoise.c:1242
msgid "Removes noise from a sound file"
msgstr ""
@@ -11067,7 +10954,7 @@ msgstr ""
msgid "Usage:\tenvext [-flags] soundfile\n"
msgstr ""
-#: util/envext.c:54 util/srconv.c:738
+#: util/envext.c:54 util/srconv.c:737
msgid "-o fnam\tsound output filename\n"
msgstr ""
@@ -11101,7 +10988,7 @@ msgstr ""
msgid "enveloping %ld sample frames (%3.1f secs)\n"
msgstr ""
-#: util/envext.c:179
+#: util/envext.c:177
msgid "Create a text file of envelope"
msgstr ""
@@ -11515,7 +11402,7 @@ msgstr ""
msgid "Legal flags are:"
msgstr ""
-#: util/mixer.c:107 util/scale.c:60 util/srconv.c:753
+#: util/mixer.c:107 util/scale.c:60 util/srconv.c:752
msgid "-H#\tprint a heartbeat style 1, 2 or 3 at each soundfile write"
msgstr ""
@@ -11555,7 +11442,7 @@ msgstr ""
msgid "mixer: error: "
msgstr ""
-#: util/mixer.c:188 util/scale.c:161 util/srconv.c:232
+#: util/mixer.c:188 util/scale.c:161 util/srconv.c:231
#, c-format
msgid "%s not a recognized SFOUTYP env setting"
msgstr ""
@@ -11784,17 +11671,17 @@ msgstr ""
msgid "Soundfile analysis for pvoc"
msgstr ""
-#: util/pvanal.c:469
+#: util/pvanal.c:467
#, c-format
msgid "pvxanal: unable to create analysis file: %s"
msgstr ""
-#: util/pvanal.c:500 util/pvanal.c:532
+#: util/pvanal.c:498 util/pvanal.c:530
#, c-format
msgid "pvxanal: error writing analysis frames: %s\n"
msgstr ""
-#: util/pvanal.c:542
+#: util/pvanal.c:540
#, c-format
msgid ""
"\n"
@@ -11884,7 +11771,7 @@ msgstr ""
msgid "-P fpnum\tscale file to given percentage of full"
msgstr ""
-#: util/scale.c:62 util/srconv.c:755
+#: util/scale.c:62 util/srconv.c:754
msgid "-- fnam\tlog output to file"
msgstr ""
@@ -12035,75 +11922,75 @@ msgstr ""
msgid "Sound format -%c has been overruled by -%c"
msgstr ""
-#: util/srconv.c:299
+#: util/srconv.c:298
msgid "No Q argument"
msgstr ""
-#: util/srconv.c:304
+#: util/srconv.c:303
msgid "No P argument"
msgstr ""
-#: util/srconv.c:313
+#: util/srconv.c:312
msgid "No r argument"
msgstr ""
-#: util/srconv.c:322
+#: util/srconv.c:321
msgid "No break file"
msgstr ""
-#: util/srconv.c:345
+#: util/srconv.c:344
msgid "No input given\n"
msgstr ""
-#: util/srconv.c:362
+#: util/srconv.c:361
msgid "srconv: cannot specify both -r and -P"
msgstr ""
-#: util/srconv.c:373
+#: util/srconv.c:372
msgid "srconv: cannot open time-vary function file"
msgstr ""
-#: util/srconv.c:389
+#: util/srconv.c:388
msgid "srconv: too few x-y pairs in time-vary function file"
msgstr ""
-#: util/srconv.c:403
+#: util/srconv.c:402
msgid "srconv: first x value in time-vary function must be 0"
msgstr ""
-#: util/srconv.c:408
+#: util/srconv.c:407
msgid "srconv: invalid initial y value in time-vary function"
msgstr ""
-#: util/srconv.c:413 util/srconv.c:705
+#: util/srconv.c:412 util/srconv.c:704
msgid "srconv: invalid x values in time-vary function"
msgstr ""
-#: util/srconv.c:732
+#: util/srconv.c:731
msgid ""
"usage: srconv [flags] infile\n"
"\n"
"flags:"
msgstr ""
-#: util/srconv.c:733
+#: util/srconv.c:732
msgid ""
"-P num\tpitch transposition ratio (srate/r) [do not specify both P and r]"
msgstr ""
-#: util/srconv.c:735
+#: util/srconv.c:734
msgid "-Q num\tquality factor (1 to 8: default = 2)"
msgstr ""
-#: util/srconv.c:736
+#: util/srconv.c:735
msgid "-i filnam\tbreak file"
msgstr ""
-#: util/srconv.c:737
+#: util/srconv.c:736
msgid "-r num\toutput sample rate (must be specified)"
msgstr ""
-#: util/srconv.c:821
+#: util/srconv.c:820
msgid "Sample rate conversion"
msgstr ""
diff --git a/po/es_CO.po b/po/es_CO.po
index e51d5db..24c0b86 100644
--- a/po/es_CO.po
+++ b/po/es_CO.po
@@ -33,22 +33,22 @@ msgstr "auxlist para el instrumento %s (%p):\n"
msgid "auxlist for instr %d (%p):\n"
msgstr "auxlist para el instrumento %d (%p):\n"
-#: Engine/auxfd.c:153
+#: Engine/auxfd.c:154
#, c-format
msgid "\tauxch at %p: size %ld, auxp %p, endp %p\n"
msgstr ""
-#: Engine/auxfd.c:165
+#: Engine/auxfd.c:166
#, c-format
msgid "fdlist for instr %s [%d] (%p):"
msgstr "fdlist para el instrumento %s (%p):"
-#: Engine/auxfd.c:168
+#: Engine/auxfd.c:169
#, c-format
msgid "fdlist for instr %d (%p):"
msgstr "fdlist para el instrumento %d (%p):"
-#: Engine/auxfd.c:171
+#: Engine/auxfd.c:172
#, c-format
msgid " fd %p in %p"
msgstr ""
@@ -101,369 +101,331 @@ msgstr ""
msgid "(unknown error)"
msgstr ""
-#: Engine/csound_orc_compile.c:214 Engine/rdorch.c:1832
+#: Engine/csound_orc_compile.c:138
+#, c-format
+msgid ""
+"input arg %d '%s' of type %s not allowed when expecting %c (for opcode %s), "
+"line %d\n"
+msgstr ""
+
+#: Engine/csound_orc_compile.c:265 Engine/rdorch.c:1862
msgid "missing or extra arg"
msgstr "argumento sobrante o faltante"
-#: Engine/csound_orc_compile.c:218
+#: Engine/csound_orc_compile.c:269
#, fuzzy
msgid "too many input args\n"
-msgstr "demasiados argumentos de entrada"
+msgstr "demasiados argumentos de entrada\n"
-#: Engine/csound_orc_compile.c:475
+#: Engine/csound_orc_compile.c:304
+#, c-format
+msgid "input arg '%s' used before defined (in opcode %s), line %d\n"
+msgstr ""
+
+#: Engine/csound_orc_compile.c:380
+#, fuzzy, c-format
+msgid ""
+"output name previously used, type '%c' must be uniquely defined, line %d"
+msgstr ""
+"nombre de salida usado previamente, el tipo '%c' debe estar definido una "
+"sola vez"
+
+#: Engine/csound_orc_compile.c:386
+#, fuzzy, c-format
+msgid "output arg '%s' illegal type (for opcode %s), line %d\n"
+msgstr ""
+
+#: Engine/csound_orc_compile.c:541
#, c-format
msgid "create_opcode: No rule to handle statement of type %d\n"
msgstr ""
-#: Engine/csound_orc_compile.c:671
+#: Engine/csound_orc_compile.c:738
#, c-format
msgid "create_instrument: instr num %ld\n"
msgstr ""
-#: Engine/csound_orc_compile.c:681
+#: Engine/csound_orc_compile.c:748
#, c-format
msgid "create_instrument: instr name %s\n"
msgstr ""
-#: Engine/csound_orc_compile.c:688 Engine/otran.c:351
+#: Engine/csound_orc_compile.c:755 Engine/otran.c:364
msgid "invalid name for instrument"
msgstr "nombre inválido para el instrumento"
-#: Engine/csound_orc_compile.c:692 Engine/otran.c:356
+#: Engine/csound_orc_compile.c:759 Engine/otran.c:370
#, c-format
msgid "instr %s redefined"
msgstr "instr %s redefinido"
-#: Engine/csound_orc_compile.c:833 Engine/otran.c:145 Engine/symbtab.c:394
-#, c-format
-msgid "invalid input type for opcode %s"
-msgstr ""
-
-#: Engine/csound_orc_compile.c:838 Engine/otran.c:150 Engine/symbtab.c:399
-#, fuzzy, c-format
-msgid "too many input args for opcode %s"
-msgstr "demasiados argumentos de entrada %s"
-
-#: Engine/csound_orc_compile.c:853 Engine/otran.c:165 Engine/symbtab.c:414
-#, c-format
-msgid "too many output args for opcode %s"
-msgstr ""
-
-#: Engine/csound_orc_compile.c:869 Engine/otran.c:187 Engine/symbtab.c:433
-#, c-format
-msgid "invalid output type for opcode %s"
-msgstr ""
-
-#: Engine/csound_orc_compile.c:954 Engine/otran.c:339
+#: Engine/csound_orc_compile.c:903 Engine/otran.c:352
#, c-format
msgid "instr %ld redefined"
msgstr "instr %ld redefinido"
-#: Engine/csound_orc_compile.c:964
+#: Engine/csound_orc_compile.c:914
msgid "!!! csound->opcodeInfo is NULL !!!\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1111
+#: Engine/csound_orc_compile.c:1083
#, c-format
msgid "Unknown TREE node of type %d found in root.\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1168 Engine/otran.c:565 Engine/otran.c:1414
+#: Engine/csound_orc_compile.c:1140 Engine/otran.c:579 Engine/otran.c:1433
#, c-format
msgid "%s invalid sample rate"
msgstr "%s tasa de muestreo inválida"
-#: Engine/csound_orc_compile.c:1170 Engine/otran.c:567 Engine/otran.c:1416
+#: Engine/csound_orc_compile.c:1142 Engine/otran.c:581 Engine/otran.c:1435
#, c-format
msgid "%s invalid control rate"
msgstr "%s frecuencia de control inválida"
-#: Engine/csound_orc_compile.c:1173 Engine/otran.c:570 Engine/otran.c:1412
+#: Engine/csound_orc_compile.c:1146 Engine/otran.c:584 Engine/otran.c:1431
#, c-format
msgid "%s invalid ksmps value"
msgstr "%s valor de ksmps inválido"
-#: Engine/csound_orc_compile.c:1176 Engine/otran.c:572 Engine/otran.c:1418
+#: Engine/csound_orc_compile.c:1149 Engine/otran.c:587 Engine/otran.c:1437
#, c-format
msgid "%s inconsistent sr, kr, ksmps"
msgstr "%s sr, kr, ksmps inconsistentes"
-#: Engine/csound_orc_compile.c:1190
+#: Engine/csound_orc_compile.c:1165
msgid "perf-pass statements illegal in header blk\n"
msgstr ""
"enunciados de ejecución (perf-pass) son ilegales en el bloque de encabezado\n"
-#: Engine/csound_orc_compile.c:1195
+#: Engine/csound_orc_compile.c:1170
#, c-format
msgid "%d syntax errors in orchestra. compilation invalid\n"
msgstr "%d errores de sintaxis en la orquesta. compilación inváilda\n"
-#: Engine/csound_orc_compile.c:1255 Engine/otran.c:656
+#: Engine/csound_orc_compile.c:1230 Engine/otran.c:671
msgid "inconsistent argoff sumcount"
msgstr "cuenta argoff inconsistente"
-#: Engine/csound_orc_compile.c:1327 Engine/otran.c:725
+#: Engine/csound_orc_compile.c:1302 Engine/otran.c:740
#, c-format
msgid "LABELS list is full...extending to %d\n"
msgstr "la lista de etiquetas (LABELS) está llena...extendiendo a %d\n"
-#: Engine/csound_orc_compile.c:1365 Engine/otran.c:763
+#: Engine/csound_orc_compile.c:1340 Engine/otran.c:778
#, c-format
msgid "GOTOS list is full..extending to %d\n"
msgstr "la lista de GOTOS está llena..extendiendo a %d\n"
-#: Engine/csound_orc_compile.c:1398 Engine/otran.c:796
+#: Engine/csound_orc_compile.c:1373 Engine/otran.c:811
#, c-format
msgid "target label '%s' not found"
msgstr "etiqueta '%s' no encontrada"
-#: Engine/csound_orc_compile.c:1463 Engine/otran.c:851
+#: Engine/csound_orc_compile.c:1451 Engine/otran.c:866
#, c-format
msgid "string syntax '%s'"
msgstr "sintaxis de cadena '%s'"
-#: Engine/csound_orc_compile.c:1513 Engine/otran.c:901
+#: Engine/csound_orc_compile.c:1501 Engine/otran.c:916
#, c-format
msgid "numeric syntax '%s'"
msgstr "sintaxis numérica '%s'"
-#: Engine/csound_orc_compile.c:1539 Engine/otran.c:927
+#: Engine/csound_orc_compile.c:1527 Engine/otran.c:942
#, c-format
msgid "extending Floating pool to %d\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1578 Engine/otran.c:999
+#: Engine/csound_orc_compile.c:1566 Engine/otran.c:1018
msgid "gblnamset(): memory allocation failure"
msgstr "gblnamset(): falla en asignación de memoria"
-#: Engine/csound_orc_compile.c:1606 Engine/otran.c:1027
+#: Engine/csound_orc_compile.c:1594 Engine/otran.c:1046
msgid "lclnamset(): memory allocation failure"
msgstr "lclnamset(): falla en asignación de memoria"
-#: Engine/csound_orc_compile.c:1632 Engine/otran.c:1052
+#: Engine/csound_orc_compile.c:1620 Engine/otran.c:1071
msgid "unexpected global name"
msgstr "nombre global inesperado"
-#: Engine/csound_orc_compile.c:1655 Engine/otran.c:1074
+#: Engine/csound_orc_compile.c:1643 Engine/otran.c:1093
msgid "unknown nametype"
msgstr ""
-#: Engine/csound_orc.l:239
+#: Engine/csound_orc_expressions.c:459
#, c-format
-msgid "unterminated string found on line %d >>%s<<\n"
+msgid "error: function %s with arg type %c not found, line %d \n"
msgstr ""
-#: Engine/csound_orc.l:259 Engine/csound_orc.l:286 Engine/csound_orc.l:314
-#: Engine/csound_orc.l:367 Engine/rdorch.c:901 Engine/sread.c:396
+#: Engine/csound_orc_expressions.c:862
#, c-format
-msgid "Undefined macro: '%s'"
-msgstr "Macro indefinido: '%s'"
-
-#: Engine/csound_orc.l:265 Engine/csound_orc.l:292
-msgid "Includes nested too deeply"
+msgid "error: non-existent statement in conditional, line %d \n"
msgstr ""
-#: Engine/csound_orc.l:335 Engine/csound_orc.l:388 Engine/rdorch.c:940
+#: Engine/csound_orc_semantics.c:157
#, c-format
msgid ""
-"Missing argument terminator\n"
-"%.98s"
-msgstr ""
-
-#: Engine/csound_orc.l:484
-#, c-format
-msgid "Line %d: Unknown character: '%c'(%2x)\n"
-msgstr ""
-
-#: Engine/csound_orc.l:527
-#, c-format
-msgid "Cannot open file \"%s\"\n"
-msgstr ""
-
-#: Engine/csound_orc.l:573 Engine/rdorch.c:689 Engine/sread.c:1595
-msgid "macro error\n"
-msgstr "error de macro\n"
-
-#: Engine/csound_orc.l:631 Engine/rdorch.c:845 Engine/sread.c:1686
-#, c-format
-msgid "macro %s undefined\n"
-msgstr "el macro %s no está definido\n"
-
-#: Engine/csound_orc.l:645 Engine/rdorch.c:859 Engine/sread.c:294
-msgid "Undefining undefined macro"
-msgstr ""
-
-#: Engine/csound_orc.l:786 Engine/rdorch.c:413 Engine/sread.c:741
-#, c-format
-msgid "Macro definition for %*s\n"
-msgstr "Definición del macro %*s\n"
-
-#: Engine/csound_orc.l:789 Engine/rdorch.c:416
-msgid "Invalid macro name for --omacro"
-msgstr "Nombre de macro inválido para --omacro"
-
-#: Engine/csound_orc.y:270
-msgid "No number following instr\n"
-msgstr ""
-
-#: Engine/csound_orc_semantics.c:127
-#, c-format
-msgid "error: %s (token \"%s\")"
+"\n"
+"error: %s (token \"%s\")"
msgstr ""
-#: Engine/csound_orc_semantics.c:129
+#: Engine/csound_orc_semantics.c:159
#, fuzzy, c-format
-msgid " line %d: %s"
-msgstr ", lÃnea %d:\n"
+msgid ""
+" line %d:\n"
+">>>"
+msgstr " lÃnea %d:\n"
-#: Engine/csound_orc_semantics.c:702 Engine/rdorch.c:1863
-msgid "insufficient required arguments"
-msgstr "número insuficiente de argumentos requeridos"
+#: Engine/csound_orc_semantics.c:732
+#, fuzzy, c-format
+msgid "insufficient required arguments for opcode %s on line %d\n"
+msgstr ""
-#: Engine/csound_orc_semantics.c:768 Engine/rdorch.c:1617 Engine/rdorch.c:1635
-#: Engine/rdorch.c:1676 Engine/rdorch.c:1811 Engine/rdorch.c:1980
+#: Engine/csound_orc_semantics.c:797 Engine/rdorch.c:1644 Engine/rdorch.c:1662
+#: Engine/rdorch.c:1703 Engine/rdorch.c:1841 Engine/rdorch.c:2011
#, c-format
msgid "modified opcod: %s"
msgstr "opcode modificado: %s"
-#: Engine/cs_par_dispatch.c:113 Engine/cs_par_dispatch.c:125
+#: Engine/cs_par_dispatch.c:115 Engine/cs_par_dispatch.c:128
#, c-format
msgid "Poorly specified global lock index: %i [max: %i]\n"
msgstr ""
-#: Engine/cs_par_dispatch.c:138 Engine/cs_par_dispatch.c:157
+#: Engine/cs_par_dispatch.c:142 Engine/cs_par_dispatch.c:162
msgid "Invalid NULL parameter name for a global variable\n"
msgstr ""
-#: Engine/cs_par_dispatch.c:505 Engine/cs_par_dispatch.c:528
-#: Engine/cs_par_dispatch.c:2463 Engine/cs_par_dispatch.c:2507
-#: Engine/cs_par_dispatch.c:2509 Engine/cs_par_dispatch.c:2570
+#: Engine/cs_par_dispatch.c:526 Engine/cs_par_dispatch.c:553
+#: Engine/cs_par_dispatch.c:2543 Engine/cs_par_dispatch.c:2588
+#: Engine/cs_par_dispatch.c:2590 Engine/cs_par_dispatch.c:2654
#, fuzzy
msgid "Invalid NULL Parameter entry"
msgstr "parámetros de modo inválidos"
-#: Engine/cs_par_dispatch.c:507 Engine/cs_par_dispatch.c:541
-#: Engine/cs_par_dispatch.c:566 Engine/cs_par_dispatch.c:605
+#: Engine/cs_par_dispatch.c:528 Engine/cs_par_dispatch.c:567
+#: Engine/cs_par_dispatch.c:594 Engine/cs_par_dispatch.c:635
#, fuzzy
msgid "Invalid NULL Parameter name"
msgstr "parámetros de modo inválidos"
-#: Engine/cs_par_dispatch.c:512
+#: Engine/cs_par_dispatch.c:535
msgid "Failed to allocate Opcode Weight cache entry"
msgstr ""
-#: Engine/cs_par_dispatch.c:632 Engine/cs_par_dispatch.c:718
+#: Engine/cs_par_dispatch.c:664 Engine/cs_par_dispatch.c:755
msgid "No Weights to Dump (Using Defaults)\n"
msgstr ""
-#: Engine/cs_par_dispatch.c:670 Engine/cs_par_dispatch.c:794
+#: Engine/cs_par_dispatch.c:705 Engine/cs_par_dispatch.c:835
#, c-format
msgid "Opcode Weight Spec File not found at: %s"
msgstr ""
-#: Engine/cs_par_dispatch.c:722
+#: Engine/cs_par_dispatch.c:759
msgid "Weights Dump\n"
msgstr ""
-#: Engine/cs_par_dispatch.c:866
+#: Engine/cs_par_dispatch.c:907
#, c-format
msgid "Parallel Spec File not found at: %s"
msgstr ""
-#: Engine/cs_par_dispatch.c:872
+#: Engine/cs_par_dispatch.c:913
msgid "Parallel Spec File invalid format expected weight_min parameter"
msgstr ""
-#: Engine/cs_par_dispatch.c:877
+#: Engine/cs_par_dispatch.c:918
msgid "Parallel Spec File invalid format expected weight_max parameter"
msgstr ""
-#: Engine/cs_par_dispatch.c:881
+#: Engine/cs_par_dispatch.c:922
msgid "Parallel Spec File invalid format expected roots_avail_min parameter"
msgstr ""
-#: Engine/cs_par_dispatch.c:885
+#: Engine/cs_par_dispatch.c:926
msgid "Parallel Spec File invalid format expected roots_avail_max parameter"
msgstr ""
-#: Engine/cs_par_dispatch.c:961 Engine/cs_par_dispatch.c:985
-#: Engine/cs_par_dispatch.c:1109 Engine/cs_par_dispatch.c:1195
-#: Engine/cs_par_dispatch.c:1332 Engine/cs_par_dispatch.c:1366
-#: Engine/cs_par_dispatch.c:1383 Engine/cs_par_dispatch.c:1405
-#: Engine/cs_par_dispatch.c:1432 Engine/cs_par_dispatch.c:1452
-#: Engine/cs_par_dispatch.c:1476 Engine/cs_par_dispatch.c:1566
-#: Engine/cs_par_dispatch.c:1621 Engine/cs_par_dispatch.c:1714
-#: Engine/cs_par_dispatch.c:1769 Engine/cs_par_dispatch.c:2597
+#: Engine/cs_par_dispatch.c:1003 Engine/cs_par_dispatch.c:1027
+#: Engine/cs_par_dispatch.c:1155 Engine/cs_par_dispatch.c:1251
+#: Engine/cs_par_dispatch.c:1405 Engine/cs_par_dispatch.c:1439
+#: Engine/cs_par_dispatch.c:1456 Engine/cs_par_dispatch.c:1478
+#: Engine/cs_par_dispatch.c:1506 Engine/cs_par_dispatch.c:1528
+#: Engine/cs_par_dispatch.c:1552 Engine/cs_par_dispatch.c:1644
+#: Engine/cs_par_dispatch.c:1699 Engine/cs_par_dispatch.c:1792
+#: Engine/cs_par_dispatch.c:1847 Engine/cs_par_dispatch.c:2681
#, fuzzy
msgid "Invalid NULL Parameter dag"
-msgstr "parámetro de modo inválido: %d"
+msgstr ""
-#: Engine/cs_par_dispatch.c:966
+#: Engine/cs_par_dispatch.c:1008
#, fuzzy
msgid "Failed to allocate dag"
-msgstr "No fue posible crear %s"
+msgstr ""
-#: Engine/cs_par_dispatch.c:1017 Engine/cs_par_dispatch.c:1040
-#: Engine/cs_par_dispatch.c:1062 Engine/cs_par_dispatch.c:1064
+#: Engine/cs_par_dispatch.c:1060 Engine/cs_par_dispatch.c:1083
+#: Engine/cs_par_dispatch.c:1105 Engine/cs_par_dispatch.c:1107
#, fuzzy
msgid "Invalid NULL Parameter dag_node"
-msgstr "parámetro de modo inválido: %d"
+msgstr ""
-#: Engine/cs_par_dispatch.c:1019
+#: Engine/cs_par_dispatch.c:1062
#, fuzzy
msgid "Invalid NULL Parameter instr"
msgstr "parámetros de modo inválidos"
-#: Engine/cs_par_dispatch.c:1021
+#: Engine/cs_par_dispatch.c:1064
#, fuzzy
msgid "Invalid NULL Parameter insds"
-msgstr "parámetro de modo inválido: %d"
+msgstr ""
-#: Engine/cs_par_dispatch.c:1026 Engine/cs_par_dispatch.c:1048
+#: Engine/cs_par_dispatch.c:1069 Engine/cs_par_dispatch.c:1091
#, fuzzy
msgid "Failed to allocate dag_node"
-msgstr "No fue posible crear %s"
+msgstr ""
-#: Engine/cs_par_dispatch.c:1043
+#: Engine/cs_par_dispatch.c:1086
msgid "Invalid Parameter count must be greater than 0"
msgstr ""
-#: Engine/cs_par_dispatch.c:1175 Engine/cs_par_dispatch.c:1433
-#: Engine/cs_par_dispatch.c:2465 Engine/cs_par_dispatch.c:2571
-#: Engine/cs_par_dispatch.c:2598
+#: Engine/cs_par_dispatch.c:1229 Engine/cs_par_dispatch.c:1508
+#: Engine/cs_par_dispatch.c:2545 Engine/cs_par_dispatch.c:2655
+#: Engine/cs_par_dispatch.c:2682
#, fuzzy
msgid "Invalid NULL Parameter chain"
msgstr "parámetros de modo inválidos"
-#: Engine/cs_par_dispatch.c:1183
+#: Engine/cs_par_dispatch.c:1237
#, c-format
msgid "Failed to find semantic information for instrument '%i'"
msgstr ""
-#: Engine/cs_par_dispatch.c:1478
+#: Engine/cs_par_dispatch.c:1554
#, fuzzy
msgid "Invalid NULL Parameter node"
-msgstr "parámetro de modo inválido: %d"
+msgstr ""
-#: Engine/cs_par_dispatch.c:1480
+#: Engine/cs_par_dispatch.c:1556
#, fuzzy
msgid "Invalid NULL Parameter update_hdl"
-msgstr "parámetro de modo inválido: %d"
+msgstr ""
-#: Engine/cs_par_dispatch.c:1569
+#: Engine/cs_par_dispatch.c:1647
msgid "Invalid Parameter update_hdl is outside the DAG range"
msgstr ""
-#: Engine/cs_par_dispatch.c:2417
+#: Engine/cs_par_dispatch.c:2497
#, fuzzy, c-format
msgid "Parallel Dump File not found at: %s for writing"
-msgstr "no es posible abrir para escritura el archivo %s"
+msgstr ""
-#: Engine/cs_par_dispatch.c:2477
+#: Engine/cs_par_dispatch.c:2557
msgid "Failed to allocate Dag2 cache entry"
msgstr ""
-#: Engine/cs_par_dispatch.c:2527
+#: Engine/cs_par_dispatch.c:2610
msgid "Cache Update\n"
msgstr ""
@@ -477,12 +439,12 @@ msgstr "Variable de entorno '%s' ha sido asignada como "
msgid "Creating search path cache for '%s':"
msgstr ""
-#: Engine/envvar.c:1082
+#: Engine/envvar.c:1083
#, c-format
msgid "internal error: csoundFileOpen(): invalid type: %d"
msgstr "error interno: csoundFileOpen(): tipo inváido: %d"
-#: Engine/envvar.c:1264
+#: Engine/envvar.c:1266
#, c-format
msgid "internal error: csoundCreateFileHandle(): invalid type: %d"
msgstr "error interno: csoundCreateFileHandle(): tipo inválido: %d"
@@ -541,347 +503,348 @@ msgstr "número de términos"
msgid "expression syntax"
msgstr "syntaxis de expresión"
-#: Engine/fgens.c:95
+#: Engine/fgens.c:91
msgid "unknown GEN number"
msgstr "número GEN desconocido"
-#: Engine/fgens.c:137
+#: Engine/fgens.c:133
msgid "ftable does not exist"
msgstr "la tabla-f (ftable) no existe"
-#: Engine/fgens.c:142
+#: Engine/fgens.c:138
#, c-format
msgid "ftable %d now deleted\n"
msgstr "la tabla-f (ftable) %d ha sido borrada\n"
-#: Engine/fgens.c:157 Engine/fgens.c:1597 Engine/fgens.c:1683
-#: Engine/fgens.c:1762 Engine/fgens.c:1878 Engine/fgens.c:1959
-#: Engine/fgens.c:2867
+#: Engine/fgens.c:153 Engine/fgens.c:1593 Engine/fgens.c:1679
+#: Engine/fgens.c:1758 Engine/fgens.c:1874 Engine/fgens.c:1955
+#: Engine/fgens.c:2909
msgid "insufficient gen arguments"
msgstr "argumentos GEN insuficientes"
-#: Engine/fgens.c:183 Opcodes/ftgen.c:116
+#: Engine/fgens.c:179 Opcodes/ftgen.c:116
#, c-format
msgid "Named gen \"%s\" not defined"
msgstr "GEN de nombre \"%s\" no definida"
-#: Engine/fgens.c:190
+#: Engine/fgens.c:186
msgid "illegal gen number"
msgstr "número GEN ilegal"
-#: Engine/fgens.c:198
-msgid "deferred size for GENs 1, 23 or 28 only"
-msgstr "tamaño diferido sólo permitido para GEN1, GEN23, GEN28"
+#: Engine/fgens.c:194
+msgid "deferred size for GENs 1, 23, 28 or 49 only"
+msgstr "tamaño diferido sólo permitido para GEN1, GEN23, GEN28, GEN49"
-#: Engine/fgens.c:201 Engine/fgens.c:249
+#: Engine/fgens.c:197 Engine/fgens.c:245
#, c-format
msgid "ftable %d:\n"
msgstr "tabla-f (ftable) %d:\n"
-#: Engine/fgens.c:226 Engine/fgens.c:233
+#: Engine/fgens.c:222 Engine/fgens.c:229
msgid "illegal table length"
msgstr "longitud ilegal de tabla"
-#: Engine/fgens.c:292 Engine/fgens.c:2219
+#: Engine/fgens.c:288 Engine/fgens.c:2215
#, c-format
msgid ""
"ftable %d relocating due to size change\n"
" currently active instruments may find this disturbing"
msgstr ""
-#: Engine/fgens.c:350 Engine/fgens.c:471 Engine/fgens.c:555 Engine/fgens.c:636
-#: Engine/fgens.c:711 Engine/fgens.c:760 Engine/fgens.c:881 Engine/fgens.c:958
-#: Engine/fgens.c:1053 Engine/fgens.c:1097 Engine/fgens.c:1144
-#: Engine/fgens.c:1397 Engine/fgens.c:1459 Engine/fgens.c:1681
-#: Engine/fgens.c:1759 Engine/fgens.c:2114 Engine/fgens.c:2821
-#: Engine/fgens.c:2864
+#: Engine/fgens.c:346 Engine/fgens.c:467 Engine/fgens.c:551 Engine/fgens.c:632
+#: Engine/fgens.c:707 Engine/fgens.c:756 Engine/fgens.c:877 Engine/fgens.c:954
+#: Engine/fgens.c:1049 Engine/fgens.c:1093 Engine/fgens.c:1140
+#: Engine/fgens.c:1393 Engine/fgens.c:1455 Engine/fgens.c:1677
+#: Engine/fgens.c:1755 Engine/fgens.c:2110 Engine/fgens.c:2863
+#: Engine/fgens.c:2906
msgid "using extended arguments\n"
msgstr ""
-#: Engine/fgens.c:374
+#: Engine/fgens.c:370
msgid "no coefs present"
msgstr "no hay coeficientes"
-#: Engine/fgens.c:379 Engine/fgens.c:645 Engine/fgens.c:653
+#: Engine/fgens.c:375 Engine/fgens.c:641 Engine/fgens.c:649
msgid "illegal x interval"
msgstr "intervalo x ilegal"
-#: Engine/fgens.c:408 Engine/fgens.c:557 Engine/fgens.c:638 Engine/fgens.c:883
-#: Engine/fgens.c:1354 Engine/fgens.c:2378 Engine/fgens.c:2694 Top/main.c:142
-#: util/cvanal.c:66 util/lpanal.c:398 util/pvanal.c:170
+#: Engine/fgens.c:404 Engine/fgens.c:553 Engine/fgens.c:634 Engine/fgens.c:879
+#: Engine/fgens.c:1350 Engine/fgens.c:2375 Engine/fgens.c:2690
+#: Engine/fgens.c:2810 Top/main.c:141 util/cvanal.c:66 util/lpanal.c:398
+#: util/pvanal.c:170
msgid "insufficient arguments"
msgstr "argumentos insuficientes"
-#: Engine/fgens.c:412 Engine/fgens.c:1359
+#: Engine/fgens.c:408 Engine/fgens.c:1355
msgid "unknown srctable number"
msgstr "número de tabla fuente (srctable) desconocido"
-#: Engine/fgens.c:425
+#: Engine/fgens.c:421
msgid "table size too large"
msgstr "tamaño de la tabla demasiado grande"
-#: Engine/fgens.c:510 Engine/fgens.c:543
+#: Engine/fgens.c:506 Engine/fgens.c:539
msgid "gen call has negative segment size:"
msgstr ""
-#: Engine/fgens.c:512
+#: Engine/fgens.c:508
msgid "illegal input vals for gen call, beginning:"
msgstr ""
-#: Engine/fgens.c:578
+#: Engine/fgens.c:574
msgid "negative segsiz"
msgstr "segsiz negativo"
-#: Engine/fgens.c:787
+#: Engine/fgens.c:783
msgid "nh partials < 1"
msgstr ""
-#: Engine/fgens.c:886
+#: Engine/fgens.c:882
msgid "illegal xint value"
msgstr "valor de xint ilegal"
-#: Engine/fgens.c:889
+#: Engine/fgens.c:885
msgid "illegal xamp value"
msgstr "valor de xamp ilegal"
-#: Engine/fgens.c:961
+#: Engine/fgens.c:957
msgid "uneven number of args"
msgstr "numero de argumentos impar"
-#: Engine/fgens.c:1081
+#: Engine/fgens.c:1077
msgid "gen call has illegal x-ordinate values:"
msgstr "la llamada GEN tiene valores ilegales para el eje x:"
-#: Engine/fgens.c:1099
+#: Engine/fgens.c:1095
msgid "wrong number of args"
msgstr "número equivocado de argumentos"
-#: Engine/fgens.c:1113
+#: Engine/fgens.c:1109
msgid "a range given exceeds table length"
msgstr "uno de los rangos dado excede la longitud de la tabla"
-#: Engine/fgens.c:1120
+#: Engine/fgens.c:1116
msgid "an input function does not exist"
msgstr "no existe función de entrada"
-#: Engine/fgens.c:1253
+#: Engine/fgens.c:1249
msgid "No such window!"
msgstr "No existe la ventana!"
-#: Engine/fgens.c:1271
+#: Engine/fgens.c:1267
msgid "Wrong number of input arguments"
msgstr "Número equivocado de argumentos de entrada"
-#: Engine/fgens.c:1272
+#: Engine/fgens.c:1268
msgid "unknown distribution"
msgstr "distribución desconocida"
-#: Engine/fgens.c:1321
+#: Engine/fgens.c:1317
msgid "error opening ASCII file"
msgstr "error abriendo archivo ASCII"
-#: Engine/fgens.c:1327
+#: Engine/fgens.c:1323
#, c-format
msgid "%ld elements in %s\n"
msgstr "%ld elementos en %s\n"
-#: Engine/fgens.c:1338
+#: Engine/fgens.c:1334
msgid "Numbers after table full in GEN23"
msgstr ""
-#: Engine/fgens.c:1367
+#: Engine/fgens.c:1363
msgid "table size must be the same of source table"
msgstr "el tamaño de la tabla fuente y de la de destino debe ser igual"
-#: Engine/fgens.c:1439 Engine/fgens.c:1499
+#: Engine/fgens.c:1435 Engine/fgens.c:1495
msgid "x coordinates must all be in increasing order:"
msgstr "las coordenadas x deben estar en orden ascendente:"
-#: Engine/fgens.c:1442 Engine/fgens.c:1501
+#: Engine/fgens.c:1438 Engine/fgens.c:1497
msgid "x coordinate greater than function size:"
msgstr "coordenada x mayor que el tamaño de la función:"
-#: Engine/fgens.c:1446
+#: Engine/fgens.c:1442
msgid "illegal input val (y <= 0) for gen call, beginning:"
msgstr ""
-#: Engine/fgens.c:1519
+#: Engine/fgens.c:1515
msgid "GEN28 requires zero table length"
msgstr "GEN28 requiere tamaño de tabla cero"
-#: Engine/fgens.c:1581
+#: Engine/fgens.c:1577
msgid "could not open space file"
msgstr "no es posible abrir el archivo de espacio"
-#: Engine/fgens.c:1583
+#: Engine/fgens.c:1579
msgid "Time values must be in increasing order"
msgstr "Los valores de tiempo deben estar en orden ascendente"
-#: Engine/fgens.c:1604
+#: Engine/fgens.c:1600
msgid "GEN30: source ftable not found"
msgstr "GEN30: tabla-f (ftable) fuente no encontrada"
-#: Engine/fgens.c:1687
+#: Engine/fgens.c:1683
msgid "GEN31: source ftable not found"
msgstr "GEN31: tabla-f (ftable) fuente no encontrada"
-#: Engine/fgens.c:1795
+#: Engine/fgens.c:1791
#, c-format
msgid "GEN32: source ftable %d not found"
msgstr "GEN32: tabla-f (ftable) fuente %d no encontrada"
-#: Engine/fgens.c:1889
+#: Engine/fgens.c:1885
msgid "GEN33: source ftable not found"
msgstr "GEN33: tabla-f (ftable) fuente no encontrada"
-#: Engine/fgens.c:2057
+#: Engine/fgens.c:2053
msgid "unknown source table number"
msgstr "número de tabla fuente desconocida"
-#: Engine/fgens.c:2089
+#: Engine/fgens.c:2085
msgid "Gen41: negative probability not allowed"
msgstr ""
-#: Engine/fgens.c:2155 Opcodes/fareygen.c:70
+#: Engine/fgens.c:2151 Opcodes/fareygen.c:70
#, c-format
msgid "ftable %d: "
msgstr "tabla-f (ftable) %d: "
-#: Engine/fgens.c:2199
+#: Engine/fgens.c:2195
#, c-format
msgid "ftable %d:"
msgstr "tabla-f (ftable) %d:"
-#: Engine/fgens.c:2214
+#: Engine/fgens.c:2210
#, c-format
msgid "replacing previous ftable %d"
msgstr "reemplazando tabla-f (ftable) %d anterior"
-#: Engine/fgens.c:2250 Engine/fgens.c:2337 Engine/fgens.c:2361
-#: Opcodes/gab/gab.c:578 Opcodes/gab/gab.c:632 Opcodes/midiops2.c:218
+#: Engine/fgens.c:2246 Engine/fgens.c:2334 Engine/fgens.c:2358
+#: Opcodes/gab/gab.c:580 Opcodes/gab/gab.c:634 Opcodes/midiops2.c:218
#: Opcodes/midiops2.c:370 Opcodes/midiops2.c:452 Opcodes/uggab.c:1317
#: Opcodes/uggab.c:1344 Opcodes/uggab.c:1364 Opcodes/uggab.c:1407
#, c-format
msgid "Invalid ftable no. %f"
msgstr "Tabla-f (ftable) no. %f inválida"
-#: Engine/fgens.c:2255
+#: Engine/fgens.c:2251
#, c-format
msgid "deferred-size ftable %f illegal here"
msgstr "tabla-f (ftable) %f de tamaño diferido es ilegal aquÃ"
-#: Engine/fgens.c:2281
+#: Engine/fgens.c:2278 Engine/fgens.c:2848
#, c-format
msgid "Deferred load of '%s' failed"
msgstr "Falló la carga diferida de '%s'"
-#: Engine/fgens.c:2343
+#: Engine/fgens.c:2340
#, c-format
msgid "Deferred-size ftable %f load not available at perf time."
msgstr ""
"Carga de la tabla-f (ftable) %f de tamaño diferido no disponible en tiempo "
"perf."
-#: Engine/fgens.c:2402
+#: Engine/fgens.c:2399
#, c-format
msgid "non-deferred ftable %d needs size %d\n"
msgstr ""
-#: Engine/fgens.c:2449 Opcodes/loscilx.c:62
+#: Engine/fgens.c:2446 Opcodes/loscilx.c:64
#, c-format
msgid "invalid sample format: %d"
msgstr "formato de muestra inválido: %d"
-#: Engine/fgens.c:2457 Engine/fgens.c:2718
+#: Engine/fgens.c:2454 Engine/fgens.c:2714
#, c-format
msgid "channel %d illegal"
msgstr "canal %d ilegal"
-#: Engine/fgens.c:2463
+#: Engine/fgens.c:2460
msgid "deferred alloc\n"
msgstr ""
-#: Engine/fgens.c:2471
+#: Engine/fgens.c:2468
msgid "deferred size, but filesize unknown"
msgstr "tamaño diferido, pero tamaño del archivo desconocido"
-#: Engine/fgens.c:2474
+#: Engine/fgens.c:2471
#, c-format
msgid " defer length %d\n"
msgstr ""
-#: Engine/fgens.c:2543
+#: Engine/fgens.c:2540
msgid "GEN1: input file truncated by ftable size"
msgstr "GEN1: archivo de entrada truncado por el tamaño de la tabla-f (ftable)"
-#: Engine/fgens.c:2547
+#: Engine/fgens.c:2544
#, c-format
msgid "\tlooping endpoint %d exceeds ftsize %d\n"
msgstr "\tpunto final de bucle %ld excede el tamaño de la tabla %ld\n"
-#: Engine/fgens.c:2569
+#: Engine/fgens.c:2566
msgid "GEN1 read error"
msgstr "GEN1 error de lectura"
-#: Engine/fgens.c:2574
+#: Engine/fgens.c:2571
msgid "GEN1: aiff file truncated by ftable size"
msgstr "GEN1: archivo aiff truncado por el tamaño de la tabla-f (ftable)"
-#: Engine/fgens.c:2575
+#: Engine/fgens.c:2572
#, c-format
msgid "\taudio samps %d exceeds ftsize %d"
msgstr "\tmuestras de audio %ld excedene el tamaño de la tabla %ld"
-#: Engine/fgens.c:2619
+#: Engine/fgens.c:2616
msgid "wrong number of ftable arguments"
msgstr "número equivocado de argumentos para la tabla-f (ftable)"
-#: Engine/fgens.c:2629 OOps/pstream.c:326
+#: Engine/fgens.c:2626 OOps/pstream.c:326
msgid "Failed to load PVOC-EX file"
msgstr "No fue posible cargar el archivo PVOC-EX"
-#: Engine/fgens.c:2640 InOut/midirecv.c:416 OOps/midiops.c:377
+#: Engine/fgens.c:2637 InOut/midirecv.c:416 OOps/midiops.c:377
#: OOps/midiops.c:419 OOps/midiops.c:431
msgid "illegal channel number"
msgstr "número de canal ilegal"
-#: Engine/fgens.c:2658
+#: Engine/fgens.c:2655
msgid "ftable size too small"
msgstr "la tabla-f (ftable) es demasiado pequeña"
-#: Engine/fgens.c:2734 Opcodes/mp3in.c:79 Opcodes/mp3in.c:218
+#: Engine/fgens.c:2730 Opcodes/mp3in.c:80 Opcodes/mp3in.c:219
msgid "Not enough memory\n"
msgstr ""
-#: Engine/fgens.c:2831
+#: Engine/fgens.c:2873
msgid "gen51: invalid number of p-fields (too few grades)"
msgstr "GEN51: número inválido de campos-p (p-fields) (faltan grados)"
-#: Engine/fgens.c:2871
+#: Engine/fgens.c:2913
msgid "number of channels inconsistent with number of args"
msgstr "número de canales inconsistente con el número de argumentos"
-#: Engine/fgens.c:3030
+#: Engine/fgens.c:3072
msgid "GEN53: invalid number of gen arguments"
msgstr "GEN53: número inválido de argumentos"
-#: Engine/fgens.c:3040
+#: Engine/fgens.c:3082
msgid "GEN53: invalid table length"
msgstr "GEN53: tamaño inválido de tabla"
-#: Engine/fgens.c:3044
+#: Engine/fgens.c:3086
msgid "GEN53: invalid source table number"
msgstr "GEN53: número inválido de tabla fuente"
-#: Engine/fgens.c:3047
+#: Engine/fgens.c:3089
msgid "GEN53: mode must be in the range 0 to 15"
msgstr "GEN53: el modo debe estar entre 0 y 15"
-#: Engine/fgens.c:3051
+#: Engine/fgens.c:3093
msgid "GEN53: invalid source table length"
msgstr "GEN53: tamaño inválido de la tabla fuente"
-#: Engine/fgens.c:3056
+#: Engine/fgens.c:3098
msgid "GEN53: invalid window table"
msgstr "GEN53: tabla de ventana inválida"
@@ -905,34 +868,34 @@ msgstr "Intrumento %s desactivado\n"
msgid "Instrument %d muted\n"
msgstr "Intrumento %d desactivado\n"
-#: Engine/insert.c:103 Engine/insert.c:1249
+#: Engine/insert.c:103 Engine/insert.c:1301
#, c-format
msgid "instr %s expects midi event data, cannot run from score\n"
msgstr "instr %s espera eventos MIDI, no puede llamarse desde el score\n"
-#: Engine/insert.c:106 Engine/insert.c:1252
+#: Engine/insert.c:106 Engine/insert.c:1304
#, c-format
msgid "instr %d expects midi event data, cannot run from score\n"
msgstr "instr %d espera eventos MIDI, no puede llamarse desde el score\n"
-#: Engine/insert.c:115 Engine/insert.c:279 Engine/insert.c:1234
+#: Engine/insert.c:115 Engine/insert.c:279 Engine/insert.c:1286
#, c-format
msgid "cannot allocate last note because it exceeds 100%% of cpu time"
msgstr ""
"no es posible colocar la última nota porque escede el 100%% de tiempo de CPU"
-#: Engine/insert.c:121 Engine/insert.c:285 Engine/insert.c:1239
+#: Engine/insert.c:121 Engine/insert.c:285 Engine/insert.c:1291
msgid "cannot allocate last note because it exceeds instr maxalloc"
msgstr ""
"no es posible colocar la última nota porque escede el valor de maxalloc del "
"instrumento"
-#: Engine/insert.c:137 Engine/insert.c:305 Engine/insert.c:1270
+#: Engine/insert.c:137 Engine/insert.c:305 Engine/insert.c:1322
#, c-format
msgid "new alloc for instr %s:\n"
msgstr "Nueva colocación para el instrumento %s:\n"
-#: Engine/insert.c:139 Engine/insert.c:307 Engine/insert.c:1272
+#: Engine/insert.c:139 Engine/insert.c:307 Engine/insert.c:1324
#, c-format
msgid "new alloc for instr %d:\n"
msgstr "Nueva colocación para el instrumento %d:\n"
@@ -947,12 +910,12 @@ msgstr "instr %s usa %d campos-p (pfields) pero se han dado %d"
msgid "instr %d uses %d p-fields but is given %d"
msgstr "instr %d usa %d campos-p (pfields) pero se han dado %d"
-#: Engine/insert.c:251 Engine/insert.c:463
+#: Engine/insert.c:251 Engine/insert.c:482
#, c-format
msgid "instr %s now active:\n"
msgstr ""
-#: Engine/insert.c:253 Engine/insert.c:465
+#: Engine/insert.c:253 Engine/insert.c:484
#, c-format
msgid "instr %d now active:\n"
msgstr ""
@@ -972,124 +935,124 @@ msgstr ""
msgid "MIDI note overlaps with key %d on same channel"
msgstr "Nota MIDI se sobrepone a la tecla %d en el mismo canal"
-#: Engine/insert.c:566
+#: Engine/insert.c:585
#, c-format
msgid "removed instance of instr %s\n"
msgstr "retirada instancia del instrumento %s\n"
-#: Engine/insert.c:568
+#: Engine/insert.c:587
#, c-format
msgid "removed instance of instr %d\n"
msgstr "retirada instancia del instrumento %d\n"
-#: Engine/insert.c:691
+#: Engine/insert.c:710
msgid "inactive allocs returned to freespace\n"
msgstr ""
-#: Engine/insert.c:716
+#: Engine/insert.c:735
#, c-format
msgid "could not find playing instr %f\n"
msgstr ""
-#: Engine/insert.c:729
+#: Engine/insert.c:748
msgid ""
"\n"
"INIT ERROR: "
msgstr ""
-#: Engine/insert.c:742
+#: Engine/insert.c:761
#, c-format
msgid "INIT ERROR in instr %d (opcode %s): "
msgstr "INIT ERROR en instrumento %d (opcode %s): "
-#: Engine/insert.c:745
+#: Engine/insert.c:764
#, c-format
msgid "INIT ERROR in instr %d (subinstr %d): "
msgstr "INIT ERROR en instrumento %d (subinstr %d): "
-#: Engine/insert.c:749
+#: Engine/insert.c:768
#, c-format
msgid "INIT ERROR in instr %d: "
msgstr "INIT ERROR en instrumento %d: "
-#: Engine/insert.c:767
+#: Engine/insert.c:786
msgid ""
"\n"
"PERF ERROR: "
msgstr ""
-#: Engine/insert.c:780
+#: Engine/insert.c:799
#, c-format
msgid "PERF ERROR in instr %d (opcode %s): "
msgstr "PERF ERROR en instrumento %d (opcode %s): "
-#: Engine/insert.c:783
+#: Engine/insert.c:802
#, c-format
msgid "PERF ERROR in instr %d (subinstr %d): "
msgstr "PERF ERROR en instrumento %d (subinstr %d): "
-#: Engine/insert.c:787
+#: Engine/insert.c:806
#, c-format
msgid "PERF ERROR in instr %d: "
msgstr "PERF ERROR en instrumento %d: "
-#: Engine/insert.c:792
+#: Engine/insert.c:811
msgid " note aborted\n"
msgstr " nota abortada\n"
-#: Engine/insert.c:820
+#: Engine/insert.c:839
msgid "subinstr: number of output args greater than nchnls"
msgstr "subinstr: número de argumentos de salida es mayor que nchnls"
-#: Engine/insert.c:861
+#: Engine/insert.c:880
msgid "subinstr: too many p-fields"
msgstr "subinstr: demasiados campos-p (pfields)"
-#: Engine/insert.c:920
+#: Engine/insert.c:939
#, c-format
msgid "%s: invalid local ksmps value: %d"
msgstr "%s: valor inválido de ksmps local: %d"
-#: Engine/insert.c:1040 OOps/bus.c:835 Opcodes/stackops.c:293
+#: Engine/insert.c:1062 OOps/bus.c:835 Opcodes/stackops.c:286
#, c-format
msgid "%s: not initialised"
msgstr "%s: no ha sido inicializado"
-#: Engine/insert.c:1169
+#: Engine/insert.c:1221
#, c-format
msgid "setksmps: invalid ksmps value: %d"
msgstr "setksmps: valor inválido de ksmps: %d"
-#: Engine/insert.c:1225
+#: Engine/insert.c:1277
#, c-format
msgid "schedule event ignored. instr %d undefined\n"
msgstr "evento de schedule ignorado. instr %d no definido\n"
-#: Engine/insert.c:1303
+#: Engine/insert.c:1355
#, c-format
msgid "instr %s pmax = %d, note pcnt = %d"
msgstr ""
-#: Engine/insert.c:1306
+#: Engine/insert.c:1358
#, c-format
msgid "instr %d pmax = %d, note pcnt = %d"
msgstr ""
-#: Engine/insert.c:1314
+#: Engine/insert.c:1366
#, c-format
msgid "psave beg at %p\n"
msgstr ""
-#: Engine/insert.c:1322
+#: Engine/insert.c:1374
#, c-format
msgid " ending at %p\n"
msgstr " terminando en %p\n"
-#: Engine/insert.c:1466
+#: Engine/insert.c:1518
msgid "subinstr: not initialised"
msgstr "subinstr: no ha sido inicializado"
-#: Engine/insert.c:1723
+#: Engine/insert.c:1855
#, c-format
msgid ""
"instr %d allocated at %p\n"
@@ -1098,29 +1061,29 @@ msgstr ""
"instr %d colocado en %p\n"
"\tlclbas %p, opds %p\n"
-#: Engine/insert.c:1740
+#: Engine/insert.c:1872
#, c-format
msgid "op %d (%s) allocated at %p\n"
msgstr "op %d (%s) colocado en %p\n"
-#: Engine/insert.c:1766
+#: Engine/insert.c:1898
msgid "null iopadr"
msgstr ""
-#: Engine/insert.c:1777
+#: Engine/insert.c:1909
msgid "null opadr"
msgstr ""
-#: Engine/insert.c:1834
+#: Engine/insert.c:1966
msgid "inconsistent opds total"
msgstr ""
-#: Engine/insert.c:1879
+#: Engine/insert.c:2011
#, fuzzy, c-format
msgid "Instrument %s is still active"
msgstr "Intrumento %s desactivado"
-#: Engine/insert.c:1882
+#: Engine/insert.c:2014
#, c-format
msgid "Instrument %d is still active"
msgstr "Intrumento %d desactivado"
@@ -1154,7 +1117,7 @@ msgstr "opcode desconocido '%c'"
msgid "multiple string p-fields"
msgstr "multiples campos-p (pfields) con cadenas"
-#: Engine/linevent.c:273 Engine/rdorch.c:1157
+#: Engine/linevent.c:273 Engine/rdorch.c:1184
msgid "unmatched quotes"
msgstr "comillas sin cerrar"
@@ -1216,84 +1179,84 @@ msgstr "event_i: error creando el evento '%c'"
msgid "memory allocate failure for %lu"
msgstr ""
-#: Engine/memfiles.c:112
+#: Engine/memfiles.c:113
#, c-format
msgid "cannot load %s\n"
msgstr "No es posible cargar %s\n"
-#: Engine/memfiles.c:118
+#: Engine/memfiles.c:119
#, c-format
msgid "cannot load %s, or SADIR undefined\n"
msgstr "No es posible cargar %s, o SADIR no está definido\n"
-#: Engine/memfiles.c:130
+#: Engine/memfiles.c:131
#, c-format
msgid "error processing file %s\n"
msgstr ""
-#: Engine/memfiles.c:136 Engine/memfiles.c:319
+#: Engine/memfiles.c:137 Engine/memfiles.c:320
#, c-format
msgid "file %s (%ld bytes) loaded into memory\n"
msgstr "archivo %s (%ld bytes) cargado en memoria\n"
-#: Engine/memfiles.c:199
+#: Engine/memfiles.c:200
msgid ""
"PVOCEX_LoadFile(): error:\n"
" "
msgstr ""
-#: Engine/memfiles.c:216
+#: Engine/memfiles.c:217
msgid "Empty or NULL file name"
msgstr "Nombre de archivo vacÃo o nulo (NULL)"
-#: Engine/memfiles.c:234
+#: Engine/memfiles.c:235
#, c-format
msgid "unable to open pvocex file %s: %s"
msgstr "No es posible abrir el archivo PVOC-EX %s: %s"
-#: Engine/memfiles.c:240
+#: Engine/memfiles.c:241
#, c-format
msgid "pvoc-ex file %s is not 32bit floats"
msgstr "El archivo PVOC-EX %s no es un archivo de 32-bits punto flotante"
-#: Engine/memfiles.c:246
+#: Engine/memfiles.c:247
#, c-format
msgid "pvoc-ex file %s not in AMP_FREQ format"
msgstr "El archivo PVOC-EX %s no está en formato AMP_FREQ"
-#: Engine/memfiles.c:252
+#: Engine/memfiles.c:253
#, c-format
msgid "pvoc-ex file %s is empty!"
msgstr "El archivo PVOC-EX %s está vacÃo!"
-#: Engine/memfiles.c:282
+#: Engine/memfiles.c:283
#, c-format
msgid "error reading pvoc-ex file %s"
msgstr "Error leyendo el archivo PVOC-EX %s"
-#: Engine/memfiles.c:286
+#: Engine/memfiles.c:287
#, c-format
msgid "error reading pvoc-ex file %s after %d frames"
msgstr "Error leyendo el archivo PVOC-EX %s después de %d cuadros"
-#: Engine/memfiles.c:291 Opcodes/pvinterp.c:71 Opcodes/pvinterp.c:174
-#: Opcodes/pvinterp.c:346 Opcodes/ugens9.c:97 Opcodes/vpvoc.c:201
+#: Engine/memfiles.c:292 Opcodes/pvinterp.c:71 Opcodes/pvinterp.c:173
+#: Opcodes/pvinterp.c:344 Opcodes/ugens9.c:97 Opcodes/vpvoc.c:202
#, c-format
msgid "%s's srate = %8.0f, orch's srate = %8.0f"
msgstr ""
"tasa de muestreo de %s = %8.0f, tasa de muestreo de la orquesta = %8.0f"
-#: Engine/memfiles.c:389
+#: Engine/memfiles.c:390
#, c-format
msgid "csoundLoadSoundFile(): failed to open '%s'"
msgstr "csoundLoadSoundFile(): No es posible abrir '%s'"
-#: Engine/memfiles.c:444
+#: Engine/memfiles.c:445
#, c-format
msgid "csoundLoadSoundFile(): error reading '%s'"
msgstr "csoundLoadSoundFile(): Error leyendo '%s'"
-#: Engine/memfiles.c:450
+#: Engine/memfiles.c:451
#, c-format
msgid ""
"File '%s' (sr = %d Hz, %d channel(s), %lu sample frames) loaded into memory\n"
@@ -1301,96 +1264,91 @@ msgstr ""
"Archivo '%s' (sr = %d Hz, %d canal(es), %lu cuadros de muestra) cargado en "
"la memoria\n"
-#: Engine/musmon.c:79
+#: Engine/musmon.c:81
#, c-format
msgid "Elapsed time at %s: real: %.3fs, CPU: %.3fs\n"
msgstr "Tiempo transcurrido en %s: real: %.3fs, CPU: %.3fs\n"
-#: Engine/musmon.c:106
+#: Engine/musmon.c:108
msgid "illegal istartempo value"
msgstr "valor de tempo inicial (istartempo) ilegal"
-#: Engine/musmon.c:109
+#: Engine/musmon.c:111
msgid "Beat mode not in force"
msgstr ""
-#: Engine/musmon.c:182 Top/main.c:122
+#: Engine/musmon.c:184 Top/main.c:121
#, c-format
msgid "Csound version %s beta (double samples) %s\n"
msgstr "Csound version %s beta (64-bit) %s\n"
-#: Engine/musmon.c:185 Top/main.c:125
+#: Engine/musmon.c:187 Top/main.c:124
#, c-format
msgid "Csound version %s (double samples) %s\n"
msgstr "Csound version %s (64-bit) %s\n"
-#: Engine/musmon.c:190 Top/main.c:114
+#: Engine/musmon.c:192 Top/main.c:113
#, c-format
msgid "Csound version %s beta (float samples) %s\n"
msgstr "Csound version %s beta (32-bit) %s\n"
-#: Engine/musmon.c:193 Top/main.c:117
+#: Engine/musmon.c:195 Top/main.c:116
#, c-format
msgid "Csound version %s (float samples) %s\n"
msgstr "Csound version %s (32-bit) %s\n"
-#: Engine/musmon.c:218
+#: Engine/musmon.c:220
msgid "orch now loaded\n"
msgstr "orquesta cargada\n"
-#: Engine/musmon.c:243
+#: Engine/musmon.c:245
msgid "k-period aligned audio buffering\n"
msgstr ""
-#: Engine/musmon.c:259
+#: Engine/musmon.c:261
#, c-format
msgid "audio buffered in %d sample-frame blocks\n"
msgstr ""
-#: Engine/musmon.c:276 Top/main.c:395
-#, c-format
-msgid "cannot reopen %s"
-msgstr "No fue posible reabrir %s"
-
-#: Engine/musmon.c:287
+#: Engine/musmon.c:283
msgid "using Cscore processing\n"
msgstr "usando procesamiento con Cscore\n"
-#: Engine/musmon.c:290
+#: Engine/musmon.c:286
msgid "cannot create cscore.out"
msgstr "no es posible crear cscore.out"
-#: Engine/musmon.c:303
+#: Engine/musmon.c:299
msgid "cannot reopen cscore.out"
msgstr "no es posible reabrir cscore.out"
-#: Engine/musmon.c:307 Engine/musmon.c:315
+#: Engine/musmon.c:303
msgid "cannot reopen cscore.srt"
msgstr "no es posible reabrir cscore.srt"
-#: Engine/musmon.c:309
+#: Engine/musmon.c:305
msgid "sorting cscore.out ..\n"
msgstr "ordenando cscore.out ...\n"
-#: Engine/musmon.c:313 Top/main.c:409
+#: Engine/musmon.c:311 Top/main.c:401
msgid "\t... done\n"
msgstr "\t... listo\n"
-#: Engine/musmon.c:317
+#: Engine/musmon.c:312
msgid "playing from cscore.srt\n"
msgstr ""
-#: Engine/musmon.c:321 Engine/musmon.c:453 Engine/musmon.c:1021
-#: Engine/musmon.c:1225
+#: Engine/musmon.c:316 Engine/musmon.c:446 Engine/musmon.c:1015
+#: Engine/musmon.c:1216
#, c-format
msgid "SECTION %d:\n"
msgstr "SECCION %d:\n"
-#: Engine/musmon.c:397
+#: Engine/musmon.c:390
msgid "end of score.\t\t overall amps:"
msgstr "fin del score.\t\t amplitud global:"
-#: Engine/musmon.c:408
+#: Engine/musmon.c:401
msgid ""
"\n"
"\t overall samples out of range:"
@@ -1398,7 +1356,7 @@ msgstr ""
"\n"
"\t número global de muestras fuera de rango:"
-#: Engine/musmon.c:412
+#: Engine/musmon.c:405
#, c-format
msgid ""
"\n"
@@ -1407,113 +1365,113 @@ msgstr ""
"\n"
"%d errores en la ejecución\n"
-#: Engine/musmon.c:414
+#: Engine/musmon.c:407
msgid "end of performance"
msgstr "fin de la ejecución"
-#: Engine/musmon.c:428
+#: Engine/musmon.c:421
msgid "no sound written to disk\n"
msgstr "no se ecribió sonido en el disco\n"
-#: Engine/musmon.c:443
+#: Engine/musmon.c:436
#, c-format
msgid "%c\tbeep!\n"
msgstr ""
-#: Engine/musmon.c:509 Engine/musmon.c:555
+#: Engine/musmon.c:502 Engine/musmon.c:548
msgid "\t number of samples out of range:"
msgstr "\t número de muestras fuera de rango:"
-#: Engine/musmon.c:548
+#: Engine/musmon.c:541
#, c-format
msgid "end of section %d\t sect peak amps:"
msgstr "fin de la sección %d\t amplitud máxima de sección:"
-#: Engine/musmon.c:550
+#: Engine/musmon.c:543
msgid "end of lplay event list\t peak amps:"
msgstr ""
-#: Engine/musmon.c:614 Engine/musmon.c:639
+#: Engine/musmon.c:607 Engine/musmon.c:632
#, c-format
msgid " - note deleted. instr %s undefined"
msgstr " - nota descartada. Instrumento %s indefinido"
-#: Engine/musmon.c:618
+#: Engine/musmon.c:611
#, c-format
msgid "Setting instrument %s %s\n"
msgstr ""
-#: Engine/musmon.c:619 Engine/musmon.c:632
+#: Engine/musmon.c:612 Engine/musmon.c:625
#: Opcodes/fluidOpcodes/fluidOpcodes.c:207
#: Opcodes/fluidOpcodes/fluidOpcodes.c:208
msgid "off"
msgstr "apagado"
-#: Engine/musmon.c:619 Engine/musmon.c:632
+#: Engine/musmon.c:612 Engine/musmon.c:625
#: Opcodes/fluidOpcodes/fluidOpcodes.c:207
#: Opcodes/fluidOpcodes/fluidOpcodes.c:208
msgid "on"
msgstr "prendido"
-#: Engine/musmon.c:627 Engine/musmon.c:666
+#: Engine/musmon.c:620 Engine/musmon.c:659
#, c-format
msgid " - note deleted. instr %d(%d) undefined"
msgstr " - nota descartada. Instrumento %d(%d) indefinido"
-#: Engine/musmon.c:631
+#: Engine/musmon.c:624
#, c-format
msgid "Setting instrument %d %s\n"
msgstr ""
-#: Engine/musmon.c:657
+#: Engine/musmon.c:650
#, c-format
msgid " - note deleted. i%d (%s) had %d init errors"
msgstr " - nota descartada. i%d (%s) tuvo %d errores de inicialización"
-#: Engine/musmon.c:687
+#: Engine/musmon.c:680
#, c-format
msgid " - note deleted. i%d had %d init errors"
msgstr " - nota descartada. i%d tuvo %d errores de inicialización"
-#: Engine/musmon.c:708
+#: Engine/musmon.c:701
#, c-format
msgid "time advanced %5.3f beats by score request\n"
msgstr "avance de %5.3f tiempos por petición del score\n"
-#: Engine/musmon.c:725
+#: Engine/musmon.c:719
#, c-format
msgid "\t\t T%7.3f - note deleted. "
msgstr "\t\t T%7.3f - nota descartada. "
-#: Engine/musmon.c:729
+#: Engine/musmon.c:723
#, c-format
msgid "instr %s had %d init errors\n"
msgstr "el instrumento %s tuvo %d errores de inicialización\n"
-#: Engine/musmon.c:731
+#: Engine/musmon.c:725
#, c-format
msgid "instr %d had %d init errors\n"
msgstr "el instrumento %d tuvo %d errores de inicialización\n"
-#: Engine/musmon.c:822
+#: Engine/musmon.c:816
msgid "terminating.\n"
msgstr "terminando.\n"
-#: Engine/musmon.c:908
+#: Engine/musmon.c:902
#, c-format
msgid "error in score. illegal opcode %c (ASCII %d)\n"
msgstr "error en el score. opcode ilegal %c (ASCII %d)\n"
-#: Engine/musmon.c:1135
+#: Engine/musmon.c:1129
msgid "insert_score_event(): invalid instrument number or name\n"
msgstr "insert_score_event(): número o nombre de instrumento inválido\n"
-#: Engine/musmon.c:1155
+#: Engine/musmon.c:1149
#, c-format
msgid "insert_score_event(): unknown opcode: %c\n"
msgstr "insert_score_event(): opcode desconocido: %c\n"
-#: Engine/musmon.c:1178
+#: Engine/musmon.c:1172
msgid "insert_score_event(): insufficient p-fields\n"
msgstr "insert_score_event(): faltan campos-p (p-fields)\n"
@@ -1536,28 +1494,48 @@ msgstr ""
msgid "cannot find the specified instrument or opcode"
msgstr "No se puede encontrar el instrumento o opcode especificado"
-#: Engine/new_orc_parser.c:74 Engine/rdorch.c:488
+#: Engine/new_orc_parser.c:91
+#, fuzzy
+msgid "Unmatched #ifdef\n"
+msgstr ""
+
+#: Engine/otran.c:149 Engine/symbtab.c:413
#, c-format
-msgid "cannot open orch file %s"
-msgstr "No es posible abrir el archivo de orquesta %s"
+msgid "invalid input type for opcode %s"
+msgstr ""
+
+#: Engine/otran.c:154 Engine/symbtab.c:418
+#, fuzzy, c-format
+msgid "too many input args for opcode %s"
+msgstr "demasiados argumentos de entrada %s"
+
+#: Engine/otran.c:169 Engine/symbtab.c:433
+#, c-format
+msgid "too many output args for opcode %s"
+msgstr ""
+
+#: Engine/otran.c:194 Engine/symbtab.c:458
+#, c-format
+msgid "invalid output type for opcode %s"
+msgstr ""
-#: Engine/otran.c:312 Engine/otran.c:319
+#: Engine/otran.c:325 Engine/otran.c:332
msgid "missing instrument number or name"
msgstr "falta número o nombre de instrumento"
-#: Engine/otran.c:324
+#: Engine/otran.c:337
msgid "illegal instr number"
msgstr "número de instrumento ilegal"
-#: Engine/otran.c:374
+#: Engine/otran.c:388
msgid "No opcode name"
msgstr ""
-#: Engine/otran.c:379 Engine/symbtab.c:501
+#: Engine/otran.c:393 Engine/symbtab.c:538
msgid "invalid name for opcode"
msgstr "nombre inválido para opcode"
-#: Engine/otran.c:383
+#: Engine/otran.c:397
#, c-format
msgid ""
"opcode declaration error (usage: opcode name, outtypes, intypes) -- opcode %s"
@@ -1565,331 +1543,364 @@ msgstr ""
"error en la declaración de opcode (uso: nombre de opcode, tipos de salida "
"(outtypes), tipos de entrada (intypes)) -- opcode %s"
-#: Engine/otran.c:394 Engine/symbtab.c:511
+#: Engine/otran.c:408 Engine/symbtab.c:548
#, c-format
msgid "cannot redefine %s"
msgstr "no es posible redefinir %s"
-#: Engine/otran.c:398 Engine/symbtab.c:516
+#: Engine/otran.c:412 Engine/symbtab.c:553
#, c-format
msgid "WARNING: redefined opcode: %s\n"
msgstr "ATENCION: redefinición de opcode: %s\n"
-#: Engine/otran.c:489
+#: Engine/otran.c:503
msgid "string constant used as output"
msgstr ""
-#: Engine/otran.c:520
+#: Engine/otran.c:534
msgid "Missing endin"
msgstr "Falta endin"
-#: Engine/otran.c:584
+#: Engine/otran.c:599
msgid "perf-pass statements illegal in header blk"
msgstr ""
-#: Engine/otran.c:588
+#: Engine/otran.c:603
#, c-format
msgid "%d syntax errors in orchestra. compilation invalid"
msgstr "%d errores de sintaxis en la orquesta. Compilación inválida"
-#: Engine/otran.c:1238
+#: Engine/otran.c:1257
msgid "bad value for 0dbfs: must be positive."
msgstr "valor incorrecto para 0dbfs: debe ser positivo."
-#: Engine/otran.c:1248
+#: Engine/otran.c:1267
#, c-format
msgid "sample rate overrides: esr = %7.4f, ekr = %7.4f, ksmps = %d\n"
msgstr ""
-#: Engine/otran.c:1320
+#: Engine/otran.c:1339
msgid "internal error: string constant outarg"
msgstr ""
-#: Engine/otran.c:1346
+#: Engine/otran.c:1365
#, c-format
msgid "i%d pset args != pmax"
msgstr ""
-#: Engine/otran.c:1409
+#: Engine/otran.c:1428
#, c-format
msgid ""
"sr = %.7g, kr = %.7g, ksmps = %.7g\n"
"error:"
msgstr ""
-#: Engine/otran.c:1442
+#: Engine/otran.c:1461
msgid "header init errors"
msgstr "errores de inicialización en el encabezado"
-#: Engine/rdorch.c:166
+#: Engine/rdorch.c:169
msgid "ungetorchar(): buffer overflow"
msgstr ""
-#: Engine/rdorch.c:330
+#: Engine/rdorch.c:348
msgid "Unexpected end of orchestra file"
msgstr "Fin inesperado en el archivo de orquesta"
-#: Engine/rdorch.c:484
+#: Engine/rdorch.c:431 Engine/sread.c:758
+#, c-format
+msgid "Macro definition for %*s\n"
+msgstr "Definición del macro %*s\n"
+
+#: Engine/rdorch.c:434
+msgid "Invalid macro name for --omacro"
+msgstr "Nombre de macro inválido para --omacro"
+
+#: Engine/rdorch.c:502
msgid "orch compiler:\n"
msgstr "compilador de orquesta: \n"
-#: Engine/rdorch.c:490
-#, c-format
-msgid "cannot find end of file %s"
-msgstr "No se puede encontrar el final del archivo %s"
-
-#: Engine/rdorch.c:492
+#: Engine/rdorch.c:520
#, c-format
-msgid "ftell error on %s"
-msgstr "ftell error en %s"
+msgid "cannot open orch file %s"
+msgstr "No es posible abrir el archivo de orquesta %s"
-#: Engine/rdorch.c:657 Engine/sread.c:1572
+#: Engine/rdorch.c:684 Engine/sread.c:1584
#, c-format
msgid "Macro definition for %s\n"
msgstr "Definición del macro %s\n"
-#: Engine/rdorch.c:748
+#: Engine/rdorch.c:716 Engine/sread.c:1607
+msgid "macro error\n"
+msgstr "error de macro\n"
+
+#: Engine/rdorch.c:775
#, c-format
msgid "Cannot open #include'd file %s\n"
msgstr "No se puede abrir el archivo pedido por #include %s\n"
-#: Engine/rdorch.c:797
+#: Engine/rdorch.c:824
msgid "unmatched #ifdef"
msgstr ""
-#: Engine/rdorch.c:808
+#: Engine/rdorch.c:835
msgid "Unmatched #else"
msgstr ""
-#: Engine/rdorch.c:822
+#: Engine/rdorch.c:849
msgid "Unmatched #endif"
msgstr ""
-#: Engine/rdorch.c:875
+#: Engine/rdorch.c:872 Engine/sread.c:1694
+#, c-format
+msgid "macro %s undefined\n"
+msgstr "el macro %s no está definido\n"
+
+#: Engine/rdorch.c:886 Engine/sread.c:286
+msgid "Undefining undefined macro"
+msgstr ""
+
+#: Engine/rdorch.c:902
msgid "Unexpected # character"
msgstr "Caracter # inesperado"
-#: Engine/rdorch.c:877
+#: Engine/rdorch.c:904
#, c-format
msgid "Unknown # option: '%s'"
msgstr "Opción para # desconocida: '%s'"
-#: Engine/rdorch.c:903 Engine/sread.c:394
+#: Engine/rdorch.c:928 Engine/sread.c:380
+#, c-format
+msgid "Undefined macro: '%s'"
+msgstr "Macro indefinido: '%s'"
+
+#: Engine/rdorch.c:930 Engine/sread.c:378
msgid "Macro expansion symbol ($) without macro name"
msgstr "SÃmbolo de expansión de macro ($) sin nombre de macro"
-#: Engine/rdorch.c:908 Engine/sread.c:400
+#: Engine/rdorch.c:935 Engine/sread.c:384
#, c-format
msgid "$%s matches macro name $%s"
msgstr "$%s coincide con el nombre de macro $%s"
-#: Engine/rdorch.c:925 Engine/sread.c:417
+#: Engine/rdorch.c:952 Engine/sread.c:401
msgid "Syntax error in macro call"
msgstr "Error de sintaxis en llamada de macro"
-#: Engine/rdorch.c:975
+#: Engine/rdorch.c:967
+#, c-format
+msgid ""
+"Missing argument terminator\n"
+"%.98s"
+msgstr ""
+
+#: Engine/rdorch.c:1002
msgid "Unmatched #ifdef"
msgstr ""
-#: Engine/rdorch.c:977
+#: Engine/rdorch.c:1004
msgid "file too large for ortext space"
msgstr "el archivo es demasiado grande para el espacio ortext"
-#: Engine/rdorch.c:984
+#: Engine/rdorch.c:1011
#, c-format
msgid "%d (%d) lines read\n"
msgstr "%d (%d) lÃneas leÃdas\n"
-#: Engine/rdorch.c:1052
+#: Engine/rdorch.c:1079
#, c-format
msgid "LINE %d:"
msgstr "LINEA %d:"
-#: Engine/rdorch.c:1071
+#: Engine/rdorch.c:1098
msgid "invalid 'elseif' statement. must have a corresponding 'if'"
msgstr "enunciado 'elseif' inválido. Falta el 'if' correspondiente"
-#: Engine/rdorch.c:1078
+#: Engine/rdorch.c:1105
msgid "'elseif' statement cannot occur after an 'else'"
msgstr "el enunciado 'elseif' no puede aparecer después de un 'else'"
-#: Engine/rdorch.c:1134
+#: Engine/rdorch.c:1161
msgid "Unmatched comment"
msgstr ""
-#: Engine/rdorch.c:1198
+#: Engine/rdorch.c:1225
msgid "misplaced comma"
msgstr "coma mal colocada"
-#: Engine/rdorch.c:1200 Engine/rdorch.c:1342 Engine/rdorch.c:1440
+#: Engine/rdorch.c:1227 Engine/rdorch.c:1369 Engine/rdorch.c:1467
msgid "unbalanced parens"
msgstr "paréntesis desbalanceados"
-#: Engine/rdorch.c:1364
+#: Engine/rdorch.c:1391
#, c-format
msgid "illegal character %c"
msgstr "caracter ilegal %c"
-#: Engine/rdorch.c:1377
+#: Engine/rdorch.c:1404
msgid "invalid 'else' statement. must have a corresponding 'if'"
msgstr "enunciado 'else' inválido, debe tener un 'if' correspondiente"
-#: Engine/rdorch.c:1384
+#: Engine/rdorch.c:1411
msgid "duplicate 'else' statement"
msgstr "enunciado 'else' duplicado"
-#: Engine/rdorch.c:1413
+#: Engine/rdorch.c:1440
msgid "invalid 'endif' statement. must have a corresponding 'if'"
msgstr "enunciado 'endif' inválido, debe tener un 'if' correspondiente"
-#: Engine/rdorch.c:1442
+#: Engine/rdorch.c:1469
msgid "no legal opcode"
msgstr "no es un opcode legal"
-#: Engine/rdorch.c:1573
+#: Engine/rdorch.c:1600
msgid "illegal opcod from expr anal"
msgstr "opcode ilegal según análisis de la expresión"
-#: Engine/rdorch.c:1606 Engine/rdorch.c:1628
+#: Engine/rdorch.c:1633 Engine/rdorch.c:1655
#, c-format
msgid "failed to find %s, output arg '%s' illegal type"
msgstr "no se encontró %s, argumento de salida '%s' tiene tipo ilegal"
-#: Engine/rdorch.c:1670
+#: Engine/rdorch.c:1697
#, c-format
msgid "failed to find %s, input arg illegal type"
msgstr "no se encontró %s, argumento de entrada tiene tipo ilegal"
-#: Engine/rdorch.c:1684
+#: Engine/rdorch.c:1711
msgid "setksmps is allowed only in user defined opcodes"
msgstr ""
"setksmps solo está permitido en opcodes definidos por el usuario (UDOs)"
-#: Engine/rdorch.c:1687
+#: Engine/rdorch.c:1714
msgid "multiple uses of setksmps in the same opcode definition"
msgstr "uso de multiples setksmps en la misma definición de opcode"
-#: Engine/rdorch.c:1710
+#: Engine/rdorch.c:1739
#, c-format
msgid "%s inconsistent with global nchnls (%d); replaced with %s\n"
msgstr ""
"%s inconsistente con el número nchnls de canales (%d), reemplazado por %s\n"
-#: Engine/rdorch.c:1740
+#: Engine/rdorch.c:1770
msgid "opcode blks cannot be nested (missing 'endop'?)"
msgstr ""
"los bloques de opcode no pueden estar uno dentro de otro (falta 'endop'?)"
-#: Engine/rdorch.c:1742
+#: Engine/rdorch.c:1772
msgid "opcode not allowed in instr block"
msgstr "el opcode no está permitido dentro de un bloque de instrumento"
-#: Engine/rdorch.c:1751
+#: Engine/rdorch.c:1781
msgid "unmatched endop"
msgstr ""
-#: Engine/rdorch.c:1753
+#: Engine/rdorch.c:1783
msgid "endop not allowed in instr block"
msgstr "endop no está permitido dentro de un bloque de instrumento"
-#: Engine/rdorch.c:1758
+#: Engine/rdorch.c:1788
msgid "instr not allowed in opcode block"
msgstr "instr no está permitido dentro de un bloque de opcode"
-#: Engine/rdorch.c:1761
+#: Engine/rdorch.c:1791
msgid "instr blocks cannot be nested (missing 'endin'?)"
msgstr ""
"los bloques de instr no pueden estar uno dentro de otro (falta 'endin'?)"
-#: Engine/rdorch.c:1769
+#: Engine/rdorch.c:1799
msgid "endin not allowed in opcode blk"
msgstr "endin no está permitido dentro de un bloque de opcode"
-#: Engine/rdorch.c:1771
+#: Engine/rdorch.c:1801
msgid "unmatched endin"
msgstr "endin sin complemento"
-#: Engine/rdorch.c:1781
+#: Engine/rdorch.c:1811
msgid "misplaced opcode"
msgstr "opcode mal colocado"
-#: Engine/rdorch.c:1787
+#: Engine/rdorch.c:1817
msgid "xout is allowed only in user defined opcodes"
msgstr ""
"xout solo está permitido dentro de opcodes definidos por el usuario (UDOs)"
-#: Engine/rdorch.c:1790
+#: Engine/rdorch.c:1820
msgid "multiple uses of xout in the same opcode definition"
msgstr "uso de multiples xout en la misma definición de opcode"
-#: Engine/rdorch.c:1837
+#: Engine/rdorch.c:1867
msgid "too many input args"
msgstr "demasiados argumentos de entrada"
-#: Engine/rdorch.c:1909
-#, c-format
-msgid "input arg '%s' used before defined"
-msgstr "argumento de entrada '%s' usado antes de ser definido"
+#: Engine/rdorch.c:1893
+msgid "insufficient required arguments"
+msgstr "número insuficiente de argumentos requeridos"
+
+#: Engine/rdorch.c:1940
+#, fuzzy, c-format
+msgid "input arg '%s' used before defined \n"
+msgstr "argumento de entrada '%s' usado antes de ser definido\n"
-#: Engine/rdorch.c:1956
+#: Engine/rdorch.c:1987
msgid "xin is allowed only in user defined opcodes"
msgstr ""
"xin solo está permitido dentro de opcodes definidos por el usuario (UDOs)"
-#: Engine/rdorch.c:1959
+#: Engine/rdorch.c:1990
msgid "multiple uses of xin in the same opcode definition"
msgstr "uso de multiples xin en la misma definición de opcode"
-#: Engine/rdorch.c:2004
+#: Engine/rdorch.c:2035
msgid "illegal no of output args"
msgstr "número ilegal de argumentos de salida"
-#: Engine/rdorch.c:2023
+#: Engine/rdorch.c:2054
#, c-format
msgid "output name previously used, type '%c' must be uniquely defined"
msgstr ""
"nombre de salida usado previamente, el tipo '%c' debe estar definido una "
"sola vez"
-#: Engine/rdorch.c:2028
+#: Engine/rdorch.c:2059
#, c-format
msgid "output arg '%s' illegal type"
msgstr "tipo ilegal de argumento de salida '%s'"
-#: Engine/rdorch.c:2069
+#: Engine/rdorch.c:2100
#, c-format
msgid "input arg '%s' of type %s not allowed when expecting %c"
msgstr "argumento de entrada '%s' de tipo %s no se permite porque se espera %c"
-#: Engine/rdorch.c:2155
+#: Engine/rdorch.c:2187
msgid "duplicate label"
msgstr "etiquieta (label) duplicada"
-#: Engine/rdorch.c:2177
+#: Engine/rdorch.c:2209
#, c-format
msgid "error line %d. unknown label:\n"
msgstr "error lÃnea %d. etiqueta desconocida:\n"
-#: Engine/rdorch.c:2192 Engine/rdorch.c:2239
+#: Engine/rdorch.c:2222 Engine/rdorch.c:2271
msgid "error: "
msgstr ""
-#: Engine/rdorch.c:2208
+#: Engine/rdorch.c:2239
#, c-format
msgid ", line %d:\n"
msgstr ", lÃnea %d:\n"
-#: Engine/rdorch.c:2246
+#: Engine/rdorch.c:2278
#, c-format
msgid "called from line %d of macro %s"
msgstr "llamado desde la lÃnea %d del macro %s"
-#: Engine/rdorch.c:2250
+#: Engine/rdorch.c:2282
#, c-format
msgid "in line %d of file input %s"
msgstr "en la lÃnea %d del archivo de entrada %s"
-#: Engine/rdscor.c:79
+#: Engine/rdscor.c:80
#, c-format
msgid "ERROR: illegal character %c(%.2x) in scoreline: "
msgstr "ERROR: caracter ilegal %c(%.2x) en lÃnea del score: "
@@ -1902,7 +1913,7 @@ msgstr ""
"\n"
"\tel resto de la lÃnea descartada\n"
-#: Engine/rdscor.c:144
+#: Engine/rdscor.c:146
msgid "ERROR: too many pfields: "
msgstr "ERROR: demasidados campos-p (pfields): "
@@ -1928,349 +1939,316 @@ msgstr "error en el score: "
msgid " section %d: at position %d%s"
msgstr ""
-#: Engine/sread.c:217
+#: Engine/sread.c:216
msgid "Internal error in print_input_backtrace()"
msgstr ""
-#: Engine/sread.c:219
+#: Engine/sread.c:218
#, c-format
msgid " included from line %d of macro %s%s"
msgstr "llamado desde la lÃnea %d del macro %s"
-#: Engine/sread.c:220
+#: Engine/sread.c:219
#, c-format
msgid " called from line %d of macro %s%s"
msgstr "llamado desde la lÃnea %d del macro %s"
-#: Engine/sread.c:222
+#: Engine/sread.c:221
#, c-format
msgid " in line %d of macro %s%s"
msgstr "llamado desde la lÃnea %d del macro %s"
-#: Engine/sread.c:229
-#, c-format
-msgid " included from line %d of file input %s%s"
-msgstr "en la lÃnea %d del archivo de entrada %s"
-
-#: Engine/sread.c:230
-#, c-format
-msgid " called from line %d of file input %s%s"
-msgstr "en la lÃnea %d del archivo de entrada %s"
-
-#: Engine/sread.c:232
-#, c-format
-msgid " in line %d of file input %s%s"
-msgstr "en la lÃnea %d del archivo de entrada %s"
-
-#: Engine/sread.c:268
+#: Engine/sread.c:256
#, c-format
msgid "Internal error op=%c"
msgstr "error interno op=%c"
-#: Engine/sread.c:322
-msgid "ungetscochar(): buffer overflow"
-msgstr ""
-
-#: Engine/sread.c:479
+#: Engine/sread.c:464
msgid "illegal placement of number in [] expression"
msgstr ""
-#: Engine/sread.c:506
+#: Engine/sread.c:491
msgid "illegal placement of operator ~ in [] expression"
msgstr ""
-#: Engine/sread.c:516
+#: Engine/sread.c:501
msgid "illegal placement of operator @ or @@ in [] expression"
msgstr ""
-#: Engine/sread.c:548 Engine/sread.c:562
+#: Engine/sread.c:533 Engine/sread.c:547
#, c-format
msgid "illegal placement of operator %c in [] expression"
msgstr ""
-#: Engine/sread.c:574
+#: Engine/sread.c:559
msgid "illegal placement of '(' in [] expression"
msgstr ""
-#: Engine/sread.c:580
+#: Engine/sread.c:565
msgid "missing operand before ')' in [] expression"
msgstr ""
-#: Engine/sread.c:594
+#: Engine/sread.c:579
msgid "missing operand before closing bracket in []"
msgstr ""
-#: Engine/sread.c:609
+#: Engine/sread.c:594
#, c-format
msgid "illegal character %c(%.2x) in [] expression"
msgstr ""
-#: Engine/sread.c:658
+#: Engine/sread.c:646
#, c-format
msgid "%s Nested LOOP terminated, level:%d\n"
msgstr ""
-#: Engine/sread.c:664
+#: Engine/sread.c:652
#, c-format
msgid "External LOOP terminated, level:%d\n"
msgstr ""
-#: Engine/sread.c:684
+#: Engine/sread.c:696
#, c-format
msgid "%s Nested LOOP section (%d) Level:%d\n"
msgstr ""
-#: Engine/sread.c:689
+#: Engine/sread.c:701
#, c-format
msgid " External LOOP section (%d) Level:%d\n"
msgstr ""
-#: Engine/sread.c:703
+#: Engine/sread.c:715
msgid "Loop terminated\n"
msgstr ""
-#: Engine/sread.c:716
+#: Engine/sread.c:733
#, c-format
msgid "Repeat section (%d)\n"
msgstr "Sección repetida (%d)\n"
-#: Engine/sread.c:719
+#: Engine/sread.c:736
msgid "Repeat section\n"
msgstr "Sección repetida\n"
-#: Engine/sread.c:744
+#: Engine/sread.c:761
msgid "Invalid macro name for --smacro"
msgstr "Nombre de macro inválido para --smacro"
-#: Engine/sread.c:831
+#: Engine/sread.c:865
#, c-format
msgid "Clockbase = %f\n"
msgstr "Base de reloj = %f\n"
-#: Engine/sread.c:898
+#: Engine/sread.c:934
msgid "Loops are nested too deeply"
msgstr ""
-#: Engine/sread.c:901
-msgid "Loop cannot start inside of a macro"
-msgstr ""
-
-#: Engine/sread.c:920
+#: Engine/sread.c:948
msgid "{: invalid repeat count"
msgstr "sread: {: número inválido de repeticiones"
-#: Engine/sread.c:929
+#: Engine/sread.c:957
#, c-format
msgid "%s Nested LOOP=%d Level:%d\n"
msgstr ""
-#: Engine/sread.c:935
+#: Engine/sread.c:963
#, c-format
msgid "External LOOP=%d Level:%d\n"
msgstr ""
-#: Engine/sread.c:1004
-msgid "Repeat cannot start inside of a macro (ignored)"
-msgstr ""
-
-#: Engine/sread.c:1019
+#: Engine/sread.c:1047
msgid "r: invalid repeat count"
msgstr "r: número inválido de repeticiones"
-#: Engine/sread.c:1021
+#: Engine/sread.c:1049
#, c-format
msgid "Repeats=%d\n"
msgstr "Repeticiones=%d\n"
-#: Engine/sread.c:1063
+#: Engine/sread.c:1093
#, c-format
msgid "Named section >>>%s<<<\n"
msgstr "Sección con nombre >>>%s<<<\n"
-#: Engine/sread.c:1079
+#: Engine/sread.c:1108
#, c-format
msgid "%d: File %s position %ld\n"
msgstr "%d: Archivo %s posición %ld\n"
-#: Engine/sread.c:1085
-#, c-format
-msgid "Ignoring name %s not in file\n"
-msgstr "Ignorando nombre %s, no está en el archivo\n"
-
-#: Engine/sread.c:1110
+#: Engine/sread.c:1133
#, c-format
msgid "Name %s not found"
msgstr "Nombre %s no encontrado"
-#: Engine/sread.c:1112
+#: Engine/sread.c:1135
#, c-format
msgid "Duplicate %d: %s (%s,%ld)\n"
msgstr "%d duplicado: %s (%s,%ld)\n"
-#: Engine/sread.c:1129
-#, c-format
-msgid "cannot open input file %s"
-msgstr "No es posible abrir el archivo de entrada %s"
-
-#: Engine/sread.c:1149
+#: Engine/sread.c:1164
#, c-format
msgid "Warp_factor = %f\n"
msgstr ""
-#: Engine/sread.c:1174
+#: Engine/sread.c:1189
msgid "sread is confused on legal opcodes\n"
msgstr ""
-#: Engine/sread.c:1236
+#: Engine/sread.c:1251
msgid "No previous event for ^"
msgstr "No hay evento previo en ^"
-#: Engine/sread.c:1241
+#: Engine/sread.c:1256
#, c-format
msgid "illegal space following %s, zero substituted"
msgstr ""
-#: Engine/sread.c:1271
+#: Engine/sread.c:1286
#, c-format
msgid "ignoring '%s' in '%c' event"
msgstr ""
-#: Engine/sread.c:1274
+#: Engine/sread.c:1289
msgid "! invalid in p1, p2, or p3"
msgstr ""
-#: Engine/sread.c:1275 Engine/sread.c:1280 Engine/sread.c:1730
-#: Engine/sread.c:1753 Engine/sread.c:1767
+#: Engine/sread.c:1290 Engine/sread.c:1295 Engine/sread.c:1738
+#: Engine/sread.c:1761 Engine/sread.c:1775
msgid " remainder of line flushed\n"
msgstr " el resto de la lÃnea descartado\n"
-#: Engine/sread.c:1279
+#: Engine/sread.c:1294
#, c-format
msgid "illegal character after !: '%c'"
msgstr ""
-#: Engine/sread.c:1358
+#: Engine/sread.c:1373
#, c-format
msgid "WARNING: instr %s not found, assuming insno = -1\n"
msgstr "ATENCION: instr %s no encontrado, asumiendo insno = -1\n"
-#: Engine/sread.c:1378
+#: Engine/sread.c:1393
msgid "sread: illegal use of carry, 0 substituted\n"
msgstr ""
-#: Engine/sread.c:1526
+#: Engine/sread.c:1539
msgid "Improper \\"
msgstr ""
-#: Engine/sread.c:1558
+#: Engine/sread.c:1570
msgid "Not #define"
msgstr ""
-#: Engine/sread.c:1620
+#: Engine/sread.c:1630
#, c-format
msgid "Macro %s with %d arguments defined\n"
msgstr "Macro %s con %d argumentos definido \n"
-#: Engine/sread.c:1631
+#: Engine/sread.c:1642
msgid "Not #include"
msgstr ""
-#: Engine/sread.c:1662
+#: Engine/sread.c:1671
#, c-format
msgid "Cannot open #include'd file %s"
msgstr ""
-#: Engine/sread.c:1673
+#: Engine/sread.c:1681
msgid "Not #undef"
msgstr ""
-#: Engine/sread.c:1692
+#: Engine/sread.c:1700
msgid "unknown # option"
msgstr "Opción # desconocida"
-#: Engine/sread.c:1729
+#: Engine/sread.c:1737
#, c-format
msgid "illegal opcode %c"
msgstr "no es un opcode legal"
-#: Engine/sread.c:1752
+#: Engine/sread.c:1760
#, c-format
msgid "unexpected char %c"
msgstr ""
-#: Engine/sread.c:1766
+#: Engine/sread.c:1774
msgid "illegally placed string"
msgstr ""
-#: Engine/sread.c:1773
+#: Engine/sread.c:1781
msgid "unmatched quote"
msgstr "comillas sin cerrar"
-#: Engine/sread.c:1817
+#: Engine/sread.c:1825
msgid "sread: illegal number format: "
msgstr ""
-#: Engine/sread.c:1823
+#: Engine/sread.c:1831
msgid " zero substituted.\n"
msgstr " sustituÃdo por cero.\n"
-#: Engine/swrite.c:123
+#: Engine/swrite.c:123 Engine/swritestr.c:134
#, c-format
msgid "swrite: unexpected opcode, section %d line %d\n"
msgstr ""
-#: Engine/swrite.c:209 Engine/swrite.c:249
+#: Engine/swrite.c:209 Engine/swrite.c:249 Engine/swritestr.c:220
+#: Engine/swritestr.c:260
#, c-format
msgid "swrite: output, sect%d line%d p%d makes illegal reference to "
msgstr ""
-#: Engine/swrite.c:216 Engine/swrite.c:255
+#: Engine/swrite.c:216 Engine/swrite.c:255 Engine/swritestr.c:227
+#: Engine/swritestr.c:266
msgid " Zero substituted\n"
msgstr " SustituÃdo por cero.\n"
-#: Engine/swrite.c:313
+#: Engine/swrite.c:313 Engine/swritestr.c:324
#, c-format
msgid "swrite: output, sect%d line%d p%d has illegal ramp symbol\n"
msgstr ""
-#: Engine/swrite.c:317
+#: Engine/swrite.c:317 Engine/swritestr.c:328
#, c-format
msgid ""
"swrite: output, sect%d line%d p%d ramp has illegal forward or backward ref\n"
msgstr ""
-#: Engine/swrite.c:380 Engine/swrite.c:445
+#: Engine/swrite.c:380 Engine/swrite.c:445 Engine/swritestr.c:391
+#: Engine/swritestr.c:456
#, c-format
msgid "swrite: output, sect%d line%d p%d has illegal expramp symbol\n"
msgstr ""
-#: Engine/swrite.c:385 Engine/swrite.c:450
+#: Engine/swrite.c:385 Engine/swrite.c:450 Engine/swritestr.c:396
+#: Engine/swritestr.c:461
#, c-format
msgid ""
"swrite: output, sect%d line%d p%d expramp has illegal forward or backward "
"ref\n"
msgstr ""
-#: Engine/swrite.c:466
+#: Engine/swrite.c:466 Engine/swritestr.c:477
#, c-format
msgid "swrite: output, sect%d line%d p%d has illegally terminated string "
msgstr ""
-#: Engine/swrite.c:514
+#: Engine/swrite.c:514 Engine/swritestr.c:529
#, c-format
msgid "swrite: output, sect%d line%d p%d has illegal number "
msgstr ""
-#: Engine/swrite.c:521
+#: Engine/swrite.c:521 Engine/swritestr.c:536
msgid " String truncated\n"
msgstr " Cadena truncada\n"
-#: Engine/symbtab.c:202
+#: Engine/symbtab.c:208
#, c-format
msgid "Type confusion for %s (%d,%d), replacing\n"
msgstr ""
-#: Engine/symbtab.c:333
+#: Engine/symbtab.c:345
#, c-format
msgid "Unknown word type for %s on line %d\n"
msgstr ""
@@ -2291,6 +2269,14 @@ msgstr ""
msgid "twarp: t segments exceed twarp array\n"
msgstr ""
+#: InOut/cmidi.c:233
+msgid "CoreMIDI real time MIDI plugin for Csound\n"
+msgstr ""
+
+#: InOut/cmidi.c:247
+msgid "rtmidi: CoreMIDI module enabled\n"
+msgstr ""
+
#: InOut/libsnd.c:486
msgid "error: no input file name"
msgstr "error: hay nombre del archivo de entrada"
@@ -2314,44 +2300,59 @@ msgstr "audio_in %s tiene sr = %d, la orquesta tiene sr = %d"
msgid "audio_in %s has %d chnls, orch %d chnls_i"
msgstr "audio_in %s tiene %d canal(es), la orquesta tiene %d"
-#: InOut/libsnd.c:573
+#: InOut/libsnd.c:574
+#, c-format
+msgid "reading %d sample blks of %d-bit floats from %s \n"
+msgstr ""
+
+#: InOut/libsnd.c:578
#, c-format
msgid "reading %d-byte blks of %s from %s (%s)\n"
msgstr ""
-#: InOut/libsnd.c:608
+#: InOut/libsnd.c:614
msgid "Output file type changed to IRCAM for use in pipe\n"
msgstr ""
-#: InOut/libsnd.c:628
+#: InOut/libsnd.c:634
msgid "Failed to initialise real time audio output"
msgstr "No se puede iniciar la salida de audio en tiempo real"
-#: InOut/libsnd.c:669 InOut/libsnd.c:673
+#: InOut/libsnd.c:675 InOut/libsnd.c:679
#, c-format
msgid "sfinit: cannot open %s"
msgstr "sfinit: no se puede abrir %s"
-#: InOut/libsnd.c:733 util/srconv.c:485
+#: InOut/libsnd.c:741
+#, fuzzy, c-format
+msgid "writing %d sample blks of %d-bit floats to %s \n"
+msgstr ""
+
+#: InOut/libsnd.c:744 util/srconv.c:484
#, c-format
msgid "writing %d-byte blks of %s to %s"
msgstr "escribiendo bloques de %d bytes de %s a %s"
-#: InOut/libsnd.c:740 InOut/libsnd.c:810
+#: InOut/libsnd.c:749 InOut/libsnd.c:824
msgid " (raw)\n"
msgstr ""
-#: InOut/libsnd.c:803
+#: InOut/libsnd.c:815
#, c-format
-msgid "%ld %d-byte soundblks of %s written to %s"
+msgid "%ld %d sample blks of %d-bit floats written to %s\n"
msgstr ""
-#: InOut/libsnd.c:822
+#: InOut/libsnd.c:820
+#, fuzzy, c-format
+msgid "%ld %d sample blks of %s written to %s"
+msgstr "escribiendo %ld bloques de %d bytes de %s a %s"
+
+#: InOut/libsnd.c:837
#, c-format
msgid "soundfile write returned bytecount of %d, not %d"
msgstr ""
-#: InOut/libsnd.c:825
+#: InOut/libsnd.c:840
msgid ""
"(disk may be full...\n"
" closing the file ...)"
@@ -2359,11 +2360,11 @@ msgstr ""
"(el disco parece estar lleno...\n"
" cerrando el archivo ...)"
-#: InOut/libsnd.c:828 util/dnoise.c:1192
+#: InOut/libsnd.c:843 util/dnoise.c:1177
msgid "\t... closed\n"
msgstr "\t... cerrado\n"
-#: InOut/libsnd.c:834
+#: InOut/libsnd.c:849
msgid "not writing to sound disk\n"
msgstr "No se escribe sonido en el disco\n"
@@ -2763,20 +2764,20 @@ msgstr "Error cerrando el dispositivo de entrada MIDI: %d (%s)"
msgid "Error closing MIDI out device: %d (%s)"
msgstr "Error cerrando el dispositivo de salida MIDI: %d (%s)"
-#: InOut/midisend.c:171
+#: InOut/midisend.c:170
msgid " *** no callback for opening MIDI output"
msgstr ""
-#: InOut/midisend.c:173
+#: InOut/midisend.c:172
msgid " *** no callback for writing MIDI data"
msgstr ""
-#: InOut/midisend.c:179
+#: InOut/midisend.c:178
#, c-format
msgid " *** error opening MIDI out device: %d (%s)"
msgstr " *** error abriendo el dispositivo de salida MIDI: %d (%s)"
-#: InOut/midisend.c:190
+#: InOut/midisend.c:189
#, c-format
msgid " *** error opening MIDI out file '%s'"
msgstr " *** error abriendo el archivo de salida MIDI '%s'"
@@ -3034,7 +3035,7 @@ msgstr "Error abriendo el dispositivo de salida MIDI '%s'"
msgid "Opened MIDI output device file '%s'\n"
msgstr "Dispositivo de salida MIDI '%s' abierto\n"
-#: InOut/rtalsa.c:1101 InOut/rtcoreaudio.c:64 InOut/rtcoreaudio.c:74
+#: InOut/rtalsa.c:1101 InOut/rtcoreaudio.c:71 InOut/rtcoreaudio.c:81
msgid "warning... could not create global var\n"
msgstr ""
@@ -3058,64 +3059,82 @@ msgstr ""
msgid "rtmidi: devfile module enabled\n"
msgstr ""
-#: InOut/rtcoreaudio.c:83
+#: InOut/rtauhal.c:163
+#, fuzzy, c-format
+msgid "selected input device: %s \n"
+msgstr ""
+
+#: InOut/rtauhal.c:166
+#, fuzzy, c-format
+msgid "selected output device: %s \n"
+msgstr ""
+
+#: InOut/rtauhal.c:524
+msgid "AuHAL module: device closed\n"
+msgstr ""
+
+#: InOut/rtauhal.c:541
+msgid "rtaudio: coreaaudio-AuHAL module enabled\n"
+msgstr ""
+
+#: InOut/rtcoreaudio.c:90
msgid ""
"CoreAudio real-time audio module for Csound\n"
"by Victor Lazzarini\n"
msgstr ""
-#: InOut/rtcoreaudio.c:105
+#: InOut/rtcoreaudio.c:112
msgid "rtaudio: CoreAudio module enabled\n"
msgstr ""
-#: InOut/rtcoreaudio.c:254
+#: InOut/rtcoreaudio.c:261
#, c-format
msgid "selected device: %u \n"
msgstr ""
-#: InOut/rtcoreaudio.c:263
+#: InOut/rtcoreaudio.c:270
#, c-format
msgid "CoreAudio module: opening %s \n"
msgstr ""
-#: InOut/rtcoreaudio.c:297
+#: InOut/rtcoreaudio.c:304
msgid " *** CoreAudio: open: could not set buffer size\n"
msgstr ""
-#: InOut/rtcoreaudio.c:342
+#: InOut/rtcoreaudio.c:349
#, c-format
msgid " *** CoreAudio: open: could not set device parameter sr: %d \n"
msgstr ""
-#: InOut/rtcoreaudio.c:344
+#: InOut/rtcoreaudio.c:351
#, c-format
msgid ""
" *** CoreAudio: current device sampling rate is:%d \n"
" try setting the above value in your csound orchestra \n"
msgstr ""
-#: InOut/rtcoreaudio.c:353
+#: InOut/rtcoreaudio.c:360
#, c-format
msgid "CoreAudio module: sr set to %d with %d audio channels \n"
msgstr ""
-#: InOut/rtcoreaudio.c:374 InOut/rtcoreaudio.c:387 InOut/rtcoreaudio.c:432
-#: InOut/rtcoreaudio.c:452
+#: InOut/rtcoreaudio.c:381 InOut/rtcoreaudio.c:394 InOut/rtcoreaudio.c:439
+#: InOut/rtcoreaudio.c:459
msgid " *** CoreAudio: open: memory allocation failure\n"
msgstr ""
-#: InOut/rtcoreaudio.c:414
+#: InOut/rtcoreaudio.c:421
#, c-format
msgid ""
"CoreAudio module: device open with %d buffers of %d frames\n"
"==========================================================\n"
msgstr ""
-#: InOut/rtcoreaudio.c:552
+#: InOut/rtcoreaudio.c:559
msgid "coreaudio module: closing device...\n"
msgstr ""
-#: InOut/rtcoreaudio.c:566
+#: InOut/rtcoreaudio.c:573
msgid "coreaudio module: device closed\n"
msgstr ""
@@ -3470,332 +3489,50 @@ msgid "rtmidi: input device number is out of range"
msgstr "rtmidi: número de dispositivo de entrada fuera de rango"
#: InOut/rtwinmm.c:559
-msgid "rtmidi: memory allocation failure"
-msgstr ""
-
-#: InOut/rtwinmm.c:565
-#, c-format
-msgid "Opening MIDI input device %d (%s)\n"
-msgstr "Abriendo dispositivo de entrada MIDI %d (%s)\n"
-
-#: InOut/rtwinmm.c:571
-msgid "rtmidi: could not open input device"
-msgstr "rtmidi: no se puede abrir el dispositivo"
-
-#: InOut/rtwinmm.c:639
-msgid "rtmidi: no output devices are available"
-msgstr "rtmidi: no hay dispositivos de salida disponibles"
-
-#: InOut/rtwinmm.c:651
-msgid "The available MIDI output devices are:\n"
-msgstr "Los dispositivos de salida MIDI disponibles son:\n"
-
-#: InOut/rtwinmm.c:658
-msgid "rtmidi: output device number is out of range"
-msgstr "rtmidi: número de dispositivo de salida fuera de rango"
-
-#: InOut/rtwinmm.c:662
-#, c-format
-msgid "Opening MIDI output device %d (%s)\n"
-msgstr "Abriendo dispositivo de salida MIDI %d (%s)\n"
-
-#: InOut/rtwinmm.c:667
-msgid "rtmidi: could not open output device"
-msgstr "rtmidi: no se puede abrir el dispositivo de salida"
-
-#: InOut/rtwinmm.c:725
-msgid ""
-"Windows MME real time audio and MIDI module for Csound by Istvan Varga\n"
-msgstr "Modulo MME en tiempo real para audio y MIDI por Istvan Varga\n"
-
-#: InOut/rtwinmm.c:730
-msgid "could not allocate global structure"
-msgstr ""
-
-#: InOut/rtwinmm.c:762
-msgid "rtaudio: WinMM module enabled\n"
-msgstr ""
-
-#: InOut/virtual_keyboard/virtual_keyboard.cpp:435
-msgid "virtual_keyboard.cpp: error allocating FLTK flags"
-msgstr ""
-
-#: InOut/virtual_keyboard/virtual_keyboard.cpp:443 InOut/winFLTK.c:125
-#: InOut/winFLTK.c:139
-#, c-format
-msgid "Error registering opcode '%s'"
-msgstr "Error registrando el opcode '%s'"
-
-#: InOut/widgets.cpp:1081
-msgid ""
-"Invalid snapshot. Perhaps you modified orchestra widget code after you saved "
-"the snapshot bank."
-msgstr ""
-
-#: InOut/widgets.cpp:1226
-msgid "No name for FLbutbank"
-msgstr ""
-
-#: InOut/widgets.cpp:1466
-msgid "FLsetsnap: invalid table"
-msgstr "FLsetsnap: tabla inválida"
-
-#: InOut/widgets.cpp:1504
-msgid ""
-"Saving could overwrite the old file.\n"
-"Are you sure to save ?"
-msgstr ""
-
-#: InOut/widgets.cpp:1516
-msgid ""
-"Saving could overwrite the old file.\n"
-"Are you sure you want to save ?"
-msgstr ""
-
-#: InOut/widgets.cpp:1518
-msgid "No"
-msgstr ""
-
-#: InOut/widgets.cpp:1518
-msgid "Yes"
-msgstr "Si"
-
-#: InOut/widgets.cpp:1527
-msgid "FLsavesnap: cannot open file"
-msgstr ""
-
-#: InOut/widgets.cpp:1580
-msgid "FLloadsnap: cannot open file"
-msgstr ""
-
-#: InOut/widgets.cpp:1625
-msgid ""
-"unmatched widget, probably due to a modified orchestra. Modifying an "
-"orchestra makes it incompatible with old snapshot files"
-msgstr ""
-
-#: InOut/widgets.cpp:1994
-msgid "end of widget thread\n"
-msgstr "fin del hilo de widgets\n"
-
-#: InOut/widgets.cpp:2020
-msgid "FLrun was already called"
-msgstr ""
-
-#: InOut/widgets.cpp:2023
-msgid "FL_run: memory allocation failure"
-msgstr ""
-
-#: InOut/widgets.cpp:2125 InOut/widgets.cpp:2145
-msgid "Error: Unable to fork process\n"
-msgstr ""
-
-#: InOut/widgets.cpp:2545
-msgid "FLpanel_end: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2548
-msgid ""
-"FLpanel_end: invalid stack count: verify FLpanel/FLpanel_end count and "
-"placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2573 InOut/widgets.cpp:2604
-msgid "FLscroll_end: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2576
-msgid ""
-"FLscroll_end: invalid stack count: verify FLscroll/FLscroll_end count and "
-"placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2607
-msgid ""
-"FLtabs_end: invalid stack count: verify FLtabs/FLtabs_end count and placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2651
-msgid "FLgroup_end: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2654
-msgid ""
-"FLgroup_end: invalid stack count: verify FLgroup/FLgroup_end count and "
-"placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2684
-msgid "FLpack_end: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2687
-msgid ""
-"FLpack_end: invalid stack count: verify FLpack/FLpack_end count and placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2840
-msgid "FLvalue cannot be set by FLsetVal.\n"
-msgstr ""
-
-#: InOut/widgets.cpp:2857
-#, c-format
-msgid "(fl_setWidgetValuei): not fully implemented yet; exp=%d"
-msgstr ""
-
-#: InOut/widgets.cpp:2876
-msgid "FLvalue cannot be set by FLsetVal\n"
-msgstr ""
-
-#: InOut/widgets.cpp:2893
-#, c-format
-msgid "(fl_setWidgetValue_set): not fully implemented yet; exp=%d"
-msgstr ""
-
-#: InOut/widgets.cpp:3242 InOut/widgets.cpp:4648
-msgid "FLslider exponential, using non-labeled slider"
-msgstr ""
-
-#: InOut/widgets.cpp:3264
-msgid "FLslider: invalid slider type"
-msgstr ""
-
-#: InOut/widgets.cpp:3276 InOut/widgets.cpp:4072
-msgid "FLslider: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:3337 InOut/widgets.cpp:4399 InOut/widgets.cpp:4610
-#: InOut/widgets.cpp:4787
-msgid "invalid ZAK space allocation"
-msgstr ""
-
-#: InOut/widgets.cpp:3451
-msgid "FLslidBnk: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:3548 InOut/widgets.cpp:3581
-msgid "FLjoy X axe: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:3675
-msgid "FLknob: invalid knob type"
-msgstr ""
-
-#: InOut/widgets.cpp:3690
-msgid "FLknob: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:3790 InOut/widgets.cpp:3912
-#, c-format
-msgid "FLbutton \"%s\" ignoring snapshot capture retrieve"
-msgstr ""
-
-#: InOut/widgets.cpp:3831
-msgid "FLbutton: invalid button type"
-msgstr ""
-
-#: InOut/widgets.cpp:3863
-msgid "FLcloseButton: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:3882
-#, c-format
-msgid "Command Found: %s\n"
-msgstr ""
-
-#: InOut/widgets.cpp:3954
-msgid "FLbuttonBank: invalid button type"
-msgstr ""
-
-#: InOut/widgets.cpp:3992
-#, c-format
-msgid "FLcount \"%s\" ignoring snapshot capture retrieve"
-msgstr ""
-
-#: InOut/widgets.cpp:4059
-msgid "FLroller: invalid roller type"
-msgstr ""
-
-#: InOut/widgets.cpp:4254
-msgid "FLhvsBox: a square area must be delimited by 2 lines at least"
-msgstr ""
-
-#: InOut/widgets.cpp:4302
-msgid "FLkeyIn: invalid table number"
-msgstr ""
-
-#: InOut/widgets.cpp:4305
-msgid "FLkeyIn: table too short!"
-msgstr ""
-
-#: InOut/widgets.cpp:4522
-msgid "FLvslidBnk: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:4698 InOut/widgets.cpp:4875
-msgid "FLsliderBank: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:4825
-msgid "FLslidBnk2: FLslider exponential, using non-labeled slider"
-msgstr ""
-
-#: InOut/widgets.cpp:4955 InOut/widgets.cpp:5018
-msgid "FLsldBnkSet: invalid table number"
-msgstr ""
-
-#: InOut/widgets.cpp:4959 InOut/widgets.cpp:5022
-msgid "FLslidBnkSet: table too short!"
-msgstr ""
-
-#: InOut/widgets.cpp:4967 InOut/widgets.cpp:5031
-msgid "FLsldBnkSet: invalid outable number"
-msgstr ""
-
-#: InOut/widgets.cpp:4972 InOut/widgets.cpp:5037
-msgid "FLslidBnkSet: too many sliders to reset!"
+msgid "rtmidi: memory allocation failure"
msgstr ""
-#: InOut/widgets.cpp:4995
-msgid "FLslidBnkSet: function mapping not available"
-msgstr ""
+#: InOut/rtwinmm.c:565
+#, c-format
+msgid "Opening MIDI input device %d (%s)\n"
+msgstr "Abriendo dispositivo de entrada MIDI %d (%s)\n"
-#: InOut/widgets.cpp:5064 InOut/widgets.cpp:5149 InOut/widgets.cpp:5236
-msgid ""
-"FLslidBnk2Setk: value out of range: function mapping requires a 0 to 1 range "
-"for input"
-msgstr ""
+#: InOut/rtwinmm.c:571
+msgid "rtmidi: could not open input device"
+msgstr "rtmidi: no se puede abrir el dispositivo"
-#: InOut/widgets.cpp:5093
-msgid "FLsldBnkSetk: invalid table number"
-msgstr ""
+#: InOut/rtwinmm.c:639
+msgid "rtmidi: no output devices are available"
+msgstr "rtmidi: no hay dispositivos de salida disponibles"
-#: InOut/widgets.cpp:5097 InOut/widgets.cpp:5183
-msgid "FLslidBnkSetk: table too short!"
-msgstr ""
+#: InOut/rtwinmm.c:651
+msgid "The available MIDI output devices are:\n"
+msgstr "Los dispositivos de salida MIDI disponibles son:\n"
-#: InOut/widgets.cpp:5105
-msgid "FLsldBnkSetk: invalid outable number"
-msgstr ""
+#: InOut/rtwinmm.c:658
+msgid "rtmidi: output device number is out of range"
+msgstr "rtmidi: número de dispositivo de salida fuera de rango"
-#: InOut/widgets.cpp:5111 InOut/widgets.cpp:5197
-msgid "FLslidBnkSetk: too many sliders to reset!"
-msgstr ""
+#: InOut/rtwinmm.c:662
+#, c-format
+msgid "Opening MIDI output device %d (%s)\n"
+msgstr "Abriendo dispositivo de salida MIDI %d (%s)\n"
-#: InOut/widgets.cpp:5179
-msgid "FLslidBnkSetk: invalid table number"
-msgstr ""
+#: InOut/rtwinmm.c:667
+msgid "rtmidi: could not open output device"
+msgstr "rtmidi: no se puede abrir el dispositivo de salida"
-#: InOut/widgets.cpp:5191
-msgid "FLslidBnkSetk: invalid outable number"
-msgstr ""
+#: InOut/rtwinmm.c:725
+msgid ""
+"Windows MME real time audio and MIDI module for Csound by Istvan Varga\n"
+msgstr "Modulo MME en tiempo real para audio y MIDI por Istvan Varga\n"
-#: InOut/widgets.cpp:5268
-msgid "FLxyin: none of X limits can be zero in exponential mode!"
+#: InOut/rtwinmm.c:730
+msgid "could not allocate global structure"
msgstr ""
-#: InOut/widgets.cpp:5294
-msgid "FLxyin: none of Y limits can be zero in exponential mode!"
+#: InOut/rtwinmm.c:762
+msgid "rtaudio: WinMM module enabled\n"
msgstr ""
#: InOut/winascii.c:75
@@ -3803,7 +3540,7 @@ msgstr ""
msgid "%s\t%ld points, scalemax %5.3f\n"
msgstr "%s\t%ld puntos, máximo %5.3f\n"
-#: InOut/windin.c:46 Opcodes/pitch.c:82 Opcodes/spectra.c:76
+#: InOut/windin.c:46 Opcodes/pitch.c:83 Opcodes/spectra.c:78
msgid "illegal iprd"
msgstr ""
@@ -3846,47 +3583,61 @@ msgstr ""
msgid "widgets.cpp: error allocating FLTK flags"
msgstr ""
-#: OOps/aops.c:95 OOps/aops.c:119
+#: InOut/winFLTK.c:124 InOut/winFLTK.c:137
+#: InOut/virtual_keyboard/virtual_keyboard.cpp:443
+#, c-format
+msgid "Error registering opcode '%s'"
+msgstr "Error registrando el opcode '%s'"
+
+#: InOut/virtual_keyboard/virtual_keyboard.cpp:435
+msgid "virtual_keyboard.cpp: error allocating FLTK flags"
+msgstr ""
+
+#: OOps/aops.c:120 OOps/aops.c:144
#, c-format
msgid "Cannot be more In arguments than Out in init (%d,%d)"
msgstr ""
-#: OOps/aops.c:175 OOps/aops.c:194
+#: OOps/aops.c:200 OOps/aops.c:219
#, c-format
msgid "Index %d out of range [0,%d] in t[]\n"
msgstr ""
-#: OOps/aops.c:184
+#: OOps/aops.c:209
#, fuzzy
-msgid "Vector notinitialised\n"
-msgstr "vco: no ha sido inicializado"
+msgid "Vector not initialised\n"
+msgstr "Vector: no ha sido inicializado\n"
-#: OOps/aops.c:686
+#: OOps/aops.c:711
msgid "non-looping sample"
msgstr ""
-#: OOps/aops.c:828 OOps/aops.c:856
+#: OOps/aops.c:853 OOps/aops.c:881
#, c-format
msgid "No tuning table %d"
msgstr ""
-#: OOps/aops.c:901 OOps/aops.c:939
+#: OOps/aops.c:926 OOps/aops.c:964
msgid "cpstun: invalid table"
msgstr "cpstun: tabla inválida"
-#: OOps/aops.c:1189
+#: OOps/aops.c:1214
msgid "Input and output argument count differs in inch"
msgstr ""
-#: OOps/aops.c:1193
+#: OOps/aops.c:1218
#, c-format
msgid "Input channel %d too large; ignored"
msgstr ""
-#: OOps/aops.c:1667
+#: OOps/aops.c:1698
msgid "k-rate invalue ChannelName cannot start with $"
msgstr ""
+#: OOps/aops.c:1835
+msgid "Unknown functuon called"
+msgstr ""
+
#: OOps/bus.c:313 OOps/bus.c:345
msgid "chani: invalid index"
msgstr "chani: Ãndice inválido"
@@ -3987,8 +3738,6 @@ msgid ""
"diskin2: opened '%s':\n"
" %d Hz, %d channel(s), %ld sample frames\n"
msgstr ""
-"Archivo '%s' (sr = %d Hz, %d canal(es), %lu cuadros de muestra) cargado en "
-"la memoria\n"
#: OOps/diskin2.c:240
msgid ""
@@ -4027,8 +3776,6 @@ msgid ""
"soundin: opened '%s':\n"
" %d Hz, %d channel(s), %ld sample frames\n"
msgstr ""
-"Archivo '%s' (sr = %d Hz, %d canal(es), %lu cuadros de muestra) cargado en "
-"la memoria\n"
#: OOps/diskin2.c:609
msgid ""
@@ -4067,8 +3814,6 @@ msgid ""
"diskin: opened '%s':\n"
" %d Hz, %d channel(s), %ld sample frames\n"
msgstr ""
-"Archivo '%s' (sr = %d Hz, %d canal(es), %lu cuadros de muestra) cargado en "
-"la memoria\n"
#: OOps/diskin.c:207
msgid "diskin: number of output args inconsistent with number of file channels"
@@ -4140,7 +3885,7 @@ msgstr ""
#: OOps/disprep.c:96
#, fuzzy
msgid "illegal iprd in display"
-msgstr "iperiod ilegal"
+msgstr ""
#: OOps/disprep.c:120
#, c-format
@@ -4166,7 +3911,7 @@ msgstr "el tamaño de la ventana debe ser una potencia de dos"
#: OOps/disprep.c:252
#, fuzzy
msgid "illegal iprd in ffy display"
-msgstr "iperiod ilegal"
+msgstr ""
#: OOps/disprep.c:277
#, c-format
@@ -4189,7 +3934,7 @@ msgstr ""
msgid "dispfft: not initialised"
msgstr "dispfft: no ha sido inicializado"
-#: OOps/disprep.c:435 Opcodes/spectra.c:516
+#: OOps/disprep.c:435 Opcodes/spectra.c:518
msgid "illegal iperiod"
msgstr "iperiod ilegal"
@@ -4253,15 +3998,15 @@ msgstr ""
msgid " *** fftlib.c: internal error: invalid FFT size: %d"
msgstr ""
-#: OOps/goto_ops.c:92
+#: OOps/goto_ops.c:93
msgid "negative time period"
msgstr ""
-#: OOps/goto_ops.c:182
+#: OOps/goto_ops.c:186
msgid "turnoff2: invalid instrument number"
msgstr "turnoff2: número de instrumento inválido"
-#: OOps/goto_ops.c:187
+#: OOps/goto_ops.c:191
msgid "turnoff2: invalid mode parameter"
msgstr "turnoff2: parámetro de modo inválido"
@@ -4278,7 +4023,7 @@ msgid "cpstabm: invalid modulator table"
msgstr "cpstabm: tabla de modulador inválida"
#: OOps/midiops.c:304 OOps/midiops.c:314 OOps/midiops.c:334 OOps/midiops.c:344
-#: OOps/midiops.c:421 OOps/midiops.c:435 Opcodes/gab/sliderTable.c:563
+#: OOps/midiops.c:421 OOps/midiops.c:435 Opcodes/gab/sliderTable.c:567
#: Opcodes/midiops2.c:56 Opcodes/midiops2.c:73 Opcodes/midiops2.c:111
#: Opcodes/midiops2.c:145 Opcodes/midiops2.c:206 Opcodes/midiops2.c:237
#: Opcodes/midiops2.c:298 Opcodes/midiops2.c:317 Opcodes/midiops2.c:357
@@ -4294,7 +4039,7 @@ msgstr "pgmassign: número de programa inválido"
msgid "illegal mrtmsg argument"
msgstr ""
-#: OOps/midiout.c:383
+#: OOps/midiout.c:389
#, c-format
msgid "out contr14 msb:%x lsb:%x\n"
msgstr ""
@@ -4757,148 +4502,148 @@ msgstr "pvsanal: no ha sido inicializado.\n"
msgid "Unknown window type; replaced by rectangular\n"
msgstr ""
-#: OOps/pvsanal.c:1025
+#: OOps/pvsanal.c:1027
msgid "pvsynth: Not Initialised.\n"
msgstr "pvsynth: no ha sido inicializado.\n"
-#: OOps/remote.c:100
+#: OOps/remote.c:103
msgid "insufficient memory to initialise remote globals."
msgstr "memoria insuficiente para inicializar globales remotas."
-#: OOps/remote.c:109
+#: OOps/remote.c:112
msgid "insufficient memory to initialise outgoing socket table."
msgstr ""
-#: OOps/remote.c:116
+#: OOps/remote.c:119
msgid "insufficient memory to initialise incoming socket table."
msgstr ""
-#: OOps/remote.c:124
+#: OOps/remote.c:127
msgid "insufficient memory to initialise insrfd_list."
msgstr "memoria insuficiente para inicializar insrfd_list."
-#: OOps/remote.c:132
+#: OOps/remote.c:135
msgid "insufficient memory to initialise chnrfd_list."
msgstr "memoria insuficiente para inicializar chnrfd_list."
-#: OOps/remote.c:139
+#: OOps/remote.c:142
msgid "insufficient memory to initialise insrfd table."
msgstr "memoria insuficiente para inicializar insrfd table."
-#: OOps/remote.c:146
+#: OOps/remote.c:149
msgid "insufficient memory to initialise chnrfd table."
msgstr "memoria insuficiente para inicializar chnrfd table."
-#: OOps/remote.c:153
+#: OOps/remote.c:156
msgid "insufficient memory to initialise local ip address."
msgstr "memoria insuficiente para inicializar dirección IP local."
-#: OOps/remote.c:161
+#: OOps/remote.c:164
msgid "unable to get local ip address."
msgstr "no es posible averiguar la dirección IP local."
-#: OOps/remote.c:222
+#: OOps/remote.c:225
msgid "could not open remote port"
msgstr "No es posible abrir el puerto remoto"
-#: OOps/remote.c:237
+#: OOps/remote.c:240
msgid "---> Could not connect \n"
msgstr "---> No es posible conectar \n"
-#: OOps/remote.c:241
+#: OOps/remote.c:244
msgid "---> Failed all attempts to connect. \n"
msgstr "---> Fallaron todos los intentos de conexión. \n"
-#: OOps/remote.c:244
+#: OOps/remote.c:247
msgid "---> Connected. \n"
msgstr "---> Conectado. \n"
-#: OOps/remote.c:258 Opcodes/socksend.c:232
+#: OOps/remote.c:261 Opcodes/socksend.c:305
msgid "write to socket failed"
msgstr ""
-#: OOps/remote.c:278
+#: OOps/remote.c:281
msgid "creating socket\n"
msgstr ""
-#: OOps/remote.c:280
+#: OOps/remote.c:283
msgid "created socket \n"
msgstr ""
-#: OOps/remote.c:292
+#: OOps/remote.c:295
msgid "setting socket option to reuse the addresse \n"
msgstr ""
-#: OOps/remote.c:309 Opcodes/sockrecv.c:133 Opcodes/sockrecv.c:223
-#: Opcodes/socksend.c:211
+#: OOps/remote.c:312 Opcodes/sockrecv.c:141 Opcodes/sockrecv.c:237
+#: Opcodes/socksend.c:284
msgid "bind failed"
msgstr ""
-#: OOps/remote.c:313 Opcodes/socksend.c:216
+#: OOps/remote.c:316 Opcodes/socksend.c:289
msgid "listen failed"
msgstr ""
-#: OOps/remote.c:318 Opcodes/socksend.c:222
+#: OOps/remote.c:321 Opcodes/socksend.c:295
msgid "accept failed"
msgstr ""
-#: OOps/remote.c:321
+#: OOps/remote.c:324
#, c-format
msgid "accepted, conn=%d \n"
msgstr ""
-#: OOps/remote.c:353 OOps/remote.c:374 OOps/remote.c:417 OOps/remote.c:449
-#: OOps/remote.c:489
+#: OOps/remote.c:356 OOps/remote.c:377 OOps/remote.c:420 OOps/remote.c:452
+#: OOps/remote.c:492
msgid "failed to initialise remote globals."
msgstr "memoria insuficiente para inicializar globales remotas."
-#: OOps/remote.c:378 OOps/remote.c:421
+#: OOps/remote.c:381 OOps/remote.c:424
msgid "missing instr nos"
msgstr "falta el número de instrumento"
-#: OOps/remote.c:390 OOps/remote.c:430
+#: OOps/remote.c:393 OOps/remote.c:433
msgid "illegal instr no"
msgstr "número de instrumento ilegal"
-#: OOps/remote.c:393
+#: OOps/remote.c:396
msgid "insno already remote"
msgstr ""
-#: OOps/remote.c:403 OOps/remote.c:474
+#: OOps/remote.c:406 OOps/remote.c:477
msgid "Failed to open port to listen"
msgstr ""
-#: OOps/remote.c:423
+#: OOps/remote.c:426
#, c-format
msgid "*** str1: %s own:%s\n"
msgstr ""
-#: OOps/remote.c:433
+#: OOps/remote.c:436
msgid "insno already specific remote"
msgstr ""
-#: OOps/remote.c:453 OOps/remote.c:493
+#: OOps/remote.c:456 OOps/remote.c:496
msgid "missing channel nos"
msgstr "falta el número de canales"
-#: OOps/remote.c:463 OOps/remote.c:502
+#: OOps/remote.c:466 OOps/remote.c:505
msgid "illegal channel no"
msgstr "número de canales ilegal"
-#: OOps/remote.c:466
+#: OOps/remote.c:469
msgid "channel already remote"
msgstr ""
-#: OOps/remote.c:505
+#: OOps/remote.c:508
msgid "channel already specific remote"
msgstr ""
-#: OOps/remote.c:531 OOps/remote.c:555 OOps/remote.c:579
+#: OOps/remote.c:534 OOps/remote.c:558 OOps/remote.c:582
msgid "CLsend failed"
msgstr ""
-#: OOps/remote.c:645 OOps/remote.c:653 OOps/remote.c:661 OOps/remote.c:669
-#: OOps/remote.c:677
+#: OOps/remote.c:648 OOps/remote.c:656 OOps/remote.c:664 OOps/remote.c:672
+#: OOps/remote.c:680
msgid ""
"*** This version of Csound was not compiled with remote event support ***\n"
msgstr ""
@@ -5009,53 +4754,53 @@ msgstr "linseg no ha sido inicializado (krate)\n"
msgid "linseg: not initialised (arate)\n"
msgstr "linseg: no ha sido inicializado (arate)\n"
-#: OOps/ugens1.c:463 OOps/ugens1.c:465 OOps/ugens1.c:512 OOps/ugens1.c:514
-#: OOps/ugens1.c:564 OOps/ugens1.c:566 OOps/ugens1.c:610 OOps/ugens1.c:612
-#: OOps/ugens1.c:774 OOps/ugens1.c:776
+#: OOps/ugens1.c:464 OOps/ugens1.c:466 OOps/ugens1.c:513 OOps/ugens1.c:515
+#: OOps/ugens1.c:565 OOps/ugens1.c:567 OOps/ugens1.c:611 OOps/ugens1.c:613
+#: OOps/ugens1.c:775 OOps/ugens1.c:777
#, c-format
msgid "ival%d is zero"
msgstr "ival%d es cero"
-#: OOps/ugens1.c:466 OOps/ugens1.c:515 OOps/ugens1.c:567 OOps/ugens1.c:613
-#: OOps/ugens1.c:777
+#: OOps/ugens1.c:467 OOps/ugens1.c:516 OOps/ugens1.c:568 OOps/ugens1.c:614
+#: OOps/ugens1.c:778
#, c-format
msgid "ival%d sign conflict"
msgstr ""
-#: OOps/ugens1.c:495 OOps/ugens1.c:544
+#: OOps/ugens1.c:496 OOps/ugens1.c:545
#, c-format
msgid "Breakpoint time %f not valid"
msgstr ""
-#: OOps/ugens1.c:706
+#: OOps/ugens1.c:707
msgid "expseg (krate): not initialised"
msgstr "expseg (krate): no ha sido inicializado"
-#: OOps/ugens1.c:732
+#: OOps/ugens1.c:733
msgid "expseg (arate): not initialised"
msgstr "expseg (arate): no ha sido inicializado"
-#: OOps/ugens1.c:1013 OOps/ugens1.c:1149 OOps/ugens1.c:1311
+#: OOps/ugens1.c:1014 OOps/ugens1.c:1150 OOps/ugens1.c:1312
msgid "non-positive iatdec"
msgstr ""
-#: OOps/ugens1.c:1106 OOps/ugens1.c:1273
+#: OOps/ugens1.c:1107 OOps/ugens1.c:1274
msgid "ixmod out of range."
msgstr ""
-#: OOps/ugens1.c:1134 OOps/ugens1.c:1301
+#: OOps/ugens1.c:1135 OOps/ugens1.c:1302
msgid "rise func ends with zero"
msgstr ""
-#: OOps/ugens1.c:1178 OOps/ugens1.c:1257
+#: OOps/ugens1.c:1179 OOps/ugens1.c:1258
msgid "envlpx rise func ends with zero"
msgstr ""
-#: OOps/ugens1.c:1199 OOps/ugens1.c:1254
+#: OOps/ugens1.c:1200 OOps/ugens1.c:1255
msgid "envlpx(krate): not initialised"
msgstr "envlpx(krate): no ha sido inicializado"
-#: OOps/ugens2.c:48 OOps/ugens2.c:61 Opcodes/shape.c:377
+#: OOps/ugens2.c:48 OOps/ugens2.c:61 Opcodes/shape.c:379
msgid "init phase truncation\n"
msgstr ""
@@ -5119,8 +4864,8 @@ msgid "oscil(krate): not initialised"
msgstr "oscil(krate): no ha sido inicializado"
#: OOps/ugens2.c:1139 OOps/ugens2.c:1167 OOps/ugens2.c:1192 OOps/ugens2.c:1219
-#: Opcodes/pitch.c:1579 Opcodes/pitch.c:1606 Opcodes/pitch.c:1633
-#: Opcodes/pitch.c:1662
+#: Opcodes/pitch.c:1580 Opcodes/pitch.c:1607 Opcodes/pitch.c:1634
+#: Opcodes/pitch.c:1663
msgid "oscil: not initialised"
msgstr "oscil: no ha sido inicializado"
@@ -5236,7 +4981,7 @@ msgstr ""
msgid "Seeding from current time %lu\n"
msgstr ""
-#: OOps/ugens5.c:198 OOps/ugens5.c:260 Opcodes/gab/gab.c:45 Opcodes/ugsc.c:188
+#: OOps/ugens5.c:198 OOps/ugens5.c:260 Opcodes/gab/gab.c:47 Opcodes/ugsc.c:186
#, c-format
msgid "illegal reson iscl value, %f"
msgstr ""
@@ -5468,8 +5213,8 @@ msgstr ""
msgid "Table no. < 1 dft=%.2f sft=%.2f"
msgstr ""
-#: OOps/ugrw1.c:1781 OOps/ugrw1.c:1822 Opcodes/fareyseq.c:455
-#: Opcodes/fareyseq.c:477
+#: OOps/ugrw1.c:1781 OOps/ugrw1.c:1822 Opcodes/fareyseq.c:453
+#: Opcodes/fareyseq.c:475
#, c-format
msgid "Source sft table %.2f not found."
msgstr ""
@@ -5699,19 +5444,19 @@ msgstr ""
msgid "reverbx: not initialised"
msgstr "reverbx: no ha sido inicializado"
-#: Opcodes/ambicode1.c:80
+#: Opcodes/ambicode1.c:82
msgid "The numbers of input and output arguments are not valid."
msgstr ""
-#: Opcodes/ambicode1.c:163
+#: Opcodes/ambicode1.c:165
msgid "The number of input arguments is not valid."
msgstr ""
-#: Opcodes/ambicode1.c:167
+#: Opcodes/ambicode1.c:169
msgid "The isetup value should be between 1 and 5."
msgstr ""
-#: Opcodes/ambicode1.c:193
+#: Opcodes/ambicode1.c:195
msgid "The output channel count does not match the isetup value."
msgstr ""
@@ -5751,16 +5496,16 @@ msgstr ""
msgid "Not supported setup number!"
msgstr ""
-#: Opcodes/babo.c:740
+#: Opcodes/babo.c:742
#, c-format
msgid "Babo: resonator dimensions are incorrect (%.1f, %.1f, %.1f)"
msgstr ""
-#: Opcodes/bilbar.c:82
+#: Opcodes/bilbar.c:83
msgid "No data to continue"
msgstr ""
-#: Opcodes/bilbar.c:108
+#: Opcodes/bilbar.c:109
msgid "Ends must be clamped(1), pivoting(2) or free(3)"
msgstr ""
@@ -5773,8 +5518,8 @@ msgstr "vco: no ha sido inicializado"
msgid "DLineN: Delay length too big ... setting to maximum length of %ld.\n"
msgstr ""
-#: Opcodes/bowedbar.c:98 Opcodes/physmod.c:489
-msgid "unknown lowest frequency for bowed string -- assuming 50Hz\n"
+#: Opcodes/bowedbar.c:98
+msgid "unknown lowest frequency for bowed bar -- assuming 50Hz\n"
msgstr ""
#: Opcodes/clfilt.c:53
@@ -5852,17 +5597,17 @@ msgstr ""
msgid "Unknown control %d"
msgstr ""
-#: Opcodes/cpumeter.c:73
+#: Opcodes/cpumeter.c:77
#, fuzzy, c-format
msgid "Failed to open /proc/stat: %s"
-msgstr "No fue posible abrir el archivo csd: %s"
+msgstr "No fue posible abrir el archivo /proc/stat : %s"
-#: Opcodes/cpumeter.c:75 Opcodes/cpumeter.c:80 Opcodes/cpumeter.c:107
-#: Opcodes/cpumeter.c:147
+#: Opcodes/cpumeter.c:79 Opcodes/cpumeter.c:84 Opcodes/cpumeter.c:111
+#: Opcodes/cpumeter.c:151
msgid "failed /proc/stat read"
msgstr ""
-#: Opcodes/crossfm.c:33
+#: Opcodes/crossfm.c:34
msgid "crossfm: ftable not found"
msgstr ""
@@ -5904,31 +5649,31 @@ msgstr ""
msgid "insufficient arguments for fareytable"
msgstr "argumentos insuficientes por fareytable"
-#: Opcodes/fareyseq.c:250 Opcodes/fareyseq.c:300
+#: Opcodes/fareyseq.c:251 Opcodes/fareyseq.c:301
#, c-format
msgid "Farey: Table no. < 1 dft=%.2f sft=%.2f"
msgstr ""
-#: Opcodes/fareyseq.c:255
+#: Opcodes/fareyseq.c:256
#, c-format
msgid "Farey: Filter type < 1 dft=%.2f sft=%.2f"
msgstr ""
-#: Opcodes/fareyseq.c:270 Opcodes/fareyseq.c:318
+#: Opcodes/fareyseq.c:271 Opcodes/fareyseq.c:319
#, c-format
msgid "Farey: Destination dft table %.2f not found."
msgstr ""
-#: Opcodes/fareyseq.c:281 Opcodes/fareyseq.c:329
+#: Opcodes/fareyseq.c:282 Opcodes/fareyseq.c:330
#, c-format
msgid "Farey: Source sft table %.2f not found."
msgstr ""
-#: Opcodes/fareyseq.c:305
+#: Opcodes/fareyseq.c:306
msgid "Farey: Filter type < 1"
msgstr ""
-#: Opcodes/fareyseq.c:447 Opcodes/fareyseq.c:468
+#: Opcodes/fareyseq.c:445 Opcodes/fareyseq.c:466
#, c-format
msgid "Table no. < 1 sft=%.2f"
msgstr ""
@@ -5962,7 +5707,7 @@ msgstr ""
#: Opcodes/fluidOpcodes/fluidOpcodes.c:553
#, fuzzy, c-format
msgid "Illegal Engine Number: %i.\n"
-msgstr "número GEN ilegal"
+msgstr ""
#: Opcodes/fluidOpcodes/fluidOpcodes.c:238
#, c-format
@@ -6036,45 +5781,45 @@ msgstr ""
msgid "follow - zero length!"
msgstr ""
-#: Opcodes/fout.c:59
+#: Opcodes/fout.c:60
#, c-format
msgid "Closing file '%s'...\n"
msgstr ""
-#: Opcodes/fout.c:101
+#: Opcodes/fout.c:102
msgid "invalid file handle"
msgstr ""
-#: Opcodes/fout.c:108 Opcodes/fout.c:420
+#: Opcodes/fout.c:109 Opcodes/fout.c:421
msgid "invalid file name"
msgstr ""
-#: Opcodes/fout.c:165
+#: Opcodes/fout.c:166
#, c-format
msgid "error opening file '%s'"
msgstr ""
-#: Opcodes/fout.c:192
+#: Opcodes/fout.c:193
#, c-format
msgid "error opening sound file '%s'"
msgstr ""
-#: Opcodes/fout.c:429
+#: Opcodes/fout.c:430
#, c-format
msgid "cannot close '%s': not found in list of open files"
msgstr ""
-#: Opcodes/fout.c:440
+#: Opcodes/fout.c:441
#, c-format
msgid "cannot close file #%d: not a valid handle"
msgstr ""
-#: Opcodes/fout.c:447
+#: Opcodes/fout.c:448
#, c-format
msgid "file #%d (%s) is in use, will be closed when released"
msgstr ""
-#: Opcodes/fout.c:476 Opcodes/fout.c:479 Opcodes/fout.c:550 Opcodes/fout.c:553
+#: Opcodes/fout.c:477 Opcodes/fout.c:480 Opcodes/fout.c:551 Opcodes/fout.c:554
msgid "fouti: invalid file handle"
msgstr ""
@@ -6152,554 +5897,705 @@ msgstr ""
msgid "ftsave: failed to write file"
msgstr ""
-#: Opcodes/gab/gab.c:109
+#: Opcodes/gab/gab.c:111
msgid "fastab: incorrect table number"
msgstr ""
-#: Opcodes/gab/gab.c:132 Opcodes/gab/gab.c:141 Opcodes/gab/gab.c:171
+#: Opcodes/gab/gab.c:134 Opcodes/gab/gab.c:143 Opcodes/gab/gab.c:173
msgid "tabw off end"
msgstr ""
-#: Opcodes/gab/gab.c:157 Opcodes/gab/gab.c:225 Opcodes/gab/gab.c:234
+#: Opcodes/gab/gab.c:159 Opcodes/gab/gab.c:227 Opcodes/gab/gab.c:236
msgid "tab off end"
msgstr ""
-#: Opcodes/gab/gab.c:183
+#: Opcodes/gab/gab.c:185
msgid "tab_i: incorrect table number"
msgstr ""
-#: Opcodes/gab/gab.c:190
-msgid "tab_i off end"
+#: Opcodes/gab/gab.c:192
+#, c-format
+msgid "tab_i off end: table number: %d\n"
msgstr ""
-#: Opcodes/gab/gab.c:202
+#: Opcodes/gab/gab.c:204
msgid "tabw_i: incorrect table number"
msgstr ""
-#: Opcodes/gab/gab.c:209
+#: Opcodes/gab/gab.c:211
msgid "tabw_i off end"
msgstr ""
-#: Opcodes/gab/gab.c:247
+#: Opcodes/gab/gab.c:249
msgid "tab_init: incorrect table number"
msgstr ""
-#: Opcodes/gab/gab.c:316
+#: Opcodes/gab/gab.c:318
msgid "printi parameter was not a \"quoted string\""
msgstr ""
-#: Opcodes/gab/gab.c:423
+#: Opcodes/gab/gab.c:425
msgid "adsynt2: wavetable not found!"
msgstr ""
-#: Opcodes/gab/gab.c:435
+#: Opcodes/gab/gab.c:437
msgid "adsynt2: freqtable not found!"
msgstr ""
-#: Opcodes/gab/gab.c:440
+#: Opcodes/gab/gab.c:442
msgid "adsynt2: partial count is greater than freqtable size!"
msgstr ""
-#: Opcodes/gab/gab.c:449
+#: Opcodes/gab/gab.c:451
msgid "adsynt2: amptable not found!"
msgstr ""
-#: Opcodes/gab/gab.c:454
+#: Opcodes/gab/gab.c:456
msgid "adsynt2: partial count is greater than amptable size!"
msgstr ""
-#: Opcodes/gab/gab.c:499
+#: Opcodes/gab/gab.c:501
msgid "adsynt2: not initialised"
msgstr ""
-#: Opcodes/gab/gab.c:741
+#: Opcodes/gab/gab.c:743
msgid "max_k: invalid imaxflag value"
msgstr ""
-#: Opcodes/gab/hvs.c:68
+#: Opcodes/gab/hvs.c:70
msgid "hvs1: a line segment must be delimited by 2 points at least"
msgstr ""
-#: Opcodes/gab/hvs.c:150
+#: Opcodes/gab/hvs.c:152
msgid "hvs2: a square area must be delimited by 2 lines at least"
msgstr ""
-#: Opcodes/gab/hvs.c:246
+#: Opcodes/gab/hvs.c:248
msgid "hvs3: a square area must be delimited by 2 lines at least"
msgstr ""
-#: Opcodes/gab/hvs.c:389
+#: Opcodes/gab/hvs.c:390
msgid "vphaseseg: the first function is invalid or missing"
msgstr ""
-#: Opcodes/gab/hvs.c:396
+#: Opcodes/gab/hvs.c:398 Opcodes/gab/vectorial.c:2301
msgid "vphaseseg: invalid num. of elements"
msgstr ""
-#: Opcodes/gab/hvs.c:414
+#: Opcodes/gab/hvs.c:416
msgid "vphaseseg: function invalid or missing"
msgstr ""
-#: Opcodes/gab/newgabopc.c:39 Opcodes/gab/newgabopc.c:54
+#: Opcodes/gab/newgabopc.c:40 Opcodes/gab/newgabopc.c:55
msgid "vtable1: incorrect table number"
msgstr ""
-#: Opcodes/gab/newgabopc.c:359
+#: Opcodes/gab/newgabopc.c:241 Opcodes/gab/newgabopc.c:296
+msgid "copyTabElems: incorrect destination table number"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:246 Opcodes/gab/newgabopc.c:301
+msgid ""
+"copyTabElems: destination table too short or number of elements to copy too "
+"big"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:252 Opcodes/gab/newgabopc.c:306
+#, fuzzy
+msgid "copyTabElems: incorrect source table number"
+msgstr "copyTabElems: número inválido de tabla fuente"
+
+#: Opcodes/gab/newgabopc.c:257 Opcodes/gab/newgabopc.c:310
+msgid ""
+"copyTabElems: source table size less than the number of elements to copy"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:273 Opcodes/gab/newgabopc.c:318
+msgid "copyTabElems: source table too short"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:276 Opcodes/gab/newgabopc.c:321
+msgid "copyTabElems: destination table too short"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:347
+msgid "inrg: audio input is not enabled"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:362
msgid "inrg: channel number cannot be < 1 (1 is the first channel)"
msgstr ""
-#: Opcodes/gab/newgabopc.c:400
+#: Opcodes/gab/newgabopc.c:403
msgid "outrg: channel number cannot be < 1 (1 is the first channel)"
msgstr ""
-#: Opcodes/gab/newgabopc.c:439 Opcodes/gab/newgabopc.c:671
+#: Opcodes/gab/newgabopc.c:440 Opcodes/gab/newgabopc.c:574
+#: Opcodes/gab/newgabopc.c:672
msgid "invalid function"
msgstr ""
-#: Opcodes/gab/newgabopc.c:442
+#: Opcodes/gab/newgabopc.c:443
msgid "lposc: no sample rate stored in function; assuming=sr\n"
msgstr ""
-#: Opcodes/gab/newgabopc.c:673
+#: Opcodes/gab/newgabopc.c:577
+msgid "lposcil: no sample rate stored in function assuming=sr\n"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:674
msgid "lposcil: no sample rate stored in function; assuming=sr\n"
msgstr ""
-#: Opcodes/gab/sliderTable.c:45 Opcodes/gab/sliderTable.c:254
+#: Opcodes/gab/sliderTable.c:47 Opcodes/gab/sliderTable.c:256
#: Opcodes/midiops3.c:44 Opcodes/midiops3.c:146 Opcodes/midiops3.c:259
#: Opcodes/midiops3.c:317 Opcodes/midiops3.c:413
msgid "illegal channel"
msgstr ""
-#: Opcodes/gab/sliderTable.c:65 Opcodes/gab/sliderTable.c:277
+#: Opcodes/gab/sliderTable.c:67 Opcodes/gab/sliderTable.c:280
#: Opcodes/midiops3.c:58 Opcodes/midiops3.c:162 Opcodes/midiops3.c:273
#, c-format
msgid "illegal control number at position n.%d"
msgstr ""
-#: Opcodes/gab/sliderTable.c:74
+#: Opcodes/gab/sliderTable.c:76
#, c-format
msgid ""
"sliderXtable: illegal initvalue at position %d. When using table indexing, "
"the init range is 0 to 1"
msgstr ""
-#: Opcodes/gab/sliderTable.c:84 Opcodes/gab/sliderTable.c:284
-#: Opcodes/gab/sliderTable.c:509 Opcodes/midiops3.c:64 Opcodes/midiops3.c:168
+#: Opcodes/gab/sliderTable.c:86 Opcodes/gab/sliderTable.c:287
+#: Opcodes/gab/sliderTable.c:513 Opcodes/midiops3.c:64 Opcodes/midiops3.c:168
#: Opcodes/midiops3.c:347
#, c-format
msgid "illegal initvalue at position n.%d"
msgstr ""
-#: Opcodes/gab/sliderTable.c:96 Opcodes/gab/sliderTable.c:296
+#: Opcodes/gab/sliderTable.c:98 Opcodes/gab/sliderTable.c:299
msgid "sliderXtable: zero is illegal in exponential operations"
msgstr ""
-#: Opcodes/gab/sliderTable.c:312
+#: Opcodes/gab/sliderTable.c:315
#, c-format
msgid ""
"sliderXtable: illegal initvalue at position %d. When using table indexing, "
"the init range is 0 to 1"
msgstr ""
-#: Opcodes/gab/sliderTable.c:565 Opcodes/midiops2.c:321 Opcodes/midiops2.c:359
+#: Opcodes/gab/sliderTable.c:569 Opcodes/midiops2.c:321 Opcodes/midiops2.c:359
#: Opcodes/midiops2.c:391 Opcodes/midiops2.c:440 Opcodes/midiops2.c:475
#: Opcodes/midiops2.c:517 Opcodes/midiops2.c:532 Opcodes/midiops2.c:551
msgid "illegal midi channel"
msgstr ""
-#: Opcodes/gab/tabmorph.c:42
+#: Opcodes/gab/tabmorph.c:43
msgid "tabmorph: invalid table number"
msgstr ""
-#: Opcodes/gab/tabmorph.c:46
+#: Opcodes/gab/tabmorph.c:47
msgid "tabmorph: all tables must have the same length!"
msgstr ""
-#: Opcodes/gab/vectorial.c:33
+#: Opcodes/gab/vectorial.c:35
msgid "mtablei: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:63 Opcodes/gab/vectorial.c:83
-#: Opcodes/gab/vectorial.c:133 Opcodes/gab/vectorial.c:200
+#: Opcodes/gab/vectorial.c:65 Opcodes/gab/vectorial.c:85
+#: Opcodes/gab/vectorial.c:135 Opcodes/gab/vectorial.c:202
msgid "mtable: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:185
+#: Opcodes/gab/vectorial.c:187
msgid "mtabi: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:252
+#: Opcodes/gab/vectorial.c:254
msgid "mtablewi: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:268 Opcodes/gab/vectorial.c:288
-#: Opcodes/gab/vectorial.c:317 Opcodes/gab/vectorial.c:362
-#: Opcodes/gab/vectorial.c:406
+#: Opcodes/gab/vectorial.c:270 Opcodes/gab/vectorial.c:290
+#: Opcodes/gab/vectorial.c:319 Opcodes/gab/vectorial.c:364
+#: Opcodes/gab/vectorial.c:408
msgid "mtabw: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:348
+#: Opcodes/gab/vectorial.c:350
msgid "mtabwi: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:380
+#: Opcodes/gab/vectorial.c:382
msgid "mtablew: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:454 Opcodes/gab/vectorial.c:513
+#: Opcodes/gab/vectorial.c:457 Opcodes/gab/vectorial.c:516
#, c-format
msgid "vadd_i: invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:470
+#: Opcodes/gab/vectorial.c:473
msgid "vadd_i: ifn length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:497
+#: Opcodes/gab/vectorial.c:500
msgid "vadd: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:529
+#: Opcodes/gab/vectorial.c:532
msgid "vmult_i: ifn length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:556
+#: Opcodes/gab/vectorial.c:559
msgid "vmult: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:572
+#: Opcodes/gab/vectorial.c:575
#, c-format
msgid "vpow_i: invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:589
+#: Opcodes/gab/vectorial.c:592
msgid "vpow_i: ifn length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:617
+#: Opcodes/gab/vectorial.c:620
msgid "vpow: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:633
+#: Opcodes/gab/vectorial.c:636
#, c-format
msgid "vexp_i: invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:649
+#: Opcodes/gab/vectorial.c:652
msgid "vexp_i: ifn length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:676
+#: Opcodes/gab/vectorial.c:679
msgid "vexp: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:694
+#: Opcodes/gab/vectorial.c:697
#, c-format
msgid "vectorsop: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:699
+#: Opcodes/gab/vectorial.c:702
#, c-format
msgid "vectorsop: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:738
+#: Opcodes/gab/vectorial.c:742
msgid "vcopy: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:756
+#: Opcodes/gab/vectorial.c:760
msgid "vcopy: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:783
+#: Opcodes/gab/vectorial.c:787
#, c-format
msgid "vcopy_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:788
+#: Opcodes/gab/vectorial.c:792
#, c-format
msgid "vcopy_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:810
+#: Opcodes/gab/vectorial.c:814
msgid "vcopy_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:827
+#: Opcodes/gab/vectorial.c:831
msgid "vcopy_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:866
+#: Opcodes/gab/vectorial.c:870
msgid "vaddv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:885
+#: Opcodes/gab/vectorial.c:889
msgid "vaddv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:911
+#: Opcodes/gab/vectorial.c:915
#, c-format
msgid "vaddv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:916
+#: Opcodes/gab/vectorial.c:920
#, c-format
msgid "vaddv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:938
+#: Opcodes/gab/vectorial.c:942
msgid "vaddv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:956
+#: Opcodes/gab/vectorial.c:960
msgid "vaddv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:987
+#: Opcodes/gab/vectorial.c:991
msgid "vsubv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1006
+#: Opcodes/gab/vectorial.c:1010
msgid "vsubv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1033
+#: Opcodes/gab/vectorial.c:1037
#, c-format
msgid "vsubv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1038
+#: Opcodes/gab/vectorial.c:1042
#, c-format
msgid "vsubv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1060
+#: Opcodes/gab/vectorial.c:1064
msgid "vsubv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1078
+#: Opcodes/gab/vectorial.c:1082
msgid "vsubv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1115
+#: Opcodes/gab/vectorial.c:1119
msgid "vmultv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1134
+#: Opcodes/gab/vectorial.c:1138
msgid "vmultv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1161
+#: Opcodes/gab/vectorial.c:1165
#, c-format
msgid "vmultv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1166
+#: Opcodes/gab/vectorial.c:1170
#, c-format
msgid "vmultv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1188
+#: Opcodes/gab/vectorial.c:1192
msgid "vmultv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1205
+#: Opcodes/gab/vectorial.c:1209
msgid "vmultv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1242
+#: Opcodes/gab/vectorial.c:1246
msgid "vdivv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1261
+#: Opcodes/gab/vectorial.c:1265
msgid "vdivv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1288
+#: Opcodes/gab/vectorial.c:1292
#, c-format
msgid "vdivv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1293
+#: Opcodes/gab/vectorial.c:1297
#, c-format
msgid "vdivv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1315
+#: Opcodes/gab/vectorial.c:1319
msgid "vdivv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1333
+#: Opcodes/gab/vectorial.c:1337
msgid "vdivv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1370
+#: Opcodes/gab/vectorial.c:1374
msgid "vpowv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1389
+#: Opcodes/gab/vectorial.c:1393
msgid "vpowv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1416
+#: Opcodes/gab/vectorial.c:1420
#, c-format
msgid "vpowv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1421
+#: Opcodes/gab/vectorial.c:1425
#, c-format
msgid "vpowv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1443
+#: Opcodes/gab/vectorial.c:1447
msgid "vpowv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1460
+#: Opcodes/gab/vectorial.c:1464
msgid "vpowv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1497
+#: Opcodes/gab/vectorial.c:1501
msgid "vexpv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1516
+#: Opcodes/gab/vectorial.c:1520
msgid "vexpv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1543
+#: Opcodes/gab/vectorial.c:1547
#, c-format
msgid "vexpv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1548
+#: Opcodes/gab/vectorial.c:1552
#, c-format
msgid "vexpv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1570
+#: Opcodes/gab/vectorial.c:1574
msgid "vexpv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1588
+#: Opcodes/gab/vectorial.c:1592
msgid "vexpv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1625
+#: Opcodes/gab/vectorial.c:1629
msgid "vmap: Error: ifn1 and ifn2 can not be the same"
msgstr ""
-#: Opcodes/gab/vectorial.c:1630
+#: Opcodes/gab/vectorial.c:1634
#, c-format
msgid "vmap: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1635
+#: Opcodes/gab/vectorial.c:1639
#, c-format
msgid "vmap: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1657
+#: Opcodes/gab/vectorial.c:1661
msgid "vmap: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1674
+#: Opcodes/gab/vectorial.c:1678
msgid "vmap: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1870
+#: Opcodes/gab/vectorial.c:1698
+#, fuzzy
+msgid "vectorop: invalid num of elements"
+msgstr "vectorop : número inválido de argumentos"
+
+#: Opcodes/gab/vectorial.c:1727
+#, fuzzy
+msgid "vport: invalid table length or num of elements"
+msgstr "vport : tamaño inválido de tabla"
+
+#: Opcodes/gab/vectorial.c:1730
+#, fuzzy
+msgid "vport: invalid table"
+msgstr "vport : tabla inválida"
+
+#: Opcodes/gab/vectorial.c:1735
+msgid "vport: invalid init table length or num of elements"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1738
+#, fuzzy
+msgid "vport: invalid init table"
+msgstr "vport : tabla inválida"
+
+#: Opcodes/gab/vectorial.c:1875
#, c-format
msgid "vrandh: Seeding from current time %lu\n"
msgstr ""
-#: Opcodes/gab/vectorial.c:1968
+#: Opcodes/gab/vectorial.c:1888
+#, fuzzy
+msgid "vrandh: Invalid table."
+msgstr "vrandh: tabla inválida"
+
+#: Opcodes/gab/vectorial.c:1891
+msgid "vrandh: idstoffset is greater than table length."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1896
+msgid "randh: Table length exceeded, last elements discarded."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1975
#, c-format
msgid "vrandi: Seeding from current time %lu\n"
msgstr ""
-#: Opcodes/grain4.c:57
+#: Opcodes/gab/vectorial.c:1987
+#, fuzzy
+msgid "vrandi: Invalid table."
+msgstr "vrandi : tabla inválida"
+
+#: Opcodes/gab/vectorial.c:1990
+msgid "vrandi: idstoffset is greater thantable length."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1995
+msgid "vrandi: Table length exceeded, last elements discarded."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2077 Opcodes/gab/vectorial.c:2084
+#: Opcodes/gab/vectorial.c:2091
+#, fuzzy
+msgid "vecdelay: invalid num of elements"
+msgstr "vecdelay : número inválido de argumentos"
+
+#: Opcodes/gab/vectorial.c:2079
+#, fuzzy
+msgid "vecdly: invalid output table"
+msgstr "vecdly : tabla de modulador inválida"
+
+#: Opcodes/gab/vectorial.c:2086
+#, fuzzy
+msgid "vecdly: invalid input table"
+msgstr "vecdly : tabla de ventana inválida"
+
+#: Opcodes/gab/vectorial.c:2093
+#, fuzzy
+msgid "vecdly: invalid delay table"
+msgstr "vecdly : tabla de modulador inválida"
+
+#: Opcodes/gab/vectorial.c:2138
+#, fuzzy
+msgid "vecdly: not initialised"
+msgstr "vecdly : no ha sido inicializado"
+
+#: Opcodes/gab/vectorial.c:2181
+msgid "vlinseg/vexpseg: invalid num. of elements"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2223 Opcodes/vpvoc.c:118
+msgid "tableseg: not initialised"
+msgstr "tableseg: no ha sido inicializado"
+
+#: Opcodes/gab/vectorial.c:2253 Opcodes/vpvoc.c:146
+msgid "tablexseg: not initialised"
+msgstr "tablexseg: no ha sido inicializado"
+
+#: Opcodes/gab/vectorial.c:2406
+#, fuzzy
+msgid "vdelayk: not initialised"
+msgstr "vdelayk: no ha sido inicializado"
+
+#: Opcodes/gab/vectorial.c:2439 Opcodes/gab/vectorial.c:2445
+#, fuzzy
+msgid "cella: invalid num of elements"
+msgstr "cella: número inválido de argumentos"
+
+#: Opcodes/gab/vectorial.c:2441
+#, fuzzy
+msgid "cella: invalid output table"
+msgstr "cella: tabla de modulador inválida"
+
+#: Opcodes/gab/vectorial.c:2448
+#, fuzzy
+msgid "cella: invalid initial state table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2452
+#, fuzzy
+msgid "cella: invalid rule table"
+msgstr "cella: tabla de modulador inválida"
+
+#: Opcodes/grain4.c:59
msgid "granule_set: Unable to find function table"
msgstr ""
-#: Opcodes/grain4.c:67
+#: Opcodes/grain4.c:69
msgid "granule_set: Unable to find function table for envelope"
msgstr ""
-#: Opcodes/grain4.c:73
+#: Opcodes/grain4.c:75
msgid "granule_set: Too many voices"
msgstr ""
-#: Opcodes/grain4.c:76
+#: Opcodes/grain4.c:78
msgid "granule_set: iratio must be greater then 0"
msgstr ""
-#: Opcodes/grain4.c:80
+#: Opcodes/grain4.c:82
msgid "granule_set: imode must be -1, 0 or +1"
msgstr ""
-#: Opcodes/grain4.c:84
+#: Opcodes/grain4.c:86
msgid "granule_set: Illegal ithd, must be greater than zero"
msgstr ""
-#: Opcodes/grain4.c:89
+#: Opcodes/grain4.c:91
msgid "granule_set: ipshift must be integer between 0 and 4"
msgstr ""
-#: Opcodes/grain4.c:94
+#: Opcodes/grain4.c:96
msgid "granule_set: Not enough voices for the number of pitches"
msgstr ""
-#: Opcodes/grain4.c:101
+#: Opcodes/grain4.c:103
msgid "granule_set: ipitch1 must be greater then zero"
msgstr ""
-#: Opcodes/grain4.c:106
+#: Opcodes/grain4.c:108
msgid "granule_set: ipitch2 must be greater then zero"
msgstr ""
-#: Opcodes/grain4.c:111
+#: Opcodes/grain4.c:113
msgid "granule_set: ipitch3 must be greater then zero"
msgstr ""
-#: Opcodes/grain4.c:116
+#: Opcodes/grain4.c:118
msgid "granule_set: ipitch4 must be greater then zero"
msgstr ""
-#: Opcodes/grain4.c:121
+#: Opcodes/grain4.c:123
msgid "granule_set: must be positive and less than function table length"
msgstr ""
-#: Opcodes/grain4.c:125
+#: Opcodes/grain4.c:127
msgid "granule_set: igskip_os must be greater then 0"
msgstr ""
-#: Opcodes/grain4.c:134
+#: Opcodes/grain4.c:136
msgid "granule_set: kgap must be greater then 0"
msgstr ""
-#: Opcodes/grain4.c:138
+#: Opcodes/grain4.c:140
#, c-format
msgid "granule_set: igap_os must be 0%% to 100%%"
msgstr ""
-#: Opcodes/grain4.c:142
+#: Opcodes/grain4.c:144
msgid "granule_set: kgsize must be greater then 0"
msgstr ""
-#: Opcodes/grain4.c:146
+#: Opcodes/grain4.c:148
#, c-format
msgid "granule_set: igsize_os must be 0%% to 100%%"
msgstr ""
-#: Opcodes/grain4.c:152
+#: Opcodes/grain4.c:154
msgid "granule_set: Illegal value of iatt and/or idec"
msgstr ""
-#: Opcodes/grain4.c:236
+#: Opcodes/grain4.c:238
msgid "granule_set: Illegal combination of igskip and ilength"
msgstr ""
-#: Opcodes/grain4.c:243
+#: Opcodes/grain4.c:245
#, c-format
msgid ""
"granule_set: WARNING * ilength may be too short * \n"
@@ -6709,7 +6605,7 @@ msgid ""
"ilength is %f Sec, kgsize is %f Sec\n"
msgstr ""
-#: Opcodes/grain4.c:418
+#: Opcodes/grain4.c:419
msgid "grain4: not initialised"
msgstr "grain4: no ha sido inicializado"
@@ -6721,92 +6617,88 @@ msgstr ""
msgid "grain: not initialised"
msgstr "grain: no ha sido inicializado"
-#: Opcodes/harmon.c:224
+#: Opcodes/harmon.c:226
msgid "harm signal has positive lead\n"
msgstr ""
-#: Opcodes/harmon.c:231
+#: Opcodes/harmon.c:233
msgid "harm signal has negative lead\n"
msgstr ""
-#: Opcodes/harmon.c:361
+#: Opcodes/harmon.c:363
msgid "harmon234: out of range\n"
msgstr ""
-#: Opcodes/hrtferX.c:79
+#: Opcodes/hrtferX.c:81
#, c-format
msgid ""
"Orchestra sampling rate is not compatible with HRTF.\n"
"Should be %d...exiting."
msgstr ""
-#: Opcodes/hrtferX.c:87
+#: Opcodes/hrtferX.c:89
msgid ""
"\n"
"Last argument must be the string 'HRTFcompact' ...correcting.\n"
msgstr ""
-#: Opcodes/hrtferX.c:489
+#: Opcodes/hrtferX.c:494
msgid "hrtfer: not initialised"
msgstr "hrtfer: no ha sido inicializado"
-#: Opcodes/hrtfopcodes.c:232
+#: Opcodes/hrtfopcodes.c:260 Opcodes/hrtfopcodes.c:1434
+#: Opcodes/hrtfearly.c:300 Opcodes/hrtfreverb.c:257
#, c-format
msgid ""
"\n"
-"Orchestra sampling rate is not compatible with HRTF data files\n"
-"Should be %.0f, see Csound help for object\n"
+"\n"
+"WARNING!!:\n"
+"Orchestra SR not compatible with HRTF processing SR of: %.0f\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:251 Opcodes/hrtfopcodes.c:275
-#: Opcodes/hrtfopcodes.c:298 Opcodes/hrtfopcodes.c:1257
-#: Opcodes/hrtfopcodes.c:1280 Opcodes/hrtfopcodes.c:1303
-#: Opcodes/hrtfopcodes.c:1854 Opcodes/hrtfopcodes.c:1876
-#: Opcodes/hrtfopcodes.c:1898
+#: Opcodes/hrtfopcodes.c:287 Opcodes/hrtfopcodes.c:1461
+#: Opcodes/hrtfopcodes.c:2071 Opcodes/hrtfearly.c:327 Opcodes/hrtfreverb.c:300
msgid ""
"\n"
"\n"
"\n"
-"cannot load left data file, exiting\n"
+"Cannot load left data file, exiting\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:259 Opcodes/hrtfopcodes.c:283
-#: Opcodes/hrtfopcodes.c:306 Opcodes/hrtfopcodes.c:1265
-#: Opcodes/hrtfopcodes.c:1288 Opcodes/hrtfopcodes.c:1311
-#: Opcodes/hrtfopcodes.c:1862 Opcodes/hrtfopcodes.c:1884
-#: Opcodes/hrtfopcodes.c:1906
+#: Opcodes/hrtfopcodes.c:294 Opcodes/hrtfopcodes.c:1468
+#: Opcodes/hrtfopcodes.c:2078 Opcodes/hrtfearly.c:334 Opcodes/hrtfreverb.c:306
msgid ""
"\n"
"\n"
"\n"
-"cannot load right data file, exiting\n"
+"Cannot load right data file, exiting\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:313 Opcodes/hrtfopcodes.c:1912
+#: Opcodes/hrtfopcodes.c:690 Opcodes/hrtfearly.c:1241
msgid ""
"\n"
-"\n"
-"\n"
-" Sampling rate not supported, exiting\n"
+"WARNING: fades are overlapping: this could lead to noise: reduce fade size "
+"or change trajectory\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:600
+#: Opcodes/hrtfopcodes.c:2052
+#, c-format
msgid ""
-"fades are overlapping: this could lead to noise: reduce fade size or change "
-"trajectory\n"
+"\n"
+"\n"
+"WARNING!!:\n"
+"Orchestra SR not compatiblewith HRTF processing SR of: %.0f\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:1239 Opcodes/hrtfopcodes.c:1837
-#, c-format
+#: Opcodes/hrtfreverb.c:832
msgid ""
-"Orchestra sampling rate is not compatible with HRTF data files\n"
-"Should be %.0f, see Csound help for object\n"
"\n"
+"warning, approaching instability, fixed with a flat late reverb!"
msgstr ""
#: Opcodes/ifd.c:74
@@ -6832,10 +6724,9 @@ msgid "imageload: file %s is not in PNG format.\n"
msgstr ""
#: Opcodes/imageOpcodes.c:119 Opcodes/imageOpcodes.c:126
-#: Opcodes/imageOpcodes.c:134 Opcodes/imageOpcodes.c:165
-#: Opcodes/imageOpcodes.c:174 Opcodes/imageOpcodes.c:188
-#: Opcodes/imageOpcodes.c:291 Opcodes/imageOpcodes.c:298
-#: Opcodes/imageOpcodes.c:311
+#: Opcodes/imageOpcodes.c:165 Opcodes/imageOpcodes.c:174
+#: Opcodes/imageOpcodes.c:188 Opcodes/imageOpcodes.c:291
+#: Opcodes/imageOpcodes.c:298 Opcodes/imageOpcodes.c:311
msgid "imageload: out of memory.\n"
msgstr ""
@@ -6855,62 +6746,62 @@ msgid ""
"Status: %d\n"
msgstr ""
-#: Opcodes/jacko.cpp:543
+#: Opcodes/jacko.cpp:545
#, c-format
msgid "Created Jack client \"%s\" for Jack server \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:548
+#: Opcodes/jacko.cpp:551
#, c-format
msgid "Jack buffer size %d != Csound ksmps %d, exiting...\n"
msgstr ""
-#: Opcodes/jacko.cpp:556
+#: Opcodes/jacko.cpp:559
#, c-format
msgid "Jack sampling rate %d != Csound sr %d, exiting...\n"
msgstr ""
-#: Opcodes/jacko.cpp:567
+#: Opcodes/jacko.cpp:570
#, c-format
msgid "Activated Jack client \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:571
+#: Opcodes/jacko.cpp:574
#, c-format
msgid "Failed to activate Jack client \"%s\": status %d.\n"
msgstr ""
-#: Opcodes/jacko.cpp:586
+#: Opcodes/jacko.cpp:589
msgid "BEGAN JackoState::close()...\n"
msgstr ""
-#: Opcodes/jacko.cpp:622
+#: Opcodes/jacko.cpp:629
msgid "ENDED JackoState::close().\n"
msgstr ""
-#: Opcodes/jacko.cpp:876
+#: Opcodes/jacko.cpp:892
#, c-format
msgid "Failed to set Jack freewheeling mode to \"%s\": error %d.\n"
msgstr ""
-#: Opcodes/jacko.cpp:878
+#: Opcodes/jacko.cpp:895
#, c-format
msgid "Set Jack freewheeling mode to \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:893
+#: Opcodes/jacko.cpp:911
#, c-format
msgid "Turned Jack connections \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:934 Opcodes/jacko.cpp:1034 Opcodes/jacko.cpp:1134
-#: Opcodes/jacko.cpp:1200
+#: Opcodes/jacko.cpp:955 Opcodes/jacko.cpp:1062 Opcodes/jacko.cpp:1169
+#: Opcodes/jacko.cpp:1241
#, c-format
msgid "Could not create Jack port \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:946 Opcodes/jacko.cpp:1046 Opcodes/jacko.cpp:1146
-#: Opcodes/jacko.cpp:1212
+#: Opcodes/jacko.cpp:969 Opcodes/jacko.cpp:1077 Opcodes/jacko.cpp:1184
+#: Opcodes/jacko.cpp:1255
#, c-format
msgid "Could not create Jack connection from \"%s\" to \"%s\": status %d.\n"
msgstr ""
@@ -6949,27 +6840,27 @@ msgstr ""
msgid "lorisread cannot load %s"
msgstr ""
-#: Opcodes/loscilx.c:74 Opcodes/loscilx.c:178
+#: Opcodes/loscilx.c:76 Opcodes/loscilx.c:180
#, c-format
msgid "could not load '%s'"
msgstr ""
-#: Opcodes/loscilx.c:88 Opcodes/loscilx.c:258
+#: Opcodes/loscilx.c:90 Opcodes/loscilx.c:260
#, c-format
msgid "invalid loop mode: %d"
msgstr ""
-#: Opcodes/loscilx.c:170
+#: Opcodes/loscilx.c:172
msgid "loscilx: invalid number of output arguments"
msgstr ""
-#: Opcodes/loscilx.c:190 Opcodes/loscilx.c:219 Opcodes/pvlock.c:94
-#: Opcodes/pvlock.c:296 Opcodes/pvsbasic.c:460
+#: Opcodes/loscilx.c:192 Opcodes/loscilx.c:221 Opcodes/pvlock.c:118
+#: Opcodes/pvlock.c:320 Opcodes/pvsbasic.c:460
msgid ""
"number of output arguments inconsistent with number of sound file channels"
msgstr ""
-#: Opcodes/loscilx.c:665
+#: Opcodes/loscilx.c:667
msgid "loscilx: not initialised"
msgstr "loscilx: no ha sido inicializado"
@@ -6977,11 +6868,11 @@ msgstr "loscilx: no ha sido inicializado"
msgid "illegal order num. (min 1, max 10)"
msgstr ""
-#: Opcodes/mandolin.c:80
+#: Opcodes/mandolin.c:81
msgid "No table for Mandolin"
msgstr ""
-#: Opcodes/mandolin.c:90
+#: Opcodes/mandolin.c:91
msgid "No base frequency for mandolin"
msgstr ""
@@ -7012,27 +6903,27 @@ msgstr ""
msgid "illegal lsb control number at position n.%d"
msgstr ""
-#: Opcodes/modal4.c:45
+#: Opcodes/modal4.c:46
msgid "No table for Modal4 case"
msgstr ""
-#: Opcodes/modal4.c:245
+#: Opcodes/modal4.c:246
msgid "No table for Marimba strike"
msgstr ""
-#: Opcodes/modal4.c:284
+#: Opcodes/modal4.c:285
msgid "striking three times here!!!\n"
msgstr ""
-#: Opcodes/modal4.c:289
+#: Opcodes/modal4.c:290
msgid "striking twice here!!\n"
msgstr ""
-#: Opcodes/modal4.c:359
+#: Opcodes/modal4.c:360
msgid "No table for Vibraphone strike"
msgstr ""
-#: Opcodes/modal4.c:440
+#: Opcodes/modal4.c:441
msgid "No table for Agogobell strike"
msgstr ""
@@ -7040,12 +6931,12 @@ msgstr ""
msgid "modmatrix: "
msgstr ""
-#: Opcodes/mp3in.c:92 Opcodes/mp3in.c:230
+#: Opcodes/mp3in.c:93 Opcodes/mp3in.c:231
#, c-format
msgid "mp3in: %s: failed to open file"
msgstr "mp3in: %s: no se puede abrir el archivo"
-#: Opcodes/mp3in.c:139
+#: Opcodes/mp3in.c:140
#, fuzzy, c-format
msgid "mp3in: file sample rate (%d) != orchestra sr (%d)\n"
msgstr ""
@@ -7282,7 +7173,7 @@ msgstr ""
#: Opcodes/OSC.c:240
#, fuzzy, c-format
msgid "ftable %.2f does not exist"
-msgstr "la tabla-f (ftable) no existe"
+msgstr "la tabla-f (ftable) %.2f no existe"
#: Opcodes/OSC.c:249
#, c-format
@@ -7334,7 +7225,7 @@ msgstr ""
msgid "No open glove"
msgstr ""
-#: Opcodes/pan2.c:43
+#: Opcodes/pan2.c:45
msgid "Unknown panning type"
msgstr ""
@@ -7350,192 +7241,196 @@ msgstr ""
msgid "partikkelsync: could not find opcode id"
msgstr ""
-#: Opcodes/physmod.c:121
+#: Opcodes/physmod.c:122
msgid "No table for Clarinet"
msgstr ""
-#: Opcodes/physmod.c:129
+#: Opcodes/physmod.c:130
msgid "No base frequency for clarinet -- assuming 50Hz\n"
msgstr ""
-#: Opcodes/physmod.c:283
+#: Opcodes/physmod.c:284
msgid "No table for Flute"
msgstr ""
-#: Opcodes/physmod.c:291
+#: Opcodes/physmod.c:292
msgid "No base frequency for flute -- assumed to be 50Hz\n"
msgstr ""
-#: Opcodes/physmod.c:481
+#: Opcodes/physmod.c:482
msgid "No table for wgbow vibrato"
msgstr ""
-#: Opcodes/physmod.c:689
+#: Opcodes/physmod.c:490
+msgid "unknown lowest frequency for bowed string -- assuming 50Hz\n"
+msgstr ""
+
+#: Opcodes/physmod.c:690
msgid "DlineA not initialised"
msgstr "DlineA no ha sido inicializado"
-#: Opcodes/physmod.c:756
+#: Opcodes/physmod.c:757
msgid "No table for Brass"
msgstr ""
-#: Opcodes/physmod.c:765
+#: Opcodes/physmod.c:766
msgid "No base frequency for brass -- assumed to be 50Hz\n"
msgstr ""
-#: Opcodes/physutil.c:137 Opcodes/physutil.c:312 Opcodes/physutil.c:324
-#: Opcodes/physutil.c:345
+#: Opcodes/physutil.c:138 Opcodes/physutil.c:313 Opcodes/physutil.c:325
+#: Opcodes/physutil.c:346
msgid "negative rates not allowed!!, correcting\n"
msgstr ""
-#: Opcodes/physutil.c:186
+#: Opcodes/physutil.c:187
#, c-format
msgid "Envelope: value=%f target=%f rate=%f state=%d\n"
msgstr ""
-#: Opcodes/physutil.c:335
+#: Opcodes/physutil.c:336
msgid "Sustain level out of range!!, correcting\n"
msgstr ""
-#: Opcodes/physutil.c:356 Opcodes/physutil.c:366 Opcodes/physutil.c:376
+#: Opcodes/physutil.c:357 Opcodes/physutil.c:367 Opcodes/physutil.c:377
msgid "negative times not allowed!!, correcting\n"
msgstr ""
-#: Opcodes/pitch0.c:37
+#: Opcodes/pitch0.c:38
#, c-format
msgid "Muting new instances of instr %d\n"
msgstr ""
-#: Opcodes/pitch0.c:40
+#: Opcodes/pitch0.c:41
#, c-format
msgid "Allowing instrument %d to start\n"
msgstr ""
-#: Opcodes/pitch.c:84 Opcodes/spectra.c:78
+#: Opcodes/pitch.c:85 Opcodes/spectra.c:80
msgid "illegal iocts"
msgstr ""
-#: Opcodes/pitch.c:86 Opcodes/spectra.c:80
+#: Opcodes/pitch.c:87 Opcodes/spectra.c:82
msgid "illegal ifrqs"
msgstr ""
-#: Opcodes/pitch.c:180 Opcodes/spectra.c:584
+#: Opcodes/pitch.c:181 Opcodes/spectra.c:586
msgid "illegal no of partials"
msgstr ""
-#: Opcodes/pitch.c:205
+#: Opcodes/pitch.c:206
msgid "per octave rolloff too steep"
msgstr ""
-#: Opcodes/pitch.c:219 Opcodes/spectra.c:625
+#: Opcodes/pitch.c:220 Opcodes/spectra.c:627
msgid "illegal lo-hi values"
msgstr ""
-#: Opcodes/pitch.c:454
+#: Opcodes/pitch.c:455
msgid "pitch: not initialised"
msgstr "pitch: no ha sido inicializado"
-#: Opcodes/pitch.c:463
+#: Opcodes/pitch.c:464
msgid "Must have even number of arguments in mac\n"
msgstr ""
-#: Opcodes/pitch.c:552
+#: Opcodes/pitch.c:553
msgid "clockread: clock still running, call clockoff first"
msgstr ""
-#: Opcodes/pitch.c:578
+#: Opcodes/pitch.c:579
msgid "adsynt: wavetable not found!"
msgstr ""
-#: Opcodes/pitch.c:591
+#: Opcodes/pitch.c:592
msgid "adsynt: freqtable not found!"
msgstr ""
-#: Opcodes/pitch.c:596
+#: Opcodes/pitch.c:597
msgid "adsynt: partial count is greater than freqtable size!"
msgstr ""
-#: Opcodes/pitch.c:604
+#: Opcodes/pitch.c:605
msgid "adsynt: amptable not found!"
msgstr ""
-#: Opcodes/pitch.c:609
+#: Opcodes/pitch.c:610
msgid "adsynt: partial count is greater than amptable size!"
msgstr ""
-#: Opcodes/pitch.c:640
+#: Opcodes/pitch.c:641
msgid "adsynt: not initialised"
msgstr "adsynt: no ha sido inicializado"
-#: Opcodes/pitch.c:716
+#: Opcodes/pitch.c:717
msgid "hsboscil: not initialised"
msgstr "hsboscil: no ha sido inicializado"
-#: Opcodes/pitch.c:799
+#: Opcodes/pitch.c:800
msgid "pitchamdf: maxcps must be > mincps !"
msgstr ""
-#: Opcodes/pitch.c:945
+#: Opcodes/pitch.c:946
msgid "pitchamdf: not initialised"
msgstr "pitchamdf: no ha sido inicializado"
-#: Opcodes/pitch.c:1125 Opcodes/pitch.c:1152
+#: Opcodes/pitch.c:1126 Opcodes/pitch.c:1153
msgid "phasorbnk: not initialised"
msgstr "phasorbnk: no ha sido inicializado"
-#: Opcodes/pitch.c:1214
+#: Opcodes/pitch.c:1215
msgid "pinkish: Invalid method code"
msgstr ""
-#: Opcodes/pitch.c:1225
+#: Opcodes/pitch.c:1226
msgid "pinkish: Filter method requires a-rate (noise) input"
msgstr ""
-#: Opcodes/pitch.c:1348
+#: Opcodes/pitch.c:1349
#, c-format
msgid ""
"pinkish: Gardner method requires 4-%d bands. Default %ld substituted for "
"%d.\n"
msgstr ""
-#: Opcodes/pitch.c:1731
+#: Opcodes/pitch.c:1733
msgid "Incorrect argument count in transeg"
msgstr ""
-#: Opcodes/pitch.c:1782
+#: Opcodes/pitch.c:1784
msgid "Incorrect argument count in transegb"
msgstr ""
-#: Opcodes/pitch.c:1832 Opcodes/pitch.c:1971
+#: Opcodes/pitch.c:1834 Opcodes/pitch.c:1977
msgid "Error: transeg not initialised (krate)\n"
msgstr "Error: transeg no ha sido inicializado (krate)\n"
-#: Opcodes/pitch.c:1867 Opcodes/pitch.c:2013
+#: Opcodes/pitch.c:1869 Opcodes/pitch.c:2027
msgid "transeg: not initialised (arate)\n"
msgstr "transeg: no ha sido inicializado (arate)\n"
-#: Opcodes/pitch.c:1921
+#: Opcodes/pitch.c:1924
msgid "Incorrect argument count in transegr"
msgstr ""
-#: Opcodes/pitch.c:2269
+#: Opcodes/pitch.c:2294
msgid "median: not initialised (arate)\n"
msgstr "median: no ha sido inicializado (arate)\n"
-#: Opcodes/pitch.c:2273 Opcodes/pitch.c:2321
+#: Opcodes/pitch.c:2298 Opcodes/pitch.c:2345
#, c-format
msgid "median: window (%d)larger than maximum(%d); truncated"
msgstr ""
-#: Opcodes/pitch.c:2317
+#: Opcodes/pitch.c:2341
msgid "median: not initialised (krate)\n"
msgstr "median no ha sido inicializado (krate)\n"
-#: Opcodes/pitchtrack.c:369
+#: Opcodes/pitchtrack.c:370
#, c-format
msgid "ptrack: FFT size out of range; using %d\n"
msgstr ""
-#: Opcodes/pitchtrack.c:382
+#: Opcodes/pitchtrack.c:383
#, c-format
msgid "ptrack: FFT size not a power of 2; using %d\n"
msgstr ""
@@ -7553,7 +7448,7 @@ msgstr ""
msgid "Error: %s, %s"
msgstr ""
-#: Opcodes/ppp.c:20 Opcodes/pvlock.c:454 Opcodes/pvsband.c:46
+#: Opcodes/ppp.c:20 Opcodes/pvlock.c:478 Opcodes/pvsband.c:46
#: Opcodes/pvsbasic.c:575 Opcodes/pvsbasic.c:880 Opcodes/pvsbasic.c:1080
#: Opcodes/pvsbasic.c:1180 Opcodes/pvsbasic.c:1395 Opcodes/pvsbasic.c:1593
#: Opcodes/pvsbasic.c:1756 Opcodes/pvslock.c:20
@@ -7572,62 +7467,62 @@ msgstr ""
msgid "psynth: function table not found\n"
msgstr ""
-#: Opcodes/psynth.c:569 Opcodes/psynth.c:662
+#: Opcodes/psynth.c:567 Opcodes/psynth.c:660
msgid "Input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:767
+#: Opcodes/psynth.c:765
msgid "trsplit: input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:863 Opcodes/psynth.c:1027
+#: Opcodes/psynth.c:861 Opcodes/psynth.c:1023
msgid "trmix: first input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:868 Opcodes/psynth.c:1032
+#: Opcodes/psynth.c:866 Opcodes/psynth.c:1028
msgid "trmix: second input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:943
+#: Opcodes/psynth.c:939
msgid "trfil: input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:948
+#: Opcodes/psynth.c:944
msgid "trfil: could not find function table\n"
msgstr ""
-#: Opcodes/psynth.c:1135
+#: Opcodes/psynth.c:1131
msgid "binit: first input not in TRACKS format\n"
msgstr ""
-#: Opcodes/pvadd.c:153
+#: Opcodes/pvadd.c:150
msgid "PVADD ktimpnt truncated to last frame"
msgstr ""
-#: Opcodes/pvadd.c:191
+#: Opcodes/pvadd.c:188
msgid "pvadd: not initialised"
msgstr "pvadd: no ha sido inicializado"
-#: Opcodes/pvadd.c:193
+#: Opcodes/pvadd.c:190
msgid "PVADD timpnt < 0"
msgstr ""
-#: Opcodes/pvadd.c:201
+#: Opcodes/pvadd.c:198
#, c-format
msgid "PVADD cannot load %s"
msgstr ""
-#: Opcodes/pvadd.c:205 Opcodes/ugens8.c:223
+#: Opcodes/pvadd.c:202 Opcodes/ugens8.c:223
#, c-format
msgid "pvoc-ex file %s: FFT size %d too large for Csound"
msgstr ""
-#: Opcodes/pvadd.c:210
+#: Opcodes/pvadd.c:207
#, c-format
msgid "PV frame %ld seems too small in %s"
msgstr ""
-#: Opcodes/pvadd.c:215 Opcodes/pvread.c:115 Opcodes/ugens8.c:229
+#: Opcodes/pvadd.c:212 Opcodes/pvread.c:115 Opcodes/ugens8.c:229
#, c-format
msgid "pvoc-ex file %s is not mono"
msgstr ""
@@ -7637,98 +7532,98 @@ msgstr ""
msgid "PVBUFREAD cannot load %s"
msgstr ""
-#: Opcodes/pvinterp.c:76 Opcodes/vpvoc.c:206
+#: Opcodes/pvinterp.c:76 Opcodes/vpvoc.c:207
#, c-format
msgid "PVOC frame %ld bigger than %ld in %s"
msgstr ""
-#: Opcodes/pvinterp.c:81 Opcodes/vpvoc.c:211
+#: Opcodes/pvinterp.c:81 Opcodes/vpvoc.c:212
#, c-format
msgid "PVOC frame %ld seems too small in %s"
msgstr ""
-#: Opcodes/pvinterp.c:85 Opcodes/pvinterp.c:184 Opcodes/pvinterp.c:356
-#: Opcodes/vpvoc.c:215
+#: Opcodes/pvinterp.c:85 Opcodes/pvinterp.c:183 Opcodes/pvinterp.c:354
+#: Opcodes/vpvoc.c:216
#, c-format
msgid "%d chans (not 1) in PVOC file %s"
msgstr ""
-#: Opcodes/pvinterp.c:101 Opcodes/pvinterp.c:212 Opcodes/pvinterp.c:382
+#: Opcodes/pvinterp.c:100 Opcodes/pvinterp.c:210 Opcodes/pvinterp.c:379
#: Opcodes/ugens8.c:95 Opcodes/vpvoc.c:244
#, c-format
msgid "ksmps of %d needs wdw of %d, max is %d for pv %s"
msgstr ""
-#: Opcodes/pvinterp.c:122 Opcodes/pvinterp.c:256 Opcodes/pvinterp.c:431
+#: Opcodes/pvinterp.c:121 Opcodes/pvinterp.c:254 Opcodes/pvinterp.c:428
#: Opcodes/pvread.c:95 Opcodes/ugens8.c:156 Opcodes/vpvoc.c:297
msgid "PVOC ktimpnt truncated to last frame"
msgstr ""
-#: Opcodes/pvinterp.c:130
+#: Opcodes/pvinterp.c:129
msgid "pvbufread: not initialised"
msgstr "pvbufread: no ha sido inicializado"
-#: Opcodes/pvinterp.c:132 Opcodes/pvinterp.c:306 Opcodes/pvinterp.c:492
+#: Opcodes/pvinterp.c:131 Opcodes/pvinterp.c:304 Opcodes/pvinterp.c:489
#: Opcodes/pvread.c:103 Opcodes/ugens8.c:206 Opcodes/vpvoc.c:361
msgid "PVOC timpnt < 0"
msgstr ""
-#: Opcodes/pvinterp.c:149
+#: Opcodes/pvinterp.c:148
msgid "pvinterp: associated pvbufread not found"
msgstr ""
-#: Opcodes/pvinterp.c:166
+#: Opcodes/pvinterp.c:165
#, c-format
msgid "PVINTERP cannot load %s"
msgstr ""
-#: Opcodes/pvinterp.c:179
+#: Opcodes/pvinterp.c:178
#, c-format
msgid "pvinterp: %s: frame size %d does not match pvbufread frame size %d\n"
msgstr ""
-#: Opcodes/pvinterp.c:300
+#: Opcodes/pvinterp.c:298
msgid "pvinterp: not initialised"
msgstr "pvinterp: no ha sido inicializado"
-#: Opcodes/pvinterp.c:302 Opcodes/pvinterp.c:488 Opcodes/ugens8.c:202
+#: Opcodes/pvinterp.c:300 Opcodes/pvinterp.c:485 Opcodes/ugens8.c:202
#: Opcodes/vpvoc.c:357
msgid "PVOC transpose too low"
msgstr ""
-#: Opcodes/pvinterp.c:304 Opcodes/pvinterp.c:490 Opcodes/ugens8.c:204
+#: Opcodes/pvinterp.c:302 Opcodes/pvinterp.c:487 Opcodes/ugens8.c:204
#: Opcodes/vpvoc.c:359
msgid "PVOC transpose too high"
msgstr ""
-#: Opcodes/pvinterp.c:323
+#: Opcodes/pvinterp.c:321
msgid "pvcross: associated pvbufread not found"
msgstr ""
-#: Opcodes/pvinterp.c:339
+#: Opcodes/pvinterp.c:337
#, c-format
msgid "PVCROSS cannot load %s"
msgstr ""
-#: Opcodes/pvinterp.c:351
+#: Opcodes/pvinterp.c:349
#, c-format
msgid "pvcross: %s: frame size %d does not match pvbufread frame size %d\n"
msgstr ""
-#: Opcodes/pvinterp.c:454 Opcodes/vpvoc.c:322
+#: Opcodes/pvinterp.c:451 Opcodes/vpvoc.c:322
msgid "PVOC debug: one frame gets through\n"
msgstr ""
-#: Opcodes/pvinterp.c:486
+#: Opcodes/pvinterp.c:483
msgid "pvcross: not initialised"
msgstr "pvcross: no ha sido inicializado"
-#: Opcodes/pvlock.c:35 Opcodes/pvsbasic.c:380
+#: Opcodes/pvlock.c:59 Opcodes/pvsbasic.c:380
#, fuzzy
msgid "invalid number of output arguments"
msgstr "número inválido de argumentos"
-#: Opcodes/pvlock.c:466
+#: Opcodes/pvlock.c:490
msgid "pvsfreeze: signal format must be amp-freq."
msgstr ""
@@ -7748,7 +7643,7 @@ msgstr "pvsband: no ha sido inicializado"
#: Opcodes/pvsbasic.c:69
#, fuzzy
msgid "pvsgain: signal format must be amp-phase or amp-freq."
-msgstr "formato de muestra inválido: debe ser -s, -l, or -f"
+msgstr ""
#: Opcodes/pvsbasic.c:181 Opcodes/pvsbasic.c:248
msgid "SDFT Not implemented in this case yet"
@@ -7835,31 +7730,36 @@ msgstr "pvstencil: no ha sido inicializado"
#: Opcodes/pvsbasic.c:2148
#, fuzzy
msgid "pvs2tab: signal format must be amp-phase or amp-freq."
-msgstr "formato de muestra inválido: debe ser -s, -l, or -f"
+msgstr ""
-#: Opcodes/pvsbasic.c:2151 Opcodes/pvsbasic.c:2190 Opcodes/tabvars.c:53
-#: Opcodes/tabvars.c:89 Opcodes/tabvars.c:131 Opcodes/tabvars.c:176
-#: Opcodes/tabvars.c:178
+#: Opcodes/pvsbasic.c:2151 Opcodes/pvsbasic.c:2189 Opcodes/tabvars.c:56
+#: Opcodes/tabvars.c:92 Opcodes/tabvars.c:134 Opcodes/tabvars.c:179
+#: Opcodes/tabvars.c:181
#, fuzzy
msgid "t-variable not initialised"
-msgstr "table: no ha sido inicializado"
+msgstr "t-variable no ha sido inicializado"
-#: Opcodes/pvsbuffer.c:53 Opcodes/pvscent.c:164 Opcodes/pvsdemix.c:49
+#: Opcodes/pvsbuffer.c:56 Opcodes/pvscent.c:164 Opcodes/pvsdemix.c:49
msgid "SDFT case not implemented yet"
msgstr ""
-#: Opcodes/pvsbuffer.c:85
+#: Opcodes/pvsbuffer.c:89
msgid "error... could not create global var for handle\n"
msgstr ""
-#: Opcodes/pvsbuffer.c:143 Opcodes/pvsbuffer.c:190 Opcodes/pvsbuffer.c:258
+#: Opcodes/pvsbuffer.c:148 Opcodes/pvsbuffer.c:197 Opcodes/pvsbuffer.c:266
msgid "error... could not read handle from global variable\n"
msgstr ""
-#: Opcodes/pvsbuffer.c:238 Opcodes/pvsbuffer.c:306
+#: Opcodes/pvsbuffer.c:246 Opcodes/pvsbuffer.c:316
msgid "Invalid buffer handle"
msgstr ""
+#: Opcodes/pvsbuffer.c:285 Opcodes/pvsbuffer.c:291
+#, c-format
+msgid "table length too small: needed %d, got %d\n"
+msgstr ""
+
#: Opcodes/pvscent.c:42
msgid "pvscent: format must be amp-phase or amp-freq.\n"
msgstr ""
@@ -8048,48 +7948,48 @@ msgstr ""
msgid "seqtim: incorrect table number"
msgstr ""
-#: Opcodes/sfont.c:118
+#: Opcodes/sfont.c:121
#, c-format
msgid "sfload: cannot open SoundFont file \"%s\" (error %s)"
msgstr ""
-#: Opcodes/sfont.c:123
+#: Opcodes/sfont.c:126
msgid "Sfload: cannot use globals"
msgstr ""
-#: Opcodes/sfont.c:153
+#: Opcodes/sfont.c:156
msgid "sfload: could not open globals\n"
msgstr ""
-#: Opcodes/sfont.c:170
+#: Opcodes/sfont.c:173
msgid "Extending soundfonts"
msgstr ""
-#: Opcodes/sfont.c:201
+#: Opcodes/sfont.c:204
#, c-format
msgid ""
"\n"
"Preset list of \"%s\"\n"
msgstr ""
-#: Opcodes/sfont.c:204
+#: Opcodes/sfont.c:207
#, c-format
msgid "%3d) %-20s\tprog:%-3d bank:%d\n"
msgstr ""
-#: Opcodes/sfont.c:226
+#: Opcodes/sfont.c:229
#, c-format
msgid ""
"\n"
"Assigning all Presets of \"%s\" starting from %d (preset handle number)\n"
msgstr ""
-#: Opcodes/sfont.c:231
+#: Opcodes/sfont.c:234
#, c-format
msgid "%3d<--%-20s\t(prog:%-3d bank:%d)\n"
msgstr ""
-#: Opcodes/sfont.c:238
+#: Opcodes/sfont.c:241
#, c-format
msgid ""
"\n"
@@ -8097,38 +7997,38 @@ msgid ""
"\n"
msgstr ""
-#: Opcodes/sfont.c:251
+#: Opcodes/sfont.c:254
#, c-format
msgid ""
"\n"
"Instrument list of \"%s\"\n"
msgstr ""
-#: Opcodes/sfont.c:268
+#: Opcodes/sfont.c:271
#, c-format
msgid "sfpreset: preset handle too big (%d), max: %d"
msgstr ""
-#: Opcodes/sfont.c:284
+#: Opcodes/sfont.c:287
#, c-format
msgid ""
"sfpreset: cannot find any preset having prog number %d and bank number %d in "
"SoundFont file \"%s\""
msgstr ""
-#: Opcodes/sfont.c:306 Opcodes/sfont.c:2189
+#: Opcodes/sfont.c:309 Opcodes/sfont.c:2192
msgid "sfplay: invalid or out-of-range preset number"
msgstr ""
-#: Opcodes/sfont.c:633
+#: Opcodes/sfont.c:636
msgid "sfplaym: invalid or out-of-range preset number"
msgstr ""
-#: Opcodes/sfont.c:888 Opcodes/sfont.c:1150
+#: Opcodes/sfont.c:891 Opcodes/sfont.c:1153
msgid "sfinstr: instrument out of range"
msgstr ""
-#: Opcodes/sfont.c:1598 Opcodes/sfont.c:1835
+#: Opcodes/sfont.c:1601 Opcodes/sfont.c:1838
#, c-format
msgid ""
"SoundFont file \"%s\" contains ROM samples !\n"
@@ -8136,19 +8036,19 @@ msgid ""
"Session aborted !"
msgstr ""
-#: Opcodes/sfont.c:1987 Opcodes/sfont.c:1993
+#: Opcodes/sfont.c:1990 Opcodes/sfont.c:1996
msgid "Sfont: cannot use globals/"
msgstr ""
-#: Opcodes/sfont.c:1996
+#: Opcodes/sfont.c:1999
msgid "Sfont format not compatible"
msgstr ""
-#: Opcodes/sfont.c:2534
+#: Opcodes/sfont.c:2537
msgid "error... could not create sfont globals\n"
msgstr ""
-#: Opcodes/shape.c:49
+#: Opcodes/shape.c:51
msgid "powershape: ifullscale must be strictly positive"
msgstr ""
@@ -8160,25 +8060,25 @@ msgstr ""
msgid "ftgenonce error"
msgstr ""
-#: Opcodes/singwave.c:85
+#: Opcodes/singwave.c:86
msgid "No table for Modulatr"
msgstr ""
-#: Opcodes/singwave.c:127
+#: Opcodes/singwave.c:128
msgid "No table for Singwave"
msgstr ""
-#: Opcodes/singwave.c:207
+#: Opcodes/singwave.c:208
#, c-format
msgid "SingWave: rate=%f sweepRate=%f mytime=%f\n"
msgstr ""
-#: Opcodes/singwave.c:273
+#: Opcodes/singwave.c:280
#, c-format
msgid "Found Formant: %s (number %i)\n"
msgstr ""
-#: Opcodes/singwave.c:395
+#: Opcodes/singwave.c:397
#, c-format
msgid "Setting Phoneme: %d %f\n"
msgstr ""
@@ -8211,15 +8111,15 @@ msgstr ""
msgid "pvsarp: not initialised\n"
msgstr "pvsarp: no ha sido inicializado\n"
-#: Opcodes/sndloop.c:995 Opcodes/sndloop.c:1092
+#: Opcodes/sndloop.c:995 Opcodes/sndloop.c:1091
msgid "signal format must be amp-phase or amp-freq.\n"
msgstr ""
-#: Opcodes/sndloop.c:1072
+#: Opcodes/sndloop.c:1071
msgid "pvsvoc: not initialised\n"
msgstr "pvsvoc: no ha sido inicializado\n"
-#: Opcodes/sndloop.c:1123
+#: Opcodes/sndloop.c:1122
msgid "pvsmorph: not initialised\n"
msgstr "pvsmorph: no ha sido inicializado\n"
@@ -8239,25 +8139,27 @@ msgstr ""
msgid "sndwarpst: not initialised"
msgstr "sndwarpst: no ha sido inicializado"
-#: Opcodes/sockrecv.c:123 Opcodes/sockrecv.c:213 Opcodes/sockrecv.c:300
-#: Opcodes/socksend.c:75 Opcodes/socksend.c:133 Opcodes/socksend.c:190
-msgid "creating socket"
+#: Opcodes/sockrecv.c:117 Opcodes/sockrecv.c:215 Opcodes/sockrecv.c:314
+#: Opcodes/socksend.c:73 Opcodes/socksend.c:157 Opcodes/socksend.c:252
+#, c-format
+msgid "Winsock2 failed to start: %d"
msgstr ""
-#: Opcodes/sockrecv.c:322
-msgid "connect failed"
+#: Opcodes/sockrecv.c:131 Opcodes/sockrecv.c:227 Opcodes/sockrecv.c:320
+#: Opcodes/socksend.c:86 Opcodes/socksend.c:171 Opcodes/socksend.c:259
+msgid "creating socket"
msgstr ""
-#: Opcodes/sockrecv.c:335
-msgid "read from socket failed"
+#: Opcodes/sockrecv.c:347
+#, c-format
+msgid "connect failed (%d)"
msgstr ""
-#: Opcodes/socksend.c:67 Opcodes/socksend.c:125
-#, c-format
-msgid "The buffersize must be <= %d samples to fit in a udp-packet."
+#: Opcodes/sockrecv.c:360
+msgid "read from socket failed"
msgstr ""
-#: Opcodes/socksend.c:107 Opcodes/socksend.c:169
+#: Opcodes/socksend.c:126 Opcodes/socksend.c:215
msgid "sendto failed"
msgstr ""
@@ -8277,199 +8179,199 @@ msgstr "spat3d: no ha sido inicializado"
msgid "spat3di: not initialised"
msgstr "spat3di: no ha sido inicializado"
-#: Opcodes/spectra.c:82
+#: Opcodes/spectra.c:84
msgid "illegal Q value"
msgstr ""
-#: Opcodes/spectra.c:84
+#: Opcodes/spectra.c:86
msgid "unknown dbout code"
msgstr ""
-#: Opcodes/spectra.c:104
+#: Opcodes/spectra.c:106
#, c-format
msgid "spectrum: %s window, %s out, making tables ...\n"
msgstr ""
-#: Opcodes/spectra.c:123
+#: Opcodes/spectra.c:125
#, c-format
msgid ""
"\thigh cps %7.1f\n"
"\t low cps %7.1f\n"
msgstr ""
-#: Opcodes/spectra.c:138
+#: Opcodes/spectra.c:140
#, c-format
msgid "\tQ %4.1f uses a %d sample window each octdown\n"
msgstr ""
-#: Opcodes/spectra.c:169
+#: Opcodes/spectra.c:171
msgid "spectrum windowed sines:"
msgstr ""
-#: Opcodes/spectra.c:187
+#: Opcodes/spectra.c:189
#, c-format
msgid "\t%d oct analysis window delay = %ld samples (%d msecs)\n"
msgstr ""
-#: Opcodes/spectra.c:195
+#: Opcodes/spectra.c:197
msgid "octdown buffers:"
msgstr ""
-#: Opcodes/spectra.c:513 Opcodes/spectra.c:553
+#: Opcodes/spectra.c:515 Opcodes/spectra.c:555
msgid "specdisp: not initialised"
msgstr "specdisp: no ha sido inicializado"
-#: Opcodes/spectra.c:523
+#: Opcodes/spectra.c:525
#, c-format
msgid "instr %d %s, dft (%s), %ld octaves (%d - %d Hz):"
msgstr ""
-#: Opcodes/spectra.c:530
+#: Opcodes/spectra.c:532
#, c-format
msgid "instr %d %s, dft (%s), %ld octaves (%3.1f - %3.1f Hz):"
msgstr ""
-#: Opcodes/spectra.c:611
+#: Opcodes/spectra.c:613
msgid "per oct rolloff too steep"
msgstr ""
-#: Opcodes/spectra.c:632
+#: Opcodes/spectra.c:634
#, c-format
msgid "specptrk: %d freqs, %d%s ptls at "
msgstr ""
-#: Opcodes/spectra.c:633
+#: Opcodes/spectra.c:635
msgid " odd"
msgstr ""
-#: Opcodes/spectra.c:637
+#: Opcodes/spectra.c:639
msgid ""
"\n"
"\t\trolloff vals:"
msgstr ""
-#: Opcodes/spectra.c:660
+#: Opcodes/spectra.c:662
#, c-format
msgid ""
"\n"
"\tdbthresh %4.1f: X-corr %s threshon %4.1f, threshoff %4.1f\n"
msgstr ""
-#: Opcodes/spectra.c:817
+#: Opcodes/spectra.c:819
msgid "specptrk: not initialised"
msgstr "specptrk: no ha sido inicializado"
-#: Opcodes/spectra.c:849
+#: Opcodes/spectra.c:851
msgid "specsum: not initialised"
msgstr "specsum: no ha sido inicializado"
-#: Opcodes/spectra.c:860
+#: Opcodes/spectra.c:862
msgid "inputs have different sizes"
msgstr ""
-#: Opcodes/spectra.c:863
+#: Opcodes/spectra.c:865
msgid "inputs have diff. time periods"
msgstr ""
-#: Opcodes/spectra.c:867
+#: Opcodes/spectra.c:869
msgid "inputs have different freq resolution"
msgstr ""
-#: Opcodes/spectra.c:870
+#: Opcodes/spectra.c:872
msgid "inputs have different amptypes"
msgstr ""
-#: Opcodes/spectra.c:902
+#: Opcodes/spectra.c:904
msgid "specaddm: not initialised"
msgstr "specaddm: no ha sido inicializado"
-#: Opcodes/spectra.c:926
+#: Opcodes/spectra.c:928
msgid "specdiff: local buffers not initialised"
msgstr ""
-#: Opcodes/spectra.c:964
+#: Opcodes/spectra.c:966
msgid "specdiff: not initialised"
msgstr "specdiff: no ha sido inicializado"
-#: Opcodes/spectra.c:986
+#: Opcodes/spectra.c:988
msgid "specscal: local buffer not initialised"
msgstr ""
-#: Opcodes/spectra.c:991
+#: Opcodes/spectra.c:993
msgid "missing fscale table"
msgstr ""
-#: Opcodes/spectra.c:1057
+#: Opcodes/spectra.c:1059
msgid "specscal: not initialised"
msgstr "specscal: no ha sido inicializado"
-#: Opcodes/spectra.c:1081
+#: Opcodes/spectra.c:1083
msgid "spechist: local buffers not intiialised"
msgstr ""
-#: Opcodes/spectra.c:1113
+#: Opcodes/spectra.c:1115
msgid "spechist: not initialised"
msgstr "spechist: no ha sido inicializado"
-#: Opcodes/spectra.c:1134
+#: Opcodes/spectra.c:1136
msgid "specfilt: local buffers not initialised"
msgstr ""
-#: Opcodes/spectra.c:1142
+#: Opcodes/spectra.c:1144
msgid "missing htim ftable"
msgstr ""
-#: Opcodes/spectra.c:1165
+#: Opcodes/spectra.c:1167
msgid "htim ftable must be all-positive"
msgstr ""
-#: Opcodes/spectra.c:1169
+#: Opcodes/spectra.c:1171
#, c-format
msgid "coef range: %6.3f - %6.3f\n"
msgstr ""
-#: Opcodes/spectra.c:1201
+#: Opcodes/spectra.c:1203
msgid "specfilt: not initialised"
msgstr "specfilt: no ha sido inicializado"
-#: Opcodes/stackops.c:80
+#: Opcodes/stackops.c:81
msgid "fsig = : source signal is not initialised"
msgstr ""
-#: Opcodes/stackops.c:126
+#: Opcodes/stackops.c:125
msgid "stack overflow"
msgstr ""
-#: Opcodes/stackops.c:134
+#: Opcodes/stackops.c:131
msgid "cannot pop from empty stack"
msgstr ""
-#: Opcodes/stackops.c:142
+#: Opcodes/stackops.c:137
msgid "argument number or type mismatch"
msgstr ""
-#: Opcodes/stackops.c:150
+#: Opcodes/stackops.c:143
msgid "string argument is too long"
msgstr ""
-#: Opcodes/stackops.c:167
+#: Opcodes/stackops.c:160
msgid "Error allocating argument stack"
msgstr ""
-#: Opcodes/stackops.c:207 Top/argdecode.c:1212 util/envext.c:99
+#: Opcodes/stackops.c:200 Top/argdecode.c:1212 util/envext.c:99
#: util/scale.c:248
msgid "too many arguments"
msgstr ""
-#: Opcodes/stackops.c:286
+#: Opcodes/stackops.c:279
msgid "the stack is already allocated"
msgstr ""
-#: Opcodes/stackops.c:637
+#: Opcodes/stackops.c:630
msgid "number of arguments != nchnls"
msgstr ""
-#: Opcodes/stdopcod.c:36
+#: Opcodes/stdopcod.c:37
msgid "stdopcod.c: error: globals already allocated"
msgstr ""
@@ -8484,35 +8386,44 @@ msgstr ""
msgid "RAWWAVE_PATH: %s\n"
msgstr ""
-#: Opcodes/syncgrain.c:175 Opcodes/syncgrain.c:338 Opcodes/syncgrain.c:683
+#: Opcodes/syncgrain.c:176 Opcodes/syncgrain.c:339 Opcodes/syncgrain.c:684
msgid "grain size smaller than 1 sample\n"
msgstr ""
-#: Opcodes/syncgrain.c:387
+#: Opcodes/syncgrain.c:388
msgid "diskgrain: invalid number of channels"
msgstr ""
-#: Opcodes/syncgrain.c:419
+#: Opcodes/syncgrain.c:420
msgid "diskgrain: could not open file\n"
msgstr ""
-#: Opcodes/syncgrain.c:423
+#: Opcodes/syncgrain.c:424
msgid ""
"diskgrain: soundfile channel numbers do not match the number of outputs \n"
msgstr ""
-#: Opcodes/syncgrain.c:435
+#: Opcodes/syncgrain.c:436
msgid "diskgrain: could not read file \n"
msgstr ""
-#: Opcodes/tabsum.c:39
+#: Opcodes/tabsum.c:40
msgid "tabsum: No table"
msgstr ""
-#: Opcodes/tabsum.c:54
+#: Opcodes/tabsum.c:55
msgid "tabsum: Not initialised"
msgstr "tabsum: no ha sido inicializado"
+#: Opcodes/tabvars.c:201 Opcodes/tabvars.c:218
+#, fuzzy
+msgid "t-var not initialised"
+msgstr "t-var no ha sido inicializado"
+
+#: Opcodes/tabvars.c:203 Opcodes/tabvars.c:220
+msgid "No table for copy2ftab"
+msgstr ""
+
#: Opcodes/ugens7.c:46 Opcodes/ugensa.c:49
msgid "illegal value for iolaps"
msgstr ""
@@ -8658,17 +8569,17 @@ msgstr ""
msgid "table in iftfn for ftmorf does not exist"
msgstr ""
-#: Opcodes/ugnorman.c:120
+#: Opcodes/ugnorman.c:121
#, c-format
msgid "%s: Ats file %s not read (does it exist?)"
msgstr ""
-#: Opcodes/ugnorman.c:131
+#: Opcodes/ugnorman.c:132
#, c-format
msgid "%s: either %s is not an ATS file or the byte endianness is wrong"
msgstr ""
-#: Opcodes/ugnorman.c:139
+#: Opcodes/ugnorman.c:140
#, c-format
msgid ""
"%s: %s is byte-swapped\n"
@@ -8676,125 +8587,125 @@ msgid ""
"\twill not result in different audio, but they may slow down processing."
msgstr ""
-#: Opcodes/ugnorman.c:175
+#: Opcodes/ugnorman.c:176
msgid ""
"ATSINFO: location is out of bounds: 0-8 are the only possible selections"
msgstr ""
-#: Opcodes/ugnorman.c:265
+#: Opcodes/ugnorman.c:266
#, c-format
msgid "ATSREAD: partial %i out of range, max allowed is %i"
msgstr ""
-#: Opcodes/ugnorman.c:291
+#: Opcodes/ugnorman.c:292
msgid "Type not implemented"
msgstr ""
-#: Opcodes/ugnorman.c:310
+#: Opcodes/ugnorman.c:311
msgid "ATSREAD: only positive time pointer values allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:319
+#: Opcodes/ugnorman.c:320
msgid "ATSREAD: timepointer out of range, truncated to last frame\n"
msgstr ""
-#: Opcodes/ugnorman.c:332
+#: Opcodes/ugnorman.c:333
msgid "ATSREAD: not initialised"
msgstr "ATSREAD: no ha sido inicializado"
-#: Opcodes/ugnorman.c:394
+#: Opcodes/ugnorman.c:395
#, c-format
msgid "ATSREADNZ: band %i out of range, 1-25 are the valid band values"
msgstr ""
-#: Opcodes/ugnorman.c:412
+#: Opcodes/ugnorman.c:413
msgid "ATSREADNZ: Type either not implemented or does not contain noise"
msgstr ""
-#: Opcodes/ugnorman.c:431
+#: Opcodes/ugnorman.c:432
msgid "ATSREADNZ: only positive time pointer values allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:440
+#: Opcodes/ugnorman.c:441
msgid "ATSREADNZ: timepointer out of range, truncated to last frame\n"
msgstr ""
-#: Opcodes/ugnorman.c:449
+#: Opcodes/ugnorman.c:450
msgid "ATSREADNZ: not initialised"
msgstr "ATSREADNZ: no ha sido inicializado"
-#: Opcodes/ugnorman.c:467
+#: Opcodes/ugnorman.c:468
msgid "ATSADD: Function table number for synthesis waveform not valid"
msgstr ""
-#: Opcodes/ugnorman.c:475
+#: Opcodes/ugnorman.c:476
msgid "ATSADD: Gate Function table number not valid"
msgstr ""
-#: Opcodes/ugnorman.c:521
+#: Opcodes/ugnorman.c:522
#, c-format
msgid "ATSADD: Partial(s) out of range, max partial allowed is %i"
msgstr ""
-#: Opcodes/ugnorman.c:555
+#: Opcodes/ugnorman.c:556
msgid "ATSADD: Type not implemented"
msgstr ""
-#: Opcodes/ugnorman.c:585
+#: Opcodes/ugnorman.c:586
msgid ""
"ATSADD: only positive time pointer values are allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:594
+#: Opcodes/ugnorman.c:595
msgid "ATSADD: time pointer out of range, truncating to last frame\n"
msgstr ""
-#: Opcodes/ugnorman.c:638
+#: Opcodes/ugnorman.c:639
msgid "ATSADD: not initialised"
msgstr "ATSADD: no ha sido inicializado"
-#: Opcodes/ugnorman.c:842
+#: Opcodes/ugnorman.c:845
msgid "ATSADDNZ: This file type contains no noise"
msgstr ""
-#: Opcodes/ugnorman.c:846
+#: Opcodes/ugnorman.c:849
msgid "ATSADDNZ: This file type has not been implemented in this code yet."
msgstr ""
-#: Opcodes/ugnorman.c:869
+#: Opcodes/ugnorman.c:872
msgid "ATSADDNZ: Band(s) out of range, max band allowed is 25"
msgstr ""
-#: Opcodes/ugnorman.c:886
+#: Opcodes/ugnorman.c:889
msgid ""
"ATSADDNZ: Type either has no noise or is not implemented (only type 3 and 4 "
"work now)"
msgstr ""
-#: Opcodes/ugnorman.c:1002
+#: Opcodes/ugnorman.c:1005
msgid ""
"ATSADDNZ: only positive time pointer values are allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:1011
+#: Opcodes/ugnorman.c:1014
msgid "ATSADDNZ: time pointer out of range, truncating to last frame\n"
msgstr ""
-#: Opcodes/ugnorman.c:1165
+#: Opcodes/ugnorman.c:1168
#, c-format
msgid "ATSSINNOI: Partial(s) out of range, max partial allowed is %i"
msgstr ""
-#: Opcodes/ugnorman.c:1202
+#: Opcodes/ugnorman.c:1205
msgid "ATSSINNOI: Type not implemented"
msgstr ""
-#: Opcodes/ugnorman.c:1315
+#: Opcodes/ugnorman.c:1316
msgid ""
"ATSSINNOI: only positive time pointer values are allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:1324
+#: Opcodes/ugnorman.c:1325
msgid "ATSSINNOI: time pointer out of range, truncating to last frame\n"
msgstr ""
@@ -8867,44 +8778,44 @@ msgstr ""
msgid "ATSCROSS: you must have an atsbufread before an atsinterpread"
msgstr ""
-#: Opcodes/ugsc.c:394
+#: Opcodes/ugsc.c:390
msgid "Phaser mode must be either 1 or 2"
msgstr ""
-#: Opcodes/vbap.c:57
+#: Opcodes/vbap.c:59
msgid "vbap: error allocating loudspeaker table"
msgstr ""
-#: Opcodes/vbap.c:264
+#: Opcodes/vbap.c:266
msgid ""
"Number of loudspeakers is zero\n"
"Exiting"
msgstr ""
-#: Opcodes/vbap.c:573
+#: Opcodes/vbap.c:575
msgid "Error in loudspeaker dimension."
msgstr ""
-#: Opcodes/vbap.c:596
+#: Opcodes/vbap.c:598
msgid "Too few loudspeakers"
msgstr ""
-#: Opcodes/vbap.c:622
+#: Opcodes/vbap.c:624
msgid "Not valid 3-D configuration"
msgstr ""
-#: Opcodes/vbap.c:668 Opcodes/vbap.c:767
+#: Opcodes/vbap.c:670 Opcodes/vbap.c:769
msgid ""
"\n"
"Configured loudspeakers\n"
msgstr ""
-#: Opcodes/vbap.c:670
+#: Opcodes/vbap.c:672
#, c-format
msgid "Triplet %d Loudspeakers: "
msgstr ""
-#: Opcodes/vbap.c:769
+#: Opcodes/vbap.c:771
#, c-format
msgid "Pair %d Loudspeakers: "
msgstr ""
@@ -8986,41 +8897,33 @@ msgstr ""
msgid "Have to have at least %d directions in vbapzmove"
msgstr ""
-#: Opcodes/Vosim.c:49
+#: Opcodes/Vosim.c:51
msgid "vosim: pulse table not found"
msgstr ""
-#: Opcodes/Vosim.c:72
+#: Opcodes/Vosim.c:74
msgid "vosim: zero kfund. 'Infinite' length event generated."
msgstr ""
-#: Opcodes/Vosim.c:80
+#: Opcodes/Vosim.c:82
#, c-format
msgid "vosim: kfund (%f) > sr. Generating ksmps silence."
msgstr ""
-#: Opcodes/Vosim.c:158
+#: Opcodes/Vosim.c:160
msgid "vosim: not initialised"
msgstr "vosim: no ha sido inicializado"
-#: Opcodes/vpvoc.c:118
-msgid "tableseg: not initialised"
-msgstr "tableseg: no ha sido inicializado"
-
-#: Opcodes/vpvoc.c:146
-msgid "tablexseg: not initialised"
-msgstr "tablexseg: no ha sido inicializado"
-
-#: Opcodes/vpvoc.c:172
+#: Opcodes/vpvoc.c:173
#, c-format
msgid "vpvoc: Could not find ifnmagctrl table %f"
msgstr ""
-#: Opcodes/vpvoc.c:178
+#: Opcodes/vpvoc.c:179
msgid "vpvoc: associated tableseg not found"
msgstr ""
-#: Opcodes/vpvoc.c:194
+#: Opcodes/vpvoc.c:195
#, c-format
msgid "VPVOC cannot load %s"
msgstr ""
@@ -9137,47 +9040,47 @@ msgstr ""
msgid "-B N\tsamples per hardware sound I/O buffer"
msgstr ""
-#: Top/argdecode.c:75 util/mixer.c:95 util/scale.c:46 util/srconv.c:739
+#: Top/argdecode.c:75 util/mixer.c:95 util/scale.c:46 util/srconv.c:738
msgid "-A\tcreate an AIFF format output soundfile"
msgstr ""
-#: Top/argdecode.c:76 util/mixer.c:96 util/scale.c:47 util/srconv.c:741
+#: Top/argdecode.c:76 util/mixer.c:96 util/scale.c:47 util/srconv.c:740
msgid "-W\tcreate a WAV format output soundfile"
msgstr ""
-#: Top/argdecode.c:77 util/srconv.c:740
+#: Top/argdecode.c:77 util/srconv.c:739
msgid "-J\tcreate an IRCAM format output soundfile"
msgstr ""
-#: Top/argdecode.c:78 util/mixer.c:97 util/scale.c:48 util/srconv.c:742
+#: Top/argdecode.c:78 util/mixer.c:97 util/scale.c:48 util/srconv.c:741
msgid "-h\tno header on output soundfile"
msgstr ""
-#: Top/argdecode.c:79 util/mixer.c:99 util/scale.c:49 util/srconv.c:743
+#: Top/argdecode.c:79 util/mixer.c:99 util/scale.c:49 util/srconv.c:742
msgid "-c\t8-bit signed_char sound samples"
msgstr ""
-#: Top/argdecode.c:81 util/mixer.c:101 util/scale.c:50 util/srconv.c:744
+#: Top/argdecode.c:81 util/mixer.c:101 util/scale.c:50 util/srconv.c:743
msgid "-a\talaw sound samples"
msgstr ""
-#: Top/argdecode.c:83 util/mixer.c:98 util/mixer.c:100 util/srconv.c:745
+#: Top/argdecode.c:83 util/mixer.c:98 util/mixer.c:100 util/srconv.c:744
msgid "-8\t8-bit unsigned_char sound samples"
msgstr ""
-#: Top/argdecode.c:84 util/mixer.c:102 util/scale.c:51 util/srconv.c:746
+#: Top/argdecode.c:84 util/mixer.c:102 util/scale.c:51 util/srconv.c:745
msgid "-u\tulaw sound samples"
msgstr ""
-#: Top/argdecode.c:85 util/mixer.c:103 util/scale.c:52 util/srconv.c:747
+#: Top/argdecode.c:85 util/mixer.c:103 util/scale.c:52 util/srconv.c:746
msgid "-s\tshort_int sound samples"
msgstr ""
-#: Top/argdecode.c:86 util/mixer.c:104 util/scale.c:53 util/srconv.c:748
+#: Top/argdecode.c:86 util/mixer.c:104 util/scale.c:53 util/srconv.c:747
msgid "-l\tlong_int sound samples"
msgstr ""
-#: Top/argdecode.c:87 util/mixer.c:105 util/scale.c:54 util/srconv.c:749
+#: Top/argdecode.c:87 util/mixer.c:105 util/scale.c:54 util/srconv.c:748
msgid "-f\tfloat sound samples"
msgstr ""
@@ -9185,7 +9088,7 @@ msgstr ""
msgid "-3\t24bit sound samples"
msgstr ""
-#: Top/argdecode.c:89 util/srconv.c:750
+#: Top/argdecode.c:89 util/srconv.c:749
msgid "-r N\torchestra srate override"
msgstr ""
@@ -9193,7 +9096,7 @@ msgstr ""
msgid "-k N\torchestra krate override"
msgstr ""
-#: Top/argdecode.c:91 util/srconv.c:751
+#: Top/argdecode.c:91 util/srconv.c:750
msgid "-K\tDo not generate PEAK chunks"
msgstr ""
@@ -9253,7 +9156,7 @@ msgstr ""
msgid "-F fnam\tread MIDIfile event stream from file 'fnam'"
msgstr ""
-#: Top/argdecode.c:107 util/mixer.c:106 util/scale.c:59 util/srconv.c:752
+#: Top/argdecode.c:107 util/mixer.c:106 util/scale.c:59 util/srconv.c:751
msgid "-R\tcontinually rewrite header while writing soundfile (WAV/AIFF)"
msgstr ""
@@ -9261,7 +9164,7 @@ msgstr ""
msgid "-H#\tprint heartbeat style 1, 2 or 3 at each soundfile write"
msgstr ""
-#: Top/argdecode.c:109 util/mixer.c:108 util/scale.c:61 util/srconv.c:754
+#: Top/argdecode.c:109 util/mixer.c:108 util/scale.c:61 util/srconv.c:753
msgid "-N\tnotify (ring the bell) when score or miditrack is done"
msgstr ""
@@ -9747,16 +9650,16 @@ msgid "-M: stdin not supported on this platform"
msgstr ""
#: Top/argdecode.c:668 Top/argdecode.c:959 util/envext.c:84 util/mixer.c:205
-#: util/scale.c:173 util/srconv.c:248 util/xtrct.c:116
+#: util/scale.c:173 util/srconv.c:247 util/xtrct.c:116
msgid "no outfilename"
msgstr ""
-#: Top/argdecode.c:671 Top/argdecode.c:963 util/scale.c:177 util/srconv.c:252
+#: Top/argdecode.c:671 Top/argdecode.c:963 util/scale.c:177 util/srconv.c:251
#: util/xtrct.c:120
msgid "-o cannot be stdin"
msgstr ""
-#: Top/argdecode.c:675 Top/argdecode.c:967 util/scale.c:180 util/srconv.c:257
+#: Top/argdecode.c:675 Top/argdecode.c:967 util/scale.c:180 util/srconv.c:256
#: util/xtrct.c:123
msgid "stdout audio not supported"
msgstr ""
@@ -9875,164 +9778,164 @@ msgstr ""
msgid "cscoreFileGetCurrent: no fp current"
msgstr ""
-#: Top/csmodule.c:192
+#: Top/csmodule.c:199
#, c-format
msgid "not loading '%s' (uses incompatible floating point type)"
msgstr ""
-#: Top/csmodule.c:201
+#: Top/csmodule.c:209
#, c-format
msgid ""
"not loading '%s' (incompatible with this version of Csound (%d.%d/%d.%d)"
msgstr ""
-#: Top/csmodule.c:244
+#: Top/csmodule.c:252
#, c-format
msgid "could not open library '%s' (%s)"
msgstr ""
-#: Top/csmodule.c:247
+#: Top/csmodule.c:255
#, c-format
msgid "could not open library '%s' (%d)"
msgstr ""
-#: Top/csmodule.c:303
+#: Top/csmodule.c:311
#, c-format
msgid "'%s' is not a Csound plugin library"
msgstr ""
-#: Top/csmodule.c:314
+#: Top/csmodule.c:322
msgid "csoundLoadExternal(): memory allocation failure"
msgstr ""
-#: Top/csmodule.c:328 Top/csmodule.c:336
+#: Top/csmodule.c:336 Top/csmodule.c:344
#, c-format
msgid "Error in pre-initialisation function of module '%s'"
msgstr ""
-#: Top/csmodule.c:599 Top/csmodule.c:605 Top/csmodule.c:616 Top/csmodule.c:623
-#: Top/csmodule.c:629 Top/csmodule.c:637
+#: Top/csmodule.c:608 Top/csmodule.c:614 Top/csmodule.c:625 Top/csmodule.c:632
+#: Top/csmodule.c:638 Top/csmodule.c:646
msgid "Error opening plugin directory\n"
msgstr ""
-#: Top/csmodule.c:687
+#: Top/csmodule.c:696
#, c-format
msgid "Error opening plugin directory '%s': %s"
msgstr ""
-#: Top/csmodule.c:722
+#: Top/csmodule.c:731
#, c-format
msgid "path name too long, skipping '%s'"
msgstr ""
-#: Top/csmodule.c:728
+#: Top/csmodule.c:737
#, c-format
msgid "Library %s omitted\n"
msgstr ""
-#: Top/csmodule.c:764
+#: Top/csmodule.c:773
msgid "Loading command-line libraries:\n"
msgstr ""
-#: Top/csmodule.c:787
+#: Top/csmodule.c:796
#, c-format
msgid " *** error loading '%s'"
msgstr ""
-#: Top/csmodule.c:810
+#: Top/csmodule.c:819
#, c-format
msgid "Error starting module '%s'"
msgstr ""
-#: Top/csmodule.c:907
+#: Top/csmodule.c:918
#, c-format
msgid "Error de-initialising module '%s'"
msgstr ""
-#: Top/csound.c:1606 Top/csound.c:1626
+#: Top/csound.c:1636 Top/csound.c:1656
msgid "Early return from csoundPerformKsmps().\n"
msgstr ""
-#: Top/csound.c:1612
+#: Top/csound.c:1642
msgid "Score finished in csoundPerformKsmps().\n"
msgstr ""
-#: Top/csound.c:1645
+#: Top/csound.c:1675
msgid "Early return from csoundPerformBuffer().\n"
msgstr ""
-#: Top/csound.c:1670
+#: Top/csound.c:1700
msgid "Early return from csoundPerform().\n"
msgstr ""
-#: Top/csound.c:1677
+#: Top/csound.c:1707
msgid "Score finished in csoundPerform().\n"
msgstr ""
-#: Top/csound.c:1697
+#: Top/csound.c:1727
msgid "csoundPerform(): stopped.\n"
msgstr ""
-#: Top/csound.c:1968
+#: Top/csound.c:1998
msgid "WARNING: "
msgstr "ATENCION: "
-#: Top/csound.c:2089
+#: Top/csound.c:2119
msgid "rtdummy: failed to allocate globals"
msgstr ""
-#: Top/csound.c:2090
+#: Top/csound.c:2120
msgid "rtaudio: dummy module enabled\n"
msgstr ""
-#: Top/csound.c:2119 Top/csound.c:2155
+#: Top/csound.c:2149 Top/csound.c:2185
msgid " *** error: rtaudio module set to empty string"
msgstr ""
-#: Top/csound.c:2123 Top/csound.c:2159
+#: Top/csound.c:2153 Top/csound.c:2189
#, c-format
msgid " *** error: unknown rtaudio module: '%s'"
msgstr ""
-#: Top/csound.c:2241
+#: Top/csound.c:2271
msgid "WARNING: real time midi input disabled, using dummy functions\n"
msgstr ""
-#: Top/csound.c:2246 Top/csound.c:2280
+#: Top/csound.c:2276 Top/csound.c:2310
msgid "error: -+rtmidi set to empty string"
msgstr ""
-#: Top/csound.c:2249 Top/csound.c:2283
+#: Top/csound.c:2279 Top/csound.c:2313
#, c-format
msgid "error: -+rtmidi='%s': unknown module"
msgstr ""
-#: Top/csound.c:2275
+#: Top/csound.c:2305
msgid "WARNING: real time midi output disabled, using dummy functions\n"
msgstr ""
-#: Top/csound.c:2297
+#: Top/csound.c:2327
msgid "Unknown MIDI error"
msgstr ""
-#: Top/csound.c:2415
+#: Top/csound.c:2445
msgid "xyin not supported. use invalue opcode instead."
msgstr ""
-#: Top/csound.c:2522
+#: Top/csound.c:2552
msgid "Failed to allocate new opcode entry."
msgstr ""
-#: Top/csound.c:2545
+#: Top/csound.c:2575
#, c-format
msgid "Failed to allocate opcode entry for %s."
msgstr ""
-#: Top/csound.c:2876
+#: Top/csound.c:2906
msgid "Cannot open /proc/cpuinfo. Support for RDTSC is not available.\n"
msgstr ""
-#: Top/csound.c:2927
+#: Top/csound.c:2957
msgid "No valid CPU frequency entry was found in /proc/cpuinfo.\n"
msgstr ""
@@ -10040,25 +9943,25 @@ msgstr ""
msgid "Error allocating opcode list"
msgstr ""
-#: Top/main.c:161
+#: Top/main.c:160
#, c-format
msgid "WARNING: cannot open csoundrc file %s\n"
msgstr "ATENCION: no se puede abrir el archivo csoundrc %s\n"
-#: Top/main.c:164
+#: Top/main.c:163
#, c-format
msgid "Reading options from $CSOUNDRC: %s \n"
msgstr ""
-#: Top/main.c:173
+#: Top/main.c:172
msgid "Reading options from $HOME/.csoundrc\n"
msgstr ""
-#: Top/main.c:200
+#: Top/main.c:199
msgid "no orchestra name"
msgstr ""
-#: Top/main.c:225
+#: Top/main.c:224
msgid "Reading CSD failed ... stopping"
msgstr "Falla de lectura del archivo csd... deteniendo"
@@ -10070,7 +9973,7 @@ msgstr ""
msgid "error: multiple uses of stdout"
msgstr ""
-#: Top/main.c:260 util/dnoise.c:268
+#: Top/main.c:260 util/dnoise.c:264
#, c-format
msgid "%s not a recognised SFOUTYP env setting"
msgstr ""
@@ -10083,58 +9986,62 @@ msgstr ""
msgid "realtime performance using dummy numeric scorefile\n"
msgstr ""
-#: Top/main.c:319
+#: Top/main.c:314
#, c-format
msgid "orchname: %s\n"
msgstr "nombre de la orquesta: %s\n"
-#: Top/main.c:321
-#, c-format
-msgid "scorename: %s\n"
-msgstr "nombre del score: %s\n"
+#: Top/main.c:334
+msgid "Stopping on parser failure\n"
+msgstr ""
-#: Top/main.c:353
+#: Top/main.c:352
msgid "end of orchestra compile"
msgstr "fin de compilación de la orquesta"
-#: Top/main.c:360
+#: Top/main.c:359
#, c-format
msgid "using previous %s\n"
msgstr ""
-#: Top/main.c:373
+#: Top/main.c:369
#, c-format
msgid "cannot open scorefile %s"
msgstr "no es posible abrir el archivo de score %s"
-#: Top/main.c:378 Top/main.c:399
-#, c-format
-msgid "cannot open %s for writing"
-msgstr "no es posible abrir para escritura el archivo %s"
-
-#: Top/main.c:381
+#: Top/main.c:371
msgid "sorting score ...\n"
msgstr ""
-#: Top/main.c:388
+#: Top/main.c:381
#, c-format
msgid "cannot extract %s, name conflict"
msgstr ""
-#: Top/main.c:391
+#: Top/main.c:384
#, c-format
msgid "cannot open extract file %s"
msgstr ""
-#: Top/main.c:401
+#: Top/main.c:388
+#, c-format
+msgid "cannot reopen %s"
+msgstr "No fue posible reabrir %s"
+
+#: Top/main.c:392
+#, c-format
+msgid "cannot open %s for writing"
+msgstr "no es posible abrir para escritura el archivo %s"
+
+#: Top/main.c:394
msgid " ... extracting ...\n"
msgstr " ... extrayendo ...\n"
-#: Top/main.c:414
+#: Top/main.c:405
msgid "end of score sort"
msgstr ""
-#: Top/main.c:416
+#: Top/main.c:407
msgid "Syntax check completed.\n"
msgstr "Revisión de sintaxis completa.\n"
@@ -10199,163 +10106,158 @@ msgstr ""
msgid " *** error setting option '%s' to '%s': %s\n"
msgstr ""
-#: Top/one_file.c:105 Top/one_file.c:113
+#: Top/one_file.c:110 Top/one_file.c:118
msgid " *** cannot create temporary file"
msgstr " *** no es posible crear el archivo temporal"
-#: Top/one_file.c:198
+#: Top/one_file.c:203
#, c-format
msgid "Removing temporary file %s ...\n"
msgstr "Reitrando el archivo temporal %s ...\n"
-#: Top/one_file.c:202
+#: Top/one_file.c:207
#, c-format
msgid "WARNING: could not remove %s\n"
msgstr "ATENCION: no fue posible retirar %s\n"
-#: Top/one_file.c:268 Top/one_file.c:296
+#: Top/one_file.c:274 Top/one_file.c:302
#, c-format
msgid "More than %d arguments in <CsOptions>"
msgstr ""
-#: Top/one_file.c:313
+#: Top/one_file.c:319
#, c-format
msgid "Invalid arguments in <CsOptions>: %s"
msgstr ""
-#: Top/one_file.c:316
+#: Top/one_file.c:322
#, c-format
msgid "Invalid arguments in .csoundrc or -@ file: %s"
msgstr ""
-#: Top/one_file.c:322 Top/one_file.c:790
+#: Top/one_file.c:328 Top/one_file.c:744
msgid "Missing end tag </CsOptions>"
msgstr ""
-#: Top/one_file.c:340 Top/one_file.c:372 Top/one_file.c:420
-#, c-format
-msgid "Creating %s (%p)\n"
-msgstr "Creando %s (%p)\n"
-
-#: Top/one_file.c:343
-#, c-format
-msgid "Failed to create %s"
-msgstr "No fue posible crear %s"
-
-#: Top/one_file.c:356
+#: Top/one_file.c:354
msgid "Missing end tag </CsInstruments>"
msgstr ""
-#: Top/one_file.c:389 Top/one_file.c:442
+#: Top/one_file.c:376 Top/one_file.c:430
msgid "Missing end tag </CsScore>"
msgstr ""
-#: Top/one_file.c:403 Top/one_file.c:408
+#: Top/one_file.c:391 Top/one_file.c:396
msgid "Missing program in tag <CsScore>"
msgstr ""
-#: Top/one_file.c:433
+#: Top/one_file.c:408
+#, c-format
+msgid "Creating %s (%p)\n"
+msgstr "Creando %s (%p)\n"
+
+#: Top/one_file.c:421
msgid "External generation failed"
msgstr ""
-#: Top/one_file.c:520
+#: Top/one_file.c:468
#, c-format
msgid "Non base64 character %c(%2x)"
msgstr ""
-#: Top/one_file.c:539
+#: Top/one_file.c:487
msgid "Truncated byte at end of base64 stream"
msgstr ""
-#: Top/one_file.c:554
+#: Top/one_file.c:503
#, c-format
msgid "Cannot open temporary file (%s) for MIDI subfile"
msgstr ""
-#: Top/one_file.c:571
+#: Top/one_file.c:520
msgid "Missing end tag </CsMidifileB>"
msgstr ""
-#: Top/one_file.c:586 Top/one_file.c:633
+#: Top/one_file.c:536 Top/one_file.c:584
#, c-format
msgid "File %s already exists"
msgstr "El archivo %s ya existe"
-#: Top/one_file.c:591
+#: Top/one_file.c:541
#, c-format
msgid "Cannot open sample file (%s) subfile"
msgstr ""
-#: Top/one_file.c:605
+#: Top/one_file.c:555
msgid "Missing end tag </CsSampleB>"
msgstr ""
-#: Top/one_file.c:638
+#: Top/one_file.c:589
#, c-format
msgid "Cannot open file (%s) subfile"
msgstr ""
-#: Top/one_file.c:653
+#: Top/one_file.c:604
msgid "Missing end tag </CsFileB>"
msgstr ""
-#: Top/one_file.c:672
+#: Top/one_file.c:624
#, c-format
msgid "This CSD file requires a version of Csound before %d.%02d"
msgstr ""
-#: Top/one_file.c:680 Top/one_file.c:687
+#: Top/one_file.c:632 Top/one_file.c:639
#, c-format
msgid "This CSD file requires a version of Csound after %d.%02d"
msgstr ""
-#: Top/one_file.c:693
+#: Top/one_file.c:645
msgid "Missing end tag </CsVersion>"
msgstr ""
-#: Top/one_file.c:702
+#: Top/one_file.c:655
msgid "**** Licence Information ****\n"
msgstr "**** Información de licencia ****\n"
-#: Top/one_file.c:708
+#: Top/one_file.c:661
msgid "**** End of Licence Information ****\n"
msgstr "**** Fin de información de licencia ****\n"
-#: Top/one_file.c:719
+#: Top/one_file.c:672
msgid "Missing end tag </CsLicence>"
msgstr ""
-#: Top/one_file.c:749
+#: Top/one_file.c:703
#, c-format
msgid "Failed to open csd file: %s"
msgstr "No fue posible abrir el archivo csd: %s"
-#: Top/one_file.c:764
+#: Top/one_file.c:718
msgid "STARTING FILE\n"
msgstr "INCIANDO ARCHIVO\n"
-#: Top/one_file.c:780
+#: Top/one_file.c:734
msgid "Creating options\n"
msgstr "Creando opciones\n"
-#: Top/one_file.c:786
+#: Top/one_file.c:740
msgid "Skipping <CsOptions>\n"
msgstr "Saltando <CsOptions>\n"
-#: Top/one_file.c:800
+#: Top/one_file.c:754
msgid "Creating orchestra\n"
msgstr "Creando orquesta\n"
-#: Top/one_file.c:805
+#: Top/one_file.c:759
msgid "Creating score\n"
msgstr "Creando score\n"
-#: Top/one_file.c:839
+#: Top/one_file.c:793
#, c-format
msgid "unknown CSD tag: %s\n"
msgstr "Etiqueta CSD desconocida: %s\n"
-#: Top/one_file.c:844
+#: Top/one_file.c:798
msgid "Could not find <CsoundSynthesizer> tag in CSD file.\n"
msgstr "No se encontró la etiqueta <CsoundSynthesizer> en el archivo CSD.\n"
@@ -10526,10 +10428,10 @@ msgid "scot: %d errors.\n"
msgstr ""
#: util/atsa.c:537
-#, c-format
+#, fuzzy, c-format
msgid ""
"\n"
-" Could not open %s for writing, bye...\n"
+"Could not open %s for writing, bye...\n"
msgstr ""
"\n"
" No es posible abrir %s para escritura. Adiós...\n"
@@ -10538,8 +10440,8 @@ msgstr ""
msgid "saving ATS data..."
msgstr "salvando datos ATS..."
-#: util/atsa.c:546 util/atsa.c:2344 util/atsa.c:2358 util/atsa.c:2368
-#: util/atsa.c:2548 util/atsa.c:2611 util/atsa.c:2699
+#: util/atsa.c:546 util/atsa.c:2354 util/atsa.c:2368 util/atsa.c:2387
+#: util/atsa.c:2567 util/atsa.c:2630 util/atsa.c:2718
msgid "done!\n"
msgstr "listo!\n"
@@ -10647,17 +10549,17 @@ msgid ""
"\n"
msgstr ""
-#: util/atsa.c:1482
+#: util/atsa.c:1492
#, c-format
msgid "atsa: error opening residual file '%s'"
msgstr "atsa: error abriendo archivo de residuo '%s'"
-#: util/atsa.c:1486
+#: util/atsa.c:1496
#, c-format
msgid "atsa: residual file has %d channels, must be stereo !"
msgstr ""
-#: util/atsa.c:1813
+#: util/atsa.c:1823
#, c-format
msgid ""
"\n"
@@ -10666,164 +10568,164 @@ msgstr ""
"\n"
"ERROR: no es posible abrir %s para escritura\n"
-#: util/atsa.c:1908
+#: util/atsa.c:1918
msgid "Error: sound not optimised !"
msgstr "Error: sonido no optimizado !"
-#: util/atsa.c:2003
+#: util/atsa.c:2013
#, c-format
msgid "atsa: cannot open input file '%s'"
msgstr "atsa: no es posible abrir el archivo '%s'"
-#: util/atsa.c:2010
+#: util/atsa.c:2020
#, c-format
msgid "atsa: file has %d channels, must be mono !"
msgstr "atsa: el archivo tiene %d canales pero debe ser mono !"
-#: util/atsa.c:2015
+#: util/atsa.c:2025
msgid "tracking...\n"
msgstr ""
-#: util/atsa.c:2024
+#: util/atsa.c:2034
#, c-format
msgid "start %f out of bounds, corrected to 0.0"
msgstr ""
-#: util/atsa.c:2034
+#: util/atsa.c:2044
#, c-format
msgid "duration %f out of bounds, limited to file duration"
msgstr ""
-#: util/atsa.c:2040
+#: util/atsa.c:2050
#, c-format
msgid "start: %f duration: %f file dur: %f\n"
msgstr ""
-#: util/atsa.c:2047
+#: util/atsa.c:2057
#, c-format
msgid "lowest freq. %f out of bounds, forced to default: %f"
msgstr ""
-#: util/atsa.c:2057
+#: util/atsa.c:2067
#, c-format
msgid "highest freq. %f out of bounds, forced to default: %f"
msgstr ""
-#: util/atsa.c:2064
+#: util/atsa.c:2074
#, c-format
msgid ""
"freq. dev. %f out of bounds, should be > 0.0 and <= 1.0, forced to default: "
"%f"
msgstr ""
-#: util/atsa.c:2072
+#: util/atsa.c:2082
#, c-format
msgid ""
"windows cycles %d out of bounds, should be between 1 and 8, forced to "
"default: %d"
msgstr ""
-#: util/atsa.c:2080
+#: util/atsa.c:2090
#, c-format
msgid ""
"window type %d out of bounds, should be between 0 and 3, forced to default: "
"%d"
msgstr ""
-#: util/atsa.c:2088
+#: util/atsa.c:2098
#, c-format
msgid ""
"hop size %f out of bounds, should be > 0.0 and <= 1.0, forced to default: %f"
msgstr ""
-#: util/atsa.c:2096
+#: util/atsa.c:2106
#, c-format
msgid ""
"lowest magnitude %f out of bounds, should be >= 0.0 and <= 1.0, forced to "
"default: %f"
msgstr ""
-#: util/atsa.c:2120
+#: util/atsa.c:2130
#, c-format
msgid "atsa: %d frames are not enough for analysis, need at least %d"
msgstr ""
-#: util/atsa.c:2129
+#: util/atsa.c:2139
#, c-format
msgid "track length %d out of bounds, forced to: %d"
msgstr ""
-#: util/atsa.c:2138
+#: util/atsa.c:2148
#, c-format
msgid "min. segment length %d out of bounds, forced to: %d"
msgstr ""
-#: util/atsa.c:2147
+#: util/atsa.c:2157
#, c-format
msgid "min. gap length %d out of bounds, forced to: %d"
msgstr ""
-#: util/atsa.c:2153
+#: util/atsa.c:2163
#, c-format
msgid ""
"SMR threshold %f out of bounds, should be >= 0.0 and < %f dB SPL, forced to "
"default: %f"
msgstr ""
-#: util/atsa.c:2164
+#: util/atsa.c:2174
#, c-format
msgid ""
"min. seg. SMR %f out of bounds, should be >= %f and < %f dB SPL, forced to "
"default: %f"
msgstr ""
-#: util/atsa.c:2172
+#: util/atsa.c:2182
#, c-format
msgid ""
"last peak contribution %f out of bounds, should be >= 0.0 and <= 1.0, forced "
"to default: %f"
msgstr ""
-#: util/atsa.c:2180
+#: util/atsa.c:2190
#, c-format
msgid ""
"SMR contribution %f out of bounds, should be >= 0.0 and <= 1.0, forced to "
"default: %f"
msgstr ""
-#: util/atsa.c:2325
+#: util/atsa.c:2335
msgid "Initializing ATS data..."
msgstr ""
-#: util/atsa.c:2355
+#: util/atsa.c:2365
msgid "Computing residual..."
msgstr ""
-#: util/atsa.c:2366
+#: util/atsa.c:2381 util/atsa.c:2384
msgid "Analysing residual..."
msgstr ""
-#: util/atsa.c:2370
+#: util/atsa.c:2389
msgid "tracking completed.\n"
msgstr ""
-#: util/atsa.c:2478
+#: util/atsa.c:2497
msgid "Filling sound gaps..."
msgstr ""
-#: util/atsa.c:2566
+#: util/atsa.c:2585
msgid "Trimming short partials..."
msgstr ""
-#: util/atsa.c:2662
+#: util/atsa.c:2681
msgid "Computing averages..."
msgstr ""
-#: util/atsa.c:2713
+#: util/atsa.c:2732
msgid "No partials to track -- stopping\n"
msgstr ""
-#: util/atsa.c:2813
+#: util/atsa.c:2832
msgid "Soundfile analysis for ATS opcodes"
msgstr ""
@@ -10855,8 +10757,8 @@ msgstr ""
msgid "illegal number of filenames"
msgstr ""
-#: util/cvanal.c:113 util/dnoise.c:456 util/lpanal.c:518 util/pvanal.c:258
-#: util/srconv.c:351
+#: util/cvanal.c:113 util/dnoise.c:445 util/lpanal.c:518 util/pvanal.c:258
+#: util/srconv.c:350
#, c-format
msgid "error while opening %s"
msgstr ""
@@ -10896,256 +10798,256 @@ msgstr ""
msgid "Soundfile analysis for convolve"
msgstr ""
-#: util/dnoise.c:285
+#: util/dnoise.c:281
msgid "-o cannot be stdin\n"
msgstr ""
-#: util/dnoise.c:297
+#: util/dnoise.c:293
msgid "-A overriding local default WAV out"
msgstr ""
-#: util/dnoise.c:302
+#: util/dnoise.c:298
msgid "-J overriding local default AIFF/WAV out"
msgstr ""
-#: util/dnoise.c:309
+#: util/dnoise.c:305
msgid "-W overriding local default AIFF out"
msgstr ""
-#: util/dnoise.c:356
+#: util/dnoise.c:345
msgid "no t argument"
msgstr ""
-#: util/dnoise.c:379
+#: util/dnoise.c:368
msgid "no n argument"
msgstr ""
-#: util/dnoise.c:384
+#: util/dnoise.c:373
msgid "no b argument"
msgstr ""
-#: util/dnoise.c:392
+#: util/dnoise.c:381
msgid "no B argument"
msgstr ""
-#: util/dnoise.c:404
+#: util/dnoise.c:393
msgid "no E argument"
msgstr ""
-#: util/dnoise.c:408
+#: util/dnoise.c:397
msgid "no N argument"
msgstr ""
-#: util/dnoise.c:412
+#: util/dnoise.c:401
msgid "no M argument"
msgstr ""
-#: util/dnoise.c:416
+#: util/dnoise.c:405
msgid "no L argument"
msgstr ""
-#: util/dnoise.c:420
+#: util/dnoise.c:409
msgid "no w argument"
msgstr ""
-#: util/dnoise.c:424
+#: util/dnoise.c:413
msgid "no D argument"
msgstr ""
-#: util/dnoise.c:431 util/srconv.c:328
+#: util/dnoise.c:420 util/srconv.c:327
#, c-format
msgid "Looking at %c\n"
msgstr ""
-#: util/dnoise.c:438 util/srconv.c:336
+#: util/dnoise.c:427 util/srconv.c:335
#, c-format
msgid "Infile set to %s\n"
msgstr ""
-#: util/dnoise.c:441 util/srconv.c:339
+#: util/dnoise.c:430 util/srconv.c:338
#, c-format
msgid "End with %s\n"
msgstr ""
-#: util/dnoise.c:447
+#: util/dnoise.c:436
msgid "dnoise: no input file\n"
msgstr ""
-#: util/dnoise.c:451
+#: util/dnoise.c:440
msgid "Must have an example noise file (-i name)\n"
msgstr ""
-#: util/dnoise.c:479
+#: util/dnoise.c:468
#, c-format
msgid "cannot open %s.\n"
msgstr ""
-#: util/dnoise.c:491 util/srconv.c:461 util/srconv.c:473
+#: util/dnoise.c:480 util/srconv.c:460 util/srconv.c:472
#, c-format
msgid "cannot open %s."
msgstr "No es posible abrir %s."
-#: util/dnoise.c:510
+#: util/dnoise.c:499
msgid "dnoise: input MUST be mono or stereo\n"
msgstr ""
-#: util/dnoise.c:518
+#: util/dnoise.c:507
msgid "dnoise: cannot open noise reference file\n"
msgstr ""
-#: util/dnoise.c:523
+#: util/dnoise.c:512
msgid "Incompatible sample rates\n"
msgstr ""
-#: util/dnoise.c:542
+#: util/dnoise.c:531
#, c-format
msgid "dnoise: warning - N not a valid power of two; revised N = %d\n"
msgstr ""
-#: util/dnoise.c:552
+#: util/dnoise.c:541
msgid "dnoise: warning - do not specify both M and W\n"
msgstr ""
-#: util/dnoise.c:562
+#: util/dnoise.c:551
msgid "dnoise: warning - invalid W ignored\n"
msgstr ""
-#: util/dnoise.c:576
+#: util/dnoise.c:565
msgid "dnoise: warning - M is too small\n"
msgstr ""
-#: util/dnoise.c:586
+#: util/dnoise.c:575
msgid "dnoise: M too large\n"
msgstr ""
-#: util/dnoise.c:592
+#: util/dnoise.c:581
msgid "dnoise: L too large\n"
msgstr ""
-#: util/dnoise.c:602
+#: util/dnoise.c:591
#, c-format
msgid "writing %u-byte blks of %s to %s"
msgstr ""
-#: util/dnoise.c:627 util/dnoise.c:666 util/dnoise.c:721 util/dnoise.c:732
-#: util/dnoise.c:736 util/dnoise.c:743 util/dnoise.c:753 util/dnoise.c:758
-#: util/dnoise.c:762 util/dnoise.c:766 util/dnoise.c:770
+#: util/dnoise.c:616 util/dnoise.c:655 util/dnoise.c:710 util/dnoise.c:721
+#: util/dnoise.c:725 util/dnoise.c:732 util/dnoise.c:742 util/dnoise.c:747
+#: util/dnoise.c:751 util/dnoise.c:755 util/dnoise.c:759
msgid "dnoise: insufficient memory\n"
msgstr ""
-#: util/dnoise.c:779 util/dnoise.c:788
+#: util/dnoise.c:768 util/dnoise.c:777
msgid "dnoise: begin time is greater than EOF of noise file!"
msgstr ""
-#: util/dnoise.c:820
+#: util/dnoise.c:809
msgid "dnoise: not enough samples of noise reference\n"
msgstr ""
-#: util/dnoise.c:1118
+#: util/dnoise.c:1103
#, c-format
msgid "%5.1f seconds of input complete\n"
msgstr ""
-#: util/dnoise.c:1137
+#: util/dnoise.c:1122
msgid "processing complete\n"
msgstr ""
-#: util/dnoise.c:1147
+#: util/dnoise.c:1132
msgid "usage: dnoise [flags] input_file"
msgstr ""
-#: util/dnoise.c:1149
+#: util/dnoise.c:1134
msgid "flags:"
msgstr ""
-#: util/dnoise.c:1150
+#: util/dnoise.c:1135
msgid "i = noise reference soundfile"
msgstr ""
-#: util/dnoise.c:1151
+#: util/dnoise.c:1136
msgid "o = output file"
msgstr ""
-#: util/dnoise.c:1152
+#: util/dnoise.c:1137
msgid "N = # of bandpass filters (1024)"
msgstr ""
-#: util/dnoise.c:1153
+#: util/dnoise.c:1138
msgid "w = filter overlap factor: {0,1,(2),3} DON'T USE -w AND -M"
msgstr ""
-#: util/dnoise.c:1154
+#: util/dnoise.c:1139
msgid "M = analysis window length (N-1 unless -w is specified)"
msgstr ""
-#: util/dnoise.c:1155
+#: util/dnoise.c:1140
msgid "L = synthesis window length (M)"
msgstr ""
-#: util/dnoise.c:1156
+#: util/dnoise.c:1141
msgid "D = decimation factor (M/8)"
msgstr ""
-#: util/dnoise.c:1157
+#: util/dnoise.c:1142
msgid "b = begin time in noise reference soundfile (0)"
msgstr ""
-#: util/dnoise.c:1158
+#: util/dnoise.c:1143
msgid "B = starting sample in noise reference soundfile (0)"
msgstr ""
-#: util/dnoise.c:1159
+#: util/dnoise.c:1144
msgid "e = end time in noise reference soundfile (end)"
msgstr ""
-#: util/dnoise.c:1160
+#: util/dnoise.c:1145
msgid "E = final sample in noise reference soundfile (end)"
msgstr ""
-#: util/dnoise.c:1161
+#: util/dnoise.c:1146
msgid "t = threshold above noise reference in dB (30)"
msgstr ""
-#: util/dnoise.c:1162
+#: util/dnoise.c:1147
msgid "S = sharpness of noise-gate turnoff (1) (1 to 5)"
msgstr ""
-#: util/dnoise.c:1163
+#: util/dnoise.c:1148
msgid "n = number of FFT frames to average over (5)"
msgstr ""
-#: util/dnoise.c:1164
+#: util/dnoise.c:1149
msgid "m = minimum gain of noise-gate when off in dB (-40)"
msgstr ""
-#: util/dnoise.c:1165
+#: util/dnoise.c:1150
msgid "V : verbose - print status info"
msgstr ""
-#: util/dnoise.c:1166
+#: util/dnoise.c:1151
msgid "A : AIFF format output"
msgstr ""
-#: util/dnoise.c:1167
+#: util/dnoise.c:1152
msgid "W : WAV format output"
msgstr ""
-#: util/dnoise.c:1168
+#: util/dnoise.c:1153
msgid "J : IRCAM format output"
msgstr ""
-#: util/dnoise.c:1187
+#: util/dnoise.c:1172
#, c-format
msgid "soundfile write returned sample count of %d, not %d\n"
msgstr ""
-#: util/dnoise.c:1189
+#: util/dnoise.c:1174
msgid ""
"(disk may be full...\n"
" closing the file ...)\n"
msgstr ""
-#: util/dnoise.c:1257
+#: util/dnoise.c:1242
msgid "Removes noise from a sound file"
msgstr ""
@@ -11153,7 +11055,7 @@ msgstr ""
msgid "Usage:\tenvext [-flags] soundfile\n"
msgstr ""
-#: util/envext.c:54 util/srconv.c:738
+#: util/envext.c:54 util/srconv.c:737
msgid "-o fnam\tsound output filename\n"
msgstr ""
@@ -11187,7 +11089,7 @@ msgstr ""
msgid "enveloping %ld sample frames (%3.1f secs)\n"
msgstr ""
-#: util/envext.c:179
+#: util/envext.c:177
msgid "Create a text file of envelope"
msgstr ""
@@ -11601,7 +11503,7 @@ msgstr ""
msgid "Legal flags are:"
msgstr ""
-#: util/mixer.c:107 util/scale.c:60 util/srconv.c:753
+#: util/mixer.c:107 util/scale.c:60 util/srconv.c:752
msgid "-H#\tprint a heartbeat style 1, 2 or 3 at each soundfile write"
msgstr ""
@@ -11641,7 +11543,7 @@ msgstr ""
msgid "mixer: error: "
msgstr ""
-#: util/mixer.c:188 util/scale.c:161 util/srconv.c:232
+#: util/mixer.c:188 util/scale.c:161 util/srconv.c:231
#, c-format
msgid "%s not a recognized SFOUTYP env setting"
msgstr ""
@@ -11870,17 +11772,17 @@ msgstr ""
msgid "Soundfile analysis for pvoc"
msgstr ""
-#: util/pvanal.c:469
+#: util/pvanal.c:467
#, c-format
msgid "pvxanal: unable to create analysis file: %s"
msgstr ""
-#: util/pvanal.c:500 util/pvanal.c:532
+#: util/pvanal.c:498 util/pvanal.c:530
#, c-format
msgid "pvxanal: error writing analysis frames: %s\n"
msgstr ""
-#: util/pvanal.c:542
+#: util/pvanal.c:540
#, c-format
msgid ""
"\n"
@@ -11970,7 +11872,7 @@ msgstr ""
msgid "-P fpnum\tscale file to given percentage of full"
msgstr ""
-#: util/scale.c:62 util/srconv.c:755
+#: util/scale.c:62 util/srconv.c:754
msgid "-- fnam\tlog output to file"
msgstr ""
@@ -12121,75 +12023,75 @@ msgstr ""
msgid "Sound format -%c has been overruled by -%c"
msgstr ""
-#: util/srconv.c:299
+#: util/srconv.c:298
msgid "No Q argument"
msgstr ""
-#: util/srconv.c:304
+#: util/srconv.c:303
msgid "No P argument"
msgstr ""
-#: util/srconv.c:313
+#: util/srconv.c:312
msgid "No r argument"
msgstr ""
-#: util/srconv.c:322
+#: util/srconv.c:321
msgid "No break file"
msgstr ""
-#: util/srconv.c:345
+#: util/srconv.c:344
msgid "No input given\n"
msgstr ""
-#: util/srconv.c:362
+#: util/srconv.c:361
msgid "srconv: cannot specify both -r and -P"
msgstr ""
-#: util/srconv.c:373
+#: util/srconv.c:372
msgid "srconv: cannot open time-vary function file"
msgstr ""
-#: util/srconv.c:389
+#: util/srconv.c:388
msgid "srconv: too few x-y pairs in time-vary function file"
msgstr ""
-#: util/srconv.c:403
+#: util/srconv.c:402
msgid "srconv: first x value in time-vary function must be 0"
msgstr ""
-#: util/srconv.c:408
+#: util/srconv.c:407
msgid "srconv: invalid initial y value in time-vary function"
msgstr ""
-#: util/srconv.c:413 util/srconv.c:705
+#: util/srconv.c:412 util/srconv.c:704
msgid "srconv: invalid x values in time-vary function"
msgstr ""
-#: util/srconv.c:732
+#: util/srconv.c:731
msgid ""
"usage: srconv [flags] infile\n"
"\n"
"flags:"
msgstr ""
-#: util/srconv.c:733
+#: util/srconv.c:732
msgid ""
"-P num\tpitch transposition ratio (srate/r) [do not specify both P and r]"
msgstr ""
-#: util/srconv.c:735
+#: util/srconv.c:734
msgid "-Q num\tquality factor (1 to 8: default = 2)"
msgstr ""
-#: util/srconv.c:736
+#: util/srconv.c:735
msgid "-i filnam\tbreak file"
msgstr ""
-#: util/srconv.c:737
+#: util/srconv.c:736
msgid "-r num\toutput sample rate (must be specified)"
msgstr ""
-#: util/srconv.c:821
+#: util/srconv.c:820
msgid "Sample rate conversion"
msgstr ""
@@ -12339,6 +12241,58 @@ msgstr ""
msgid "Extract part of a sound file"
msgstr ""
+#, fuzzy
+#~ msgid "tableseg: not initialized"
+#~ msgstr "tableseg: no ha sido inicializado"
+
+#, fuzzy
+#~ msgid "tablexseg: not initialized"
+#~ msgstr "tablexseg: no ha sido inicializado"
+
+#, fuzzy
+#~ msgid "vdelayk: not initialized"
+#~ msgstr "delayk: no ha sido inicializado"
+
+#, fuzzy
+#~ msgid " line %d: %s"
+#~ msgstr ", lÃnea %d:\n"
+
+#~ msgid "cannot find end of file %s"
+#~ msgstr "No se puede encontrar el final del archivo %s"
+
+#~ msgid "ftell error on %s"
+#~ msgstr "ftell error en %s"
+
+#~ msgid " included from line %d of file input %s%s"
+#~ msgstr "en la lÃnea %d del archivo de entrada %s"
+
+#~ msgid " called from line %d of file input %s%s"
+#~ msgstr "en la lÃnea %d del archivo de entrada %s"
+
+#~ msgid " in line %d of file input %s%s"
+#~ msgstr "en la lÃnea %d del archivo de entrada %s"
+
+#~ msgid "Ignoring name %s not in file\n"
+#~ msgstr "Ignorando nombre %s, no está en el archivo\n"
+
+#~ msgid "cannot open input file %s"
+#~ msgstr "No es posible abrir el archivo de entrada %s"
+
+#~ msgid "FLsetsnap: invalid table"
+#~ msgstr "FLsetsnap: tabla inválida"
+
+#~ msgid "Yes"
+#~ msgstr "Si"
+
+#~ msgid "end of widget thread\n"
+#~ msgstr "fin del hilo de widgets\n"
+
+#~ msgid "scorename: %s\n"
+#~ msgstr "nombre del score: %s\n"
+
+#~ msgid "Failed to create %s"
+#~ msgstr "No fue posible crear %s"
+
#~ msgid "Size = %d"
#~ msgstr "Tamaño = %d"
diff --git a/po/french.po b/po/french.po
index 082247e..d609868 100644
--- a/po/french.po
+++ b/po/french.po
@@ -10,7 +10,7 @@ msgstr ""
"Project-Id-Version: CSOUND 5.xx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-07-26 19:39+0100\n"
-"PO-Revision-Date: 2010-12-29 12:07+0000\n"
+"PO-Revision-Date: 2011-12-20 22:46+0000\n"
"Last-Translator: François Pinot <fggpinot at gmail.com>\n"
"Language-Team: French\n"
"Language: \n"
@@ -33,22 +33,22 @@ msgstr "auxlist pour l'instr %s [%d] (%p) :\n"
msgid "auxlist for instr %d (%p):\n"
msgstr "auxlist pour l'instr %d (%p) :\n"
-#: Engine/auxfd.c:153
+#: Engine/auxfd.c:154
#, c-format
msgid "\tauxch at %p: size %ld, auxp %p, endp %p\n"
msgstr "\tauxch à %p : taille %ld, auxp %p, endp %p\n"
-#: Engine/auxfd.c:165
+#: Engine/auxfd.c:166
#, c-format
msgid "fdlist for instr %s [%d] (%p):"
msgstr "fdlist pour l'instr %s [%d] (%p) :"
-#: Engine/auxfd.c:168
+#: Engine/auxfd.c:169
#, c-format
msgid "fdlist for instr %d (%p):"
msgstr "fdlist pour l'instr %d (%p) :"
-#: Engine/auxfd.c:171
+#: Engine/auxfd.c:172
#, c-format
msgid " fd %p in %p"
msgstr " fd %p dans %p"
@@ -101,375 +101,329 @@ msgstr "la chaîne dépasse la longueur maximale autorisée"
msgid "(unknown error)"
msgstr "(erreur inconnue)"
-#: Engine/csound_orc_compile.c:214 Engine/rdorch.c:1832
+#: Engine/csound_orc_compile.c:138
+#, c-format
+msgid ""
+"input arg %d '%s' of type %s not allowed when expecting %c (for opcode %s), "
+"line %d\n"
+msgstr ""
+"l'argument numero %d d'entrée '%s' de type %s est interdit lorsque l'on "
+"attend %c (pour opcode %s) ligne %d\n"
+
+#: Engine/csound_orc_compile.c:265 Engine/rdorch.c:1862
msgid "missing or extra arg"
msgstr "argument manquant ou en trop"
-#: Engine/csound_orc_compile.c:218
-#, fuzzy
+#: Engine/csound_orc_compile.c:269
msgid "too many input args\n"
-msgstr "trop d'arguments en entrée"
+msgstr "trop d'arguments en entrée\n"
+
+#: Engine/csound_orc_compile.c:304
+#, c-format
+msgid "input arg '%s' used before defined (in opcode %s), line %d\n"
+msgstr ""
+"l'argument en entrée '%s' a été utilisé avant d'être défini (pour opcode %s) "
+"ligne %d\n"
+
+#: Engine/csound_orc_compile.c:380
+#, c-format
+msgid ""
+"output name previously used, type '%c' must be uniquely defined, line %d"
+msgstr ""
+"nom de sortie déjà utilisé, le type '%c' doit avoir une définition unique, "
+"ligne %d"
-#: Engine/csound_orc_compile.c:475
-#, fuzzy, c-format
+#: Engine/csound_orc_compile.c:386
+#, c-format
+msgid "output arg '%s' illegal type (for opcode %s), line %d\n"
+msgstr ""
+"l'argument de sortie '%s' est de type illégal (pour opcode %s) ligne %d\n"
+
+#: Engine/csound_orc_compile.c:541
+#, c-format
msgid "create_opcode: No rule to handle statement of type %d\n"
msgstr "create_opcode : aucune règle pour traiter une instruction de type %d\n"
-#: Engine/csound_orc_compile.c:671
+#: Engine/csound_orc_compile.c:738
#, c-format
msgid "create_instrument: instr num %ld\n"
msgstr "create_instrument : numéro d'instrument %ld\n"
-#: Engine/csound_orc_compile.c:681
+#: Engine/csound_orc_compile.c:748
#, c-format
msgid "create_instrument: instr name %s\n"
msgstr "create_instrument : nom de l'instrument %s\n"
-#: Engine/csound_orc_compile.c:688 Engine/otran.c:351
+#: Engine/csound_orc_compile.c:755 Engine/otran.c:364
msgid "invalid name for instrument"
msgstr "nom d'instrument non valide"
-#: Engine/csound_orc_compile.c:692 Engine/otran.c:356
+#: Engine/csound_orc_compile.c:759 Engine/otran.c:370
#, c-format
msgid "instr %s redefined"
msgstr "instr %s redéfini"
-#: Engine/csound_orc_compile.c:833 Engine/otran.c:145 Engine/symbtab.c:394
-#, c-format
-msgid "invalid input type for opcode %s"
-msgstr "type d'entrée non valide pour l'opcode %s"
-
-#: Engine/csound_orc_compile.c:838 Engine/otran.c:150 Engine/symbtab.c:399
-#, c-format
-msgid "too many input args for opcode %s"
-msgstr "trop d'arguments en entrée pour l'opcode %s"
-
-#: Engine/csound_orc_compile.c:853 Engine/otran.c:165 Engine/symbtab.c:414
-#, c-format
-msgid "too many output args for opcode %s"
-msgstr "trop d'arguments en sortie pour l'opcode %s"
-
-#: Engine/csound_orc_compile.c:869 Engine/otran.c:187 Engine/symbtab.c:433
-#, c-format
-msgid "invalid output type for opcode %s"
-msgstr "type de sortie non valide pour l'opcode %s"
-
-#: Engine/csound_orc_compile.c:954 Engine/otran.c:339
+#: Engine/csound_orc_compile.c:903 Engine/otran.c:352
#, c-format
msgid "instr %ld redefined"
msgstr "instr %ld redéfini"
-#: Engine/csound_orc_compile.c:964
+#: Engine/csound_orc_compile.c:914
msgid "!!! csound->opcodeInfo is NULL !!!\n"
msgstr "!!! csound->opcodeInfo est NULL !!!\n"
-#: Engine/csound_orc_compile.c:1111
+#: Engine/csound_orc_compile.c:1083
#, c-format
msgid "Unknown TREE node of type %d found in root.\n"
msgstr "Noeud inconnu de type %d trouvé à la racine.\n"
-#: Engine/csound_orc_compile.c:1168 Engine/otran.c:565 Engine/otran.c:1414
+#: Engine/csound_orc_compile.c:1140 Engine/otran.c:579 Engine/otran.c:1433
#, c-format
msgid "%s invalid sample rate"
msgstr "%s taux d'échantillonnage non valide"
-#: Engine/csound_orc_compile.c:1170 Engine/otran.c:567 Engine/otran.c:1416
+#: Engine/csound_orc_compile.c:1142 Engine/otran.c:581 Engine/otran.c:1435
#, c-format
msgid "%s invalid control rate"
msgstr "%s taux de contrôle non valide"
-#: Engine/csound_orc_compile.c:1173 Engine/otran.c:570 Engine/otran.c:1412
+#: Engine/csound_orc_compile.c:1146 Engine/otran.c:584 Engine/otran.c:1431
#, c-format
msgid "%s invalid ksmps value"
msgstr "%s valeur de ksmps non valide"
-#: Engine/csound_orc_compile.c:1176 Engine/otran.c:572 Engine/otran.c:1418
+#: Engine/csound_orc_compile.c:1149 Engine/otran.c:587 Engine/otran.c:1437
#, c-format
msgid "%s inconsistent sr, kr, ksmps"
msgstr "%s sr, kr, ksmps contradictoires"
-#: Engine/csound_orc_compile.c:1190
+#: Engine/csound_orc_compile.c:1165
msgid "perf-pass statements illegal in header blk\n"
msgstr "les instructions d'exécution sont interdites dans le bloc d'en-tête\n"
-#: Engine/csound_orc_compile.c:1195
+#: Engine/csound_orc_compile.c:1170
#, c-format
msgid "%d syntax errors in orchestra. compilation invalid\n"
msgstr "%d erreurs de syntaxe dans l'orchestre. Compilation non valide\n"
-#: Engine/csound_orc_compile.c:1255 Engine/otran.c:656
+#: Engine/csound_orc_compile.c:1230 Engine/otran.c:671
msgid "inconsistent argoff sumcount"
msgstr "nombre d'arguments incohérent"
-#: Engine/csound_orc_compile.c:1327 Engine/otran.c:725
+#: Engine/csound_orc_compile.c:1302 Engine/otran.c:740
#, c-format
msgid "LABELS list is full...extending to %d\n"
msgstr "la liste des ETIQUETTES est pleine... extension à %d\n"
-#: Engine/csound_orc_compile.c:1365 Engine/otran.c:763
+#: Engine/csound_orc_compile.c:1340 Engine/otran.c:778
#, c-format
msgid "GOTOS list is full..extending to %d\n"
msgstr "la liste des GOTOS est pleine... extension à %d\n"
-#: Engine/csound_orc_compile.c:1398 Engine/otran.c:796
+#: Engine/csound_orc_compile.c:1373 Engine/otran.c:811
#, c-format
msgid "target label '%s' not found"
msgstr "étiquette cible '%s' non trouvée"
-#: Engine/csound_orc_compile.c:1463 Engine/otran.c:851
+#: Engine/csound_orc_compile.c:1451 Engine/otran.c:866
#, c-format
msgid "string syntax '%s'"
msgstr "syntaxe de chaîne '%s'"
-#: Engine/csound_orc_compile.c:1513 Engine/otran.c:901
+#: Engine/csound_orc_compile.c:1501 Engine/otran.c:916
#, c-format
msgid "numeric syntax '%s'"
msgstr "syntaxe numérique '%s'"
-#: Engine/csound_orc_compile.c:1539 Engine/otran.c:927
+#: Engine/csound_orc_compile.c:1527 Engine/otran.c:942
#, c-format
msgid "extending Floating pool to %d\n"
msgstr "agrandissement du réservoir de valeurs flottantes à %d\n"
-#: Engine/csound_orc_compile.c:1578 Engine/otran.c:999
+#: Engine/csound_orc_compile.c:1566 Engine/otran.c:1018
msgid "gblnamset(): memory allocation failure"
msgstr "gblnamset() : échec de l'allocation de mémoire"
-#: Engine/csound_orc_compile.c:1606 Engine/otran.c:1027
+#: Engine/csound_orc_compile.c:1594 Engine/otran.c:1046
msgid "lclnamset(): memory allocation failure"
msgstr "lclnamset() : échec de l'allocation de mémoire"
-#: Engine/csound_orc_compile.c:1632 Engine/otran.c:1052
+#: Engine/csound_orc_compile.c:1620 Engine/otran.c:1071
msgid "unexpected global name"
msgstr "nom global inattendu"
-#: Engine/csound_orc_compile.c:1655 Engine/otran.c:1074
+#: Engine/csound_orc_compile.c:1643 Engine/otran.c:1093
msgid "unknown nametype"
msgstr "type nommé inconnu"
-#: Engine/csound_orc.l:239
+#: Engine/csound_orc_expressions.c:459
#, c-format
-msgid "unterminated string found on line %d >>%s<<\n"
-msgstr ""
+msgid "error: function %s with arg type %c not found, line %d \n"
+msgstr "erreur : fonction %s avec le type d'arg %c introuvable, ligne %d\n"
-#: Engine/csound_orc.l:259 Engine/csound_orc.l:286 Engine/csound_orc.l:314
-#: Engine/csound_orc.l:367 Engine/rdorch.c:901 Engine/sread.c:396
+#: Engine/csound_orc_expressions.c:862
#, c-format
-msgid "Undefined macro: '%s'"
-msgstr "Macro non définie : '%s'"
+msgid "error: non-existent statement in conditional, line %d \n"
+msgstr "erreur : instruction inexistante dans la conditionnelle, ligne %d\n"
-#: Engine/csound_orc.l:265 Engine/csound_orc.l:292
-msgid "Includes nested too deeply"
-msgstr "Imbrication des boucles trop profonde"
-
-#: Engine/csound_orc.l:335 Engine/csound_orc.l:388 Engine/rdorch.c:940
+#: Engine/csound_orc_semantics.c:157
#, c-format
msgid ""
-"Missing argument terminator\n"
-"%.98s"
+"\n"
+"error: %s (token \"%s\")"
msgstr ""
-"Le terminateur d'argument est manquant\n"
-"%.98s"
-
-#: Engine/csound_orc.l:484
-#, c-format
-msgid "Line %d: Unknown character: '%c'(%2x)\n"
-msgstr "Ligne %d : Caractère inconnu : '%c'(%2x)\n"
-
-#: Engine/csound_orc.l:527
-#, c-format
-msgid "Cannot open file \"%s\"\n"
-msgstr "Impossible d'ouvrir le fichier \"%s\"\n"
-
-#: Engine/csound_orc.l:573 Engine/rdorch.c:689 Engine/sread.c:1595
-msgid "macro error\n"
-msgstr "erreur de macro\n"
+"\n"
+"erreur : %s (symbole %s)"
-#: Engine/csound_orc.l:631 Engine/rdorch.c:845 Engine/sread.c:1686
+#: Engine/csound_orc_semantics.c:159
#, c-format
-msgid "macro %s undefined\n"
-msgstr "la macro %s n'est pas définie\n"
-
-#: Engine/csound_orc.l:645 Engine/rdorch.c:859 Engine/sread.c:294
-msgid "Undefining undefined macro"
-msgstr "Libération de la macro non définie"
+msgid ""
+" line %d:\n"
+">>>"
+msgstr ""
+" ligne %d :\n"
+">>>"
-#: Engine/csound_orc.l:786 Engine/rdorch.c:413 Engine/sread.c:741
+#: Engine/csound_orc_semantics.c:732
#, c-format
-msgid "Macro definition for %*s\n"
-msgstr "Définition de macro pour %*s\n"
+msgid "insufficient required arguments for opcode %s on line %d\n"
+msgstr "arguments requis manquants pour opcode %s ligne %d\n"
-#: Engine/csound_orc.l:789 Engine/rdorch.c:416
-msgid "Invalid macro name for --omacro"
-msgstr "Nom de macro non valide pour --omacro"
-
-#: Engine/csound_orc.y:270
-msgid "No number following instr\n"
-msgstr "Aucun numéro ne suit instr\n"
-
-#: Engine/csound_orc_semantics.c:127
-#, fuzzy, c-format
-msgid "error: %s (token \"%s\")"
-msgstr "%s : erreur : %s (%s)\n"
-
-#: Engine/csound_orc_semantics.c:129
-#, fuzzy, c-format
-msgid " line %d: %s"
-msgstr ", ligne %d :\n"
-
-#: Engine/csound_orc_semantics.c:702 Engine/rdorch.c:1863
-msgid "insufficient required arguments"
-msgstr "arguments requis manquants"
-
-#: Engine/csound_orc_semantics.c:768 Engine/rdorch.c:1617 Engine/rdorch.c:1635
-#: Engine/rdorch.c:1676 Engine/rdorch.c:1811 Engine/rdorch.c:1980
+#: Engine/csound_orc_semantics.c:797 Engine/rdorch.c:1644 Engine/rdorch.c:1662
+#: Engine/rdorch.c:1703 Engine/rdorch.c:1841 Engine/rdorch.c:2011
#, c-format
msgid "modified opcod: %s"
msgstr "opcode modifié : %s"
-#: Engine/cs_par_dispatch.c:113 Engine/cs_par_dispatch.c:125
+#: Engine/cs_par_dispatch.c:115 Engine/cs_par_dispatch.c:128
#, c-format
msgid "Poorly specified global lock index: %i [max: %i]\n"
-msgstr ""
+msgstr "Index de verrou global faiblement spécifié : %i [max : %i]\n"
-#: Engine/cs_par_dispatch.c:138 Engine/cs_par_dispatch.c:157
+#: Engine/cs_par_dispatch.c:142 Engine/cs_par_dispatch.c:162
msgid "Invalid NULL parameter name for a global variable\n"
-msgstr ""
+msgstr "Nom de paramètre NULL non valide pour une variable globale\n"
-#: Engine/cs_par_dispatch.c:505 Engine/cs_par_dispatch.c:528
-#: Engine/cs_par_dispatch.c:2463 Engine/cs_par_dispatch.c:2507
-#: Engine/cs_par_dispatch.c:2509 Engine/cs_par_dispatch.c:2570
-#, fuzzy
+#: Engine/cs_par_dispatch.c:526 Engine/cs_par_dispatch.c:553
+#: Engine/cs_par_dispatch.c:2543 Engine/cs_par_dispatch.c:2588
+#: Engine/cs_par_dispatch.c:2590 Engine/cs_par_dispatch.c:2654
msgid "Invalid NULL Parameter entry"
-msgstr "paramètre de mode non valide"
+msgstr "Paramètre entry NULL non valide"
-#: Engine/cs_par_dispatch.c:507 Engine/cs_par_dispatch.c:541
-#: Engine/cs_par_dispatch.c:566 Engine/cs_par_dispatch.c:605
-#, fuzzy
+#: Engine/cs_par_dispatch.c:528 Engine/cs_par_dispatch.c:567
+#: Engine/cs_par_dispatch.c:594 Engine/cs_par_dispatch.c:635
msgid "Invalid NULL Parameter name"
-msgstr "nom de variable non valide"
+msgstr "Paramètre name NULL non valide"
-#: Engine/cs_par_dispatch.c:512
-#, fuzzy
+#: Engine/cs_par_dispatch.c:535
msgid "Failed to allocate Opcode Weight cache entry"
-msgstr "Echec de l'allocation d'une nouvelle entrée d'opcode."
+msgstr "Echec de l'allocation de l'entrée du cache de poids d'opcode."
-#: Engine/cs_par_dispatch.c:632 Engine/cs_par_dispatch.c:718
+#: Engine/cs_par_dispatch.c:664 Engine/cs_par_dispatch.c:755
msgid "No Weights to Dump (Using Defaults)\n"
-msgstr ""
+msgstr "Aucun poids à sortir (valeurs par défaut)\n"
-#: Engine/cs_par_dispatch.c:670 Engine/cs_par_dispatch.c:794
+#: Engine/cs_par_dispatch.c:705 Engine/cs_par_dispatch.c:835
#, c-format
msgid "Opcode Weight Spec File not found at: %s"
-msgstr ""
+msgstr "Fichier de spéc de poids d'opcode non trouvé à : %s"
-#: Engine/cs_par_dispatch.c:722
+#: Engine/cs_par_dispatch.c:759
msgid "Weights Dump\n"
-msgstr ""
+msgstr "Dump des poids\n"
-#: Engine/cs_par_dispatch.c:866
+#: Engine/cs_par_dispatch.c:907
#, c-format
msgid "Parallel Spec File not found at: %s"
-msgstr ""
+msgstr "Fichier de spéc parallèle non trouvé à : %s"
-#: Engine/cs_par_dispatch.c:872
+#: Engine/cs_par_dispatch.c:913
msgid "Parallel Spec File invalid format expected weight_min parameter"
-msgstr ""
+msgstr "Format du fichier de spéc parallèle non valide, paramètre weight_min attendu"
-#: Engine/cs_par_dispatch.c:877
+#: Engine/cs_par_dispatch.c:918
msgid "Parallel Spec File invalid format expected weight_max parameter"
-msgstr ""
+msgstr "Format du fichier de spéc parallèle non valide, paramètre weight_max attendu"
-#: Engine/cs_par_dispatch.c:881
+#: Engine/cs_par_dispatch.c:922
msgid "Parallel Spec File invalid format expected roots_avail_min parameter"
-msgstr ""
+msgstr "Format du fichier de spéc parallèle non valide, paramètre roots_avail_min attendu"
-#: Engine/cs_par_dispatch.c:885
+#: Engine/cs_par_dispatch.c:926
msgid "Parallel Spec File invalid format expected roots_avail_max parameter"
-msgstr ""
-
-#: Engine/cs_par_dispatch.c:961 Engine/cs_par_dispatch.c:985
-#: Engine/cs_par_dispatch.c:1109 Engine/cs_par_dispatch.c:1195
-#: Engine/cs_par_dispatch.c:1332 Engine/cs_par_dispatch.c:1366
-#: Engine/cs_par_dispatch.c:1383 Engine/cs_par_dispatch.c:1405
-#: Engine/cs_par_dispatch.c:1432 Engine/cs_par_dispatch.c:1452
-#: Engine/cs_par_dispatch.c:1476 Engine/cs_par_dispatch.c:1566
-#: Engine/cs_par_dispatch.c:1621 Engine/cs_par_dispatch.c:1714
-#: Engine/cs_par_dispatch.c:1769 Engine/cs_par_dispatch.c:2597
-#, fuzzy
+msgstr "Format du fichier de spéc parallèle non valide, paramètre roots_avail_max attendu"
+
+#: Engine/cs_par_dispatch.c:1003 Engine/cs_par_dispatch.c:1027
+#: Engine/cs_par_dispatch.c:1155 Engine/cs_par_dispatch.c:1251
+#: Engine/cs_par_dispatch.c:1405 Engine/cs_par_dispatch.c:1439
+#: Engine/cs_par_dispatch.c:1456 Engine/cs_par_dispatch.c:1478
+#: Engine/cs_par_dispatch.c:1506 Engine/cs_par_dispatch.c:1528
+#: Engine/cs_par_dispatch.c:1552 Engine/cs_par_dispatch.c:1644
+#: Engine/cs_par_dispatch.c:1699 Engine/cs_par_dispatch.c:1792
+#: Engine/cs_par_dispatch.c:1847 Engine/cs_par_dispatch.c:2681
msgid "Invalid NULL Parameter dag"
-msgstr "paramètre de mode non valide : %d"
+msgstr "Paramètre dag NULL non valide"
-#: Engine/cs_par_dispatch.c:966
-#, fuzzy
+#: Engine/cs_par_dispatch.c:1008
msgid "Failed to allocate dag"
-msgstr "La création de %s a échoué"
+msgstr "L'allocation de dag a échoué"
-#: Engine/cs_par_dispatch.c:1017 Engine/cs_par_dispatch.c:1040
-#: Engine/cs_par_dispatch.c:1062 Engine/cs_par_dispatch.c:1064
-#, fuzzy
+#: Engine/cs_par_dispatch.c:1060 Engine/cs_par_dispatch.c:1083
+#: Engine/cs_par_dispatch.c:1105 Engine/cs_par_dispatch.c:1107
msgid "Invalid NULL Parameter dag_node"
-msgstr "paramètre de mode non valide : %d"
+msgstr "Paramètre dag_node NULL non valide"
-#: Engine/cs_par_dispatch.c:1019
-#, fuzzy
+#: Engine/cs_par_dispatch.c:1062
msgid "Invalid NULL Parameter instr"
-msgstr "paramètre de mode non valide"
+msgstr "Paramètre instr NULL non valide"
-#: Engine/cs_par_dispatch.c:1021
-#, fuzzy
+#: Engine/cs_par_dispatch.c:1064
msgid "Invalid NULL Parameter insds"
-msgstr "paramètre de mode non valide : %d"
+msgstr "Paramètre insds NULL non valide"
-#: Engine/cs_par_dispatch.c:1026 Engine/cs_par_dispatch.c:1048
-#, fuzzy
+#: Engine/cs_par_dispatch.c:1069 Engine/cs_par_dispatch.c:1091
msgid "Failed to allocate dag_node"
-msgstr "Echec de l'allocation d'une nouvelle entrée d'opcode."
+msgstr "L'allocation de dag_node a échoué"
-#: Engine/cs_par_dispatch.c:1043
-#, fuzzy
+#: Engine/cs_par_dispatch.c:1086
msgid "Invalid Parameter count must be greater than 0"
-msgstr "granule_set : iratio doit être supérieur à 0"
+msgstr "Nombre des paramètres non valide, doit être supérieur à 0"
-#: Engine/cs_par_dispatch.c:1175 Engine/cs_par_dispatch.c:1433
-#: Engine/cs_par_dispatch.c:2465 Engine/cs_par_dispatch.c:2571
-#: Engine/cs_par_dispatch.c:2598
-#, fuzzy
+#: Engine/cs_par_dispatch.c:1229 Engine/cs_par_dispatch.c:1508
+#: Engine/cs_par_dispatch.c:2545 Engine/cs_par_dispatch.c:2655
+#: Engine/cs_par_dispatch.c:2682
msgid "Invalid NULL Parameter chain"
-msgstr "paramètre de mode non valide"
+msgstr "Paramètre chain NULL non valide"
-#: Engine/cs_par_dispatch.c:1183
+#: Engine/cs_par_dispatch.c:1237
#, c-format
msgid "Failed to find semantic information for instrument '%i'"
-msgstr ""
+msgstr "Impossible de trouver l'information sémantique pour l'instrument '%i'"
-#: Engine/cs_par_dispatch.c:1478
-#, fuzzy
+#: Engine/cs_par_dispatch.c:1554
msgid "Invalid NULL Parameter node"
-msgstr "paramètre de mode non valide : %d"
+msgstr "Paramètre node NULL non valide"
-#: Engine/cs_par_dispatch.c:1480
-#, fuzzy
+#: Engine/cs_par_dispatch.c:1556
msgid "Invalid NULL Parameter update_hdl"
-msgstr "paramètre de mode non valide : %d"
+msgstr "Paramètre update_hdl NULL non valide"
-#: Engine/cs_par_dispatch.c:1569
+#: Engine/cs_par_dispatch.c:1647
msgid "Invalid Parameter update_hdl is outside the DAG range"
-msgstr ""
+msgstr "Paramètre update_hdl non valide, hors limites de DAG"
-#: Engine/cs_par_dispatch.c:2417
-#, fuzzy, c-format
+#: Engine/cs_par_dispatch.c:2497
+#, c-format
msgid "Parallel Dump File not found at: %s for writing"
-msgstr "impossible d'ouvrir %s en écriture"
+msgstr "Fichier de dump parallèle non trouvé à : %s pour écriture"
-#: Engine/cs_par_dispatch.c:2477
-#, fuzzy
+#: Engine/cs_par_dispatch.c:2557
msgid "Failed to allocate Dag2 cache entry"
-msgstr "Echec de l'allocation d'une nouvelle entrée d'opcode."
+msgstr "L'allocation du cache d'entrée de Dag2 a échoué"
-#: Engine/cs_par_dispatch.c:2527
+#: Engine/cs_par_dispatch.c:2610
msgid "Cache Update\n"
-msgstr ""
+msgstr "Mise à jour du cache\n"
#: Engine/envvar.c:265
#, c-format
@@ -481,12 +435,12 @@ msgstr "La variable d'environnement '%s' a été fixée à "
msgid "Creating search path cache for '%s':"
msgstr "Création du cache de chemin de recherche pour '%s' :"
-#: Engine/envvar.c:1082
+#: Engine/envvar.c:1083
#, c-format
msgid "internal error: csoundFileOpen(): invalid type: %d"
msgstr "erreur interne : csoundFileOpen() : type non valide : %d"
-#: Engine/envvar.c:1264
+#: Engine/envvar.c:1266
#, c-format
msgid "internal error: csoundCreateFileHandle(): invalid type: %d"
msgstr "erreur interne : csoundCreateFileHandle() : type non valide : %d"
@@ -546,48 +500,48 @@ msgstr "compte des termes"
msgid "expression syntax"
msgstr "syntaxe de l'expression"
-#: Engine/fgens.c:95
+#: Engine/fgens.c:91
msgid "unknown GEN number"
msgstr "numéro de GEN inconnu"
-#: Engine/fgens.c:137
+#: Engine/fgens.c:133
msgid "ftable does not exist"
msgstr "la ftable n'existe pas"
-#: Engine/fgens.c:142
+#: Engine/fgens.c:138
#, c-format
msgid "ftable %d now deleted\n"
msgstr "la ftable %d est maintenant supprimée\n"
-#: Engine/fgens.c:157 Engine/fgens.c:1597 Engine/fgens.c:1683
-#: Engine/fgens.c:1762 Engine/fgens.c:1878 Engine/fgens.c:1959
-#: Engine/fgens.c:2867
+#: Engine/fgens.c:153 Engine/fgens.c:1593 Engine/fgens.c:1679
+#: Engine/fgens.c:1758 Engine/fgens.c:1874 Engine/fgens.c:1955
+#: Engine/fgens.c:2909
msgid "insufficient gen arguments"
msgstr "nombre d'arguments de GEN insuffisant"
-#: Engine/fgens.c:183 Opcodes/ftgen.c:116
+#: Engine/fgens.c:179 Opcodes/ftgen.c:116
#, c-format
msgid "Named gen \"%s\" not defined"
msgstr "Le GEN nommé \"%s\" n'est pas défini"
-#: Engine/fgens.c:190
+#: Engine/fgens.c:186
msgid "illegal gen number"
msgstr "numéro de GEN interdit"
-#: Engine/fgens.c:198
-msgid "deferred size for GENs 1, 23 or 28 only"
-msgstr "taille différée seulement pour GEN1, GEN23 et GEN28"
+#: Engine/fgens.c:194
+msgid "deferred size for GENs 1, 23, 28 or 49 only"
+msgstr "taille différée seulement pour GEN1, GEN23, GEN28 et GEN49"
-#: Engine/fgens.c:201 Engine/fgens.c:249
+#: Engine/fgens.c:197 Engine/fgens.c:245
#, c-format
msgid "ftable %d:\n"
msgstr "ftable %d :\n"
-#: Engine/fgens.c:226 Engine/fgens.c:233
+#: Engine/fgens.c:222 Engine/fgens.c:229
msgid "illegal table length"
msgstr "longueur de table illégale"
-#: Engine/fgens.c:292 Engine/fgens.c:2219
+#: Engine/fgens.c:288 Engine/fgens.c:2215
#, c-format
msgid ""
"ftable %d relocating due to size change\n"
@@ -596,299 +550,300 @@ msgstr ""
"ftable %d réallouée à cause du changement de taille.\n"
" les instruments actifs peuvent en être perturbés"
-#: Engine/fgens.c:350 Engine/fgens.c:471 Engine/fgens.c:555 Engine/fgens.c:636
-#: Engine/fgens.c:711 Engine/fgens.c:760 Engine/fgens.c:881 Engine/fgens.c:958
-#: Engine/fgens.c:1053 Engine/fgens.c:1097 Engine/fgens.c:1144
-#: Engine/fgens.c:1397 Engine/fgens.c:1459 Engine/fgens.c:1681
-#: Engine/fgens.c:1759 Engine/fgens.c:2114 Engine/fgens.c:2821
-#: Engine/fgens.c:2864
+#: Engine/fgens.c:346 Engine/fgens.c:467 Engine/fgens.c:551 Engine/fgens.c:632
+#: Engine/fgens.c:707 Engine/fgens.c:756 Engine/fgens.c:877 Engine/fgens.c:954
+#: Engine/fgens.c:1049 Engine/fgens.c:1093 Engine/fgens.c:1140
+#: Engine/fgens.c:1393 Engine/fgens.c:1455 Engine/fgens.c:1677
+#: Engine/fgens.c:1755 Engine/fgens.c:2110 Engine/fgens.c:2863
+#: Engine/fgens.c:2906
msgid "using extended arguments\n"
msgstr "utilisation d'arguments étendus\n"
-#: Engine/fgens.c:374
+#: Engine/fgens.c:370
msgid "no coefs present"
msgstr "aucun coefficient n'est présent"
-#: Engine/fgens.c:379 Engine/fgens.c:645 Engine/fgens.c:653
+#: Engine/fgens.c:375 Engine/fgens.c:641 Engine/fgens.c:649
msgid "illegal x interval"
msgstr "intervalle x interdit"
-#: Engine/fgens.c:408 Engine/fgens.c:557 Engine/fgens.c:638 Engine/fgens.c:883
-#: Engine/fgens.c:1354 Engine/fgens.c:2378 Engine/fgens.c:2694 Top/main.c:142
-#: util/cvanal.c:66 util/lpanal.c:398 util/pvanal.c:170
+#: Engine/fgens.c:404 Engine/fgens.c:553 Engine/fgens.c:634 Engine/fgens.c:879
+#: Engine/fgens.c:1350 Engine/fgens.c:2375 Engine/fgens.c:2690
+#: Engine/fgens.c:2810 Top/main.c:141 util/cvanal.c:66 util/lpanal.c:398
+#: util/pvanal.c:170
msgid "insufficient arguments"
msgstr "pas assez d'arguments"
-#: Engine/fgens.c:412 Engine/fgens.c:1359
+#: Engine/fgens.c:408 Engine/fgens.c:1355
msgid "unknown srctable number"
msgstr "numéro de srctable inconnu"
-#: Engine/fgens.c:425
+#: Engine/fgens.c:421
msgid "table size too large"
msgstr "taille de table trop grande"
-#: Engine/fgens.c:510 Engine/fgens.c:543
+#: Engine/fgens.c:506 Engine/fgens.c:539
msgid "gen call has negative segment size:"
msgstr "l'appel de GEN a une taille de segment négative :"
-#: Engine/fgens.c:512
+#: Engine/fgens.c:508
msgid "illegal input vals for gen call, beginning:"
msgstr "appel de GEN avec des valeurs illégales en entrée, début :"
-#: Engine/fgens.c:578
+#: Engine/fgens.c:574
msgid "negative segsiz"
msgstr "segsiz négatif"
-#: Engine/fgens.c:787
+#: Engine/fgens.c:783
msgid "nh partials < 1"
msgstr "nombre d'harmoniques nh < 1"
-#: Engine/fgens.c:886
+#: Engine/fgens.c:882
msgid "illegal xint value"
msgstr "valeur xint illégale"
-#: Engine/fgens.c:889
+#: Engine/fgens.c:885
msgid "illegal xamp value"
msgstr "valeur xamp illégale"
-#: Engine/fgens.c:961
+#: Engine/fgens.c:957
msgid "uneven number of args"
msgstr "nombre impair d'arguments"
-#: Engine/fgens.c:1081
+#: Engine/fgens.c:1077
msgid "gen call has illegal x-ordinate values:"
msgstr "l'appel gen a des valeurs d'abscisse x illégales"
-#: Engine/fgens.c:1099
+#: Engine/fgens.c:1095
msgid "wrong number of args"
msgstr "nombre d'arguments incorrect"
-#: Engine/fgens.c:1113
+#: Engine/fgens.c:1109
msgid "a range given exceeds table length"
msgstr "un intervalle donné excède la longueur de la table"
-#: Engine/fgens.c:1120
+#: Engine/fgens.c:1116
msgid "an input function does not exist"
msgstr "une fonction d'entrée n'existe pas"
-#: Engine/fgens.c:1253
+#: Engine/fgens.c:1249
msgid "No such window!"
msgstr "Pas de fenêtre de cette sorte !"
-#: Engine/fgens.c:1271
+#: Engine/fgens.c:1267
msgid "Wrong number of input arguments"
msgstr "Nombre incorrect d'arguments en entrée"
-#: Engine/fgens.c:1272
+#: Engine/fgens.c:1268
msgid "unknown distribution"
msgstr "distribution inconnue"
-#: Engine/fgens.c:1321
+#: Engine/fgens.c:1317
msgid "error opening ASCII file"
msgstr "erreur à l'ouverture du fichier ASCII"
-#: Engine/fgens.c:1327
+#: Engine/fgens.c:1323
#, c-format
msgid "%ld elements in %s\n"
msgstr "%ld éléments dans %s\n"
-#: Engine/fgens.c:1338
+#: Engine/fgens.c:1334
msgid "Numbers after table full in GEN23"
msgstr "Encore des nombres à lire alors que la table est pleine dans GEN23"
-#: Engine/fgens.c:1367
+#: Engine/fgens.c:1363
msgid "table size must be the same of source table"
msgstr "la taille de la table doit être la même que celle de la table source"
-#: Engine/fgens.c:1439 Engine/fgens.c:1499
+#: Engine/fgens.c:1435 Engine/fgens.c:1495
msgid "x coordinates must all be in increasing order:"
msgstr "les coordonnées x doivent être toutes en ordre croissant"
-#: Engine/fgens.c:1442 Engine/fgens.c:1501
+#: Engine/fgens.c:1438 Engine/fgens.c:1497
msgid "x coordinate greater than function size:"
msgstr "coordonnée x supérieure à la taille de la fonction"
-#: Engine/fgens.c:1446
+#: Engine/fgens.c:1442
msgid "illegal input val (y <= 0) for gen call, beginning:"
msgstr "valeur d'entrée interdite (y <= 0) dans l'appel GEN, début :"
-#: Engine/fgens.c:1519
+#: Engine/fgens.c:1515
msgid "GEN28 requires zero table length"
msgstr "GEN28 nécessite une longueur de table nulle"
-#: Engine/fgens.c:1581
+#: Engine/fgens.c:1577
msgid "could not open space file"
msgstr "impossible d'ouvrir le fichier de spatialisation"
-#: Engine/fgens.c:1583
+#: Engine/fgens.c:1579
msgid "Time values must be in increasing order"
msgstr "Les valeurs de temps doivent être en ordre croissant"
-#: Engine/fgens.c:1604
+#: Engine/fgens.c:1600
msgid "GEN30: source ftable not found"
msgstr "GEN30 : la ftable source n'a pas été trouvée"
-#: Engine/fgens.c:1687
+#: Engine/fgens.c:1683
msgid "GEN31: source ftable not found"
msgstr "GEN31 : la ftable source n'a pas été trouvée"
-#: Engine/fgens.c:1795
+#: Engine/fgens.c:1791
#, c-format
msgid "GEN32: source ftable %d not found"
msgstr "GEN32 : la ftable source %d n'a pas été trouvée"
-#: Engine/fgens.c:1889
+#: Engine/fgens.c:1885
msgid "GEN33: source ftable not found"
msgstr "GEN33 : la ftable source n'a pas été trouvée"
-#: Engine/fgens.c:2057
+#: Engine/fgens.c:2053
msgid "unknown source table number"
msgstr "numéro de table source inconnu"
-#: Engine/fgens.c:2089
+#: Engine/fgens.c:2085
msgid "Gen41: negative probability not allowed"
msgstr "Gen41 : probabilité négative interdite"
-#: Engine/fgens.c:2155 Opcodes/fareygen.c:70
+#: Engine/fgens.c:2151 Opcodes/fareygen.c:70
#, c-format
msgid "ftable %d: "
msgstr "ftable %d : "
-#: Engine/fgens.c:2199
+#: Engine/fgens.c:2195
#, c-format
msgid "ftable %d:"
msgstr "ftable %d :"
-#: Engine/fgens.c:2214
+#: Engine/fgens.c:2210
#, c-format
msgid "replacing previous ftable %d"
msgstr "remplacement de la ftable précédente %d"
-#: Engine/fgens.c:2250 Engine/fgens.c:2337 Engine/fgens.c:2361
-#: Opcodes/gab/gab.c:578 Opcodes/gab/gab.c:632 Opcodes/midiops2.c:218
+#: Engine/fgens.c:2246 Engine/fgens.c:2334 Engine/fgens.c:2358
+#: Opcodes/gab/gab.c:580 Opcodes/gab/gab.c:634 Opcodes/midiops2.c:218
#: Opcodes/midiops2.c:370 Opcodes/midiops2.c:452 Opcodes/uggab.c:1317
#: Opcodes/uggab.c:1344 Opcodes/uggab.c:1364 Opcodes/uggab.c:1407
#, c-format
msgid "Invalid ftable no. %f"
msgstr "Numéro de ftable non valide. %f"
-#: Engine/fgens.c:2255
+#: Engine/fgens.c:2251
#, c-format
msgid "deferred-size ftable %f illegal here"
msgstr "taille différée de la ftable %f interdite ici"
-#: Engine/fgens.c:2281
+#: Engine/fgens.c:2278 Engine/fgens.c:2848
#, c-format
msgid "Deferred load of '%s' failed"
msgstr "Le chargement différé de '%s' a échoué"
-#: Engine/fgens.c:2343
+#: Engine/fgens.c:2340
#, c-format
msgid "Deferred-size ftable %f load not available at perf time."
msgstr ""
"La taille différée au chargement de la ftable %f n'est pas disponible à "
"l'exécution."
-#: Engine/fgens.c:2402
+#: Engine/fgens.c:2399
#, c-format
msgid "non-deferred ftable %d needs size %d\n"
msgstr "la table non différée %d nécessite une taille %d\n"
-#: Engine/fgens.c:2449 Opcodes/loscilx.c:62
+#: Engine/fgens.c:2446 Opcodes/loscilx.c:64
#, c-format
msgid "invalid sample format: %d"
msgstr "format d'échantillon non valide : %d"
-#: Engine/fgens.c:2457 Engine/fgens.c:2718
+#: Engine/fgens.c:2454 Engine/fgens.c:2714
#, c-format
msgid "channel %d illegal"
msgstr "le canal %d est illégal"
-#: Engine/fgens.c:2463
+#: Engine/fgens.c:2460
msgid "deferred alloc\n"
msgstr "allocation différée\n"
-#: Engine/fgens.c:2471
+#: Engine/fgens.c:2468
msgid "deferred size, but filesize unknown"
msgstr "taille différée, mais taille de fichier inconnu"
-#: Engine/fgens.c:2474
+#: Engine/fgens.c:2471
#, c-format
msgid " defer length %d\n"
msgstr " longueur différée %d\n"
-#: Engine/fgens.c:2543
+#: Engine/fgens.c:2540
msgid "GEN1: input file truncated by ftable size"
msgstr "GEN1 : le fichier en entrée a été tronqué à la taille de la ftable"
-#: Engine/fgens.c:2547
+#: Engine/fgens.c:2544
#, c-format
msgid "\tlooping endpoint %d exceeds ftsize %d\n"
msgstr "\tla fin de boucle (%d) dépasse la taille de la table (%d)\n"
-#: Engine/fgens.c:2569
+#: Engine/fgens.c:2566
msgid "GEN1 read error"
msgstr "GEN1 erreur de lecture"
-#: Engine/fgens.c:2574
+#: Engine/fgens.c:2571
msgid "GEN1: aiff file truncated by ftable size"
msgstr "GEN1 : le fichier aiff a été tronqué à la taille de la table"
-#: Engine/fgens.c:2575
+#: Engine/fgens.c:2572
#, c-format
msgid "\taudio samps %d exceeds ftsize %d"
msgstr "\tles échantillons audio %d dépassent la taille de la table (%d)"
-#: Engine/fgens.c:2619
+#: Engine/fgens.c:2616
msgid "wrong number of ftable arguments"
msgstr "nombre d'arguments incorrect pour la ftable"
-#: Engine/fgens.c:2629 OOps/pstream.c:326
+#: Engine/fgens.c:2626 OOps/pstream.c:326
msgid "Failed to load PVOC-EX file"
msgstr "Le chargement du fichier PVOC-EX a échoué"
-#: Engine/fgens.c:2640 InOut/midirecv.c:416 OOps/midiops.c:377
+#: Engine/fgens.c:2637 InOut/midirecv.c:416 OOps/midiops.c:377
#: OOps/midiops.c:419 OOps/midiops.c:431
msgid "illegal channel number"
msgstr "numéro de canal illégal"
-#: Engine/fgens.c:2658
+#: Engine/fgens.c:2655
msgid "ftable size too small"
msgstr "taille de ftable trop petite"
-#: Engine/fgens.c:2734 Opcodes/mp3in.c:79 Opcodes/mp3in.c:218
+#: Engine/fgens.c:2730 Opcodes/mp3in.c:80 Opcodes/mp3in.c:219
msgid "Not enough memory\n"
msgstr "Pas assez de mémoire\n"
-#: Engine/fgens.c:2831
+#: Engine/fgens.c:2873
msgid "gen51: invalid number of p-fields (too few grades)"
msgstr "gen51 : nombre de p-champs non valide (pas assez de degrés)"
-#: Engine/fgens.c:2871
+#: Engine/fgens.c:2913
msgid "number of channels inconsistent with number of args"
msgstr "nombre de canaux en contradiction avec le nombre d'arguments"
-#: Engine/fgens.c:3030
+#: Engine/fgens.c:3072
msgid "GEN53: invalid number of gen arguments"
msgstr "GEN53 : nombre d'arguments de GEN non valide"
-#: Engine/fgens.c:3040
+#: Engine/fgens.c:3082
msgid "GEN53: invalid table length"
msgstr "GEN53 : longueur de table non valide"
-#: Engine/fgens.c:3044
+#: Engine/fgens.c:3086
msgid "GEN53: invalid source table number"
msgstr "GEN53 : numéro de la table source non valide"
-#: Engine/fgens.c:3047
+#: Engine/fgens.c:3089
msgid "GEN53: mode must be in the range 0 to 15"
msgstr "GEN53 : le mode doit être compris entre 0 et 15"
-#: Engine/fgens.c:3051
+#: Engine/fgens.c:3093
msgid "GEN53: invalid source table length"
msgstr "GEN53 : longueur de la table source non valide"
-#: Engine/fgens.c:3056
+#: Engine/fgens.c:3098
msgid "GEN53: invalid window table"
msgstr "GEN53 : table de fenêtre non valide"
@@ -912,35 +867,35 @@ msgstr "Instrument %s muet\n"
msgid "Instrument %d muted\n"
msgstr "Instrument %d muet\n"
-#: Engine/insert.c:103 Engine/insert.c:1249
+#: Engine/insert.c:103 Engine/insert.c:1301
#, c-format
msgid "instr %s expects midi event data, cannot run from score\n"
msgstr "l'instr %s attend des évènements midi, et pas une partition\n"
-#: Engine/insert.c:106 Engine/insert.c:1252
+#: Engine/insert.c:106 Engine/insert.c:1304
#, c-format
msgid "instr %d expects midi event data, cannot run from score\n"
msgstr "l'instr %d attend des évènements midi, et pas une partition\n"
-#: Engine/insert.c:115 Engine/insert.c:279 Engine/insert.c:1234
+#: Engine/insert.c:115 Engine/insert.c:279 Engine/insert.c:1286
#, c-format
msgid "cannot allocate last note because it exceeds 100%% of cpu time"
msgstr ""
"impossible d'allouer la dernière note car il n'y a plus de temps cpu "
"disponible"
-#: Engine/insert.c:121 Engine/insert.c:285 Engine/insert.c:1239
+#: Engine/insert.c:121 Engine/insert.c:285 Engine/insert.c:1291
msgid "cannot allocate last note because it exceeds instr maxalloc"
msgstr ""
"impossible d'allouer la dernière note car le nombre maximum d'allocations "
"d'instr est atteint"
-#: Engine/insert.c:137 Engine/insert.c:305 Engine/insert.c:1270
+#: Engine/insert.c:137 Engine/insert.c:305 Engine/insert.c:1322
#, c-format
msgid "new alloc for instr %s:\n"
msgstr "nouvelle allocation de l'instr %s :\n"
-#: Engine/insert.c:139 Engine/insert.c:307 Engine/insert.c:1272
+#: Engine/insert.c:139 Engine/insert.c:307 Engine/insert.c:1324
#, c-format
msgid "new alloc for instr %d:\n"
msgstr "nouvelle allocation de l'instr %d :\n"
@@ -955,12 +910,12 @@ msgstr "l'instr %s utilise %d p-champs alors qu'il n'en a reçu que %d"
msgid "instr %d uses %d p-fields but is given %d"
msgstr "l'instr %d utilise %d p-champs alors qu'il n'en a reçu que %d"
-#: Engine/insert.c:251 Engine/insert.c:463
+#: Engine/insert.c:251 Engine/insert.c:482
#, c-format
msgid "instr %s now active:\n"
msgstr "instr %s activé : \n"
-#: Engine/insert.c:253 Engine/insert.c:465
+#: Engine/insert.c:253 Engine/insert.c:484
#, c-format
msgid "instr %d now active:\n"
msgstr "instr %d activé : \n"
@@ -980,26 +935,26 @@ msgstr "activation de l'instrument %d\n"
msgid "MIDI note overlaps with key %d on same channel"
msgstr "la note MIDI chevauche la touche %d sur le même canal"
-#: Engine/insert.c:566
+#: Engine/insert.c:585
#, c-format
msgid "removed instance of instr %s\n"
msgstr "une instance de l'instrument %s a été enlevée\n"
-#: Engine/insert.c:568
+#: Engine/insert.c:587
#, c-format
msgid "removed instance of instr %d\n"
msgstr "une instance de l'instrument %d a été enlevée\n"
-#: Engine/insert.c:691
+#: Engine/insert.c:710
msgid "inactive allocs returned to freespace\n"
msgstr "les allocation inactives ont été rendues à l'espace libre\n"
-#: Engine/insert.c:716
+#: Engine/insert.c:735
#, c-format
msgid "could not find playing instr %f\n"
msgstr "impossible de trouver l'instr actif %f\n"
-#: Engine/insert.c:729
+#: Engine/insert.c:748
msgid ""
"\n"
"INIT ERROR: "
@@ -1007,22 +962,22 @@ msgstr ""
"\n"
"ERREUR D'INITIALISATION : "
-#: Engine/insert.c:742
+#: Engine/insert.c:761
#, c-format
msgid "INIT ERROR in instr %d (opcode %s): "
msgstr "ERREUR D'INITIALISATION dans l'instr %d (opcode %s) : "
-#: Engine/insert.c:745
+#: Engine/insert.c:764
#, c-format
msgid "INIT ERROR in instr %d (subinstr %d): "
msgstr "ERREUR D'INITIALISATION dans l'instr %d (subinstr %d) : "
-#: Engine/insert.c:749
+#: Engine/insert.c:768
#, c-format
msgid "INIT ERROR in instr %d: "
msgstr "ERREUR D'INITIALISATION dans l'instr %d : "
-#: Engine/insert.c:767
+#: Engine/insert.c:786
msgid ""
"\n"
"PERF ERROR: "
@@ -1030,78 +985,78 @@ msgstr ""
"\n"
"ERREUR D'EXECUTION : "
-#: Engine/insert.c:780
+#: Engine/insert.c:799
#, c-format
msgid "PERF ERROR in instr %d (opcode %s): "
msgstr "ERREUR D'EXECUTION dans l'instr %d (opcode %s) : "
-#: Engine/insert.c:783
+#: Engine/insert.c:802
#, c-format
msgid "PERF ERROR in instr %d (subinstr %d): "
msgstr "ERREUR D'EXECUTION dans l'instr %d (subinstr %d) : "
-#: Engine/insert.c:787
+#: Engine/insert.c:806
#, c-format
msgid "PERF ERROR in instr %d: "
msgstr "ERREUR D'EXECUTION dans l'instr %d :"
-#: Engine/insert.c:792
+#: Engine/insert.c:811
msgid " note aborted\n"
msgstr " note interrompue\n"
-#: Engine/insert.c:820
+#: Engine/insert.c:839
msgid "subinstr: number of output args greater than nchnls"
msgstr "subinstr : nombre d'arguments de sortie supérieur à nchnls"
-#: Engine/insert.c:861
+#: Engine/insert.c:880
msgid "subinstr: too many p-fields"
msgstr "subinstr : trop de p-champs"
-#: Engine/insert.c:920
+#: Engine/insert.c:939
#, c-format
msgid "%s: invalid local ksmps value: %d"
msgstr "%s : valeur locale de ksmps non valide : %d"
-#: Engine/insert.c:1040 OOps/bus.c:835 Opcodes/stackops.c:293
+#: Engine/insert.c:1062 OOps/bus.c:835 Opcodes/stackops.c:286
#, c-format
msgid "%s: not initialised"
msgstr "%s : non initialisé"
-#: Engine/insert.c:1169
+#: Engine/insert.c:1221
#, c-format
msgid "setksmps: invalid ksmps value: %d"
msgstr "setksmps : valeur de ksmps non valide : %d"
-#: Engine/insert.c:1225
+#: Engine/insert.c:1277
#, c-format
msgid "schedule event ignored. instr %d undefined\n"
msgstr "évènement programmé ignoré. L'instr %d n'est pas défini\n"
-#: Engine/insert.c:1303
+#: Engine/insert.c:1355
#, c-format
msgid "instr %s pmax = %d, note pcnt = %d"
msgstr "instr %s pmax = %d, pcnt de note = %d"
-#: Engine/insert.c:1306
+#: Engine/insert.c:1358
#, c-format
msgid "instr %d pmax = %d, note pcnt = %d"
msgstr "instr %d pmax = %d, pcnt de note = %d"
-#: Engine/insert.c:1314
+#: Engine/insert.c:1366
#, c-format
msgid "psave beg at %p\n"
msgstr "psave début à %p\n"
-#: Engine/insert.c:1322
+#: Engine/insert.c:1374
#, c-format
msgid " ending at %p\n"
msgstr " fin à %p\n"
-#: Engine/insert.c:1466
+#: Engine/insert.c:1518
msgid "subinstr: not initialised"
msgstr "subinstr : non initialisé"
-#: Engine/insert.c:1723
+#: Engine/insert.c:1855
#, c-format
msgid ""
"instr %d allocated at %p\n"
@@ -1110,29 +1065,29 @@ msgstr ""
"instr %d alloué à %p\n"
"\tlclbas %p, opds %p\n"
-#: Engine/insert.c:1740
+#: Engine/insert.c:1872
#, c-format
msgid "op %d (%s) allocated at %p\n"
msgstr "op %d (%s) alloué à %p\n"
-#: Engine/insert.c:1766
+#: Engine/insert.c:1898
msgid "null iopadr"
msgstr "iopadr null"
-#: Engine/insert.c:1777
+#: Engine/insert.c:1909
msgid "null opadr"
msgstr "opadr null"
-#: Engine/insert.c:1834
+#: Engine/insert.c:1966
msgid "inconsistent opds total"
msgstr "total d'opds non cohérent"
-#: Engine/insert.c:1879
+#: Engine/insert.c:2011
#, c-format
msgid "Instrument %s is still active"
msgstr "L'instrument %s est toujours actif"
-#: Engine/insert.c:1882
+#: Engine/insert.c:2014
#, c-format
msgid "Instrument %d is still active"
msgstr "L'instrument %d est toujours actif"
@@ -1166,7 +1121,7 @@ msgstr "opcode %c inconnu"
msgid "multiple string p-fields"
msgstr "plusieurs p-champs chaînes de caractères"
-#: Engine/linevent.c:273 Engine/rdorch.c:1157
+#: Engine/linevent.c:273 Engine/rdorch.c:1184
msgid "unmatched quotes"
msgstr "guillemets non appariés"
@@ -1230,27 +1185,27 @@ msgstr "event_i: erreur en créant l'évènement '%c'"
msgid "memory allocate failure for %lu"
msgstr "échec de l'allocation de mémoire pour %lu"
-#: Engine/memfiles.c:112
+#: Engine/memfiles.c:113
#, c-format
msgid "cannot load %s\n"
msgstr "impossible de charger %s\n"
-#: Engine/memfiles.c:118
+#: Engine/memfiles.c:119
#, c-format
msgid "cannot load %s, or SADIR undefined\n"
msgstr "impossible de charger %s, ou SADIR n'est pas défini\n"
-#: Engine/memfiles.c:130
+#: Engine/memfiles.c:131
#, c-format
msgid "error processing file %s\n"
msgstr "erreur en traitant le fichier %s\n"
-#: Engine/memfiles.c:136 Engine/memfiles.c:319
+#: Engine/memfiles.c:137 Engine/memfiles.c:320
#, c-format
msgid "file %s (%ld bytes) loaded into memory\n"
msgstr "le fichier %s (%ld octets) a été chargé en mémoire\n"
-#: Engine/memfiles.c:199
+#: Engine/memfiles.c:200
msgid ""
"PVOCEX_LoadFile(): error:\n"
" "
@@ -1258,57 +1213,57 @@ msgstr ""
"PVOCEX_LoadFile() : erreur :\n"
" "
-#: Engine/memfiles.c:216
+#: Engine/memfiles.c:217
msgid "Empty or NULL file name"
msgstr "Nom de fichier vide ou NULL"
-#: Engine/memfiles.c:234
+#: Engine/memfiles.c:235
#, c-format
msgid "unable to open pvocex file %s: %s"
msgstr "impossible d'ouvrir le fichier pvocex %s : %s"
-#: Engine/memfiles.c:240
+#: Engine/memfiles.c:241
#, c-format
msgid "pvoc-ex file %s is not 32bit floats"
msgstr "le fichier pvoc-ex %s n'est pas au format floats sur 32 bit"
-#: Engine/memfiles.c:246
+#: Engine/memfiles.c:247
#, c-format
msgid "pvoc-ex file %s not in AMP_FREQ format"
msgstr "le fichier pvoc-ex %s n'est pas au format AMP_FREQ"
-#: Engine/memfiles.c:252
+#: Engine/memfiles.c:253
#, c-format
msgid "pvoc-ex file %s is empty!"
msgstr "le fichier pvoc-ex %s est vide !"
-#: Engine/memfiles.c:282
+#: Engine/memfiles.c:283
#, c-format
msgid "error reading pvoc-ex file %s"
msgstr "erreur de lecture sur le fichier pvoc-ex %s"
-#: Engine/memfiles.c:286
+#: Engine/memfiles.c:287
#, c-format
msgid "error reading pvoc-ex file %s after %d frames"
msgstr "erreur de lecture sur le fichier pvoc-ex %s après %d trames"
-#: Engine/memfiles.c:291 Opcodes/pvinterp.c:71 Opcodes/pvinterp.c:174
-#: Opcodes/pvinterp.c:346 Opcodes/ugens9.c:97 Opcodes/vpvoc.c:201
+#: Engine/memfiles.c:292 Opcodes/pvinterp.c:71 Opcodes/pvinterp.c:173
+#: Opcodes/pvinterp.c:344 Opcodes/ugens9.c:97 Opcodes/vpvoc.c:202
#, c-format
msgid "%s's srate = %8.0f, orch's srate = %8.0f"
msgstr "srate de %s = %8.0f, srate de l'orchestre = %8.0f"
-#: Engine/memfiles.c:389
+#: Engine/memfiles.c:390
#, c-format
msgid "csoundLoadSoundFile(): failed to open '%s'"
msgstr "csoundLoadSoundFile() : l'ouverture de '%s' a échoué"
-#: Engine/memfiles.c:444
+#: Engine/memfiles.c:445
#, c-format
msgid "csoundLoadSoundFile(): error reading '%s'"
msgstr "csoundLoadSoundFile() : erreur de lecture sur '%s'"
-#: Engine/memfiles.c:450
+#: Engine/memfiles.c:451
#, c-format
msgid ""
"File '%s' (sr = %d Hz, %d channel(s), %lu sample frames) loaded into memory\n"
@@ -1316,96 +1271,91 @@ msgstr ""
"Le fichier '%s' (sr = %d Hz, %d voix, %lu trames d'échantillons) a été "
"chargé en mémoire\n"
-#: Engine/musmon.c:79
+#: Engine/musmon.c:81
#, c-format
msgid "Elapsed time at %s: real: %.3fs, CPU: %.3fs\n"
msgstr "Temps écoulé à %s : valeur réelle : %.3fs, CPU : %.3fs\n"
-#: Engine/musmon.c:106
+#: Engine/musmon.c:108
msgid "illegal istartempo value"
msgstr "valeur illégale du tempo de départ"
-#: Engine/musmon.c:109
+#: Engine/musmon.c:111
msgid "Beat mode not in force"
msgstr "Le mode beat n'est pas en vigueur"
-#: Engine/musmon.c:182 Top/main.c:122
+#: Engine/musmon.c:184 Top/main.c:121
#, c-format
msgid "Csound version %s beta (double samples) %s\n"
msgstr "Csound version %s beta (échantillons en format double) %s\n"
-#: Engine/musmon.c:185 Top/main.c:125
+#: Engine/musmon.c:187 Top/main.c:124
#, c-format
msgid "Csound version %s (double samples) %s\n"
msgstr "Csound version %s (échantillons en format double) %s\n"
-#: Engine/musmon.c:190 Top/main.c:114
+#: Engine/musmon.c:192 Top/main.c:113
#, c-format
msgid "Csound version %s beta (float samples) %s\n"
msgstr "Csound version %s beta (échantillons en format float) %s\n"
-#: Engine/musmon.c:193 Top/main.c:117
+#: Engine/musmon.c:195 Top/main.c:116
#, c-format
msgid "Csound version %s (float samples) %s\n"
msgstr "Csound version %s (échantillons en format float) %s\n"
-#: Engine/musmon.c:218
+#: Engine/musmon.c:220
msgid "orch now loaded\n"
msgstr "l'orchestre est maintenant chargé\n"
-#: Engine/musmon.c:243
+#: Engine/musmon.c:245
msgid "k-period aligned audio buffering\n"
msgstr "mise en tampon audio alignée sur la période k\n"
-#: Engine/musmon.c:259
+#: Engine/musmon.c:261
#, c-format
msgid "audio buffered in %d sample-frame blocks\n"
msgstr "mise en tampon audio par blocs de %d trames d'échantillons\n"
-#: Engine/musmon.c:276 Top/main.c:395
-#, c-format
-msgid "cannot reopen %s"
-msgstr "impossible de réouvrir %s"
-
-#: Engine/musmon.c:287
+#: Engine/musmon.c:283
msgid "using Cscore processing\n"
msgstr "utilisation du traitement Cscore\n"
-#: Engine/musmon.c:290
+#: Engine/musmon.c:286
msgid "cannot create cscore.out"
msgstr "impossible de créer cscore.out"
-#: Engine/musmon.c:303
+#: Engine/musmon.c:299
msgid "cannot reopen cscore.out"
msgstr "impossible de réouvrir cscore.out"
-#: Engine/musmon.c:307 Engine/musmon.c:315
+#: Engine/musmon.c:303
msgid "cannot reopen cscore.srt"
msgstr "impossible de réouvrir cscore.srt"
-#: Engine/musmon.c:309
+#: Engine/musmon.c:305
msgid "sorting cscore.out ..\n"
msgstr "tri de cscore.out ..\n"
-#: Engine/musmon.c:313 Top/main.c:409
+#: Engine/musmon.c:311 Top/main.c:401
msgid "\t... done\n"
msgstr "\t... fait\n"
-#: Engine/musmon.c:317
+#: Engine/musmon.c:312
msgid "playing from cscore.srt\n"
msgstr "exécution à partir de cscore.srt\n"
-#: Engine/musmon.c:321 Engine/musmon.c:453 Engine/musmon.c:1021
-#: Engine/musmon.c:1225
+#: Engine/musmon.c:316 Engine/musmon.c:446 Engine/musmon.c:1015
+#: Engine/musmon.c:1216
#, c-format
msgid "SECTION %d:\n"
msgstr "SECTION %d :\n"
-#: Engine/musmon.c:397
+#: Engine/musmon.c:390
msgid "end of score.\t\t overall amps:"
msgstr "fin de la partition.\t\t amplitudes maximales :"
-#: Engine/musmon.c:408
+#: Engine/musmon.c:401
msgid ""
"\n"
"\t overall samples out of range:"
@@ -1413,7 +1363,7 @@ msgstr ""
"\n"
"\t Nombre d'échantillons hors limites :"
-#: Engine/musmon.c:412
+#: Engine/musmon.c:405
#, c-format
msgid ""
"\n"
@@ -1422,113 +1372,113 @@ msgstr ""
"\n"
"%d erreurs dans l'exécution\n"
-#: Engine/musmon.c:414
+#: Engine/musmon.c:407
msgid "end of performance"
msgstr "fin de l'exécution"
-#: Engine/musmon.c:428
+#: Engine/musmon.c:421
msgid "no sound written to disk\n"
msgstr "aucun son n'a été écrit sur le disque\n"
-#: Engine/musmon.c:443
+#: Engine/musmon.c:436
#, c-format
msgid "%c\tbeep!\n"
msgstr "%c\tsignal sonore !\n"
-#: Engine/musmon.c:509 Engine/musmon.c:555
+#: Engine/musmon.c:502 Engine/musmon.c:548
msgid "\t number of samples out of range:"
msgstr "\t nombre d'échantillons hors limites :"
-#: Engine/musmon.c:548
+#: Engine/musmon.c:541
#, c-format
msgid "end of section %d\t sect peak amps:"
msgstr "fin de la section %d\tamplitudes maximales de la section :"
-#: Engine/musmon.c:550
+#: Engine/musmon.c:543
msgid "end of lplay event list\t peak amps:"
msgstr "fin de la liste d'évènements lplay\t amplitudes maximales :"
-#: Engine/musmon.c:614 Engine/musmon.c:639
+#: Engine/musmon.c:607 Engine/musmon.c:632
#, c-format
msgid " - note deleted. instr %s undefined"
msgstr " - note effacée. instr %s non défini"
-#: Engine/musmon.c:618
+#: Engine/musmon.c:611
#, c-format
msgid "Setting instrument %s %s\n"
msgstr "Lancement de l'instrument %s %s\n"
-#: Engine/musmon.c:619 Engine/musmon.c:632
+#: Engine/musmon.c:612 Engine/musmon.c:625
#: Opcodes/fluidOpcodes/fluidOpcodes.c:207
#: Opcodes/fluidOpcodes/fluidOpcodes.c:208
msgid "off"
msgstr "arrêt"
-#: Engine/musmon.c:619 Engine/musmon.c:632
+#: Engine/musmon.c:612 Engine/musmon.c:625
#: Opcodes/fluidOpcodes/fluidOpcodes.c:207
#: Opcodes/fluidOpcodes/fluidOpcodes.c:208
msgid "on"
msgstr "marche"
-#: Engine/musmon.c:627 Engine/musmon.c:666
+#: Engine/musmon.c:620 Engine/musmon.c:659
#, c-format
msgid " - note deleted. instr %d(%d) undefined"
msgstr " - note effacée. instr %d(%d) non défini"
-#: Engine/musmon.c:631
+#: Engine/musmon.c:624
#, c-format
msgid "Setting instrument %d %s\n"
msgstr "Lancement de l'instrument %d %s\n"
-#: Engine/musmon.c:657
+#: Engine/musmon.c:650
#, c-format
msgid " - note deleted. i%d (%s) had %d init errors"
msgstr " - note effacée. i%d (%s) a eu %d erreurs d'initialisation"
-#: Engine/musmon.c:687
+#: Engine/musmon.c:680
#, c-format
msgid " - note deleted. i%d had %d init errors"
msgstr " - note effacée. i%d a eu %d erreurs d'initialisation"
-#: Engine/musmon.c:708
+#: Engine/musmon.c:701
#, c-format
msgid "time advanced %5.3f beats by score request\n"
msgstr "le temps a avancé de %5.3f pulsations à la demande de la partition\n"
-#: Engine/musmon.c:725
+#: Engine/musmon.c:719
#, c-format
msgid "\t\t T%7.3f - note deleted. "
msgstr "\t\t T%7.3f - note effacée. "
-#: Engine/musmon.c:729
+#: Engine/musmon.c:723
#, c-format
msgid "instr %s had %d init errors\n"
msgstr "l'instr %s a eu %d erreurs d'initialisation\n"
-#: Engine/musmon.c:731
+#: Engine/musmon.c:725
#, c-format
msgid "instr %d had %d init errors\n"
msgstr "l'instr %d a eu %d erreurs d'initialisation\n"
-#: Engine/musmon.c:822
+#: Engine/musmon.c:816
msgid "terminating.\n"
msgstr "terminaison.\n"
-#: Engine/musmon.c:908
+#: Engine/musmon.c:902
#, c-format
msgid "error in score. illegal opcode %c (ASCII %d)\n"
msgstr "erreur dans la partition. L'opcode %c (ASCII %d) est illégal\n"
-#: Engine/musmon.c:1135
+#: Engine/musmon.c:1129
msgid "insert_score_event(): invalid instrument number or name\n"
msgstr "insert_score_event() : numéro ou nom d'instrument non valide\n"
-#: Engine/musmon.c:1155
+#: Engine/musmon.c:1149
#, c-format
msgid "insert_score_event(): unknown opcode: %c\n"
msgstr "insert_score_event() : opcode inconnu : %c\n"
-#: Engine/musmon.c:1178
+#: Engine/musmon.c:1172
msgid "insert_score_event(): insufficient p-fields\n"
msgstr "insert_score_event() : pas assez de p-champs\n"
@@ -1551,28 +1501,47 @@ msgstr "Impossible de trouver l'instrument %d"
msgid "cannot find the specified instrument or opcode"
msgstr "impossible de trouver l'instrument ou l'opcode spécifié"
-#: Engine/new_orc_parser.c:74 Engine/rdorch.c:488
+#: Engine/new_orc_parser.c:91
+msgid "Unmatched #ifdef\n"
+msgstr "#ifdef non apparié\n"
+
+#: Engine/otran.c:149 Engine/symbtab.c:413
#, c-format
-msgid "cannot open orch file %s"
-msgstr "impossible d'ouvrir le fichier d'orchestre %s"
+msgid "invalid input type for opcode %s"
+msgstr "type d'entrée non valide pour l'opcode %s"
+
+#: Engine/otran.c:154 Engine/symbtab.c:418
+#, c-format
+msgid "too many input args for opcode %s"
+msgstr "trop d'arguments en entrée pour l'opcode %s"
-#: Engine/otran.c:312 Engine/otran.c:319
+#: Engine/otran.c:169 Engine/symbtab.c:433
+#, c-format
+msgid "too many output args for opcode %s"
+msgstr "trop d'arguments en sortie pour l'opcode %s"
+
+#: Engine/otran.c:194 Engine/symbtab.c:458
+#, c-format
+msgid "invalid output type for opcode %s"
+msgstr "type de sortie non valide pour l'opcode %s"
+
+#: Engine/otran.c:325 Engine/otran.c:332
msgid "missing instrument number or name"
msgstr "il manque un numéro ou un nom d'instrument"
-#: Engine/otran.c:324
+#: Engine/otran.c:337
msgid "illegal instr number"
msgstr "numéro d'instrument illégal"
-#: Engine/otran.c:374
+#: Engine/otran.c:388
msgid "No opcode name"
msgstr "Aucun nom d'opcode"
-#: Engine/otran.c:379 Engine/symbtab.c:501
+#: Engine/otran.c:393 Engine/symbtab.c:538
msgid "invalid name for opcode"
msgstr "nom d'opcode non valide"
-#: Engine/otran.c:383
+#: Engine/otran.c:397
#, c-format
msgid ""
"opcode declaration error (usage: opcode name, outtypes, intypes) -- opcode %s"
@@ -1580,56 +1549,56 @@ msgstr ""
"erreur de déclaration d'opcode (utilisation : nom d'opcode, types en sortie, "
"types en entrée) -- opcode %s"
-#: Engine/otran.c:394 Engine/symbtab.c:511
+#: Engine/otran.c:408 Engine/symbtab.c:548
#, c-format
msgid "cannot redefine %s"
msgstr "impossible de redéfinir %s"
-#: Engine/otran.c:398 Engine/symbtab.c:516
+#: Engine/otran.c:412 Engine/symbtab.c:553
#, c-format
msgid "WARNING: redefined opcode: %s\n"
msgstr "AVERTISSEMENT : opcode redéfini : %s\n"
-#: Engine/otran.c:489
+#: Engine/otran.c:503
msgid "string constant used as output"
msgstr "constante chaîne de caractères utilisée comme sortie"
-#: Engine/otran.c:520
+#: Engine/otran.c:534
msgid "Missing endin"
msgstr "Il manque endin"
-#: Engine/otran.c:584
+#: Engine/otran.c:599
msgid "perf-pass statements illegal in header blk"
msgstr "les instructions d'exécution sont interdites dans le bloc d'en-tête"
-#: Engine/otran.c:588
+#: Engine/otran.c:603
#, c-format
msgid "%d syntax errors in orchestra. compilation invalid"
msgstr "%d erreurs de syntaxe dans l'orchestre. Compilation non valide"
-#: Engine/otran.c:1238
+#: Engine/otran.c:1257
msgid "bad value for 0dbfs: must be positive."
msgstr "mauvaise valeur pour 0dbfs : elle doit être positive"
-#: Engine/otran.c:1248
+#: Engine/otran.c:1267
#, c-format
msgid "sample rate overrides: esr = %7.4f, ekr = %7.4f, ksmps = %d\n"
msgstr ""
"redéfinition des taux d'échantillonnage : esr = %7.4f, ekr = %7.4f, ksmps = "
"%d\n"
-#: Engine/otran.c:1320
+#: Engine/otran.c:1339
msgid "internal error: string constant outarg"
msgstr ""
"erreur interne : constante chaîne de caractères utilisée comme argument en "
"sortie"
-#: Engine/otran.c:1346
+#: Engine/otran.c:1365
#, c-format
msgid "i%d pset args != pmax"
msgstr "i%d pset args != pmax"
-#: Engine/otran.c:1409
+#: Engine/otran.c:1428
#, c-format
msgid ""
"sr = %.7g, kr = %.7g, ksmps = %.7g\n"
@@ -1638,273 +1607,308 @@ msgstr ""
"sr = %.7g, kr = %.7g, ksmps = %.7g\n"
"Erreur :"
-#: Engine/otran.c:1442
+#: Engine/otran.c:1461
msgid "header init errors"
msgstr "Erreurs dans l'initialisation de l'en-tête"
-#: Engine/rdorch.c:166
+#: Engine/rdorch.c:169
msgid "ungetorchar(): buffer overflow"
msgstr "ungetorchar(): dépassement de tampon"
-#: Engine/rdorch.c:330
+#: Engine/rdorch.c:348
msgid "Unexpected end of orchestra file"
msgstr "Fin inattendue du fichier de l'orchestre"
-#: Engine/rdorch.c:484
+#: Engine/rdorch.c:431 Engine/sread.c:758
+#, c-format
+msgid "Macro definition for %*s\n"
+msgstr "Définition de macro pour %*s\n"
+
+#: Engine/rdorch.c:434
+msgid "Invalid macro name for --omacro"
+msgstr "Nom de macro non valide pour --omacro"
+
+#: Engine/rdorch.c:502
msgid "orch compiler:\n"
msgstr "compilateur de l'orchestre :\n"
-#: Engine/rdorch.c:490
-#, c-format
-msgid "cannot find end of file %s"
-msgstr "impossible de trouver la fin du fichier %s"
-
-#: Engine/rdorch.c:492
+#: Engine/rdorch.c:520
#, c-format
-msgid "ftell error on %s"
-msgstr "erreur ftell sur %s"
+msgid "cannot open orch file %s"
+msgstr "impossible d'ouvrir le fichier d'orchestre %s"
-#: Engine/rdorch.c:657 Engine/sread.c:1572
+#: Engine/rdorch.c:684 Engine/sread.c:1584
#, c-format
msgid "Macro definition for %s\n"
msgstr "Définition de macro pour %s\n"
-#: Engine/rdorch.c:748
+#: Engine/rdorch.c:716 Engine/sread.c:1607
+msgid "macro error\n"
+msgstr "erreur de macro\n"
+
+#: Engine/rdorch.c:775
#, c-format
msgid "Cannot open #include'd file %s\n"
msgstr "Impossible d'ouvrir le fichier inclus (#include) %s\n"
-#: Engine/rdorch.c:797
+#: Engine/rdorch.c:824
msgid "unmatched #ifdef"
msgstr "#ifdef non apparié"
-#: Engine/rdorch.c:808
+#: Engine/rdorch.c:835
msgid "Unmatched #else"
msgstr "#else non apparié"
-#: Engine/rdorch.c:822
+#: Engine/rdorch.c:849
msgid "Unmatched #endif"
msgstr "#endif non apparié"
-#: Engine/rdorch.c:875
+#: Engine/rdorch.c:872 Engine/sread.c:1694
+#, c-format
+msgid "macro %s undefined\n"
+msgstr "la macro %s n'est pas définie\n"
+
+#: Engine/rdorch.c:886 Engine/sread.c:286
+msgid "Undefining undefined macro"
+msgstr "Libération de la macro non définie"
+
+#: Engine/rdorch.c:902
msgid "Unexpected # character"
msgstr "Caractère # non attendu"
-#: Engine/rdorch.c:877
+#: Engine/rdorch.c:904
#, c-format
msgid "Unknown # option: '%s'"
msgstr "Option # inconnue : '%s'"
-#: Engine/rdorch.c:903 Engine/sread.c:394
+#: Engine/rdorch.c:928 Engine/sread.c:380
+#, c-format
+msgid "Undefined macro: '%s'"
+msgstr "Macro non définie : '%s'"
+
+#: Engine/rdorch.c:930 Engine/sread.c:378
msgid "Macro expansion symbol ($) without macro name"
msgstr "Symbole de déroulement de macro ($) sans nom de macro"
-#: Engine/rdorch.c:908 Engine/sread.c:400
+#: Engine/rdorch.c:935 Engine/sread.c:384
#, c-format
msgid "$%s matches macro name $%s"
msgstr "$%s correspond au nom de macro $%s"
-#: Engine/rdorch.c:925 Engine/sread.c:417
+#: Engine/rdorch.c:952 Engine/sread.c:401
msgid "Syntax error in macro call"
msgstr "Erreur de syntaxe dans l'appel de macro"
-#: Engine/rdorch.c:975
+#: Engine/rdorch.c:967
+#, c-format
+msgid ""
+"Missing argument terminator\n"
+"%.98s"
+msgstr ""
+"Le terminateur d'argument est manquant\n"
+"%.98s"
+
+#: Engine/rdorch.c:1002
msgid "Unmatched #ifdef"
msgstr "#ifdef non apparié"
-#: Engine/rdorch.c:977
+#: Engine/rdorch.c:1004
msgid "file too large for ortext space"
msgstr "Fichier trop grand pour l'espace ortext"
-#: Engine/rdorch.c:984
+#: Engine/rdorch.c:1011
#, c-format
msgid "%d (%d) lines read\n"
msgstr "%d (%d) lignes lues\n"
-#: Engine/rdorch.c:1052
+#: Engine/rdorch.c:1079
#, c-format
msgid "LINE %d:"
msgstr "LIGNE %d :"
-#: Engine/rdorch.c:1071
+#: Engine/rdorch.c:1098
msgid "invalid 'elseif' statement. must have a corresponding 'if'"
msgstr "instruction 'elseif' non valide. Doit correspondre à un 'if'"
-#: Engine/rdorch.c:1078
+#: Engine/rdorch.c:1105
msgid "'elseif' statement cannot occur after an 'else'"
msgstr "une instruction 'elseif' ne peut pas survenir après un 'else'"
-#: Engine/rdorch.c:1134
+#: Engine/rdorch.c:1161
msgid "Unmatched comment"
msgstr "Commentaire non apparié"
-#: Engine/rdorch.c:1198
+#: Engine/rdorch.c:1225
msgid "misplaced comma"
msgstr "virgule mal placée"
-#: Engine/rdorch.c:1200 Engine/rdorch.c:1342 Engine/rdorch.c:1440
+#: Engine/rdorch.c:1227 Engine/rdorch.c:1369 Engine/rdorch.c:1467
msgid "unbalanced parens"
msgstr "parenthèse non balancée"
-#: Engine/rdorch.c:1364
+#: Engine/rdorch.c:1391
#, c-format
msgid "illegal character %c"
msgstr "caractère illégal %c"
-#: Engine/rdorch.c:1377
+#: Engine/rdorch.c:1404
msgid "invalid 'else' statement. must have a corresponding 'if'"
msgstr "instruction 'else' non valide. Doit correspondre à un 'if'"
-#: Engine/rdorch.c:1384
+#: Engine/rdorch.c:1411
msgid "duplicate 'else' statement"
msgstr "instruction 'else' dupliquée"
-#: Engine/rdorch.c:1413
+#: Engine/rdorch.c:1440
msgid "invalid 'endif' statement. must have a corresponding 'if'"
msgstr "instruction 'endif' non valide. Doit correspondre à un 'if'"
-#: Engine/rdorch.c:1442
+#: Engine/rdorch.c:1469
msgid "no legal opcode"
msgstr "pas d'opcode légal"
-#: Engine/rdorch.c:1573
+#: Engine/rdorch.c:1600
msgid "illegal opcod from expr anal"
msgstr "opcode illégal dans l'expression analysée"
-#: Engine/rdorch.c:1606 Engine/rdorch.c:1628
+#: Engine/rdorch.c:1633 Engine/rdorch.c:1655
#, c-format
msgid "failed to find %s, output arg '%s' illegal type"
msgstr "impossible de trouver %s, l'argument de sortie %s est de type illégal"
-#: Engine/rdorch.c:1670
+#: Engine/rdorch.c:1697
#, c-format
msgid "failed to find %s, input arg illegal type"
msgstr "impossible de trouver %s, l'argument d'entrée est de type illégal"
-#: Engine/rdorch.c:1684
+#: Engine/rdorch.c:1711
msgid "setksmps is allowed only in user defined opcodes"
msgstr "setksmps n'est autorisé que dans les opcodes définis par l'utilisateur"
-#: Engine/rdorch.c:1687
+#: Engine/rdorch.c:1714
msgid "multiple uses of setksmps in the same opcode definition"
msgstr "utilisations multiples de setksmps dans la même définition d'opcode"
-#: Engine/rdorch.c:1710
+#: Engine/rdorch.c:1739
#, c-format
msgid "%s inconsistent with global nchnls (%d); replaced with %s\n"
msgstr "%s en contradiction avec le nchnls global (%d) ; remplacé par %s\n"
-#: Engine/rdorch.c:1740
+#: Engine/rdorch.c:1770
msgid "opcode blks cannot be nested (missing 'endop'?)"
msgstr "les blocs d'opcode ne peuvent pas être imbriqués ('endop' manquant ?)"
-#: Engine/rdorch.c:1742
+#: Engine/rdorch.c:1772
msgid "opcode not allowed in instr block"
msgstr "opcode interdit dans un bloc d'instr"
-#: Engine/rdorch.c:1751
+#: Engine/rdorch.c:1781
msgid "unmatched endop"
msgstr "endop non apparié"
-#: Engine/rdorch.c:1753
+#: Engine/rdorch.c:1783
msgid "endop not allowed in instr block"
msgstr "endop interdit dans un bloc d'instr"
-#: Engine/rdorch.c:1758
+#: Engine/rdorch.c:1788
msgid "instr not allowed in opcode block"
msgstr "instr interdit dans un bloc d'opcode"
-#: Engine/rdorch.c:1761
+#: Engine/rdorch.c:1791
msgid "instr blocks cannot be nested (missing 'endin'?)"
msgstr "les blocs d'instr ne peuvent pas être imbriqués ('endin' manquant ?)"
-#: Engine/rdorch.c:1769
+#: Engine/rdorch.c:1799
msgid "endin not allowed in opcode blk"
msgstr "endin interdit dans un bloc d'opcode"
-#: Engine/rdorch.c:1771
+#: Engine/rdorch.c:1801
msgid "unmatched endin"
msgstr "endin non apparié"
-#: Engine/rdorch.c:1781
+#: Engine/rdorch.c:1811
msgid "misplaced opcode"
msgstr "opcode mal placé"
-#: Engine/rdorch.c:1787
+#: Engine/rdorch.c:1817
msgid "xout is allowed only in user defined opcodes"
msgstr "xout n'est autorisé que dans les opcodes définis par l'utilisateur"
-#: Engine/rdorch.c:1790
+#: Engine/rdorch.c:1820
msgid "multiple uses of xout in the same opcode definition"
msgstr "utilisations multiples de xout dans la même définition d'opcode"
-#: Engine/rdorch.c:1837
+#: Engine/rdorch.c:1867
msgid "too many input args"
msgstr "trop d'arguments en entrée"
-#: Engine/rdorch.c:1909
+#: Engine/rdorch.c:1893
+msgid "insufficient required arguments"
+msgstr "arguments requis manquants"
+
+#: Engine/rdorch.c:1940
#, c-format
-msgid "input arg '%s' used before defined"
-msgstr "l'argument en entrée '%s' a été utilisé avant d'être défini"
+msgid "input arg '%s' used before defined \n"
+msgstr "l'argument en entrée '%s' a été utilisé avant d'être défini\n"
-#: Engine/rdorch.c:1956
+#: Engine/rdorch.c:1987
msgid "xin is allowed only in user defined opcodes"
msgstr "xin n'est autorisé que dans les opcodes définis par l'utilisateur"
-#: Engine/rdorch.c:1959
+#: Engine/rdorch.c:1990
msgid "multiple uses of xin in the same opcode definition"
msgstr "utilisations multiples de xin dans la même définition d'opcode"
-#: Engine/rdorch.c:2004
+#: Engine/rdorch.c:2035
msgid "illegal no of output args"
msgstr "nombre illégal d'arguments en sortie"
-#: Engine/rdorch.c:2023
+#: Engine/rdorch.c:2054
#, c-format
msgid "output name previously used, type '%c' must be uniquely defined"
msgstr ""
"nom de sortie déjà utilisé, le type '%c' doit avoir une définition unique"
-#: Engine/rdorch.c:2028
+#: Engine/rdorch.c:2059
#, c-format
msgid "output arg '%s' illegal type"
msgstr "l'argument de sortie '%s' est de type illégal"
-#: Engine/rdorch.c:2069
+#: Engine/rdorch.c:2100
#, c-format
msgid "input arg '%s' of type %s not allowed when expecting %c"
msgstr ""
"l'argument d'entrée '%s' de type %s est interdit lorsque l'on attend %c"
-#: Engine/rdorch.c:2155
+#: Engine/rdorch.c:2187
msgid "duplicate label"
msgstr "étiquette dupliquée"
-#: Engine/rdorch.c:2177
+#: Engine/rdorch.c:2209
#, c-format
msgid "error line %d. unknown label:\n"
msgstr "erreur ligne %d. Etiquette inconnue :\n"
-#: Engine/rdorch.c:2192 Engine/rdorch.c:2239
+#: Engine/rdorch.c:2222 Engine/rdorch.c:2271
msgid "error: "
msgstr "erreur : "
-#: Engine/rdorch.c:2208
+#: Engine/rdorch.c:2239
#, c-format
msgid ", line %d:\n"
msgstr ", ligne %d :\n"
-#: Engine/rdorch.c:2246
+#: Engine/rdorch.c:2278
#, c-format
msgid "called from line %d of macro %s"
msgstr "appelé depuis la ligne %d de la macro %s"
-#: Engine/rdorch.c:2250
+#: Engine/rdorch.c:2282
#, c-format
msgid "in line %d of file input %s"
msgstr "dans la ligne %d du fichier d'entrée %s"
-#: Engine/rdscor.c:79
+#: Engine/rdscor.c:80
#, c-format
msgid "ERROR: illegal character %c(%.2x) in scoreline: "
msgstr "ERREUR : caractère illégal %c(%.2x) dans la ligne de partition :"
@@ -1917,7 +1921,7 @@ msgstr ""
"\n"
"\tle reste de la ligne a été ignoré\n"
-#: Engine/rdscor.c:144
+#: Engine/rdscor.c:146
msgid "ERROR: too many pfields: "
msgstr "ERREUR : trop de p-champs"
@@ -1943,314 +1947,278 @@ msgstr "erreur de partition : "
msgid " section %d: at position %d%s"
msgstr " section %d : position %d%s"
-#: Engine/sread.c:217
+#: Engine/sread.c:216
msgid "Internal error in print_input_backtrace()"
msgstr "Erreur interne dans print_input_backtrace()"
-#: Engine/sread.c:219
+#: Engine/sread.c:218
#, c-format
msgid " included from line %d of macro %s%s"
msgstr " inclus depuis la ligne %d de la macro %s%s"
-#: Engine/sread.c:220
+#: Engine/sread.c:219
#, c-format
msgid " called from line %d of macro %s%s"
msgstr " appelé depuis la ligne %d de la macro %s%s"
-#: Engine/sread.c:222
+#: Engine/sread.c:221
#, c-format
msgid " in line %d of macro %s%s"
msgstr " dans la ligne %d de la macro %s%s"
-#: Engine/sread.c:229
-#, c-format
-msgid " included from line %d of file input %s%s"
-msgstr " inclus depuis la ligne %d du fichier en entrée %s%s"
-
-#: Engine/sread.c:230
-#, c-format
-msgid " called from line %d of file input %s%s"
-msgstr " appelé depuis la ligne %d du fichier en entrée %s%s"
-
-#: Engine/sread.c:232
-#, c-format
-msgid " in line %d of file input %s%s"
-msgstr " dans la ligne %d du fichier en entrée %s%s"
-
-#: Engine/sread.c:268
+#: Engine/sread.c:256
#, c-format
msgid "Internal error op=%c"
msgstr "Erreur interne op=%c"
-#: Engine/sread.c:322
-msgid "ungetscochar(): buffer overflow"
-msgstr "ungetscochar(): dépassement de tampon"
-
-#: Engine/sread.c:479
+#: Engine/sread.c:464
msgid "illegal placement of number in [] expression"
msgstr "placement illégal d'un nombre dans l'expression []"
-#: Engine/sread.c:506
+#: Engine/sread.c:491
msgid "illegal placement of operator ~ in [] expression"
msgstr "placement illégal de l'opérateur ~ dans l'expression []"
-#: Engine/sread.c:516
+#: Engine/sread.c:501
msgid "illegal placement of operator @ or @@ in [] expression"
msgstr "placement illégal des opérateurs @ ou @@ dans l'expression []"
-#: Engine/sread.c:548 Engine/sread.c:562
+#: Engine/sread.c:533 Engine/sread.c:547
#, c-format
msgid "illegal placement of operator %c in [] expression"
msgstr "placement illégal de l'opérateur %c dans l'expression []"
-#: Engine/sread.c:574
+#: Engine/sread.c:559
msgid "illegal placement of '(' in [] expression"
msgstr "placement illégal de '(' dans l'expression []"
-#: Engine/sread.c:580
+#: Engine/sread.c:565
msgid "missing operand before ')' in [] expression"
msgstr "il manque un opérande avant ')' dans l'expression []"
-#: Engine/sread.c:594
+#: Engine/sread.c:579
msgid "missing operand before closing bracket in []"
msgstr "il manque un opérande avant le crochet fermant dans []"
-#: Engine/sread.c:609
+#: Engine/sread.c:594
#, c-format
msgid "illegal character %c(%.2x) in [] expression"
msgstr "caractère %c(%.2x) illégal dans l'expression []"
-#: Engine/sread.c:658
+#: Engine/sread.c:646
#, c-format
msgid "%s Nested LOOP terminated, level:%d\n"
msgstr "%s BOUCLE imbriquée terminée, niveau : %d\n"
-#: Engine/sread.c:664
+#: Engine/sread.c:652
#, c-format
msgid "External LOOP terminated, level:%d\n"
msgstr "BOUCLE externe terminée, niveau : %d\n"
-#: Engine/sread.c:684
+#: Engine/sread.c:696
#, c-format
msgid "%s Nested LOOP section (%d) Level:%d\n"
msgstr "%s BOUCLE imbriquée section (%d) Niveau : %d\n"
-#: Engine/sread.c:689
+#: Engine/sread.c:701
#, c-format
msgid " External LOOP section (%d) Level:%d\n"
msgstr " BOUCLE externe section (%d) Niveau : %d\n"
-#: Engine/sread.c:703
+#: Engine/sread.c:715
msgid "Loop terminated\n"
msgstr "Boucle terminée\n"
-#: Engine/sread.c:716
+#: Engine/sread.c:733
#, c-format
msgid "Repeat section (%d)\n"
msgstr "Section répétée (%d)\n"
-#: Engine/sread.c:719
+#: Engine/sread.c:736
msgid "Repeat section\n"
msgstr "Section répétée\n"
-#: Engine/sread.c:744
+#: Engine/sread.c:761
msgid "Invalid macro name for --smacro"
msgstr "Nom de macro non valide pour --smacro"
-#: Engine/sread.c:831
+#: Engine/sread.c:865
#, c-format
msgid "Clockbase = %f\n"
msgstr "Base de l'horloge = %f\n"
-#: Engine/sread.c:898
+#: Engine/sread.c:934
msgid "Loops are nested too deeply"
msgstr "Imbrication des boucles trop profonde"
-#: Engine/sread.c:901
-msgid "Loop cannot start inside of a macro"
-msgstr "Une boucle ne peut pas commencer à l'intérieure d'une macro"
-
-#: Engine/sread.c:920
+#: Engine/sread.c:948
msgid "{: invalid repeat count"
msgstr "{: nombre de répétitions non valide"
-#: Engine/sread.c:929
+#: Engine/sread.c:957
#, c-format
msgid "%s Nested LOOP=%d Level:%d\n"
msgstr "%s BOUCLE imbriquée=%d, Niveau : %d\n"
-#: Engine/sread.c:935
+#: Engine/sread.c:963
#, c-format
msgid "External LOOP=%d Level:%d\n"
msgstr "BOUCLE externe=%d, Niveau : %d\n"
-#: Engine/sread.c:1004
-msgid "Repeat cannot start inside of a macro (ignored)"
-msgstr ""
-"Une répétition ne peut pas commencer à l'intérieur d'une macro (ignorée)"
-
-#: Engine/sread.c:1019
+#: Engine/sread.c:1047
msgid "r: invalid repeat count"
msgstr "r : nombre de répétitions non valide"
-#: Engine/sread.c:1021
+#: Engine/sread.c:1049
#, c-format
msgid "Repeats=%d\n"
msgstr "Répétitions=%d\n"
-#: Engine/sread.c:1063
+#: Engine/sread.c:1093
#, c-format
msgid "Named section >>>%s<<<\n"
msgstr "Section nommée >>>%s<<<\n"
-#: Engine/sread.c:1079
+#: Engine/sread.c:1108
#, c-format
msgid "%d: File %s position %ld\n"
msgstr "%d : Fichier %s position %ld\n"
-#: Engine/sread.c:1085
-#, c-format
-msgid "Ignoring name %s not in file\n"
-msgstr "Nom %s ignoré, pas dans le fichier\n"
-
-#: Engine/sread.c:1110
+#: Engine/sread.c:1133
#, c-format
msgid "Name %s not found"
msgstr "Nom %s non trouvé"
-#: Engine/sread.c:1112
+#: Engine/sread.c:1135
#, c-format
msgid "Duplicate %d: %s (%s,%ld)\n"
msgstr "Dupliquer %d : %s (%s,%ld)\n"
-#: Engine/sread.c:1129
-#, c-format
-msgid "cannot open input file %s"
-msgstr "impossible d'ouvrir le fichier en entrée %s"
-
-#: Engine/sread.c:1149
+#: Engine/sread.c:1164
#, c-format
msgid "Warp_factor = %f\n"
msgstr "Facteur de déformation = %f\n"
-#: Engine/sread.c:1174
+#: Engine/sread.c:1189
msgid "sread is confused on legal opcodes\n"
msgstr "sread hésite sur des opcodes légaux\n"
-#: Engine/sread.c:1236
+#: Engine/sread.c:1251
msgid "No previous event for ^"
msgstr "Pas d'évènement précédent pour ^"
-#: Engine/sread.c:1241
+#: Engine/sread.c:1256
#, c-format
msgid "illegal space following %s, zero substituted"
msgstr "espace illégal après %s, remplacé par zéro"
-#: Engine/sread.c:1271
+#: Engine/sread.c:1286
#, c-format
msgid "ignoring '%s' in '%c' event"
msgstr "'%s' a été ignoré dans l'évènement '%c'"
-#: Engine/sread.c:1274
+#: Engine/sread.c:1289
msgid "! invalid in p1, p2, or p3"
msgstr "! non valide dans p1, p2 ou p3"
-#: Engine/sread.c:1275 Engine/sread.c:1280 Engine/sread.c:1730
-#: Engine/sread.c:1753 Engine/sread.c:1767
+#: Engine/sread.c:1290 Engine/sread.c:1295 Engine/sread.c:1738
+#: Engine/sread.c:1761 Engine/sread.c:1775
msgid " remainder of line flushed\n"
msgstr " le reste de la ligne a été ignoré\n"
-#: Engine/sread.c:1279
+#: Engine/sread.c:1294
#, c-format
msgid "illegal character after !: '%c'"
msgstr "caractère illégal après !: '%c'"
-#: Engine/sread.c:1358
+#: Engine/sread.c:1373
#, c-format
msgid "WARNING: instr %s not found, assuming insno = -1\n"
msgstr "AVERTISSEMENT : instr %s non trouvé, on suppose que insno = -1\n"
-#: Engine/sread.c:1378
+#: Engine/sread.c:1393
msgid "sread: illegal use of carry, 0 substituted\n"
msgstr "sread : utilisation illégale du report, remplacé par 0\n"
-#: Engine/sread.c:1526
+#: Engine/sread.c:1539
msgid "Improper \\"
msgstr "\\ mal employé"
-#: Engine/sread.c:1558
+#: Engine/sread.c:1570
msgid "Not #define"
msgstr "Pas #define"
-#: Engine/sread.c:1620
+#: Engine/sread.c:1630
#, c-format
msgid "Macro %s with %d arguments defined\n"
msgstr "Macro %s avec %d arguments définie\n"
-#: Engine/sread.c:1631
+#: Engine/sread.c:1642
msgid "Not #include"
msgstr "Pas #include"
-#: Engine/sread.c:1662
+#: Engine/sread.c:1671
#, c-format
msgid "Cannot open #include'd file %s"
msgstr "Impossible d'ouvrir le fichier inclus (#include) %s"
-#: Engine/sread.c:1673
+#: Engine/sread.c:1681
msgid "Not #undef"
msgstr "Pas #undef"
-#: Engine/sread.c:1692
+#: Engine/sread.c:1700
msgid "unknown # option"
msgstr "option # inconnue"
-#: Engine/sread.c:1729
+#: Engine/sread.c:1737
#, c-format
msgid "illegal opcode %c"
msgstr "opcode %c illégal"
-#: Engine/sread.c:1752
+#: Engine/sread.c:1760
#, c-format
msgid "unexpected char %c"
msgstr "caractère %c inattendu"
-#: Engine/sread.c:1766
+#: Engine/sread.c:1774
msgid "illegally placed string"
msgstr "sread : chaîne placée illégalement"
-#: Engine/sread.c:1773
+#: Engine/sread.c:1781
msgid "unmatched quote"
msgstr "guillemet non apparié"
-#: Engine/sread.c:1817
+#: Engine/sread.c:1825
msgid "sread: illegal number format: "
msgstr "sread : format de nombre illégal :"
-#: Engine/sread.c:1823
+#: Engine/sread.c:1831
msgid " zero substituted.\n"
msgstr " remplacé par zéro.\n"
-#: Engine/swrite.c:123
+#: Engine/swrite.c:123 Engine/swritestr.c:134
#, c-format
msgid "swrite: unexpected opcode, section %d line %d\n"
msgstr "swrite : opcode inattendu, sect %d ligne %d\n"
-#: Engine/swrite.c:209 Engine/swrite.c:249
+#: Engine/swrite.c:209 Engine/swrite.c:249 Engine/swritestr.c:220
+#: Engine/swritestr.c:260
#, c-format
msgid "swrite: output, sect%d line%d p%d makes illegal reference to "
msgstr ""
"swrite : la sortie, sect %d ligne %d p%d fait illégalement référence à "
-#: Engine/swrite.c:216 Engine/swrite.c:255
+#: Engine/swrite.c:216 Engine/swrite.c:255 Engine/swritestr.c:227
+#: Engine/swritestr.c:266
msgid " Zero substituted\n"
msgstr " Remplacé par zéro\n"
-#: Engine/swrite.c:313
+#: Engine/swrite.c:313 Engine/swritestr.c:324
#, c-format
msgid "swrite: output, sect%d line%d p%d has illegal ramp symbol\n"
msgstr "swrite : sortie, sect %d ligne %d p%d a un symbole de rampe illégal\n"
-#: Engine/swrite.c:317
+#: Engine/swrite.c:317 Engine/swritestr.c:328
#, c-format
msgid ""
"swrite: output, sect%d line%d p%d ramp has illegal forward or backward ref\n"
@@ -2258,14 +2226,16 @@ msgstr ""
"swrite : sortie, sect %d ligne %d p%d, la rampe a une réf avant ou arrière "
"illégale\n"
-#: Engine/swrite.c:380 Engine/swrite.c:445
+#: Engine/swrite.c:380 Engine/swrite.c:445 Engine/swritestr.c:391
+#: Engine/swritestr.c:456
#, c-format
msgid "swrite: output, sect%d line%d p%d has illegal expramp symbol\n"
msgstr ""
"swrite : sortie, sect %d ligne %d p%d a un symbole de rampe exponentielle "
"illégal\n"
-#: Engine/swrite.c:385 Engine/swrite.c:450
+#: Engine/swrite.c:385 Engine/swrite.c:450 Engine/swritestr.c:396
+#: Engine/swritestr.c:461
#, c-format
msgid ""
"swrite: output, sect%d line%d p%d expramp has illegal forward or backward "
@@ -2274,27 +2244,27 @@ msgstr ""
"swrite : sortie, sect %d ligne %d p%d, la rampe exponentielle a une réf "
"avant ou arrière illégale\n"
-#: Engine/swrite.c:466
+#: Engine/swrite.c:466 Engine/swritestr.c:477
#, c-format
msgid "swrite: output, sect%d line%d p%d has illegally terminated string "
msgstr ""
"swrite : sortie, sect %d ligne %d p%d a une chaîne terminée illégalement "
-#: Engine/swrite.c:514
+#: Engine/swrite.c:514 Engine/swritestr.c:529
#, c-format
msgid "swrite: output, sect%d line%d p%d has illegal number "
msgstr "swrite : sortie, sect %d ligne %d p%d a un numéro illégal "
-#: Engine/swrite.c:521
+#: Engine/swrite.c:521 Engine/swritestr.c:536
msgid " String truncated\n"
msgstr " Chaîne tronquée\n"
-#: Engine/symbtab.c:202
+#: Engine/symbtab.c:208
#, c-format
msgid "Type confusion for %s (%d,%d), replacing\n"
msgstr "Confusion de type pour %s (%d,%d), remplacement\n"
-#: Engine/symbtab.c:333
+#: Engine/symbtab.c:345
#, c-format
msgid "Unknown word type for %s on line %d\n"
msgstr "Type de mot inconnu pour %s à la ligne %d\n"
@@ -2315,6 +2285,14 @@ msgstr "twarp : t a un tempo non positif\n"
msgid "twarp: t segments exceed twarp array\n"
msgstr "twarp : les segments t dépassent la capacité du tableau twarp\n"
+#: InOut/cmidi.c:233
+msgid "CoreMIDI real time MIDI plugin for Csound\n"
+msgstr "Module audio en temps réel CoreMIDI pour Csound\n"
+
+#: InOut/cmidi.c:247
+msgid "rtmidi: CoreMIDI module enabled\n"
+msgstr "rtmidi : module CoreMIDI activé\n"
+
#: InOut/libsnd.c:486
msgid "error: no input file name"
msgstr "erreur : pas de nom de fichier d'entrée"
@@ -2338,46 +2316,61 @@ msgstr "l'entrée audio %s a sr = %d, l'orchestre a sr = %d"
msgid "audio_in %s has %d chnls, orch %d chnls_i"
msgstr "l'entrée audio_in %s a %d voix, l'orchestre a %d voix"
-#: InOut/libsnd.c:573
+#: InOut/libsnd.c:574
+#, c-format
+msgid "reading %d sample blks of %d-bit floats from %s \n"
+msgstr "lecture de %d blocs d'échantillons de flottants sur %d bit depuis %s\n"
+
+#: InOut/libsnd.c:578
#, c-format
msgid "reading %d-byte blks of %s from %s (%s)\n"
-msgstr "lecture de blocs de %2$s de %1$d octets à partir de %3$s (%4$s)\n"
+msgstr "lecture de blocs de %d octets de %s à partir de %s (%s)\n"
-#: InOut/libsnd.c:608
+#: InOut/libsnd.c:614
msgid "Output file type changed to IRCAM for use in pipe\n"
msgstr ""
"Type du fichier de sortie changé en IRCAM pour utilisation dans un pipe\n"
-#: InOut/libsnd.c:628
+#: InOut/libsnd.c:634
msgid "Failed to initialise real time audio output"
msgstr "L'initialisation de la sortie audio en temps réel a échoué"
-#: InOut/libsnd.c:669 InOut/libsnd.c:673
+#: InOut/libsnd.c:675 InOut/libsnd.c:679
#, c-format
msgid "sfinit: cannot open %s"
msgstr "sfinit : impossible d'ouvrir %s"
-#: InOut/libsnd.c:733 util/srconv.c:485
+#: InOut/libsnd.c:741
+#, c-format
+msgid "writing %d sample blks of %d-bit floats to %s \n"
+msgstr "écriture de %d blocs d'échantillons de flottants sur %d bit vers %s\n"
+
+#: InOut/libsnd.c:744 util/srconv.c:484
#, c-format
msgid "writing %d-byte blks of %s to %s"
msgstr "écriture de blocs de %2$s de %1$d octets vers %3$s"
-#: InOut/libsnd.c:740 InOut/libsnd.c:810
+#: InOut/libsnd.c:749 InOut/libsnd.c:824
msgid " (raw)\n"
msgstr " (raw)\n"
-#: InOut/libsnd.c:803
+#: InOut/libsnd.c:815
#, c-format
-msgid "%ld %d-byte soundblks of %s written to %s"
-msgstr "%1$ld blocs de %3$s de %2$d octets écrits vers %4$s"
+msgid "%ld %d sample blks of %d-bit floats written to %s\n"
+msgstr "%ld %d blocs d'échantillons de flottants sur %d bit écrits vers %s\n"
-#: InOut/libsnd.c:822
+#: InOut/libsnd.c:820
+#, c-format
+msgid "%ld %d sample blks of %s written to %s"
+msgstr "%ld %d blocs d'échantillons de %s écrits vers %s"
+
+#: InOut/libsnd.c:837
#, c-format
msgid "soundfile write returned bytecount of %d, not %d"
msgstr ""
"l'écriture du fichier son a retourné un compte de %d octets au lieu de %d"
-#: InOut/libsnd.c:825
+#: InOut/libsnd.c:840
msgid ""
"(disk may be full...\n"
" closing the file ...)"
@@ -2385,11 +2378,11 @@ msgstr ""
"(disque peut-être plein...\n"
" fermeture du fichier ...)"
-#: InOut/libsnd.c:828 util/dnoise.c:1192
+#: InOut/libsnd.c:843 util/dnoise.c:1177
msgid "\t... closed\n"
msgstr "\t... fermé\n"
-#: InOut/libsnd.c:834
+#: InOut/libsnd.c:849
msgid "not writing to sound disk\n"
msgstr "pas d'écriture vers un sound disk\n"
@@ -2792,20 +2785,20 @@ msgstr "Erreur en fermant le périphérique d'entrée MIDI : %d (%s)"
msgid "Error closing MIDI out device: %d (%s)"
msgstr "Erreur en fermant le périphérique de sortie MIDI : %d (%s)"
-#: InOut/midisend.c:171
+#: InOut/midisend.c:170
msgid " *** no callback for opening MIDI output"
msgstr " *** pas de fonction de rappel pour ouvrir la sortie MIDI"
-#: InOut/midisend.c:173
+#: InOut/midisend.c:172
msgid " *** no callback for writing MIDI data"
msgstr " *** pas de fonction de rappel pour écrire des données MIDI"
-#: InOut/midisend.c:179
+#: InOut/midisend.c:178
#, c-format
msgid " *** error opening MIDI out device: %d (%s)"
msgstr " *** erreur en ouvrant le périphérique de sortie MIDI : %d (%s)"
-#: InOut/midisend.c:190
+#: InOut/midisend.c:189
#, c-format
msgid " *** error opening MIDI out file '%s'"
msgstr " *** erreur en ouvrant le fichier de sortie MIDI '%s'"
@@ -3065,7 +3058,7 @@ msgstr "Erreur en ouvrant le fichier '%s' comme destination de la sortie MIDI"
msgid "Opened MIDI output device file '%s'\n"
msgstr "Le fichier '%s' est ouvert comme destination de la sortie MIDI\n"
-#: InOut/rtalsa.c:1101 InOut/rtcoreaudio.c:64 InOut/rtcoreaudio.c:74
+#: InOut/rtalsa.c:1101 InOut/rtcoreaudio.c:71 InOut/rtcoreaudio.c:81
msgid "warning... could not create global var\n"
msgstr "avertissement... impossible de créer une variable globale\n"
@@ -3090,7 +3083,25 @@ msgstr "rtmiDi : module ALSA activé\n"
msgid "rtmidi: devfile module enabled\n"
msgstr "rtmidi : module devfile activé\n"
-#: InOut/rtcoreaudio.c:83
+#: InOut/rtauhal.c:163
+#, c-format
+msgid "selected input device: %s \n"
+msgstr "périphérique d'entrée sélectionné : %s\n"
+
+#: InOut/rtauhal.c:166
+#, c-format
+msgid "selected output device: %s \n"
+msgstr "périphérique de sortie sélectionné : %s\n"
+
+#: InOut/rtauhal.c:524
+msgid "AuHAL module: device closed\n"
+msgstr "Module AuHAL : périphérique fermé\n"
+
+#: InOut/rtauhal.c:541
+msgid "rtaudio: coreaaudio-AuHAL module enabled\n"
+msgstr "rtaudio : module AuHAL activé\n"
+
+#: InOut/rtcoreaudio.c:90
msgid ""
"CoreAudio real-time audio module for Csound\n"
"by Victor Lazzarini\n"
@@ -3098,32 +3109,32 @@ msgstr ""
"Module audio temps-réel CoreAudio pour Csound\n"
"par Victor Lazzarini\n"
-#: InOut/rtcoreaudio.c:105
+#: InOut/rtcoreaudio.c:112
msgid "rtaudio: CoreAudio module enabled\n"
msgstr "rtaudio : module CoreAudio activé\n"
-#: InOut/rtcoreaudio.c:254
+#: InOut/rtcoreaudio.c:261
#, c-format
msgid "selected device: %u \n"
msgstr "périphérique sélectionné %u\n"
-#: InOut/rtcoreaudio.c:263
+#: InOut/rtcoreaudio.c:270
#, c-format
msgid "CoreAudio module: opening %s \n"
msgstr "module CoreAudio : erreur en ouvrant %s\n"
-#: InOut/rtcoreaudio.c:297
+#: InOut/rtcoreaudio.c:304
msgid " *** CoreAudio: open: could not set buffer size\n"
msgstr " *** CoreAudio : open : impossible de fixer la taille du tampon\n"
-#: InOut/rtcoreaudio.c:342
+#: InOut/rtcoreaudio.c:349
#, c-format
msgid " *** CoreAudio: open: could not set device parameter sr: %d \n"
msgstr ""
" *** CoreAudio : open : impossible de fixer le paramètre de périphérique "
"sr : %d\n"
-#: InOut/rtcoreaudio.c:344
+#: InOut/rtcoreaudio.c:351
#, c-format
msgid ""
" *** CoreAudio: current device sampling rate is:%d \n"
@@ -3132,17 +3143,17 @@ msgstr ""
" *** CoreAudio : le taux d'échantillonnage du périphérique actuel est : %d\n"
" essayez de mettre la valeur ci-dessus dans votre orchestre csound\n"
-#: InOut/rtcoreaudio.c:353
+#: InOut/rtcoreaudio.c:360
#, c-format
msgid "CoreAudio module: sr set to %d with %d audio channels \n"
msgstr "Module CoreAudio : sr réglé à %d avec %d canaux audio\n"
-#: InOut/rtcoreaudio.c:374 InOut/rtcoreaudio.c:387 InOut/rtcoreaudio.c:432
-#: InOut/rtcoreaudio.c:452
+#: InOut/rtcoreaudio.c:381 InOut/rtcoreaudio.c:394 InOut/rtcoreaudio.c:439
+#: InOut/rtcoreaudio.c:459
msgid " *** CoreAudio: open: memory allocation failure\n"
msgstr " *** CoreAudio : ouvert : échec de l'allocation mémoire\n"
-#: InOut/rtcoreaudio.c:414
+#: InOut/rtcoreaudio.c:421
#, c-format
msgid ""
"CoreAudio module: device open with %d buffers of %d frames\n"
@@ -3151,11 +3162,11 @@ msgstr ""
"Module CoreAudio : périphérique ouvert avec %d tampons de %d trames\n"
"===================================================================\n"
-#: InOut/rtcoreaudio.c:552
+#: InOut/rtcoreaudio.c:559
msgid "coreaudio module: closing device...\n"
msgstr "Module CoreAudio : fermeture du périphérique...\n"
-#: InOut/rtcoreaudio.c:566
+#: InOut/rtcoreaudio.c:573
msgid "coreaudio module: device closed\n"
msgstr "Module CoreAudio : périphérique fermé\n"
@@ -3559,319 +3570,12 @@ msgstr "impossible d'allouer la structure globale"
msgid "rtaudio: WinMM module enabled\n"
msgstr "rtaudio : module WinMM activé\n"
-#: InOut/virtual_keyboard/virtual_keyboard.cpp:435
-msgid "virtual_keyboard.cpp: error allocating FLTK flags"
-msgstr "virtual_keyboard.cpp : erreur lors de l'allocation des options FLTK"
-
-#: InOut/virtual_keyboard/virtual_keyboard.cpp:443 InOut/winFLTK.c:125
-#: InOut/winFLTK.c:139
-#, c-format
-msgid "Error registering opcode '%s'"
-msgstr "Erreur en enregistrant l'opcode '%s'"
-
-#: InOut/widgets.cpp:1081
-msgid ""
-"Invalid snapshot. Perhaps you modified orchestra widget code after you saved "
-"the snapshot bank."
-msgstr ""
-"Instantané non valide. Peut-être avez-vous modifié le code d'un widget de "
-"l'orchestre après avoir sauvegardé la banque d'instantanés."
-
-#: InOut/widgets.cpp:1226
-msgid "No name for FLbutbank"
-msgstr "Pas de nom pour FLbutbank"
-
-#: InOut/widgets.cpp:1466
-msgid "FLsetsnap: invalid table"
-msgstr "FLsetsnap : table non valide"
-
-#: InOut/widgets.cpp:1504
-msgid ""
-"Saving could overwrite the old file.\n"
-"Are you sure to save ?"
-msgstr ""
-"La sauvegarde écrasera l'ancien fichier.\n"
-" Etes-vous sûr ?"
-
-#: InOut/widgets.cpp:1516
-msgid ""
-"Saving could overwrite the old file.\n"
-"Are you sure you want to save ?"
-msgstr ""
-"La sauvegarde écrasera l'ancien fichier\n"
-"Etes-vous certain de vouloir sauvegarder ?"
-
-#: InOut/widgets.cpp:1518
-msgid "No"
-msgstr "Non"
-
-#: InOut/widgets.cpp:1518
-msgid "Yes"
-msgstr "Oui"
-
-#: InOut/widgets.cpp:1527
-msgid "FLsavesnap: cannot open file"
-msgstr "FLsavesnap : impossible d'ouvrir le fichier"
-
-#: InOut/widgets.cpp:1580
-msgid "FLloadsnap: cannot open file"
-msgstr "FLloadsnap : impossible d'ouvrir le fichier"
-
-#: InOut/widgets.cpp:1625
-msgid ""
-"unmatched widget, probably due to a modified orchestra. Modifying an "
-"orchestra makes it incompatible with old snapshot files"
-msgstr ""
-"widget non apparié, probablement à cause d'une modification de l'orchestre."
-"La modification d'un orchestre le rend incompatible avec les anciens "
-"fichiers d'instantanés"
-
-#: InOut/widgets.cpp:1994
-msgid "end of widget thread\n"
-msgstr "fin du thread de widget\n"
-
-#: InOut/widgets.cpp:2020
-msgid "FLrun was already called"
-msgstr "FLrun a déjà été appelé"
-
-#: InOut/widgets.cpp:2023
-msgid "FL_run: memory allocation failure"
-msgstr "FL_run : échec de l'allocation mémoire"
-
-#: InOut/widgets.cpp:2125 InOut/widgets.cpp:2145
-msgid "Error: Unable to fork process\n"
-msgstr "Erreur : Impossible de lancer le processus\n"
-
-#: InOut/widgets.cpp:2545
-msgid "FLpanel_end: invalid stack pointer: verify its placement"
-msgstr "FLpanel_end : pointeur de pile non valide : vérifier sa position"
-
-#: InOut/widgets.cpp:2548
-msgid ""
-"FLpanel_end: invalid stack count: verify FLpanel/FLpanel_end count and "
-"placement"
-msgstr ""
-"FLpanel_end : compte de la pile non valide : vérifier le nombre de FLpanel/"
-"FLpanel_end et leurs positions"
-
-#: InOut/widgets.cpp:2573 InOut/widgets.cpp:2604
-msgid "FLscroll_end: invalid stack pointer: verify its placement"
-msgstr "FLscroll_end : pointeur de pile non valide : vérifier sa position"
-
-#: InOut/widgets.cpp:2576
-msgid ""
-"FLscroll_end: invalid stack count: verify FLscroll/FLscroll_end count and "
-"placement"
-msgstr ""
-"FLscroll_end : compte de la pile non valide : vérifier le nombre de FLscroll/"
-"FLscroll_end et leurs positions"
-
-#: InOut/widgets.cpp:2607
-msgid ""
-"FLtabs_end: invalid stack count: verify FLtabs/FLtabs_end count and placement"
-msgstr ""
-"FLtabs_end : pointeur de pile non valide : vérifier le nombre de FLtabs/"
-"FLtabs_end et leurs positions"
-
-#: InOut/widgets.cpp:2651
-msgid "FLgroup_end: invalid stack pointer: verify its placement"
-msgstr "FLgroup_end : pointeur de pile non valide : vérifier sa position"
-
-#: InOut/widgets.cpp:2654
-msgid ""
-"FLgroup_end: invalid stack count: verify FLgroup/FLgroup_end count and "
-"placement"
-msgstr ""
-"FLgroup_end : compte de la pile non valide : verifier le nombre de FLgroup/"
-"FLgroup_end et leurs positions"
-
-#: InOut/widgets.cpp:2684
-msgid "FLpack_end: invalid stack pointer: verify its placement"
-msgstr "FLpack_end : pointeur de pile non valide : vérifier sa position"
-
-#: InOut/widgets.cpp:2687
-msgid ""
-"FLpack_end: invalid stack count: verify FLpack/FLpack_end count and placement"
-msgstr ""
-"FLpack_end : compte de la pile non valide : vérifier le nombre de FLpack/"
-"FLpack_end et leurs positions"
-
-#: InOut/widgets.cpp:2840
-msgid "FLvalue cannot be set by FLsetVal.\n"
-msgstr "FLvalue ne peut pas être rempli par FLsetVal.\n"
-
-#: InOut/widgets.cpp:2857
-#, c-format
-msgid "(fl_setWidgetValuei): not fully implemented yet; exp=%d"
-msgstr "(fl_setWidgetValuei) : pas encore totalement implémenté ; exp=%d"
-
-#: InOut/widgets.cpp:2876
-msgid "FLvalue cannot be set by FLsetVal\n"
-msgstr "FLvalue ne peut pas être rempli par FLsetVal\n"
-
-#: InOut/widgets.cpp:2893
-#, c-format
-msgid "(fl_setWidgetValue_set): not fully implemented yet; exp=%d"
-msgstr "(fl_setWidgetValue_set) : pas encore totalement implémenté ; exp=%d"
-
-#: InOut/widgets.cpp:3242 InOut/widgets.cpp:4648
-msgid "FLslider exponential, using non-labeled slider"
-msgstr "FLslider exponentiel, utilisation d'une réglette sans étiquette"
-
-#: InOut/widgets.cpp:3264
-msgid "FLslider: invalid slider type"
-msgstr "FLslider : type de réglette non valide"
-
-#: InOut/widgets.cpp:3276 InOut/widgets.cpp:4072
-msgid "FLslider: zero is illegal in exponential operations"
-msgstr "FLslider : zéro est interdit dans les opérations exponentielles"
-
-#: InOut/widgets.cpp:3337 InOut/widgets.cpp:4399 InOut/widgets.cpp:4610
-#: InOut/widgets.cpp:4787
-msgid "invalid ZAK space allocation"
-msgstr "espace d'allocation ZAK non valide"
-
-#: InOut/widgets.cpp:3451
-msgid "FLslidBnk: zero is illegal in exponential operations"
-msgstr "FLslidBnk : zéro est interdit dans les opérations exponentielles"
-
-#: InOut/widgets.cpp:3548 InOut/widgets.cpp:3581
-msgid "FLjoy X axe: zero is illegal in exponential operations"
-msgstr "FLjoy axe X : zéro est interdit dans les opérations exponentielles"
-
-#: InOut/widgets.cpp:3675
-msgid "FLknob: invalid knob type"
-msgstr "FLknob : type de bouton rotatif non valide"
-
-#: InOut/widgets.cpp:3690
-msgid "FLknob: zero is illegal in exponential operations"
-msgstr "FLknob : zéro est interdit dans les opérations exponentielles"
-
-#: InOut/widgets.cpp:3790 InOut/widgets.cpp:3912
-#, c-format
-msgid "FLbutton \"%s\" ignoring snapshot capture retrieve"
-msgstr "FLbutton \"%s\" ignore les instantanés de capture et de restitution"
-
-#: InOut/widgets.cpp:3831
-msgid "FLbutton: invalid button type"
-msgstr "FLbutton : type de bouton non valide"
-
-#: InOut/widgets.cpp:3863
-msgid "FLcloseButton: invalid stack pointer: verify its placement"
-msgstr "FLcloseButton : pointeur de pile non valide : vérifier sa position"
-
-#: InOut/widgets.cpp:3882
-#, c-format
-msgid "Command Found: %s\n"
-msgstr "Commande trouvée : %s\n"
-
-#: InOut/widgets.cpp:3954
-msgid "FLbuttonBank: invalid button type"
-msgstr "FLbuttonBank : type de bouton non valide"
-
-#: InOut/widgets.cpp:3992
-#, c-format
-msgid "FLcount \"%s\" ignoring snapshot capture retrieve"
-msgstr "FLcount \"%s\" ignore les instantanés de capture et de restitution"
-
-#: InOut/widgets.cpp:4059
-msgid "FLroller: invalid roller type"
-msgstr "FLroller : type de molette non valide"
-
-#: InOut/widgets.cpp:4254
-msgid "FLhvsBox: a square area must be delimited by 2 lines at least"
-msgstr ""
-"FLhvsBox : une surface carrée doit être délimitée par au moins 2 lignes"
-
-#: InOut/widgets.cpp:4302
-msgid "FLkeyIn: invalid table number"
-msgstr "FLkeyIn : numéro de table non valide"
-
-#: InOut/widgets.cpp:4305
-msgid "FLkeyIn: table too short!"
-msgstr "FLkeyIn : table trop courte !"
-
-#: InOut/widgets.cpp:4522
-msgid "FLvslidBnk: zero is illegal in exponential operations"
-msgstr "FLvslidBnk : zéro est illégal dans les opérations exponentielles"
-
-#: InOut/widgets.cpp:4698 InOut/widgets.cpp:4875
-msgid "FLsliderBank: zero is illegal in exponential operations"
-msgstr "FLsliderBank : zéro est illégal dans les opérations exponentielles"
-
-#: InOut/widgets.cpp:4825
-msgid "FLslidBnk2: FLslider exponential, using non-labeled slider"
-msgstr ""
-"FLslidBnk2 : FLslider exponentiel, utilisant une réglette sans étiquette"
-
-#: InOut/widgets.cpp:4955 InOut/widgets.cpp:5018
-msgid "FLsldBnkSet: invalid table number"
-msgstr "FLsldBnkSet : numéro de table non valide"
-
-#: InOut/widgets.cpp:4959 InOut/widgets.cpp:5022
-msgid "FLslidBnkSet: table too short!"
-msgstr "FLslidBnkSet : table trop courte !"
-
-#: InOut/widgets.cpp:4967 InOut/widgets.cpp:5031
-msgid "FLsldBnkSet: invalid outable number"
-msgstr "FLsldBnkSet : numéro de outable non valide"
-
-#: InOut/widgets.cpp:4972 InOut/widgets.cpp:5037
-msgid "FLslidBnkSet: too many sliders to reset!"
-msgstr "FLslidBnkSet : trop de réglettes à réinitialiser !"
-
-#: InOut/widgets.cpp:4995
-msgid "FLslidBnkSet: function mapping not available"
-msgstr "FLslidBnkSet : type de fonction (lin. ou exp.) non disponible"
-
-#: InOut/widgets.cpp:5064 InOut/widgets.cpp:5149 InOut/widgets.cpp:5236
-msgid ""
-"FLslidBnk2Setk: value out of range: function mapping requires a 0 to 1 range "
-"for input"
-msgstr ""
-"FLslidBnk2Setk : valeur hors limites : le mappage de fonction nécessite en "
-"entrée l'intervalle de 0 à 1"
-
-#: InOut/widgets.cpp:5093
-msgid "FLsldBnkSetk: invalid table number"
-msgstr "FLslidBnkSetk : numéro de table non valide"
-
-#: InOut/widgets.cpp:5097 InOut/widgets.cpp:5183
-msgid "FLslidBnkSetk: table too short!"
-msgstr "FLslidBnkSetk : table trop courte !"
-
-#: InOut/widgets.cpp:5105
-msgid "FLsldBnkSetk: invalid outable number"
-msgstr "FLslidBnkSetk : numéro de outable non valide"
-
-#: InOut/widgets.cpp:5111 InOut/widgets.cpp:5197
-msgid "FLslidBnkSetk: too many sliders to reset!"
-msgstr "FLslidBnkSetk : trop de réglettes à réinitialiser !"
-
-#: InOut/widgets.cpp:5179
-msgid "FLslidBnkSetk: invalid table number"
-msgstr "FLslidBnkSetk : numéro de table non valide"
-
-#: InOut/widgets.cpp:5191
-msgid "FLslidBnkSetk: invalid outable number"
-msgstr "FLslidBnkSetk : numéro de outable non valide"
-
-#: InOut/widgets.cpp:5268
-msgid "FLxyin: none of X limits can be zero in exponential mode!"
-msgstr ""
-"FLxyin : aucune des limites de X ne peut être zéro en mode exponentiel !"
-
-#: InOut/widgets.cpp:5294
-msgid "FLxyin: none of Y limits can be zero in exponential mode!"
-msgstr ""
-"FLxyin : aucune des limites de Y ne peut être zéro en mode exponentiel !"
-
#: InOut/winascii.c:75
#, c-format
msgid "%s\t%ld points, scalemax %5.3f\n"
msgstr "%s\t%ld points, échelle max %5.3f\n"
-#: InOut/windin.c:46 Opcodes/pitch.c:82 Opcodes/spectra.c:76
+#: InOut/windin.c:46 Opcodes/pitch.c:83 Opcodes/spectra.c:78
msgid "illegal iprd"
msgstr "iprd illégal"
@@ -3917,47 +3621,60 @@ msgstr "%s : les opcodes de widget ont été désactivés par l'application hôt
msgid "widgets.cpp: error allocating FLTK flags"
msgstr "widgets.cpp : erreur lors de l'allocation des options de FLTK"
-#: OOps/aops.c:95 OOps/aops.c:119
+#: InOut/winFLTK.c:124 InOut/winFLTK.c:137
+#: InOut/virtual_keyboard/virtual_keyboard.cpp:443
+#, c-format
+msgid "Error registering opcode '%s'"
+msgstr "Erreur en enregistrant l'opcode '%s'"
+
+#: InOut/virtual_keyboard/virtual_keyboard.cpp:435
+msgid "virtual_keyboard.cpp: error allocating FLTK flags"
+msgstr "virtual_keyboard.cpp : erreur lors de l'allocation des options FLTK"
+
+#: OOps/aops.c:120 OOps/aops.c:144
#, c-format
msgid "Cannot be more In arguments than Out in init (%d,%d)"
msgstr "Il ne peut y avoir plus d'arguments In que Out dans init (%d,%d)"
-#: OOps/aops.c:175 OOps/aops.c:194
-#, fuzzy, c-format
+#: OOps/aops.c:200 OOps/aops.c:219
+#, c-format
msgid "Index %d out of range [0,%d] in t[]\n"
-msgstr "sorte de filtre, %d, dans clfilt, hors limites"
+msgstr "Index %d hors-limites [0,%d] dans t[]\n"
-#: OOps/aops.c:184
-#, fuzzy
-msgid "Vector notinitialised\n"
-msgstr "vco : non initialisé"
+#: OOps/aops.c:209
+msgid "Vector not initialised\n"
+msgstr "Vector : non initialisé\n"
-#: OOps/aops.c:686
+#: OOps/aops.c:711
msgid "non-looping sample"
msgstr "son échantillonné sans boucle"
-#: OOps/aops.c:828 OOps/aops.c:856
+#: OOps/aops.c:853 OOps/aops.c:881
#, c-format
msgid "No tuning table %d"
msgstr "Pas de table d'accordage %d"
-#: OOps/aops.c:901 OOps/aops.c:939
+#: OOps/aops.c:926 OOps/aops.c:964
msgid "cpstun: invalid table"
msgstr "cpstun : table non valide"
-#: OOps/aops.c:1189
+#: OOps/aops.c:1214
msgid "Input and output argument count differs in inch"
msgstr "Les nombres d'arguments d'entrée et de sortie diffèrent dans inch"
-#: OOps/aops.c:1193
+#: OOps/aops.c:1218
#, c-format
msgid "Input channel %d too large; ignored"
msgstr "Canal d'entrée %d trop grand ; ignoré"
-#: OOps/aops.c:1667
+#: OOps/aops.c:1698
msgid "k-rate invalue ChannelName cannot start with $"
msgstr "Un nom de canal d'entrée au taux-k ne peut pas commencer par un $"
+#: OOps/aops.c:1835
+msgid "Unknown functuon called"
+msgstr "Appel de fonction inconnue"
+
#: OOps/bus.c:313 OOps/bus.c:345
msgid "chani: invalid index"
msgstr "chani : index non valide"
@@ -4207,9 +3924,8 @@ msgid "display"
msgstr "affichage"
#: OOps/disprep.c:96
-#, fuzzy
msgid "illegal iprd in display"
-msgstr "iprd illégal"
+msgstr "iprd illégal dans l'affichage"
#: OOps/disprep.c:120
#, c-format
@@ -4233,9 +3949,8 @@ msgid "window size must be power of two"
msgstr "la taille de la fenêtre doit être une puissance de deux"
#: OOps/disprep.c:252
-#, fuzzy
msgid "illegal iprd in ffy display"
-msgstr "iperiod illégal"
+msgstr "iprd illégal dans l'affichage de ffy"
#: OOps/disprep.c:277
#, c-format
@@ -4258,7 +3973,7 @@ msgstr "tfr"
msgid "dispfft: not initialised"
msgstr "dispfft : non initialisé"
-#: OOps/disprep.c:435 Opcodes/spectra.c:516
+#: OOps/disprep.c:435 Opcodes/spectra.c:518
msgid "illegal iperiod"
msgstr "iperiod illégal"
@@ -4322,15 +4037,15 @@ msgstr "format kdump inconnu"
msgid " *** fftlib.c: internal error: invalid FFT size: %d"
msgstr " *** fftlib.x : erreur interne : taille de TFR non valide : %d"
-#: OOps/goto_ops.c:92
+#: OOps/goto_ops.c:93
msgid "negative time period"
msgstr "durée négative"
-#: OOps/goto_ops.c:182
+#: OOps/goto_ops.c:186
msgid "turnoff2: invalid instrument number"
msgstr "turnoff2 : numéro d'instrument non valide"
-#: OOps/goto_ops.c:187
+#: OOps/goto_ops.c:191
msgid "turnoff2: invalid mode parameter"
msgstr "turnoff2 : paramètre de mode non valide"
@@ -4347,7 +4062,7 @@ msgid "cpstabm: invalid modulator table"
msgstr "cpstabm : table de modulateur non valide"
#: OOps/midiops.c:304 OOps/midiops.c:314 OOps/midiops.c:334 OOps/midiops.c:344
-#: OOps/midiops.c:421 OOps/midiops.c:435 Opcodes/gab/sliderTable.c:563
+#: OOps/midiops.c:421 OOps/midiops.c:435 Opcodes/gab/sliderTable.c:567
#: Opcodes/midiops2.c:56 Opcodes/midiops2.c:73 Opcodes/midiops2.c:111
#: Opcodes/midiops2.c:145 Opcodes/midiops2.c:206 Opcodes/midiops2.c:237
#: Opcodes/midiops2.c:298 Opcodes/midiops2.c:317 Opcodes/midiops2.c:357
@@ -4363,7 +4078,7 @@ msgstr "pgmassign : numéro de programme non valide"
msgid "illegal mrtmsg argument"
msgstr "argument de mrtmsg illégal"
-#: OOps/midiout.c:383
+#: OOps/midiout.c:389
#, c-format
msgid "out contr14 msb:%x lsb:%x\n"
msgstr "out contr14 msb :%x lsb :%x\n"
@@ -4916,148 +4631,148 @@ msgstr "pvsanal : non initialisé.\n"
msgid "Unknown window type; replaced by rectangular\n"
msgstr "Type de fenêtre inconnu ; remplacé par rectangulaire\n"
-#: OOps/pvsanal.c:1025
+#: OOps/pvsanal.c:1027
msgid "pvsynth: Not Initialised.\n"
msgstr "pvsynth : non initialisé.\n"
-#: OOps/remote.c:100
+#: OOps/remote.c:103
msgid "insufficient memory to initialise remote globals."
msgstr "mémoire insuffisante pour initialiser les variables globales distantes"
-#: OOps/remote.c:109
+#: OOps/remote.c:112
msgid "insufficient memory to initialise outgoing socket table."
msgstr "mémoire insuffisante pour initialiser la table de socket sortant"
-#: OOps/remote.c:116
+#: OOps/remote.c:119
msgid "insufficient memory to initialise incoming socket table."
msgstr "mémoire insuffisante pour initialiser la table de socket entrant"
-#: OOps/remote.c:124
+#: OOps/remote.c:127
msgid "insufficient memory to initialise insrfd_list."
msgstr "mémoire insuffisante pour initialiser insrfd_list."
-#: OOps/remote.c:132
+#: OOps/remote.c:135
msgid "insufficient memory to initialise chnrfd_list."
msgstr "mémoire insuffisante pour initialiser chnrfd_list."
-#: OOps/remote.c:139
+#: OOps/remote.c:142
msgid "insufficient memory to initialise insrfd table."
msgstr "mémoire insuffisante pour initialiser la table insrfd."
-#: OOps/remote.c:146
+#: OOps/remote.c:149
msgid "insufficient memory to initialise chnrfd table."
msgstr "mémoire insuffisante pour initialiser la table chnrfd."
-#: OOps/remote.c:153
+#: OOps/remote.c:156
msgid "insufficient memory to initialise local ip address."
msgstr "mémoire insuffisante pour initialiser l'adresse IP locale."
-#: OOps/remote.c:161
+#: OOps/remote.c:164
msgid "unable to get local ip address."
msgstr "impossible d'obtenir une adresse IP locale."
-#: OOps/remote.c:222
+#: OOps/remote.c:225
msgid "could not open remote port"
msgstr "impossible d'ouvrir le port distant"
-#: OOps/remote.c:237
+#: OOps/remote.c:240
msgid "---> Could not connect \n"
msgstr "---> Connexion impossible \n"
-#: OOps/remote.c:241
+#: OOps/remote.c:244
msgid "---> Failed all attempts to connect. \n"
msgstr "---> Toutes les tentatives de connexion ont échoué. \n"
-#: OOps/remote.c:244
+#: OOps/remote.c:247
msgid "---> Connected. \n"
msgstr "---> Connecté. \n"
-#: OOps/remote.c:258 Opcodes/socksend.c:232
+#: OOps/remote.c:261 Opcodes/socksend.c:305
msgid "write to socket failed"
msgstr "l'écriture sur le socket a échoué"
-#: OOps/remote.c:278
+#: OOps/remote.c:281
msgid "creating socket\n"
msgstr "création du socket\n"
-#: OOps/remote.c:280
+#: OOps/remote.c:283
msgid "created socket \n"
msgstr "socket créé \n"
-#: OOps/remote.c:292
+#: OOps/remote.c:295
msgid "setting socket option to reuse the addresse \n"
msgstr "réglage de l'option du socket pour réutiliser l'adresse \n"
-#: OOps/remote.c:309 Opcodes/sockrecv.c:133 Opcodes/sockrecv.c:223
-#: Opcodes/socksend.c:211
+#: OOps/remote.c:312 Opcodes/sockrecv.c:141 Opcodes/sockrecv.c:237
+#: Opcodes/socksend.c:284
msgid "bind failed"
msgstr "la liaison a échoué"
-#: OOps/remote.c:313 Opcodes/socksend.c:216
+#: OOps/remote.c:316 Opcodes/socksend.c:289
msgid "listen failed"
msgstr "l'écoute a échoué"
-#: OOps/remote.c:318 Opcodes/socksend.c:222
+#: OOps/remote.c:321 Opcodes/socksend.c:295
msgid "accept failed"
msgstr "l'acceptation a échoué"
-#: OOps/remote.c:321
+#: OOps/remote.c:324
#, c-format
msgid "accepted, conn=%d \n"
msgstr "accepté, cnx=%d \n"
-#: OOps/remote.c:353 OOps/remote.c:374 OOps/remote.c:417 OOps/remote.c:449
-#: OOps/remote.c:489
+#: OOps/remote.c:356 OOps/remote.c:377 OOps/remote.c:420 OOps/remote.c:452
+#: OOps/remote.c:492
msgid "failed to initialise remote globals."
msgstr "l'initialisation des variables globales distantes a échoué."
-#: OOps/remote.c:378 OOps/remote.c:421
+#: OOps/remote.c:381 OOps/remote.c:424
msgid "missing instr nos"
msgstr "il manque les numéros d'instr"
-#: OOps/remote.c:390 OOps/remote.c:430
+#: OOps/remote.c:393 OOps/remote.c:433
msgid "illegal instr no"
msgstr "numéro d'instr illégal"
-#: OOps/remote.c:393
+#: OOps/remote.c:396
msgid "insno already remote"
msgstr "insno est déjà distant"
-#: OOps/remote.c:403 OOps/remote.c:474
+#: OOps/remote.c:406 OOps/remote.c:477
msgid "Failed to open port to listen"
msgstr "L'ouverture d'un port d'écoute a échoué"
-#: OOps/remote.c:423
+#: OOps/remote.c:426
#, c-format
msgid "*** str1: %s own:%s\n"
msgstr "*** strl : %s own : %s\n"
-#: OOps/remote.c:433
+#: OOps/remote.c:436
msgid "insno already specific remote"
msgstr "insno est déjà distant spécifique"
-#: OOps/remote.c:453 OOps/remote.c:493
+#: OOps/remote.c:456 OOps/remote.c:496
msgid "missing channel nos"
msgstr "il manque les numéros de canal"
-#: OOps/remote.c:463 OOps/remote.c:502
+#: OOps/remote.c:466 OOps/remote.c:505
msgid "illegal channel no"
msgstr "numéro de canal illégal"
-#: OOps/remote.c:466
+#: OOps/remote.c:469
msgid "channel already remote"
msgstr "canal déjà distant"
-#: OOps/remote.c:505
+#: OOps/remote.c:508
msgid "channel already specific remote"
msgstr "canal déjà distant spécifique"
-#: OOps/remote.c:531 OOps/remote.c:555 OOps/remote.c:579
+#: OOps/remote.c:534 OOps/remote.c:558 OOps/remote.c:582
msgid "CLsend failed"
msgstr "CLsend a échoué"
-#: OOps/remote.c:645 OOps/remote.c:653 OOps/remote.c:661 OOps/remote.c:669
-#: OOps/remote.c:677
+#: OOps/remote.c:648 OOps/remote.c:656 OOps/remote.c:664 OOps/remote.c:672
+#: OOps/remote.c:680
msgid ""
"*** This version of Csound was not compiled with remote event support ***\n"
msgstr ""
@@ -5162,7 +4877,7 @@ msgstr "signes différents"
#: OOps/ugens1.c:156
#, c-format
msgid "Breakpoint %d not valid"
-msgstr ""
+msgstr "Point charnière %d non valide"
#: OOps/ugens1.c:198
msgid "linseg not initialised (krate)\n"
@@ -5172,53 +4887,53 @@ msgstr "linseg non initialisé (taux-k)\n"
msgid "linseg: not initialised (arate)\n"
msgstr "linseg : non initialisé (taux-a)\n"
-#: OOps/ugens1.c:463 OOps/ugens1.c:465 OOps/ugens1.c:512 OOps/ugens1.c:514
-#: OOps/ugens1.c:564 OOps/ugens1.c:566 OOps/ugens1.c:610 OOps/ugens1.c:612
-#: OOps/ugens1.c:774 OOps/ugens1.c:776
+#: OOps/ugens1.c:464 OOps/ugens1.c:466 OOps/ugens1.c:513 OOps/ugens1.c:515
+#: OOps/ugens1.c:565 OOps/ugens1.c:567 OOps/ugens1.c:611 OOps/ugens1.c:613
+#: OOps/ugens1.c:775 OOps/ugens1.c:777
#, c-format
msgid "ival%d is zero"
msgstr "ival%d vaut zéro"
-#: OOps/ugens1.c:466 OOps/ugens1.c:515 OOps/ugens1.c:567 OOps/ugens1.c:613
-#: OOps/ugens1.c:777
+#: OOps/ugens1.c:467 OOps/ugens1.c:516 OOps/ugens1.c:568 OOps/ugens1.c:614
+#: OOps/ugens1.c:778
#, c-format
msgid "ival%d sign conflict"
msgstr "ival%d conflit de signe"
-#: OOps/ugens1.c:495 OOps/ugens1.c:544
+#: OOps/ugens1.c:496 OOps/ugens1.c:545
#, c-format
msgid "Breakpoint time %f not valid"
-msgstr ""
+msgstr "Date %f du point charnière non valide"
-#: OOps/ugens1.c:706
+#: OOps/ugens1.c:707
msgid "expseg (krate): not initialised"
msgstr "expseg (taux-k) : non initialisé"
-#: OOps/ugens1.c:732
+#: OOps/ugens1.c:733
msgid "expseg (arate): not initialised"
msgstr "expseg (taux-a) : non initialisé"
-#: OOps/ugens1.c:1013 OOps/ugens1.c:1149 OOps/ugens1.c:1311
+#: OOps/ugens1.c:1014 OOps/ugens1.c:1150 OOps/ugens1.c:1312
msgid "non-positive iatdec"
msgstr "iatdec non positif"
-#: OOps/ugens1.c:1106 OOps/ugens1.c:1273
+#: OOps/ugens1.c:1107 OOps/ugens1.c:1274
msgid "ixmod out of range."
msgstr "ixmod hors limites"
-#: OOps/ugens1.c:1134 OOps/ugens1.c:1301
+#: OOps/ugens1.c:1135 OOps/ugens1.c:1302
msgid "rise func ends with zero"
msgstr "la fonction d'attaque se termine par zéro"
-#: OOps/ugens1.c:1178 OOps/ugens1.c:1257
+#: OOps/ugens1.c:1179 OOps/ugens1.c:1258
msgid "envlpx rise func ends with zero"
msgstr "la fonction d'attaque de envlpx se termine zéro"
-#: OOps/ugens1.c:1199 OOps/ugens1.c:1254
+#: OOps/ugens1.c:1200 OOps/ugens1.c:1255
msgid "envlpx(krate): not initialised"
msgstr "envlpx(taux-k) : non initialisé"
-#: OOps/ugens2.c:48 OOps/ugens2.c:61 Opcodes/shape.c:377
+#: OOps/ugens2.c:48 OOps/ugens2.c:61 Opcodes/shape.c:379
msgid "init phase truncation\n"
msgstr "la phase initiale est tronquée\n"
@@ -5282,8 +4997,8 @@ msgid "oscil(krate): not initialised"
msgstr "oscil(taux-k) : non initialisé"
#: OOps/ugens2.c:1139 OOps/ugens2.c:1167 OOps/ugens2.c:1192 OOps/ugens2.c:1219
-#: Opcodes/pitch.c:1579 Opcodes/pitch.c:1606 Opcodes/pitch.c:1633
-#: Opcodes/pitch.c:1662
+#: Opcodes/pitch.c:1580 Opcodes/pitch.c:1607 Opcodes/pitch.c:1634
+#: Opcodes/pitch.c:1663
msgid "oscil: not initialised"
msgstr "oscil : non initialisé"
@@ -5399,7 +5114,7 @@ msgstr "pluck : kcps supérieur au taux d'échantillonnage"
msgid "Seeding from current time %lu\n"
msgstr "Graine à partir de l'horloge %lu\n"
-#: OOps/ugens5.c:198 OOps/ugens5.c:260 Opcodes/gab/gab.c:45 Opcodes/ugsc.c:188
+#: OOps/ugens5.c:198 OOps/ugens5.c:260 Opcodes/gab/gab.c:47 Opcodes/ugsc.c:186
#, c-format
msgid "illegal reson iscl value, %f"
msgstr "valeur illégale de iscl dans reson, %f"
@@ -5632,8 +5347,8 @@ msgstr "Numéro de table < 1 dft=%.2f s1ft=%.2f s2ft=%.2f"
msgid "Table no. < 1 dft=%.2f sft=%.2f"
msgstr "Numéro de table < 1 dft=%.2f sft=%.2f"
-#: OOps/ugrw1.c:1781 OOps/ugrw1.c:1822 Opcodes/fareyseq.c:455
-#: Opcodes/fareyseq.c:477
+#: OOps/ugrw1.c:1781 OOps/ugrw1.c:1822 Opcodes/fareyseq.c:453
+#: Opcodes/fareyseq.c:475
#, c-format
msgid "Source sft table %.2f not found."
msgstr "La table %.2f de la source sft n'a pas été trouvée"
@@ -5867,19 +5582,19 @@ msgstr "Durée de réverbération non positive\n"
msgid "reverbx: not initialised"
msgstr "reverbx : non initialisé"
-#: Opcodes/ambicode1.c:80
+#: Opcodes/ambicode1.c:82
msgid "The numbers of input and output arguments are not valid."
msgstr "Nombre incorrect d'arguments en entrée et en sortie."
-#: Opcodes/ambicode1.c:163
+#: Opcodes/ambicode1.c:165
msgid "The number of input arguments is not valid."
msgstr "Nombre incorrect d'arguments en entrée"
-#: Opcodes/ambicode1.c:167
+#: Opcodes/ambicode1.c:169
msgid "The isetup value should be between 1 and 5."
msgstr "La valeur de isetup doit être comprise entre 1 et 5."
-#: Opcodes/ambicode1.c:193
+#: Opcodes/ambicode1.c:195
msgid "The output channel count does not match the isetup value."
msgstr "Le nombre de canaux de sortie ne correspond pas à la valeur de isetup."
@@ -5919,17 +5634,17 @@ msgstr "Nombre incorrect de cellules de sortie ! Il en faut 8."
msgid "Not supported setup number!"
msgstr "Valeur de setup non supportée !"
-#: Opcodes/babo.c:740
+#: Opcodes/babo.c:742
#, c-format
msgid "Babo: resonator dimensions are incorrect (%.1f, %.1f, %.1f)"
msgstr ""
"Babo : les dimensions du résonateur sont incorrectes (%.1f, %.1f, %.1f)"
-#: Opcodes/bilbar.c:82
+#: Opcodes/bilbar.c:83
msgid "No data to continue"
msgstr "Pas de données pour continuer"
-#: Opcodes/bilbar.c:108
+#: Opcodes/bilbar.c:109
msgid "Ends must be clamped(1), pivoting(2) or free(3)"
msgstr "Se termine mais peut être fixé(1), pivotant(2) ou libre(3)"
@@ -5944,8 +5659,8 @@ msgstr ""
"DLineN : longueur de délai trop grande ... réglée à la longueur maximale de "
"%ld.\n"
-#: Opcodes/bowedbar.c:98 Opcodes/physmod.c:489
-msgid "unknown lowest frequency for bowed string -- assuming 50Hz\n"
+#: Opcodes/bowedbar.c:98
+msgid "unknown lowest frequency for bowed bar -- assuming 50Hz\n"
msgstr ""
"La fréquence la plus basse pour la corde frottée est inconnue -- on suppose "
"qu'elle vaut 50 Hz\n"
@@ -6029,17 +5744,17 @@ msgstr "Réglette %d fixé à %s\n"
msgid "Unknown control %d"
msgstr "Contrôle %d inconnu"
-#: Opcodes/cpumeter.c:73
-#, fuzzy, c-format
+#: Opcodes/cpumeter.c:77
+#, c-format
msgid "Failed to open /proc/stat: %s"
-msgstr "L'ouverture du fichier csd a échoué : %s"
+msgstr "Echec de l'ouverture de /proc/stat : %s"
-#: Opcodes/cpumeter.c:75 Opcodes/cpumeter.c:80 Opcodes/cpumeter.c:107
-#: Opcodes/cpumeter.c:147
+#: Opcodes/cpumeter.c:79 Opcodes/cpumeter.c:84 Opcodes/cpumeter.c:111
+#: Opcodes/cpumeter.c:151
msgid "failed /proc/stat read"
-msgstr ""
+msgstr "La lecture de /proc/stat a échoué"
-#: Opcodes/crossfm.c:33
+#: Opcodes/crossfm.c:34
msgid "crossfm: ftable not found"
msgstr "crossfm : table non trouvée"
@@ -6088,31 +5803,31 @@ msgstr ""
msgid "insufficient arguments for fareytable"
msgstr "arguments insuffisants pour une table de Farey"
-#: Opcodes/fareyseq.c:250 Opcodes/fareyseq.c:300
+#: Opcodes/fareyseq.c:251 Opcodes/fareyseq.c:301
#, c-format
msgid "Farey: Table no. < 1 dft=%.2f sft=%.2f"
msgstr "Farey : No de table < 1 dft=%.2f sft=%.2f"
-#: Opcodes/fareyseq.c:255
+#: Opcodes/fareyseq.c:256
#, c-format
msgid "Farey: Filter type < 1 dft=%.2f sft=%.2f"
msgstr "Farey : Type de filtre < 1 dft=%.2f sft=%.2f"
-#: Opcodes/fareyseq.c:270 Opcodes/fareyseq.c:318
+#: Opcodes/fareyseq.c:271 Opcodes/fareyseq.c:319
#, c-format
msgid "Farey: Destination dft table %.2f not found."
msgstr "Farey : Table dft de destination %.2f introuvable"
-#: Opcodes/fareyseq.c:281 Opcodes/fareyseq.c:329
+#: Opcodes/fareyseq.c:282 Opcodes/fareyseq.c:330
#, c-format
msgid "Farey: Source sft table %.2f not found."
msgstr "Farey : Table sft source %.2f introuvable"
-#: Opcodes/fareyseq.c:305
+#: Opcodes/fareyseq.c:306
msgid "Farey: Filter type < 1"
msgstr "Farey : Type de filtre < 1"
-#: Opcodes/fareyseq.c:447 Opcodes/fareyseq.c:468
+#: Opcodes/fareyseq.c:445 Opcodes/fareyseq.c:466
#, c-format
msgid "Table no. < 1 sft=%.2f"
msgstr "Numéro de table < 1 sft=%.2f"
@@ -6228,48 +5943,48 @@ msgstr "Pas de table pour FM40p"
msgid "follow - zero length!"
msgstr "follow - longueur nulle !"
-#: Opcodes/fout.c:59
+#: Opcodes/fout.c:60
#, c-format
msgid "Closing file '%s'...\n"
msgstr "Fermeture du fichier '%s'...\n"
-#: Opcodes/fout.c:101
+#: Opcodes/fout.c:102
msgid "invalid file handle"
msgstr "descripteur de fichier non valide"
-#: Opcodes/fout.c:108 Opcodes/fout.c:420
+#: Opcodes/fout.c:109 Opcodes/fout.c:421
msgid "invalid file name"
msgstr "nom de fichier non valide"
-#: Opcodes/fout.c:165
+#: Opcodes/fout.c:166
#, c-format
msgid "error opening file '%s'"
msgstr "erreur en ouvrant le fichier '%s'"
-#: Opcodes/fout.c:192
+#: Opcodes/fout.c:193
#, c-format
msgid "error opening sound file '%s'"
msgstr "erreur en ouvrant le fichier son '%s'"
-#: Opcodes/fout.c:429
+#: Opcodes/fout.c:430
#, c-format
msgid "cannot close '%s': not found in list of open files"
msgstr ""
"impossible de fermet '%s' : il n'a pas été trouvé dans la liste des fichiers "
"ouverts"
-#: Opcodes/fout.c:440
+#: Opcodes/fout.c:441
#, c-format
msgid "cannot close file #%d: not a valid handle"
msgstr ""
"impossible de fermer le fichier #%d : ce n'est pas un descripteur valide"
-#: Opcodes/fout.c:447
+#: Opcodes/fout.c:448
#, c-format
msgid "file #%d (%s) is in use, will be closed when released"
msgstr "le fichier #%d (%s) est utilisé, il sera fermé à sa libération"
-#: Opcodes/fout.c:476 Opcodes/fout.c:479 Opcodes/fout.c:550 Opcodes/fout.c:553
+#: Opcodes/fout.c:477 Opcodes/fout.c:480 Opcodes/fout.c:551 Opcodes/fout.c:554
msgid "fouti: invalid file handle"
msgstr "fouti : descripteur de fichier non valide"
@@ -6353,138 +6068,180 @@ msgstr "ftsave : impossible d'ouvrir le fichier"
msgid "ftsave: failed to write file"
msgstr "ftsave : impossible d'ouvrir le fichier"
-#: Opcodes/gab/gab.c:109
+#: Opcodes/gab/gab.c:111
msgid "fastab: incorrect table number"
msgstr "fastab : numéro de table incorrect"
-#: Opcodes/gab/gab.c:132 Opcodes/gab/gab.c:141 Opcodes/gab/gab.c:171
+#: Opcodes/gab/gab.c:134 Opcodes/gab/gab.c:143 Opcodes/gab/gab.c:173
msgid "tabw off end"
msgstr "tabw hors-limite"
-#: Opcodes/gab/gab.c:157 Opcodes/gab/gab.c:225 Opcodes/gab/gab.c:234
+#: Opcodes/gab/gab.c:159 Opcodes/gab/gab.c:227 Opcodes/gab/gab.c:236
msgid "tab off end"
msgstr "tab hors-limite"
-#: Opcodes/gab/gab.c:183
+#: Opcodes/gab/gab.c:185
msgid "tab_i: incorrect table number"
msgstr "tab_i : numéro de table incorrect"
-#: Opcodes/gab/gab.c:190
-msgid "tab_i off end"
-msgstr "tab_i hors-limite"
+#: Opcodes/gab/gab.c:192
+#, c-format
+msgid "tab_i off end: table number: %d\n"
+msgstr "tab_i hors-limite : numéro de table : %d\n"
-#: Opcodes/gab/gab.c:202
+#: Opcodes/gab/gab.c:204
msgid "tabw_i: incorrect table number"
msgstr "tabw_i : numéro de table incorrect"
-#: Opcodes/gab/gab.c:209
+#: Opcodes/gab/gab.c:211
msgid "tabw_i off end"
msgstr "tabw_i hors-limite"
-#: Opcodes/gab/gab.c:247
+#: Opcodes/gab/gab.c:249
msgid "tab_init: incorrect table number"
msgstr "tab_init : numéro de table incorrect"
-#: Opcodes/gab/gab.c:316
+#: Opcodes/gab/gab.c:318
msgid "printi parameter was not a \"quoted string\""
msgstr "printi : le paramètre n'était pas une \"chaîne entre guillemets\""
-#: Opcodes/gab/gab.c:423
+#: Opcodes/gab/gab.c:425
msgid "adsynt2: wavetable not found!"
msgstr "adsynt2 : la table d'onde n'a pas été trouvée !"
-#: Opcodes/gab/gab.c:435
+#: Opcodes/gab/gab.c:437
msgid "adsynt2: freqtable not found!"
msgstr "adsynt2 : la table de fréq n'a pas été trouvée !"
-#: Opcodes/gab/gab.c:440
+#: Opcodes/gab/gab.c:442
msgid "adsynt2: partial count is greater than freqtable size!"
msgstr ""
"adsynt2 : le nombre de partiels est supérieur à la taille de la table de "
"fréq !"
-#: Opcodes/gab/gab.c:449
+#: Opcodes/gab/gab.c:451
msgid "adsynt2: amptable not found!"
msgstr "adsynt2 : la table d'amp n'a pas été trouvée !"
-#: Opcodes/gab/gab.c:454
+#: Opcodes/gab/gab.c:456
msgid "adsynt2: partial count is greater than amptable size!"
msgstr ""
"adsynt2 : le nombre de partiels est supérieur à la taille de la table d'amp !"
-#: Opcodes/gab/gab.c:499
+#: Opcodes/gab/gab.c:501
msgid "adsynt2: not initialised"
msgstr "adsynt2 : non initialisé"
-#: Opcodes/gab/gab.c:741
+#: Opcodes/gab/gab.c:743
msgid "max_k: invalid imaxflag value"
msgstr "max_k : valeur de imaxflag non valide"
-#: Opcodes/gab/hvs.c:68
+#: Opcodes/gab/hvs.c:70
msgid "hvs1: a line segment must be delimited by 2 points at least"
msgstr "hvs1 : un segment de droite doit être délimité par 2 points au moins"
-#: Opcodes/gab/hvs.c:150
+#: Opcodes/gab/hvs.c:152
msgid "hvs2: a square area must be delimited by 2 lines at least"
msgstr "hvs2 : une surface carrée doit être délimitée par 2 droites au moins"
-#: Opcodes/gab/hvs.c:246
+#: Opcodes/gab/hvs.c:248
msgid "hvs3: a square area must be delimited by 2 lines at least"
msgstr "hvs3 : une surface carrée doit être délimitée par 2 droites au moins"
-#: Opcodes/gab/hvs.c:389
+#: Opcodes/gab/hvs.c:390
msgid "vphaseseg: the first function is invalid or missing"
msgstr "vphaseseg : la première fonction est non valide ou manquante"
-#: Opcodes/gab/hvs.c:396
+#: Opcodes/gab/hvs.c:398 Opcodes/gab/vectorial.c:2301
msgid "vphaseseg: invalid num. of elements"
msgstr "vphaseseg : nombre d'éléments non valide"
-#: Opcodes/gab/hvs.c:414
+#: Opcodes/gab/hvs.c:416
msgid "vphaseseg: function invalid or missing"
msgstr "vphaseseg : fonction non valide ou manquante"
-#: Opcodes/gab/newgabopc.c:39 Opcodes/gab/newgabopc.c:54
+#: Opcodes/gab/newgabopc.c:40 Opcodes/gab/newgabopc.c:55
msgid "vtable1: incorrect table number"
msgstr "vtable1 : numéro de table incorrect"
-#: Opcodes/gab/newgabopc.c:359
+#: Opcodes/gab/newgabopc.c:241 Opcodes/gab/newgabopc.c:296
+msgid "copyTabElems: incorrect destination table number"
+msgstr "copyTabElems : numéro de table incorrect"
+
+#: Opcodes/gab/newgabopc.c:246 Opcodes/gab/newgabopc.c:301
+msgid ""
+"copyTabElems: destination table too short or number of elements to copy too "
+"big"
+msgstr ""
+"copyTabElems : table de destination trop courte ou nombre d'éléments à copier "
+"trop grand"
+
+#: Opcodes/gab/newgabopc.c:252 Opcodes/gab/newgabopc.c:306
+msgid "copyTabElems: incorrect source table number"
+msgstr "copyTabElems : numéro de table source incorrect"
+
+#: Opcodes/gab/newgabopc.c:257 Opcodes/gab/newgabopc.c:310
+msgid ""
+"copyTabElems: source table size less than the number of elements to copy"
+msgstr ""
+"copyTabElems : taille de la table source inférieure au nombre d'éléments "
+"Ã copier"
+
+#: Opcodes/gab/newgabopc.c:273 Opcodes/gab/newgabopc.c:318
+msgid "copyTabElems: source table too short"
+msgstr "copyTabElems : table source trop courte"
+
+#: Opcodes/gab/newgabopc.c:276 Opcodes/gab/newgabopc.c:321
+msgid "copyTabElems: destination table too short"
+msgstr "copyTabElems : table de destination trop courte"
+
+#: Opcodes/gab/newgabopc.c:347
+msgid "inrg: audio input is not enabled"
+msgstr "inrg : entrée audio désactivée"
+
+#: Opcodes/gab/newgabopc.c:362
msgid "inrg: channel number cannot be < 1 (1 is the first channel)"
msgstr ""
"inrg : le numéro de canal ne peut pas être < 1 (1 est le premier canal)"
-#: Opcodes/gab/newgabopc.c:400
+#: Opcodes/gab/newgabopc.c:403
msgid "outrg: channel number cannot be < 1 (1 is the first channel)"
msgstr ""
"outrg : le numéro de canal ne peut pas être < 1 (1 est le premier canal)"
-#: Opcodes/gab/newgabopc.c:439 Opcodes/gab/newgabopc.c:671
+#: Opcodes/gab/newgabopc.c:440 Opcodes/gab/newgabopc.c:574
+#: Opcodes/gab/newgabopc.c:672
msgid "invalid function"
msgstr "fonction non valide"
-#: Opcodes/gab/newgabopc.c:442
+#: Opcodes/gab/newgabopc.c:443
msgid "lposc: no sample rate stored in function; assuming=sr\n"
msgstr ""
"lposc : pas de taux d'échantillonnage dans la fonction ; on suppose = sr\n"
-#: Opcodes/gab/newgabopc.c:673
+#: Opcodes/gab/newgabopc.c:577
+msgid "lposcil: no sample rate stored in function assuming=sr\n"
+msgstr ""
+"lposcil : pas de taux d'échantillonnage dans la fonction ; on suppose = sr\n"
+
+#: Opcodes/gab/newgabopc.c:674
msgid "lposcil: no sample rate stored in function; assuming=sr\n"
msgstr ""
"lposcil : pas de taux d'échantillonnage dans la fonction ; on suppose = sr\n"
-#: Opcodes/gab/sliderTable.c:45 Opcodes/gab/sliderTable.c:254
+#: Opcodes/gab/sliderTable.c:47 Opcodes/gab/sliderTable.c:256
#: Opcodes/midiops3.c:44 Opcodes/midiops3.c:146 Opcodes/midiops3.c:259
#: Opcodes/midiops3.c:317 Opcodes/midiops3.c:413
msgid "illegal channel"
msgstr "canal illégal"
-#: Opcodes/gab/sliderTable.c:65 Opcodes/gab/sliderTable.c:277
+#: Opcodes/gab/sliderTable.c:67 Opcodes/gab/sliderTable.c:280
#: Opcodes/midiops3.c:58 Opcodes/midiops3.c:162 Opcodes/midiops3.c:273
#, c-format
msgid "illegal control number at position n.%d"
msgstr "numéro de contrôle illégal à la position n.%d"
-#: Opcodes/gab/sliderTable.c:74
+#: Opcodes/gab/sliderTable.c:76
#, c-format
msgid ""
"sliderXtable: illegal initvalue at position %d. When using table indexing, "
@@ -6494,18 +6251,18 @@ msgstr ""
"l'on utilise une indexation de table, l'intervalle d'initialisation va de 0 "
"Ã 1"
-#: Opcodes/gab/sliderTable.c:84 Opcodes/gab/sliderTable.c:284
-#: Opcodes/gab/sliderTable.c:509 Opcodes/midiops3.c:64 Opcodes/midiops3.c:168
+#: Opcodes/gab/sliderTable.c:86 Opcodes/gab/sliderTable.c:287
+#: Opcodes/gab/sliderTable.c:513 Opcodes/midiops3.c:64 Opcodes/midiops3.c:168
#: Opcodes/midiops3.c:347
#, c-format
msgid "illegal initvalue at position n.%d"
msgstr "valeur d'initialisation illégale à la position n.%d"
-#: Opcodes/gab/sliderTable.c:96 Opcodes/gab/sliderTable.c:296
+#: Opcodes/gab/sliderTable.c:98 Opcodes/gab/sliderTable.c:299
msgid "sliderXtable: zero is illegal in exponential operations"
msgstr "sliderXtable : zéro est illégal dans les opérations exponentielles"
-#: Opcodes/gab/sliderTable.c:312
+#: Opcodes/gab/sliderTable.c:315
#, c-format
msgid ""
"sliderXtable: illegal initvalue at position %d. When using table indexing, "
@@ -6515,408 +6272,505 @@ msgstr ""
"l'on utilise une indexation de table, l'intervalle d'initialisation va de 0 "
"Ã 1"
-#: Opcodes/gab/sliderTable.c:565 Opcodes/midiops2.c:321 Opcodes/midiops2.c:359
+#: Opcodes/gab/sliderTable.c:569 Opcodes/midiops2.c:321 Opcodes/midiops2.c:359
#: Opcodes/midiops2.c:391 Opcodes/midiops2.c:440 Opcodes/midiops2.c:475
#: Opcodes/midiops2.c:517 Opcodes/midiops2.c:532 Opcodes/midiops2.c:551
msgid "illegal midi channel"
msgstr "canal midi illégal"
-#: Opcodes/gab/tabmorph.c:42
+#: Opcodes/gab/tabmorph.c:43
msgid "tabmorph: invalid table number"
msgstr "tabmorph : numéro de table non valide"
-#: Opcodes/gab/tabmorph.c:46
+#: Opcodes/gab/tabmorph.c:47
msgid "tabmorph: all tables must have the same length!"
msgstr "tabmorph : toutes les tables doivent avoir la même longueur !"
-#: Opcodes/gab/vectorial.c:33
+#: Opcodes/gab/vectorial.c:35
msgid "mtablei: incorrect table number"
msgstr "mtablei : numéro de table incorrect"
-#: Opcodes/gab/vectorial.c:63 Opcodes/gab/vectorial.c:83
-#: Opcodes/gab/vectorial.c:133 Opcodes/gab/vectorial.c:200
+#: Opcodes/gab/vectorial.c:65 Opcodes/gab/vectorial.c:85
+#: Opcodes/gab/vectorial.c:135 Opcodes/gab/vectorial.c:202
msgid "mtable: incorrect table number"
msgstr "mtable : numéro de table incorrect"
-#: Opcodes/gab/vectorial.c:185
+#: Opcodes/gab/vectorial.c:187
msgid "mtabi: incorrect table number"
msgstr "mtabi : numéro de table incorrect"
-#: Opcodes/gab/vectorial.c:252
+#: Opcodes/gab/vectorial.c:254
msgid "mtablewi: incorrect table number"
msgstr "mtablewi : numéro de table incorrect"
-#: Opcodes/gab/vectorial.c:268 Opcodes/gab/vectorial.c:288
-#: Opcodes/gab/vectorial.c:317 Opcodes/gab/vectorial.c:362
-#: Opcodes/gab/vectorial.c:406
+#: Opcodes/gab/vectorial.c:270 Opcodes/gab/vectorial.c:290
+#: Opcodes/gab/vectorial.c:319 Opcodes/gab/vectorial.c:364
+#: Opcodes/gab/vectorial.c:408
msgid "mtabw: incorrect table number"
msgstr "mtabw : numéro de table incorrect"
-#: Opcodes/gab/vectorial.c:348
+#: Opcodes/gab/vectorial.c:350
msgid "mtabwi: incorrect table number"
msgstr "mtabwi : numéro de table incorrect"
-#: Opcodes/gab/vectorial.c:380
+#: Opcodes/gab/vectorial.c:382
msgid "mtablew: incorrect table number"
msgstr "mtablew : numéro de table incorrect"
-#: Opcodes/gab/vectorial.c:454 Opcodes/gab/vectorial.c:513
+#: Opcodes/gab/vectorial.c:457 Opcodes/gab/vectorial.c:516
#, c-format
msgid "vadd_i: invalid table number %i"
msgstr "vadd_i : numéro de table %i non valide"
-#: Opcodes/gab/vectorial.c:470
+#: Opcodes/gab/vectorial.c:473
msgid "vadd_i: ifn length exceeded"
msgstr "vadd_i : la longueur de ifn a été dépassée"
-#: Opcodes/gab/vectorial.c:497
+#: Opcodes/gab/vectorial.c:500
msgid "vadd: ifn1 length exceeded"
msgstr "vadd : la longueur de ifn1 a été dépassée"
-#: Opcodes/gab/vectorial.c:529
+#: Opcodes/gab/vectorial.c:532
msgid "vmult_i: ifn length exceeded"
msgstr "vmult_i : la longueur de ifn a été dépassée"
-#: Opcodes/gab/vectorial.c:556
+#: Opcodes/gab/vectorial.c:559
msgid "vmult: ifn1 length exceeded"
msgstr "vmult : la longueur de ifn1 a été dépassée"
-#: Opcodes/gab/vectorial.c:572
+#: Opcodes/gab/vectorial.c:575
#, c-format
msgid "vpow_i: invalid table number %i"
msgstr "vpow_i : numéro de table %i non valide"
-#: Opcodes/gab/vectorial.c:589
+#: Opcodes/gab/vectorial.c:592
msgid "vpow_i: ifn length exceeded"
msgstr "vpow_i : la longueur de ifn a été dépassée"
-#: Opcodes/gab/vectorial.c:617
+#: Opcodes/gab/vectorial.c:620
msgid "vpow: ifn1 length exceeded"
msgstr "vpow : la longueur de ifn1 a été dépassée"
-#: Opcodes/gab/vectorial.c:633
+#: Opcodes/gab/vectorial.c:636
#, c-format
msgid "vexp_i: invalid table number %i"
msgstr "vexp_i : numéro de table %i non valide"
-#: Opcodes/gab/vectorial.c:649
+#: Opcodes/gab/vectorial.c:652
msgid "vexp_i: ifn length exceeded"
msgstr "vexp_i : la longueur de ifn a été dépassée"
-#: Opcodes/gab/vectorial.c:676
+#: Opcodes/gab/vectorial.c:679
msgid "vexp: ifn1 length exceeded"
msgstr "vexp : la longueur de ifn1 a été dépassée"
-#: Opcodes/gab/vectorial.c:694
+#: Opcodes/gab/vectorial.c:697
#, c-format
msgid "vectorsop: ifn1 invalid table number %i"
msgstr "vectorsop : ifn1 numéro de table %i non valide"
-#: Opcodes/gab/vectorial.c:699
+#: Opcodes/gab/vectorial.c:702
#, c-format
msgid "vectorsop: ifn2 invalid table number %i"
msgstr "vectorsop : ifn2 numéro de table %i non valide"
-#: Opcodes/gab/vectorial.c:738
+#: Opcodes/gab/vectorial.c:742
msgid "vcopy: ifn1 length exceeded"
msgstr "vcopy : la longueur de ifn1 a été dépassée"
-#: Opcodes/gab/vectorial.c:756
+#: Opcodes/gab/vectorial.c:760
msgid "vcopy: ifn2 length exceeded"
msgstr "vcopy : la longueur de ifn2 a été dépassée"
-#: Opcodes/gab/vectorial.c:783
+#: Opcodes/gab/vectorial.c:787
#, c-format
msgid "vcopy_i: ifn1 invalid table number %i"
msgstr "vcopy_i : ifn1 numéro de table %i non valide"
-#: Opcodes/gab/vectorial.c:788
+#: Opcodes/gab/vectorial.c:792
#, c-format
msgid "vcopy_i: ifn2 invalid table number %i"
msgstr "vcopy_i : ifn2 numéro de table %i non valide"
-#: Opcodes/gab/vectorial.c:810
+#: Opcodes/gab/vectorial.c:814
msgid "vcopy_i: ifn1 length exceeded"
msgstr "vcopy_i : la longueur de ifn1 a été dépassée"
-#: Opcodes/gab/vectorial.c:827
+#: Opcodes/gab/vectorial.c:831
msgid "vcopy_i: ifn2 length exceeded"
msgstr "vcopy_i : la longueur de ifn2 a été dépassée"
-#: Opcodes/gab/vectorial.c:866
+#: Opcodes/gab/vectorial.c:870
msgid "vaddv: ifn1 length exceeded"
msgstr "vaddv : la longueur de ifn1 a été dépassée"
-#: Opcodes/gab/vectorial.c:885
+#: Opcodes/gab/vectorial.c:889
msgid "vaddv: ifn2 length exceeded"
msgstr "vaddv : la longueur de ifn2 a été dépassée"
-#: Opcodes/gab/vectorial.c:911
+#: Opcodes/gab/vectorial.c:915
#, c-format
msgid "vaddv_i: ifn1 invalid table number %i"
msgstr "vaddv_i : ifn1 numéro de table %i non valide"
-#: Opcodes/gab/vectorial.c:916
+#: Opcodes/gab/vectorial.c:920
#, c-format
msgid "vaddv_i: ifn2 invalid table number %i"
msgstr "vaddv_i : ifn2 numéro de table %i non valide"
-#: Opcodes/gab/vectorial.c:938
+#: Opcodes/gab/vectorial.c:942
msgid "vaddv_i: ifn1 length exceeded"
msgstr "vaddv_i : la longueur de ifn1 a été dépassée"
-#: Opcodes/gab/vectorial.c:956
+#: Opcodes/gab/vectorial.c:960
msgid "vaddv_i: ifn2 length exceeded"
msgstr "vaddv_i : la longueur de ifn2 a été dépassée"
-#: Opcodes/gab/vectorial.c:987
+#: Opcodes/gab/vectorial.c:991
msgid "vsubv: ifn1 length exceeded"
msgstr "vsubv : la longueur de ifn1 a été dépassée"
-#: Opcodes/gab/vectorial.c:1006
+#: Opcodes/gab/vectorial.c:1010
msgid "vsubv: ifn2 length exceeded"
msgstr "vsubv : la longueur de ifn2 a été dépassée"
-#: Opcodes/gab/vectorial.c:1033
+#: Opcodes/gab/vectorial.c:1037
#, c-format
msgid "vsubv_i: ifn1 invalid table number %i"
msgstr "vsubv_i : ifn1 numéro de table %i non valide"
-#: Opcodes/gab/vectorial.c:1038
+#: Opcodes/gab/vectorial.c:1042
#, c-format
msgid "vsubv_i: ifn2 invalid table number %i"
msgstr "vsubv_i : ifn2 numéro de table %i non valide"
-#: Opcodes/gab/vectorial.c:1060
+#: Opcodes/gab/vectorial.c:1064
msgid "vsubv_i: ifn1 length exceeded"
msgstr "vsubv_i : la longueur de ifn1 a été dépassée"
-#: Opcodes/gab/vectorial.c:1078
+#: Opcodes/gab/vectorial.c:1082
msgid "vsubv_i: ifn2 length exceeded"
msgstr "vsubv_i : la longueur de ifn2 a été dépassée"
-#: Opcodes/gab/vectorial.c:1115
+#: Opcodes/gab/vectorial.c:1119
msgid "vmultv: ifn1 length exceeded"
msgstr "vmultv : la longueur de ifn1 a été dépassée"
-#: Opcodes/gab/vectorial.c:1134
+#: Opcodes/gab/vectorial.c:1138
msgid "vmultv: ifn2 length exceeded"
msgstr "vmultv : la longueur de ifn2 a été dépassée"
-#: Opcodes/gab/vectorial.c:1161
+#: Opcodes/gab/vectorial.c:1165
#, c-format
msgid "vmultv_i: ifn1 invalid table number %i"
msgstr "vmultv_i : ifn1 numéro de table %i non valide"
-#: Opcodes/gab/vectorial.c:1166
+#: Opcodes/gab/vectorial.c:1170
#, c-format
msgid "vmultv_i: ifn2 invalid table number %i"
msgstr "vmultv_i : ifn2 numéro de table %i non valide"
-#: Opcodes/gab/vectorial.c:1188
+#: Opcodes/gab/vectorial.c:1192
msgid "vmultv_i: ifn1 length exceeded"
msgstr "vmultv_i : la longueur de ifn1 a été dépassée"
-#: Opcodes/gab/vectorial.c:1205
+#: Opcodes/gab/vectorial.c:1209
msgid "vmultv_i: ifn2 length exceeded"
msgstr "vmultv_i : la longueur de ifn2 a été dépassée"
-#: Opcodes/gab/vectorial.c:1242
+#: Opcodes/gab/vectorial.c:1246
msgid "vdivv: ifn1 length exceeded"
msgstr "vdivv : la longueur de ifn1 a été dépassée"
-#: Opcodes/gab/vectorial.c:1261
+#: Opcodes/gab/vectorial.c:1265
msgid "vdivv: ifn2 length exceeded"
msgstr "vdivv : la longueur de ifn2 a été dépassée"
-#: Opcodes/gab/vectorial.c:1288
+#: Opcodes/gab/vectorial.c:1292
#, c-format
msgid "vdivv_i: ifn1 invalid table number %i"
msgstr "vdivv_i : ifn1 numéro de table %i non valide"
-#: Opcodes/gab/vectorial.c:1293
+#: Opcodes/gab/vectorial.c:1297
#, c-format
msgid "vdivv_i: ifn2 invalid table number %i"
msgstr "vdivv_i : ifn2 numéro de table %i non valide"
-#: Opcodes/gab/vectorial.c:1315
+#: Opcodes/gab/vectorial.c:1319
msgid "vdivv_i: ifn1 length exceeded"
msgstr "vdivv_i : la longueur de ifn1 a été dépassée"
-#: Opcodes/gab/vectorial.c:1333
+#: Opcodes/gab/vectorial.c:1337
msgid "vdivv_i: ifn2 length exceeded"
msgstr "vdivv_i : la longueur de ifn2 a été dépassée"
-#: Opcodes/gab/vectorial.c:1370
+#: Opcodes/gab/vectorial.c:1374
msgid "vpowv: ifn1 length exceeded"
msgstr "vpowv : la longueur de ifn1 a été dépassée"
-#: Opcodes/gab/vectorial.c:1389
+#: Opcodes/gab/vectorial.c:1393
msgid "vpowv: ifn2 length exceeded"
msgstr "vpowv : la longueur de ifn2 a été dépassée"
-#: Opcodes/gab/vectorial.c:1416
+#: Opcodes/gab/vectorial.c:1420
#, c-format
msgid "vpowv_i: ifn1 invalid table number %i"
msgstr "vpowv_i : ifn1 numéro de table %i non valide"
-#: Opcodes/gab/vectorial.c:1421
+#: Opcodes/gab/vectorial.c:1425
#, c-format
msgid "vpowv_i: ifn2 invalid table number %i"
msgstr "vpowv_i : ifn2 numéro de table %i non valide"
-#: Opcodes/gab/vectorial.c:1443
+#: Opcodes/gab/vectorial.c:1447
msgid "vpowv_i: ifn1 length exceeded"
msgstr "vpowv_i : la longueur de ifn1 a été dépassée"
-#: Opcodes/gab/vectorial.c:1460
+#: Opcodes/gab/vectorial.c:1464
msgid "vpowv_i: ifn2 length exceeded"
msgstr "vpowv_i : la longueur de ifn2 a été dépassée"
-#: Opcodes/gab/vectorial.c:1497
+#: Opcodes/gab/vectorial.c:1501
msgid "vexpv: ifn1 length exceeded"
msgstr "vexpv : la longueur de ifn1 a été dépassée"
-#: Opcodes/gab/vectorial.c:1516
+#: Opcodes/gab/vectorial.c:1520
msgid "vexpv: ifn2 length exceeded"
msgstr "vexpv : la longueur de ifn2 a été dépassée"
-#: Opcodes/gab/vectorial.c:1543
+#: Opcodes/gab/vectorial.c:1547
#, c-format
msgid "vexpv_i: ifn1 invalid table number %i"
msgstr "vexpv_i : ifn1 numéro de table %i non valide"
-#: Opcodes/gab/vectorial.c:1548
+#: Opcodes/gab/vectorial.c:1552
#, c-format
msgid "vexpv_i: ifn2 invalid table number %i"
msgstr "vexpv_i : ifn2 numéro de table %i non valide"
-#: Opcodes/gab/vectorial.c:1570
+#: Opcodes/gab/vectorial.c:1574
msgid "vexpv_i: ifn1 length exceeded"
msgstr "vexpv_i : la longueur de ifn1 a été dépassée"
-#: Opcodes/gab/vectorial.c:1588
+#: Opcodes/gab/vectorial.c:1592
msgid "vexpv_i: ifn2 length exceeded"
msgstr "vexpv_i : la longueur de ifn2 a été dépassée"
-#: Opcodes/gab/vectorial.c:1625
+#: Opcodes/gab/vectorial.c:1629
msgid "vmap: Error: ifn1 and ifn2 can not be the same"
msgstr "vmap : Erreur : ifn1 et ifn2 ne peuvent pas être les mêmes"
-#: Opcodes/gab/vectorial.c:1630
-#, c-format
-msgid "vmap: ifn1 invalid table number %i"
-msgstr "vmap : ifn1 numéro de table %i non valide"
+#: Opcodes/gab/vectorial.c:1634
+#, c-format
+msgid "vmap: ifn1 invalid table number %i"
+msgstr "vmap : ifn1 numéro de table %i non valide"
+
+#: Opcodes/gab/vectorial.c:1639
+#, c-format
+msgid "vmap: ifn2 invalid table number %i"
+msgstr "vmap : ifn2 numéro de table %i non valide"
+
+#: Opcodes/gab/vectorial.c:1661
+msgid "vmap: ifn1 length exceeded"
+msgstr "vmap : la longueur de ifn1 a été dépassée"
+
+#: Opcodes/gab/vectorial.c:1678
+msgid "vmap: ifn2 length exceeded"
+msgstr "vmap : la longueur de ifn2 a été dépassée"
+
+#: Opcodes/gab/vectorial.c:1698
+msgid "vectorop: invalid num of elements"
+msgstr "vectorop : nombre d'éléments non valide"
+
+#: Opcodes/gab/vectorial.c:1727
+msgid "vport: invalid table length or num of elements"
+msgstr "vport : longueur de table ou nombre d'éléments non valides"
+
+#: Opcodes/gab/vectorial.c:1730
+msgid "vport: invalid table"
+msgstr "vport : table non valide"
+
+#: Opcodes/gab/vectorial.c:1735
+msgid "vport: invalid init table length or num of elements"
+msgstr "vport : longueur de table init ou nombre d'éléments non valides"
+
+#: Opcodes/gab/vectorial.c:1738
+msgid "vport: invalid init table"
+msgstr "vport : table non valide"
+
+#: Opcodes/gab/vectorial.c:1875
+#, c-format
+msgid "vrandh: Seeding from current time %lu\n"
+msgstr "vrandh : graine à partir de l'horloge %lu\n"
+
+#: Opcodes/gab/vectorial.c:1888
+msgid "vrandh: Invalid table."
+msgstr "vrandh : table non valide."
+
+#: Opcodes/gab/vectorial.c:1891
+msgid "vrandh: idstoffset is greater than table length."
+msgstr "vrandh : idstoffset est supérieur à la longueur de la table."
+
+#: Opcodes/gab/vectorial.c:1896
+msgid "randh: Table length exceeded, last elements discarded."
+msgstr "randh : longeur de la table dépassée, derniers éléments ignoré."
+
+#: Opcodes/gab/vectorial.c:1975
+#, c-format
+msgid "vrandi: Seeding from current time %lu\n"
+msgstr "vrandi : graine à partir de l'horloge %lu\n"
+
+#: Opcodes/gab/vectorial.c:1987
+msgid "vrandi: Invalid table."
+msgstr "vrandi : table non valide."
+
+#: Opcodes/gab/vectorial.c:1990
+msgid "vrandi: idstoffset is greater thantable length."
+msgstr "vrandi : idstoffset est supérieur à la longueur de la table."
+
+#: Opcodes/gab/vectorial.c:1995
+msgid "vrandi: Table length exceeded, last elements discarded."
+msgstr "vrandi : longueur de la table dépassée, derniers éléments ignorés."
+
+#: Opcodes/gab/vectorial.c:2077 Opcodes/gab/vectorial.c:2084
+#: Opcodes/gab/vectorial.c:2091
+msgid "vecdelay: invalid num of elements"
+msgstr "vecdelay : nombre d'éléments non valide"
+
+#: Opcodes/gab/vectorial.c:2079
+msgid "vecdly: invalid output table"
+msgstr "vecdly : table de sortie non valide"
+
+#: Opcodes/gab/vectorial.c:2086
+msgid "vecdly: invalid input table"
+msgstr "vecdly : table d'entrée non valide"
+
+#: Opcodes/gab/vectorial.c:2093
+msgid "vecdly: invalid delay table"
+msgstr "vecdly : table de délai non valide"
+
+#: Opcodes/gab/vectorial.c:2138
+msgid "vecdly: not initialised"
+msgstr "vecdly : non initialisé"
+
+#: Opcodes/gab/vectorial.c:2181
+msgid "vlinseg/vexpseg: invalid num. of elements"
+msgstr "vlinseg/vexpseg : nombre d'éléments non valide"
+
+#: Opcodes/gab/vectorial.c:2223 Opcodes/vpvoc.c:118
+msgid "tableseg: not initialised"
+msgstr "tableseg : non initialisé"
+
+#: Opcodes/gab/vectorial.c:2253 Opcodes/vpvoc.c:146
+msgid "tablexseg: not initialised"
+msgstr "tablexseg : non initialisé"
-#: Opcodes/gab/vectorial.c:1635
-#, c-format
-msgid "vmap: ifn2 invalid table number %i"
-msgstr "vmap : ifn2 numéro de table %i non valide"
+#: Opcodes/gab/vectorial.c:2406
+msgid "vdelayk: not initialised"
+msgstr "vdelayk : non initialisé"
-#: Opcodes/gab/vectorial.c:1657
-msgid "vmap: ifn1 length exceeded"
-msgstr "vmap : la longueur de ifn1 a été dépassée"
+#: Opcodes/gab/vectorial.c:2439 Opcodes/gab/vectorial.c:2445
+msgid "cella: invalid num of elements"
+msgstr "cella : nombre d'éléments non valide"
-#: Opcodes/gab/vectorial.c:1674
-msgid "vmap: ifn2 length exceeded"
-msgstr "vmap : la longueur de ifn2 a été dépassée"
+#: Opcodes/gab/vectorial.c:2441
+msgid "cella: invalid output table"
+msgstr "cella : table de sortie non valide"
-#: Opcodes/gab/vectorial.c:1870
-#, c-format
-msgid "vrandh: Seeding from current time %lu\n"
-msgstr "vrandh : graine à partir de l'horloge %lu\n"
+#: Opcodes/gab/vectorial.c:2448
+msgid "cella: invalid initial state table"
+msgstr "cella : table d'état initial non valide"
-#: Opcodes/gab/vectorial.c:1968
-#, c-format
-msgid "vrandi: Seeding from current time %lu\n"
-msgstr "vrandi : graine à partir de l'horloge %lu\n"
+#: Opcodes/gab/vectorial.c:2452
+msgid "cella: invalid rule table"
+msgstr "cella : table de règle non valide"
-#: Opcodes/grain4.c:57
+#: Opcodes/grain4.c:59
msgid "granule_set: Unable to find function table"
msgstr "granule_set : impossible de trouver la table de fonction"
-#: Opcodes/grain4.c:67
+#: Opcodes/grain4.c:69
msgid "granule_set: Unable to find function table for envelope"
msgstr ""
"granule_set : impossible de trouver la table de fonction pour l'enveloppe"
-#: Opcodes/grain4.c:73
+#: Opcodes/grain4.c:75
msgid "granule_set: Too many voices"
msgstr "granule_set : trop de voix"
-#: Opcodes/grain4.c:76
+#: Opcodes/grain4.c:78
msgid "granule_set: iratio must be greater then 0"
msgstr "granule_set : iratio doit être supérieur à 0"
-#: Opcodes/grain4.c:80
+#: Opcodes/grain4.c:82
msgid "granule_set: imode must be -1, 0 or +1"
msgstr "granule_set : imode doit valoir -1, 0 ou +1"
-#: Opcodes/grain4.c:84
+#: Opcodes/grain4.c:86
msgid "granule_set: Illegal ithd, must be greater than zero"
msgstr "granule_set : ithd illégal, doit être supérieur à zéro"
-#: Opcodes/grain4.c:89
+#: Opcodes/grain4.c:91
msgid "granule_set: ipshift must be integer between 0 and 4"
msgstr "granule_set : ipshift doit être un entier entre 0 et 4"
-#: Opcodes/grain4.c:94
+#: Opcodes/grain4.c:96
msgid "granule_set: Not enough voices for the number of pitches"
msgstr "granule_set : pas assez de voix pour le nombre de hauteurs"
-#: Opcodes/grain4.c:101
+#: Opcodes/grain4.c:103
msgid "granule_set: ipitch1 must be greater then zero"
msgstr "granule_set : ipitch1 doit être supérieur à zéro"
-#: Opcodes/grain4.c:106
+#: Opcodes/grain4.c:108
msgid "granule_set: ipitch2 must be greater then zero"
msgstr "granule_set : ipitch2 doit être supérieur à zéro"
-#: Opcodes/grain4.c:111
+#: Opcodes/grain4.c:113
msgid "granule_set: ipitch3 must be greater then zero"
msgstr "granule_set : ipitch3 doit être supérieur à zéro"
-#: Opcodes/grain4.c:116
+#: Opcodes/grain4.c:118
msgid "granule_set: ipitch4 must be greater then zero"
msgstr "granule_set : ipitch4 doit être supérieur à zéro"
-#: Opcodes/grain4.c:121
+#: Opcodes/grain4.c:123
msgid "granule_set: must be positive and less than function table length"
msgstr ""
"granule_set : doit être positif et inférieur à la longueur de la table de "
"fonction"
-#: Opcodes/grain4.c:125
+#: Opcodes/grain4.c:127
msgid "granule_set: igskip_os must be greater then 0"
msgstr "granule_set : igskip_os doit être supérieur à 0"
-#: Opcodes/grain4.c:134
+#: Opcodes/grain4.c:136
msgid "granule_set: kgap must be greater then 0"
msgstr "granule_set : kgap doit être supérieur à 0"
-#: Opcodes/grain4.c:138
+#: Opcodes/grain4.c:140
#, c-format
msgid "granule_set: igap_os must be 0%% to 100%%"
msgstr "granule_set : igap_os doit être entre 0%% et 100%%"
-#: Opcodes/grain4.c:142
+#: Opcodes/grain4.c:144
msgid "granule_set: kgsize must be greater then 0"
msgstr "granule_set : kgsize doit être supérieur à 0"
-#: Opcodes/grain4.c:146
+#: Opcodes/grain4.c:148
#, c-format
msgid "granule_set: igsize_os must be 0%% to 100%%"
msgstr "granule_set : igsize_os doit être entre 0%% et 100%%"
-#: Opcodes/grain4.c:152
+#: Opcodes/grain4.c:154
msgid "granule_set: Illegal value of iatt and/or idec"
msgstr "granule_set : valeur illégale de iatt et/ou de idec"
-#: Opcodes/grain4.c:236
+#: Opcodes/grain4.c:238
msgid "granule_set: Illegal combination of igskip and ilength"
msgstr "granule_set : combinaison illégale de igskip et de ilength"
-#: Opcodes/grain4.c:243
+#: Opcodes/grain4.c:245
#, c-format
msgid ""
"granule_set: WARNING * ilength may be too short * \n"
@@ -6931,7 +6785,7 @@ msgstr ""
" prendre en considération igsize_os et igskip_os.\n"
"ilength vaut %f sec, kgsize vaut %f sec\n"
-#: Opcodes/grain4.c:418
+#: Opcodes/grain4.c:419
msgid "grain4: not initialised"
msgstr "grain4 : non initialisé"
@@ -6943,19 +6797,19 @@ msgstr "grain : densité de grain non valide"
msgid "grain: not initialised"
msgstr "grain : non initialisé"
-#: Opcodes/harmon.c:224
+#: Opcodes/harmon.c:226
msgid "harm signal has positive lead\n"
msgstr "le signal de l'harmonizer a une conduite positive\n"
-#: Opcodes/harmon.c:231
+#: Opcodes/harmon.c:233
msgid "harm signal has negative lead\n"
msgstr "le signal de l'harmonizer a une conduite négative\n"
-#: Opcodes/harmon.c:361
+#: Opcodes/harmon.c:363
msgid "harmon234: out of range\n"
msgstr "harmon234 : hors limites\n"
-#: Opcodes/hrtferX.c:79
+#: Opcodes/hrtferX.c:81
#, c-format
msgid ""
"Orchestra sampling rate is not compatible with HRTF.\n"
@@ -6964,7 +6818,7 @@ msgstr ""
"Le taux d'évhantillonnage de l'orchestre n'est pas compatible avec HRTF.\n"
"Il devrait valoir %d... fin du traitement."
-#: Opcodes/hrtferX.c:87
+#: Opcodes/hrtferX.c:89
msgid ""
"\n"
"Last argument must be the string 'HRTFcompact' ...correcting.\n"
@@ -6972,34 +6826,33 @@ msgstr ""
"\n"
"Le dernier argument doit être la chaîne 'HRTFcompact' ... correction.\n"
-#: Opcodes/hrtferX.c:489
+#: Opcodes/hrtferX.c:494
msgid "hrtfer: not initialised"
msgstr "hrtfer : non initialisé"
-#: Opcodes/hrtfopcodes.c:232
+#: Opcodes/hrtfopcodes.c:260 Opcodes/hrtfopcodes.c:1434
+#: Opcodes/hrtfearly.c:300 Opcodes/hrtfreverb.c:257
#, c-format
msgid ""
"\n"
-"Orchestra sampling rate is not compatible with HRTF data files\n"
-"Should be %.0f, see Csound help for object\n"
+"\n"
+"WARNING!!:\n"
+"Orchestra SR not compatible with HRTF processing SR of: %.0f\n"
"\n"
msgstr ""
"\n"
-"Le taux d'évhantillonnage de l'orchestre n'est pas compatible avec les "
-"fichiers de données HRTF.\n"
-"Il devrait valoir %.0f, voir l'aide de Csound à ce sujet\n"
+"\n"
+"AVERTISSEMENT !! :\n"
+"SR de l'orchestre incompatible avec le SR du traitement HRTF de : %.0f\n"
"\n"
-#: Opcodes/hrtfopcodes.c:251 Opcodes/hrtfopcodes.c:275
-#: Opcodes/hrtfopcodes.c:298 Opcodes/hrtfopcodes.c:1257
-#: Opcodes/hrtfopcodes.c:1280 Opcodes/hrtfopcodes.c:1303
-#: Opcodes/hrtfopcodes.c:1854 Opcodes/hrtfopcodes.c:1876
-#: Opcodes/hrtfopcodes.c:1898
+#: Opcodes/hrtfopcodes.c:287 Opcodes/hrtfopcodes.c:1461
+#: Opcodes/hrtfopcodes.c:2071 Opcodes/hrtfearly.c:327 Opcodes/hrtfreverb.c:300
msgid ""
"\n"
"\n"
"\n"
-"cannot load left data file, exiting\n"
+"Cannot load left data file, exiting\n"
"\n"
msgstr ""
"\n"
@@ -7008,16 +6861,13 @@ msgstr ""
"impossible de charger le fichier des données de gauche, abandon\n"
"\n"
-#: Opcodes/hrtfopcodes.c:259 Opcodes/hrtfopcodes.c:283
-#: Opcodes/hrtfopcodes.c:306 Opcodes/hrtfopcodes.c:1265
-#: Opcodes/hrtfopcodes.c:1288 Opcodes/hrtfopcodes.c:1311
-#: Opcodes/hrtfopcodes.c:1862 Opcodes/hrtfopcodes.c:1884
-#: Opcodes/hrtfopcodes.c:1906
+#: Opcodes/hrtfopcodes.c:294 Opcodes/hrtfopcodes.c:1468
+#: Opcodes/hrtfopcodes.c:2078 Opcodes/hrtfearly.c:334 Opcodes/hrtfreverb.c:306
msgid ""
"\n"
"\n"
"\n"
-"cannot load right data file, exiting\n"
+"Cannot load right data file, exiting\n"
"\n"
msgstr ""
"\n"
@@ -7026,41 +6876,40 @@ msgstr ""
"impossible de charger le fichier des données de droite, abandon\n"
"\n"
-#: Opcodes/hrtfopcodes.c:313 Opcodes/hrtfopcodes.c:1912
+#: Opcodes/hrtfopcodes.c:690 Opcodes/hrtfearly.c:1241
msgid ""
"\n"
-"\n"
-"\n"
-" Sampling rate not supported, exiting\n"
+"WARNING: fades are overlapping: this could lead to noise: reduce fade size "
+"or change trajectory\n"
"\n"
msgstr ""
"\n"
-"\n"
-"\n"
-" Taux d'échantillonnage non supporté, abandon\n"
+"AVERTISSEMENT : les fondus se chevauchent : ceci peut provoquer du bruit : "
+"réduisez la taille des fondus ou changez la trajectoire\n"
"\n"
-#: Opcodes/hrtfopcodes.c:600
+#: Opcodes/hrtfopcodes.c:2052
+#, c-format
msgid ""
-"fades are overlapping: this could lead to noise: reduce fade size or change "
-"trajectory\n"
+"\n"
+"\n"
+"WARNING!!:\n"
+"Orchestra SR not compatiblewith HRTF processing SR of: %.0f\n"
"\n"
msgstr ""
-"les fondus se chevauchent : ceci peut provoquer du bruit : réduisez la "
-"taille des fondus ou changez la trajectoire\n"
+"\n"
+"\n"
+"AVERTISSEMENT !! :\n"
+"SR de l'orchestre incompatible avec le SR du traitement HRTF de : %.0f\n"
"\n"
-#: Opcodes/hrtfopcodes.c:1239 Opcodes/hrtfopcodes.c:1837
-#, c-format
+#: Opcodes/hrtfreverb.c:832
msgid ""
-"Orchestra sampling rate is not compatible with HRTF data files\n"
-"Should be %.0f, see Csound help for object\n"
"\n"
+"warning, approaching instability, fixed with a flat late reverb!"
msgstr ""
-"Le taux d'échantillonnage de l'orchestre n'est pas compatible avec les "
-"fichiers de données HRTF.\n"
-"Il devrait valoir %.0f, voir l'aide de Csound à ce sujet\n"
"\n"
+"avertissement, proche de l'instabilité, résolu avec une réverbération tardive plate !"
#: Opcodes/ifd.c:74
msgid "pvsifd: fftsize should be an integral multiple of hopsize"
@@ -7085,10 +6934,9 @@ msgid "imageload: file %s is not in PNG format.\n"
msgstr "imageload : le fichier %s n'est pas au format PNG.\n"
#: Opcodes/imageOpcodes.c:119 Opcodes/imageOpcodes.c:126
-#: Opcodes/imageOpcodes.c:134 Opcodes/imageOpcodes.c:165
-#: Opcodes/imageOpcodes.c:174 Opcodes/imageOpcodes.c:188
-#: Opcodes/imageOpcodes.c:291 Opcodes/imageOpcodes.c:298
-#: Opcodes/imageOpcodes.c:311
+#: Opcodes/imageOpcodes.c:165 Opcodes/imageOpcodes.c:174
+#: Opcodes/imageOpcodes.c:188 Opcodes/imageOpcodes.c:291
+#: Opcodes/imageOpcodes.c:298 Opcodes/imageOpcodes.c:311
msgid "imageload: out of memory.\n"
msgstr "imageload : dépassement mémoire.\n"
@@ -7110,62 +6958,62 @@ msgstr ""
"Impossible de créer le client Jack \"%s\" -- le serveur Jack \"%s\" est-il "
"actif ? Etat : %d\n"
-#: Opcodes/jacko.cpp:543
+#: Opcodes/jacko.cpp:545
#, c-format
msgid "Created Jack client \"%s\" for Jack server \"%s\".\n"
msgstr "Client Jack \"%s\" créé pour le serveur Jack \"%s\".\n"
-#: Opcodes/jacko.cpp:548
+#: Opcodes/jacko.cpp:551
#, c-format
msgid "Jack buffer size %d != Csound ksmps %d, exiting...\n"
msgstr "Taille du tampon Jack %d != Csound ksmps %d, sortie...\n"
-#: Opcodes/jacko.cpp:556
+#: Opcodes/jacko.cpp:559
#, c-format
msgid "Jack sampling rate %d != Csound sr %d, exiting...\n"
msgstr "Taux d'échantillonnage de Jack %d != Csound sr %d, sortie...\n"
-#: Opcodes/jacko.cpp:567
+#: Opcodes/jacko.cpp:570
#, c-format
msgid "Activated Jack client \"%s\".\n"
msgstr "Client Jack activé \"%s\".\n"
-#: Opcodes/jacko.cpp:571
+#: Opcodes/jacko.cpp:574
#, c-format
msgid "Failed to activate Jack client \"%s\": status %d.\n"
msgstr "L'activation du client Jack \"%s\" a échoué : état %d.\n"
-#: Opcodes/jacko.cpp:586
+#: Opcodes/jacko.cpp:589
msgid "BEGAN JackoState::close()...\n"
msgstr "DEBUT de JackoState::close()...\n"
-#: Opcodes/jacko.cpp:622
+#: Opcodes/jacko.cpp:629
msgid "ENDED JackoState::close().\n"
msgstr "FIN de JackoState::close().\n"
-#: Opcodes/jacko.cpp:876
+#: Opcodes/jacko.cpp:892
#, c-format
msgid "Failed to set Jack freewheeling mode to \"%s\": error %d.\n"
msgstr "La mise de Jack en mode roue libre \"%s\" a échoué : erreur %d.\n"
-#: Opcodes/jacko.cpp:878
+#: Opcodes/jacko.cpp:895
#, c-format
msgid "Set Jack freewheeling mode to \"%s\".\n"
msgstr "Jack mis en mode roue libre \"%s\".\n"
-#: Opcodes/jacko.cpp:893
+#: Opcodes/jacko.cpp:911
#, c-format
msgid "Turned Jack connections \"%s\".\n"
msgstr "Connexions Jack \"%s\".\n"
-#: Opcodes/jacko.cpp:934 Opcodes/jacko.cpp:1034 Opcodes/jacko.cpp:1134
-#: Opcodes/jacko.cpp:1200
+#: Opcodes/jacko.cpp:955 Opcodes/jacko.cpp:1062 Opcodes/jacko.cpp:1169
+#: Opcodes/jacko.cpp:1241
#, c-format
msgid "Could not create Jack port \"%s\".\n"
msgstr "Impossible de créer le port de Jack \"%s\".\n"
-#: Opcodes/jacko.cpp:946 Opcodes/jacko.cpp:1046 Opcodes/jacko.cpp:1146
-#: Opcodes/jacko.cpp:1212
+#: Opcodes/jacko.cpp:969 Opcodes/jacko.cpp:1077 Opcodes/jacko.cpp:1184
+#: Opcodes/jacko.cpp:1255
#, c-format
msgid "Could not create Jack connection from \"%s\" to \"%s\": status %d.\n"
msgstr "Impossible de créer la connexion Jack de \"%s\" à \"%s\" : état %d.\n"
@@ -7205,29 +7053,29 @@ msgstr "Le nombre de sorties doit être le même que celui du locsig précédent
msgid "lorisread cannot load %s"
msgstr "lorisread ne peut pas charger %s"
-#: Opcodes/loscilx.c:74 Opcodes/loscilx.c:178
+#: Opcodes/loscilx.c:76 Opcodes/loscilx.c:180
#, c-format
msgid "could not load '%s'"
msgstr "impossible de charger '%s'"
-#: Opcodes/loscilx.c:88 Opcodes/loscilx.c:258
+#: Opcodes/loscilx.c:90 Opcodes/loscilx.c:260
#, c-format
msgid "invalid loop mode: %d"
msgstr "mode de boucle non valide : %d"
-#: Opcodes/loscilx.c:170
+#: Opcodes/loscilx.c:172
msgid "loscilx: invalid number of output arguments"
msgstr "loscilx : nombre d'arguments de sortie non valide"
-#: Opcodes/loscilx.c:190 Opcodes/loscilx.c:219 Opcodes/pvlock.c:94
-#: Opcodes/pvlock.c:296 Opcodes/pvsbasic.c:460
+#: Opcodes/loscilx.c:192 Opcodes/loscilx.c:221 Opcodes/pvlock.c:118
+#: Opcodes/pvlock.c:320 Opcodes/pvsbasic.c:460
msgid ""
"number of output arguments inconsistent with number of sound file channels"
msgstr ""
"nombre d'arguments de sortie en contradiction avec le nombre de canaux du "
"fichier son"
-#: Opcodes/loscilx.c:665
+#: Opcodes/loscilx.c:667
msgid "loscilx: not initialised"
msgstr "loscilx : non initialisé"
@@ -7235,11 +7083,11 @@ msgstr "loscilx : non initialisé"
msgid "illegal order num. (min 1, max 10)"
msgstr "numéro d'ordre illégal (min 1, max 10)"
-#: Opcodes/mandolin.c:80
+#: Opcodes/mandolin.c:81
msgid "No table for Mandolin"
msgstr "Aucune table pour la mandoline"
-#: Opcodes/mandolin.c:90
+#: Opcodes/mandolin.c:91
msgid "No base frequency for mandolin"
msgstr "Pas de fréquence de base pour la mandoline"
@@ -7270,40 +7118,40 @@ msgstr "msb du numéro de contrôleur illégal à la position n.%d"
msgid "illegal lsb control number at position n.%d"
msgstr "lsb du numéro de contrôleur illégal à la position n.%d"
-#: Opcodes/modal4.c:45
+#: Opcodes/modal4.c:46
msgid "No table for Modal4 case"
msgstr "Pas de table pour le cas de Modal4 "
-#: Opcodes/modal4.c:245
+#: Opcodes/modal4.c:246
msgid "No table for Marimba strike"
msgstr "Pas de table pour l'excitation du Marimba"
-#: Opcodes/modal4.c:284
+#: Opcodes/modal4.c:285
msgid "striking three times here!!!\n"
msgstr "trois frappes ici !!!\n"
-#: Opcodes/modal4.c:289
+#: Opcodes/modal4.c:290
msgid "striking twice here!!\n"
msgstr "deux frappes ici !!\n"
-#: Opcodes/modal4.c:359
+#: Opcodes/modal4.c:360
msgid "No table for Vibraphone strike"
msgstr "Pas de table pour l'excitation du Vibraphone"
-#: Opcodes/modal4.c:440
+#: Opcodes/modal4.c:441
msgid "No table for Agogobell strike"
msgstr "Pas de table pour l'excitation d'Agogobell"
#: Opcodes/modmatrix.c:22
msgid "modmatrix: "
-msgstr ""
+msgstr "modmatrix : "
-#: Opcodes/mp3in.c:92 Opcodes/mp3in.c:230
+#: Opcodes/mp3in.c:93 Opcodes/mp3in.c:231
#, c-format
msgid "mp3in: %s: failed to open file"
msgstr "mp3in : %s : l'ouverture du fichier a échoué"
-#: Opcodes/mp3in.c:139
+#: Opcodes/mp3in.c:140
#, c-format
msgid "mp3in: file sample rate (%d) != orchestra sr (%d)\n"
msgstr ""
@@ -7546,9 +7394,9 @@ msgid "Time stamp is two values"
msgstr "Le timestamp comprend deux valeurs"
#: Opcodes/OSC.c:240
-#, fuzzy, c-format
+#, c-format
msgid "ftable %.2f does not exist"
-msgstr "la ftable n'existe pas"
+msgstr "la ftable %.2f n'existe pas"
#: Opcodes/OSC.c:249
#, c-format
@@ -7600,7 +7448,7 @@ msgstr "impossible d'ouvrir p5glove\n"
msgid "No open glove"
msgstr "Pas de gant ouvert"
-#: Opcodes/pan2.c:43
+#: Opcodes/pan2.c:45
msgid "Unknown panning type"
msgstr "Type de panoramique inconnu"
@@ -7616,154 +7464,160 @@ msgstr "partikkelsync : l'id de l'opcode doit être un entier non nul"
msgid "partikkelsync: could not find opcode id"
msgstr "partikkelsync : impossible de trouver l'id de l'opcode"
-#: Opcodes/physmod.c:121
+#: Opcodes/physmod.c:122
msgid "No table for Clarinet"
msgstr "Aucune table pour la clarinette"
-#: Opcodes/physmod.c:129
+#: Opcodes/physmod.c:130
msgid "No base frequency for clarinet -- assuming 50Hz\n"
msgstr ""
"Pas de fréquence de base pour la clarinette -- on suppose qu'elle vaut 50 "
"Hz\n"
-#: Opcodes/physmod.c:283
+#: Opcodes/physmod.c:284
msgid "No table for Flute"
msgstr "Aucune table pour la flûte"
-#: Opcodes/physmod.c:291
+#: Opcodes/physmod.c:292
msgid "No base frequency for flute -- assumed to be 50Hz\n"
msgstr ""
"Pas de fréquence de base pour la flûte -- on suppose qu'elle vaut 50 Hz\n"
-#: Opcodes/physmod.c:481
+#: Opcodes/physmod.c:482
msgid "No table for wgbow vibrato"
msgstr "Pas de table pour le vibrato de wgbow"
-#: Opcodes/physmod.c:689
+#: Opcodes/physmod.c:490
+msgid "unknown lowest frequency for bowed string -- assuming 50Hz\n"
+msgstr ""
+"La fréquence la plus basse pour la corde frottée est inconnue -- on suppose "
+"qu'elle vaut 50 Hz\n"
+
+#: Opcodes/physmod.c:690
msgid "DlineA not initialised"
msgstr "DlineA non initialisé"
-#: Opcodes/physmod.c:756
+#: Opcodes/physmod.c:757
msgid "No table for Brass"
msgstr "Pas de table pour Brass"
-#: Opcodes/physmod.c:765
+#: Opcodes/physmod.c:766
msgid "No base frequency for brass -- assumed to be 50Hz\n"
msgstr "Pas de fréquence de base pour brass -- on suppose qu'elle vaut 50 Hz\n"
-#: Opcodes/physutil.c:137 Opcodes/physutil.c:312 Opcodes/physutil.c:324
-#: Opcodes/physutil.c:345
+#: Opcodes/physutil.c:138 Opcodes/physutil.c:313 Opcodes/physutil.c:325
+#: Opcodes/physutil.c:346
msgid "negative rates not allowed!!, correcting\n"
msgstr "les vitesses négatives sont interdites !!, correction\n"
-#: Opcodes/physutil.c:186
+#: Opcodes/physutil.c:187
#, c-format
msgid "Envelope: value=%f target=%f rate=%f state=%d\n"
msgstr "Enveloppe : valeur=%f cible=%f vitesse=%f état=%d\n"
-#: Opcodes/physutil.c:335
+#: Opcodes/physutil.c:336
msgid "Sustain level out of range!!, correcting\n"
msgstr "Niveau d'entretien hors limites !!, correction\n"
-#: Opcodes/physutil.c:356 Opcodes/physutil.c:366 Opcodes/physutil.c:376
+#: Opcodes/physutil.c:357 Opcodes/physutil.c:367 Opcodes/physutil.c:377
msgid "negative times not allowed!!, correcting\n"
msgstr "les valeurs de temps négatives sont interdites !!, correction\n"
-#: Opcodes/pitch0.c:37
+#: Opcodes/pitch0.c:38
#, c-format
msgid "Muting new instances of instr %d\n"
msgstr "Muting des nouvelles instances de l'instr %d\n"
-#: Opcodes/pitch0.c:40
+#: Opcodes/pitch0.c:41
#, c-format
msgid "Allowing instrument %d to start\n"
msgstr "L'instrument %d est autorisé à démarrer\n"
-#: Opcodes/pitch.c:84 Opcodes/spectra.c:78
+#: Opcodes/pitch.c:85 Opcodes/spectra.c:80
msgid "illegal iocts"
msgstr "iocts illégal"
-#: Opcodes/pitch.c:86 Opcodes/spectra.c:80
+#: Opcodes/pitch.c:87 Opcodes/spectra.c:82
msgid "illegal ifrqs"
msgstr "ifrqs illégal"
-#: Opcodes/pitch.c:180 Opcodes/spectra.c:584
+#: Opcodes/pitch.c:181 Opcodes/spectra.c:586
msgid "illegal no of partials"
msgstr "nombre de partiels illégal"
-#: Opcodes/pitch.c:205
+#: Opcodes/pitch.c:206
msgid "per octave rolloff too steep"
msgstr "pente par octave trop raide"
-#: Opcodes/pitch.c:219 Opcodes/spectra.c:625
+#: Opcodes/pitch.c:220 Opcodes/spectra.c:627
msgid "illegal lo-hi values"
msgstr "valeurs lo-hi illégales"
-#: Opcodes/pitch.c:454
+#: Opcodes/pitch.c:455
msgid "pitch: not initialised"
msgstr "pitch : non initialisé"
-#: Opcodes/pitch.c:463
+#: Opcodes/pitch.c:464
msgid "Must have even number of arguments in mac\n"
msgstr "Il doit y avoir un nombre pair d'arguments dans mac\n"
-#: Opcodes/pitch.c:552
+#: Opcodes/pitch.c:553
msgid "clockread: clock still running, call clockoff first"
msgstr "clockread : l'horloge est toujours active, appeler clockoff d'abord"
-#: Opcodes/pitch.c:578
+#: Opcodes/pitch.c:579
msgid "adsynt: wavetable not found!"
msgstr "adsynt : table d'onde non trouvée !"
-#: Opcodes/pitch.c:591
+#: Opcodes/pitch.c:592
msgid "adsynt: freqtable not found!"
msgstr "adsynt : table de fréq non trouvée !"
-#: Opcodes/pitch.c:596
+#: Opcodes/pitch.c:597
msgid "adsynt: partial count is greater than freqtable size!"
msgstr ""
"adsynt : le nombre de partiels est supérieur à la taille de la table de "
"fréq !"
-#: Opcodes/pitch.c:604
+#: Opcodes/pitch.c:605
msgid "adsynt: amptable not found!"
msgstr "adsynt : table d'amp non trouvée !"
-#: Opcodes/pitch.c:609
+#: Opcodes/pitch.c:610
msgid "adsynt: partial count is greater than amptable size!"
msgstr ""
"adsynt : le nombre de partiels est supérieur à la taille de la table d'amp !"
-#: Opcodes/pitch.c:640
+#: Opcodes/pitch.c:641
msgid "adsynt: not initialised"
msgstr "adsynt : non initialisé"
-#: Opcodes/pitch.c:716
+#: Opcodes/pitch.c:717
msgid "hsboscil: not initialised"
msgstr "hsboscil : non initialisé"
-#: Opcodes/pitch.c:799
+#: Opcodes/pitch.c:800
msgid "pitchamdf: maxcps must be > mincps !"
msgstr "pitchamdf : maxcps doit être > mincps !"
-#: Opcodes/pitch.c:945
+#: Opcodes/pitch.c:946
msgid "pitchamdf: not initialised"
msgstr "pitchamdf : non initialisé"
-#: Opcodes/pitch.c:1125 Opcodes/pitch.c:1152
+#: Opcodes/pitch.c:1126 Opcodes/pitch.c:1153
msgid "phasorbnk: not initialised"
msgstr "phasorbnk : non initialisé"
-#: Opcodes/pitch.c:1214
+#: Opcodes/pitch.c:1215
msgid "pinkish: Invalid method code"
msgstr "pinkish : code de méthode non valide"
-#: Opcodes/pitch.c:1225
+#: Opcodes/pitch.c:1226
msgid "pinkish: Filter method requires a-rate (noise) input"
msgstr ""
"pinkish : la méthode de filtrage nécessite une entrée (bruit) de taux-a"
-#: Opcodes/pitch.c:1348
+#: Opcodes/pitch.c:1349
#, c-format
msgid ""
"pinkish: Gardner method requires 4-%d bands. Default %ld substituted for "
@@ -7772,46 +7626,45 @@ msgstr ""
"pinkish : la méthode de Gardner nécessitre 4-%d bandes. La valeur par défaut "
"%ld a été substituée à %d.\n"
-#: Opcodes/pitch.c:1731
+#: Opcodes/pitch.c:1733
msgid "Incorrect argument count in transeg"
msgstr "Nombre d'arguments incorrect dans transeg"
-#: Opcodes/pitch.c:1782
-#, fuzzy
+#: Opcodes/pitch.c:1784
msgid "Incorrect argument count in transegb"
-msgstr "Nombre d'arguments incorrect dans transeg"
+msgstr "Nombre d'arguments incorrect dans transegb"
-#: Opcodes/pitch.c:1832 Opcodes/pitch.c:1971
+#: Opcodes/pitch.c:1834 Opcodes/pitch.c:1977
msgid "Error: transeg not initialised (krate)\n"
msgstr "Erreur : transeg non initialisé (taux-k)\n"
-#: Opcodes/pitch.c:1867 Opcodes/pitch.c:2013
+#: Opcodes/pitch.c:1869 Opcodes/pitch.c:2027
msgid "transeg: not initialised (arate)\n"
msgstr "transeg : non initialisé (taux-a)\n"
-#: Opcodes/pitch.c:1921
+#: Opcodes/pitch.c:1924
msgid "Incorrect argument count in transegr"
msgstr "Nombre d'arguments incorrect dans transegr"
-#: Opcodes/pitch.c:2269
+#: Opcodes/pitch.c:2294
msgid "median: not initialised (arate)\n"
msgstr "median : non initialisé (taux-a)\n"
-#: Opcodes/pitch.c:2273 Opcodes/pitch.c:2321
+#: Opcodes/pitch.c:2298 Opcodes/pitch.c:2345
#, c-format
msgid "median: window (%d)larger than maximum(%d); truncated"
msgstr "median : fenêtre (%d) plus grande que le maximum (%d) ; tronquée"
-#: Opcodes/pitch.c:2317
+#: Opcodes/pitch.c:2341
msgid "median: not initialised (krate)\n"
msgstr "median non initialisé (taux-k)\n"
-#: Opcodes/pitchtrack.c:369
+#: Opcodes/pitchtrack.c:370
#, c-format
msgid "ptrack: FFT size out of range; using %d\n"
msgstr "ptrack : taille de TFR hors limites ; on utilise %d\n"
-#: Opcodes/pitchtrack.c:382
+#: Opcodes/pitchtrack.c:383
#, c-format
msgid "ptrack: FFT size not a power of 2; using %d\n"
msgstr ""
@@ -7830,7 +7683,7 @@ msgstr "Mémoire tampon non allouée !"
msgid "Error: %s, %s"
msgstr "Erreur : %s, %s"
-#: Opcodes/ppp.c:20 Opcodes/pvlock.c:454 Opcodes/pvsband.c:46
+#: Opcodes/ppp.c:20 Opcodes/pvlock.c:478 Opcodes/pvsband.c:46
#: Opcodes/pvsbasic.c:575 Opcodes/pvsbasic.c:880 Opcodes/pvsbasic.c:1080
#: Opcodes/pvsbasic.c:1180 Opcodes/pvsbasic.c:1395 Opcodes/pvsbasic.c:1593
#: Opcodes/pvsbasic.c:1756 Opcodes/pvslock.c:20
@@ -7849,62 +7702,62 @@ msgstr "psynth : la première entrée n'est pas au format TRACKS\n"
msgid "psynth: function table not found\n"
msgstr "psynth : table de fonction non trouvée\n"
-#: Opcodes/psynth.c:569 Opcodes/psynth.c:662
+#: Opcodes/psynth.c:567 Opcodes/psynth.c:660
msgid "Input not in TRACKS format\n"
msgstr "L'entrée n'est pas au format TRACKS\n"
-#: Opcodes/psynth.c:767
+#: Opcodes/psynth.c:765
msgid "trsplit: input not in TRACKS format\n"
msgstr "trsplit : l'entrée n'est pas au format TRACKS\n"
-#: Opcodes/psynth.c:863 Opcodes/psynth.c:1027
+#: Opcodes/psynth.c:861 Opcodes/psynth.c:1023
msgid "trmix: first input not in TRACKS format\n"
msgstr "trmix : la première entrée n'est pas au format TRACKS\n"
-#: Opcodes/psynth.c:868 Opcodes/psynth.c:1032
+#: Opcodes/psynth.c:866 Opcodes/psynth.c:1028
msgid "trmix: second input not in TRACKS format\n"
msgstr "trmix : la seconde entrée n'est pas au format TRACKS\n"
-#: Opcodes/psynth.c:943
+#: Opcodes/psynth.c:939
msgid "trfil: input not in TRACKS format\n"
msgstr "trfil : l'entrée n'est pas au format TRACKS\n"
-#: Opcodes/psynth.c:948
+#: Opcodes/psynth.c:944
msgid "trfil: could not find function table\n"
msgstr "trfil : impossible de trouver la table de fonction\n"
-#: Opcodes/psynth.c:1135
+#: Opcodes/psynth.c:1131
msgid "binit: first input not in TRACKS format\n"
msgstr "binit : la première entrée n'est pas au format TRACKS\n"
-#: Opcodes/pvadd.c:153
+#: Opcodes/pvadd.c:150
msgid "PVADD ktimpnt truncated to last frame"
msgstr "PVADD ktimpnt a été tronqué à la dernière trame"
-#: Opcodes/pvadd.c:191
+#: Opcodes/pvadd.c:188
msgid "pvadd: not initialised"
msgstr "pvadd : non initialisé"
-#: Opcodes/pvadd.c:193
+#: Opcodes/pvadd.c:190
msgid "PVADD timpnt < 0"
msgstr "PVADD timpnt < 0"
-#: Opcodes/pvadd.c:201
+#: Opcodes/pvadd.c:198
#, c-format
msgid "PVADD cannot load %s"
msgstr "PVADD ne peut pas charger %s"
-#: Opcodes/pvadd.c:205 Opcodes/ugens8.c:223
+#: Opcodes/pvadd.c:202 Opcodes/ugens8.c:223
#, c-format
msgid "pvoc-ex file %s: FFT size %d too large for Csound"
msgstr "pvoc-ex fichier %s : la taille de TFR %d est trop grande pour Csound"
-#: Opcodes/pvadd.c:210
+#: Opcodes/pvadd.c:207
#, c-format
msgid "PV frame %ld seems too small in %s"
msgstr "La trame PV %ld semble trop petite dans %s"
-#: Opcodes/pvadd.c:215 Opcodes/pvread.c:115 Opcodes/ugens8.c:229
+#: Opcodes/pvadd.c:212 Opcodes/pvread.c:115 Opcodes/ugens8.c:229
#, c-format
msgid "pvoc-ex file %s is not mono"
msgstr "pvoc-ex : le fichier %s n'est pas mono"
@@ -7914,101 +7767,101 @@ msgstr "pvoc-ex : le fichier %s n'est pas mono"
msgid "PVBUFREAD cannot load %s"
msgstr "PVBUFREAD ne peut pas charger %s"
-#: Opcodes/pvinterp.c:76 Opcodes/vpvoc.c:206
+#: Opcodes/pvinterp.c:76 Opcodes/vpvoc.c:207
#, c-format
msgid "PVOC frame %ld bigger than %ld in %s"
msgstr "La trame PVOC %ld est plus grande que %ld dans %s"
-#: Opcodes/pvinterp.c:81 Opcodes/vpvoc.c:211
+#: Opcodes/pvinterp.c:81 Opcodes/vpvoc.c:212
#, c-format
msgid "PVOC frame %ld seems too small in %s"
msgstr "La trame PVOC %ld semble trop petite dans %s"
-#: Opcodes/pvinterp.c:85 Opcodes/pvinterp.c:184 Opcodes/pvinterp.c:356
-#: Opcodes/vpvoc.c:215
+#: Opcodes/pvinterp.c:85 Opcodes/pvinterp.c:183 Opcodes/pvinterp.c:354
+#: Opcodes/vpvoc.c:216
#, c-format
msgid "%d chans (not 1) in PVOC file %s"
msgstr "%d canaux (pas 1) dans le fichier PVOC %s"
-#: Opcodes/pvinterp.c:101 Opcodes/pvinterp.c:212 Opcodes/pvinterp.c:382
+#: Opcodes/pvinterp.c:100 Opcodes/pvinterp.c:210 Opcodes/pvinterp.c:379
#: Opcodes/ugens8.c:95 Opcodes/vpvoc.c:244
#, c-format
msgid "ksmps of %d needs wdw of %d, max is %d for pv %s"
msgstr "Un ksmps de %d necécessite une fenêtre de %d, max vaut %d pour pv %s"
-#: Opcodes/pvinterp.c:122 Opcodes/pvinterp.c:256 Opcodes/pvinterp.c:431
+#: Opcodes/pvinterp.c:121 Opcodes/pvinterp.c:254 Opcodes/pvinterp.c:428
#: Opcodes/pvread.c:95 Opcodes/ugens8.c:156 Opcodes/vpvoc.c:297
msgid "PVOC ktimpnt truncated to last frame"
msgstr "PVOC ktimpnt a été tronqué à la dernière trame"
-#: Opcodes/pvinterp.c:130
+#: Opcodes/pvinterp.c:129
msgid "pvbufread: not initialised"
msgstr "pvbufread : non initialisé"
-#: Opcodes/pvinterp.c:132 Opcodes/pvinterp.c:306 Opcodes/pvinterp.c:492
+#: Opcodes/pvinterp.c:131 Opcodes/pvinterp.c:304 Opcodes/pvinterp.c:489
#: Opcodes/pvread.c:103 Opcodes/ugens8.c:206 Opcodes/vpvoc.c:361
msgid "PVOC timpnt < 0"
msgstr "PVOC timpnt < 0"
-#: Opcodes/pvinterp.c:149
+#: Opcodes/pvinterp.c:148
msgid "pvinterp: associated pvbufread not found"
msgstr "pvinterp : pas de pvbufread associé"
-#: Opcodes/pvinterp.c:166
+#: Opcodes/pvinterp.c:165
#, c-format
msgid "PVINTERP cannot load %s"
msgstr "PVINTERP ne peut pas charger %s"
-#: Opcodes/pvinterp.c:179
+#: Opcodes/pvinterp.c:178
#, c-format
msgid "pvinterp: %s: frame size %d does not match pvbufread frame size %d\n"
msgstr ""
"pvinterp : %s : la taille de trame %d ne correspond pas à la taille de trame "
"%d de pvbufread\n"
-#: Opcodes/pvinterp.c:300
+#: Opcodes/pvinterp.c:298
msgid "pvinterp: not initialised"
msgstr "pvinterp : non initialisé"
-#: Opcodes/pvinterp.c:302 Opcodes/pvinterp.c:488 Opcodes/ugens8.c:202
+#: Opcodes/pvinterp.c:300 Opcodes/pvinterp.c:485 Opcodes/ugens8.c:202
#: Opcodes/vpvoc.c:357
msgid "PVOC transpose too low"
msgstr "PVOC transpose trop bas"
-#: Opcodes/pvinterp.c:304 Opcodes/pvinterp.c:490 Opcodes/ugens8.c:204
+#: Opcodes/pvinterp.c:302 Opcodes/pvinterp.c:487 Opcodes/ugens8.c:204
#: Opcodes/vpvoc.c:359
msgid "PVOC transpose too high"
msgstr "PVOC transpose trop haut"
-#: Opcodes/pvinterp.c:323
+#: Opcodes/pvinterp.c:321
msgid "pvcross: associated pvbufread not found"
msgstr "pvcross : pas de pvbufread associé"
-#: Opcodes/pvinterp.c:339
+#: Opcodes/pvinterp.c:337
#, c-format
msgid "PVCROSS cannot load %s"
msgstr "PVCROSS ne peut pas charger %s"
-#: Opcodes/pvinterp.c:351
+#: Opcodes/pvinterp.c:349
#, c-format
msgid "pvcross: %s: frame size %d does not match pvbufread frame size %d\n"
msgstr ""
"pvcross : %s : la taille de trame %d ne correspond à la taille de trame %d "
"de pvbufread\n"
-#: Opcodes/pvinterp.c:454 Opcodes/vpvoc.c:322
+#: Opcodes/pvinterp.c:451 Opcodes/vpvoc.c:322
msgid "PVOC debug: one frame gets through\n"
msgstr "PVOC debuf : une trame est passée\n"
-#: Opcodes/pvinterp.c:486
+#: Opcodes/pvinterp.c:483
msgid "pvcross: not initialised"
msgstr "pvcross : non initialisé"
-#: Opcodes/pvlock.c:35 Opcodes/pvsbasic.c:380
+#: Opcodes/pvlock.c:59 Opcodes/pvsbasic.c:380
msgid "invalid number of output arguments"
msgstr "nombre d'arguments de sortie non valide"
-#: Opcodes/pvlock.c:466
+#: Opcodes/pvlock.c:490
msgid "pvsfreeze: signal format must be amp-freq."
msgstr "pvsfreeze : le format de signal doit être amp-fréq."
@@ -8026,9 +7879,8 @@ msgid "pvsband: not initialised"
msgstr "pvsband : non initialisé"
#: Opcodes/pvsbasic.c:69
-#, fuzzy
msgid "pvsgain: signal format must be amp-phase or amp-freq."
-msgstr "pvsmix : le format de signal doit être amp-phase ou amp-fréq."
+msgstr "pvsgain : le format de signal doit être amp-phase ou amp-fréq."
#: Opcodes/pvsbasic.c:181 Opcodes/pvsbasic.c:248
msgid "SDFT Not implemented in this case yet"
@@ -8113,34 +7965,37 @@ msgid "pvstencil: not initialised"
msgstr "pvstencil : non initialisé"
#: Opcodes/pvsbasic.c:2148
-#, fuzzy
msgid "pvs2tab: signal format must be amp-phase or amp-freq."
-msgstr "pvsftw : le format du signal doit être amp-phase ou amp-fréq.\n"
+msgstr "pvs2tab : le format du signal doit être amp-phase ou amp-fréq."
-#: Opcodes/pvsbasic.c:2151 Opcodes/pvsbasic.c:2190 Opcodes/tabvars.c:53
-#: Opcodes/tabvars.c:89 Opcodes/tabvars.c:131 Opcodes/tabvars.c:176
-#: Opcodes/tabvars.c:178
-#, fuzzy
+#: Opcodes/pvsbasic.c:2151 Opcodes/pvsbasic.c:2189 Opcodes/tabvars.c:56
+#: Opcodes/tabvars.c:92 Opcodes/tabvars.c:134 Opcodes/tabvars.c:179
+#: Opcodes/tabvars.c:181
msgid "t-variable not initialised"
-msgstr "table : non initialisé"
+msgstr "t-variable : non initialisé"
-#: Opcodes/pvsbuffer.c:53 Opcodes/pvscent.c:164 Opcodes/pvsdemix.c:49
+#: Opcodes/pvsbuffer.c:56 Opcodes/pvscent.c:164 Opcodes/pvsdemix.c:49
msgid "SDFT case not implemented yet"
msgstr "SDFT pas encore implémentée"
-#: Opcodes/pvsbuffer.c:85
+#: Opcodes/pvsbuffer.c:89
msgid "error... could not create global var for handle\n"
msgstr "erreur... impossible de créer une var globale pour le descripteur\n"
-#: Opcodes/pvsbuffer.c:143 Opcodes/pvsbuffer.c:190 Opcodes/pvsbuffer.c:258
+#: Opcodes/pvsbuffer.c:148 Opcodes/pvsbuffer.c:197 Opcodes/pvsbuffer.c:266
msgid "error... could not read handle from global variable\n"
msgstr ""
"erreur... impossible de lire le descripteur dans les variables globales\n"
-#: Opcodes/pvsbuffer.c:238 Opcodes/pvsbuffer.c:306
+#: Opcodes/pvsbuffer.c:246 Opcodes/pvsbuffer.c:316
msgid "Invalid buffer handle"
msgstr "Descripteur de tampon non valide"
+#: Opcodes/pvsbuffer.c:285 Opcodes/pvsbuffer.c:291
+#, c-format
+msgid "table length too small: needed %d, got %d\n"
+msgstr "longueur de table trop petite : %d attendu, %d obtenu\n"
+
#: Opcodes/pvscent.c:42
msgid "pvscent: format must be amp-phase or amp-freq.\n"
msgstr "pvscent : le format doit être amp-phase ou amp-fréq.\n"
@@ -8330,24 +8185,24 @@ msgstr "seqtime : numéro de table incorrect"
msgid "seqtim: incorrect table number"
msgstr "seqtim : numéro de table incorrect"
-#: Opcodes/sfont.c:118
+#: Opcodes/sfont.c:121
#, c-format
msgid "sfload: cannot open SoundFont file \"%s\" (error %s)"
msgstr "sfload : impossible d'ouvrir le fichier SoundFont \"%s\" (erreur %s)"
-#: Opcodes/sfont.c:123
+#: Opcodes/sfont.c:126
msgid "Sfload: cannot use globals"
msgstr "sfload : impossible d'utiliser des variables globales"
-#: Opcodes/sfont.c:153
+#: Opcodes/sfont.c:156
msgid "sfload: could not open globals\n"
msgstr "sfload : impossible d'utiliser des variables globales\n"
-#: Opcodes/sfont.c:170
+#: Opcodes/sfont.c:173
msgid "Extending soundfonts"
msgstr "Extension de soundfonts"
-#: Opcodes/sfont.c:201
+#: Opcodes/sfont.c:204
#, c-format
msgid ""
"\n"
@@ -8356,12 +8211,12 @@ msgstr ""
"\n"
"List de Preset de \"%s\"\n"
-#: Opcodes/sfont.c:204
+#: Opcodes/sfont.c:207
#, c-format
msgid "%3d) %-20s\tprog:%-3d bank:%d\n"
msgstr "%3d) %-20s\tprog : %-3d bank : %d\n"
-#: Opcodes/sfont.c:226
+#: Opcodes/sfont.c:229
#, c-format
msgid ""
"\n"
@@ -8371,12 +8226,12 @@ msgstr ""
"Assignation de tous les Presets de \"%s\" à partir de %d (numéro du "
"descripteur de preset)\n"
-#: Opcodes/sfont.c:231
+#: Opcodes/sfont.c:234
#, c-format
msgid "%3d<--%-20s\t(prog:%-3d bank:%d)\n"
msgstr "%3d<--%-20s\t(prog : %-3d bank : %d)\n"
-#: Opcodes/sfont.c:238
+#: Opcodes/sfont.c:241
#, c-format
msgid ""
"\n"
@@ -8388,7 +8243,7 @@ msgstr ""
"%d \n"
"\n"
-#: Opcodes/sfont.c:251
+#: Opcodes/sfont.c:254
#, c-format
msgid ""
"\n"
@@ -8397,12 +8252,12 @@ msgstr ""
"\n"
"Liste d'instruments de \"%s\"\n"
-#: Opcodes/sfont.c:268
+#: Opcodes/sfont.c:271
#, c-format
msgid "sfpreset: preset handle too big (%d), max: %d"
msgstr "sfpreset : descripteur de preset trop grand (%d), max : %d"
-#: Opcodes/sfont.c:284
+#: Opcodes/sfont.c:287
#, c-format
msgid ""
"sfpreset: cannot find any preset having prog number %d and bank number %d in "
@@ -8411,19 +8266,19 @@ msgstr ""
"sfpreset : impossible de trouver un preset ayant le numéro de prog %d et le "
"numéro de banque %d dans le fichier SoundFont \"%s\""
-#: Opcodes/sfont.c:306 Opcodes/sfont.c:2189
+#: Opcodes/sfont.c:309 Opcodes/sfont.c:2192
msgid "sfplay: invalid or out-of-range preset number"
msgstr "sfplay : numéro de preset non valide ou hors limites"
-#: Opcodes/sfont.c:633
+#: Opcodes/sfont.c:636
msgid "sfplaym: invalid or out-of-range preset number"
msgstr "sfplaym : numéro de preset non valide ou hors limites"
-#: Opcodes/sfont.c:888 Opcodes/sfont.c:1150
+#: Opcodes/sfont.c:891 Opcodes/sfont.c:1153
msgid "sfinstr: instrument out of range"
msgstr "sfinstr : instrument hors limites"
-#: Opcodes/sfont.c:1598 Opcodes/sfont.c:1835
+#: Opcodes/sfont.c:1601 Opcodes/sfont.c:1838
#, c-format
msgid ""
"SoundFont file \"%s\" contains ROM samples !\n"
@@ -8434,19 +8289,19 @@ msgstr ""
"Actuellement sfload n'autorise que les échantillons en RAM.\n"
"Session annulée !"
-#: Opcodes/sfont.c:1987 Opcodes/sfont.c:1993
+#: Opcodes/sfont.c:1990 Opcodes/sfont.c:1996
msgid "Sfont: cannot use globals/"
msgstr "Sfont : impossible d'utiliser des variables globales/"
-#: Opcodes/sfont.c:1996
+#: Opcodes/sfont.c:1999
msgid "Sfont format not compatible"
msgstr "Sfont : format non compatible"
-#: Opcodes/sfont.c:2534
+#: Opcodes/sfont.c:2537
msgid "error... could not create sfont globals\n"
msgstr "erreur... impossible de créer les globales de sfont\n"
-#: Opcodes/shape.c:49
+#: Opcodes/shape.c:51
msgid "powershape: ifullscale must be strictly positive"
msgstr "powershape : la ftable ifullscale doit être entièrement positive"
@@ -8458,25 +8313,25 @@ msgstr "inletf : le format de signal doit être amp-phase ou amp-fréq."
msgid "ftgenonce error"
msgstr "erreur ftgenonce"
-#: Opcodes/singwave.c:85
+#: Opcodes/singwave.c:86
msgid "No table for Modulatr"
msgstr "Aucune table pour Modulatr"
-#: Opcodes/singwave.c:127
+#: Opcodes/singwave.c:128
msgid "No table for Singwave"
msgstr "Aucune table pour Singwave"
-#: Opcodes/singwave.c:207
+#: Opcodes/singwave.c:208
#, c-format
msgid "SingWave: rate=%f sweepRate=%f mytime=%f\n"
msgstr "SingWave : rate=%f sweepRate=%f mytime=%f\n"
-#: Opcodes/singwave.c:273
+#: Opcodes/singwave.c:280
#, c-format
msgid "Found Formant: %s (number %i)\n"
msgstr "Le formant %s (numéro %i) a été trouvé\n"
-#: Opcodes/singwave.c:395
+#: Opcodes/singwave.c:397
#, c-format
msgid "Setting Phoneme: %d %f\n"
msgstr "Fixation du phonème : %d %f\n"
@@ -8509,15 +8364,15 @@ msgstr "pvsarp : le format du signal doit être amp-phase ou amp-fréq.\n"
msgid "pvsarp: not initialised\n"
msgstr "pvsarp : non initialisé\n"
-#: Opcodes/sndloop.c:995 Opcodes/sndloop.c:1092
+#: Opcodes/sndloop.c:995 Opcodes/sndloop.c:1091
msgid "signal format must be amp-phase or amp-freq.\n"
msgstr "le format du signal doit être amp-phase ou amp-fréq.\n"
-#: Opcodes/sndloop.c:1072
+#: Opcodes/sndloop.c:1071
msgid "pvsvoc: not initialised\n"
msgstr "pvsvoc : non initialisé\n"
-#: Opcodes/sndloop.c:1123
+#: Opcodes/sndloop.c:1122
msgid "pvsmorph: not initialised\n"
msgstr "pvsmorph : non initialisé\n"
@@ -8537,27 +8392,27 @@ msgstr "Nombre de sorties incorrect dans sndwarpst ; doit valoir 2 ou 4"
msgid "sndwarpst: not initialised"
msgstr "sndwarpst : non initialisé"
-#: Opcodes/sockrecv.c:123 Opcodes/sockrecv.c:213 Opcodes/sockrecv.c:300
-#: Opcodes/socksend.c:75 Opcodes/socksend.c:133 Opcodes/socksend.c:190
+#: Opcodes/sockrecv.c:117 Opcodes/sockrecv.c:215 Opcodes/sockrecv.c:314
+#: Opcodes/socksend.c:73 Opcodes/socksend.c:157 Opcodes/socksend.c:252
+#, c-format
+msgid "Winsock2 failed to start: %d"
+msgstr "Le démarrage de winsock2 a échoué : %d"
+
+#: Opcodes/sockrecv.c:131 Opcodes/sockrecv.c:227 Opcodes/sockrecv.c:320
+#: Opcodes/socksend.c:86 Opcodes/socksend.c:171 Opcodes/socksend.c:259
msgid "creating socket"
msgstr "création du socket"
-#: Opcodes/sockrecv.c:322
-msgid "connect failed"
-msgstr "la connexion a échoué"
+#: Opcodes/sockrecv.c:347
+#, c-format
+msgid "connect failed (%d)"
+msgstr "la connexion a échoué (%d)"
-#: Opcodes/sockrecv.c:335
+#: Opcodes/sockrecv.c:360
msgid "read from socket failed"
msgstr "la lecture depuis le socket a échoué"
-#: Opcodes/socksend.c:67 Opcodes/socksend.c:125
-#, c-format
-msgid "The buffersize must be <= %d samples to fit in a udp-packet."
-msgstr ""
-"La taille du tampon doit être <= %d échantillons pour entrer dans un paquet "
-"udp."
-
-#: Opcodes/socksend.c:107 Opcodes/socksend.c:169
+#: Opcodes/socksend.c:126 Opcodes/socksend.c:215
msgid "sendto failed"
msgstr "sendto a échoué"
@@ -8577,20 +8432,20 @@ msgstr "spat3d : non initialisé"
msgid "spat3di: not initialised"
msgstr "spat3di : non initialisé"
-#: Opcodes/spectra.c:82
+#: Opcodes/spectra.c:84
msgid "illegal Q value"
msgstr "valeur de Q illégale"
-#: Opcodes/spectra.c:84
+#: Opcodes/spectra.c:86
msgid "unknown dbout code"
msgstr "code de dbout inconnu"
-#: Opcodes/spectra.c:104
+#: Opcodes/spectra.c:106
#, c-format
msgid "spectrum: %s window, %s out, making tables ...\n"
msgstr "spectrum : fenêtre %s, sortie %s, fabrication des tables ...\n"
-#: Opcodes/spectra.c:123
+#: Opcodes/spectra.c:125
#, c-format
msgid ""
"\thigh cps %7.1f\n"
@@ -8599,56 +8454,56 @@ msgstr ""
"\tcps haut %7.1f\n"
"\t cps bas %7.1f\n"
-#: Opcodes/spectra.c:138
+#: Opcodes/spectra.c:140
#, c-format
msgid "\tQ %4.1f uses a %d sample window each octdown\n"
msgstr ""
"\tQ %4.1f utilise une fenêtre de %d échantillons à chaque octave "
"descendante\n"
-#: Opcodes/spectra.c:169
+#: Opcodes/spectra.c:171
msgid "spectrum windowed sines:"
msgstr "spectrum : sinus fenêtrées : "
-#: Opcodes/spectra.c:187
+#: Opcodes/spectra.c:189
#, c-format
msgid "\t%d oct analysis window delay = %ld samples (%d msecs)\n"
msgstr ""
"\tle délai de la fenêtre d'analyse de l'oct %d est égal à %ld échantillons "
"(%d ms)\n"
-#: Opcodes/spectra.c:195
+#: Opcodes/spectra.c:197
msgid "octdown buffers:"
msgstr "tampons d'octaves descendantes :"
-#: Opcodes/spectra.c:513 Opcodes/spectra.c:553
+#: Opcodes/spectra.c:515 Opcodes/spectra.c:555
msgid "specdisp: not initialised"
msgstr "specdisp : non initialisé"
-#: Opcodes/spectra.c:523
+#: Opcodes/spectra.c:525
#, c-format
msgid "instr %d %s, dft (%s), %ld octaves (%d - %d Hz):"
msgstr "instr %d %s, tfd (%s), %ld octaves (%d - %d Hz) :"
-#: Opcodes/spectra.c:530
+#: Opcodes/spectra.c:532
#, c-format
msgid "instr %d %s, dft (%s), %ld octaves (%3.1f - %3.1f Hz):"
msgstr "instr %d %s, tfd (%s), %ld octaves (%3.1f - %3.1f Hz) :"
-#: Opcodes/spectra.c:611
+#: Opcodes/spectra.c:613
msgid "per oct rolloff too steep"
msgstr "pente par octave trop raide"
-#: Opcodes/spectra.c:632
+#: Opcodes/spectra.c:634
#, c-format
msgid "specptrk: %d freqs, %d%s ptls at "
msgstr "specptrk : %d fréqs, %d%s partiels à "
-#: Opcodes/spectra.c:633
+#: Opcodes/spectra.c:635
msgid " odd"
msgstr " impair"
-#: Opcodes/spectra.c:637
+#: Opcodes/spectra.c:639
msgid ""
"\n"
"\t\trolloff vals:"
@@ -8656,7 +8511,7 @@ msgstr ""
"\n"
"\t\tvaleurs de rolloff :"
-#: Opcodes/spectra.c:660
+#: Opcodes/spectra.c:662
#, c-format
msgid ""
"\n"
@@ -8665,121 +8520,121 @@ msgstr ""
"\n"
"\tdbthresh %4.1f : X-corr %s threshon %4.1f, threshoff %4.1f\n"
-#: Opcodes/spectra.c:817
+#: Opcodes/spectra.c:819
msgid "specptrk: not initialised"
msgstr "specptrk : non initialisé"
-#: Opcodes/spectra.c:849
+#: Opcodes/spectra.c:851
msgid "specsum: not initialised"
msgstr "specsum : non initialisé"
-#: Opcodes/spectra.c:860
+#: Opcodes/spectra.c:862
msgid "inputs have different sizes"
msgstr "les entrées ont des tailles différentes"
-#: Opcodes/spectra.c:863
+#: Opcodes/spectra.c:865
msgid "inputs have diff. time periods"
msgstr "les entrées ont des périodes temporelles différentes"
-#: Opcodes/spectra.c:867
+#: Opcodes/spectra.c:869
msgid "inputs have different freq resolution"
msgstr "les entrées ont des résolutions en fréquence différentes"
-#: Opcodes/spectra.c:870
+#: Opcodes/spectra.c:872
msgid "inputs have different amptypes"
msgstr "les entrées ont des types d'amplitude différents"
-#: Opcodes/spectra.c:902
+#: Opcodes/spectra.c:904
msgid "specaddm: not initialised"
msgstr "specaddm : non initialisé"
-#: Opcodes/spectra.c:926
+#: Opcodes/spectra.c:928
msgid "specdiff: local buffers not initialised"
msgstr "specdiff: tampons locaux non initialisés"
-#: Opcodes/spectra.c:964
+#: Opcodes/spectra.c:966
msgid "specdiff: not initialised"
msgstr "specdiff : non initialisé"
-#: Opcodes/spectra.c:986
+#: Opcodes/spectra.c:988
msgid "specscal: local buffer not initialised"
msgstr "specscal: tampon local non initialisé"
-#: Opcodes/spectra.c:991
+#: Opcodes/spectra.c:993
msgid "missing fscale table"
msgstr "la table de fscale est manquante"
-#: Opcodes/spectra.c:1057
+#: Opcodes/spectra.c:1059
msgid "specscal: not initialised"
msgstr "specscal : non initialisé"
-#: Opcodes/spectra.c:1081
+#: Opcodes/spectra.c:1083
msgid "spechist: local buffers not intiialised"
msgstr "spechist : tampons locaux non initialisés"
-#: Opcodes/spectra.c:1113
+#: Opcodes/spectra.c:1115
msgid "spechist: not initialised"
msgstr "spechist : non initialisé"
-#: Opcodes/spectra.c:1134
+#: Opcodes/spectra.c:1136
msgid "specfilt: local buffers not initialised"
msgstr "specfilt: tampons locaux non initialisés"
-#: Opcodes/spectra.c:1142
+#: Opcodes/spectra.c:1144
msgid "missing htim ftable"
msgstr "la ftable htim est manquante"
-#: Opcodes/spectra.c:1165
+#: Opcodes/spectra.c:1167
msgid "htim ftable must be all-positive"
msgstr "la ftable htim doit être entièrement positive"
-#: Opcodes/spectra.c:1169
+#: Opcodes/spectra.c:1171
#, c-format
msgid "coef range: %6.3f - %6.3f\n"
msgstr "intervalle de coef : %6.3f - %6.3f\n"
-#: Opcodes/spectra.c:1201
+#: Opcodes/spectra.c:1203
msgid "specfilt: not initialised"
msgstr "specfilt : non initialisé"
-#: Opcodes/stackops.c:80
+#: Opcodes/stackops.c:81
msgid "fsig = : source signal is not initialised"
msgstr "fsig = : le signal source n'est pas initialisé"
-#: Opcodes/stackops.c:126
+#: Opcodes/stackops.c:125
msgid "stack overflow"
msgstr "dépassement de pile"
-#: Opcodes/stackops.c:134
+#: Opcodes/stackops.c:131
msgid "cannot pop from empty stack"
msgstr "impossible de lire à partir d'une pile vide"
-#: Opcodes/stackops.c:142
+#: Opcodes/stackops.c:137
msgid "argument number or type mismatch"
msgstr "numéro ou type d'argument inadéquat"
-#: Opcodes/stackops.c:150
+#: Opcodes/stackops.c:143
msgid "string argument is too long"
msgstr "l'argument chaîne est trop long"
-#: Opcodes/stackops.c:167
+#: Opcodes/stackops.c:160
msgid "Error allocating argument stack"
msgstr "Erreur lors de l'allocation de la pile d'arguments"
-#: Opcodes/stackops.c:207 Top/argdecode.c:1212 util/envext.c:99
+#: Opcodes/stackops.c:200 Top/argdecode.c:1212 util/envext.c:99
#: util/scale.c:248
msgid "too many arguments"
msgstr "trop d'arguments"
-#: Opcodes/stackops.c:286
+#: Opcodes/stackops.c:279
msgid "the stack is already allocated"
msgstr "la pile est déjà allouée"
-#: Opcodes/stackops.c:637
+#: Opcodes/stackops.c:630
msgid "number of arguments != nchnls"
msgstr "nombre d'arguments != nchnls"
-#: Opcodes/stdopcod.c:36
+#: Opcodes/stdopcod.c:37
msgid "stdopcod.c: error: globals already allocated"
msgstr "stdopcod.c : erreur : les variables globales sont déjà allouées"
@@ -8796,37 +8651,45 @@ msgstr ""
msgid "RAWWAVE_PATH: %s\n"
msgstr "RAWWAVE_PATH : %s\n"
-#: Opcodes/syncgrain.c:175 Opcodes/syncgrain.c:338 Opcodes/syncgrain.c:683
+#: Opcodes/syncgrain.c:176 Opcodes/syncgrain.c:339 Opcodes/syncgrain.c:684
msgid "grain size smaller than 1 sample\n"
msgstr "la taille de grain est inférieure à 1 échantillon\n"
-#: Opcodes/syncgrain.c:387
+#: Opcodes/syncgrain.c:388
msgid "diskgrain: invalid number of channels"
msgstr "diskgrain : nombre de canaux non valide"
-#: Opcodes/syncgrain.c:419
+#: Opcodes/syncgrain.c:420
msgid "diskgrain: could not open file\n"
msgstr "diskgrain : impossible d'ouvrir le fichier\n"
-#: Opcodes/syncgrain.c:423
+#: Opcodes/syncgrain.c:424
msgid ""
"diskgrain: soundfile channel numbers do not match the number of outputs \n"
msgstr ""
"diskgrain : le nombre de canaux du fichier son ne correspond pas au nombre "
"de sorties\n"
-#: Opcodes/syncgrain.c:435
+#: Opcodes/syncgrain.c:436
msgid "diskgrain: could not read file \n"
msgstr "diskgrain : impossible de lire le fichier\n"
-#: Opcodes/tabsum.c:39
+#: Opcodes/tabsum.c:40
msgid "tabsum: No table"
msgstr "tabsum : pas de table"
-#: Opcodes/tabsum.c:54
+#: Opcodes/tabsum.c:55
msgid "tabsum: Not initialised"
msgstr "tabsum : non initialisé"
+#: Opcodes/tabvars.c:201 Opcodes/tabvars.c:218
+msgid "t-var not initialised"
+msgstr "t-variable : non initialisé"
+
+#: Opcodes/tabvars.c:203 Opcodes/tabvars.c:220
+msgid "No table for copy2ftab"
+msgstr "Pas de table pour copy2ftab"
+
#: Opcodes/ugens7.c:46 Opcodes/ugensa.c:49
msgid "illegal value for iolaps"
msgstr "valeur de iolaps illégale"
@@ -8978,17 +8841,17 @@ msgstr "ftmorf : la table iftfn n'a pas la bonne taille"
msgid "table in iftfn for ftmorf does not exist"
msgstr "ftmorf : la table iftfn n'existe pas"
-#: Opcodes/ugnorman.c:120
+#: Opcodes/ugnorman.c:121
#, c-format
msgid "%s: Ats file %s not read (does it exist?)"
msgstr "%s : le fichier ATS %s n'a pas été lu (existe-t-il ?)"
-#: Opcodes/ugnorman.c:131
+#: Opcodes/ugnorman.c:132
#, c-format
msgid "%s: either %s is not an ATS file or the byte endianness is wrong"
msgstr "%s : soit %s n'est pas un fichier ATS soit l'endianness est incorrect"
-#: Opcodes/ugnorman.c:139
+#: Opcodes/ugnorman.c:140
#, c-format
msgid ""
"%s: %s is byte-swapped\n"
@@ -9000,112 +8863,112 @@ msgstr ""
"\tles fichiers en octets inversés ne produiront pas de résultat audio\n"
"\tdifférent, mais leur traitement pourra être plus lent."
-#: Opcodes/ugnorman.c:175
+#: Opcodes/ugnorman.c:176
msgid ""
"ATSINFO: location is out of bounds: 0-8 are the only possible selections"
msgstr ""
"ATSINFO : emplacement hors limites : les seules sélections possibles sont 0-8"
-#: Opcodes/ugnorman.c:265
+#: Opcodes/ugnorman.c:266
#, c-format
msgid "ATSREAD: partial %i out of range, max allowed is %i"
msgstr ""
"ATSREAD : le partiel %i est hors limites, la valeur max autorisée est %i"
-#: Opcodes/ugnorman.c:291
+#: Opcodes/ugnorman.c:292
msgid "Type not implemented"
msgstr "Type non implémenté"
-#: Opcodes/ugnorman.c:310
+#: Opcodes/ugnorman.c:311
msgid "ATSREAD: only positive time pointer values allowed, setting to zero\n"
msgstr ""
"ATSREAD : seules les valeurs de pointeur temporel positives sont admises, "
"fixée à zéro\n"
-#: Opcodes/ugnorman.c:319
+#: Opcodes/ugnorman.c:320
msgid "ATSREAD: timepointer out of range, truncated to last frame\n"
msgstr ""
"ATSREAD : pointeur temporel hors limites, tronqué à la dernière trame\n"
-#: Opcodes/ugnorman.c:332
+#: Opcodes/ugnorman.c:333
msgid "ATSREAD: not initialised"
msgstr "ATSREAD : non initialisé"
-#: Opcodes/ugnorman.c:394
+#: Opcodes/ugnorman.c:395
#, c-format
msgid "ATSREADNZ: band %i out of range, 1-25 are the valid band values"
msgstr ""
"ATSREADNZ : bande %i hors limite, les valeurs de bande valides sont 1-25"
-#: Opcodes/ugnorman.c:412
+#: Opcodes/ugnorman.c:413
msgid "ATSREADNZ: Type either not implemented or does not contain noise"
msgstr ""
"ATSREADNZ : soit le type n'est pas implémenté soit il ne contient pas de "
"bruit"
-#: Opcodes/ugnorman.c:431
+#: Opcodes/ugnorman.c:432
msgid "ATSREADNZ: only positive time pointer values allowed, setting to zero\n"
msgstr ""
"ATSREADNZ : seules les valeurs de pointeur temporel positives sont admises, "
"fixée à zéro\n"
-#: Opcodes/ugnorman.c:440
+#: Opcodes/ugnorman.c:441
msgid "ATSREADNZ: timepointer out of range, truncated to last frame\n"
msgstr ""
"ATSREADNZ : pointeur temporel hors limites, tronqué à la dernière trame\n"
-#: Opcodes/ugnorman.c:449
+#: Opcodes/ugnorman.c:450
msgid "ATSREADNZ: not initialised"
msgstr "ATSREADNZ : non initialisé"
-#: Opcodes/ugnorman.c:467
+#: Opcodes/ugnorman.c:468
msgid "ATSADD: Function table number for synthesis waveform not valid"
msgstr ""
"ATSADD : le numéro de la table de fonction pour la forme d'onde de synthèse "
"n'est pas valide"
-#: Opcodes/ugnorman.c:475
+#: Opcodes/ugnorman.c:476
msgid "ATSADD: Gate Function table number not valid"
msgstr "ATSADD : le numéro de la table de fonction gate n'est pas valide"
-#: Opcodes/ugnorman.c:521
+#: Opcodes/ugnorman.c:522
#, c-format
msgid "ATSADD: Partial(s) out of range, max partial allowed is %i"
msgstr "ATSADD : partiel(s) hors limites, le partiel max autorisé est %i"
-#: Opcodes/ugnorman.c:555
+#: Opcodes/ugnorman.c:556
msgid "ATSADD: Type not implemented"
msgstr "ATSADD : type non implémenté"
-#: Opcodes/ugnorman.c:585
+#: Opcodes/ugnorman.c:586
msgid ""
"ATSADD: only positive time pointer values are allowed, setting to zero\n"
msgstr ""
"ATSADD : seules les valeurs de pointeur temporel positives sont admises, "
"fixée à zéro\n"
-#: Opcodes/ugnorman.c:594
+#: Opcodes/ugnorman.c:595
msgid "ATSADD: time pointer out of range, truncating to last frame\n"
msgstr "ATSADD : pointeur temporel hors limites, tronqué à la dernière trame\n"
-#: Opcodes/ugnorman.c:638
+#: Opcodes/ugnorman.c:639
msgid "ATSADD: not initialised"
msgstr "ATSADD : non initialisé"
-#: Opcodes/ugnorman.c:842
+#: Opcodes/ugnorman.c:845
msgid "ATSADDNZ: This file type contains no noise"
msgstr "ATSADDNZ : ce type de fichier ne contient pas de bruit"
-#: Opcodes/ugnorman.c:846
+#: Opcodes/ugnorman.c:849
msgid "ATSADDNZ: This file type has not been implemented in this code yet."
msgstr ""
"ATSADDNZ : ce type de fichier n'a pas encore été implémenté dans ce code."
-#: Opcodes/ugnorman.c:869
+#: Opcodes/ugnorman.c:872
msgid "ATSADDNZ: Band(s) out of range, max band allowed is 25"
msgstr "ATSADDNZ : bande(s) hors limites, la bande maximale autorisée est 25"
-#: Opcodes/ugnorman.c:886
+#: Opcodes/ugnorman.c:889
msgid ""
"ATSADDNZ: Type either has no noise or is not implemented (only type 3 and 4 "
"work now)"
@@ -9113,35 +8976,35 @@ msgstr ""
"ATSADDNZ : soit le type n'a pas de bruit soit il n'est pas implémenté (seuls "
"les types 3 et 4 fonctionnent actuellement)"
-#: Opcodes/ugnorman.c:1002
+#: Opcodes/ugnorman.c:1005
msgid ""
"ATSADDNZ: only positive time pointer values are allowed, setting to zero\n"
msgstr ""
"ATSADDNZ : seules les valeurs de pointeur temporel positives sont admises, "
"fixée à zéro\n"
-#: Opcodes/ugnorman.c:1011
+#: Opcodes/ugnorman.c:1014
msgid "ATSADDNZ: time pointer out of range, truncating to last frame\n"
msgstr ""
"ATSADDNZ : pointeur temporel hors limites, tronqué à la dernière trame\n"
-#: Opcodes/ugnorman.c:1165
+#: Opcodes/ugnorman.c:1168
#, c-format
msgid "ATSSINNOI: Partial(s) out of range, max partial allowed is %i"
msgstr "ATSSINNOI : partiel(s) hors limites, le partiel max autorisé est %i"
-#: Opcodes/ugnorman.c:1202
+#: Opcodes/ugnorman.c:1205
msgid "ATSSINNOI: Type not implemented"
msgstr "ATSSINNOI : type non implémenté"
-#: Opcodes/ugnorman.c:1315
+#: Opcodes/ugnorman.c:1316
msgid ""
"ATSSINNOI: only positive time pointer values are allowed, setting to zero\n"
msgstr ""
"ATSSINNOI : seules les valeurs de pointeur temporel positives sont admises, "
"fixée à zéro\n"
-#: Opcodes/ugnorman.c:1324
+#: Opcodes/ugnorman.c:1325
msgid "ATSSINNOI: time pointer out of range, truncating to last frame\n"
msgstr ""
"ATSSINNOI : pointeur temporel hors limites, tronqué à la dernière trame\n"
@@ -9225,15 +9088,15 @@ msgstr ""
msgid "ATSCROSS: you must have an atsbufread before an atsinterpread"
msgstr "ATSCROSS : il faut avoir un atsbufread avant un atsinterpread"
-#: Opcodes/ugsc.c:394
+#: Opcodes/ugsc.c:390
msgid "Phaser mode must be either 1 or 2"
msgstr "Le mode du phaser doit valoir 1 ou 2"
-#: Opcodes/vbap.c:57
+#: Opcodes/vbap.c:59
msgid "vbap: error allocating loudspeaker table"
msgstr "vbap : erreur lors de l'allocation de la table de haut-parleurs"
-#: Opcodes/vbap.c:264
+#: Opcodes/vbap.c:266
msgid ""
"Number of loudspeakers is zero\n"
"Exiting"
@@ -9241,19 +9104,19 @@ msgstr ""
"Le nombre de haut-parleurs est zéro\n"
"Fin du traitement"
-#: Opcodes/vbap.c:573
+#: Opcodes/vbap.c:575
msgid "Error in loudspeaker dimension."
msgstr "Erreur dans la dimension de haut-parleur."
-#: Opcodes/vbap.c:596
+#: Opcodes/vbap.c:598
msgid "Too few loudspeakers"
msgstr "Trop peu de haut-parleurs"
-#: Opcodes/vbap.c:622
+#: Opcodes/vbap.c:624
msgid "Not valid 3-D configuration"
msgstr "Non valide en configuration 3-D"
-#: Opcodes/vbap.c:668 Opcodes/vbap.c:767
+#: Opcodes/vbap.c:670 Opcodes/vbap.c:769
msgid ""
"\n"
"Configured loudspeakers\n"
@@ -9261,12 +9124,12 @@ msgstr ""
"\n"
"Haut-parleurs configurés\n"
-#: Opcodes/vbap.c:670
+#: Opcodes/vbap.c:672
#, c-format
msgid "Triplet %d Loudspeakers: "
msgstr "Haut-parleurs Triplet %d : "
-#: Opcodes/vbap.c:769
+#: Opcodes/vbap.c:771
#, c-format
msgid "Pair %d Loudspeakers: "
msgstr "Haut-parleurs Paire %d : "
@@ -9302,7 +9165,6 @@ msgid "Wrong dimension\n"
msgstr "Dimension incorrecte\n"
#: Opcodes/vbap_eight.c:489 Opcodes/vbap_sixteen.c:486
-#, fuzzy
msgid ""
"vbap system NOT configured.\n"
"Missing vbaplsinit opcode in orchestra?"
@@ -9321,7 +9183,6 @@ msgid "Wrong dimension"
msgstr "Dimension incorrecte"
#: Opcodes/vbap_four.c:203 Opcodes/vbap_four.c:487 Opcodes/vbap_sixteen.c:203
-#, fuzzy
msgid ""
"vbap system NOT configured. \n"
"Missing vbaplsinit opcode in orchestra?"
@@ -9356,41 +9217,33 @@ msgstr "Il manque des champs dans vbapzmove\n"
msgid "Have to have at least %d directions in vbapzmove"
msgstr "Il faut au moins %d directions dans vbapzmove"
-#: Opcodes/Vosim.c:49
+#: Opcodes/Vosim.c:51
msgid "vosim: pulse table not found"
msgstr "vosim : table d'impulsion non trouvée !"
-#: Opcodes/Vosim.c:72
+#: Opcodes/Vosim.c:74
msgid "vosim: zero kfund. 'Infinite' length event generated."
msgstr "vosim: kfund à zéro. Evènement de longueur 'infinie' généré."
-#: Opcodes/Vosim.c:80
+#: Opcodes/Vosim.c:82
#, c-format
msgid "vosim: kfund (%f) > sr. Generating ksmps silence."
msgstr "vosim: kfund (%f) > sr. Génération d'un silence de ksmps."
-#: Opcodes/Vosim.c:158
+#: Opcodes/Vosim.c:160
msgid "vosim: not initialised"
msgstr "vosim : non initialisé"
-#: Opcodes/vpvoc.c:118
-msgid "tableseg: not initialised"
-msgstr "tableseg : non initialisé"
-
-#: Opcodes/vpvoc.c:146
-msgid "tablexseg: not initialised"
-msgstr "tablexseg : non initialisé"
-
-#: Opcodes/vpvoc.c:172
+#: Opcodes/vpvoc.c:173
#, c-format
msgid "vpvoc: Could not find ifnmagctrl table %f"
msgstr "vpvoc : la table ifnmagctrl %f n'a pas été trouvée"
-#: Opcodes/vpvoc.c:178
+#: Opcodes/vpvoc.c:179
msgid "vpvoc: associated tableseg not found"
msgstr "vpvoc : tableseg associé non trouvé"
-#: Opcodes/vpvoc.c:194
+#: Opcodes/vpvoc.c:195
#, c-format
msgid "VPVOC cannot load %s"
msgstr "VPVOC ne peut pas charger %s"
@@ -9483,7 +9336,7 @@ msgstr "-C\tutilisation du traitement de partition Cscore"
#: Top/argdecode.c:67
msgid "-j N\tuse N processes"
-msgstr ""
+msgstr "-j N\tutilise N processus"
#: Top/argdecode.c:69
msgid "-I\tI-time only orch run"
@@ -9511,47 +9364,47 @@ msgstr ""
msgid "-B N\tsamples per hardware sound I/O buffer"
msgstr "-B N\tnombre d'échantillons par tampon physique d'E/S"
-#: Top/argdecode.c:75 util/mixer.c:95 util/scale.c:46 util/srconv.c:739
+#: Top/argdecode.c:75 util/mixer.c:95 util/scale.c:46 util/srconv.c:738
msgid "-A\tcreate an AIFF format output soundfile"
msgstr "-A\tcréation d'un fichier de sortie au format AIFF"
-#: Top/argdecode.c:76 util/mixer.c:96 util/scale.c:47 util/srconv.c:741
+#: Top/argdecode.c:76 util/mixer.c:96 util/scale.c:47 util/srconv.c:740
msgid "-W\tcreate a WAV format output soundfile"
msgstr "-W\tcréation d'un fichier de sortie au format WAV"
-#: Top/argdecode.c:77 util/srconv.c:740
+#: Top/argdecode.c:77 util/srconv.c:739
msgid "-J\tcreate an IRCAM format output soundfile"
msgstr "-J\tcréation d'un fichier de sortie au format IRCAM"
-#: Top/argdecode.c:78 util/mixer.c:97 util/scale.c:48 util/srconv.c:742
+#: Top/argdecode.c:78 util/mixer.c:97 util/scale.c:48 util/srconv.c:741
msgid "-h\tno header on output soundfile"
msgstr "-h\tpas d'en-tête dans le fichier de sortie"
-#: Top/argdecode.c:79 util/mixer.c:99 util/scale.c:49 util/srconv.c:743
+#: Top/argdecode.c:79 util/mixer.c:99 util/scale.c:49 util/srconv.c:742
msgid "-c\t8-bit signed_char sound samples"
msgstr "-c\téchantillons en caractères signés sur 8 bit"
-#: Top/argdecode.c:81 util/mixer.c:101 util/scale.c:50 util/srconv.c:744
+#: Top/argdecode.c:81 util/mixer.c:101 util/scale.c:50 util/srconv.c:743
msgid "-a\talaw sound samples"
msgstr "-a\téchantillons alaw"
-#: Top/argdecode.c:83 util/mixer.c:98 util/mixer.c:100 util/srconv.c:745
+#: Top/argdecode.c:83 util/mixer.c:98 util/mixer.c:100 util/srconv.c:744
msgid "-8\t8-bit unsigned_char sound samples"
msgstr "-8\téchantillons en caractères non signés sur 8 bit"
-#: Top/argdecode.c:84 util/mixer.c:102 util/scale.c:51 util/srconv.c:746
+#: Top/argdecode.c:84 util/mixer.c:102 util/scale.c:51 util/srconv.c:745
msgid "-u\tulaw sound samples"
msgstr "-u\téchantillons ulaw"
-#: Top/argdecode.c:85 util/mixer.c:103 util/scale.c:52 util/srconv.c:747
+#: Top/argdecode.c:85 util/mixer.c:103 util/scale.c:52 util/srconv.c:746
msgid "-s\tshort_int sound samples"
msgstr "-s\téchantillons en entiers courts"
-#: Top/argdecode.c:86 util/mixer.c:104 util/scale.c:53 util/srconv.c:748
+#: Top/argdecode.c:86 util/mixer.c:104 util/scale.c:53 util/srconv.c:747
msgid "-l\tlong_int sound samples"
msgstr "-l\téchantillons en entiers longs"
-#: Top/argdecode.c:87 util/mixer.c:105 util/scale.c:54 util/srconv.c:749
+#: Top/argdecode.c:87 util/mixer.c:105 util/scale.c:54 util/srconv.c:748
msgid "-f\tfloat sound samples"
msgstr "-f\téchantillons en nombres flottants"
@@ -9559,7 +9412,7 @@ msgstr "-f\téchantillons en nombres flottants"
msgid "-3\t24bit sound samples"
msgstr "-3\téchantillons sur 24 bit"
-#: Top/argdecode.c:89 util/srconv.c:750
+#: Top/argdecode.c:89 util/srconv.c:749
msgid "-r N\torchestra srate override"
msgstr "-r N\tredéfinition du srate de l'orchestre"
@@ -9567,7 +9420,7 @@ msgstr "-r N\tredéfinition du srate de l'orchestre"
msgid "-k N\torchestra krate override"
msgstr "-k N\tredéfinition du krate de l'orchestre"
-#: Top/argdecode.c:91 util/srconv.c:751
+#: Top/argdecode.c:91 util/srconv.c:750
msgid "-K\tDo not generate PEAK chunks"
msgstr "-K\tNe générer aucun bloc PEAK"
@@ -9635,7 +9488,7 @@ msgstr ""
msgid "-F fnam\tread MIDIfile event stream from file 'fnam'"
msgstr "-F nomfic\tlire un flux d'évènements MIDI à partir du fichier 'nomfic'"
-#: Top/argdecode.c:107 util/mixer.c:106 util/scale.c:59 util/srconv.c:752
+#: Top/argdecode.c:107 util/mixer.c:106 util/scale.c:59 util/srconv.c:751
msgid "-R\tcontinually rewrite header while writing soundfile (WAV/AIFF)"
msgstr ""
"-R\tréécrire l'en-tête continuellement lors de l'écriture d'un fichier son "
@@ -9647,7 +9500,7 @@ msgstr ""
"-H#\taffiche une pulsation de style 1, 2 ou 3 à chaque écriture dans le "
"fichier son"
-#: Top/argdecode.c:109 util/mixer.c:108 util/scale.c:61 util/srconv.c:754
+#: Top/argdecode.c:109 util/mixer.c:108 util/scale.c:61 util/srconv.c:753
msgid "-N\tnotify (ring the bell) when score or miditrack is done"
msgstr ""
"-N\tavertir (par un beep) quand la partition ou la piste MIDI est terminée"
@@ -10170,16 +10023,16 @@ msgid "-M: stdin not supported on this platform"
msgstr "-M : stdin n'est pas supporté sur cette plateforme"
#: Top/argdecode.c:668 Top/argdecode.c:959 util/envext.c:84 util/mixer.c:205
-#: util/scale.c:173 util/srconv.c:248 util/xtrct.c:116
+#: util/scale.c:173 util/srconv.c:247 util/xtrct.c:116
msgid "no outfilename"
msgstr "pas de nom de fichier de sortie"
-#: Top/argdecode.c:671 Top/argdecode.c:963 util/scale.c:177 util/srconv.c:252
+#: Top/argdecode.c:671 Top/argdecode.c:963 util/scale.c:177 util/srconv.c:251
#: util/xtrct.c:120
msgid "-o cannot be stdin"
msgstr "-o ne peut pas être stdin"
-#: Top/argdecode.c:675 Top/argdecode.c:967 util/scale.c:180 util/srconv.c:257
+#: Top/argdecode.c:675 Top/argdecode.c:967 util/scale.c:180 util/srconv.c:256
#: util/xtrct.c:123
msgid "stdout audio not supported"
msgstr "audio sur stdout non supporté"
@@ -10198,15 +10051,15 @@ msgstr "pas de nom de fichier d'extraction de partition"
#: Top/argdecode.c:865
msgid "no weight-info"
-msgstr ""
+msgstr "pas d'info de poids"
#: Top/argdecode.c:871
msgid "no weight-dump"
-msgstr ""
+msgstr "pas de dump de poids"
#: Top/argdecode.c:877
msgid "no weights"
-msgstr ""
+msgstr "pas de poids"
#: Top/argdecode.c:892
#, c-format
@@ -10301,13 +10154,13 @@ msgstr "cscoreFileClose : pointeur de fichier non enregistré\n"
msgid "cscoreFileGetCurrent: no fp current"
msgstr "cscoreFileGetCurrent : pas de pointeur de fichier courant"
-#: Top/csmodule.c:192
+#: Top/csmodule.c:199
#, c-format
msgid "not loading '%s' (uses incompatible floating point type)"
msgstr ""
"'%s' n'est pas chargé (utilisation de type virgule flottante incompatible)"
-#: Top/csmodule.c:201
+#: Top/csmodule.c:209
#, c-format
msgid ""
"not loading '%s' (incompatible with this version of Csound (%d.%d/%d.%d)"
@@ -10315,157 +10168,157 @@ msgstr ""
"'%s' n'est pas chargé (incompatible avec cette version de Csound (%d.%d/%d."
"%d)"
-#: Top/csmodule.c:244
+#: Top/csmodule.c:252
#, c-format
msgid "could not open library '%s' (%s)"
msgstr "la bibliothèque '%s' (%s) n'a pas pu être ouverte"
-#: Top/csmodule.c:247
+#: Top/csmodule.c:255
#, c-format
msgid "could not open library '%s' (%d)"
msgstr "la bibliothèque '%s' (%d) n'a pas pu être ouverte"
-#: Top/csmodule.c:303
+#: Top/csmodule.c:311
#, c-format
msgid "'%s' is not a Csound plugin library"
msgstr "'%s' n'est pas une bibliothèque de plugin de Csound"
-#: Top/csmodule.c:314
+#: Top/csmodule.c:322
msgid "csoundLoadExternal(): memory allocation failure"
msgstr "csoundLoadExternal() : échec de l'allocation mémoire"
-#: Top/csmodule.c:328 Top/csmodule.c:336
+#: Top/csmodule.c:336 Top/csmodule.c:344
#, c-format
msgid "Error in pre-initialisation function of module '%s'"
msgstr "Erreur dans le fonction de pré-initialisation du module '%s'"
-#: Top/csmodule.c:599 Top/csmodule.c:605 Top/csmodule.c:616 Top/csmodule.c:623
-#: Top/csmodule.c:629 Top/csmodule.c:637
+#: Top/csmodule.c:608 Top/csmodule.c:614 Top/csmodule.c:625 Top/csmodule.c:632
+#: Top/csmodule.c:638 Top/csmodule.c:646
msgid "Error opening plugin directory\n"
msgstr "Erreur en ouvrant le répertoire de plugin\n"
-#: Top/csmodule.c:687
+#: Top/csmodule.c:696
#, c-format
msgid "Error opening plugin directory '%s': %s"
msgstr "Erreur en ouvrant le répertoire de plugin '%s' : %s"
-#: Top/csmodule.c:722
+#: Top/csmodule.c:731
#, c-format
msgid "path name too long, skipping '%s'"
msgstr "nom de chemin trop long, on se passe de '%s'"
-#: Top/csmodule.c:728
+#: Top/csmodule.c:737
#, c-format
msgid "Library %s omitted\n"
msgstr "Bibliothèque %s omise\n"
-#: Top/csmodule.c:764
+#: Top/csmodule.c:773
msgid "Loading command-line libraries:\n"
msgstr "Chargement des bibliothèques de ligne de commande :\n"
-#: Top/csmodule.c:787
+#: Top/csmodule.c:796
#, c-format
msgid " *** error loading '%s'"
msgstr " *** erreur en chargeant '%s'"
-#: Top/csmodule.c:810
+#: Top/csmodule.c:819
#, c-format
msgid "Error starting module '%s'"
msgstr "Erreur au démarrage du module '%s'"
-#: Top/csmodule.c:907
+#: Top/csmodule.c:918
#, c-format
msgid "Error de-initialising module '%s'"
msgstr "Erreur de dé-initialisation du module '%s'"
-#: Top/csound.c:1606 Top/csound.c:1626
+#: Top/csound.c:1636 Top/csound.c:1656
msgid "Early return from csoundPerformKsmps().\n"
msgstr "Retour prématuré de csoundPerformKsmps().\n"
-#: Top/csound.c:1612
+#: Top/csound.c:1642
msgid "Score finished in csoundPerformKsmps().\n"
msgstr "La partition est finie dans csoundPerformKsmps().\n"
-#: Top/csound.c:1645
+#: Top/csound.c:1675
msgid "Early return from csoundPerformBuffer().\n"
msgstr "Retour prématuré de csoundPerformBuffer().\n"
-#: Top/csound.c:1670
+#: Top/csound.c:1700
msgid "Early return from csoundPerform().\n"
msgstr "Retour prématuré de csoundPerform().\n"
-#: Top/csound.c:1677
+#: Top/csound.c:1707
msgid "Score finished in csoundPerform().\n"
msgstr "La partition est finie dans csoundPerform().\n"
-#: Top/csound.c:1697
+#: Top/csound.c:1727
msgid "csoundPerform(): stopped.\n"
msgstr "csoundPerform() : arrêté.\n"
-#: Top/csound.c:1968
+#: Top/csound.c:1998
msgid "WARNING: "
msgstr "AVERTISSEMENT : "
-#: Top/csound.c:2089
+#: Top/csound.c:2119
msgid "rtdummy: failed to allocate globals"
msgstr "rtdummy : l'allocation des variables globales a échoué"
-#: Top/csound.c:2090
+#: Top/csound.c:2120
msgid "rtaudio: dummy module enabled\n"
msgstr "rtaudio : module factice activé\n"
-#: Top/csound.c:2119 Top/csound.c:2155
+#: Top/csound.c:2149 Top/csound.c:2185
msgid " *** error: rtaudio module set to empty string"
msgstr " *** erreur : le module rtaudio est fixé par une chaîne vide"
-#: Top/csound.c:2123 Top/csound.c:2159
+#: Top/csound.c:2153 Top/csound.c:2189
#, c-format
msgid " *** error: unknown rtaudio module: '%s'"
msgstr " *** erreur : module rtaudio inconnu : '%s'"
-#: Top/csound.c:2241
+#: Top/csound.c:2271
msgid "WARNING: real time midi input disabled, using dummy functions\n"
msgstr ""
"AVERTISSEMENT : l'entrée midi en temps réel est désactivée, utilisation de "
"fonctions factices\n"
-#: Top/csound.c:2246 Top/csound.c:2280
+#: Top/csound.c:2276 Top/csound.c:2310
msgid "error: -+rtmidi set to empty string"
msgstr "erreur : -+rtmidi contient une chaîne vide"
-#: Top/csound.c:2249 Top/csound.c:2283
+#: Top/csound.c:2279 Top/csound.c:2313
#, c-format
msgid "error: -+rtmidi='%s': unknown module"
msgstr "erreur : -+rtmidi='%s' : module inconnu"
-#: Top/csound.c:2275
+#: Top/csound.c:2305
msgid "WARNING: real time midi output disabled, using dummy functions\n"
msgstr ""
"AVERTISSEMENT : la sortie midi en temps réel est désactivée, utilisation de "
"fonctions factices\n"
-#: Top/csound.c:2297
+#: Top/csound.c:2327
msgid "Unknown MIDI error"
msgstr "Erreur MIDI inconnue"
-#: Top/csound.c:2415
+#: Top/csound.c:2445
msgid "xyin not supported. use invalue opcode instead."
msgstr "xyin n'est pas supporté. Utiliser plutôt l'opcode invalue."
-#: Top/csound.c:2522
+#: Top/csound.c:2552
msgid "Failed to allocate new opcode entry."
msgstr "Echec de l'allocation d'une nouvelle entrée d'opcode."
-#: Top/csound.c:2545
+#: Top/csound.c:2575
#, c-format
msgid "Failed to allocate opcode entry for %s."
msgstr "Echec de l'allocation d'une entrée d'opcode pour %s."
-#: Top/csound.c:2876
+#: Top/csound.c:2906
msgid "Cannot open /proc/cpuinfo. Support for RDTSC is not available.\n"
msgstr "Impossible d'ouvrir /proc/cpuinfo. RDTSC n'est pas supporté.\n"
-#: Top/csound.c:2927
+#: Top/csound.c:2957
msgid "No valid CPU frequency entry was found in /proc/cpuinfo.\n"
msgstr "Aucune entrée de fréq CPU valide n'a été trouvée dans /proc/cpuinfo.\n"
@@ -10473,25 +10326,25 @@ msgstr "Aucune entrée de fréq CPU valide n'a été trouvée dans /proc/cpuinfo
msgid "Error allocating opcode list"
msgstr "Erreur lors de l'allocation de la liste d'opcodes"
-#: Top/main.c:161
+#: Top/main.c:160
#, c-format
msgid "WARNING: cannot open csoundrc file %s\n"
msgstr "AVERTISSEMENT : impossible d'ouvrir le fichier csoundrc %s\n"
-#: Top/main.c:164
+#: Top/main.c:163
#, c-format
msgid "Reading options from $CSOUNDRC: %s \n"
msgstr "Lecture des options depuis $CSOUNDRC : %s \n"
-#: Top/main.c:173
+#: Top/main.c:172
msgid "Reading options from $HOME/.csoundrc\n"
msgstr "Lecture des options depuis $HOME/.csoundrc\n"
-#: Top/main.c:200
+#: Top/main.c:199
msgid "no orchestra name"
msgstr "aucun nom d'orchestre"
-#: Top/main.c:225
+#: Top/main.c:224
msgid "Reading CSD failed ... stopping"
msgstr "La lecture du CSD a échoué ... arrêt"
@@ -10503,7 +10356,7 @@ msgstr "erreur : utilisations multiples de stdin"
msgid "error: multiple uses of stdout"
msgstr "erreur : utilisations multiples de stdout"
-#: Top/main.c:260 util/dnoise.c:268
+#: Top/main.c:260 util/dnoise.c:264
#, c-format
msgid "%s not a recognised SFOUTYP env setting"
msgstr "%s n'est pas un réglage d'env SFOUTYP reconnu"
@@ -10520,58 +10373,62 @@ msgstr ""
"exécution en temps réel en utilisant un fichier de partition numérique "
"factice\n"
-#: Top/main.c:319
+#: Top/main.c:314
#, c-format
msgid "orchname: %s\n"
msgstr "nom de l'orchestre : %s\n"
-#: Top/main.c:321
-#, c-format
-msgid "scorename: %s\n"
-msgstr "nom de la partition : %s\n"
+#: Top/main.c:334
+msgid "Stopping on parser failure\n"
+msgstr "Arrêt sur échec du parseur\n"
-#: Top/main.c:353
+#: Top/main.c:352
msgid "end of orchestra compile"
msgstr "fin de la compilation de l'orchestre"
-#: Top/main.c:360
+#: Top/main.c:359
#, c-format
msgid "using previous %s\n"
msgstr "utilisation du %s précédent\n"
-#: Top/main.c:373
+#: Top/main.c:369
#, c-format
msgid "cannot open scorefile %s"
msgstr "impossible d'ouvrir le fichier de partition %s"
-#: Top/main.c:378 Top/main.c:399
-#, c-format
-msgid "cannot open %s for writing"
-msgstr "impossible d'ouvrir %s en écriture"
-
-#: Top/main.c:381
+#: Top/main.c:371
msgid "sorting score ...\n"
msgstr "tri de la partition ...\n"
-#: Top/main.c:388
+#: Top/main.c:381
#, c-format
msgid "cannot extract %s, name conflict"
msgstr "impossible d'extraire %s, conflit de noms"
-#: Top/main.c:391
+#: Top/main.c:384
#, c-format
msgid "cannot open extract file %s"
msgstr "impossible d'ouvrir le fichier d'extraction %s"
-#: Top/main.c:401
+#: Top/main.c:388
+#, c-format
+msgid "cannot reopen %s"
+msgstr "impossible de réouvrir %s"
+
+#: Top/main.c:392
+#, c-format
+msgid "cannot open %s for writing"
+msgstr "impossible d'ouvrir %s en écriture"
+
+#: Top/main.c:394
msgid " ... extracting ...\n"
msgstr " ... extraction ...\n"
-#: Top/main.c:414
+#: Top/main.c:405
msgid "end of score sort"
msgstr "fin du tri de la partition"
-#: Top/main.c:416
+#: Top/main.c:407
msgid "Syntax check completed.\n"
msgstr "Vérification de la syntaxe accomplie.\n"
@@ -10638,163 +10495,158 @@ msgstr " *** échec de l'allocation mémoire\n"
msgid " *** error setting option '%s' to '%s': %s\n"
msgstr " *** erreur en mettant l'option '%s' Ã '%s' : %s\n"
-#: Top/one_file.c:105 Top/one_file.c:113
+#: Top/one_file.c:110 Top/one_file.c:118
msgid " *** cannot create temporary file"
msgstr " *** impossible de créer un fichier temporaire"
-#: Top/one_file.c:198
+#: Top/one_file.c:203
#, c-format
msgid "Removing temporary file %s ...\n"
msgstr "Suppression du fichier temporaire %s ...\n"
-#: Top/one_file.c:202
+#: Top/one_file.c:207
#, c-format
msgid "WARNING: could not remove %s\n"
msgstr "AVERTISSEMENT : impossible de supprimer %s\n"
-#: Top/one_file.c:268 Top/one_file.c:296
+#: Top/one_file.c:274 Top/one_file.c:302
#, c-format
msgid "More than %d arguments in <CsOptions>"
msgstr "Plus de %d arguments dans <CsOptions>"
-#: Top/one_file.c:313
+#: Top/one_file.c:319
#, c-format
msgid "Invalid arguments in <CsOptions>: %s"
msgstr "Arguments non valides dans <CsOptions> : %s"
-#: Top/one_file.c:316
+#: Top/one_file.c:322
#, c-format
msgid "Invalid arguments in .csoundrc or -@ file: %s"
msgstr "Arguments non valides dans .csoundrc ou dans le fichier -@ : %s"
-#: Top/one_file.c:322 Top/one_file.c:790
+#: Top/one_file.c:328 Top/one_file.c:744
msgid "Missing end tag </CsOptions>"
msgstr "La balise fermante </CsOptions> est absente"
-#: Top/one_file.c:340 Top/one_file.c:372 Top/one_file.c:420
-#, c-format
-msgid "Creating %s (%p)\n"
-msgstr "Création de %s (%p)\n"
-
-#: Top/one_file.c:343
-#, c-format
-msgid "Failed to create %s"
-msgstr "La création de %s a échoué"
-
-#: Top/one_file.c:356
+#: Top/one_file.c:354
msgid "Missing end tag </CsInstruments>"
msgstr "La balise fermante </CsInstruments> est absente"
-#: Top/one_file.c:389 Top/one_file.c:442
+#: Top/one_file.c:376 Top/one_file.c:430
msgid "Missing end tag </CsScore>"
msgstr "La balise fermante </CsScore> est absente"
-#: Top/one_file.c:403 Top/one_file.c:408
+#: Top/one_file.c:391 Top/one_file.c:396
msgid "Missing program in tag <CsScore>"
msgstr "La balise fermante </CsScore> est absente"
-#: Top/one_file.c:433
+#: Top/one_file.c:408
+#, c-format
+msgid "Creating %s (%p)\n"
+msgstr "Création de %s (%p)\n"
+
+#: Top/one_file.c:421
msgid "External generation failed"
msgstr "La génération externe a échoué"
-#: Top/one_file.c:520
+#: Top/one_file.c:468
#, c-format
msgid "Non base64 character %c(%2x)"
msgstr "Le caractère %c(%2x) n'est pas en base64"
-#: Top/one_file.c:539
+#: Top/one_file.c:487
msgid "Truncated byte at end of base64 stream"
msgstr "Octet tronqué à la fin du flux base64"
-#: Top/one_file.c:554
+#: Top/one_file.c:503
#, c-format
msgid "Cannot open temporary file (%s) for MIDI subfile"
msgstr "Impossible d'ouvrir le fichier temporaire (%s) comme sous-fichier MIDI"
-#: Top/one_file.c:571
+#: Top/one_file.c:520
msgid "Missing end tag </CsMidifileB>"
msgstr "La balise fermante </CsMidifileB> est absente"
-#: Top/one_file.c:586 Top/one_file.c:633
+#: Top/one_file.c:536 Top/one_file.c:584
#, c-format
msgid "File %s already exists"
msgstr "Le fichier %s existe déjà "
-#: Top/one_file.c:591
+#: Top/one_file.c:541
#, c-format
msgid "Cannot open sample file (%s) subfile"
msgstr "Impossible d'ouvrir le sous-fichier du fichier d'échantillons (%s)"
-#: Top/one_file.c:605
+#: Top/one_file.c:555
msgid "Missing end tag </CsSampleB>"
msgstr "La balise fermante </CsSampleB> est absente"
-#: Top/one_file.c:638
+#: Top/one_file.c:589
#, c-format
msgid "Cannot open file (%s) subfile"
msgstr "Impossible d'ouvrir le sous-fichier du fichier (%s)"
-#: Top/one_file.c:653
+#: Top/one_file.c:604
msgid "Missing end tag </CsFileB>"
msgstr "La balise fermante </CsFileB> est absente"
-#: Top/one_file.c:672
+#: Top/one_file.c:624
#, c-format
msgid "This CSD file requires a version of Csound before %d.%02d"
msgstr "Ce fichier CSD nécessite une version de Csound antérieure à la %d.%02d"
-#: Top/one_file.c:680 Top/one_file.c:687
+#: Top/one_file.c:632 Top/one_file.c:639
#, c-format
msgid "This CSD file requires a version of Csound after %d.%02d"
msgstr "Ce fichier CSD nécessite une version de Csound ultérieure à la %d.%02d"
-#: Top/one_file.c:693
+#: Top/one_file.c:645
msgid "Missing end tag </CsVersion>"
msgstr "La balise fermante </CsVersion> est absente"
-#: Top/one_file.c:702
+#: Top/one_file.c:655
msgid "**** Licence Information ****\n"
msgstr "**** Information de Licence ****\n"
-#: Top/one_file.c:708
+#: Top/one_file.c:661
msgid "**** End of Licence Information ****\n"
msgstr "**** Fin de l'Information de Licence ****\n"
-#: Top/one_file.c:719
+#: Top/one_file.c:672
msgid "Missing end tag </CsLicence>"
msgstr "La balise fermante </CsLicence> est absente"
-#: Top/one_file.c:749
+#: Top/one_file.c:703
#, c-format
msgid "Failed to open csd file: %s"
msgstr "L'ouverture du fichier csd a échoué : %s"
-#: Top/one_file.c:764
+#: Top/one_file.c:718
msgid "STARTING FILE\n"
msgstr "DEBUT DU FICHIER\n"
-#: Top/one_file.c:780
+#: Top/one_file.c:734
msgid "Creating options\n"
msgstr "Création des options\n"
-#: Top/one_file.c:786
+#: Top/one_file.c:740
msgid "Skipping <CsOptions>\n"
msgstr "On ignore <CsOptions>\n"
-#: Top/one_file.c:800
+#: Top/one_file.c:754
msgid "Creating orchestra\n"
msgstr "Création de l'orchestre\n"
-#: Top/one_file.c:805
+#: Top/one_file.c:759
msgid "Creating score\n"
msgstr "Création de la partition\n"
-#: Top/one_file.c:839
+#: Top/one_file.c:793
#, c-format
msgid "unknown CSD tag: %s\n"
msgstr "balise CSD inconnue : %s\n"
-#: Top/one_file.c:844
+#: Top/one_file.c:798
msgid "Could not find <CsoundSynthesizer> tag in CSD file.\n"
msgstr ""
"La balise <CsoundSynthesizer> n'a pas été trouvée dans le fichier CSD.\n"
@@ -10969,7 +10821,7 @@ msgstr "scot : %d erreurs.\n"
#, c-format
msgid ""
"\n"
-" Could not open %s for writing, bye...\n"
+"Could not open %s for writing, bye...\n"
msgstr ""
"\n"
" Impossible d'ouvrir %s en écriture, au revoir...\n"
@@ -10978,8 +10830,8 @@ msgstr ""
msgid "saving ATS data..."
msgstr "sauvegarde des données ATS..."
-#: util/atsa.c:546 util/atsa.c:2344 util/atsa.c:2358 util/atsa.c:2368
-#: util/atsa.c:2548 util/atsa.c:2611 util/atsa.c:2699
+#: util/atsa.c:546 util/atsa.c:2354 util/atsa.c:2368 util/atsa.c:2387
+#: util/atsa.c:2567 util/atsa.c:2630 util/atsa.c:2718
msgid "done!\n"
msgstr "fini !\n"
@@ -11090,17 +10942,17 @@ msgstr ""
"fréq. et résiduel, 4=amp., fréq., phase, et résiduel)\n"
"\n"
-#: util/atsa.c:1482
+#: util/atsa.c:1492
#, c-format
msgid "atsa: error opening residual file '%s'"
msgstr "atsa : erreur en ouvrant le fichier de résiduels '%s'"
-#: util/atsa.c:1486
+#: util/atsa.c:1496
#, c-format
msgid "atsa: residual file has %d channels, must be stereo !"
msgstr "atsa : le fichier de résiduels a %d voix, doit être stéréo !"
-#: util/atsa.c:1813
+#: util/atsa.c:1823
#, c-format
msgid ""
"\n"
@@ -11109,52 +10961,52 @@ msgstr ""
"\n"
"ERREUR : impossible d'ouvrir le fichier %s en écriture\n"
-#: util/atsa.c:1908
+#: util/atsa.c:1918
msgid "Error: sound not optimised !"
msgstr "Erreur : le son n'est pas optimisé !"
-#: util/atsa.c:2003
+#: util/atsa.c:2013
#, c-format
msgid "atsa: cannot open input file '%s'"
msgstr "atsa : impossible d'ouvrir le fichier '%s' en entrée"
-#: util/atsa.c:2010
+#: util/atsa.c:2020
#, c-format
msgid "atsa: file has %d channels, must be mono !"
msgstr "atsa : le fichier a %d voix, doit être mono !"
-#: util/atsa.c:2015
+#: util/atsa.c:2025
msgid "tracking...\n"
msgstr "pistage...\n"
-#: util/atsa.c:2024
+#: util/atsa.c:2034
#, c-format
msgid "start %f out of bounds, corrected to 0.0"
msgstr "le début %f est hors limites, corrigé à 0.0"
-#: util/atsa.c:2034
+#: util/atsa.c:2044
#, c-format
msgid "duration %f out of bounds, limited to file duration"
msgstr "la durée %f est hors limites, limitée à la durée du fichier"
-#: util/atsa.c:2040
+#: util/atsa.c:2050
#, c-format
msgid "start: %f duration: %f file dur: %f\n"
msgstr "début : %f, durée : %f, durée du fichier : %f\n"
-#: util/atsa.c:2047
+#: util/atsa.c:2057
#, c-format
msgid "lowest freq. %f out of bounds, forced to default: %f"
msgstr ""
"fréq. la plus basse %f hors limites, forcée à la valeur par défaut : %f"
-#: util/atsa.c:2057
+#: util/atsa.c:2067
#, c-format
msgid "highest freq. %f out of bounds, forced to default: %f"
msgstr ""
"fréq. la plus haute %f hors limites, forcée à la valeur par défaut : %f"
-#: util/atsa.c:2064
+#: util/atsa.c:2074
#, c-format
msgid ""
"freq. dev. %f out of bounds, should be > 0.0 and <= 1.0, forced to default: "
@@ -11163,7 +11015,7 @@ msgstr ""
"dév. de fréq. %f hors limites, doit être > 0.0 et <= 1.0, forcée à la valeur "
"par défaut : %f"
-#: util/atsa.c:2072
+#: util/atsa.c:2082
#, c-format
msgid ""
"windows cycles %d out of bounds, should be between 1 and 8, forced to "
@@ -11172,7 +11024,7 @@ msgstr ""
"cycles par fenêtre %d hors limites, doivent être entre 1 et 8, forcés à la "
"valeur par défaut : %d"
-#: util/atsa.c:2080
+#: util/atsa.c:2090
#, c-format
msgid ""
"window type %d out of bounds, should be between 0 and 3, forced to default: "
@@ -11181,7 +11033,7 @@ msgstr ""
"type de fenêtre %d hors limites, doit être entre 0 et 3, forcé à la valeur "
"par défaut : %d"
-#: util/atsa.c:2088
+#: util/atsa.c:2098
#, c-format
msgid ""
"hop size %f out of bounds, should be > 0.0 and <= 1.0, forced to default: %f"
@@ -11189,7 +11041,7 @@ msgstr ""
"taille de saut %f hors limites, doit être > 0.0 et <= 1.0, forcée à la "
"valeur par défaut : %f"
-#: util/atsa.c:2096
+#: util/atsa.c:2106
#, c-format
msgid ""
"lowest magnitude %f out of bounds, should be >= 0.0 and <= 1.0, forced to "
@@ -11198,28 +11050,28 @@ msgstr ""
"magnitude la plus faible %f hors limites, doit être >= 0.0 et <= 1.0, forcée "
"à la valeur par défaut : %f"
-#: util/atsa.c:2120
+#: util/atsa.c:2130
#, c-format
msgid "atsa: %d frames are not enough for analysis, need at least %d"
msgstr ""
"atsa : %d trames ne suffisent pas pour l'analyse, il en faut au moins %d"
-#: util/atsa.c:2129
+#: util/atsa.c:2139
#, c-format
msgid "track length %d out of bounds, forced to: %d"
msgstr "longueur de trajectoire %d hors limites, forcée à : %d"
-#: util/atsa.c:2138
+#: util/atsa.c:2148
#, c-format
msgid "min. segment length %d out of bounds, forced to: %d"
msgstr "longueur min. de segment %d hors limites, forcée à : %d"
-#: util/atsa.c:2147
+#: util/atsa.c:2157
#, c-format
msgid "min. gap length %d out of bounds, forced to: %d"
msgstr "longueur de blanc min. %d hors limites, forcée à : %d"
-#: util/atsa.c:2153
+#: util/atsa.c:2163
#, c-format
msgid ""
"SMR threshold %f out of bounds, should be >= 0.0 and < %f dB SPL, forced to "
@@ -11228,7 +11080,7 @@ msgstr ""
"seuil de SMR %f hors limites, doit être >= 0.0 et < %f dB SPL, forcé à la "
"valeur par défaut : %f"
-#: util/atsa.c:2164
+#: util/atsa.c:2174
#, c-format
msgid ""
"min. seg. SMR %f out of bounds, should be >= %f and < %f dB SPL, forced to "
@@ -11237,7 +11089,7 @@ msgstr ""
"SMR min. de seg. %f hors limites, doit être >= %f et < %f dB SPL, forcé à la "
"valeur par défaut : %f"
-#: util/atsa.c:2172
+#: util/atsa.c:2182
#, c-format
msgid ""
"last peak contribution %f out of bounds, should be >= 0.0 and <= 1.0, forced "
@@ -11246,7 +11098,7 @@ msgstr ""
"contribution du dernier pic %f hors limites, doit être >= 0.0 et <= 1.0, "
"forcé à la valeur par défaut : %f"
-#: util/atsa.c:2180
+#: util/atsa.c:2190
#, c-format
msgid ""
"SMR contribution %f out of bounds, should be >= 0.0 and <= 1.0, forced to "
@@ -11255,39 +11107,39 @@ msgstr ""
"contribution du SMR %f hors limites, doit être >= 0.0 et <= 1.0, forcé à la "
"valeur par défaut : %f"
-#: util/atsa.c:2325
+#: util/atsa.c:2335
msgid "Initializing ATS data..."
msgstr "Initialisation des données ATS..."
-#: util/atsa.c:2355
+#: util/atsa.c:2365
msgid "Computing residual..."
msgstr "Calcul des résiduels..."
-#: util/atsa.c:2366
+#: util/atsa.c:2381 util/atsa.c:2384
msgid "Analysing residual..."
msgstr "Analyse des résiduels..."
-#: util/atsa.c:2370
+#: util/atsa.c:2389
msgid "tracking completed.\n"
msgstr "pistage complet.\n"
-#: util/atsa.c:2478
+#: util/atsa.c:2497
msgid "Filling sound gaps..."
msgstr "Remplissage des blancs..."
-#: util/atsa.c:2566
+#: util/atsa.c:2585
msgid "Trimming short partials..."
msgstr "Elimination des partiels courts..."
-#: util/atsa.c:2662
+#: util/atsa.c:2681
msgid "Computing averages..."
msgstr "Calcul des moyennes..."
-#: util/atsa.c:2713
+#: util/atsa.c:2732
msgid "No partials to track -- stopping\n"
msgstr "Aucun partiel à pister -- arrêt\n"
-#: util/atsa.c:2813
+#: util/atsa.c:2832
msgid "Soundfile analysis for ATS opcodes"
msgstr "Analyse du fichier son pour les opcodes ATS"
@@ -11319,8 +11171,8 @@ msgstr "option non reconnue"
msgid "illegal number of filenames"
msgstr "nombre illégal de fichiers"
-#: util/cvanal.c:113 util/dnoise.c:456 util/lpanal.c:518 util/pvanal.c:258
-#: util/srconv.c:351
+#: util/cvanal.c:113 util/dnoise.c:445 util/lpanal.c:518 util/pvanal.c:258
+#: util/srconv.c:350
#, c-format
msgid "error while opening %s"
msgstr "erreur en ouvrant %s"
@@ -11362,258 +11214,258 @@ msgstr "moins de son que ce qui était attendu !\n"
msgid "Soundfile analysis for convolve"
msgstr "Analyse du fichier son pour convolve"
-#: util/dnoise.c:285
+#: util/dnoise.c:281
msgid "-o cannot be stdin\n"
msgstr "-o ne peut pas être stdin\n"
-#: util/dnoise.c:297
+#: util/dnoise.c:293
msgid "-A overriding local default WAV out"
msgstr "-A prend le pas sur la sortie WAV par défaut"
-#: util/dnoise.c:302
+#: util/dnoise.c:298
msgid "-J overriding local default AIFF/WAV out"
msgstr "-J prend le pas sur la sortie AIFF/WAV par défaut"
-#: util/dnoise.c:309
+#: util/dnoise.c:305
msgid "-W overriding local default AIFF out"
msgstr "-W prend le pas sur la sortie AIFF par défaut"
-#: util/dnoise.c:356
+#: util/dnoise.c:345
msgid "no t argument"
msgstr "pas d'argument t"
-#: util/dnoise.c:379
+#: util/dnoise.c:368
msgid "no n argument"
msgstr "pas d'argument n"
-#: util/dnoise.c:384
+#: util/dnoise.c:373
msgid "no b argument"
msgstr "pas d'argument b"
-#: util/dnoise.c:392
+#: util/dnoise.c:381
msgid "no B argument"
msgstr "pas d'argument B"
-#: util/dnoise.c:404
+#: util/dnoise.c:393
msgid "no E argument"
msgstr "pas d'argument E"
-#: util/dnoise.c:408
+#: util/dnoise.c:397
msgid "no N argument"
msgstr "pas d'argument N"
-#: util/dnoise.c:412
+#: util/dnoise.c:401
msgid "no M argument"
msgstr "pas d'argument M"
-#: util/dnoise.c:416
+#: util/dnoise.c:405
msgid "no L argument"
msgstr "pas d'argument L"
-#: util/dnoise.c:420
+#: util/dnoise.c:409
msgid "no w argument"
msgstr "pas d'argument w"
-#: util/dnoise.c:424
+#: util/dnoise.c:413
msgid "no D argument"
msgstr "pas d'argument D"
-#: util/dnoise.c:431 util/srconv.c:328
+#: util/dnoise.c:420 util/srconv.c:327
#, c-format
msgid "Looking at %c\n"
msgstr "Examen de %c\n"
-#: util/dnoise.c:438 util/srconv.c:336
+#: util/dnoise.c:427 util/srconv.c:335
#, c-format
msgid "Infile set to %s\n"
msgstr "Infile fixé à %s\n"
-#: util/dnoise.c:441 util/srconv.c:339
+#: util/dnoise.c:430 util/srconv.c:338
#, c-format
msgid "End with %s\n"
msgstr "Se termine par %s\n"
-#: util/dnoise.c:447
+#: util/dnoise.c:436
msgid "dnoise: no input file\n"
msgstr "dnoise : pas de nom de fichier d'entrée\n"
-#: util/dnoise.c:451
+#: util/dnoise.c:440
msgid "Must have an example noise file (-i name)\n"
msgstr "Il faut un fichier d'exemple de bruit (-i name)\n"
-#: util/dnoise.c:479
+#: util/dnoise.c:468
#, c-format
msgid "cannot open %s.\n"
msgstr "impossible d'ouvrir %s.\n"
-#: util/dnoise.c:491 util/srconv.c:461 util/srconv.c:473
+#: util/dnoise.c:480 util/srconv.c:460 util/srconv.c:472
#, c-format
msgid "cannot open %s."
msgstr "impossible d'ouvrir %s"
-#: util/dnoise.c:510
+#: util/dnoise.c:499
msgid "dnoise: input MUST be mono or stereo\n"
msgstr "dnoise : l'entrée DOIT être mono ou stéréo\n"
-#: util/dnoise.c:518
+#: util/dnoise.c:507
msgid "dnoise: cannot open noise reference file\n"
msgstr "dnoise : impossible d'ouvrir le fichier de référence du bruit\n"
-#: util/dnoise.c:523
+#: util/dnoise.c:512
msgid "Incompatible sample rates\n"
msgstr "Taux d'échantillonnage incompatibles\n"
-#: util/dnoise.c:542
+#: util/dnoise.c:531
#, c-format
msgid "dnoise: warning - N not a valid power of two; revised N = %d\n"
msgstr ""
"dnoise : avertissement - N n'est pas une puissance de deux ; valeur corrigée "
"N = %d\n"
-#: util/dnoise.c:552
+#: util/dnoise.c:541
msgid "dnoise: warning - do not specify both M and W\n"
msgstr "dnoise : avertissement - ne pas spécifier à la fois M et W\n"
-#: util/dnoise.c:562
+#: util/dnoise.c:551
msgid "dnoise: warning - invalid W ignored\n"
msgstr "dnoise : avertissement - W invalide, ignoré\n"
-#: util/dnoise.c:576
+#: util/dnoise.c:565
msgid "dnoise: warning - M is too small\n"
msgstr "dnoise : avertissement - M est trop petit\n"
-#: util/dnoise.c:586
+#: util/dnoise.c:575
msgid "dnoise: M too large\n"
msgstr "dnoise : M trop grand\n"
-#: util/dnoise.c:592
+#: util/dnoise.c:581
msgid "dnoise: L too large\n"
msgstr "dnoise : L trop grand\n"
-#: util/dnoise.c:602
+#: util/dnoise.c:591
#, c-format
msgid "writing %u-byte blks of %s to %s"
msgstr "écriture de blocs de %2$s de %1$u octets vers %3$s"
-#: util/dnoise.c:627 util/dnoise.c:666 util/dnoise.c:721 util/dnoise.c:732
-#: util/dnoise.c:736 util/dnoise.c:743 util/dnoise.c:753 util/dnoise.c:758
-#: util/dnoise.c:762 util/dnoise.c:766 util/dnoise.c:770
+#: util/dnoise.c:616 util/dnoise.c:655 util/dnoise.c:710 util/dnoise.c:721
+#: util/dnoise.c:725 util/dnoise.c:732 util/dnoise.c:742 util/dnoise.c:747
+#: util/dnoise.c:751 util/dnoise.c:755 util/dnoise.c:759
msgid "dnoise: insufficient memory\n"
msgstr "dnoise : mémoire insuffisante\n"
-#: util/dnoise.c:779 util/dnoise.c:788
+#: util/dnoise.c:768 util/dnoise.c:777
msgid "dnoise: begin time is greater than EOF of noise file!"
msgstr "dnoise : la date de début est supérieure au EOF du fichier de bruit !"
-#: util/dnoise.c:820
+#: util/dnoise.c:809
msgid "dnoise: not enough samples of noise reference\n"
msgstr "dnoise : pas assez d'échantillons de bruit de référence\n"
-#: util/dnoise.c:1118
+#: util/dnoise.c:1103
#, c-format
msgid "%5.1f seconds of input complete\n"
msgstr "%5.1f secondes en entrée\n"
-#: util/dnoise.c:1137
+#: util/dnoise.c:1122
msgid "processing complete\n"
msgstr "traitement achevé\n"
-#: util/dnoise.c:1147
+#: util/dnoise.c:1132
msgid "usage: dnoise [flags] input_file"
msgstr "utilisation : dnoise [options] fichier d'entrée"
-#: util/dnoise.c:1149
+#: util/dnoise.c:1134
msgid "flags:"
msgstr "options :"
-#: util/dnoise.c:1150
+#: util/dnoise.c:1135
msgid "i = noise reference soundfile"
msgstr "i = fichier son du bruit de référence"
-#: util/dnoise.c:1151
+#: util/dnoise.c:1136
msgid "o = output file"
msgstr "o = fichier de sortie"
-#: util/dnoise.c:1152
+#: util/dnoise.c:1137
msgid "N = # of bandpass filters (1024)"
msgstr "N = nombre de filtres passe-bande (1024)"
-#: util/dnoise.c:1153
+#: util/dnoise.c:1138
msgid "w = filter overlap factor: {0,1,(2),3} DON'T USE -w AND -M"
msgstr ""
"w = facteur de chevauchement de filtre : {0, 1, (2), 3} NE PAS UTILISER -w "
"ET -M"
-#: util/dnoise.c:1154
+#: util/dnoise.c:1139
msgid "M = analysis window length (N-1 unless -w is specified)"
msgstr ""
"M = longueur de la fenêtre d'analyse (N-1 à moins que -w ne soit spécifié)"
-#: util/dnoise.c:1155
+#: util/dnoise.c:1140
msgid "L = synthesis window length (M)"
msgstr "L = longueur de la fenêtre de synthèse (M)"
-#: util/dnoise.c:1156
+#: util/dnoise.c:1141
msgid "D = decimation factor (M/8)"
msgstr "D = facteur de décimation (M/8)"
-#: util/dnoise.c:1157
+#: util/dnoise.c:1142
msgid "b = begin time in noise reference soundfile (0)"
msgstr "b = date de début dans le fichier son du bruit de référence (0)"
-#: util/dnoise.c:1158
+#: util/dnoise.c:1143
msgid "B = starting sample in noise reference soundfile (0)"
msgstr ""
"B = échantillon de départ dans le fichier son du bruit de référence (0)"
-#: util/dnoise.c:1159
+#: util/dnoise.c:1144
msgid "e = end time in noise reference soundfile (end)"
msgstr "e = date de fin dans le fichier son du bruit de référence (fin)"
-#: util/dnoise.c:1160
+#: util/dnoise.c:1145
msgid "E = final sample in noise reference soundfile (end)"
msgstr "E = échantillon de fin dans le fichier son du bruit de référence (fin)"
-#: util/dnoise.c:1161
+#: util/dnoise.c:1146
msgid "t = threshold above noise reference in dB (30)"
msgstr "t = seuil au-dessus du bruit de référence en dB (30)"
-#: util/dnoise.c:1162
+#: util/dnoise.c:1147
msgid "S = sharpness of noise-gate turnoff (1) (1 to 5)"
msgstr "S = raideur de la coupure du noise-gate (1) (1 Ã 5)"
-#: util/dnoise.c:1163
+#: util/dnoise.c:1148
msgid "n = number of FFT frames to average over (5)"
msgstr "n = nombre de trames de TFR Ã moyenner (5)"
-#: util/dnoise.c:1164
+#: util/dnoise.c:1149
msgid "m = minimum gain of noise-gate when off in dB (-40)"
msgstr "m = gain minimum du noise-gate pour la fermeture, en dB (-40)"
-#: util/dnoise.c:1165
+#: util/dnoise.c:1150
msgid "V : verbose - print status info"
msgstr "V : commenté - affichage de l'info d'état"
-#: util/dnoise.c:1166
+#: util/dnoise.c:1151
msgid "A : AIFF format output"
msgstr "A : format de sortie AIFF"
-#: util/dnoise.c:1167
+#: util/dnoise.c:1152
msgid "W : WAV format output"
msgstr "W : format de sortie WAV"
-#: util/dnoise.c:1168
+#: util/dnoise.c:1153
msgid "J : IRCAM format output"
msgstr "J : format de sortie IRCAM"
-#: util/dnoise.c:1187
+#: util/dnoise.c:1172
#, c-format
msgid "soundfile write returned sample count of %d, not %d\n"
msgstr ""
"l'écriture du fichier son a retourné un nombre d'échantillons de %d, au lieu "
"de %d\n"
-#: util/dnoise.c:1189
+#: util/dnoise.c:1174
msgid ""
"(disk may be full...\n"
" closing the file ...)\n"
@@ -11621,7 +11473,7 @@ msgstr ""
"(le disque est peut-être plein...\n"
" fermeture du fichier ...)\n"
-#: util/dnoise.c:1257
+#: util/dnoise.c:1242
msgid "Removes noise from a sound file"
msgstr "Nettoie le bruit d'un fichier son"
@@ -11629,7 +11481,7 @@ msgstr "Nettoie le bruit d'un fichier son"
msgid "Usage:\tenvext [-flags] soundfile\n"
msgstr "Utilisation : \tenvext [-options] fichierson\n"
-#: util/envext.c:54 util/srconv.c:738
+#: util/envext.c:54 util/srconv.c:737
msgid "-o fnam\tsound output filename\n"
msgstr "-o nomfic\tnom du fichier son de sortie\n"
@@ -11663,7 +11515,7 @@ msgstr "%s : erreur en ouvrant %s"
msgid "enveloping %ld sample frames (%3.1f secs)\n"
msgstr "mise en enveloppe de %ld trames d'échantillon (%3.1f secs)\n"
-#: util/envext.c:179
+#: util/envext.c:177
msgid "Create a text file of envelope"
msgstr "Création d'un fichier texte d'une enveloppe"
@@ -12098,7 +11950,7 @@ msgstr "Utilisation :\tmixer [-options] fichierson [-options] fichierson ..."
msgid "Legal flags are:"
msgstr "Les options légales sont :"
-#: util/mixer.c:107 util/scale.c:60 util/srconv.c:753
+#: util/mixer.c:107 util/scale.c:60 util/srconv.c:752
msgid "-H#\tprint a heartbeat style 1, 2 or 3 at each soundfile write"
msgstr ""
"-H#\taffiche une pulsation de style 1, 2 ou 3 à chaque écriture dans le "
@@ -12141,7 +11993,7 @@ msgstr "options par défaut : mixer -s -otest -F 1.0 -S 0"
msgid "mixer: error: "
msgstr "mixer : erreur : "
-#: util/mixer.c:188 util/scale.c:161 util/srconv.c:232
+#: util/mixer.c:188 util/scale.c:161 util/srconv.c:231
#, c-format
msgid "%s not a recognized SFOUTYP env setting"
msgstr "%s n'est pas un réglage d'env SFOUTYP reconnu"
@@ -12286,7 +12138,7 @@ msgid "pvanal cannot have both -w and -h"
msgstr "pvanal ne peut pas avoir en même temps -w et -h"
#: util/pvanal.c:279
-#, fuzzy, c-format
+#, c-format
msgid "WARNING: pvanal: %d might be a bad window overlap index\n"
msgstr "pvanal : %d est un mauvais index de chevauchement de fenêtres\n"
@@ -12373,17 +12225,17 @@ msgstr "pvanal erreur : %s\n"
msgid "Soundfile analysis for pvoc"
msgstr "Analyse du fichier son pour pvoc"
-#: util/pvanal.c:469
+#: util/pvanal.c:467
#, c-format
msgid "pvxanal: unable to create analysis file: %s"
msgstr "pvxanal : impossible de créer le fichier d'analyse : %s"
-#: util/pvanal.c:500 util/pvanal.c:532
+#: util/pvanal.c:498 util/pvanal.c:530
#, c-format
msgid "pvxanal: error writing analysis frames: %s\n"
msgstr "pvxanal : erreur en écrivant les trames d'analyse : %s\n"
-#: util/pvanal.c:542
+#: util/pvanal.c:540
#, c-format
msgid ""
"\n"
@@ -12483,7 +12335,7 @@ msgid "-P fpnum\tscale file to given percentage of full"
msgstr ""
"-P fpnum\tpondère le fichier au pourcentage de la valeur maximale donné"
-#: util/scale.c:62 util/srconv.c:755
+#: util/scale.c:62 util/srconv.c:754
msgid "-- fnam\tlog output to file"
msgstr "-- nomfic\tcompte-rendu en sortie dans le fichier"
@@ -12636,60 +12488,60 @@ msgstr "Affichage de l'information sur des fichiers son"
msgid "Sound format -%c has been overruled by -%c"
msgstr "Le format son -%c a été remplacé par -%c"
-#: util/srconv.c:299
+#: util/srconv.c:298
msgid "No Q argument"
msgstr "Pas d'argument Q"
-#: util/srconv.c:304
+#: util/srconv.c:303
msgid "No P argument"
msgstr "Pas d'argument P"
-#: util/srconv.c:313
+#: util/srconv.c:312
msgid "No r argument"
msgstr "Pas d'argument r"
-#: util/srconv.c:322
+#: util/srconv.c:321
msgid "No break file"
msgstr "Pas de fichier de segments"
-#: util/srconv.c:345
+#: util/srconv.c:344
msgid "No input given\n"
msgstr "Aucune entrée n'a été fournie\n"
-#: util/srconv.c:362
+#: util/srconv.c:361
msgid "srconv: cannot specify both -r and -P"
msgstr "srconv : impossible de spécifier -r et -P en même temps"
-#: util/srconv.c:373
+#: util/srconv.c:372
msgid "srconv: cannot open time-vary function file"
msgstr ""
"srconv : impossible d'ouvrir le fichier de la fonction de variation "
"temporelle"
-#: util/srconv.c:389
+#: util/srconv.c:388
msgid "srconv: too few x-y pairs in time-vary function file"
msgstr ""
"srconv : trop peu de paires x-y dans le fichier de la fonction de variation "
"temporelle"
-#: util/srconv.c:403
+#: util/srconv.c:402
msgid "srconv: first x value in time-vary function must be 0"
msgstr ""
"srconv : la première valeur de x dans la fonction de variation temporelle "
"doit être 0"
-#: util/srconv.c:408
+#: util/srconv.c:407
msgid "srconv: invalid initial y value in time-vary function"
msgstr ""
"srconv : valeur initiale de y non valide dans la fonction de variation "
"temporelle"
-#: util/srconv.c:413 util/srconv.c:705
+#: util/srconv.c:412 util/srconv.c:704
msgid "srconv: invalid x values in time-vary function"
msgstr ""
"srconv : valeurs de x non valides dans la fonction de variation temporelle"
-#: util/srconv.c:732
+#: util/srconv.c:731
msgid ""
"usage: srconv [flags] infile\n"
"\n"
@@ -12699,26 +12551,26 @@ msgstr ""
"\n"
"options : "
-#: util/srconv.c:733
+#: util/srconv.c:732
msgid ""
"-P num\tpitch transposition ratio (srate/r) [do not specify both P and r]"
msgstr ""
"-P num\trapport de transposition de hauteur (srate/r) [ne pas spécifier à la "
"fois P et r]"
-#: util/srconv.c:735
+#: util/srconv.c:734
msgid "-Q num\tquality factor (1 to 8: default = 2)"
msgstr "-Q num\tfacteur de qualité (1 à 8 : par défaut = 2)"
-#: util/srconv.c:736
+#: util/srconv.c:735
msgid "-i filnam\tbreak file"
msgstr "-i nomfic\tfichier de segments"
-#: util/srconv.c:737
+#: util/srconv.c:736
msgid "-r num\toutput sample rate (must be specified)"
msgstr "r num\ttaux d'échantillonnage en sortie (doit être spécifié)"
-#: util/srconv.c:821
+#: util/srconv.c:820
msgid "Sample rate conversion"
msgstr "Conversion du taux d'échantillonnage"
@@ -12870,6 +12722,344 @@ msgstr "extraction depuis la trame d'échantillon %ld (%3.1f secs)\n"
msgid "Extract part of a sound file"
msgstr "Extraction d'une partie d'un fichier son"
+#~ msgid "tableseg: not initialized"
+#~ msgstr "tableseg : non initialisé"
+
+#~ msgid "tablexseg: not initialized"
+#~ msgstr "tablexseg : non initialisé"
+
+#~ msgid "vdelayk: not initialized"
+#~ msgstr "vdelayk : non initialisé"
+
+#~ msgid "tab_i off end"
+#~ msgstr "tab_i hors-limite"
+
+#~ msgid " line %d: %s"
+#~ msgstr " ligne %d : %s"
+
+#~ msgid "Includes nested too deeply"
+#~ msgstr "Imbrication des boucles trop profonde"
+
+#~ msgid "Line %d: Unknown character: '%c'(%2x)\n"
+#~ msgstr "Ligne %d : Caractère inconnu : '%c'(%2x)\n"
+
+#~ msgid "Cannot open file \"%s\"\n"
+#~ msgstr "Impossible d'ouvrir le fichier \"%s\"\n"
+
+#~ msgid "No number following instr\n"
+#~ msgstr "Aucun numéro ne suit instr\n"
+
+#~ msgid "cannot find end of file %s"
+#~ msgstr "impossible de trouver la fin du fichier %s"
+
+#~ msgid "ftell error on %s"
+#~ msgstr "erreur ftell sur %s"
+
+#~ msgid " included from line %d of file input %s%s"
+#~ msgstr " inclus depuis la ligne %d du fichier en entrée %s%s"
+
+#~ msgid " called from line %d of file input %s%s"
+#~ msgstr " appelé depuis la ligne %d du fichier en entrée %s%s"
+
+#~ msgid " in line %d of file input %s%s"
+#~ msgstr " dans la ligne %d du fichier en entrée %s%s"
+
+#~ msgid "ungetscochar(): buffer overflow"
+#~ msgstr "ungetscochar(): dépassement de tampon"
+
+#~ msgid "Loop cannot start inside of a macro"
+#~ msgstr "Une boucle ne peut pas commencer à l'intérieure d'une macro"
+
+#~ msgid "Repeat cannot start inside of a macro (ignored)"
+#~ msgstr ""
+#~ "Une répétition ne peut pas commencer à l'intérieur d'une macro (ignorée)"
+
+#~ msgid "Ignoring name %s not in file\n"
+#~ msgstr "Nom %s ignoré, pas dans le fichier\n"
+
+#~ msgid "cannot open input file %s"
+#~ msgstr "impossible d'ouvrir le fichier en entrée %s"
+
+#~ msgid "rtaudio: AuHAL module enabled\n"
+#~ msgstr "rtaudio : module AuHAL activé\n"
+
+#~ msgid ""
+#~ "Invalid snapshot. Perhaps you modified orchestra widget code after you "
+#~ "saved the snapshot bank."
+#~ msgstr ""
+#~ "Instantané non valide. Peut-être avez-vous modifié le code d'un widget de "
+#~ "l'orchestre après avoir sauvegardé la banque d'instantanés."
+
+#~ msgid "No name for FLbutbank"
+#~ msgstr "Pas de nom pour FLbutbank"
+
+#~ msgid "FLsetsnap: invalid table"
+#~ msgstr "FLsetsnap : table non valide"
+
+#~ msgid ""
+#~ "Saving could overwrite the old file.\n"
+#~ "Are you sure to save ?"
+#~ msgstr ""
+#~ "La sauvegarde écrasera l'ancien fichier.\n"
+#~ " Etes-vous sûr ?"
+
+#~ msgid ""
+#~ "Saving could overwrite the old file.\n"
+#~ "Are you sure you want to save ?"
+#~ msgstr ""
+#~ "La sauvegarde écrasera l'ancien fichier\n"
+#~ "Etes-vous certain de vouloir sauvegarder ?"
+
+#~ msgid "No"
+#~ msgstr "Non"
+
+#~ msgid "Yes"
+#~ msgstr "Oui"
+
+#~ msgid "FLsavesnap: cannot open file"
+#~ msgstr "FLsavesnap : impossible d'ouvrir le fichier"
+
+#~ msgid "FLloadsnap: cannot open file"
+#~ msgstr "FLloadsnap : impossible d'ouvrir le fichier"
+
+#~ msgid ""
+#~ "unmatched widget, probably due to a modified orchestra. Modifying an "
+#~ "orchestra makes it incompatible with old snapshot files"
+#~ msgstr ""
+#~ "widget non apparié, probablement à cause d'une modification de "
+#~ "l'orchestre.La modification d'un orchestre le rend incompatible avec les "
+#~ "anciens fichiers d'instantanés"
+
+#~ msgid "end of widget thread\n"
+#~ msgstr "fin du thread de widget\n"
+
+#~ msgid "FLrun was already called"
+#~ msgstr "FLrun a déjà été appelé"
+
+#~ msgid "FL_run: memory allocation failure"
+#~ msgstr "FL_run : échec de l'allocation mémoire"
+
+#~ msgid "Error: Unable to fork process\n"
+#~ msgstr "Erreur : Impossible de lancer le processus\n"
+
+#~ msgid "FLpanel_end: invalid stack pointer: verify its placement"
+#~ msgstr "FLpanel_end : pointeur de pile non valide : vérifier sa position"
+
+#~ msgid ""
+#~ "FLpanel_end: invalid stack count: verify FLpanel/FLpanel_end count and "
+#~ "placement"
+#~ msgstr ""
+#~ "FLpanel_end : compte de la pile non valide : vérifier le nombre de "
+#~ "FLpanel/FLpanel_end et leurs positions"
+
+#~ msgid "FLscroll_end: invalid stack pointer: verify its placement"
+#~ msgstr "FLscroll_end : pointeur de pile non valide : vérifier sa position"
+
+#~ msgid ""
+#~ "FLscroll_end: invalid stack count: verify FLscroll/FLscroll_end count and "
+#~ "placement"
+#~ msgstr ""
+#~ "FLscroll_end : compte de la pile non valide : vérifier le nombre de "
+#~ "FLscroll/FLscroll_end et leurs positions"
+
+#~ msgid ""
+#~ "FLtabs_end: invalid stack count: verify FLtabs/FLtabs_end count and "
+#~ "placement"
+#~ msgstr ""
+#~ "FLtabs_end : pointeur de pile non valide : vérifier le nombre de FLtabs/"
+#~ "FLtabs_end et leurs positions"
+
+#~ msgid "FLgroup_end: invalid stack pointer: verify its placement"
+#~ msgstr "FLgroup_end : pointeur de pile non valide : vérifier sa position"
+
+#~ msgid ""
+#~ "FLgroup_end: invalid stack count: verify FLgroup/FLgroup_end count and "
+#~ "placement"
+#~ msgstr ""
+#~ "FLgroup_end : compte de la pile non valide : verifier le nombre de "
+#~ "FLgroup/FLgroup_end et leurs positions"
+
+#~ msgid "FLpack_end: invalid stack pointer: verify its placement"
+#~ msgstr "FLpack_end : pointeur de pile non valide : vérifier sa position"
+
+#~ msgid ""
+#~ "FLpack_end: invalid stack count: verify FLpack/FLpack_end count and "
+#~ "placement"
+#~ msgstr ""
+#~ "FLpack_end : compte de la pile non valide : vérifier le nombre de FLpack/"
+#~ "FLpack_end et leurs positions"
+
+#~ msgid "FLvalue cannot be set by FLsetVal.\n"
+#~ msgstr "FLvalue ne peut pas être rempli par FLsetVal.\n"
+
+#~ msgid "(fl_setWidgetValuei): not fully implemented yet; exp=%d"
+#~ msgstr "(fl_setWidgetValuei) : pas encore totalement implémenté ; exp=%d"
+
+#~ msgid "FLvalue cannot be set by FLsetVal\n"
+#~ msgstr "FLvalue ne peut pas être rempli par FLsetVal\n"
+
+#~ msgid "(fl_setWidgetValue_set): not fully implemented yet; exp=%d"
+#~ msgstr "(fl_setWidgetValue_set) : pas encore totalement implémenté ; exp=%d"
+
+#~ msgid "FLslider exponential, using non-labeled slider"
+#~ msgstr "FLslider exponentiel, utilisation d'une réglette sans étiquette"
+
+#~ msgid "FLslider: invalid slider type"
+#~ msgstr "FLslider : type de réglette non valide"
+
+#~ msgid "FLslider: zero is illegal in exponential operations"
+#~ msgstr "FLslider : zéro est interdit dans les opérations exponentielles"
+
+#~ msgid "invalid ZAK space allocation"
+#~ msgstr "espace d'allocation ZAK non valide"
+
+#~ msgid "FLslidBnk: zero is illegal in exponential operations"
+#~ msgstr "FLslidBnk : zéro est interdit dans les opérations exponentielles"
+
+#~ msgid "FLjoy X axe: zero is illegal in exponential operations"
+#~ msgstr "FLjoy axe X : zéro est interdit dans les opérations exponentielles"
+
+#~ msgid "FLknob: invalid knob type"
+#~ msgstr "FLknob : type de bouton rotatif non valide"
+
+#~ msgid "FLknob: zero is illegal in exponential operations"
+#~ msgstr "FLknob : zéro est interdit dans les opérations exponentielles"
+
+#~ msgid "FLbutton \"%s\" ignoring snapshot capture retrieve"
+#~ msgstr "FLbutton \"%s\" ignore les instantanés de capture et de restitution"
+
+#~ msgid "FLbutton: invalid button type"
+#~ msgstr "FLbutton : type de bouton non valide"
+
+#~ msgid "FLcloseButton: invalid stack pointer: verify its placement"
+#~ msgstr "FLcloseButton : pointeur de pile non valide : vérifier sa position"
+
+#~ msgid "Command Found: %s\n"
+#~ msgstr "Commande trouvée : %s\n"
+
+#~ msgid "FLbuttonBank: invalid button type"
+#~ msgstr "FLbuttonBank : type de bouton non valide"
+
+#~ msgid "FLcount \"%s\" ignoring snapshot capture retrieve"
+#~ msgstr "FLcount \"%s\" ignore les instantanés de capture et de restitution"
+
+#~ msgid "FLroller: invalid roller type"
+#~ msgstr "FLroller : type de molette non valide"
+
+#~ msgid "FLhvsBox: a square area must be delimited by 2 lines at least"
+#~ msgstr ""
+#~ "FLhvsBox : une surface carrée doit être délimitée par au moins 2 lignes"
+
+#~ msgid "FLkeyIn: invalid table number"
+#~ msgstr "FLkeyIn : numéro de table non valide"
+
+#~ msgid "FLkeyIn: table too short!"
+#~ msgstr "FLkeyIn : table trop courte !"
+
+#~ msgid "FLvslidBnk: zero is illegal in exponential operations"
+#~ msgstr "FLvslidBnk : zéro est illégal dans les opérations exponentielles"
+
+#~ msgid "FLsliderBank: zero is illegal in exponential operations"
+#~ msgstr "FLsliderBank : zéro est illégal dans les opérations exponentielles"
+
+#~ msgid "FLslidBnk2: FLslider exponential, using non-labeled slider"
+#~ msgstr ""
+#~ "FLslidBnk2 : FLslider exponentiel, utilisant une réglette sans étiquette"
+
+#~ msgid "FLsldBnkSet: invalid table number"
+#~ msgstr "FLsldBnkSet : numéro de table non valide"
+
+#~ msgid "FLslidBnkSet: table too short!"
+#~ msgstr "FLslidBnkSet : table trop courte !"
+
+#~ msgid "FLsldBnkSet: invalid outable number"
+#~ msgstr "FLsldBnkSet : numéro de outable non valide"
+
+#~ msgid "FLslidBnkSet: too many sliders to reset!"
+#~ msgstr "FLslidBnkSet : trop de réglettes à réinitialiser !"
+
+#~ msgid "FLslidBnkSet: function mapping not available"
+#~ msgstr "FLslidBnkSet : type de fonction (lin. ou exp.) non disponible"
+
+#~ msgid ""
+#~ "FLslidBnk2Setk: value out of range: function mapping requires a 0 to 1 "
+#~ "range for input"
+#~ msgstr ""
+#~ "FLslidBnk2Setk : valeur hors limites : le mappage de fonction nécessite "
+#~ "en entrée l'intervalle de 0 à 1"
+
+#~ msgid "FLsldBnkSetk: invalid table number"
+#~ msgstr "FLslidBnkSetk : numéro de table non valide"
+
+#~ msgid "FLslidBnkSetk: table too short!"
+#~ msgstr "FLslidBnkSetk : table trop courte !"
+
+#~ msgid "FLsldBnkSetk: invalid outable number"
+#~ msgstr "FLslidBnkSetk : numéro de outable non valide"
+
+#~ msgid "FLslidBnkSetk: too many sliders to reset!"
+#~ msgstr "FLslidBnkSetk : trop de réglettes à réinitialiser !"
+
+#~ msgid "FLslidBnkSetk: invalid table number"
+#~ msgstr "FLslidBnkSetk : numéro de table non valide"
+
+#~ msgid "FLslidBnkSetk: invalid outable number"
+#~ msgstr "FLslidBnkSetk : numéro de outable non valide"
+
+#~ msgid "FLxyin: none of X limits can be zero in exponential mode!"
+#~ msgstr ""
+#~ "FLxyin : aucune des limites de X ne peut être zéro en mode exponentiel !"
+
+#~ msgid "FLxyin: none of Y limits can be zero in exponential mode!"
+#~ msgstr ""
+#~ "FLxyin : aucune des limites de Y ne peut être zéro en mode exponentiel !"
+
+#~ msgid ""
+#~ "\n"
+#~ "Orchestra sampling rate is not compatible with HRTF data files\n"
+#~ "Should be %.0f, see Csound help for object\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Le taux d'évhantillonnage de l'orchestre n'est pas compatible avec les "
+#~ "fichiers de données HRTF.\n"
+#~ "Il devrait valoir %.0f, voir l'aide de Csound à ce sujet\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "\n"
+#~ "\n"
+#~ " Sampling rate not supported, exiting\n"
+#~ "\n"
+#~ msgstr ""
+#~ "\n"
+#~ "\n"
+#~ "\n"
+#~ " Taux d'échantillonnage non supporté, abandon\n"
+#~ "\n"
+
+#~ msgid ""
+#~ "Orchestra sampling rate is not compatible with HRTF data files\n"
+#~ "Should be %.0f, see Csound help for object\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Le taux d'échantillonnage de l'orchestre n'est pas compatible avec les "
+#~ "fichiers de données HRTF.\n"
+#~ "Il devrait valoir %.0f, voir l'aide de Csound à ce sujet\n"
+#~ "\n"
+
+#~ msgid "scorename: %s\n"
+#~ msgstr "nom de la partition : %s\n"
+
+#~ msgid "Failed to create %s"
+#~ msgstr "La création de %s a échoué"
+
+#~ msgid "The buffersize must be <= %d samples to fit in a udp-packet."
+#~ msgstr ""
+#~ "La taille du tampon doit être <= %d échantillons pour entrer dans un "
+#~ "paquet udp."
+
#~ msgid "csound_orcerror on line %d: %s\n"
#~ msgstr "csound_orcerror ligne %d : %s\n"
diff --git a/po/german.po b/po/german.po
index 191da50..ba4ea95 100644
--- a/po/german.po
+++ b/po/german.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: CSOUND 5.xx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-07-26 19:39+0100\n"
-"PO-Revision-Date: 2008-09-07 15:24+0100\n"
+"PO-Revision-Date: 2011-12-20 23:56+0000\n"
"Last-Translator: JPff\n"
"Language-Team: German\n"
"Language: \n"
@@ -31,22 +31,22 @@ msgstr ""
msgid "auxlist for instr %d (%p):\n"
msgstr ""
-#: Engine/auxfd.c:153
+#: Engine/auxfd.c:154
#, c-format
msgid "\tauxch at %p: size %ld, auxp %p, endp %p\n"
msgstr ""
-#: Engine/auxfd.c:165
+#: Engine/auxfd.c:166
#, c-format
msgid "fdlist for instr %s [%d] (%p):"
msgstr ""
-#: Engine/auxfd.c:168
+#: Engine/auxfd.c:169
#, c-format
msgid "fdlist for instr %d (%p):"
msgstr ""
-#: Engine/auxfd.c:171
+#: Engine/auxfd.c:172
#, c-format
msgid " fd %p in %p"
msgstr ""
@@ -99,359 +99,319 @@ msgstr ""
msgid "(unknown error)"
msgstr ""
-#: Engine/csound_orc_compile.c:214 Engine/rdorch.c:1832
+#: Engine/csound_orc_compile.c:138
+#, c-format
+msgid ""
+"input arg %d '%s' of type %s not allowed when expecting %c (for opcode %s), "
+"line %d\n"
+msgstr ""
+
+#: Engine/csound_orc_compile.c:265 Engine/rdorch.c:1862
msgid "missing or extra arg"
msgstr ""
-#: Engine/csound_orc_compile.c:218
+#: Engine/csound_orc_compile.c:269
#, fuzzy
msgid "too many input args\n"
-msgstr "zu viele Argumente"
+msgstr "zu viele Argumente\n"
-#: Engine/csound_orc_compile.c:475
+#: Engine/csound_orc_compile.c:304
#, c-format
-msgid "create_opcode: No rule to handle statement of type %d\n"
+msgid "input arg '%s' used before defined (in opcode %s), line %d\n"
msgstr ""
-#: Engine/csound_orc_compile.c:671
+#: Engine/csound_orc_compile.c:380
#, c-format
-msgid "create_instrument: instr num %ld\n"
+msgid ""
+"output name previously used, type '%c' must be uniquely defined, line %d"
msgstr ""
-#: Engine/csound_orc_compile.c:681
+#: Engine/csound_orc_compile.c:386
#, c-format
-msgid "create_instrument: instr name %s\n"
+msgid "output arg '%s' illegal type (for opcode %s), line %d\n"
msgstr ""
-#: Engine/csound_orc_compile.c:688 Engine/otran.c:351
-msgid "invalid name for instrument"
-msgstr "unzulässiger Name für Instrument"
-
-#: Engine/csound_orc_compile.c:692 Engine/otran.c:356
+#: Engine/csound_orc_compile.c:541
#, c-format
-msgid "instr %s redefined"
+msgid "create_opcode: No rule to handle statement of type %d\n"
msgstr ""
-#: Engine/csound_orc_compile.c:833 Engine/otran.c:145 Engine/symbtab.c:394
+#: Engine/csound_orc_compile.c:738
#, c-format
-msgid "invalid input type for opcode %s"
+msgid "create_instrument: instr num %ld\n"
msgstr ""
-#: Engine/csound_orc_compile.c:838 Engine/otran.c:150 Engine/symbtab.c:399
+#: Engine/csound_orc_compile.c:748
#, c-format
-msgid "too many input args for opcode %s"
+msgid "create_instrument: instr name %s\n"
msgstr ""
-#: Engine/csound_orc_compile.c:853 Engine/otran.c:165 Engine/symbtab.c:414
-#, c-format
-msgid "too many output args for opcode %s"
-msgstr ""
+#: Engine/csound_orc_compile.c:755 Engine/otran.c:364
+msgid "invalid name for instrument"
+msgstr "unzulässiger Name für Instrument"
-#: Engine/csound_orc_compile.c:869 Engine/otran.c:187 Engine/symbtab.c:433
+#: Engine/csound_orc_compile.c:759 Engine/otran.c:370
#, c-format
-msgid "invalid output type for opcode %s"
+msgid "instr %s redefined"
msgstr ""
-#: Engine/csound_orc_compile.c:954 Engine/otran.c:339
+#: Engine/csound_orc_compile.c:903 Engine/otran.c:352
#, c-format
msgid "instr %ld redefined"
msgstr ""
-#: Engine/csound_orc_compile.c:964
+#: Engine/csound_orc_compile.c:914
msgid "!!! csound->opcodeInfo is NULL !!!\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1111
+#: Engine/csound_orc_compile.c:1083
#, c-format
msgid "Unknown TREE node of type %d found in root.\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1168 Engine/otran.c:565 Engine/otran.c:1414
+#: Engine/csound_orc_compile.c:1140 Engine/otran.c:579 Engine/otran.c:1433
#, c-format
msgid "%s invalid sample rate"
msgstr ""
-#: Engine/csound_orc_compile.c:1170 Engine/otran.c:567 Engine/otran.c:1416
+#: Engine/csound_orc_compile.c:1142 Engine/otran.c:581 Engine/otran.c:1435
#, c-format
msgid "%s invalid control rate"
msgstr ""
-#: Engine/csound_orc_compile.c:1173 Engine/otran.c:570 Engine/otran.c:1412
+#: Engine/csound_orc_compile.c:1146 Engine/otran.c:584 Engine/otran.c:1431
#, c-format
msgid "%s invalid ksmps value"
msgstr ""
-#: Engine/csound_orc_compile.c:1176 Engine/otran.c:572 Engine/otran.c:1418
+#: Engine/csound_orc_compile.c:1149 Engine/otran.c:587 Engine/otran.c:1437
#, c-format
msgid "%s inconsistent sr, kr, ksmps"
msgstr ""
-#: Engine/csound_orc_compile.c:1190
+#: Engine/csound_orc_compile.c:1165
msgid "perf-pass statements illegal in header blk\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1195
+#: Engine/csound_orc_compile.c:1170
#, c-format
msgid "%d syntax errors in orchestra. compilation invalid\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1255 Engine/otran.c:656
+#: Engine/csound_orc_compile.c:1230 Engine/otran.c:671
msgid "inconsistent argoff sumcount"
msgstr ""
-#: Engine/csound_orc_compile.c:1327 Engine/otran.c:725
+#: Engine/csound_orc_compile.c:1302 Engine/otran.c:740
#, c-format
msgid "LABELS list is full...extending to %d\n"
msgstr "LABELS Liste ist volles... Verlängern bis %d\n"
-#: Engine/csound_orc_compile.c:1365 Engine/otran.c:763
+#: Engine/csound_orc_compile.c:1340 Engine/otran.c:778
#, c-format
msgid "GOTOS list is full..extending to %d\n"
msgstr "GOTOS Liste ist volles...Verlängern bis %d\n"
-#: Engine/csound_orc_compile.c:1398 Engine/otran.c:796
+#: Engine/csound_orc_compile.c:1373 Engine/otran.c:811
#, c-format
msgid "target label '%s' not found"
msgstr ""
-#: Engine/csound_orc_compile.c:1463 Engine/otran.c:851
+#: Engine/csound_orc_compile.c:1451 Engine/otran.c:866
#, c-format
msgid "string syntax '%s'"
msgstr ""
-#: Engine/csound_orc_compile.c:1513 Engine/otran.c:901
+#: Engine/csound_orc_compile.c:1501 Engine/otran.c:916
#, c-format
msgid "numeric syntax '%s'"
msgstr ""
-#: Engine/csound_orc_compile.c:1539 Engine/otran.c:927
+#: Engine/csound_orc_compile.c:1527 Engine/otran.c:942
#, c-format
msgid "extending Floating pool to %d\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1578 Engine/otran.c:999
+#: Engine/csound_orc_compile.c:1566 Engine/otran.c:1018
msgid "gblnamset(): memory allocation failure"
msgstr ""
-#: Engine/csound_orc_compile.c:1606 Engine/otran.c:1027
+#: Engine/csound_orc_compile.c:1594 Engine/otran.c:1046
msgid "lclnamset(): memory allocation failure"
msgstr ""
-#: Engine/csound_orc_compile.c:1632 Engine/otran.c:1052
+#: Engine/csound_orc_compile.c:1620 Engine/otran.c:1071
msgid "unexpected global name"
msgstr "unerwarteter globaler Name"
-#: Engine/csound_orc_compile.c:1655 Engine/otran.c:1074
+#: Engine/csound_orc_compile.c:1643 Engine/otran.c:1093
msgid "unknown nametype"
msgstr ""
-#: Engine/csound_orc.l:239
+#: Engine/csound_orc_expressions.c:459
#, c-format
-msgid "unterminated string found on line %d >>%s<<\n"
+msgid "error: function %s with arg type %c not found, line %d \n"
msgstr ""
-#: Engine/csound_orc.l:259 Engine/csound_orc.l:286 Engine/csound_orc.l:314
-#: Engine/csound_orc.l:367 Engine/rdorch.c:901 Engine/sread.c:396
+#: Engine/csound_orc_expressions.c:862
#, c-format
-msgid "Undefined macro: '%s'"
-msgstr ""
-
-#: Engine/csound_orc.l:265 Engine/csound_orc.l:292
-msgid "Includes nested too deeply"
+msgid "error: non-existent statement in conditional, line %d \n"
msgstr ""
-#: Engine/csound_orc.l:335 Engine/csound_orc.l:388 Engine/rdorch.c:940
-#, c-format
+#: Engine/csound_orc_semantics.c:157
+#, fuzzy, c-format
msgid ""
-"Missing argument terminator\n"
-"%.98s"
-msgstr ""
-
-#: Engine/csound_orc.l:484
-#, c-format
-msgid "Line %d: Unknown character: '%c'(%2x)\n"
-msgstr ""
-
-#: Engine/csound_orc.l:527
-#, c-format
-msgid "Cannot open file \"%s\"\n"
-msgstr ""
-
-#: Engine/csound_orc.l:573 Engine/rdorch.c:689 Engine/sread.c:1595
-msgid "macro error\n"
-msgstr ""
-
-#: Engine/csound_orc.l:631 Engine/rdorch.c:845 Engine/sread.c:1686
-#, c-format
-msgid "macro %s undefined\n"
-msgstr ""
-
-#: Engine/csound_orc.l:645 Engine/rdorch.c:859 Engine/sread.c:294
-msgid "Undefining undefined macro"
+"\n"
+"error: %s (token \"%s\")"
msgstr ""
-#: Engine/csound_orc.l:786 Engine/rdorch.c:413 Engine/sread.c:741
+#: Engine/csound_orc_semantics.c:159
#, c-format
-msgid "Macro definition for %*s\n"
-msgstr ""
-
-#: Engine/csound_orc.l:789 Engine/rdorch.c:416
-msgid "Invalid macro name for --omacro"
-msgstr ""
-
-#: Engine/csound_orc.y:270
-msgid "No number following instr\n"
+msgid ""
+" line %d:\n"
+">>>"
msgstr ""
-#: Engine/csound_orc_semantics.c:127
+#: Engine/csound_orc_semantics.c:732
#, fuzzy, c-format
-msgid "error: %s (token \"%s\")"
-msgstr "%s: Störung: %s (%s)\n"
-
-#: Engine/csound_orc_semantics.c:129
-#, c-format
-msgid " line %d: %s"
-msgstr ""
-
-#: Engine/csound_orc_semantics.c:702 Engine/rdorch.c:1863
-msgid "insufficient required arguments"
+msgid "insufficient required arguments for opcode %s on line %d\n"
msgstr ""
-#: Engine/csound_orc_semantics.c:768 Engine/rdorch.c:1617 Engine/rdorch.c:1635
-#: Engine/rdorch.c:1676 Engine/rdorch.c:1811 Engine/rdorch.c:1980
+#: Engine/csound_orc_semantics.c:797 Engine/rdorch.c:1644 Engine/rdorch.c:1662
+#: Engine/rdorch.c:1703 Engine/rdorch.c:1841 Engine/rdorch.c:2011
#, c-format
msgid "modified opcod: %s"
msgstr ""
-#: Engine/cs_par_dispatch.c:113 Engine/cs_par_dispatch.c:125
+#: Engine/cs_par_dispatch.c:115 Engine/cs_par_dispatch.c:128
#, c-format
msgid "Poorly specified global lock index: %i [max: %i]\n"
msgstr ""
-#: Engine/cs_par_dispatch.c:138 Engine/cs_par_dispatch.c:157
+#: Engine/cs_par_dispatch.c:142 Engine/cs_par_dispatch.c:162
msgid "Invalid NULL parameter name for a global variable\n"
msgstr ""
-#: Engine/cs_par_dispatch.c:505 Engine/cs_par_dispatch.c:528
-#: Engine/cs_par_dispatch.c:2463 Engine/cs_par_dispatch.c:2507
-#: Engine/cs_par_dispatch.c:2509 Engine/cs_par_dispatch.c:2570
+#: Engine/cs_par_dispatch.c:526 Engine/cs_par_dispatch.c:553
+#: Engine/cs_par_dispatch.c:2543 Engine/cs_par_dispatch.c:2588
+#: Engine/cs_par_dispatch.c:2590 Engine/cs_par_dispatch.c:2654
msgid "Invalid NULL Parameter entry"
msgstr ""
-#: Engine/cs_par_dispatch.c:507 Engine/cs_par_dispatch.c:541
-#: Engine/cs_par_dispatch.c:566 Engine/cs_par_dispatch.c:605
+#: Engine/cs_par_dispatch.c:528 Engine/cs_par_dispatch.c:567
+#: Engine/cs_par_dispatch.c:594 Engine/cs_par_dispatch.c:635
msgid "Invalid NULL Parameter name"
msgstr ""
-#: Engine/cs_par_dispatch.c:512
+#: Engine/cs_par_dispatch.c:535
msgid "Failed to allocate Opcode Weight cache entry"
msgstr ""
-#: Engine/cs_par_dispatch.c:632 Engine/cs_par_dispatch.c:718
+#: Engine/cs_par_dispatch.c:664 Engine/cs_par_dispatch.c:755
msgid "No Weights to Dump (Using Defaults)\n"
msgstr ""
-#: Engine/cs_par_dispatch.c:670 Engine/cs_par_dispatch.c:794
+#: Engine/cs_par_dispatch.c:705 Engine/cs_par_dispatch.c:835
#, c-format
msgid "Opcode Weight Spec File not found at: %s"
msgstr ""
-#: Engine/cs_par_dispatch.c:722
+#: Engine/cs_par_dispatch.c:759
msgid "Weights Dump\n"
msgstr ""
-#: Engine/cs_par_dispatch.c:866
+#: Engine/cs_par_dispatch.c:907
#, c-format
msgid "Parallel Spec File not found at: %s"
msgstr ""
-#: Engine/cs_par_dispatch.c:872
+#: Engine/cs_par_dispatch.c:913
msgid "Parallel Spec File invalid format expected weight_min parameter"
msgstr ""
-#: Engine/cs_par_dispatch.c:877
+#: Engine/cs_par_dispatch.c:918
msgid "Parallel Spec File invalid format expected weight_max parameter"
msgstr ""
-#: Engine/cs_par_dispatch.c:881
+#: Engine/cs_par_dispatch.c:922
msgid "Parallel Spec File invalid format expected roots_avail_min parameter"
msgstr ""
-#: Engine/cs_par_dispatch.c:885
+#: Engine/cs_par_dispatch.c:926
msgid "Parallel Spec File invalid format expected roots_avail_max parameter"
msgstr ""
-#: Engine/cs_par_dispatch.c:961 Engine/cs_par_dispatch.c:985
-#: Engine/cs_par_dispatch.c:1109 Engine/cs_par_dispatch.c:1195
-#: Engine/cs_par_dispatch.c:1332 Engine/cs_par_dispatch.c:1366
-#: Engine/cs_par_dispatch.c:1383 Engine/cs_par_dispatch.c:1405
-#: Engine/cs_par_dispatch.c:1432 Engine/cs_par_dispatch.c:1452
-#: Engine/cs_par_dispatch.c:1476 Engine/cs_par_dispatch.c:1566
-#: Engine/cs_par_dispatch.c:1621 Engine/cs_par_dispatch.c:1714
-#: Engine/cs_par_dispatch.c:1769 Engine/cs_par_dispatch.c:2597
+#: Engine/cs_par_dispatch.c:1003 Engine/cs_par_dispatch.c:1027
+#: Engine/cs_par_dispatch.c:1155 Engine/cs_par_dispatch.c:1251
+#: Engine/cs_par_dispatch.c:1405 Engine/cs_par_dispatch.c:1439
+#: Engine/cs_par_dispatch.c:1456 Engine/cs_par_dispatch.c:1478
+#: Engine/cs_par_dispatch.c:1506 Engine/cs_par_dispatch.c:1528
+#: Engine/cs_par_dispatch.c:1552 Engine/cs_par_dispatch.c:1644
+#: Engine/cs_par_dispatch.c:1699 Engine/cs_par_dispatch.c:1792
+#: Engine/cs_par_dispatch.c:1847 Engine/cs_par_dispatch.c:2681
msgid "Invalid NULL Parameter dag"
msgstr ""
-#: Engine/cs_par_dispatch.c:966
+#: Engine/cs_par_dispatch.c:1008
msgid "Failed to allocate dag"
msgstr ""
-#: Engine/cs_par_dispatch.c:1017 Engine/cs_par_dispatch.c:1040
-#: Engine/cs_par_dispatch.c:1062 Engine/cs_par_dispatch.c:1064
+#: Engine/cs_par_dispatch.c:1060 Engine/cs_par_dispatch.c:1083
+#: Engine/cs_par_dispatch.c:1105 Engine/cs_par_dispatch.c:1107
msgid "Invalid NULL Parameter dag_node"
msgstr ""
-#: Engine/cs_par_dispatch.c:1019
+#: Engine/cs_par_dispatch.c:1062
#, fuzzy
msgid "Invalid NULL Parameter instr"
msgstr "unzulässiger Name für Instrument"
-#: Engine/cs_par_dispatch.c:1021
+#: Engine/cs_par_dispatch.c:1064
msgid "Invalid NULL Parameter insds"
msgstr ""
-#: Engine/cs_par_dispatch.c:1026 Engine/cs_par_dispatch.c:1048
+#: Engine/cs_par_dispatch.c:1069 Engine/cs_par_dispatch.c:1091
msgid "Failed to allocate dag_node"
msgstr ""
-#: Engine/cs_par_dispatch.c:1043
+#: Engine/cs_par_dispatch.c:1086
#, fuzzy
msgid "Invalid Parameter count must be greater than 0"
-msgstr "granule_set: iratio müssen grösseres dann 0 sein"
+msgstr ""
-#: Engine/cs_par_dispatch.c:1175 Engine/cs_par_dispatch.c:1433
-#: Engine/cs_par_dispatch.c:2465 Engine/cs_par_dispatch.c:2571
-#: Engine/cs_par_dispatch.c:2598
+#: Engine/cs_par_dispatch.c:1229 Engine/cs_par_dispatch.c:1508
+#: Engine/cs_par_dispatch.c:2545 Engine/cs_par_dispatch.c:2655
+#: Engine/cs_par_dispatch.c:2682
msgid "Invalid NULL Parameter chain"
msgstr ""
-#: Engine/cs_par_dispatch.c:1183
+#: Engine/cs_par_dispatch.c:1237
#, c-format
msgid "Failed to find semantic information for instrument '%i'"
msgstr ""
-#: Engine/cs_par_dispatch.c:1478
+#: Engine/cs_par_dispatch.c:1554
msgid "Invalid NULL Parameter node"
msgstr ""
-#: Engine/cs_par_dispatch.c:1480
+#: Engine/cs_par_dispatch.c:1556
msgid "Invalid NULL Parameter update_hdl"
msgstr ""
-#: Engine/cs_par_dispatch.c:1569
+#: Engine/cs_par_dispatch.c:1647
msgid "Invalid Parameter update_hdl is outside the DAG range"
msgstr ""
-#: Engine/cs_par_dispatch.c:2417
+#: Engine/cs_par_dispatch.c:2497
#, c-format
msgid "Parallel Dump File not found at: %s for writing"
msgstr ""
-#: Engine/cs_par_dispatch.c:2477
+#: Engine/cs_par_dispatch.c:2557
msgid "Failed to allocate Dag2 cache entry"
msgstr ""
-#: Engine/cs_par_dispatch.c:2527
+#: Engine/cs_par_dispatch.c:2610
msgid "Cache Update\n"
msgstr ""
@@ -465,12 +425,12 @@ msgstr ""
msgid "Creating search path cache for '%s':"
msgstr ""
-#: Engine/envvar.c:1082
+#: Engine/envvar.c:1083
#, c-format
msgid "internal error: csoundFileOpen(): invalid type: %d"
msgstr ""
-#: Engine/envvar.c:1264
+#: Engine/envvar.c:1266
#, c-format
msgid "internal error: csoundCreateFileHandle(): invalid type: %d"
msgstr ""
@@ -528,345 +488,346 @@ msgstr ""
msgid "expression syntax"
msgstr ""
-#: Engine/fgens.c:95
+#: Engine/fgens.c:91
msgid "unknown GEN number"
msgstr ""
-#: Engine/fgens.c:137
+#: Engine/fgens.c:133
msgid "ftable does not exist"
msgstr ""
-#: Engine/fgens.c:142
+#: Engine/fgens.c:138
#, c-format
msgid "ftable %d now deleted\n"
msgstr ""
-#: Engine/fgens.c:157 Engine/fgens.c:1597 Engine/fgens.c:1683
-#: Engine/fgens.c:1762 Engine/fgens.c:1878 Engine/fgens.c:1959
-#: Engine/fgens.c:2867
+#: Engine/fgens.c:153 Engine/fgens.c:1593 Engine/fgens.c:1679
+#: Engine/fgens.c:1758 Engine/fgens.c:1874 Engine/fgens.c:1955
+#: Engine/fgens.c:2909
msgid "insufficient gen arguments"
msgstr ""
-#: Engine/fgens.c:183 Opcodes/ftgen.c:116
+#: Engine/fgens.c:179 Opcodes/ftgen.c:116
#, c-format
msgid "Named gen \"%s\" not defined"
msgstr ""
-#: Engine/fgens.c:190
+#: Engine/fgens.c:186
msgid "illegal gen number"
msgstr ""
-#: Engine/fgens.c:198
-msgid "deferred size for GENs 1, 23 or 28 only"
+#: Engine/fgens.c:194
+msgid "deferred size for GENs 1, 23, 28 or 49 only"
msgstr ""
-#: Engine/fgens.c:201 Engine/fgens.c:249
+#: Engine/fgens.c:197 Engine/fgens.c:245
#, c-format
msgid "ftable %d:\n"
msgstr ""
-#: Engine/fgens.c:226 Engine/fgens.c:233
+#: Engine/fgens.c:222 Engine/fgens.c:229
msgid "illegal table length"
msgstr "ungültige Tabelle Länge"
-#: Engine/fgens.c:292 Engine/fgens.c:2219
+#: Engine/fgens.c:288 Engine/fgens.c:2215
#, c-format
msgid ""
"ftable %d relocating due to size change\n"
" currently active instruments may find this disturbing"
msgstr ""
-#: Engine/fgens.c:350 Engine/fgens.c:471 Engine/fgens.c:555 Engine/fgens.c:636
-#: Engine/fgens.c:711 Engine/fgens.c:760 Engine/fgens.c:881 Engine/fgens.c:958
-#: Engine/fgens.c:1053 Engine/fgens.c:1097 Engine/fgens.c:1144
-#: Engine/fgens.c:1397 Engine/fgens.c:1459 Engine/fgens.c:1681
-#: Engine/fgens.c:1759 Engine/fgens.c:2114 Engine/fgens.c:2821
-#: Engine/fgens.c:2864
+#: Engine/fgens.c:346 Engine/fgens.c:467 Engine/fgens.c:551 Engine/fgens.c:632
+#: Engine/fgens.c:707 Engine/fgens.c:756 Engine/fgens.c:877 Engine/fgens.c:954
+#: Engine/fgens.c:1049 Engine/fgens.c:1093 Engine/fgens.c:1140
+#: Engine/fgens.c:1393 Engine/fgens.c:1455 Engine/fgens.c:1677
+#: Engine/fgens.c:1755 Engine/fgens.c:2110 Engine/fgens.c:2863
+#: Engine/fgens.c:2906
msgid "using extended arguments\n"
msgstr ""
-#: Engine/fgens.c:374
+#: Engine/fgens.c:370
msgid "no coefs present"
msgstr ""
-#: Engine/fgens.c:379 Engine/fgens.c:645 Engine/fgens.c:653
+#: Engine/fgens.c:375 Engine/fgens.c:641 Engine/fgens.c:649
msgid "illegal x interval"
msgstr ""
-#: Engine/fgens.c:408 Engine/fgens.c:557 Engine/fgens.c:638 Engine/fgens.c:883
-#: Engine/fgens.c:1354 Engine/fgens.c:2378 Engine/fgens.c:2694 Top/main.c:142
-#: util/cvanal.c:66 util/lpanal.c:398 util/pvanal.c:170
+#: Engine/fgens.c:404 Engine/fgens.c:553 Engine/fgens.c:634 Engine/fgens.c:879
+#: Engine/fgens.c:1350 Engine/fgens.c:2375 Engine/fgens.c:2690
+#: Engine/fgens.c:2810 Top/main.c:141 util/cvanal.c:66 util/lpanal.c:398
+#: util/pvanal.c:170
msgid "insufficient arguments"
msgstr "unzulängliche Argumente"
-#: Engine/fgens.c:412 Engine/fgens.c:1359
+#: Engine/fgens.c:408 Engine/fgens.c:1355
msgid "unknown srctable number"
msgstr ""
-#: Engine/fgens.c:425
+#: Engine/fgens.c:421
msgid "table size too large"
msgstr ""
-#: Engine/fgens.c:510 Engine/fgens.c:543
+#: Engine/fgens.c:506 Engine/fgens.c:539
msgid "gen call has negative segment size:"
msgstr ""
-#: Engine/fgens.c:512
+#: Engine/fgens.c:508
msgid "illegal input vals for gen call, beginning:"
msgstr ""
-#: Engine/fgens.c:578
+#: Engine/fgens.c:574
msgid "negative segsiz"
msgstr ""
-#: Engine/fgens.c:787
+#: Engine/fgens.c:783
msgid "nh partials < 1"
msgstr ""
-#: Engine/fgens.c:886
+#: Engine/fgens.c:882
msgid "illegal xint value"
msgstr ""
-#: Engine/fgens.c:889
+#: Engine/fgens.c:885
msgid "illegal xamp value"
msgstr ""
-#: Engine/fgens.c:961
+#: Engine/fgens.c:957
msgid "uneven number of args"
msgstr ""
-#: Engine/fgens.c:1081
+#: Engine/fgens.c:1077
msgid "gen call has illegal x-ordinate values:"
msgstr ""
-#: Engine/fgens.c:1099
+#: Engine/fgens.c:1095
msgid "wrong number of args"
msgstr ""
-#: Engine/fgens.c:1113
+#: Engine/fgens.c:1109
msgid "a range given exceeds table length"
msgstr ""
-#: Engine/fgens.c:1120
+#: Engine/fgens.c:1116
msgid "an input function does not exist"
msgstr ""
-#: Engine/fgens.c:1253
+#: Engine/fgens.c:1249
msgid "No such window!"
msgstr ""
-#: Engine/fgens.c:1271
+#: Engine/fgens.c:1267
msgid "Wrong number of input arguments"
msgstr "Falsche Zahl der Eingang Argumente"
-#: Engine/fgens.c:1272
+#: Engine/fgens.c:1268
msgid "unknown distribution"
msgstr "unbekannte Verteilung"
-#: Engine/fgens.c:1321
+#: Engine/fgens.c:1317
msgid "error opening ASCII file"
msgstr "Störung Ãffnung ASCII Akte"
-#: Engine/fgens.c:1327
+#: Engine/fgens.c:1323
#, c-format
msgid "%ld elements in %s\n"
msgstr ""
-#: Engine/fgens.c:1338
+#: Engine/fgens.c:1334
msgid "Numbers after table full in GEN23"
msgstr ""
-#: Engine/fgens.c:1367
+#: Engine/fgens.c:1363
msgid "table size must be the same of source table"
msgstr ""
-#: Engine/fgens.c:1439 Engine/fgens.c:1499
+#: Engine/fgens.c:1435 Engine/fgens.c:1495
msgid "x coordinates must all be in increasing order:"
msgstr "alle Koordinaten x müssen in zunehmendem Auftrag sein"
-#: Engine/fgens.c:1442 Engine/fgens.c:1501
+#: Engine/fgens.c:1438 Engine/fgens.c:1497
msgid "x coordinate greater than function size:"
msgstr ""
-#: Engine/fgens.c:1446
+#: Engine/fgens.c:1442
msgid "illegal input val (y <= 0) for gen call, beginning:"
msgstr ""
-#: Engine/fgens.c:1519
+#: Engine/fgens.c:1515
msgid "GEN28 requires zero table length"
msgstr ""
-#: Engine/fgens.c:1581
+#: Engine/fgens.c:1577
msgid "could not open space file"
msgstr ""
-#: Engine/fgens.c:1583
+#: Engine/fgens.c:1579
msgid "Time values must be in increasing order"
msgstr "Zeitwerte müssen in zunehmendem Auftrag sein"
-#: Engine/fgens.c:1604
+#: Engine/fgens.c:1600
msgid "GEN30: source ftable not found"
msgstr ""
-#: Engine/fgens.c:1687
+#: Engine/fgens.c:1683
msgid "GEN31: source ftable not found"
msgstr ""
-#: Engine/fgens.c:1795
+#: Engine/fgens.c:1791
#, c-format
msgid "GEN32: source ftable %d not found"
msgstr ""
-#: Engine/fgens.c:1889
+#: Engine/fgens.c:1885
msgid "GEN33: source ftable not found"
msgstr ""
-#: Engine/fgens.c:2057
+#: Engine/fgens.c:2053
msgid "unknown source table number"
msgstr "unbekannte Quelltabelle Zahl"
-#: Engine/fgens.c:2089
+#: Engine/fgens.c:2085
msgid "Gen41: negative probability not allowed"
msgstr ""
-#: Engine/fgens.c:2155 Opcodes/fareygen.c:70
+#: Engine/fgens.c:2151 Opcodes/fareygen.c:70
#, c-format
msgid "ftable %d: "
msgstr ""
-#: Engine/fgens.c:2199
+#: Engine/fgens.c:2195
#, c-format
msgid "ftable %d:"
msgstr ""
-#: Engine/fgens.c:2214
+#: Engine/fgens.c:2210
#, c-format
msgid "replacing previous ftable %d"
msgstr "Ersetzen vorhergehendes ftable %d"
-#: Engine/fgens.c:2250 Engine/fgens.c:2337 Engine/fgens.c:2361
-#: Opcodes/gab/gab.c:578 Opcodes/gab/gab.c:632 Opcodes/midiops2.c:218
+#: Engine/fgens.c:2246 Engine/fgens.c:2334 Engine/fgens.c:2358
+#: Opcodes/gab/gab.c:580 Opcodes/gab/gab.c:634 Opcodes/midiops2.c:218
#: Opcodes/midiops2.c:370 Opcodes/midiops2.c:452 Opcodes/uggab.c:1317
#: Opcodes/uggab.c:1344 Opcodes/uggab.c:1364 Opcodes/uggab.c:1407
#, c-format
msgid "Invalid ftable no. %f"
msgstr ""
-#: Engine/fgens.c:2255
+#: Engine/fgens.c:2251
#, c-format
msgid "deferred-size ftable %f illegal here"
msgstr ""
-#: Engine/fgens.c:2281
+#: Engine/fgens.c:2278 Engine/fgens.c:2848
#, c-format
msgid "Deferred load of '%s' failed"
msgstr ""
-#: Engine/fgens.c:2343
+#: Engine/fgens.c:2340
#, c-format
msgid "Deferred-size ftable %f load not available at perf time."
msgstr ""
-#: Engine/fgens.c:2402
+#: Engine/fgens.c:2399
#, c-format
msgid "non-deferred ftable %d needs size %d\n"
msgstr ""
-#: Engine/fgens.c:2449 Opcodes/loscilx.c:62
+#: Engine/fgens.c:2446 Opcodes/loscilx.c:64
#, c-format
msgid "invalid sample format: %d"
msgstr ""
-#: Engine/fgens.c:2457 Engine/fgens.c:2718
+#: Engine/fgens.c:2454 Engine/fgens.c:2714
#, c-format
msgid "channel %d illegal"
msgstr "Führung %d ungültig"
-#: Engine/fgens.c:2463
+#: Engine/fgens.c:2460
msgid "deferred alloc\n"
msgstr "aufgeschobene Verteilung\n"
-#: Engine/fgens.c:2471
+#: Engine/fgens.c:2468
msgid "deferred size, but filesize unknown"
msgstr "aufgeschobene GröÃe, aber Akte GröÃe Unbekanntes"
-#: Engine/fgens.c:2474
+#: Engine/fgens.c:2471
#, c-format
msgid " defer length %d\n"
msgstr ""
-#: Engine/fgens.c:2543
+#: Engine/fgens.c:2540
msgid "GEN1: input file truncated by ftable size"
msgstr ""
-#: Engine/fgens.c:2547
+#: Engine/fgens.c:2544
#, c-format
msgid "\tlooping endpoint %d exceeds ftsize %d\n"
msgstr ""
-#: Engine/fgens.c:2569
+#: Engine/fgens.c:2566
msgid "GEN1 read error"
msgstr "GEN1 Lesefehler"
-#: Engine/fgens.c:2574
+#: Engine/fgens.c:2571
msgid "GEN1: aiff file truncated by ftable size"
msgstr ""
-#: Engine/fgens.c:2575
+#: Engine/fgens.c:2572
#, c-format
msgid "\taudio samps %d exceeds ftsize %d"
msgstr ""
-#: Engine/fgens.c:2619
+#: Engine/fgens.c:2616
msgid "wrong number of ftable arguments"
msgstr "falsche Zahl von ftable Argumenten"
-#: Engine/fgens.c:2629 OOps/pstream.c:326
+#: Engine/fgens.c:2626 OOps/pstream.c:326
msgid "Failed to load PVOC-EX file"
msgstr ""
-#: Engine/fgens.c:2640 InOut/midirecv.c:416 OOps/midiops.c:377
+#: Engine/fgens.c:2637 InOut/midirecv.c:416 OOps/midiops.c:377
#: OOps/midiops.c:419 OOps/midiops.c:431
msgid "illegal channel number"
msgstr ""
-#: Engine/fgens.c:2658
+#: Engine/fgens.c:2655
msgid "ftable size too small"
msgstr ""
-#: Engine/fgens.c:2734 Opcodes/mp3in.c:79 Opcodes/mp3in.c:218
+#: Engine/fgens.c:2730 Opcodes/mp3in.c:80 Opcodes/mp3in.c:219
msgid "Not enough memory\n"
msgstr ""
-#: Engine/fgens.c:2831
+#: Engine/fgens.c:2873
msgid "gen51: invalid number of p-fields (too few grades)"
msgstr ""
-#: Engine/fgens.c:2871
+#: Engine/fgens.c:2913
msgid "number of channels inconsistent with number of args"
msgstr ""
-#: Engine/fgens.c:3030
+#: Engine/fgens.c:3072
msgid "GEN53: invalid number of gen arguments"
msgstr ""
-#: Engine/fgens.c:3040
+#: Engine/fgens.c:3082
msgid "GEN53: invalid table length"
msgstr ""
-#: Engine/fgens.c:3044
+#: Engine/fgens.c:3086
msgid "GEN53: invalid source table number"
msgstr ""
-#: Engine/fgens.c:3047
+#: Engine/fgens.c:3089
msgid "GEN53: mode must be in the range 0 to 15"
msgstr ""
-#: Engine/fgens.c:3051
+#: Engine/fgens.c:3093
msgid "GEN53: invalid source table length"
msgstr ""
-#: Engine/fgens.c:3056
+#: Engine/fgens.c:3098
msgid "GEN53: invalid window table"
msgstr ""
@@ -890,31 +851,31 @@ msgstr ""
msgid "Instrument %d muted\n"
msgstr ""
-#: Engine/insert.c:103 Engine/insert.c:1249
+#: Engine/insert.c:103 Engine/insert.c:1301
#, c-format
msgid "instr %s expects midi event data, cannot run from score\n"
msgstr ""
-#: Engine/insert.c:106 Engine/insert.c:1252
+#: Engine/insert.c:106 Engine/insert.c:1304
#, c-format
msgid "instr %d expects midi event data, cannot run from score\n"
msgstr ""
-#: Engine/insert.c:115 Engine/insert.c:279 Engine/insert.c:1234
+#: Engine/insert.c:115 Engine/insert.c:279 Engine/insert.c:1286
#, c-format
msgid "cannot allocate last note because it exceeds 100%% of cpu time"
msgstr ""
-#: Engine/insert.c:121 Engine/insert.c:285 Engine/insert.c:1239
+#: Engine/insert.c:121 Engine/insert.c:285 Engine/insert.c:1291
msgid "cannot allocate last note because it exceeds instr maxalloc"
msgstr ""
-#: Engine/insert.c:137 Engine/insert.c:305 Engine/insert.c:1270
+#: Engine/insert.c:137 Engine/insert.c:305 Engine/insert.c:1322
#, c-format
msgid "new alloc for instr %s:\n"
msgstr ""
-#: Engine/insert.c:139 Engine/insert.c:307 Engine/insert.c:1272
+#: Engine/insert.c:139 Engine/insert.c:307 Engine/insert.c:1324
#, c-format
msgid "new alloc for instr %d:\n"
msgstr ""
@@ -929,12 +890,12 @@ msgstr ""
msgid "instr %d uses %d p-fields but is given %d"
msgstr ""
-#: Engine/insert.c:251 Engine/insert.c:463
+#: Engine/insert.c:251 Engine/insert.c:482
#, c-format
msgid "instr %s now active:\n"
msgstr ""
-#: Engine/insert.c:253 Engine/insert.c:465
+#: Engine/insert.c:253 Engine/insert.c:484
#, c-format
msgid "instr %d now active:\n"
msgstr ""
@@ -954,26 +915,26 @@ msgstr ""
msgid "MIDI note overlaps with key %d on same channel"
msgstr ""
-#: Engine/insert.c:566
+#: Engine/insert.c:585
#, c-format
msgid "removed instance of instr %s\n"
msgstr ""
-#: Engine/insert.c:568
+#: Engine/insert.c:587
#, c-format
msgid "removed instance of instr %d\n"
msgstr ""
-#: Engine/insert.c:691
+#: Engine/insert.c:710
msgid "inactive allocs returned to freespace\n"
msgstr ""
-#: Engine/insert.c:716
+#: Engine/insert.c:735
#, c-format
msgid "could not find playing instr %f\n"
msgstr ""
-#: Engine/insert.c:729
+#: Engine/insert.c:748
msgid ""
"\n"
"INIT ERROR: "
@@ -981,128 +942,128 @@ msgstr ""
"\n"
"INIT STÃRUNG: "
-#: Engine/insert.c:742
+#: Engine/insert.c:761
#, c-format
msgid "INIT ERROR in instr %d (opcode %s): "
msgstr ""
-#: Engine/insert.c:745
+#: Engine/insert.c:764
#, c-format
msgid "INIT ERROR in instr %d (subinstr %d): "
msgstr ""
-#: Engine/insert.c:749
+#: Engine/insert.c:768
#, c-format
msgid "INIT ERROR in instr %d: "
msgstr ""
-#: Engine/insert.c:767
+#: Engine/insert.c:786
msgid ""
"\n"
"PERF ERROR: "
msgstr ""
-#: Engine/insert.c:780
+#: Engine/insert.c:799
#, c-format
msgid "PERF ERROR in instr %d (opcode %s): "
msgstr ""
-#: Engine/insert.c:783
+#: Engine/insert.c:802
#, c-format
msgid "PERF ERROR in instr %d (subinstr %d): "
msgstr ""
-#: Engine/insert.c:787
+#: Engine/insert.c:806
#, c-format
msgid "PERF ERROR in instr %d: "
msgstr ""
-#: Engine/insert.c:792
+#: Engine/insert.c:811
msgid " note aborted\n"
msgstr ""
-#: Engine/insert.c:820
+#: Engine/insert.c:839
msgid "subinstr: number of output args greater than nchnls"
msgstr ""
-#: Engine/insert.c:861
+#: Engine/insert.c:880
msgid "subinstr: too many p-fields"
msgstr ""
-#: Engine/insert.c:920
+#: Engine/insert.c:939
#, c-format
msgid "%s: invalid local ksmps value: %d"
msgstr ""
-#: Engine/insert.c:1040 OOps/bus.c:835 Opcodes/stackops.c:293
+#: Engine/insert.c:1062 OOps/bus.c:835 Opcodes/stackops.c:286
#, c-format
msgid "%s: not initialised"
msgstr "%s: nicht initialisiert"
-#: Engine/insert.c:1169
+#: Engine/insert.c:1221
#, c-format
msgid "setksmps: invalid ksmps value: %d"
msgstr ""
-#: Engine/insert.c:1225
+#: Engine/insert.c:1277
#, c-format
msgid "schedule event ignored. instr %d undefined\n"
msgstr ""
-#: Engine/insert.c:1303
+#: Engine/insert.c:1355
#, c-format
msgid "instr %s pmax = %d, note pcnt = %d"
msgstr ""
-#: Engine/insert.c:1306
+#: Engine/insert.c:1358
#, c-format
msgid "instr %d pmax = %d, note pcnt = %d"
msgstr ""
-#: Engine/insert.c:1314
+#: Engine/insert.c:1366
#, c-format
msgid "psave beg at %p\n"
msgstr ""
-#: Engine/insert.c:1322
+#: Engine/insert.c:1374
#, c-format
msgid " ending at %p\n"
msgstr ""
-#: Engine/insert.c:1466
+#: Engine/insert.c:1518
msgid "subinstr: not initialised"
msgstr "subinstr: nicht initialisiert"
-#: Engine/insert.c:1723
+#: Engine/insert.c:1855
#, c-format
msgid ""
"instr %d allocated at %p\n"
"\tlclbas %p, opds %p\n"
msgstr ""
-#: Engine/insert.c:1740
+#: Engine/insert.c:1872
#, c-format
msgid "op %d (%s) allocated at %p\n"
msgstr ""
-#: Engine/insert.c:1766
+#: Engine/insert.c:1898
msgid "null iopadr"
msgstr ""
-#: Engine/insert.c:1777
+#: Engine/insert.c:1909
msgid "null opadr"
msgstr ""
-#: Engine/insert.c:1834
+#: Engine/insert.c:1966
msgid "inconsistent opds total"
msgstr ""
-#: Engine/insert.c:1879
+#: Engine/insert.c:2011
#, c-format
msgid "Instrument %s is still active"
msgstr ""
-#: Engine/insert.c:1882
+#: Engine/insert.c:2014
#, c-format
msgid "Instrument %d is still active"
msgstr ""
@@ -1136,7 +1097,7 @@ msgstr ""
msgid "multiple string p-fields"
msgstr ""
-#: Engine/linevent.c:273 Engine/rdorch.c:1157
+#: Engine/linevent.c:273 Engine/rdorch.c:1184
msgid "unmatched quotes"
msgstr ""
@@ -1195,27 +1156,27 @@ msgstr ""
msgid "memory allocate failure for %lu"
msgstr ""
-#: Engine/memfiles.c:112
+#: Engine/memfiles.c:113
#, c-format
msgid "cannot load %s\n"
msgstr ""
-#: Engine/memfiles.c:118
+#: Engine/memfiles.c:119
#, c-format
msgid "cannot load %s, or SADIR undefined\n"
msgstr ""
-#: Engine/memfiles.c:130
+#: Engine/memfiles.c:131
#, fuzzy, c-format
msgid "error processing file %s\n"
-msgstr "Störung Ãffnung ASCII Akte"
+msgstr ""
-#: Engine/memfiles.c:136 Engine/memfiles.c:319
+#: Engine/memfiles.c:137 Engine/memfiles.c:320
#, c-format
msgid "file %s (%ld bytes) loaded into memory\n"
msgstr ""
-#: Engine/memfiles.c:199
+#: Engine/memfiles.c:200
msgid ""
"PVOCEX_LoadFile(): error:\n"
" "
@@ -1223,271 +1184,266 @@ msgstr ""
"PVOCEX_LoadFile(): Störung:\n"
" "
-#: Engine/memfiles.c:216
+#: Engine/memfiles.c:217
msgid "Empty or NULL file name"
msgstr ""
-#: Engine/memfiles.c:234
+#: Engine/memfiles.c:235
#, c-format
msgid "unable to open pvocex file %s: %s"
msgstr ""
-#: Engine/memfiles.c:240
+#: Engine/memfiles.c:241
#, c-format
msgid "pvoc-ex file %s is not 32bit floats"
msgstr ""
-#: Engine/memfiles.c:246
+#: Engine/memfiles.c:247
#, c-format
msgid "pvoc-ex file %s not in AMP_FREQ format"
msgstr ""
-#: Engine/memfiles.c:252
+#: Engine/memfiles.c:253
#, c-format
msgid "pvoc-ex file %s is empty!"
msgstr ""
-#: Engine/memfiles.c:282
+#: Engine/memfiles.c:283
#, c-format
msgid "error reading pvoc-ex file %s"
msgstr ""
-#: Engine/memfiles.c:286
+#: Engine/memfiles.c:287
#, c-format
msgid "error reading pvoc-ex file %s after %d frames"
msgstr ""
-#: Engine/memfiles.c:291 Opcodes/pvinterp.c:71 Opcodes/pvinterp.c:174
-#: Opcodes/pvinterp.c:346 Opcodes/ugens9.c:97 Opcodes/vpvoc.c:201
+#: Engine/memfiles.c:292 Opcodes/pvinterp.c:71 Opcodes/pvinterp.c:173
+#: Opcodes/pvinterp.c:344 Opcodes/ugens9.c:97 Opcodes/vpvoc.c:202
#, c-format
msgid "%s's srate = %8.0f, orch's srate = %8.0f"
msgstr ""
-#: Engine/memfiles.c:389
+#: Engine/memfiles.c:390
#, c-format
msgid "csoundLoadSoundFile(): failed to open '%s'"
msgstr ""
-#: Engine/memfiles.c:444
+#: Engine/memfiles.c:445
#, c-format
msgid "csoundLoadSoundFile(): error reading '%s'"
msgstr ""
-#: Engine/memfiles.c:450
+#: Engine/memfiles.c:451
#, c-format
msgid ""
"File '%s' (sr = %d Hz, %d channel(s), %lu sample frames) loaded into memory\n"
msgstr ""
-#: Engine/musmon.c:79
+#: Engine/musmon.c:81
#, c-format
msgid "Elapsed time at %s: real: %.3fs, CPU: %.3fs\n"
msgstr ""
-#: Engine/musmon.c:106
+#: Engine/musmon.c:108
msgid "illegal istartempo value"
msgstr ""
-#: Engine/musmon.c:109
+#: Engine/musmon.c:111
msgid "Beat mode not in force"
msgstr ""
-#: Engine/musmon.c:182 Top/main.c:122
+#: Engine/musmon.c:184 Top/main.c:121
#, c-format
msgid "Csound version %s beta (double samples) %s\n"
msgstr ""
-#: Engine/musmon.c:185 Top/main.c:125
+#: Engine/musmon.c:187 Top/main.c:124
#, c-format
msgid "Csound version %s (double samples) %s\n"
msgstr ""
-#: Engine/musmon.c:190 Top/main.c:114
+#: Engine/musmon.c:192 Top/main.c:113
#, c-format
msgid "Csound version %s beta (float samples) %s\n"
msgstr ""
-#: Engine/musmon.c:193 Top/main.c:117
+#: Engine/musmon.c:195 Top/main.c:116
#, c-format
msgid "Csound version %s (float samples) %s\n"
msgstr ""
-#: Engine/musmon.c:218
+#: Engine/musmon.c:220
msgid "orch now loaded\n"
msgstr ""
-#: Engine/musmon.c:243
+#: Engine/musmon.c:245
msgid "k-period aligned audio buffering\n"
msgstr ""
-#: Engine/musmon.c:259
+#: Engine/musmon.c:261
#, c-format
msgid "audio buffered in %d sample-frame blocks\n"
msgstr ""
-#: Engine/musmon.c:276 Top/main.c:395
-#, c-format
-msgid "cannot reopen %s"
-msgstr ""
-
-#: Engine/musmon.c:287
+#: Engine/musmon.c:283
msgid "using Cscore processing\n"
msgstr ""
-#: Engine/musmon.c:290
+#: Engine/musmon.c:286
msgid "cannot create cscore.out"
msgstr ""
-#: Engine/musmon.c:303
+#: Engine/musmon.c:299
msgid "cannot reopen cscore.out"
msgstr ""
-#: Engine/musmon.c:307 Engine/musmon.c:315
+#: Engine/musmon.c:303
msgid "cannot reopen cscore.srt"
msgstr ""
-#: Engine/musmon.c:309
+#: Engine/musmon.c:305
msgid "sorting cscore.out ..\n"
msgstr ""
-#: Engine/musmon.c:313 Top/main.c:409
+#: Engine/musmon.c:311 Top/main.c:401
msgid "\t... done\n"
msgstr "\t... getan\n"
-#: Engine/musmon.c:317
+#: Engine/musmon.c:312
msgid "playing from cscore.srt\n"
msgstr ""
-#: Engine/musmon.c:321 Engine/musmon.c:453 Engine/musmon.c:1021
-#: Engine/musmon.c:1225
+#: Engine/musmon.c:316 Engine/musmon.c:446 Engine/musmon.c:1015
+#: Engine/musmon.c:1216
#, c-format
msgid "SECTION %d:\n"
msgstr ""
-#: Engine/musmon.c:397
+#: Engine/musmon.c:390
msgid "end of score.\t\t overall amps:"
msgstr ""
-#: Engine/musmon.c:408
+#: Engine/musmon.c:401
msgid ""
"\n"
"\t overall samples out of range:"
msgstr ""
-#: Engine/musmon.c:412
+#: Engine/musmon.c:405
#, c-format
msgid ""
"\n"
"%d errors in performance\n"
msgstr ""
-#: Engine/musmon.c:414
+#: Engine/musmon.c:407
msgid "end of performance"
msgstr ""
-#: Engine/musmon.c:428
+#: Engine/musmon.c:421
msgid "no sound written to disk\n"
msgstr ""
-#: Engine/musmon.c:443
+#: Engine/musmon.c:436
#, c-format
msgid "%c\tbeep!\n"
msgstr ""
-#: Engine/musmon.c:509 Engine/musmon.c:555
+#: Engine/musmon.c:502 Engine/musmon.c:548
msgid "\t number of samples out of range:"
msgstr ""
-#: Engine/musmon.c:548
+#: Engine/musmon.c:541
#, c-format
msgid "end of section %d\t sect peak amps:"
msgstr ""
-#: Engine/musmon.c:550
+#: Engine/musmon.c:543
msgid "end of lplay event list\t peak amps:"
msgstr ""
-#: Engine/musmon.c:614 Engine/musmon.c:639
+#: Engine/musmon.c:607 Engine/musmon.c:632
#, c-format
msgid " - note deleted. instr %s undefined"
msgstr ""
-#: Engine/musmon.c:618
+#: Engine/musmon.c:611
#, c-format
msgid "Setting instrument %s %s\n"
msgstr ""
-#: Engine/musmon.c:619 Engine/musmon.c:632
+#: Engine/musmon.c:612 Engine/musmon.c:625
#: Opcodes/fluidOpcodes/fluidOpcodes.c:207
#: Opcodes/fluidOpcodes/fluidOpcodes.c:208
msgid "off"
msgstr ""
-#: Engine/musmon.c:619 Engine/musmon.c:632
+#: Engine/musmon.c:612 Engine/musmon.c:625
#: Opcodes/fluidOpcodes/fluidOpcodes.c:207
#: Opcodes/fluidOpcodes/fluidOpcodes.c:208
msgid "on"
msgstr ""
-#: Engine/musmon.c:627 Engine/musmon.c:666
+#: Engine/musmon.c:620 Engine/musmon.c:659
#, c-format
msgid " - note deleted. instr %d(%d) undefined"
msgstr ""
-#: Engine/musmon.c:631
+#: Engine/musmon.c:624
#, c-format
msgid "Setting instrument %d %s\n"
msgstr ""
-#: Engine/musmon.c:657
+#: Engine/musmon.c:650
#, c-format
msgid " - note deleted. i%d (%s) had %d init errors"
msgstr ""
-#: Engine/musmon.c:687
+#: Engine/musmon.c:680
#, c-format
msgid " - note deleted. i%d had %d init errors"
msgstr ""
-#: Engine/musmon.c:708
+#: Engine/musmon.c:701
#, c-format
msgid "time advanced %5.3f beats by score request\n"
msgstr ""
-#: Engine/musmon.c:725
+#: Engine/musmon.c:719
#, c-format
msgid "\t\t T%7.3f - note deleted. "
msgstr ""
-#: Engine/musmon.c:729
+#: Engine/musmon.c:723
#, c-format
msgid "instr %s had %d init errors\n"
msgstr ""
-#: Engine/musmon.c:731
+#: Engine/musmon.c:725
#, c-format
msgid "instr %d had %d init errors\n"
msgstr ""
-#: Engine/musmon.c:822
+#: Engine/musmon.c:816
msgid "terminating.\n"
msgstr ""
-#: Engine/musmon.c:908
+#: Engine/musmon.c:902
#, c-format
msgid "error in score. illegal opcode %c (ASCII %d)\n"
msgstr ""
-#: Engine/musmon.c:1135
+#: Engine/musmon.c:1129
msgid "insert_score_event(): invalid instrument number or name\n"
msgstr ""
-#: Engine/musmon.c:1155
+#: Engine/musmon.c:1149
#, c-format
msgid "insert_score_event(): unknown opcode: %c\n"
msgstr ""
-#: Engine/musmon.c:1178
+#: Engine/musmon.c:1172
msgid "insert_score_event(): insufficient p-fields\n"
msgstr ""
@@ -1510,79 +1466,98 @@ msgstr ""
msgid "cannot find the specified instrument or opcode"
msgstr ""
-#: Engine/new_orc_parser.c:74 Engine/rdorch.c:488
+#: Engine/new_orc_parser.c:91
+msgid "Unmatched #ifdef\n"
+msgstr ""
+
+#: Engine/otran.c:149 Engine/symbtab.c:413
#, c-format
-msgid "cannot open orch file %s"
+msgid "invalid input type for opcode %s"
+msgstr ""
+
+#: Engine/otran.c:154 Engine/symbtab.c:418
+#, c-format
+msgid "too many input args for opcode %s"
+msgstr ""
+
+#: Engine/otran.c:169 Engine/symbtab.c:433
+#, c-format
+msgid "too many output args for opcode %s"
+msgstr ""
+
+#: Engine/otran.c:194 Engine/symbtab.c:458
+#, c-format
+msgid "invalid output type for opcode %s"
msgstr ""
-#: Engine/otran.c:312 Engine/otran.c:319
+#: Engine/otran.c:325 Engine/otran.c:332
msgid "missing instrument number or name"
msgstr ""
-#: Engine/otran.c:324
+#: Engine/otran.c:337
msgid "illegal instr number"
msgstr ""
-#: Engine/otran.c:374
+#: Engine/otran.c:388
msgid "No opcode name"
msgstr ""
-#: Engine/otran.c:379 Engine/symbtab.c:501
+#: Engine/otran.c:393 Engine/symbtab.c:538
msgid "invalid name for opcode"
msgstr ""
-#: Engine/otran.c:383
+#: Engine/otran.c:397
#, c-format
msgid ""
"opcode declaration error (usage: opcode name, outtypes, intypes) -- opcode %s"
msgstr ""
-#: Engine/otran.c:394 Engine/symbtab.c:511
+#: Engine/otran.c:408 Engine/symbtab.c:548
#, c-format
msgid "cannot redefine %s"
msgstr ""
-#: Engine/otran.c:398 Engine/symbtab.c:516
+#: Engine/otran.c:412 Engine/symbtab.c:553
#, c-format
msgid "WARNING: redefined opcode: %s\n"
msgstr ""
-#: Engine/otran.c:489
+#: Engine/otran.c:503
msgid "string constant used as output"
msgstr ""
-#: Engine/otran.c:520
+#: Engine/otran.c:534
msgid "Missing endin"
msgstr ""
-#: Engine/otran.c:584
+#: Engine/otran.c:599
msgid "perf-pass statements illegal in header blk"
msgstr ""
-#: Engine/otran.c:588
+#: Engine/otran.c:603
#, c-format
msgid "%d syntax errors in orchestra. compilation invalid"
msgstr ""
-#: Engine/otran.c:1238
+#: Engine/otran.c:1257
msgid "bad value for 0dbfs: must be positive."
msgstr ""
-#: Engine/otran.c:1248
+#: Engine/otran.c:1267
#, c-format
msgid "sample rate overrides: esr = %7.4f, ekr = %7.4f, ksmps = %d\n"
msgstr ""
-#: Engine/otran.c:1320
+#: Engine/otran.c:1339
msgid "internal error: string constant outarg"
msgstr ""
-#: Engine/otran.c:1346
+#: Engine/otran.c:1365
#, c-format
msgid "i%d pset args != pmax"
msgstr ""
-#: Engine/otran.c:1409
+#: Engine/otran.c:1428
#, c-format
msgid ""
"sr = %.7g, kr = %.7g, ksmps = %.7g\n"
@@ -1591,271 +1566,304 @@ msgstr ""
"sr = %.7g, kr = %.7g, ksmps = %.7g\n"
"Störung:"
-#: Engine/otran.c:1442
+#: Engine/otran.c:1461
msgid "header init errors"
msgstr ""
-#: Engine/rdorch.c:166
+#: Engine/rdorch.c:169
msgid "ungetorchar(): buffer overflow"
msgstr ""
-#: Engine/rdorch.c:330
+#: Engine/rdorch.c:348
msgid "Unexpected end of orchestra file"
msgstr ""
-#: Engine/rdorch.c:484
-msgid "orch compiler:\n"
+#: Engine/rdorch.c:431 Engine/sread.c:758
+#, c-format
+msgid "Macro definition for %*s\n"
msgstr ""
-#: Engine/rdorch.c:490
-#, c-format
-msgid "cannot find end of file %s"
+#: Engine/rdorch.c:434
+msgid "Invalid macro name for --omacro"
msgstr ""
-#: Engine/rdorch.c:492
+#: Engine/rdorch.c:502
+msgid "orch compiler:\n"
+msgstr ""
+
+#: Engine/rdorch.c:520
#, c-format
-msgid "ftell error on %s"
+msgid "cannot open orch file %s"
msgstr ""
-#: Engine/rdorch.c:657 Engine/sread.c:1572
+#: Engine/rdorch.c:684 Engine/sread.c:1584
#, c-format
msgid "Macro definition for %s\n"
msgstr ""
-#: Engine/rdorch.c:748
+#: Engine/rdorch.c:716 Engine/sread.c:1607
+msgid "macro error\n"
+msgstr ""
+
+#: Engine/rdorch.c:775
#, c-format
msgid "Cannot open #include'd file %s\n"
msgstr ""
-#: Engine/rdorch.c:797
+#: Engine/rdorch.c:824
msgid "unmatched #ifdef"
msgstr ""
-#: Engine/rdorch.c:808
+#: Engine/rdorch.c:835
msgid "Unmatched #else"
msgstr ""
-#: Engine/rdorch.c:822
+#: Engine/rdorch.c:849
msgid "Unmatched #endif"
msgstr ""
-#: Engine/rdorch.c:875
+#: Engine/rdorch.c:872 Engine/sread.c:1694
+#, c-format
+msgid "macro %s undefined\n"
+msgstr ""
+
+#: Engine/rdorch.c:886 Engine/sread.c:286
+msgid "Undefining undefined macro"
+msgstr ""
+
+#: Engine/rdorch.c:902
msgid "Unexpected # character"
msgstr ""
-#: Engine/rdorch.c:877
+#: Engine/rdorch.c:904
#, c-format
msgid "Unknown # option: '%s'"
msgstr ""
-#: Engine/rdorch.c:903 Engine/sread.c:394
+#: Engine/rdorch.c:928 Engine/sread.c:380
+#, c-format
+msgid "Undefined macro: '%s'"
+msgstr ""
+
+#: Engine/rdorch.c:930 Engine/sread.c:378
msgid "Macro expansion symbol ($) without macro name"
msgstr ""
-#: Engine/rdorch.c:908 Engine/sread.c:400
+#: Engine/rdorch.c:935 Engine/sread.c:384
#, c-format
msgid "$%s matches macro name $%s"
msgstr ""
-#: Engine/rdorch.c:925 Engine/sread.c:417
+#: Engine/rdorch.c:952 Engine/sread.c:401
msgid "Syntax error in macro call"
msgstr ""
-#: Engine/rdorch.c:975
+#: Engine/rdorch.c:967
+#, c-format
+msgid ""
+"Missing argument terminator\n"
+"%.98s"
+msgstr ""
+
+#: Engine/rdorch.c:1002
msgid "Unmatched #ifdef"
msgstr ""
-#: Engine/rdorch.c:977
+#: Engine/rdorch.c:1004
msgid "file too large for ortext space"
msgstr ""
-#: Engine/rdorch.c:984
+#: Engine/rdorch.c:1011
#, c-format
msgid "%d (%d) lines read\n"
msgstr ""
-#: Engine/rdorch.c:1052
+#: Engine/rdorch.c:1079
#, c-format
msgid "LINE %d:"
msgstr ""
-#: Engine/rdorch.c:1071
+#: Engine/rdorch.c:1098
msgid "invalid 'elseif' statement. must have a corresponding 'if'"
msgstr ""
-#: Engine/rdorch.c:1078
+#: Engine/rdorch.c:1105
msgid "'elseif' statement cannot occur after an 'else'"
msgstr ""
-#: Engine/rdorch.c:1134
+#: Engine/rdorch.c:1161
msgid "Unmatched comment"
msgstr ""
-#: Engine/rdorch.c:1198
+#: Engine/rdorch.c:1225
msgid "misplaced comma"
msgstr ""
-#: Engine/rdorch.c:1200 Engine/rdorch.c:1342 Engine/rdorch.c:1440
+#: Engine/rdorch.c:1227 Engine/rdorch.c:1369 Engine/rdorch.c:1467
msgid "unbalanced parens"
msgstr ""
-#: Engine/rdorch.c:1364
+#: Engine/rdorch.c:1391
#, c-format
msgid "illegal character %c"
msgstr ""
-#: Engine/rdorch.c:1377
+#: Engine/rdorch.c:1404
msgid "invalid 'else' statement. must have a corresponding 'if'"
msgstr ""
-#: Engine/rdorch.c:1384
+#: Engine/rdorch.c:1411
msgid "duplicate 'else' statement"
msgstr ""
-#: Engine/rdorch.c:1413
+#: Engine/rdorch.c:1440
msgid "invalid 'endif' statement. must have a corresponding 'if'"
msgstr ""
-#: Engine/rdorch.c:1442
+#: Engine/rdorch.c:1469
msgid "no legal opcode"
msgstr ""
-#: Engine/rdorch.c:1573
+#: Engine/rdorch.c:1600
msgid "illegal opcod from expr anal"
msgstr ""
-#: Engine/rdorch.c:1606 Engine/rdorch.c:1628
+#: Engine/rdorch.c:1633 Engine/rdorch.c:1655
#, c-format
msgid "failed to find %s, output arg '%s' illegal type"
msgstr ""
-#: Engine/rdorch.c:1670
+#: Engine/rdorch.c:1697
#, c-format
msgid "failed to find %s, input arg illegal type"
msgstr ""
-#: Engine/rdorch.c:1684
+#: Engine/rdorch.c:1711
msgid "setksmps is allowed only in user defined opcodes"
msgstr ""
-#: Engine/rdorch.c:1687
+#: Engine/rdorch.c:1714
msgid "multiple uses of setksmps in the same opcode definition"
msgstr ""
-#: Engine/rdorch.c:1710
+#: Engine/rdorch.c:1739
#, c-format
msgid "%s inconsistent with global nchnls (%d); replaced with %s\n"
msgstr ""
-#: Engine/rdorch.c:1740
+#: Engine/rdorch.c:1770
msgid "opcode blks cannot be nested (missing 'endop'?)"
msgstr ""
-#: Engine/rdorch.c:1742
+#: Engine/rdorch.c:1772
msgid "opcode not allowed in instr block"
msgstr ""
-#: Engine/rdorch.c:1751
+#: Engine/rdorch.c:1781
msgid "unmatched endop"
msgstr ""
-#: Engine/rdorch.c:1753
+#: Engine/rdorch.c:1783
msgid "endop not allowed in instr block"
msgstr ""
-#: Engine/rdorch.c:1758
+#: Engine/rdorch.c:1788
msgid "instr not allowed in opcode block"
msgstr ""
-#: Engine/rdorch.c:1761
+#: Engine/rdorch.c:1791
msgid "instr blocks cannot be nested (missing 'endin'?)"
msgstr ""
-#: Engine/rdorch.c:1769
+#: Engine/rdorch.c:1799
msgid "endin not allowed in opcode blk"
msgstr ""
-#: Engine/rdorch.c:1771
+#: Engine/rdorch.c:1801
msgid "unmatched endin"
msgstr ""
-#: Engine/rdorch.c:1781
+#: Engine/rdorch.c:1811
msgid "misplaced opcode"
msgstr ""
-#: Engine/rdorch.c:1787
+#: Engine/rdorch.c:1817
msgid "xout is allowed only in user defined opcodes"
msgstr ""
-#: Engine/rdorch.c:1790
+#: Engine/rdorch.c:1820
msgid "multiple uses of xout in the same opcode definition"
msgstr ""
-#: Engine/rdorch.c:1837
+#: Engine/rdorch.c:1867
msgid "too many input args"
msgstr ""
-#: Engine/rdorch.c:1909
+#: Engine/rdorch.c:1893
+msgid "insufficient required arguments"
+msgstr ""
+
+#: Engine/rdorch.c:1940
#, c-format
-msgid "input arg '%s' used before defined"
+msgid "input arg '%s' used before defined \n"
msgstr ""
-#: Engine/rdorch.c:1956
+#: Engine/rdorch.c:1987
msgid "xin is allowed only in user defined opcodes"
msgstr ""
-#: Engine/rdorch.c:1959
+#: Engine/rdorch.c:1990
msgid "multiple uses of xin in the same opcode definition"
msgstr ""
-#: Engine/rdorch.c:2004
+#: Engine/rdorch.c:2035
msgid "illegal no of output args"
msgstr ""
-#: Engine/rdorch.c:2023
+#: Engine/rdorch.c:2054
#, c-format
msgid "output name previously used, type '%c' must be uniquely defined"
msgstr ""
-#: Engine/rdorch.c:2028
+#: Engine/rdorch.c:2059
#, c-format
msgid "output arg '%s' illegal type"
msgstr ""
-#: Engine/rdorch.c:2069
+#: Engine/rdorch.c:2100
#, c-format
msgid "input arg '%s' of type %s not allowed when expecting %c"
msgstr ""
-#: Engine/rdorch.c:2155
+#: Engine/rdorch.c:2187
msgid "duplicate label"
msgstr ""
-#: Engine/rdorch.c:2177
+#: Engine/rdorch.c:2209
#, c-format
msgid "error line %d. unknown label:\n"
msgstr ""
-#: Engine/rdorch.c:2192 Engine/rdorch.c:2239
+#: Engine/rdorch.c:2222 Engine/rdorch.c:2271
msgid "error: "
msgstr "Störung: "
-#: Engine/rdorch.c:2208
+#: Engine/rdorch.c:2239
#, c-format
msgid ", line %d:\n"
msgstr ""
-#: Engine/rdorch.c:2246
+#: Engine/rdorch.c:2278
#, c-format
msgid "called from line %d of macro %s"
msgstr ""
-#: Engine/rdorch.c:2250
+#: Engine/rdorch.c:2282
#, c-format
msgid "in line %d of file input %s"
msgstr ""
-#: Engine/rdscor.c:79
+#: Engine/rdscor.c:80
#, c-format
msgid "ERROR: illegal character %c(%.2x) in scoreline: "
msgstr ""
@@ -1866,7 +1874,7 @@ msgid ""
"\tremainder of line flushed\n"
msgstr ""
-#: Engine/rdscor.c:144
+#: Engine/rdscor.c:146
msgid "ERROR: too many pfields: "
msgstr ""
@@ -1892,349 +1900,316 @@ msgstr ""
msgid " section %d: at position %d%s"
msgstr ""
-#: Engine/sread.c:217
+#: Engine/sread.c:216
msgid "Internal error in print_input_backtrace()"
msgstr ""
-#: Engine/sread.c:219
+#: Engine/sread.c:218
#, c-format
msgid " included from line %d of macro %s%s"
msgstr ""
-#: Engine/sread.c:220
+#: Engine/sread.c:219
#, c-format
msgid " called from line %d of macro %s%s"
msgstr ""
-#: Engine/sread.c:222
+#: Engine/sread.c:221
#, c-format
msgid " in line %d of macro %s%s"
msgstr ""
-#: Engine/sread.c:229
-#, c-format
-msgid " included from line %d of file input %s%s"
-msgstr ""
-
-#: Engine/sread.c:230
-#, c-format
-msgid " called from line %d of file input %s%s"
-msgstr ""
-
-#: Engine/sread.c:232
-#, c-format
-msgid " in line %d of file input %s%s"
-msgstr ""
-
-#: Engine/sread.c:268
+#: Engine/sread.c:256
#, c-format
msgid "Internal error op=%c"
msgstr ""
-#: Engine/sread.c:322
-msgid "ungetscochar(): buffer overflow"
-msgstr ""
-
-#: Engine/sread.c:479
+#: Engine/sread.c:464
msgid "illegal placement of number in [] expression"
msgstr ""
-#: Engine/sread.c:506
+#: Engine/sread.c:491
msgid "illegal placement of operator ~ in [] expression"
msgstr ""
-#: Engine/sread.c:516
+#: Engine/sread.c:501
msgid "illegal placement of operator @ or @@ in [] expression"
msgstr ""
-#: Engine/sread.c:548 Engine/sread.c:562
+#: Engine/sread.c:533 Engine/sread.c:547
#, c-format
msgid "illegal placement of operator %c in [] expression"
msgstr ""
-#: Engine/sread.c:574
+#: Engine/sread.c:559
msgid "illegal placement of '(' in [] expression"
msgstr ""
-#: Engine/sread.c:580
+#: Engine/sread.c:565
msgid "missing operand before ')' in [] expression"
msgstr ""
-#: Engine/sread.c:594
+#: Engine/sread.c:579
msgid "missing operand before closing bracket in []"
msgstr ""
-#: Engine/sread.c:609
+#: Engine/sread.c:594
#, c-format
msgid "illegal character %c(%.2x) in [] expression"
msgstr ""
-#: Engine/sread.c:658
+#: Engine/sread.c:646
#, c-format
msgid "%s Nested LOOP terminated, level:%d\n"
msgstr ""
-#: Engine/sread.c:664
+#: Engine/sread.c:652
#, c-format
msgid "External LOOP terminated, level:%d\n"
msgstr ""
-#: Engine/sread.c:684
+#: Engine/sread.c:696
#, c-format
msgid "%s Nested LOOP section (%d) Level:%d\n"
msgstr ""
-#: Engine/sread.c:689
+#: Engine/sread.c:701
#, c-format
msgid " External LOOP section (%d) Level:%d\n"
msgstr ""
-#: Engine/sread.c:703
+#: Engine/sread.c:715
msgid "Loop terminated\n"
msgstr ""
-#: Engine/sread.c:716
+#: Engine/sread.c:733
#, c-format
msgid "Repeat section (%d)\n"
msgstr ""
-#: Engine/sread.c:719
+#: Engine/sread.c:736
msgid "Repeat section\n"
msgstr ""
-#: Engine/sread.c:744
+#: Engine/sread.c:761
msgid "Invalid macro name for --smacro"
msgstr ""
-#: Engine/sread.c:831
+#: Engine/sread.c:865
#, c-format
msgid "Clockbase = %f\n"
msgstr ""
-#: Engine/sread.c:898
+#: Engine/sread.c:934
msgid "Loops are nested too deeply"
msgstr ""
-#: Engine/sread.c:901
-msgid "Loop cannot start inside of a macro"
-msgstr ""
-
-#: Engine/sread.c:920
+#: Engine/sread.c:948
msgid "{: invalid repeat count"
msgstr ""
-#: Engine/sread.c:929
+#: Engine/sread.c:957
#, c-format
msgid "%s Nested LOOP=%d Level:%d\n"
msgstr ""
-#: Engine/sread.c:935
+#: Engine/sread.c:963
#, c-format
msgid "External LOOP=%d Level:%d\n"
msgstr ""
-#: Engine/sread.c:1004
-msgid "Repeat cannot start inside of a macro (ignored)"
-msgstr ""
-
-#: Engine/sread.c:1019
+#: Engine/sread.c:1047
msgid "r: invalid repeat count"
msgstr ""
-#: Engine/sread.c:1021
+#: Engine/sread.c:1049
#, c-format
msgid "Repeats=%d\n"
msgstr ""
-#: Engine/sread.c:1063
+#: Engine/sread.c:1093
#, c-format
msgid "Named section >>>%s<<<\n"
msgstr ""
-#: Engine/sread.c:1079
+#: Engine/sread.c:1108
#, c-format
msgid "%d: File %s position %ld\n"
msgstr ""
-#: Engine/sread.c:1085
-#, c-format
-msgid "Ignoring name %s not in file\n"
-msgstr ""
-
-#: Engine/sread.c:1110
+#: Engine/sread.c:1133
#, c-format
msgid "Name %s not found"
msgstr ""
-#: Engine/sread.c:1112
+#: Engine/sread.c:1135
#, c-format
msgid "Duplicate %d: %s (%s,%ld)\n"
msgstr ""
-#: Engine/sread.c:1129
-#, c-format
-msgid "cannot open input file %s"
-msgstr ""
-
-#: Engine/sread.c:1149
+#: Engine/sread.c:1164
#, c-format
msgid "Warp_factor = %f\n"
msgstr ""
-#: Engine/sread.c:1174
+#: Engine/sread.c:1189
msgid "sread is confused on legal opcodes\n"
msgstr ""
-#: Engine/sread.c:1236
+#: Engine/sread.c:1251
msgid "No previous event for ^"
msgstr ""
-#: Engine/sread.c:1241
+#: Engine/sread.c:1256
#, c-format
msgid "illegal space following %s, zero substituted"
msgstr ""
-#: Engine/sread.c:1271
+#: Engine/sread.c:1286
#, c-format
msgid "ignoring '%s' in '%c' event"
msgstr ""
-#: Engine/sread.c:1274
+#: Engine/sread.c:1289
msgid "! invalid in p1, p2, or p3"
msgstr ""
-#: Engine/sread.c:1275 Engine/sread.c:1280 Engine/sread.c:1730
-#: Engine/sread.c:1753 Engine/sread.c:1767
+#: Engine/sread.c:1290 Engine/sread.c:1295 Engine/sread.c:1738
+#: Engine/sread.c:1761 Engine/sread.c:1775
msgid " remainder of line flushed\n"
msgstr ""
-#: Engine/sread.c:1279
+#: Engine/sread.c:1294
#, c-format
msgid "illegal character after !: '%c'"
msgstr ""
-#: Engine/sread.c:1358
+#: Engine/sread.c:1373
#, c-format
msgid "WARNING: instr %s not found, assuming insno = -1\n"
msgstr ""
-#: Engine/sread.c:1378
+#: Engine/sread.c:1393
msgid "sread: illegal use of carry, 0 substituted\n"
msgstr ""
-#: Engine/sread.c:1526
+#: Engine/sread.c:1539
msgid "Improper \\"
msgstr ""
-#: Engine/sread.c:1558
+#: Engine/sread.c:1570
msgid "Not #define"
msgstr ""
-#: Engine/sread.c:1620
+#: Engine/sread.c:1630
#, c-format
msgid "Macro %s with %d arguments defined\n"
msgstr ""
-#: Engine/sread.c:1631
+#: Engine/sread.c:1642
msgid "Not #include"
msgstr ""
-#: Engine/sread.c:1662
+#: Engine/sread.c:1671
#, c-format
msgid "Cannot open #include'd file %s"
msgstr ""
-#: Engine/sread.c:1673
+#: Engine/sread.c:1681
msgid "Not #undef"
msgstr ""
-#: Engine/sread.c:1692
+#: Engine/sread.c:1700
msgid "unknown # option"
msgstr ""
-#: Engine/sread.c:1729
+#: Engine/sread.c:1737
#, c-format
msgid "illegal opcode %c"
msgstr ""
-#: Engine/sread.c:1752
+#: Engine/sread.c:1760
#, c-format
msgid "unexpected char %c"
msgstr ""
-#: Engine/sread.c:1766
+#: Engine/sread.c:1774
msgid "illegally placed string"
msgstr ""
-#: Engine/sread.c:1773
+#: Engine/sread.c:1781
msgid "unmatched quote"
msgstr ""
-#: Engine/sread.c:1817
+#: Engine/sread.c:1825
msgid "sread: illegal number format: "
msgstr ""
-#: Engine/sread.c:1823
+#: Engine/sread.c:1831
msgid " zero substituted.\n"
msgstr ""
-#: Engine/swrite.c:123
+#: Engine/swrite.c:123 Engine/swritestr.c:134
#, c-format
msgid "swrite: unexpected opcode, section %d line %d\n"
msgstr ""
-#: Engine/swrite.c:209 Engine/swrite.c:249
+#: Engine/swrite.c:209 Engine/swrite.c:249 Engine/swritestr.c:220
+#: Engine/swritestr.c:260
#, c-format
msgid "swrite: output, sect%d line%d p%d makes illegal reference to "
msgstr ""
-#: Engine/swrite.c:216 Engine/swrite.c:255
+#: Engine/swrite.c:216 Engine/swrite.c:255 Engine/swritestr.c:227
+#: Engine/swritestr.c:266
msgid " Zero substituted\n"
msgstr ""
-#: Engine/swrite.c:313
+#: Engine/swrite.c:313 Engine/swritestr.c:324
#, c-format
msgid "swrite: output, sect%d line%d p%d has illegal ramp symbol\n"
msgstr ""
-#: Engine/swrite.c:317
+#: Engine/swrite.c:317 Engine/swritestr.c:328
#, c-format
msgid ""
"swrite: output, sect%d line%d p%d ramp has illegal forward or backward ref\n"
msgstr ""
-#: Engine/swrite.c:380 Engine/swrite.c:445
+#: Engine/swrite.c:380 Engine/swrite.c:445 Engine/swritestr.c:391
+#: Engine/swritestr.c:456
#, c-format
msgid "swrite: output, sect%d line%d p%d has illegal expramp symbol\n"
msgstr ""
-#: Engine/swrite.c:385 Engine/swrite.c:450
+#: Engine/swrite.c:385 Engine/swrite.c:450 Engine/swritestr.c:396
+#: Engine/swritestr.c:461
#, c-format
msgid ""
"swrite: output, sect%d line%d p%d expramp has illegal forward or backward "
"ref\n"
msgstr ""
-#: Engine/swrite.c:466
+#: Engine/swrite.c:466 Engine/swritestr.c:477
#, c-format
msgid "swrite: output, sect%d line%d p%d has illegally terminated string "
msgstr ""
-#: Engine/swrite.c:514
+#: Engine/swrite.c:514 Engine/swritestr.c:529
#, c-format
msgid "swrite: output, sect%d line%d p%d has illegal number "
msgstr ""
-#: Engine/swrite.c:521
+#: Engine/swrite.c:521 Engine/swritestr.c:536
msgid " String truncated\n"
msgstr ""
-#: Engine/symbtab.c:202
+#: Engine/symbtab.c:208
#, c-format
msgid "Type confusion for %s (%d,%d), replacing\n"
msgstr ""
-#: Engine/symbtab.c:333
+#: Engine/symbtab.c:345
#, c-format
msgid "Unknown word type for %s on line %d\n"
msgstr ""
@@ -2255,6 +2230,14 @@ msgstr ""
msgid "twarp: t segments exceed twarp array\n"
msgstr ""
+#: InOut/cmidi.c:233
+msgid "CoreMIDI real time MIDI plugin for Csound\n"
+msgstr ""
+
+#: InOut/cmidi.c:247
+msgid "rtmidi: CoreMIDI module enabled\n"
+msgstr ""
+
#: InOut/libsnd.c:486
msgid "error: no input file name"
msgstr ""
@@ -2278,54 +2261,69 @@ msgstr ""
msgid "audio_in %s has %d chnls, orch %d chnls_i"
msgstr ""
-#: InOut/libsnd.c:573
+#: InOut/libsnd.c:574
+#, c-format
+msgid "reading %d sample blks of %d-bit floats from %s \n"
+msgstr ""
+
+#: InOut/libsnd.c:578
#, c-format
msgid "reading %d-byte blks of %s from %s (%s)\n"
msgstr ""
-#: InOut/libsnd.c:608
+#: InOut/libsnd.c:614
msgid "Output file type changed to IRCAM for use in pipe\n"
msgstr ""
-#: InOut/libsnd.c:628
+#: InOut/libsnd.c:634
msgid "Failed to initialise real time audio output"
msgstr ""
-#: InOut/libsnd.c:669 InOut/libsnd.c:673
+#: InOut/libsnd.c:675 InOut/libsnd.c:679
#, c-format
msgid "sfinit: cannot open %s"
msgstr ""
-#: InOut/libsnd.c:733 util/srconv.c:485
+#: InOut/libsnd.c:741
+#, c-format
+msgid "writing %d sample blks of %d-bit floats to %s \n"
+msgstr ""
+
+#: InOut/libsnd.c:744 util/srconv.c:484
#, c-format
msgid "writing %d-byte blks of %s to %s"
msgstr ""
-#: InOut/libsnd.c:740 InOut/libsnd.c:810
+#: InOut/libsnd.c:749 InOut/libsnd.c:824
msgid " (raw)\n"
msgstr ""
-#: InOut/libsnd.c:803
+#: InOut/libsnd.c:815
+#, c-format
+msgid "%ld %d sample blks of %d-bit floats written to %s\n"
+msgstr ""
+
+#: InOut/libsnd.c:820
#, c-format
-msgid "%ld %d-byte soundblks of %s written to %s"
+msgid "%ld %d sample blks of %s written to %s"
msgstr ""
-#: InOut/libsnd.c:822
+#: InOut/libsnd.c:837
#, c-format
msgid "soundfile write returned bytecount of %d, not %d"
msgstr ""
-#: InOut/libsnd.c:825
+#: InOut/libsnd.c:840
msgid ""
"(disk may be full...\n"
" closing the file ...)"
msgstr ""
-#: InOut/libsnd.c:828 util/dnoise.c:1192
+#: InOut/libsnd.c:843 util/dnoise.c:1177
msgid "\t... closed\n"
msgstr ""
-#: InOut/libsnd.c:834
+#: InOut/libsnd.c:849
msgid "not writing to sound disk\n"
msgstr ""
@@ -2725,20 +2723,20 @@ msgstr ""
msgid "Error closing MIDI out device: %d (%s)"
msgstr ""
-#: InOut/midisend.c:171
+#: InOut/midisend.c:170
msgid " *** no callback for opening MIDI output"
msgstr ""
-#: InOut/midisend.c:173
+#: InOut/midisend.c:172
msgid " *** no callback for writing MIDI data"
msgstr ""
-#: InOut/midisend.c:179
+#: InOut/midisend.c:178
#, c-format
msgid " *** error opening MIDI out device: %d (%s)"
msgstr ""
-#: InOut/midisend.c:190
+#: InOut/midisend.c:189
#, c-format
msgid " *** error opening MIDI out file '%s'"
msgstr ""
@@ -2992,7 +2990,7 @@ msgstr ""
msgid "Opened MIDI output device file '%s'\n"
msgstr ""
-#: InOut/rtalsa.c:1101 InOut/rtcoreaudio.c:64 InOut/rtcoreaudio.c:74
+#: InOut/rtalsa.c:1101 InOut/rtcoreaudio.c:71 InOut/rtcoreaudio.c:81
msgid "warning... could not create global var\n"
msgstr ""
@@ -3016,64 +3014,82 @@ msgstr ""
msgid "rtmidi: devfile module enabled\n"
msgstr ""
-#: InOut/rtcoreaudio.c:83
+#: InOut/rtauhal.c:163
+#, c-format
+msgid "selected input device: %s \n"
+msgstr ""
+
+#: InOut/rtauhal.c:166
+#, c-format
+msgid "selected output device: %s \n"
+msgstr ""
+
+#: InOut/rtauhal.c:524
+msgid "AuHAL module: device closed\n"
+msgstr ""
+
+#: InOut/rtauhal.c:541
+msgid "rtaudio: coreaaudio-AuHAL module enabled\n"
+msgstr ""
+
+#: InOut/rtcoreaudio.c:90
msgid ""
"CoreAudio real-time audio module for Csound\n"
"by Victor Lazzarini\n"
msgstr ""
-#: InOut/rtcoreaudio.c:105
+#: InOut/rtcoreaudio.c:112
msgid "rtaudio: CoreAudio module enabled\n"
msgstr ""
-#: InOut/rtcoreaudio.c:254
+#: InOut/rtcoreaudio.c:261
#, c-format
msgid "selected device: %u \n"
msgstr ""
-#: InOut/rtcoreaudio.c:263
+#: InOut/rtcoreaudio.c:270
#, c-format
msgid "CoreAudio module: opening %s \n"
msgstr ""
-#: InOut/rtcoreaudio.c:297
+#: InOut/rtcoreaudio.c:304
msgid " *** CoreAudio: open: could not set buffer size\n"
msgstr ""
-#: InOut/rtcoreaudio.c:342
+#: InOut/rtcoreaudio.c:349
#, c-format
msgid " *** CoreAudio: open: could not set device parameter sr: %d \n"
msgstr ""
-#: InOut/rtcoreaudio.c:344
+#: InOut/rtcoreaudio.c:351
#, c-format
msgid ""
" *** CoreAudio: current device sampling rate is:%d \n"
" try setting the above value in your csound orchestra \n"
msgstr ""
-#: InOut/rtcoreaudio.c:353
+#: InOut/rtcoreaudio.c:360
#, c-format
msgid "CoreAudio module: sr set to %d with %d audio channels \n"
msgstr ""
-#: InOut/rtcoreaudio.c:374 InOut/rtcoreaudio.c:387 InOut/rtcoreaudio.c:432
-#: InOut/rtcoreaudio.c:452
+#: InOut/rtcoreaudio.c:381 InOut/rtcoreaudio.c:394 InOut/rtcoreaudio.c:439
+#: InOut/rtcoreaudio.c:459
msgid " *** CoreAudio: open: memory allocation failure\n"
msgstr ""
-#: InOut/rtcoreaudio.c:414
+#: InOut/rtcoreaudio.c:421
#, c-format
msgid ""
"CoreAudio module: device open with %d buffers of %d frames\n"
"==========================================================\n"
msgstr ""
-#: InOut/rtcoreaudio.c:552
+#: InOut/rtcoreaudio.c:559
msgid "coreaudio module: closing device...\n"
msgstr ""
-#: InOut/rtcoreaudio.c:566
+#: InOut/rtcoreaudio.c:573
msgid "coreaudio module: device closed\n"
msgstr ""
@@ -3473,294 +3489,12 @@ msgstr ""
msgid "rtaudio: WinMM module enabled\n"
msgstr ""
-#: InOut/virtual_keyboard/virtual_keyboard.cpp:435
-msgid "virtual_keyboard.cpp: error allocating FLTK flags"
-msgstr ""
-
-#: InOut/virtual_keyboard/virtual_keyboard.cpp:443 InOut/winFLTK.c:125
-#: InOut/winFLTK.c:139
-#, c-format
-msgid "Error registering opcode '%s'"
-msgstr ""
-
-#: InOut/widgets.cpp:1081
-msgid ""
-"Invalid snapshot. Perhaps you modified orchestra widget code after you saved "
-"the snapshot bank."
-msgstr ""
-
-#: InOut/widgets.cpp:1226
-msgid "No name for FLbutbank"
-msgstr ""
-
-#: InOut/widgets.cpp:1466
-msgid "FLsetsnap: invalid table"
-msgstr ""
-
-#: InOut/widgets.cpp:1504
-msgid ""
-"Saving could overwrite the old file.\n"
-"Are you sure to save ?"
-msgstr ""
-
-#: InOut/widgets.cpp:1516
-msgid ""
-"Saving could overwrite the old file.\n"
-"Are you sure you want to save ?"
-msgstr ""
-
-#: InOut/widgets.cpp:1518
-msgid "No"
-msgstr ""
-
-#: InOut/widgets.cpp:1518
-msgid "Yes"
-msgstr ""
-
-#: InOut/widgets.cpp:1527
-msgid "FLsavesnap: cannot open file"
-msgstr ""
-
-#: InOut/widgets.cpp:1580
-msgid "FLloadsnap: cannot open file"
-msgstr ""
-
-#: InOut/widgets.cpp:1625
-msgid ""
-"unmatched widget, probably due to a modified orchestra. Modifying an "
-"orchestra makes it incompatible with old snapshot files"
-msgstr ""
-
-#: InOut/widgets.cpp:1994
-msgid "end of widget thread\n"
-msgstr ""
-
-#: InOut/widgets.cpp:2020
-msgid "FLrun was already called"
-msgstr ""
-
-#: InOut/widgets.cpp:2023
-msgid "FL_run: memory allocation failure"
-msgstr ""
-
-#: InOut/widgets.cpp:2125 InOut/widgets.cpp:2145
-msgid "Error: Unable to fork process\n"
-msgstr ""
-
-#: InOut/widgets.cpp:2545
-msgid "FLpanel_end: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2548
-msgid ""
-"FLpanel_end: invalid stack count: verify FLpanel/FLpanel_end count and "
-"placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2573 InOut/widgets.cpp:2604
-msgid "FLscroll_end: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2576
-msgid ""
-"FLscroll_end: invalid stack count: verify FLscroll/FLscroll_end count and "
-"placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2607
-msgid ""
-"FLtabs_end: invalid stack count: verify FLtabs/FLtabs_end count and placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2651
-msgid "FLgroup_end: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2654
-msgid ""
-"FLgroup_end: invalid stack count: verify FLgroup/FLgroup_end count and "
-"placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2684
-msgid "FLpack_end: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2687
-msgid ""
-"FLpack_end: invalid stack count: verify FLpack/FLpack_end count and placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2840
-msgid "FLvalue cannot be set by FLsetVal.\n"
-msgstr ""
-
-#: InOut/widgets.cpp:2857
-#, c-format
-msgid "(fl_setWidgetValuei): not fully implemented yet; exp=%d"
-msgstr ""
-
-#: InOut/widgets.cpp:2876
-msgid "FLvalue cannot be set by FLsetVal\n"
-msgstr ""
-
-#: InOut/widgets.cpp:2893
-#, c-format
-msgid "(fl_setWidgetValue_set): not fully implemented yet; exp=%d"
-msgstr ""
-
-#: InOut/widgets.cpp:3242 InOut/widgets.cpp:4648
-msgid "FLslider exponential, using non-labeled slider"
-msgstr ""
-
-#: InOut/widgets.cpp:3264
-msgid "FLslider: invalid slider type"
-msgstr ""
-
-#: InOut/widgets.cpp:3276 InOut/widgets.cpp:4072
-msgid "FLslider: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:3337 InOut/widgets.cpp:4399 InOut/widgets.cpp:4610
-#: InOut/widgets.cpp:4787
-msgid "invalid ZAK space allocation"
-msgstr ""
-
-#: InOut/widgets.cpp:3451
-msgid "FLslidBnk: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:3548 InOut/widgets.cpp:3581
-msgid "FLjoy X axe: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:3675
-msgid "FLknob: invalid knob type"
-msgstr ""
-
-#: InOut/widgets.cpp:3690
-msgid "FLknob: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:3790 InOut/widgets.cpp:3912
-#, c-format
-msgid "FLbutton \"%s\" ignoring snapshot capture retrieve"
-msgstr ""
-
-#: InOut/widgets.cpp:3831
-msgid "FLbutton: invalid button type"
-msgstr ""
-
-#: InOut/widgets.cpp:3863
-msgid "FLcloseButton: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:3882
-#, c-format
-msgid "Command Found: %s\n"
-msgstr ""
-
-#: InOut/widgets.cpp:3954
-msgid "FLbuttonBank: invalid button type"
-msgstr ""
-
-#: InOut/widgets.cpp:3992
-#, c-format
-msgid "FLcount \"%s\" ignoring snapshot capture retrieve"
-msgstr ""
-
-#: InOut/widgets.cpp:4059
-msgid "FLroller: invalid roller type"
-msgstr ""
-
-#: InOut/widgets.cpp:4254
-msgid "FLhvsBox: a square area must be delimited by 2 lines at least"
-msgstr ""
-
-#: InOut/widgets.cpp:4302
-msgid "FLkeyIn: invalid table number"
-msgstr ""
-
-#: InOut/widgets.cpp:4305
-msgid "FLkeyIn: table too short!"
-msgstr ""
-
-#: InOut/widgets.cpp:4522
-msgid "FLvslidBnk: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:4698 InOut/widgets.cpp:4875
-msgid "FLsliderBank: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:4825
-msgid "FLslidBnk2: FLslider exponential, using non-labeled slider"
-msgstr ""
-
-#: InOut/widgets.cpp:4955 InOut/widgets.cpp:5018
-msgid "FLsldBnkSet: invalid table number"
-msgstr ""
-
-#: InOut/widgets.cpp:4959 InOut/widgets.cpp:5022
-msgid "FLslidBnkSet: table too short!"
-msgstr ""
-
-#: InOut/widgets.cpp:4967 InOut/widgets.cpp:5031
-msgid "FLsldBnkSet: invalid outable number"
-msgstr ""
-
-#: InOut/widgets.cpp:4972 InOut/widgets.cpp:5037
-msgid "FLslidBnkSet: too many sliders to reset!"
-msgstr ""
-
-#: InOut/widgets.cpp:4995
-msgid "FLslidBnkSet: function mapping not available"
-msgstr ""
-
-#: InOut/widgets.cpp:5064 InOut/widgets.cpp:5149 InOut/widgets.cpp:5236
-msgid ""
-"FLslidBnk2Setk: value out of range: function mapping requires a 0 to 1 range "
-"for input"
-msgstr ""
-
-#: InOut/widgets.cpp:5093
-msgid "FLsldBnkSetk: invalid table number"
-msgstr ""
-
-#: InOut/widgets.cpp:5097 InOut/widgets.cpp:5183
-msgid "FLslidBnkSetk: table too short!"
-msgstr ""
-
-#: InOut/widgets.cpp:5105
-msgid "FLsldBnkSetk: invalid outable number"
-msgstr ""
-
-#: InOut/widgets.cpp:5111 InOut/widgets.cpp:5197
-msgid "FLslidBnkSetk: too many sliders to reset!"
-msgstr ""
-
-#: InOut/widgets.cpp:5179
-msgid "FLslidBnkSetk: invalid table number"
-msgstr ""
-
-#: InOut/widgets.cpp:5191
-msgid "FLslidBnkSetk: invalid outable number"
-msgstr ""
-
-#: InOut/widgets.cpp:5268
-msgid "FLxyin: none of X limits can be zero in exponential mode!"
-msgstr ""
-
-#: InOut/widgets.cpp:5294
-msgid "FLxyin: none of Y limits can be zero in exponential mode!"
-msgstr ""
-
#: InOut/winascii.c:75
#, c-format
msgid "%s\t%ld points, scalemax %5.3f\n"
msgstr ""
-#: InOut/windin.c:46 Opcodes/pitch.c:82 Opcodes/spectra.c:76
+#: InOut/windin.c:46 Opcodes/pitch.c:83 Opcodes/spectra.c:78
msgid "illegal iprd"
msgstr ""
@@ -3803,47 +3537,61 @@ msgstr ""
msgid "widgets.cpp: error allocating FLTK flags"
msgstr ""
-#: OOps/aops.c:95 OOps/aops.c:119
+#: InOut/winFLTK.c:124 InOut/winFLTK.c:137
+#: InOut/virtual_keyboard/virtual_keyboard.cpp:443
+#, c-format
+msgid "Error registering opcode '%s'"
+msgstr ""
+
+#: InOut/virtual_keyboard/virtual_keyboard.cpp:435
+msgid "virtual_keyboard.cpp: error allocating FLTK flags"
+msgstr ""
+
+#: OOps/aops.c:120 OOps/aops.c:144
#, c-format
msgid "Cannot be more In arguments than Out in init (%d,%d)"
msgstr ""
-#: OOps/aops.c:175 OOps/aops.c:194
+#: OOps/aops.c:200 OOps/aops.c:219
#, c-format
msgid "Index %d out of range [0,%d] in t[]\n"
msgstr ""
-#: OOps/aops.c:184
+#: OOps/aops.c:209
#, fuzzy
-msgid "Vector notinitialised\n"
-msgstr "vco: nicht initialisiert"
+msgid "Vector not initialised\n"
+msgstr "Vector: nicht initialisiert"
-#: OOps/aops.c:686
+#: OOps/aops.c:711
msgid "non-looping sample"
msgstr ""
-#: OOps/aops.c:828 OOps/aops.c:856
+#: OOps/aops.c:853 OOps/aops.c:881
#, c-format
msgid "No tuning table %d"
msgstr ""
-#: OOps/aops.c:901 OOps/aops.c:939
+#: OOps/aops.c:926 OOps/aops.c:964
msgid "cpstun: invalid table"
msgstr ""
-#: OOps/aops.c:1189
+#: OOps/aops.c:1214
msgid "Input and output argument count differs in inch"
msgstr ""
-#: OOps/aops.c:1193
+#: OOps/aops.c:1218
#, c-format
msgid "Input channel %d too large; ignored"
msgstr ""
-#: OOps/aops.c:1667
+#: OOps/aops.c:1698
msgid "k-rate invalue ChannelName cannot start with $"
msgstr ""
+#: OOps/aops.c:1835
+msgid "Unknown functuon called"
+msgstr ""
+
#: OOps/bus.c:313 OOps/bus.c:345
msgid "chani: invalid index"
msgstr ""
@@ -4128,7 +3876,7 @@ msgstr ""
msgid "dispfft: not initialised"
msgstr "dispfft: nicht initialisiert"
-#: OOps/disprep.c:435 Opcodes/spectra.c:516
+#: OOps/disprep.c:435 Opcodes/spectra.c:518
msgid "illegal iperiod"
msgstr ""
@@ -4192,15 +3940,15 @@ msgstr ""
msgid " *** fftlib.c: internal error: invalid FFT size: %d"
msgstr ""
-#: OOps/goto_ops.c:92
+#: OOps/goto_ops.c:93
msgid "negative time period"
msgstr "negativer Zeitabschnitt"
-#: OOps/goto_ops.c:182
+#: OOps/goto_ops.c:186
msgid "turnoff2: invalid instrument number"
msgstr ""
-#: OOps/goto_ops.c:187
+#: OOps/goto_ops.c:191
msgid "turnoff2: invalid mode parameter"
msgstr ""
@@ -4217,7 +3965,7 @@ msgid "cpstabm: invalid modulator table"
msgstr ""
#: OOps/midiops.c:304 OOps/midiops.c:314 OOps/midiops.c:334 OOps/midiops.c:344
-#: OOps/midiops.c:421 OOps/midiops.c:435 Opcodes/gab/sliderTable.c:563
+#: OOps/midiops.c:421 OOps/midiops.c:435 Opcodes/gab/sliderTable.c:567
#: Opcodes/midiops2.c:56 Opcodes/midiops2.c:73 Opcodes/midiops2.c:111
#: Opcodes/midiops2.c:145 Opcodes/midiops2.c:206 Opcodes/midiops2.c:237
#: Opcodes/midiops2.c:298 Opcodes/midiops2.c:317 Opcodes/midiops2.c:357
@@ -4233,7 +3981,7 @@ msgstr ""
msgid "illegal mrtmsg argument"
msgstr ""
-#: OOps/midiout.c:383
+#: OOps/midiout.c:389
#, c-format
msgid "out contr14 msb:%x lsb:%x\n"
msgstr ""
@@ -4695,148 +4443,148 @@ msgstr "pvsanal: Nicht Initialisiert.\n"
msgid "Unknown window type; replaced by rectangular\n"
msgstr ""
-#: OOps/pvsanal.c:1025
+#: OOps/pvsanal.c:1027
msgid "pvsynth: Not Initialised.\n"
msgstr "pvsynth: Nicht Initialisiert.\n"
-#: OOps/remote.c:100
+#: OOps/remote.c:103
msgid "insufficient memory to initialise remote globals."
msgstr ""
-#: OOps/remote.c:109
+#: OOps/remote.c:112
msgid "insufficient memory to initialise outgoing socket table."
msgstr ""
-#: OOps/remote.c:116
+#: OOps/remote.c:119
msgid "insufficient memory to initialise incoming socket table."
msgstr ""
-#: OOps/remote.c:124
+#: OOps/remote.c:127
msgid "insufficient memory to initialise insrfd_list."
msgstr ""
-#: OOps/remote.c:132
+#: OOps/remote.c:135
msgid "insufficient memory to initialise chnrfd_list."
msgstr ""
-#: OOps/remote.c:139
+#: OOps/remote.c:142
msgid "insufficient memory to initialise insrfd table."
msgstr ""
-#: OOps/remote.c:146
+#: OOps/remote.c:149
msgid "insufficient memory to initialise chnrfd table."
msgstr ""
-#: OOps/remote.c:153
+#: OOps/remote.c:156
msgid "insufficient memory to initialise local ip address."
msgstr ""
-#: OOps/remote.c:161
+#: OOps/remote.c:164
msgid "unable to get local ip address."
msgstr ""
-#: OOps/remote.c:222
+#: OOps/remote.c:225
msgid "could not open remote port"
msgstr ""
-#: OOps/remote.c:237
+#: OOps/remote.c:240
msgid "---> Could not connect \n"
msgstr "---> Konnte nicht anschlieÃen\n"
-#: OOps/remote.c:241
+#: OOps/remote.c:244
msgid "---> Failed all attempts to connect. \n"
msgstr ""
-#: OOps/remote.c:244
+#: OOps/remote.c:247
msgid "---> Connected. \n"
msgstr ""
-#: OOps/remote.c:258 Opcodes/socksend.c:232
+#: OOps/remote.c:261 Opcodes/socksend.c:305
msgid "write to socket failed"
msgstr ""
-#: OOps/remote.c:278
+#: OOps/remote.c:281
msgid "creating socket\n"
msgstr ""
-#: OOps/remote.c:280
+#: OOps/remote.c:283
msgid "created socket \n"
msgstr ""
-#: OOps/remote.c:292
+#: OOps/remote.c:295
msgid "setting socket option to reuse the addresse \n"
msgstr ""
-#: OOps/remote.c:309 Opcodes/sockrecv.c:133 Opcodes/sockrecv.c:223
-#: Opcodes/socksend.c:211
+#: OOps/remote.c:312 Opcodes/sockrecv.c:141 Opcodes/sockrecv.c:237
+#: Opcodes/socksend.c:284
msgid "bind failed"
msgstr ""
-#: OOps/remote.c:313 Opcodes/socksend.c:216
+#: OOps/remote.c:316 Opcodes/socksend.c:289
msgid "listen failed"
msgstr ""
-#: OOps/remote.c:318 Opcodes/socksend.c:222
+#: OOps/remote.c:321 Opcodes/socksend.c:295
msgid "accept failed"
msgstr ""
-#: OOps/remote.c:321
+#: OOps/remote.c:324
#, c-format
msgid "accepted, conn=%d \n"
msgstr ""
-#: OOps/remote.c:353 OOps/remote.c:374 OOps/remote.c:417 OOps/remote.c:449
-#: OOps/remote.c:489
+#: OOps/remote.c:356 OOps/remote.c:377 OOps/remote.c:420 OOps/remote.c:452
+#: OOps/remote.c:492
msgid "failed to initialise remote globals."
msgstr ""
-#: OOps/remote.c:378 OOps/remote.c:421
+#: OOps/remote.c:381 OOps/remote.c:424
msgid "missing instr nos"
msgstr ""
-#: OOps/remote.c:390 OOps/remote.c:430
+#: OOps/remote.c:393 OOps/remote.c:433
msgid "illegal instr no"
msgstr ""
-#: OOps/remote.c:393
+#: OOps/remote.c:396
msgid "insno already remote"
msgstr ""
-#: OOps/remote.c:403 OOps/remote.c:474
+#: OOps/remote.c:406 OOps/remote.c:477
msgid "Failed to open port to listen"
msgstr ""
-#: OOps/remote.c:423
+#: OOps/remote.c:426
#, c-format
msgid "*** str1: %s own:%s\n"
msgstr ""
-#: OOps/remote.c:433
+#: OOps/remote.c:436
msgid "insno already specific remote"
msgstr ""
-#: OOps/remote.c:453 OOps/remote.c:493
+#: OOps/remote.c:456 OOps/remote.c:496
msgid "missing channel nos"
msgstr ""
-#: OOps/remote.c:463 OOps/remote.c:502
+#: OOps/remote.c:466 OOps/remote.c:505
msgid "illegal channel no"
msgstr ""
-#: OOps/remote.c:466
+#: OOps/remote.c:469
msgid "channel already remote"
msgstr ""
-#: OOps/remote.c:505
+#: OOps/remote.c:508
msgid "channel already specific remote"
msgstr ""
-#: OOps/remote.c:531 OOps/remote.c:555 OOps/remote.c:579
+#: OOps/remote.c:534 OOps/remote.c:558 OOps/remote.c:582
msgid "CLsend failed"
msgstr ""
-#: OOps/remote.c:645 OOps/remote.c:653 OOps/remote.c:661 OOps/remote.c:669
-#: OOps/remote.c:677
+#: OOps/remote.c:648 OOps/remote.c:656 OOps/remote.c:664 OOps/remote.c:672
+#: OOps/remote.c:680
msgid ""
"*** This version of Csound was not compiled with remote event support ***\n"
msgstr ""
@@ -4945,53 +4693,53 @@ msgstr "linseg nicht initialisiert (krate)\n"
msgid "linseg: not initialised (arate)\n"
msgstr "linseg: nicht initialisiert (arate)\n"
-#: OOps/ugens1.c:463 OOps/ugens1.c:465 OOps/ugens1.c:512 OOps/ugens1.c:514
-#: OOps/ugens1.c:564 OOps/ugens1.c:566 OOps/ugens1.c:610 OOps/ugens1.c:612
-#: OOps/ugens1.c:774 OOps/ugens1.c:776
+#: OOps/ugens1.c:464 OOps/ugens1.c:466 OOps/ugens1.c:513 OOps/ugens1.c:515
+#: OOps/ugens1.c:565 OOps/ugens1.c:567 OOps/ugens1.c:611 OOps/ugens1.c:613
+#: OOps/ugens1.c:775 OOps/ugens1.c:777
#, c-format
msgid "ival%d is zero"
msgstr ""
-#: OOps/ugens1.c:466 OOps/ugens1.c:515 OOps/ugens1.c:567 OOps/ugens1.c:613
-#: OOps/ugens1.c:777
+#: OOps/ugens1.c:467 OOps/ugens1.c:516 OOps/ugens1.c:568 OOps/ugens1.c:614
+#: OOps/ugens1.c:778
#, c-format
msgid "ival%d sign conflict"
msgstr ""
-#: OOps/ugens1.c:495 OOps/ugens1.c:544
+#: OOps/ugens1.c:496 OOps/ugens1.c:545
#, c-format
msgid "Breakpoint time %f not valid"
msgstr ""
-#: OOps/ugens1.c:706
+#: OOps/ugens1.c:707
msgid "expseg (krate): not initialised"
msgstr "expseg (krate): nicht initialisiert"
-#: OOps/ugens1.c:732
+#: OOps/ugens1.c:733
msgid "expseg (arate): not initialised"
msgstr "expseg (arate): nicht initialisiert"
-#: OOps/ugens1.c:1013 OOps/ugens1.c:1149 OOps/ugens1.c:1311
+#: OOps/ugens1.c:1014 OOps/ugens1.c:1150 OOps/ugens1.c:1312
msgid "non-positive iatdec"
msgstr ""
-#: OOps/ugens1.c:1106 OOps/ugens1.c:1273
+#: OOps/ugens1.c:1107 OOps/ugens1.c:1274
msgid "ixmod out of range."
msgstr ""
-#: OOps/ugens1.c:1134 OOps/ugens1.c:1301
+#: OOps/ugens1.c:1135 OOps/ugens1.c:1302
msgid "rise func ends with zero"
msgstr ""
-#: OOps/ugens1.c:1178 OOps/ugens1.c:1257
+#: OOps/ugens1.c:1179 OOps/ugens1.c:1258
msgid "envlpx rise func ends with zero"
msgstr ""
-#: OOps/ugens1.c:1199 OOps/ugens1.c:1254
+#: OOps/ugens1.c:1200 OOps/ugens1.c:1255
msgid "envlpx(krate): not initialised"
msgstr "envlpx(krate): nicht initialisiert"
-#: OOps/ugens2.c:48 OOps/ugens2.c:61 Opcodes/shape.c:377
+#: OOps/ugens2.c:48 OOps/ugens2.c:61 Opcodes/shape.c:379
msgid "init phase truncation\n"
msgstr ""
@@ -5055,8 +4803,8 @@ msgid "oscil(krate): not initialised"
msgstr "oscil(krate): nicht initialisiert"
#: OOps/ugens2.c:1139 OOps/ugens2.c:1167 OOps/ugens2.c:1192 OOps/ugens2.c:1219
-#: Opcodes/pitch.c:1579 Opcodes/pitch.c:1606 Opcodes/pitch.c:1633
-#: Opcodes/pitch.c:1662
+#: Opcodes/pitch.c:1580 Opcodes/pitch.c:1607 Opcodes/pitch.c:1634
+#: Opcodes/pitch.c:1663
msgid "oscil: not initialised"
msgstr "oscil: nicht initialisiert"
@@ -5172,7 +4920,7 @@ msgstr ""
msgid "Seeding from current time %lu\n"
msgstr ""
-#: OOps/ugens5.c:198 OOps/ugens5.c:260 Opcodes/gab/gab.c:45 Opcodes/ugsc.c:188
+#: OOps/ugens5.c:198 OOps/ugens5.c:260 Opcodes/gab/gab.c:47 Opcodes/ugsc.c:186
#, c-format
msgid "illegal reson iscl value, %f"
msgstr ""
@@ -5404,8 +5152,8 @@ msgstr ""
msgid "Table no. < 1 dft=%.2f sft=%.2f"
msgstr ""
-#: OOps/ugrw1.c:1781 OOps/ugrw1.c:1822 Opcodes/fareyseq.c:455
-#: Opcodes/fareyseq.c:477
+#: OOps/ugrw1.c:1781 OOps/ugrw1.c:1822 Opcodes/fareyseq.c:453
+#: Opcodes/fareyseq.c:475
#, c-format
msgid "Source sft table %.2f not found."
msgstr ""
@@ -5635,20 +5383,20 @@ msgstr ""
msgid "reverbx: not initialised"
msgstr "reverbx: nicht initialisiert"
-#: Opcodes/ambicode1.c:80
+#: Opcodes/ambicode1.c:82
msgid "The numbers of input and output arguments are not valid."
msgstr ""
-#: Opcodes/ambicode1.c:163
+#: Opcodes/ambicode1.c:165
#, fuzzy
msgid "The number of input arguments is not valid."
msgstr "Falsche Zahl der Eingang Argumente"
-#: Opcodes/ambicode1.c:167
+#: Opcodes/ambicode1.c:169
msgid "The isetup value should be between 1 and 5."
msgstr ""
-#: Opcodes/ambicode1.c:193
+#: Opcodes/ambicode1.c:195
msgid "The output channel count does not match the isetup value."
msgstr ""
@@ -5688,16 +5436,16 @@ msgstr ""
msgid "Not supported setup number!"
msgstr ""
-#: Opcodes/babo.c:740
+#: Opcodes/babo.c:742
#, c-format
msgid "Babo: resonator dimensions are incorrect (%.1f, %.1f, %.1f)"
msgstr ""
-#: Opcodes/bilbar.c:82
+#: Opcodes/bilbar.c:83
msgid "No data to continue"
msgstr ""
-#: Opcodes/bilbar.c:108
+#: Opcodes/bilbar.c:109
msgid "Ends must be clamped(1), pivoting(2) or free(3)"
msgstr ""
@@ -5710,8 +5458,8 @@ msgstr "vco: nicht initialisiert"
msgid "DLineN: Delay length too big ... setting to maximum length of %ld.\n"
msgstr ""
-#: Opcodes/bowedbar.c:98 Opcodes/physmod.c:489
-msgid "unknown lowest frequency for bowed string -- assuming 50Hz\n"
+#: Opcodes/bowedbar.c:98
+msgid "unknown lowest frequency for bowed bar -- assuming 50Hz\n"
msgstr ""
#: Opcodes/clfilt.c:53
@@ -5789,17 +5537,17 @@ msgstr ""
msgid "Unknown control %d"
msgstr ""
-#: Opcodes/cpumeter.c:73
+#: Opcodes/cpumeter.c:77
#, c-format
msgid "Failed to open /proc/stat: %s"
msgstr ""
-#: Opcodes/cpumeter.c:75 Opcodes/cpumeter.c:80 Opcodes/cpumeter.c:107
-#: Opcodes/cpumeter.c:147
+#: Opcodes/cpumeter.c:79 Opcodes/cpumeter.c:84 Opcodes/cpumeter.c:111
+#: Opcodes/cpumeter.c:151
msgid "failed /proc/stat read"
msgstr ""
-#: Opcodes/crossfm.c:33
+#: Opcodes/crossfm.c:34
msgid "crossfm: ftable not found"
msgstr ""
@@ -5841,31 +5589,31 @@ msgstr ""
msgid "insufficient arguments for fareytable"
msgstr "unzulängliche Argumente"
-#: Opcodes/fareyseq.c:250 Opcodes/fareyseq.c:300
+#: Opcodes/fareyseq.c:251 Opcodes/fareyseq.c:301
#, c-format
msgid "Farey: Table no. < 1 dft=%.2f sft=%.2f"
msgstr ""
-#: Opcodes/fareyseq.c:255
+#: Opcodes/fareyseq.c:256
#, c-format
msgid "Farey: Filter type < 1 dft=%.2f sft=%.2f"
msgstr ""
-#: Opcodes/fareyseq.c:270 Opcodes/fareyseq.c:318
+#: Opcodes/fareyseq.c:271 Opcodes/fareyseq.c:319
#, c-format
msgid "Farey: Destination dft table %.2f not found."
msgstr ""
-#: Opcodes/fareyseq.c:281 Opcodes/fareyseq.c:329
+#: Opcodes/fareyseq.c:282 Opcodes/fareyseq.c:330
#, c-format
msgid "Farey: Source sft table %.2f not found."
msgstr ""
-#: Opcodes/fareyseq.c:305
+#: Opcodes/fareyseq.c:306
msgid "Farey: Filter type < 1"
msgstr ""
-#: Opcodes/fareyseq.c:447 Opcodes/fareyseq.c:468
+#: Opcodes/fareyseq.c:445 Opcodes/fareyseq.c:466
#, c-format
msgid "Table no. < 1 sft=%.2f"
msgstr ""
@@ -5973,45 +5721,45 @@ msgstr "Keine Tabelle für FM4Op"
msgid "follow - zero length!"
msgstr ""
-#: Opcodes/fout.c:59
+#: Opcodes/fout.c:60
#, c-format
msgid "Closing file '%s'...\n"
msgstr ""
-#: Opcodes/fout.c:101
+#: Opcodes/fout.c:102
msgid "invalid file handle"
msgstr ""
-#: Opcodes/fout.c:108 Opcodes/fout.c:420
+#: Opcodes/fout.c:109 Opcodes/fout.c:421
msgid "invalid file name"
msgstr ""
-#: Opcodes/fout.c:165
+#: Opcodes/fout.c:166
#, c-format
msgid "error opening file '%s'"
msgstr ""
-#: Opcodes/fout.c:192
+#: Opcodes/fout.c:193
#, c-format
msgid "error opening sound file '%s'"
msgstr ""
-#: Opcodes/fout.c:429
+#: Opcodes/fout.c:430
#, c-format
msgid "cannot close '%s': not found in list of open files"
msgstr ""
-#: Opcodes/fout.c:440
+#: Opcodes/fout.c:441
#, c-format
msgid "cannot close file #%d: not a valid handle"
msgstr ""
-#: Opcodes/fout.c:447
+#: Opcodes/fout.c:448
#, c-format
msgid "file #%d (%s) is in use, will be closed when released"
msgstr ""
-#: Opcodes/fout.c:476 Opcodes/fout.c:479 Opcodes/fout.c:550 Opcodes/fout.c:553
+#: Opcodes/fout.c:477 Opcodes/fout.c:480 Opcodes/fout.c:551 Opcodes/fout.c:554
msgid "fouti: invalid file handle"
msgstr ""
@@ -6089,554 +5837,694 @@ msgstr ""
msgid "ftsave: failed to write file"
msgstr ""
-#: Opcodes/gab/gab.c:109
+#: Opcodes/gab/gab.c:111
msgid "fastab: incorrect table number"
msgstr ""
-#: Opcodes/gab/gab.c:132 Opcodes/gab/gab.c:141 Opcodes/gab/gab.c:171
+#: Opcodes/gab/gab.c:134 Opcodes/gab/gab.c:143 Opcodes/gab/gab.c:173
msgid "tabw off end"
msgstr ""
-#: Opcodes/gab/gab.c:157 Opcodes/gab/gab.c:225 Opcodes/gab/gab.c:234
+#: Opcodes/gab/gab.c:159 Opcodes/gab/gab.c:227 Opcodes/gab/gab.c:236
msgid "tab off end"
msgstr ""
-#: Opcodes/gab/gab.c:183
+#: Opcodes/gab/gab.c:185
msgid "tab_i: incorrect table number"
msgstr ""
-#: Opcodes/gab/gab.c:190
-msgid "tab_i off end"
+#: Opcodes/gab/gab.c:192
+#, c-format
+msgid "tab_i off end: table number: %d\n"
msgstr ""
-#: Opcodes/gab/gab.c:202
+#: Opcodes/gab/gab.c:204
msgid "tabw_i: incorrect table number"
msgstr ""
-#: Opcodes/gab/gab.c:209
+#: Opcodes/gab/gab.c:211
msgid "tabw_i off end"
msgstr ""
-#: Opcodes/gab/gab.c:247
+#: Opcodes/gab/gab.c:249
msgid "tab_init: incorrect table number"
msgstr ""
-#: Opcodes/gab/gab.c:316
+#: Opcodes/gab/gab.c:318
msgid "printi parameter was not a \"quoted string\""
msgstr ""
-#: Opcodes/gab/gab.c:423
+#: Opcodes/gab/gab.c:425
msgid "adsynt2: wavetable not found!"
msgstr ""
-#: Opcodes/gab/gab.c:435
+#: Opcodes/gab/gab.c:437
msgid "adsynt2: freqtable not found!"
msgstr ""
-#: Opcodes/gab/gab.c:440
+#: Opcodes/gab/gab.c:442
msgid "adsynt2: partial count is greater than freqtable size!"
msgstr ""
-#: Opcodes/gab/gab.c:449
+#: Opcodes/gab/gab.c:451
msgid "adsynt2: amptable not found!"
msgstr ""
-#: Opcodes/gab/gab.c:454
+#: Opcodes/gab/gab.c:456
msgid "adsynt2: partial count is greater than amptable size!"
msgstr ""
-#: Opcodes/gab/gab.c:499
+#: Opcodes/gab/gab.c:501
msgid "adsynt2: not initialised"
msgstr ""
-#: Opcodes/gab/gab.c:741
+#: Opcodes/gab/gab.c:743
msgid "max_k: invalid imaxflag value"
msgstr ""
-#: Opcodes/gab/hvs.c:68
+#: Opcodes/gab/hvs.c:70
msgid "hvs1: a line segment must be delimited by 2 points at least"
msgstr ""
-#: Opcodes/gab/hvs.c:150
+#: Opcodes/gab/hvs.c:152
msgid "hvs2: a square area must be delimited by 2 lines at least"
msgstr ""
-#: Opcodes/gab/hvs.c:246
+#: Opcodes/gab/hvs.c:248
msgid "hvs3: a square area must be delimited by 2 lines at least"
msgstr ""
-#: Opcodes/gab/hvs.c:389
+#: Opcodes/gab/hvs.c:390
msgid "vphaseseg: the first function is invalid or missing"
msgstr ""
-#: Opcodes/gab/hvs.c:396
+#: Opcodes/gab/hvs.c:398 Opcodes/gab/vectorial.c:2301
msgid "vphaseseg: invalid num. of elements"
msgstr ""
-#: Opcodes/gab/hvs.c:414
+#: Opcodes/gab/hvs.c:416
msgid "vphaseseg: function invalid or missing"
msgstr ""
-#: Opcodes/gab/newgabopc.c:39 Opcodes/gab/newgabopc.c:54
+#: Opcodes/gab/newgabopc.c:40 Opcodes/gab/newgabopc.c:55
msgid "vtable1: incorrect table number"
msgstr ""
-#: Opcodes/gab/newgabopc.c:359
+#: Opcodes/gab/newgabopc.c:241 Opcodes/gab/newgabopc.c:296
+msgid "copyTabElems: incorrect destination table number"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:246 Opcodes/gab/newgabopc.c:301
+msgid ""
+"copyTabElems: destination table too short or number of elements to copy too "
+"big"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:252 Opcodes/gab/newgabopc.c:306
+#, fuzzy
+msgid "copyTabElems: incorrect source table number"
+msgstr "unbekannte Quelltabelle Zahl"
+
+#: Opcodes/gab/newgabopc.c:257 Opcodes/gab/newgabopc.c:310
+msgid ""
+"copyTabElems: source table size less than the number of elements to copy"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:273 Opcodes/gab/newgabopc.c:318
+msgid "copyTabElems: source table too short"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:276 Opcodes/gab/newgabopc.c:321
+msgid "copyTabElems: destination table too short"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:347
+msgid "inrg: audio input is not enabled"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:362
msgid "inrg: channel number cannot be < 1 (1 is the first channel)"
msgstr ""
-#: Opcodes/gab/newgabopc.c:400
+#: Opcodes/gab/newgabopc.c:403
msgid "outrg: channel number cannot be < 1 (1 is the first channel)"
msgstr ""
-#: Opcodes/gab/newgabopc.c:439 Opcodes/gab/newgabopc.c:671
+#: Opcodes/gab/newgabopc.c:440 Opcodes/gab/newgabopc.c:574
+#: Opcodes/gab/newgabopc.c:672
msgid "invalid function"
msgstr ""
-#: Opcodes/gab/newgabopc.c:442
+#: Opcodes/gab/newgabopc.c:443
msgid "lposc: no sample rate stored in function; assuming=sr\n"
msgstr ""
-#: Opcodes/gab/newgabopc.c:673
+#: Opcodes/gab/newgabopc.c:577
+msgid "lposcil: no sample rate stored in function assuming=sr\n"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:674
msgid "lposcil: no sample rate stored in function; assuming=sr\n"
msgstr ""
-#: Opcodes/gab/sliderTable.c:45 Opcodes/gab/sliderTable.c:254
+#: Opcodes/gab/sliderTable.c:47 Opcodes/gab/sliderTable.c:256
#: Opcodes/midiops3.c:44 Opcodes/midiops3.c:146 Opcodes/midiops3.c:259
#: Opcodes/midiops3.c:317 Opcodes/midiops3.c:413
msgid "illegal channel"
msgstr ""
-#: Opcodes/gab/sliderTable.c:65 Opcodes/gab/sliderTable.c:277
+#: Opcodes/gab/sliderTable.c:67 Opcodes/gab/sliderTable.c:280
#: Opcodes/midiops3.c:58 Opcodes/midiops3.c:162 Opcodes/midiops3.c:273
#, c-format
msgid "illegal control number at position n.%d"
msgstr ""
-#: Opcodes/gab/sliderTable.c:74
+#: Opcodes/gab/sliderTable.c:76
#, c-format
msgid ""
"sliderXtable: illegal initvalue at position %d. When using table indexing, "
"the init range is 0 to 1"
msgstr ""
-#: Opcodes/gab/sliderTable.c:84 Opcodes/gab/sliderTable.c:284
-#: Opcodes/gab/sliderTable.c:509 Opcodes/midiops3.c:64 Opcodes/midiops3.c:168
+#: Opcodes/gab/sliderTable.c:86 Opcodes/gab/sliderTable.c:287
+#: Opcodes/gab/sliderTable.c:513 Opcodes/midiops3.c:64 Opcodes/midiops3.c:168
#: Opcodes/midiops3.c:347
#, c-format
msgid "illegal initvalue at position n.%d"
msgstr ""
-#: Opcodes/gab/sliderTable.c:96 Opcodes/gab/sliderTable.c:296
+#: Opcodes/gab/sliderTable.c:98 Opcodes/gab/sliderTable.c:299
msgid "sliderXtable: zero is illegal in exponential operations"
msgstr ""
-#: Opcodes/gab/sliderTable.c:312
+#: Opcodes/gab/sliderTable.c:315
#, c-format
msgid ""
"sliderXtable: illegal initvalue at position %d. When using table indexing, "
"the init range is 0 to 1"
msgstr ""
-#: Opcodes/gab/sliderTable.c:565 Opcodes/midiops2.c:321 Opcodes/midiops2.c:359
+#: Opcodes/gab/sliderTable.c:569 Opcodes/midiops2.c:321 Opcodes/midiops2.c:359
#: Opcodes/midiops2.c:391 Opcodes/midiops2.c:440 Opcodes/midiops2.c:475
#: Opcodes/midiops2.c:517 Opcodes/midiops2.c:532 Opcodes/midiops2.c:551
msgid "illegal midi channel"
msgstr ""
-#: Opcodes/gab/tabmorph.c:42
+#: Opcodes/gab/tabmorph.c:43
msgid "tabmorph: invalid table number"
msgstr ""
-#: Opcodes/gab/tabmorph.c:46
+#: Opcodes/gab/tabmorph.c:47
msgid "tabmorph: all tables must have the same length!"
msgstr ""
-#: Opcodes/gab/vectorial.c:33
+#: Opcodes/gab/vectorial.c:35
msgid "mtablei: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:63 Opcodes/gab/vectorial.c:83
-#: Opcodes/gab/vectorial.c:133 Opcodes/gab/vectorial.c:200
+#: Opcodes/gab/vectorial.c:65 Opcodes/gab/vectorial.c:85
+#: Opcodes/gab/vectorial.c:135 Opcodes/gab/vectorial.c:202
msgid "mtable: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:185
+#: Opcodes/gab/vectorial.c:187
msgid "mtabi: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:252
+#: Opcodes/gab/vectorial.c:254
msgid "mtablewi: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:268 Opcodes/gab/vectorial.c:288
-#: Opcodes/gab/vectorial.c:317 Opcodes/gab/vectorial.c:362
-#: Opcodes/gab/vectorial.c:406
+#: Opcodes/gab/vectorial.c:270 Opcodes/gab/vectorial.c:290
+#: Opcodes/gab/vectorial.c:319 Opcodes/gab/vectorial.c:364
+#: Opcodes/gab/vectorial.c:408
msgid "mtabw: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:348
+#: Opcodes/gab/vectorial.c:350
msgid "mtabwi: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:380
+#: Opcodes/gab/vectorial.c:382
msgid "mtablew: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:454 Opcodes/gab/vectorial.c:513
+#: Opcodes/gab/vectorial.c:457 Opcodes/gab/vectorial.c:516
#, c-format
msgid "vadd_i: invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:470
+#: Opcodes/gab/vectorial.c:473
msgid "vadd_i: ifn length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:497
+#: Opcodes/gab/vectorial.c:500
msgid "vadd: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:529
+#: Opcodes/gab/vectorial.c:532
msgid "vmult_i: ifn length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:556
+#: Opcodes/gab/vectorial.c:559
msgid "vmult: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:572
+#: Opcodes/gab/vectorial.c:575
#, c-format
msgid "vpow_i: invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:589
+#: Opcodes/gab/vectorial.c:592
msgid "vpow_i: ifn length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:617
+#: Opcodes/gab/vectorial.c:620
msgid "vpow: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:633
+#: Opcodes/gab/vectorial.c:636
#, c-format
msgid "vexp_i: invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:649
+#: Opcodes/gab/vectorial.c:652
msgid "vexp_i: ifn length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:676
+#: Opcodes/gab/vectorial.c:679
msgid "vexp: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:694
+#: Opcodes/gab/vectorial.c:697
#, c-format
msgid "vectorsop: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:699
+#: Opcodes/gab/vectorial.c:702
#, c-format
msgid "vectorsop: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:738
+#: Opcodes/gab/vectorial.c:742
msgid "vcopy: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:756
+#: Opcodes/gab/vectorial.c:760
msgid "vcopy: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:783
+#: Opcodes/gab/vectorial.c:787
#, c-format
msgid "vcopy_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:788
+#: Opcodes/gab/vectorial.c:792
#, c-format
msgid "vcopy_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:810
+#: Opcodes/gab/vectorial.c:814
msgid "vcopy_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:827
+#: Opcodes/gab/vectorial.c:831
msgid "vcopy_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:866
+#: Opcodes/gab/vectorial.c:870
msgid "vaddv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:885
+#: Opcodes/gab/vectorial.c:889
msgid "vaddv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:911
+#: Opcodes/gab/vectorial.c:915
#, c-format
msgid "vaddv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:916
+#: Opcodes/gab/vectorial.c:920
#, c-format
msgid "vaddv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:938
+#: Opcodes/gab/vectorial.c:942
msgid "vaddv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:956
+#: Opcodes/gab/vectorial.c:960
msgid "vaddv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:987
+#: Opcodes/gab/vectorial.c:991
msgid "vsubv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1006
+#: Opcodes/gab/vectorial.c:1010
msgid "vsubv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1033
+#: Opcodes/gab/vectorial.c:1037
#, c-format
msgid "vsubv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1038
+#: Opcodes/gab/vectorial.c:1042
#, c-format
msgid "vsubv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1060
+#: Opcodes/gab/vectorial.c:1064
msgid "vsubv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1078
+#: Opcodes/gab/vectorial.c:1082
msgid "vsubv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1115
+#: Opcodes/gab/vectorial.c:1119
msgid "vmultv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1134
+#: Opcodes/gab/vectorial.c:1138
msgid "vmultv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1161
+#: Opcodes/gab/vectorial.c:1165
#, c-format
msgid "vmultv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1166
+#: Opcodes/gab/vectorial.c:1170
#, c-format
msgid "vmultv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1188
+#: Opcodes/gab/vectorial.c:1192
msgid "vmultv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1205
+#: Opcodes/gab/vectorial.c:1209
msgid "vmultv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1242
+#: Opcodes/gab/vectorial.c:1246
msgid "vdivv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1261
+#: Opcodes/gab/vectorial.c:1265
msgid "vdivv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1288
+#: Opcodes/gab/vectorial.c:1292
#, c-format
msgid "vdivv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1293
+#: Opcodes/gab/vectorial.c:1297
#, c-format
msgid "vdivv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1315
+#: Opcodes/gab/vectorial.c:1319
msgid "vdivv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1333
+#: Opcodes/gab/vectorial.c:1337
msgid "vdivv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1370
+#: Opcodes/gab/vectorial.c:1374
msgid "vpowv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1389
+#: Opcodes/gab/vectorial.c:1393
msgid "vpowv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1416
+#: Opcodes/gab/vectorial.c:1420
#, c-format
msgid "vpowv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1421
+#: Opcodes/gab/vectorial.c:1425
#, c-format
msgid "vpowv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1443
+#: Opcodes/gab/vectorial.c:1447
msgid "vpowv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1460
+#: Opcodes/gab/vectorial.c:1464
msgid "vpowv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1497
+#: Opcodes/gab/vectorial.c:1501
msgid "vexpv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1516
+#: Opcodes/gab/vectorial.c:1520
msgid "vexpv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1543
+#: Opcodes/gab/vectorial.c:1547
#, c-format
msgid "vexpv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1548
+#: Opcodes/gab/vectorial.c:1552
#, c-format
msgid "vexpv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1570
+#: Opcodes/gab/vectorial.c:1574
msgid "vexpv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1588
+#: Opcodes/gab/vectorial.c:1592
msgid "vexpv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1625
+#: Opcodes/gab/vectorial.c:1629
msgid "vmap: Error: ifn1 and ifn2 can not be the same"
msgstr ""
-#: Opcodes/gab/vectorial.c:1630
+#: Opcodes/gab/vectorial.c:1634
#, c-format
msgid "vmap: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1635
+#: Opcodes/gab/vectorial.c:1639
#, c-format
msgid "vmap: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1657
+#: Opcodes/gab/vectorial.c:1661
msgid "vmap: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1674
+#: Opcodes/gab/vectorial.c:1678
msgid "vmap: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1870
+#: Opcodes/gab/vectorial.c:1698
+#, fuzzy
+msgid "vectorop: invalid num of elements"
+msgstr "unzulässiger Name für Instrument"
+
+#: Opcodes/gab/vectorial.c:1727
+msgid "vport: invalid table length or num of elements"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1730
+msgid "vport: invalid table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1735
+msgid "vport: invalid init table length or num of elements"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1738
+msgid "vport: invalid init table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1875
#, c-format
msgid "vrandh: Seeding from current time %lu\n"
msgstr ""
-#: Opcodes/gab/vectorial.c:1968
+#: Opcodes/gab/vectorial.c:1888
+msgid "vrandh: Invalid table."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1891
+msgid "vrandh: idstoffset is greater than table length."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1896
+msgid "randh: Table length exceeded, last elements discarded."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1975
#, c-format
msgid "vrandi: Seeding from current time %lu\n"
msgstr ""
-#: Opcodes/grain4.c:57
+#: Opcodes/gab/vectorial.c:1987
+msgid "vrandi: Invalid table."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1990
+msgid "vrandi: idstoffset is greater thantable length."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1995
+msgid "vrandi: Table length exceeded, last elements discarded."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2077 Opcodes/gab/vectorial.c:2084
+#: Opcodes/gab/vectorial.c:2091
+#, fuzzy
+msgid "vecdelay: invalid num of elements"
+msgstr "unzulässiger Name für Instrument"
+
+#: Opcodes/gab/vectorial.c:2079
+msgid "vecdly: invalid output table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2086
+msgid "vecdly: invalid input table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2093
+msgid "vecdly: invalid delay table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2138
+#, fuzzy
+msgid "vecdly: not initialised"
+msgstr "vdelay: nicht initialisiert"
+
+#: Opcodes/gab/vectorial.c:2181
+msgid "vlinseg/vexpseg: invalid num. of elements"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2223 Opcodes/vpvoc.c:118
+msgid "tableseg: not initialised"
+msgstr "tableseg: nicht initialisiert"
+
+#: Opcodes/gab/vectorial.c:2253 Opcodes/vpvoc.c:146
+msgid "tablexseg: not initialised"
+msgstr "tablexseg: nicht initialisiert"
+
+#: Opcodes/gab/vectorial.c:2406
+#, fuzzy
+msgid "vdelayk: not initialised"
+msgstr "delayk: nicht initialisiert"
+
+#: Opcodes/gab/vectorial.c:2439 Opcodes/gab/vectorial.c:2445
+#, fuzzy
+msgid "cella: invalid num of elements"
+msgstr "unzulässiger Name für Instrument"
+
+#: Opcodes/gab/vectorial.c:2441
+msgid "cella: invalid output table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2448
+msgid "cella: invalid initial state table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2452
+msgid "cella: invalid rule table"
+msgstr ""
+
+#: Opcodes/grain4.c:59
msgid "granule_set: Unable to find function table"
msgstr ""
-#: Opcodes/grain4.c:67
+#: Opcodes/grain4.c:69
msgid "granule_set: Unable to find function table for envelope"
msgstr ""
-#: Opcodes/grain4.c:73
+#: Opcodes/grain4.c:75
msgid "granule_set: Too many voices"
msgstr ""
-#: Opcodes/grain4.c:76
+#: Opcodes/grain4.c:78
msgid "granule_set: iratio must be greater then 0"
msgstr "granule_set: iratio müssen grösseres dann 0 sein"
-#: Opcodes/grain4.c:80
+#: Opcodes/grain4.c:82
msgid "granule_set: imode must be -1, 0 or +1"
msgstr ""
-#: Opcodes/grain4.c:84
+#: Opcodes/grain4.c:86
msgid "granule_set: Illegal ithd, must be greater than zero"
msgstr ""
-#: Opcodes/grain4.c:89
+#: Opcodes/grain4.c:91
msgid "granule_set: ipshift must be integer between 0 and 4"
msgstr ""
-#: Opcodes/grain4.c:94
+#: Opcodes/grain4.c:96
msgid "granule_set: Not enough voices for the number of pitches"
msgstr ""
-#: Opcodes/grain4.c:101
+#: Opcodes/grain4.c:103
msgid "granule_set: ipitch1 must be greater then zero"
msgstr "granule_set: ipitch1 müssen grösseres dann null sein"
-#: Opcodes/grain4.c:106
+#: Opcodes/grain4.c:108
msgid "granule_set: ipitch2 must be greater then zero"
msgstr "granule_set: ipitch2 müssen grösseres dann null sein"
-#: Opcodes/grain4.c:111
+#: Opcodes/grain4.c:113
msgid "granule_set: ipitch3 must be greater then zero"
msgstr "granule_set: ipitch3 müssen grösseres dann null sein"
-#: Opcodes/grain4.c:116
+#: Opcodes/grain4.c:118
msgid "granule_set: ipitch4 must be greater then zero"
msgstr "granule_set: ipitch4 müssen grösseres dann null sein"
-#: Opcodes/grain4.c:121
+#: Opcodes/grain4.c:123
msgid "granule_set: must be positive and less than function table length"
msgstr ""
-#: Opcodes/grain4.c:125
+#: Opcodes/grain4.c:127
msgid "granule_set: igskip_os must be greater then 0"
msgstr "granule_set: igskip_os müssen grösseres dann 0 sein"
-#: Opcodes/grain4.c:134
+#: Opcodes/grain4.c:136
msgid "granule_set: kgap must be greater then 0"
msgstr "granule_set: kgap müssen grösseres dann 0 sein"
-#: Opcodes/grain4.c:138
+#: Opcodes/grain4.c:140
#, c-format
msgid "granule_set: igap_os must be 0%% to 100%%"
msgstr ""
-#: Opcodes/grain4.c:142
+#: Opcodes/grain4.c:144
msgid "granule_set: kgsize must be greater then 0"
msgstr "granule_set: kgsize müssen grösseres dann 0 sein"
-#: Opcodes/grain4.c:146
+#: Opcodes/grain4.c:148
#, c-format
msgid "granule_set: igsize_os must be 0%% to 100%%"
msgstr ""
-#: Opcodes/grain4.c:152
+#: Opcodes/grain4.c:154
msgid "granule_set: Illegal value of iatt and/or idec"
msgstr ""
-#: Opcodes/grain4.c:236
+#: Opcodes/grain4.c:238
msgid "granule_set: Illegal combination of igskip and ilength"
msgstr ""
-#: Opcodes/grain4.c:243
+#: Opcodes/grain4.c:245
#, c-format
msgid ""
"granule_set: WARNING * ilength may be too short * \n"
@@ -6646,7 +6534,7 @@ msgid ""
"ilength is %f Sec, kgsize is %f Sec\n"
msgstr ""
-#: Opcodes/grain4.c:418
+#: Opcodes/grain4.c:419
msgid "grain4: not initialised"
msgstr "grain4: nicht initialisiert"
@@ -6658,92 +6546,88 @@ msgstr ""
msgid "grain: not initialised"
msgstr "grain: nicht initialisiert"
-#: Opcodes/harmon.c:224
+#: Opcodes/harmon.c:226
msgid "harm signal has positive lead\n"
msgstr ""
-#: Opcodes/harmon.c:231
+#: Opcodes/harmon.c:233
msgid "harm signal has negative lead\n"
msgstr ""
-#: Opcodes/harmon.c:361
+#: Opcodes/harmon.c:363
msgid "harmon234: out of range\n"
msgstr ""
-#: Opcodes/hrtferX.c:79
+#: Opcodes/hrtferX.c:81
#, c-format
msgid ""
"Orchestra sampling rate is not compatible with HRTF.\n"
"Should be %d...exiting."
msgstr ""
-#: Opcodes/hrtferX.c:87
+#: Opcodes/hrtferX.c:89
msgid ""
"\n"
"Last argument must be the string 'HRTFcompact' ...correcting.\n"
msgstr ""
-#: Opcodes/hrtferX.c:489
+#: Opcodes/hrtferX.c:494
msgid "hrtfer: not initialised"
msgstr "hrtfer: nicht initialisiert"
-#: Opcodes/hrtfopcodes.c:232
+#: Opcodes/hrtfopcodes.c:260 Opcodes/hrtfopcodes.c:1434
+#: Opcodes/hrtfearly.c:300 Opcodes/hrtfreverb.c:257
#, c-format
msgid ""
"\n"
-"Orchestra sampling rate is not compatible with HRTF data files\n"
-"Should be %.0f, see Csound help for object\n"
+"\n"
+"WARNING!!:\n"
+"Orchestra SR not compatible with HRTF processing SR of: %.0f\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:251 Opcodes/hrtfopcodes.c:275
-#: Opcodes/hrtfopcodes.c:298 Opcodes/hrtfopcodes.c:1257
-#: Opcodes/hrtfopcodes.c:1280 Opcodes/hrtfopcodes.c:1303
-#: Opcodes/hrtfopcodes.c:1854 Opcodes/hrtfopcodes.c:1876
-#: Opcodes/hrtfopcodes.c:1898
+#: Opcodes/hrtfopcodes.c:287 Opcodes/hrtfopcodes.c:1461
+#: Opcodes/hrtfopcodes.c:2071 Opcodes/hrtfearly.c:327 Opcodes/hrtfreverb.c:300
msgid ""
"\n"
"\n"
"\n"
-"cannot load left data file, exiting\n"
+"Cannot load left data file, exiting\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:259 Opcodes/hrtfopcodes.c:283
-#: Opcodes/hrtfopcodes.c:306 Opcodes/hrtfopcodes.c:1265
-#: Opcodes/hrtfopcodes.c:1288 Opcodes/hrtfopcodes.c:1311
-#: Opcodes/hrtfopcodes.c:1862 Opcodes/hrtfopcodes.c:1884
-#: Opcodes/hrtfopcodes.c:1906
+#: Opcodes/hrtfopcodes.c:294 Opcodes/hrtfopcodes.c:1468
+#: Opcodes/hrtfopcodes.c:2078 Opcodes/hrtfearly.c:334 Opcodes/hrtfreverb.c:306
msgid ""
"\n"
"\n"
"\n"
-"cannot load right data file, exiting\n"
+"Cannot load right data file, exiting\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:313 Opcodes/hrtfopcodes.c:1912
+#: Opcodes/hrtfopcodes.c:690 Opcodes/hrtfearly.c:1241
msgid ""
"\n"
-"\n"
-"\n"
-" Sampling rate not supported, exiting\n"
+"WARNING: fades are overlapping: this could lead to noise: reduce fade size "
+"or change trajectory\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:600
+#: Opcodes/hrtfopcodes.c:2052
+#, c-format
msgid ""
-"fades are overlapping: this could lead to noise: reduce fade size or change "
-"trajectory\n"
+"\n"
+"\n"
+"WARNING!!:\n"
+"Orchestra SR not compatiblewith HRTF processing SR of: %.0f\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:1239 Opcodes/hrtfopcodes.c:1837
-#, c-format
+#: Opcodes/hrtfreverb.c:832
msgid ""
-"Orchestra sampling rate is not compatible with HRTF data files\n"
-"Should be %.0f, see Csound help for object\n"
"\n"
+"warning, approaching instability, fixed with a flat late reverb!"
msgstr ""
#: Opcodes/ifd.c:74
@@ -6769,10 +6653,9 @@ msgid "imageload: file %s is not in PNG format.\n"
msgstr ""
#: Opcodes/imageOpcodes.c:119 Opcodes/imageOpcodes.c:126
-#: Opcodes/imageOpcodes.c:134 Opcodes/imageOpcodes.c:165
-#: Opcodes/imageOpcodes.c:174 Opcodes/imageOpcodes.c:188
-#: Opcodes/imageOpcodes.c:291 Opcodes/imageOpcodes.c:298
-#: Opcodes/imageOpcodes.c:311
+#: Opcodes/imageOpcodes.c:165 Opcodes/imageOpcodes.c:174
+#: Opcodes/imageOpcodes.c:188 Opcodes/imageOpcodes.c:291
+#: Opcodes/imageOpcodes.c:298 Opcodes/imageOpcodes.c:311
msgid "imageload: out of memory.\n"
msgstr ""
@@ -6792,62 +6675,62 @@ msgid ""
"Status: %d\n"
msgstr ""
-#: Opcodes/jacko.cpp:543
+#: Opcodes/jacko.cpp:545
#, c-format
msgid "Created Jack client \"%s\" for Jack server \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:548
+#: Opcodes/jacko.cpp:551
#, c-format
msgid "Jack buffer size %d != Csound ksmps %d, exiting...\n"
msgstr ""
-#: Opcodes/jacko.cpp:556
+#: Opcodes/jacko.cpp:559
#, c-format
msgid "Jack sampling rate %d != Csound sr %d, exiting...\n"
msgstr ""
-#: Opcodes/jacko.cpp:567
+#: Opcodes/jacko.cpp:570
#, c-format
msgid "Activated Jack client \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:571
+#: Opcodes/jacko.cpp:574
#, c-format
msgid "Failed to activate Jack client \"%s\": status %d.\n"
msgstr ""
-#: Opcodes/jacko.cpp:586
+#: Opcodes/jacko.cpp:589
msgid "BEGAN JackoState::close()...\n"
msgstr ""
-#: Opcodes/jacko.cpp:622
+#: Opcodes/jacko.cpp:629
msgid "ENDED JackoState::close().\n"
msgstr ""
-#: Opcodes/jacko.cpp:876
+#: Opcodes/jacko.cpp:892
#, c-format
msgid "Failed to set Jack freewheeling mode to \"%s\": error %d.\n"
msgstr ""
-#: Opcodes/jacko.cpp:878
+#: Opcodes/jacko.cpp:895
#, c-format
msgid "Set Jack freewheeling mode to \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:893
+#: Opcodes/jacko.cpp:911
#, c-format
msgid "Turned Jack connections \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:934 Opcodes/jacko.cpp:1034 Opcodes/jacko.cpp:1134
-#: Opcodes/jacko.cpp:1200
+#: Opcodes/jacko.cpp:955 Opcodes/jacko.cpp:1062 Opcodes/jacko.cpp:1169
+#: Opcodes/jacko.cpp:1241
#, c-format
msgid "Could not create Jack port \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:946 Opcodes/jacko.cpp:1046 Opcodes/jacko.cpp:1146
-#: Opcodes/jacko.cpp:1212
+#: Opcodes/jacko.cpp:969 Opcodes/jacko.cpp:1077 Opcodes/jacko.cpp:1184
+#: Opcodes/jacko.cpp:1255
#, c-format
msgid "Could not create Jack connection from \"%s\" to \"%s\": status %d.\n"
msgstr ""
@@ -6886,27 +6769,27 @@ msgstr ""
msgid "lorisread cannot load %s"
msgstr ""
-#: Opcodes/loscilx.c:74 Opcodes/loscilx.c:178
+#: Opcodes/loscilx.c:76 Opcodes/loscilx.c:180
#, c-format
msgid "could not load '%s'"
msgstr ""
-#: Opcodes/loscilx.c:88 Opcodes/loscilx.c:258
+#: Opcodes/loscilx.c:90 Opcodes/loscilx.c:260
#, c-format
msgid "invalid loop mode: %d"
msgstr ""
-#: Opcodes/loscilx.c:170
+#: Opcodes/loscilx.c:172
msgid "loscilx: invalid number of output arguments"
msgstr ""
-#: Opcodes/loscilx.c:190 Opcodes/loscilx.c:219 Opcodes/pvlock.c:94
-#: Opcodes/pvlock.c:296 Opcodes/pvsbasic.c:460
+#: Opcodes/loscilx.c:192 Opcodes/loscilx.c:221 Opcodes/pvlock.c:118
+#: Opcodes/pvlock.c:320 Opcodes/pvsbasic.c:460
msgid ""
"number of output arguments inconsistent with number of sound file channels"
msgstr ""
-#: Opcodes/loscilx.c:665
+#: Opcodes/loscilx.c:667
msgid "loscilx: not initialised"
msgstr "loscilx: nicht initialisiert"
@@ -6914,11 +6797,11 @@ msgstr "loscilx: nicht initialisiert"
msgid "illegal order num. (min 1, max 10)"
msgstr ""
-#: Opcodes/mandolin.c:80
+#: Opcodes/mandolin.c:81
msgid "No table for Mandolin"
msgstr "Keine Tabelle für Mandolin"
-#: Opcodes/mandolin.c:90
+#: Opcodes/mandolin.c:91
msgid "No base frequency for mandolin"
msgstr ""
@@ -6949,27 +6832,27 @@ msgstr ""
msgid "illegal lsb control number at position n.%d"
msgstr ""
-#: Opcodes/modal4.c:45
+#: Opcodes/modal4.c:46
msgid "No table for Modal4 case"
msgstr ""
-#: Opcodes/modal4.c:245
+#: Opcodes/modal4.c:246
msgid "No table for Marimba strike"
msgstr ""
-#: Opcodes/modal4.c:284
+#: Opcodes/modal4.c:285
msgid "striking three times here!!!\n"
msgstr ""
-#: Opcodes/modal4.c:289
+#: Opcodes/modal4.c:290
msgid "striking twice here!!\n"
msgstr ""
-#: Opcodes/modal4.c:359
+#: Opcodes/modal4.c:360
msgid "No table for Vibraphone strike"
msgstr ""
-#: Opcodes/modal4.c:440
+#: Opcodes/modal4.c:441
msgid "No table for Agogobell strike"
msgstr ""
@@ -6977,12 +6860,12 @@ msgstr ""
msgid "modmatrix: "
msgstr ""
-#: Opcodes/mp3in.c:92 Opcodes/mp3in.c:230
+#: Opcodes/mp3in.c:93 Opcodes/mp3in.c:231
#, c-format
msgid "mp3in: %s: failed to open file"
msgstr ""
-#: Opcodes/mp3in.c:139
+#: Opcodes/mp3in.c:140
#, c-format
msgid "mp3in: file sample rate (%d) != orchestra sr (%d)\n"
msgstr ""
@@ -7271,7 +7154,7 @@ msgstr ""
msgid "No open glove"
msgstr ""
-#: Opcodes/pan2.c:43
+#: Opcodes/pan2.c:45
msgid "Unknown panning type"
msgstr ""
@@ -7287,197 +7170,201 @@ msgstr ""
msgid "partikkelsync: could not find opcode id"
msgstr ""
-#: Opcodes/physmod.c:121
+#: Opcodes/physmod.c:122
msgid "No table for Clarinet"
msgstr "Keine Tabelle für Clarinet"
-#: Opcodes/physmod.c:129
+#: Opcodes/physmod.c:130
msgid "No base frequency for clarinet -- assuming 50Hz\n"
msgstr ""
-#: Opcodes/physmod.c:283
+#: Opcodes/physmod.c:284
msgid "No table for Flute"
msgstr "Keine Tabelle für Flute"
-#: Opcodes/physmod.c:291
+#: Opcodes/physmod.c:292
msgid "No base frequency for flute -- assumed to be 50Hz\n"
msgstr ""
-#: Opcodes/physmod.c:481
+#: Opcodes/physmod.c:482
msgid "No table for wgbow vibrato"
msgstr ""
-#: Opcodes/physmod.c:689
+#: Opcodes/physmod.c:490
+msgid "unknown lowest frequency for bowed string -- assuming 50Hz\n"
+msgstr ""
+
+#: Opcodes/physmod.c:690
msgid "DlineA not initialised"
msgstr "DlineA nicht initialisiert"
-#: Opcodes/physmod.c:756
+#: Opcodes/physmod.c:757
msgid "No table for Brass"
msgstr "Keine Tabelle für Brass"
-#: Opcodes/physmod.c:765
+#: Opcodes/physmod.c:766
msgid "No base frequency for brass -- assumed to be 50Hz\n"
msgstr ""
-#: Opcodes/physutil.c:137 Opcodes/physutil.c:312 Opcodes/physutil.c:324
-#: Opcodes/physutil.c:345
+#: Opcodes/physutil.c:138 Opcodes/physutil.c:313 Opcodes/physutil.c:325
+#: Opcodes/physutil.c:346
msgid "negative rates not allowed!!, correcting\n"
msgstr ""
-#: Opcodes/physutil.c:186
+#: Opcodes/physutil.c:187
#, c-format
msgid "Envelope: value=%f target=%f rate=%f state=%d\n"
msgstr ""
-#: Opcodes/physutil.c:335
+#: Opcodes/physutil.c:336
msgid "Sustain level out of range!!, correcting\n"
msgstr ""
-#: Opcodes/physutil.c:356 Opcodes/physutil.c:366 Opcodes/physutil.c:376
+#: Opcodes/physutil.c:357 Opcodes/physutil.c:367 Opcodes/physutil.c:377
msgid "negative times not allowed!!, correcting\n"
msgstr ""
-#: Opcodes/pitch0.c:37
+#: Opcodes/pitch0.c:38
#, c-format
msgid "Muting new instances of instr %d\n"
msgstr ""
-#: Opcodes/pitch0.c:40
+#: Opcodes/pitch0.c:41
#, c-format
msgid "Allowing instrument %d to start\n"
msgstr ""
-#: Opcodes/pitch.c:84 Opcodes/spectra.c:78
+#: Opcodes/pitch.c:85 Opcodes/spectra.c:80
msgid "illegal iocts"
msgstr ""
-#: Opcodes/pitch.c:86 Opcodes/spectra.c:80
+#: Opcodes/pitch.c:87 Opcodes/spectra.c:82
msgid "illegal ifrqs"
msgstr ""
-#: Opcodes/pitch.c:180 Opcodes/spectra.c:584
+#: Opcodes/pitch.c:181 Opcodes/spectra.c:586
msgid "illegal no of partials"
msgstr ""
-#: Opcodes/pitch.c:205
+#: Opcodes/pitch.c:206
msgid "per octave rolloff too steep"
msgstr ""
-#: Opcodes/pitch.c:219 Opcodes/spectra.c:625
+#: Opcodes/pitch.c:220 Opcodes/spectra.c:627
msgid "illegal lo-hi values"
msgstr ""
-#: Opcodes/pitch.c:454
+#: Opcodes/pitch.c:455
msgid "pitch: not initialised"
msgstr "pitch: nicht initialisiert"
-#: Opcodes/pitch.c:463
+#: Opcodes/pitch.c:464
msgid "Must have even number of arguments in mac\n"
msgstr ""
-#: Opcodes/pitch.c:552
+#: Opcodes/pitch.c:553
msgid "clockread: clock still running, call clockoff first"
msgstr ""
-#: Opcodes/pitch.c:578
+#: Opcodes/pitch.c:579
msgid "adsynt: wavetable not found!"
msgstr ""
-#: Opcodes/pitch.c:591
+#: Opcodes/pitch.c:592
msgid "adsynt: freqtable not found!"
msgstr ""
-#: Opcodes/pitch.c:596
+#: Opcodes/pitch.c:597
msgid "adsynt: partial count is greater than freqtable size!"
msgstr ""
-#: Opcodes/pitch.c:604
+#: Opcodes/pitch.c:605
msgid "adsynt: amptable not found!"
msgstr ""
-#: Opcodes/pitch.c:609
+#: Opcodes/pitch.c:610
msgid "adsynt: partial count is greater than amptable size!"
msgstr ""
-#: Opcodes/pitch.c:640
+#: Opcodes/pitch.c:641
msgid "adsynt: not initialised"
msgstr "adsynt: nicht initialisiert"
-#: Opcodes/pitch.c:716
+#: Opcodes/pitch.c:717
msgid "hsboscil: not initialised"
msgstr "hsboscil: nicht initialisiert"
-#: Opcodes/pitch.c:799
+#: Opcodes/pitch.c:800
msgid "pitchamdf: maxcps must be > mincps !"
msgstr ""
-#: Opcodes/pitch.c:945
+#: Opcodes/pitch.c:946
msgid "pitchamdf: not initialised"
msgstr "pitchamdf: nicht initialisiert"
-#: Opcodes/pitch.c:1125 Opcodes/pitch.c:1152
+#: Opcodes/pitch.c:1126 Opcodes/pitch.c:1153
msgid "phasorbnk: not initialised"
msgstr "phasorbnk: nicht initialisiert"
-#: Opcodes/pitch.c:1214
+#: Opcodes/pitch.c:1215
msgid "pinkish: Invalid method code"
msgstr ""
-#: Opcodes/pitch.c:1225
+#: Opcodes/pitch.c:1226
msgid "pinkish: Filter method requires a-rate (noise) input"
msgstr ""
-#: Opcodes/pitch.c:1348
+#: Opcodes/pitch.c:1349
#, c-format
msgid ""
"pinkish: Gardner method requires 4-%d bands. Default %ld substituted for "
"%d.\n"
msgstr ""
-#: Opcodes/pitch.c:1731
+#: Opcodes/pitch.c:1733
msgid "Incorrect argument count in transeg"
msgstr ""
-#: Opcodes/pitch.c:1782
+#: Opcodes/pitch.c:1784
msgid "Incorrect argument count in transegb"
msgstr ""
-#: Opcodes/pitch.c:1832 Opcodes/pitch.c:1971
+#: Opcodes/pitch.c:1834 Opcodes/pitch.c:1977
#, fuzzy
msgid "Error: transeg not initialised (krate)\n"
msgstr ""
"\n"
"Störung: transeg nicht initialisiert (krate)"
-#: Opcodes/pitch.c:1867 Opcodes/pitch.c:2013
+#: Opcodes/pitch.c:1869 Opcodes/pitch.c:2027
msgid "transeg: not initialised (arate)\n"
msgstr "transeg: nicht initialisiert (arate)\n"
-#: Opcodes/pitch.c:1921
+#: Opcodes/pitch.c:1924
msgid "Incorrect argument count in transegr"
msgstr ""
-#: Opcodes/pitch.c:2269
+#: Opcodes/pitch.c:2294
#, fuzzy
msgid "median: not initialised (arate)\n"
msgstr "linseg: nicht initialisiert (arate)\n"
-#: Opcodes/pitch.c:2273 Opcodes/pitch.c:2321
+#: Opcodes/pitch.c:2298 Opcodes/pitch.c:2345
#, c-format
msgid "median: window (%d)larger than maximum(%d); truncated"
msgstr ""
-#: Opcodes/pitch.c:2317
+#: Opcodes/pitch.c:2341
#, fuzzy
msgid "median: not initialised (krate)\n"
msgstr "linseg nicht initialisiert (krate)\n"
-#: Opcodes/pitchtrack.c:369
+#: Opcodes/pitchtrack.c:370
#, c-format
msgid "ptrack: FFT size out of range; using %d\n"
msgstr ""
-#: Opcodes/pitchtrack.c:382
+#: Opcodes/pitchtrack.c:383
#, c-format
msgid "ptrack: FFT size not a power of 2; using %d\n"
msgstr ""
@@ -7495,7 +7382,7 @@ msgstr ""
msgid "Error: %s, %s"
msgstr "Störung: %s, %s"
-#: Opcodes/ppp.c:20 Opcodes/pvlock.c:454 Opcodes/pvsband.c:46
+#: Opcodes/ppp.c:20 Opcodes/pvlock.c:478 Opcodes/pvsband.c:46
#: Opcodes/pvsbasic.c:575 Opcodes/pvsbasic.c:880 Opcodes/pvsbasic.c:1080
#: Opcodes/pvsbasic.c:1180 Opcodes/pvsbasic.c:1395 Opcodes/pvsbasic.c:1593
#: Opcodes/pvsbasic.c:1756 Opcodes/pvslock.c:20
@@ -7514,62 +7401,62 @@ msgstr ""
msgid "psynth: function table not found\n"
msgstr ""
-#: Opcodes/psynth.c:569 Opcodes/psynth.c:662
+#: Opcodes/psynth.c:567 Opcodes/psynth.c:660
msgid "Input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:767
+#: Opcodes/psynth.c:765
msgid "trsplit: input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:863 Opcodes/psynth.c:1027
+#: Opcodes/psynth.c:861 Opcodes/psynth.c:1023
msgid "trmix: first input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:868 Opcodes/psynth.c:1032
+#: Opcodes/psynth.c:866 Opcodes/psynth.c:1028
msgid "trmix: second input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:943
+#: Opcodes/psynth.c:939
msgid "trfil: input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:948
+#: Opcodes/psynth.c:944
msgid "trfil: could not find function table\n"
msgstr ""
-#: Opcodes/psynth.c:1135
+#: Opcodes/psynth.c:1131
msgid "binit: first input not in TRACKS format\n"
msgstr ""
-#: Opcodes/pvadd.c:153
+#: Opcodes/pvadd.c:150
msgid "PVADD ktimpnt truncated to last frame"
msgstr ""
-#: Opcodes/pvadd.c:191
+#: Opcodes/pvadd.c:188
msgid "pvadd: not initialised"
msgstr "pvadd: nicht initialisiert"
-#: Opcodes/pvadd.c:193
+#: Opcodes/pvadd.c:190
msgid "PVADD timpnt < 0"
msgstr ""
-#: Opcodes/pvadd.c:201
+#: Opcodes/pvadd.c:198
#, c-format
msgid "PVADD cannot load %s"
msgstr ""
-#: Opcodes/pvadd.c:205 Opcodes/ugens8.c:223
+#: Opcodes/pvadd.c:202 Opcodes/ugens8.c:223
#, c-format
msgid "pvoc-ex file %s: FFT size %d too large for Csound"
msgstr ""
-#: Opcodes/pvadd.c:210
+#: Opcodes/pvadd.c:207
#, c-format
msgid "PV frame %ld seems too small in %s"
msgstr ""
-#: Opcodes/pvadd.c:215 Opcodes/pvread.c:115 Opcodes/ugens8.c:229
+#: Opcodes/pvadd.c:212 Opcodes/pvread.c:115 Opcodes/ugens8.c:229
#, c-format
msgid "pvoc-ex file %s is not mono"
msgstr ""
@@ -7579,98 +7466,98 @@ msgstr ""
msgid "PVBUFREAD cannot load %s"
msgstr ""
-#: Opcodes/pvinterp.c:76 Opcodes/vpvoc.c:206
+#: Opcodes/pvinterp.c:76 Opcodes/vpvoc.c:207
#, c-format
msgid "PVOC frame %ld bigger than %ld in %s"
msgstr ""
-#: Opcodes/pvinterp.c:81 Opcodes/vpvoc.c:211
+#: Opcodes/pvinterp.c:81 Opcodes/vpvoc.c:212
#, c-format
msgid "PVOC frame %ld seems too small in %s"
msgstr ""
-#: Opcodes/pvinterp.c:85 Opcodes/pvinterp.c:184 Opcodes/pvinterp.c:356
-#: Opcodes/vpvoc.c:215
+#: Opcodes/pvinterp.c:85 Opcodes/pvinterp.c:183 Opcodes/pvinterp.c:354
+#: Opcodes/vpvoc.c:216
#, c-format
msgid "%d chans (not 1) in PVOC file %s"
msgstr ""
-#: Opcodes/pvinterp.c:101 Opcodes/pvinterp.c:212 Opcodes/pvinterp.c:382
+#: Opcodes/pvinterp.c:100 Opcodes/pvinterp.c:210 Opcodes/pvinterp.c:379
#: Opcodes/ugens8.c:95 Opcodes/vpvoc.c:244
#, c-format
msgid "ksmps of %d needs wdw of %d, max is %d for pv %s"
msgstr ""
-#: Opcodes/pvinterp.c:122 Opcodes/pvinterp.c:256 Opcodes/pvinterp.c:431
+#: Opcodes/pvinterp.c:121 Opcodes/pvinterp.c:254 Opcodes/pvinterp.c:428
#: Opcodes/pvread.c:95 Opcodes/ugens8.c:156 Opcodes/vpvoc.c:297
msgid "PVOC ktimpnt truncated to last frame"
msgstr ""
-#: Opcodes/pvinterp.c:130
+#: Opcodes/pvinterp.c:129
msgid "pvbufread: not initialised"
msgstr "pvbufread: nicht initialisiert"
-#: Opcodes/pvinterp.c:132 Opcodes/pvinterp.c:306 Opcodes/pvinterp.c:492
+#: Opcodes/pvinterp.c:131 Opcodes/pvinterp.c:304 Opcodes/pvinterp.c:489
#: Opcodes/pvread.c:103 Opcodes/ugens8.c:206 Opcodes/vpvoc.c:361
msgid "PVOC timpnt < 0"
msgstr ""
-#: Opcodes/pvinterp.c:149
+#: Opcodes/pvinterp.c:148
msgid "pvinterp: associated pvbufread not found"
msgstr ""
-#: Opcodes/pvinterp.c:166
+#: Opcodes/pvinterp.c:165
#, c-format
msgid "PVINTERP cannot load %s"
msgstr ""
-#: Opcodes/pvinterp.c:179
+#: Opcodes/pvinterp.c:178
#, c-format
msgid "pvinterp: %s: frame size %d does not match pvbufread frame size %d\n"
msgstr ""
-#: Opcodes/pvinterp.c:300
+#: Opcodes/pvinterp.c:298
msgid "pvinterp: not initialised"
msgstr "pvinterp: nicht initialisiert"
-#: Opcodes/pvinterp.c:302 Opcodes/pvinterp.c:488 Opcodes/ugens8.c:202
+#: Opcodes/pvinterp.c:300 Opcodes/pvinterp.c:485 Opcodes/ugens8.c:202
#: Opcodes/vpvoc.c:357
msgid "PVOC transpose too low"
msgstr ""
-#: Opcodes/pvinterp.c:304 Opcodes/pvinterp.c:490 Opcodes/ugens8.c:204
+#: Opcodes/pvinterp.c:302 Opcodes/pvinterp.c:487 Opcodes/ugens8.c:204
#: Opcodes/vpvoc.c:359
msgid "PVOC transpose too high"
msgstr ""
-#: Opcodes/pvinterp.c:323
+#: Opcodes/pvinterp.c:321
msgid "pvcross: associated pvbufread not found"
msgstr ""
-#: Opcodes/pvinterp.c:339
+#: Opcodes/pvinterp.c:337
#, c-format
msgid "PVCROSS cannot load %s"
msgstr ""
-#: Opcodes/pvinterp.c:351
+#: Opcodes/pvinterp.c:349
#, c-format
msgid "pvcross: %s: frame size %d does not match pvbufread frame size %d\n"
msgstr ""
-#: Opcodes/pvinterp.c:454 Opcodes/vpvoc.c:322
+#: Opcodes/pvinterp.c:451 Opcodes/vpvoc.c:322
msgid "PVOC debug: one frame gets through\n"
msgstr ""
-#: Opcodes/pvinterp.c:486
+#: Opcodes/pvinterp.c:483
msgid "pvcross: not initialised"
msgstr "pvcross: nicht initialisiert"
-#: Opcodes/pvlock.c:35 Opcodes/pvsbasic.c:380
+#: Opcodes/pvlock.c:59 Opcodes/pvsbasic.c:380
#, fuzzy
msgid "invalid number of output arguments"
msgstr "unzulässiger Name für Instrument"
-#: Opcodes/pvlock.c:466
+#: Opcodes/pvlock.c:490
msgid "pvsfreeze: signal format must be amp-freq."
msgstr ""
@@ -7778,29 +7665,34 @@ msgstr "pvstencil: nicht initialisiert"
msgid "pvs2tab: signal format must be amp-phase or amp-freq."
msgstr ""
-#: Opcodes/pvsbasic.c:2151 Opcodes/pvsbasic.c:2190 Opcodes/tabvars.c:53
-#: Opcodes/tabvars.c:89 Opcodes/tabvars.c:131 Opcodes/tabvars.c:176
-#: Opcodes/tabvars.c:178
+#: Opcodes/pvsbasic.c:2151 Opcodes/pvsbasic.c:2189 Opcodes/tabvars.c:56
+#: Opcodes/tabvars.c:92 Opcodes/tabvars.c:134 Opcodes/tabvars.c:179
+#: Opcodes/tabvars.c:181
#, fuzzy
msgid "t-variable not initialised"
msgstr "table: nicht initialisiert"
-#: Opcodes/pvsbuffer.c:53 Opcodes/pvscent.c:164 Opcodes/pvsdemix.c:49
+#: Opcodes/pvsbuffer.c:56 Opcodes/pvscent.c:164 Opcodes/pvsdemix.c:49
msgid "SDFT case not implemented yet"
msgstr ""
-#: Opcodes/pvsbuffer.c:85
+#: Opcodes/pvsbuffer.c:89
msgid "error... could not create global var for handle\n"
msgstr ""
-#: Opcodes/pvsbuffer.c:143 Opcodes/pvsbuffer.c:190 Opcodes/pvsbuffer.c:258
+#: Opcodes/pvsbuffer.c:148 Opcodes/pvsbuffer.c:197 Opcodes/pvsbuffer.c:266
msgid "error... could not read handle from global variable\n"
msgstr ""
-#: Opcodes/pvsbuffer.c:238 Opcodes/pvsbuffer.c:306
+#: Opcodes/pvsbuffer.c:246 Opcodes/pvsbuffer.c:316
msgid "Invalid buffer handle"
msgstr ""
+#: Opcodes/pvsbuffer.c:285 Opcodes/pvsbuffer.c:291
+#, c-format
+msgid "table length too small: needed %d, got %d\n"
+msgstr ""
+
#: Opcodes/pvscent.c:42
msgid "pvscent: format must be amp-phase or amp-freq.\n"
msgstr ""
@@ -7991,49 +7883,49 @@ msgstr ""
msgid "seqtim: incorrect table number"
msgstr ""
-#: Opcodes/sfont.c:118
+#: Opcodes/sfont.c:121
#, c-format
msgid "sfload: cannot open SoundFont file \"%s\" (error %s)"
msgstr ""
-#: Opcodes/sfont.c:123
+#: Opcodes/sfont.c:126
msgid "Sfload: cannot use globals"
msgstr ""
-#: Opcodes/sfont.c:153
+#: Opcodes/sfont.c:156
msgid "sfload: could not open globals\n"
msgstr ""
-#: Opcodes/sfont.c:170
+#: Opcodes/sfont.c:173
#, fuzzy
msgid "Extending soundfonts"
msgstr "zu viele Argumente"
-#: Opcodes/sfont.c:201
+#: Opcodes/sfont.c:204
#, c-format
msgid ""
"\n"
"Preset list of \"%s\"\n"
msgstr ""
-#: Opcodes/sfont.c:204
+#: Opcodes/sfont.c:207
#, c-format
msgid "%3d) %-20s\tprog:%-3d bank:%d\n"
msgstr ""
-#: Opcodes/sfont.c:226
+#: Opcodes/sfont.c:229
#, c-format
msgid ""
"\n"
"Assigning all Presets of \"%s\" starting from %d (preset handle number)\n"
msgstr ""
-#: Opcodes/sfont.c:231
+#: Opcodes/sfont.c:234
#, c-format
msgid "%3d<--%-20s\t(prog:%-3d bank:%d)\n"
msgstr ""
-#: Opcodes/sfont.c:238
+#: Opcodes/sfont.c:241
#, c-format
msgid ""
"\n"
@@ -8041,38 +7933,38 @@ msgid ""
"\n"
msgstr ""
-#: Opcodes/sfont.c:251
+#: Opcodes/sfont.c:254
#, c-format
msgid ""
"\n"
"Instrument list of \"%s\"\n"
msgstr ""
-#: Opcodes/sfont.c:268
+#: Opcodes/sfont.c:271
#, c-format
msgid "sfpreset: preset handle too big (%d), max: %d"
msgstr ""
-#: Opcodes/sfont.c:284
+#: Opcodes/sfont.c:287
#, c-format
msgid ""
"sfpreset: cannot find any preset having prog number %d and bank number %d in "
"SoundFont file \"%s\""
msgstr ""
-#: Opcodes/sfont.c:306 Opcodes/sfont.c:2189
+#: Opcodes/sfont.c:309 Opcodes/sfont.c:2192
msgid "sfplay: invalid or out-of-range preset number"
msgstr ""
-#: Opcodes/sfont.c:633
+#: Opcodes/sfont.c:636
msgid "sfplaym: invalid or out-of-range preset number"
msgstr ""
-#: Opcodes/sfont.c:888 Opcodes/sfont.c:1150
+#: Opcodes/sfont.c:891 Opcodes/sfont.c:1153
msgid "sfinstr: instrument out of range"
msgstr ""
-#: Opcodes/sfont.c:1598 Opcodes/sfont.c:1835
+#: Opcodes/sfont.c:1601 Opcodes/sfont.c:1838
#, c-format
msgid ""
"SoundFont file \"%s\" contains ROM samples !\n"
@@ -8080,19 +7972,19 @@ msgid ""
"Session aborted !"
msgstr ""
-#: Opcodes/sfont.c:1987 Opcodes/sfont.c:1993
+#: Opcodes/sfont.c:1990 Opcodes/sfont.c:1996
msgid "Sfont: cannot use globals/"
msgstr ""
-#: Opcodes/sfont.c:1996
+#: Opcodes/sfont.c:1999
msgid "Sfont format not compatible"
msgstr ""
-#: Opcodes/sfont.c:2534
+#: Opcodes/sfont.c:2537
msgid "error... could not create sfont globals\n"
msgstr ""
-#: Opcodes/shape.c:49
+#: Opcodes/shape.c:51
msgid "powershape: ifullscale must be strictly positive"
msgstr ""
@@ -8105,25 +7997,25 @@ msgstr ""
msgid "ftgenonce error"
msgstr "Schreibfehler"
-#: Opcodes/singwave.c:85
+#: Opcodes/singwave.c:86
msgid "No table for Modulatr"
msgstr "Keine Tabelle für Modulatr"
-#: Opcodes/singwave.c:127
+#: Opcodes/singwave.c:128
msgid "No table for Singwave"
msgstr "Keine Tabelle für Singwave"
-#: Opcodes/singwave.c:207
+#: Opcodes/singwave.c:208
#, c-format
msgid "SingWave: rate=%f sweepRate=%f mytime=%f\n"
msgstr ""
-#: Opcodes/singwave.c:273
+#: Opcodes/singwave.c:280
#, c-format
msgid "Found Formant: %s (number %i)\n"
msgstr ""
-#: Opcodes/singwave.c:395
+#: Opcodes/singwave.c:397
#, c-format
msgid "Setting Phoneme: %d %f\n"
msgstr ""
@@ -8156,15 +8048,15 @@ msgstr ""
msgid "pvsarp: not initialised\n"
msgstr "pvsarp: nicht initialisiert\n"
-#: Opcodes/sndloop.c:995 Opcodes/sndloop.c:1092
+#: Opcodes/sndloop.c:995 Opcodes/sndloop.c:1091
msgid "signal format must be amp-phase or amp-freq.\n"
msgstr ""
-#: Opcodes/sndloop.c:1072
+#: Opcodes/sndloop.c:1071
msgid "pvsvoc: not initialised\n"
msgstr "pvsvoc: nicht initialisiert\n"
-#: Opcodes/sndloop.c:1123
+#: Opcodes/sndloop.c:1122
msgid "pvsmorph: not initialised\n"
msgstr "pvsmorph: nicht initialisiert\n"
@@ -8184,26 +8076,28 @@ msgstr ""
msgid "sndwarpst: not initialised"
msgstr "sndwarpst: nicht initialisiert"
-#: Opcodes/sockrecv.c:123 Opcodes/sockrecv.c:213 Opcodes/sockrecv.c:300
-#: Opcodes/socksend.c:75 Opcodes/socksend.c:133 Opcodes/socksend.c:190
+#: Opcodes/sockrecv.c:117 Opcodes/sockrecv.c:215 Opcodes/sockrecv.c:314
+#: Opcodes/socksend.c:73 Opcodes/socksend.c:157 Opcodes/socksend.c:252
+#, c-format
+msgid "Winsock2 failed to start: %d"
+msgstr ""
+
+#: Opcodes/sockrecv.c:131 Opcodes/sockrecv.c:227 Opcodes/sockrecv.c:320
+#: Opcodes/socksend.c:86 Opcodes/socksend.c:171 Opcodes/socksend.c:259
#, fuzzy
msgid "creating socket"
msgstr "Herstellen des Orchesters\n"
-#: Opcodes/sockrecv.c:322
-msgid "connect failed"
+#: Opcodes/sockrecv.c:347
+#, c-format
+msgid "connect failed (%d)"
msgstr ""
-#: Opcodes/sockrecv.c:335
+#: Opcodes/sockrecv.c:360
msgid "read from socket failed"
msgstr ""
-#: Opcodes/socksend.c:67 Opcodes/socksend.c:125
-#, c-format
-msgid "The buffersize must be <= %d samples to fit in a udp-packet."
-msgstr ""
-
-#: Opcodes/socksend.c:107 Opcodes/socksend.c:169
+#: Opcodes/socksend.c:126 Opcodes/socksend.c:215
msgid "sendto failed"
msgstr ""
@@ -8223,199 +8117,199 @@ msgstr "spat3d: nicht initialisiert"
msgid "spat3di: not initialised"
msgstr "spat3di: nicht initialisiert"
-#: Opcodes/spectra.c:82
+#: Opcodes/spectra.c:84
msgid "illegal Q value"
msgstr ""
-#: Opcodes/spectra.c:84
+#: Opcodes/spectra.c:86
msgid "unknown dbout code"
msgstr ""
-#: Opcodes/spectra.c:104
+#: Opcodes/spectra.c:106
#, c-format
msgid "spectrum: %s window, %s out, making tables ...\n"
msgstr ""
-#: Opcodes/spectra.c:123
+#: Opcodes/spectra.c:125
#, c-format
msgid ""
"\thigh cps %7.1f\n"
"\t low cps %7.1f\n"
msgstr ""
-#: Opcodes/spectra.c:138
+#: Opcodes/spectra.c:140
#, c-format
msgid "\tQ %4.1f uses a %d sample window each octdown\n"
msgstr ""
-#: Opcodes/spectra.c:169
+#: Opcodes/spectra.c:171
msgid "spectrum windowed sines:"
msgstr ""
-#: Opcodes/spectra.c:187
+#: Opcodes/spectra.c:189
#, c-format
msgid "\t%d oct analysis window delay = %ld samples (%d msecs)\n"
msgstr ""
-#: Opcodes/spectra.c:195
+#: Opcodes/spectra.c:197
msgid "octdown buffers:"
msgstr ""
-#: Opcodes/spectra.c:513 Opcodes/spectra.c:553
+#: Opcodes/spectra.c:515 Opcodes/spectra.c:555
msgid "specdisp: not initialised"
msgstr "specdisp: nicht initialisiert"
-#: Opcodes/spectra.c:523
+#: Opcodes/spectra.c:525
#, c-format
msgid "instr %d %s, dft (%s), %ld octaves (%d - %d Hz):"
msgstr ""
-#: Opcodes/spectra.c:530
+#: Opcodes/spectra.c:532
#, c-format
msgid "instr %d %s, dft (%s), %ld octaves (%3.1f - %3.1f Hz):"
msgstr ""
-#: Opcodes/spectra.c:611
+#: Opcodes/spectra.c:613
msgid "per oct rolloff too steep"
msgstr ""
-#: Opcodes/spectra.c:632
+#: Opcodes/spectra.c:634
#, c-format
msgid "specptrk: %d freqs, %d%s ptls at "
msgstr ""
-#: Opcodes/spectra.c:633
+#: Opcodes/spectra.c:635
msgid " odd"
msgstr ""
-#: Opcodes/spectra.c:637
+#: Opcodes/spectra.c:639
msgid ""
"\n"
"\t\trolloff vals:"
msgstr ""
-#: Opcodes/spectra.c:660
+#: Opcodes/spectra.c:662
#, c-format
msgid ""
"\n"
"\tdbthresh %4.1f: X-corr %s threshon %4.1f, threshoff %4.1f\n"
msgstr ""
-#: Opcodes/spectra.c:817
+#: Opcodes/spectra.c:819
msgid "specptrk: not initialised"
msgstr "specptrk: nicht initialisiert"
-#: Opcodes/spectra.c:849
+#: Opcodes/spectra.c:851
msgid "specsum: not initialised"
msgstr "specsum: nicht initialisiert"
-#: Opcodes/spectra.c:860
+#: Opcodes/spectra.c:862
msgid "inputs have different sizes"
msgstr ""
-#: Opcodes/spectra.c:863
+#: Opcodes/spectra.c:865
msgid "inputs have diff. time periods"
msgstr ""
-#: Opcodes/spectra.c:867
+#: Opcodes/spectra.c:869
msgid "inputs have different freq resolution"
msgstr ""
-#: Opcodes/spectra.c:870
+#: Opcodes/spectra.c:872
msgid "inputs have different amptypes"
msgstr ""
-#: Opcodes/spectra.c:902
+#: Opcodes/spectra.c:904
msgid "specaddm: not initialised"
msgstr "specaddm: nicht initialisiert"
-#: Opcodes/spectra.c:926
+#: Opcodes/spectra.c:928
msgid "specdiff: local buffers not initialised"
msgstr "specdiff: local buffers nicht initialisiert"
-#: Opcodes/spectra.c:964
+#: Opcodes/spectra.c:966
msgid "specdiff: not initialised"
msgstr "specdiff: nicht initialisiert"
-#: Opcodes/spectra.c:986
+#: Opcodes/spectra.c:988
msgid "specscal: local buffer not initialised"
msgstr "specscal: local buffer nicht initialisiert"
-#: Opcodes/spectra.c:991
+#: Opcodes/spectra.c:993
msgid "missing fscale table"
msgstr ""
-#: Opcodes/spectra.c:1057
+#: Opcodes/spectra.c:1059
msgid "specscal: not initialised"
msgstr "specscal: nicht initialisiert"
-#: Opcodes/spectra.c:1081
+#: Opcodes/spectra.c:1083
msgid "spechist: local buffers not intiialised"
msgstr ""
-#: Opcodes/spectra.c:1113
+#: Opcodes/spectra.c:1115
msgid "spechist: not initialised"
msgstr "spechist: nicht initialisiert"
-#: Opcodes/spectra.c:1134
+#: Opcodes/spectra.c:1136
msgid "specfilt: local buffers not initialised"
msgstr "specfilt: local buffers nicht initialisiert"
-#: Opcodes/spectra.c:1142
+#: Opcodes/spectra.c:1144
msgid "missing htim ftable"
msgstr ""
-#: Opcodes/spectra.c:1165
+#: Opcodes/spectra.c:1167
msgid "htim ftable must be all-positive"
msgstr ""
-#: Opcodes/spectra.c:1169
+#: Opcodes/spectra.c:1171
#, c-format
msgid "coef range: %6.3f - %6.3f\n"
msgstr ""
-#: Opcodes/spectra.c:1201
+#: Opcodes/spectra.c:1203
msgid "specfilt: not initialised"
msgstr "specfilt: nicht initialisiert"
-#: Opcodes/stackops.c:80
+#: Opcodes/stackops.c:81
msgid "fsig = : source signal is not initialised"
msgstr "fsig = : source signal is nicht initialisiert"
-#: Opcodes/stackops.c:126
+#: Opcodes/stackops.c:125
msgid "stack overflow"
msgstr ""
-#: Opcodes/stackops.c:134
+#: Opcodes/stackops.c:131
msgid "cannot pop from empty stack"
msgstr ""
-#: Opcodes/stackops.c:142
+#: Opcodes/stackops.c:137
msgid "argument number or type mismatch"
msgstr ""
-#: Opcodes/stackops.c:150
+#: Opcodes/stackops.c:143
msgid "string argument is too long"
msgstr ""
-#: Opcodes/stackops.c:167
+#: Opcodes/stackops.c:160
msgid "Error allocating argument stack"
msgstr ""
-#: Opcodes/stackops.c:207 Top/argdecode.c:1212 util/envext.c:99
+#: Opcodes/stackops.c:200 Top/argdecode.c:1212 util/envext.c:99
#: util/scale.c:248
msgid "too many arguments"
msgstr "zu viele Argumente"
-#: Opcodes/stackops.c:286
+#: Opcodes/stackops.c:279
msgid "the stack is already allocated"
msgstr ""
-#: Opcodes/stackops.c:637
+#: Opcodes/stackops.c:630
msgid "number of arguments != nchnls"
msgstr ""
-#: Opcodes/stdopcod.c:36
+#: Opcodes/stdopcod.c:37
msgid "stdopcod.c: error: globals already allocated"
msgstr ""
@@ -8430,36 +8324,46 @@ msgstr ""
msgid "RAWWAVE_PATH: %s\n"
msgstr ""
-#: Opcodes/syncgrain.c:175 Opcodes/syncgrain.c:338 Opcodes/syncgrain.c:683
+#: Opcodes/syncgrain.c:176 Opcodes/syncgrain.c:339 Opcodes/syncgrain.c:684
msgid "grain size smaller than 1 sample\n"
msgstr ""
-#: Opcodes/syncgrain.c:387
+#: Opcodes/syncgrain.c:388
msgid "diskgrain: invalid number of channels"
msgstr ""
-#: Opcodes/syncgrain.c:419
+#: Opcodes/syncgrain.c:420
msgid "diskgrain: could not open file\n"
msgstr ""
-#: Opcodes/syncgrain.c:423
+#: Opcodes/syncgrain.c:424
msgid ""
"diskgrain: soundfile channel numbers do not match the number of outputs \n"
msgstr ""
-#: Opcodes/syncgrain.c:435
+#: Opcodes/syncgrain.c:436
msgid "diskgrain: could not read file \n"
msgstr ""
-#: Opcodes/tabsum.c:39
+#: Opcodes/tabsum.c:40
msgid "tabsum: No table"
msgstr ""
-#: Opcodes/tabsum.c:54
+#: Opcodes/tabsum.c:55
#, fuzzy
msgid "tabsum: Not initialised"
msgstr "table: nicht initialisiert"
+#: Opcodes/tabvars.c:201 Opcodes/tabvars.c:218
+#, fuzzy
+msgid "t-var not initialised"
+msgstr "table: nicht initialisiert"
+
+#: Opcodes/tabvars.c:203 Opcodes/tabvars.c:220
+#, fuzzy
+msgid "No table for copy2ftab"
+msgstr "Keine Tabelle für dconv"
+
#: Opcodes/ugens7.c:46 Opcodes/ugensa.c:49
msgid "illegal value for iolaps"
msgstr ""
@@ -8605,17 +8509,17 @@ msgstr ""
msgid "table in iftfn for ftmorf does not exist"
msgstr ""
-#: Opcodes/ugnorman.c:120
+#: Opcodes/ugnorman.c:121
#, c-format
msgid "%s: Ats file %s not read (does it exist?)"
msgstr ""
-#: Opcodes/ugnorman.c:131
+#: Opcodes/ugnorman.c:132
#, c-format
msgid "%s: either %s is not an ATS file or the byte endianness is wrong"
msgstr ""
-#: Opcodes/ugnorman.c:139
+#: Opcodes/ugnorman.c:140
#, c-format
msgid ""
"%s: %s is byte-swapped\n"
@@ -8623,125 +8527,125 @@ msgid ""
"\twill not result in different audio, but they may slow down processing."
msgstr ""
-#: Opcodes/ugnorman.c:175
+#: Opcodes/ugnorman.c:176
msgid ""
"ATSINFO: location is out of bounds: 0-8 are the only possible selections"
msgstr ""
-#: Opcodes/ugnorman.c:265
+#: Opcodes/ugnorman.c:266
#, c-format
msgid "ATSREAD: partial %i out of range, max allowed is %i"
msgstr ""
-#: Opcodes/ugnorman.c:291
+#: Opcodes/ugnorman.c:292
msgid "Type not implemented"
msgstr ""
-#: Opcodes/ugnorman.c:310
+#: Opcodes/ugnorman.c:311
msgid "ATSREAD: only positive time pointer values allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:319
+#: Opcodes/ugnorman.c:320
msgid "ATSREAD: timepointer out of range, truncated to last frame\n"
msgstr ""
-#: Opcodes/ugnorman.c:332
+#: Opcodes/ugnorman.c:333
msgid "ATSREAD: not initialised"
msgstr "ATSREAD: nicht initialisiert"
-#: Opcodes/ugnorman.c:394
+#: Opcodes/ugnorman.c:395
#, c-format
msgid "ATSREADNZ: band %i out of range, 1-25 are the valid band values"
msgstr ""
-#: Opcodes/ugnorman.c:412
+#: Opcodes/ugnorman.c:413
msgid "ATSREADNZ: Type either not implemented or does not contain noise"
msgstr ""
-#: Opcodes/ugnorman.c:431
+#: Opcodes/ugnorman.c:432
msgid "ATSREADNZ: only positive time pointer values allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:440
+#: Opcodes/ugnorman.c:441
msgid "ATSREADNZ: timepointer out of range, truncated to last frame\n"
msgstr ""
-#: Opcodes/ugnorman.c:449
+#: Opcodes/ugnorman.c:450
msgid "ATSREADNZ: not initialised"
msgstr "ATSREADNZ: nicht initialisiert"
-#: Opcodes/ugnorman.c:467
+#: Opcodes/ugnorman.c:468
msgid "ATSADD: Function table number for synthesis waveform not valid"
msgstr ""
-#: Opcodes/ugnorman.c:475
+#: Opcodes/ugnorman.c:476
msgid "ATSADD: Gate Function table number not valid"
msgstr ""
-#: Opcodes/ugnorman.c:521
+#: Opcodes/ugnorman.c:522
#, c-format
msgid "ATSADD: Partial(s) out of range, max partial allowed is %i"
msgstr ""
-#: Opcodes/ugnorman.c:555
+#: Opcodes/ugnorman.c:556
msgid "ATSADD: Type not implemented"
msgstr ""
-#: Opcodes/ugnorman.c:585
+#: Opcodes/ugnorman.c:586
msgid ""
"ATSADD: only positive time pointer values are allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:594
+#: Opcodes/ugnorman.c:595
msgid "ATSADD: time pointer out of range, truncating to last frame\n"
msgstr ""
-#: Opcodes/ugnorman.c:638
+#: Opcodes/ugnorman.c:639
msgid "ATSADD: not initialised"
msgstr "ATSADD: nicht initialisiert"
-#: Opcodes/ugnorman.c:842
+#: Opcodes/ugnorman.c:845
msgid "ATSADDNZ: This file type contains no noise"
msgstr ""
-#: Opcodes/ugnorman.c:846
+#: Opcodes/ugnorman.c:849
msgid "ATSADDNZ: This file type has not been implemented in this code yet."
msgstr ""
-#: Opcodes/ugnorman.c:869
+#: Opcodes/ugnorman.c:872
msgid "ATSADDNZ: Band(s) out of range, max band allowed is 25"
msgstr ""
-#: Opcodes/ugnorman.c:886
+#: Opcodes/ugnorman.c:889
msgid ""
"ATSADDNZ: Type either has no noise or is not implemented (only type 3 and 4 "
"work now)"
msgstr ""
-#: Opcodes/ugnorman.c:1002
+#: Opcodes/ugnorman.c:1005
msgid ""
"ATSADDNZ: only positive time pointer values are allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:1011
+#: Opcodes/ugnorman.c:1014
msgid "ATSADDNZ: time pointer out of range, truncating to last frame\n"
msgstr ""
-#: Opcodes/ugnorman.c:1165
+#: Opcodes/ugnorman.c:1168
#, c-format
msgid "ATSSINNOI: Partial(s) out of range, max partial allowed is %i"
msgstr ""
-#: Opcodes/ugnorman.c:1202
+#: Opcodes/ugnorman.c:1205
msgid "ATSSINNOI: Type not implemented"
msgstr ""
-#: Opcodes/ugnorman.c:1315
+#: Opcodes/ugnorman.c:1316
msgid ""
"ATSSINNOI: only positive time pointer values are allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:1324
+#: Opcodes/ugnorman.c:1325
msgid "ATSSINNOI: time pointer out of range, truncating to last frame\n"
msgstr ""
@@ -8814,44 +8718,44 @@ msgstr ""
msgid "ATSCROSS: you must have an atsbufread before an atsinterpread"
msgstr ""
-#: Opcodes/ugsc.c:394
+#: Opcodes/ugsc.c:390
msgid "Phaser mode must be either 1 or 2"
msgstr ""
-#: Opcodes/vbap.c:57
+#: Opcodes/vbap.c:59
msgid "vbap: error allocating loudspeaker table"
msgstr ""
-#: Opcodes/vbap.c:264
+#: Opcodes/vbap.c:266
msgid ""
"Number of loudspeakers is zero\n"
"Exiting"
msgstr ""
-#: Opcodes/vbap.c:573
+#: Opcodes/vbap.c:575
msgid "Error in loudspeaker dimension."
msgstr ""
-#: Opcodes/vbap.c:596
+#: Opcodes/vbap.c:598
msgid "Too few loudspeakers"
msgstr ""
-#: Opcodes/vbap.c:622
+#: Opcodes/vbap.c:624
msgid "Not valid 3-D configuration"
msgstr ""
-#: Opcodes/vbap.c:668 Opcodes/vbap.c:767
+#: Opcodes/vbap.c:670 Opcodes/vbap.c:769
msgid ""
"\n"
"Configured loudspeakers\n"
msgstr ""
-#: Opcodes/vbap.c:670
+#: Opcodes/vbap.c:672
#, c-format
msgid "Triplet %d Loudspeakers: "
msgstr ""
-#: Opcodes/vbap.c:769
+#: Opcodes/vbap.c:771
#, c-format
msgid "Pair %d Loudspeakers: "
msgstr ""
@@ -8933,41 +8837,33 @@ msgstr ""
msgid "Have to have at least %d directions in vbapzmove"
msgstr ""
-#: Opcodes/Vosim.c:49
+#: Opcodes/Vosim.c:51
msgid "vosim: pulse table not found"
msgstr ""
-#: Opcodes/Vosim.c:72
+#: Opcodes/Vosim.c:74
msgid "vosim: zero kfund. 'Infinite' length event generated."
msgstr ""
-#: Opcodes/Vosim.c:80
+#: Opcodes/Vosim.c:82
#, c-format
msgid "vosim: kfund (%f) > sr. Generating ksmps silence."
msgstr ""
-#: Opcodes/Vosim.c:158
+#: Opcodes/Vosim.c:160
msgid "vosim: not initialised"
msgstr "vosim: nicht initialisiert"
-#: Opcodes/vpvoc.c:118
-msgid "tableseg: not initialised"
-msgstr "tableseg: nicht initialisiert"
-
-#: Opcodes/vpvoc.c:146
-msgid "tablexseg: not initialised"
-msgstr "tablexseg: nicht initialisiert"
-
-#: Opcodes/vpvoc.c:172
+#: Opcodes/vpvoc.c:173
#, c-format
msgid "vpvoc: Could not find ifnmagctrl table %f"
msgstr ""
-#: Opcodes/vpvoc.c:178
+#: Opcodes/vpvoc.c:179
msgid "vpvoc: associated tableseg not found"
msgstr ""
-#: Opcodes/vpvoc.c:194
+#: Opcodes/vpvoc.c:195
#, c-format
msgid "VPVOC cannot load %s"
msgstr ""
@@ -9084,47 +8980,47 @@ msgstr ""
msgid "-B N\tsamples per hardware sound I/O buffer"
msgstr ""
-#: Top/argdecode.c:75 util/mixer.c:95 util/scale.c:46 util/srconv.c:739
+#: Top/argdecode.c:75 util/mixer.c:95 util/scale.c:46 util/srconv.c:738
msgid "-A\tcreate an AIFF format output soundfile"
msgstr ""
-#: Top/argdecode.c:76 util/mixer.c:96 util/scale.c:47 util/srconv.c:741
+#: Top/argdecode.c:76 util/mixer.c:96 util/scale.c:47 util/srconv.c:740
msgid "-W\tcreate a WAV format output soundfile"
msgstr ""
-#: Top/argdecode.c:77 util/srconv.c:740
+#: Top/argdecode.c:77 util/srconv.c:739
msgid "-J\tcreate an IRCAM format output soundfile"
msgstr ""
-#: Top/argdecode.c:78 util/mixer.c:97 util/scale.c:48 util/srconv.c:742
+#: Top/argdecode.c:78 util/mixer.c:97 util/scale.c:48 util/srconv.c:741
msgid "-h\tno header on output soundfile"
msgstr ""
-#: Top/argdecode.c:79 util/mixer.c:99 util/scale.c:49 util/srconv.c:743
+#: Top/argdecode.c:79 util/mixer.c:99 util/scale.c:49 util/srconv.c:742
msgid "-c\t8-bit signed_char sound samples"
msgstr ""
-#: Top/argdecode.c:81 util/mixer.c:101 util/scale.c:50 util/srconv.c:744
+#: Top/argdecode.c:81 util/mixer.c:101 util/scale.c:50 util/srconv.c:743
msgid "-a\talaw sound samples"
msgstr ""
-#: Top/argdecode.c:83 util/mixer.c:98 util/mixer.c:100 util/srconv.c:745
+#: Top/argdecode.c:83 util/mixer.c:98 util/mixer.c:100 util/srconv.c:744
msgid "-8\t8-bit unsigned_char sound samples"
msgstr ""
-#: Top/argdecode.c:84 util/mixer.c:102 util/scale.c:51 util/srconv.c:746
+#: Top/argdecode.c:84 util/mixer.c:102 util/scale.c:51 util/srconv.c:745
msgid "-u\tulaw sound samples"
msgstr ""
-#: Top/argdecode.c:85 util/mixer.c:103 util/scale.c:52 util/srconv.c:747
+#: Top/argdecode.c:85 util/mixer.c:103 util/scale.c:52 util/srconv.c:746
msgid "-s\tshort_int sound samples"
msgstr ""
-#: Top/argdecode.c:86 util/mixer.c:104 util/scale.c:53 util/srconv.c:748
+#: Top/argdecode.c:86 util/mixer.c:104 util/scale.c:53 util/srconv.c:747
msgid "-l\tlong_int sound samples"
msgstr ""
-#: Top/argdecode.c:87 util/mixer.c:105 util/scale.c:54 util/srconv.c:749
+#: Top/argdecode.c:87 util/mixer.c:105 util/scale.c:54 util/srconv.c:748
msgid "-f\tfloat sound samples"
msgstr ""
@@ -9132,7 +9028,7 @@ msgstr ""
msgid "-3\t24bit sound samples"
msgstr ""
-#: Top/argdecode.c:89 util/srconv.c:750
+#: Top/argdecode.c:89 util/srconv.c:749
msgid "-r N\torchestra srate override"
msgstr ""
@@ -9140,7 +9036,7 @@ msgstr ""
msgid "-k N\torchestra krate override"
msgstr ""
-#: Top/argdecode.c:91 util/srconv.c:751
+#: Top/argdecode.c:91 util/srconv.c:750
msgid "-K\tDo not generate PEAK chunks"
msgstr ""
@@ -9200,7 +9096,7 @@ msgstr ""
msgid "-F fnam\tread MIDIfile event stream from file 'fnam'"
msgstr ""
-#: Top/argdecode.c:107 util/mixer.c:106 util/scale.c:59 util/srconv.c:752
+#: Top/argdecode.c:107 util/mixer.c:106 util/scale.c:59 util/srconv.c:751
msgid "-R\tcontinually rewrite header while writing soundfile (WAV/AIFF)"
msgstr ""
@@ -9208,7 +9104,7 @@ msgstr ""
msgid "-H#\tprint heartbeat style 1, 2 or 3 at each soundfile write"
msgstr ""
-#: Top/argdecode.c:109 util/mixer.c:108 util/scale.c:61 util/srconv.c:754
+#: Top/argdecode.c:109 util/mixer.c:108 util/scale.c:61 util/srconv.c:753
msgid "-N\tnotify (ring the bell) when score or miditrack is done"
msgstr ""
@@ -9694,16 +9590,16 @@ msgid "-M: stdin not supported on this platform"
msgstr ""
#: Top/argdecode.c:668 Top/argdecode.c:959 util/envext.c:84 util/mixer.c:205
-#: util/scale.c:173 util/srconv.c:248 util/xtrct.c:116
+#: util/scale.c:173 util/srconv.c:247 util/xtrct.c:116
msgid "no outfilename"
msgstr ""
-#: Top/argdecode.c:671 Top/argdecode.c:963 util/scale.c:177 util/srconv.c:252
+#: Top/argdecode.c:671 Top/argdecode.c:963 util/scale.c:177 util/srconv.c:251
#: util/xtrct.c:120
msgid "-o cannot be stdin"
msgstr ""
-#: Top/argdecode.c:675 Top/argdecode.c:967 util/scale.c:180 util/srconv.c:257
+#: Top/argdecode.c:675 Top/argdecode.c:967 util/scale.c:180 util/srconv.c:256
#: util/xtrct.c:123
msgid "stdout audio not supported"
msgstr ""
@@ -9823,164 +9719,164 @@ msgstr ""
msgid "cscoreFileGetCurrent: no fp current"
msgstr ""
-#: Top/csmodule.c:192
+#: Top/csmodule.c:199
#, c-format
msgid "not loading '%s' (uses incompatible floating point type)"
msgstr ""
-#: Top/csmodule.c:201
+#: Top/csmodule.c:209
#, c-format
msgid ""
"not loading '%s' (incompatible with this version of Csound (%d.%d/%d.%d)"
msgstr ""
-#: Top/csmodule.c:244
+#: Top/csmodule.c:252
#, c-format
msgid "could not open library '%s' (%s)"
msgstr ""
-#: Top/csmodule.c:247
+#: Top/csmodule.c:255
#, c-format
msgid "could not open library '%s' (%d)"
msgstr ""
-#: Top/csmodule.c:303
+#: Top/csmodule.c:311
#, c-format
msgid "'%s' is not a Csound plugin library"
msgstr ""
-#: Top/csmodule.c:314
+#: Top/csmodule.c:322
msgid "csoundLoadExternal(): memory allocation failure"
msgstr ""
-#: Top/csmodule.c:328 Top/csmodule.c:336
+#: Top/csmodule.c:336 Top/csmodule.c:344
#, c-format
msgid "Error in pre-initialisation function of module '%s'"
msgstr ""
-#: Top/csmodule.c:599 Top/csmodule.c:605 Top/csmodule.c:616 Top/csmodule.c:623
-#: Top/csmodule.c:629 Top/csmodule.c:637
+#: Top/csmodule.c:608 Top/csmodule.c:614 Top/csmodule.c:625 Top/csmodule.c:632
+#: Top/csmodule.c:638 Top/csmodule.c:646
msgid "Error opening plugin directory\n"
msgstr ""
-#: Top/csmodule.c:687
+#: Top/csmodule.c:696
#, c-format
msgid "Error opening plugin directory '%s': %s"
msgstr ""
-#: Top/csmodule.c:722
+#: Top/csmodule.c:731
#, c-format
msgid "path name too long, skipping '%s'"
msgstr ""
-#: Top/csmodule.c:728
+#: Top/csmodule.c:737
#, c-format
msgid "Library %s omitted\n"
msgstr ""
-#: Top/csmodule.c:764
+#: Top/csmodule.c:773
msgid "Loading command-line libraries:\n"
msgstr ""
-#: Top/csmodule.c:787
+#: Top/csmodule.c:796
#, c-format
msgid " *** error loading '%s'"
msgstr ""
-#: Top/csmodule.c:810
+#: Top/csmodule.c:819
#, c-format
msgid "Error starting module '%s'"
msgstr ""
-#: Top/csmodule.c:907
+#: Top/csmodule.c:918
#, c-format
msgid "Error de-initialising module '%s'"
msgstr ""
-#: Top/csound.c:1606 Top/csound.c:1626
+#: Top/csound.c:1636 Top/csound.c:1656
msgid "Early return from csoundPerformKsmps().\n"
msgstr ""
-#: Top/csound.c:1612
+#: Top/csound.c:1642
msgid "Score finished in csoundPerformKsmps().\n"
msgstr ""
-#: Top/csound.c:1645
+#: Top/csound.c:1675
msgid "Early return from csoundPerformBuffer().\n"
msgstr ""
-#: Top/csound.c:1670
+#: Top/csound.c:1700
msgid "Early return from csoundPerform().\n"
msgstr ""
-#: Top/csound.c:1677
+#: Top/csound.c:1707
msgid "Score finished in csoundPerform().\n"
msgstr ""
-#: Top/csound.c:1697
+#: Top/csound.c:1727
msgid "csoundPerform(): stopped.\n"
msgstr ""
-#: Top/csound.c:1968
+#: Top/csound.c:1998
msgid "WARNING: "
msgstr "ACHTUNG: "
-#: Top/csound.c:2089
+#: Top/csound.c:2119
msgid "rtdummy: failed to allocate globals"
msgstr ""
-#: Top/csound.c:2090
+#: Top/csound.c:2120
msgid "rtaudio: dummy module enabled\n"
msgstr ""
-#: Top/csound.c:2119 Top/csound.c:2155
+#: Top/csound.c:2149 Top/csound.c:2185
msgid " *** error: rtaudio module set to empty string"
msgstr ""
-#: Top/csound.c:2123 Top/csound.c:2159
+#: Top/csound.c:2153 Top/csound.c:2189
#, c-format
msgid " *** error: unknown rtaudio module: '%s'"
msgstr ""
-#: Top/csound.c:2241
+#: Top/csound.c:2271
msgid "WARNING: real time midi input disabled, using dummy functions\n"
msgstr ""
-#: Top/csound.c:2246 Top/csound.c:2280
+#: Top/csound.c:2276 Top/csound.c:2310
msgid "error: -+rtmidi set to empty string"
msgstr ""
-#: Top/csound.c:2249 Top/csound.c:2283
+#: Top/csound.c:2279 Top/csound.c:2313
#, c-format
msgid "error: -+rtmidi='%s': unknown module"
msgstr ""
-#: Top/csound.c:2275
+#: Top/csound.c:2305
msgid "WARNING: real time midi output disabled, using dummy functions\n"
msgstr ""
-#: Top/csound.c:2297
+#: Top/csound.c:2327
msgid "Unknown MIDI error"
msgstr ""
-#: Top/csound.c:2415
+#: Top/csound.c:2445
msgid "xyin not supported. use invalue opcode instead."
msgstr ""
-#: Top/csound.c:2522
+#: Top/csound.c:2552
msgid "Failed to allocate new opcode entry."
msgstr ""
-#: Top/csound.c:2545
+#: Top/csound.c:2575
#, c-format
msgid "Failed to allocate opcode entry for %s."
msgstr ""
-#: Top/csound.c:2876
+#: Top/csound.c:2906
msgid "Cannot open /proc/cpuinfo. Support for RDTSC is not available.\n"
msgstr ""
-#: Top/csound.c:2927
+#: Top/csound.c:2957
msgid "No valid CPU frequency entry was found in /proc/cpuinfo.\n"
msgstr ""
@@ -9988,25 +9884,25 @@ msgstr ""
msgid "Error allocating opcode list"
msgstr ""
-#: Top/main.c:161
+#: Top/main.c:160
#, c-format
msgid "WARNING: cannot open csoundrc file %s\n"
msgstr ""
-#: Top/main.c:164
+#: Top/main.c:163
#, c-format
msgid "Reading options from $CSOUNDRC: %s \n"
msgstr ""
-#: Top/main.c:173
+#: Top/main.c:172
msgid "Reading options from $HOME/.csoundrc\n"
msgstr ""
-#: Top/main.c:200
+#: Top/main.c:199
msgid "no orchestra name"
msgstr ""
-#: Top/main.c:225
+#: Top/main.c:224
msgid "Reading CSD failed ... stopping"
msgstr ""
@@ -10018,7 +9914,7 @@ msgstr ""
msgid "error: multiple uses of stdout"
msgstr ""
-#: Top/main.c:260 util/dnoise.c:268
+#: Top/main.c:260 util/dnoise.c:264
#, c-format
msgid "%s not a recognised SFOUTYP env setting"
msgstr ""
@@ -10031,58 +9927,62 @@ msgstr ""
msgid "realtime performance using dummy numeric scorefile\n"
msgstr ""
-#: Top/main.c:319
+#: Top/main.c:314
#, c-format
msgid "orchname: %s\n"
msgstr ""
-#: Top/main.c:321
-#, c-format
-msgid "scorename: %s\n"
+#: Top/main.c:334
+msgid "Stopping on parser failure\n"
msgstr ""
-#: Top/main.c:353
+#: Top/main.c:352
msgid "end of orchestra compile"
msgstr ""
-#: Top/main.c:360
+#: Top/main.c:359
#, c-format
msgid "using previous %s\n"
msgstr ""
-#: Top/main.c:373
+#: Top/main.c:369
#, c-format
msgid "cannot open scorefile %s"
msgstr ""
-#: Top/main.c:378 Top/main.c:399
-#, c-format
-msgid "cannot open %s for writing"
+#: Top/main.c:371
+msgid "sorting score ...\n"
msgstr ""
#: Top/main.c:381
-msgid "sorting score ...\n"
+#, c-format
+msgid "cannot extract %s, name conflict"
+msgstr ""
+
+#: Top/main.c:384
+#, c-format
+msgid "cannot open extract file %s"
msgstr ""
#: Top/main.c:388
#, c-format
-msgid "cannot extract %s, name conflict"
+msgid "cannot reopen %s"
msgstr ""
-#: Top/main.c:391
+#: Top/main.c:392
#, c-format
-msgid "cannot open extract file %s"
+msgid "cannot open %s for writing"
msgstr ""
-#: Top/main.c:401
+#: Top/main.c:394
msgid " ... extracting ...\n"
msgstr ""
-#: Top/main.c:414
+#: Top/main.c:405
msgid "end of score sort"
msgstr ""
-#: Top/main.c:416
+#: Top/main.c:407
msgid "Syntax check completed.\n"
msgstr "Syntaxprüfung durchgeführt.\n"
@@ -10147,163 +10047,158 @@ msgstr "*** Speicherallozierungausfall\n"
msgid " *** error setting option '%s' to '%s': %s\n"
msgstr ""
-#: Top/one_file.c:105 Top/one_file.c:113
+#: Top/one_file.c:110 Top/one_file.c:118
msgid " *** cannot create temporary file"
msgstr ""
-#: Top/one_file.c:198
+#: Top/one_file.c:203
#, c-format
msgid "Removing temporary file %s ...\n"
msgstr ""
-#: Top/one_file.c:202
+#: Top/one_file.c:207
#, c-format
msgid "WARNING: could not remove %s\n"
msgstr "ACHTUNG: konnte nicht %s entfernen\n"
-#: Top/one_file.c:268 Top/one_file.c:296
+#: Top/one_file.c:274 Top/one_file.c:302
#, c-format
msgid "More than %d arguments in <CsOptions>"
msgstr ""
-#: Top/one_file.c:313
+#: Top/one_file.c:319
#, c-format
msgid "Invalid arguments in <CsOptions>: %s"
msgstr ""
-#: Top/one_file.c:316
+#: Top/one_file.c:322
#, c-format
msgid "Invalid arguments in .csoundrc or -@ file: %s"
msgstr ""
-#: Top/one_file.c:322 Top/one_file.c:790
+#: Top/one_file.c:328 Top/one_file.c:744
msgid "Missing end tag </CsOptions>"
msgstr ""
-#: Top/one_file.c:340 Top/one_file.c:372 Top/one_file.c:420
-#, c-format
-msgid "Creating %s (%p)\n"
-msgstr ""
-
-#: Top/one_file.c:343
-#, c-format
-msgid "Failed to create %s"
-msgstr ""
-
-#: Top/one_file.c:356
+#: Top/one_file.c:354
msgid "Missing end tag </CsInstruments>"
msgstr ""
-#: Top/one_file.c:389 Top/one_file.c:442
+#: Top/one_file.c:376 Top/one_file.c:430
msgid "Missing end tag </CsScore>"
msgstr ""
-#: Top/one_file.c:403 Top/one_file.c:408
+#: Top/one_file.c:391 Top/one_file.c:396
msgid "Missing program in tag <CsScore>"
msgstr ""
-#: Top/one_file.c:433
+#: Top/one_file.c:408
+#, c-format
+msgid "Creating %s (%p)\n"
+msgstr ""
+
+#: Top/one_file.c:421
msgid "External generation failed"
msgstr ""
-#: Top/one_file.c:520
+#: Top/one_file.c:468
#, c-format
msgid "Non base64 character %c(%2x)"
msgstr ""
-#: Top/one_file.c:539
+#: Top/one_file.c:487
msgid "Truncated byte at end of base64 stream"
msgstr ""
-#: Top/one_file.c:554
+#: Top/one_file.c:503
#, c-format
msgid "Cannot open temporary file (%s) for MIDI subfile"
msgstr ""
-#: Top/one_file.c:571
+#: Top/one_file.c:520
msgid "Missing end tag </CsMidifileB>"
msgstr ""
-#: Top/one_file.c:586 Top/one_file.c:633
+#: Top/one_file.c:536 Top/one_file.c:584
#, c-format
msgid "File %s already exists"
msgstr ""
-#: Top/one_file.c:591
+#: Top/one_file.c:541
#, c-format
msgid "Cannot open sample file (%s) subfile"
msgstr ""
-#: Top/one_file.c:605
+#: Top/one_file.c:555
msgid "Missing end tag </CsSampleB>"
msgstr ""
-#: Top/one_file.c:638
+#: Top/one_file.c:589
#, c-format
msgid "Cannot open file (%s) subfile"
msgstr ""
-#: Top/one_file.c:653
+#: Top/one_file.c:604
msgid "Missing end tag </CsFileB>"
msgstr ""
-#: Top/one_file.c:672
+#: Top/one_file.c:624
#, c-format
msgid "This CSD file requires a version of Csound before %d.%02d"
msgstr ""
-#: Top/one_file.c:680 Top/one_file.c:687
+#: Top/one_file.c:632 Top/one_file.c:639
#, c-format
msgid "This CSD file requires a version of Csound after %d.%02d"
msgstr ""
-#: Top/one_file.c:693
+#: Top/one_file.c:645
msgid "Missing end tag </CsVersion>"
msgstr ""
-#: Top/one_file.c:702
+#: Top/one_file.c:655
msgid "**** Licence Information ****\n"
msgstr ""
-#: Top/one_file.c:708
+#: Top/one_file.c:661
msgid "**** End of Licence Information ****\n"
msgstr ""
-#: Top/one_file.c:719
+#: Top/one_file.c:672
msgid "Missing end tag </CsLicence>"
msgstr ""
-#: Top/one_file.c:749
+#: Top/one_file.c:703
#, c-format
msgid "Failed to open csd file: %s"
msgstr ""
-#: Top/one_file.c:764
+#: Top/one_file.c:718
msgid "STARTING FILE\n"
msgstr ""
-#: Top/one_file.c:780
+#: Top/one_file.c:734
msgid "Creating options\n"
msgstr ""
-#: Top/one_file.c:786
+#: Top/one_file.c:740
msgid "Skipping <CsOptions>\n"
msgstr ""
-#: Top/one_file.c:800
+#: Top/one_file.c:754
msgid "Creating orchestra\n"
msgstr "Herstellen des Orchesters\n"
-#: Top/one_file.c:805
+#: Top/one_file.c:759
msgid "Creating score\n"
msgstr ""
-#: Top/one_file.c:839
+#: Top/one_file.c:793
#, c-format
msgid "unknown CSD tag: %s\n"
msgstr ""
-#: Top/one_file.c:844
+#: Top/one_file.c:798
msgid "Could not find <CsoundSynthesizer> tag in CSD file.\n"
msgstr ""
@@ -10477,15 +10372,15 @@ msgstr "scot: %d Störungen.\n"
#, c-format
msgid ""
"\n"
-" Could not open %s for writing, bye...\n"
+"Could not open %s for writing, bye...\n"
msgstr ""
#: util/atsa.c:544
msgid "saving ATS data..."
msgstr ""
-#: util/atsa.c:546 util/atsa.c:2344 util/atsa.c:2358 util/atsa.c:2368
-#: util/atsa.c:2548 util/atsa.c:2611 util/atsa.c:2699
+#: util/atsa.c:546 util/atsa.c:2354 util/atsa.c:2368 util/atsa.c:2387
+#: util/atsa.c:2567 util/atsa.c:2630 util/atsa.c:2718
msgid "done!\n"
msgstr "getan!\n"
@@ -10593,181 +10488,181 @@ msgid ""
"\n"
msgstr ""
-#: util/atsa.c:1482
+#: util/atsa.c:1492
#, c-format
msgid "atsa: error opening residual file '%s'"
msgstr ""
-#: util/atsa.c:1486
+#: util/atsa.c:1496
#, c-format
msgid "atsa: residual file has %d channels, must be stereo !"
msgstr ""
-#: util/atsa.c:1813
+#: util/atsa.c:1823
#, c-format
msgid ""
"\n"
"ERROR: cannot open file %s for writing\n"
msgstr ""
-#: util/atsa.c:1908
+#: util/atsa.c:1918
msgid "Error: sound not optimised !"
msgstr ""
-#: util/atsa.c:2003
+#: util/atsa.c:2013
#, c-format
msgid "atsa: cannot open input file '%s'"
msgstr ""
-#: util/atsa.c:2010
+#: util/atsa.c:2020
#, c-format
msgid "atsa: file has %d channels, must be mono !"
msgstr ""
-#: util/atsa.c:2015
+#: util/atsa.c:2025
msgid "tracking...\n"
msgstr ""
-#: util/atsa.c:2024
+#: util/atsa.c:2034
#, c-format
msgid "start %f out of bounds, corrected to 0.0"
msgstr ""
-#: util/atsa.c:2034
+#: util/atsa.c:2044
#, c-format
msgid "duration %f out of bounds, limited to file duration"
msgstr ""
-#: util/atsa.c:2040
+#: util/atsa.c:2050
#, c-format
msgid "start: %f duration: %f file dur: %f\n"
msgstr ""
-#: util/atsa.c:2047
+#: util/atsa.c:2057
#, c-format
msgid "lowest freq. %f out of bounds, forced to default: %f"
msgstr ""
-#: util/atsa.c:2057
+#: util/atsa.c:2067
#, c-format
msgid "highest freq. %f out of bounds, forced to default: %f"
msgstr ""
-#: util/atsa.c:2064
+#: util/atsa.c:2074
#, c-format
msgid ""
"freq. dev. %f out of bounds, should be > 0.0 and <= 1.0, forced to default: "
"%f"
msgstr ""
-#: util/atsa.c:2072
+#: util/atsa.c:2082
#, c-format
msgid ""
"windows cycles %d out of bounds, should be between 1 and 8, forced to "
"default: %d"
msgstr ""
-#: util/atsa.c:2080
+#: util/atsa.c:2090
#, c-format
msgid ""
"window type %d out of bounds, should be between 0 and 3, forced to default: "
"%d"
msgstr ""
-#: util/atsa.c:2088
+#: util/atsa.c:2098
#, c-format
msgid ""
"hop size %f out of bounds, should be > 0.0 and <= 1.0, forced to default: %f"
msgstr ""
-#: util/atsa.c:2096
+#: util/atsa.c:2106
#, c-format
msgid ""
"lowest magnitude %f out of bounds, should be >= 0.0 and <= 1.0, forced to "
"default: %f"
msgstr ""
-#: util/atsa.c:2120
+#: util/atsa.c:2130
#, c-format
msgid "atsa: %d frames are not enough for analysis, need at least %d"
msgstr ""
-#: util/atsa.c:2129
+#: util/atsa.c:2139
#, c-format
msgid "track length %d out of bounds, forced to: %d"
msgstr ""
-#: util/atsa.c:2138
+#: util/atsa.c:2148
#, c-format
msgid "min. segment length %d out of bounds, forced to: %d"
msgstr ""
-#: util/atsa.c:2147
+#: util/atsa.c:2157
#, c-format
msgid "min. gap length %d out of bounds, forced to: %d"
msgstr ""
-#: util/atsa.c:2153
+#: util/atsa.c:2163
#, c-format
msgid ""
"SMR threshold %f out of bounds, should be >= 0.0 and < %f dB SPL, forced to "
"default: %f"
msgstr ""
-#: util/atsa.c:2164
+#: util/atsa.c:2174
#, c-format
msgid ""
"min. seg. SMR %f out of bounds, should be >= %f and < %f dB SPL, forced to "
"default: %f"
msgstr ""
-#: util/atsa.c:2172
+#: util/atsa.c:2182
#, c-format
msgid ""
"last peak contribution %f out of bounds, should be >= 0.0 and <= 1.0, forced "
"to default: %f"
msgstr ""
-#: util/atsa.c:2180
+#: util/atsa.c:2190
#, c-format
msgid ""
"SMR contribution %f out of bounds, should be >= 0.0 and <= 1.0, forced to "
"default: %f"
msgstr ""
-#: util/atsa.c:2325
+#: util/atsa.c:2335
msgid "Initializing ATS data..."
msgstr ""
-#: util/atsa.c:2355
+#: util/atsa.c:2365
msgid "Computing residual..."
msgstr ""
-#: util/atsa.c:2366
+#: util/atsa.c:2381 util/atsa.c:2384
msgid "Analysing residual..."
msgstr ""
-#: util/atsa.c:2370
+#: util/atsa.c:2389
msgid "tracking completed.\n"
msgstr ""
-#: util/atsa.c:2478
+#: util/atsa.c:2497
msgid "Filling sound gaps..."
msgstr ""
-#: util/atsa.c:2566
+#: util/atsa.c:2585
msgid "Trimming short partials..."
msgstr ""
-#: util/atsa.c:2662
+#: util/atsa.c:2681
msgid "Computing averages..."
msgstr ""
-#: util/atsa.c:2713
+#: util/atsa.c:2732
msgid "No partials to track -- stopping\n"
msgstr ""
-#: util/atsa.c:2813
+#: util/atsa.c:2832
msgid "Soundfile analysis for ATS opcodes"
msgstr ""
@@ -10799,8 +10694,8 @@ msgstr ""
msgid "illegal number of filenames"
msgstr ""
-#: util/cvanal.c:113 util/dnoise.c:456 util/lpanal.c:518 util/pvanal.c:258
-#: util/srconv.c:351
+#: util/cvanal.c:113 util/dnoise.c:445 util/lpanal.c:518 util/pvanal.c:258
+#: util/srconv.c:350
#, c-format
msgid "error while opening %s"
msgstr ""
@@ -10840,256 +10735,256 @@ msgstr ""
msgid "Soundfile analysis for convolve"
msgstr ""
-#: util/dnoise.c:285
+#: util/dnoise.c:281
msgid "-o cannot be stdin\n"
msgstr ""
-#: util/dnoise.c:297
+#: util/dnoise.c:293
msgid "-A overriding local default WAV out"
msgstr ""
-#: util/dnoise.c:302
+#: util/dnoise.c:298
msgid "-J overriding local default AIFF/WAV out"
msgstr ""
-#: util/dnoise.c:309
+#: util/dnoise.c:305
msgid "-W overriding local default AIFF out"
msgstr ""
-#: util/dnoise.c:356
+#: util/dnoise.c:345
msgid "no t argument"
msgstr ""
-#: util/dnoise.c:379
+#: util/dnoise.c:368
msgid "no n argument"
msgstr ""
-#: util/dnoise.c:384
+#: util/dnoise.c:373
msgid "no b argument"
msgstr ""
-#: util/dnoise.c:392
+#: util/dnoise.c:381
msgid "no B argument"
msgstr ""
-#: util/dnoise.c:404
+#: util/dnoise.c:393
msgid "no E argument"
msgstr ""
-#: util/dnoise.c:408
+#: util/dnoise.c:397
msgid "no N argument"
msgstr ""
-#: util/dnoise.c:412
+#: util/dnoise.c:401
msgid "no M argument"
msgstr ""
-#: util/dnoise.c:416
+#: util/dnoise.c:405
msgid "no L argument"
msgstr ""
-#: util/dnoise.c:420
+#: util/dnoise.c:409
msgid "no w argument"
msgstr ""
-#: util/dnoise.c:424
+#: util/dnoise.c:413
msgid "no D argument"
msgstr ""
-#: util/dnoise.c:431 util/srconv.c:328
+#: util/dnoise.c:420 util/srconv.c:327
#, c-format
msgid "Looking at %c\n"
msgstr ""
-#: util/dnoise.c:438 util/srconv.c:336
+#: util/dnoise.c:427 util/srconv.c:335
#, c-format
msgid "Infile set to %s\n"
msgstr ""
-#: util/dnoise.c:441 util/srconv.c:339
+#: util/dnoise.c:430 util/srconv.c:338
#, c-format
msgid "End with %s\n"
msgstr ""
-#: util/dnoise.c:447
+#: util/dnoise.c:436
msgid "dnoise: no input file\n"
msgstr ""
-#: util/dnoise.c:451
+#: util/dnoise.c:440
msgid "Must have an example noise file (-i name)\n"
msgstr ""
-#: util/dnoise.c:479
+#: util/dnoise.c:468
#, c-format
msgid "cannot open %s.\n"
msgstr ""
-#: util/dnoise.c:491 util/srconv.c:461 util/srconv.c:473
+#: util/dnoise.c:480 util/srconv.c:460 util/srconv.c:472
#, c-format
msgid "cannot open %s."
msgstr ""
-#: util/dnoise.c:510
+#: util/dnoise.c:499
msgid "dnoise: input MUST be mono or stereo\n"
msgstr ""
-#: util/dnoise.c:518
+#: util/dnoise.c:507
msgid "dnoise: cannot open noise reference file\n"
msgstr ""
-#: util/dnoise.c:523
+#: util/dnoise.c:512
msgid "Incompatible sample rates\n"
msgstr ""
-#: util/dnoise.c:542
+#: util/dnoise.c:531
#, c-format
msgid "dnoise: warning - N not a valid power of two; revised N = %d\n"
msgstr ""
-#: util/dnoise.c:552
+#: util/dnoise.c:541
msgid "dnoise: warning - do not specify both M and W\n"
msgstr ""
-#: util/dnoise.c:562
+#: util/dnoise.c:551
msgid "dnoise: warning - invalid W ignored\n"
msgstr ""
-#: util/dnoise.c:576
+#: util/dnoise.c:565
msgid "dnoise: warning - M is too small\n"
msgstr ""
-#: util/dnoise.c:586
+#: util/dnoise.c:575
msgid "dnoise: M too large\n"
msgstr ""
-#: util/dnoise.c:592
+#: util/dnoise.c:581
msgid "dnoise: L too large\n"
msgstr ""
-#: util/dnoise.c:602
+#: util/dnoise.c:591
#, c-format
msgid "writing %u-byte blks of %s to %s"
msgstr ""
-#: util/dnoise.c:627 util/dnoise.c:666 util/dnoise.c:721 util/dnoise.c:732
-#: util/dnoise.c:736 util/dnoise.c:743 util/dnoise.c:753 util/dnoise.c:758
-#: util/dnoise.c:762 util/dnoise.c:766 util/dnoise.c:770
+#: util/dnoise.c:616 util/dnoise.c:655 util/dnoise.c:710 util/dnoise.c:721
+#: util/dnoise.c:725 util/dnoise.c:732 util/dnoise.c:742 util/dnoise.c:747
+#: util/dnoise.c:751 util/dnoise.c:755 util/dnoise.c:759
msgid "dnoise: insufficient memory\n"
msgstr ""
-#: util/dnoise.c:779 util/dnoise.c:788
+#: util/dnoise.c:768 util/dnoise.c:777
msgid "dnoise: begin time is greater than EOF of noise file!"
msgstr ""
-#: util/dnoise.c:820
+#: util/dnoise.c:809
msgid "dnoise: not enough samples of noise reference\n"
msgstr ""
-#: util/dnoise.c:1118
+#: util/dnoise.c:1103
#, c-format
msgid "%5.1f seconds of input complete\n"
msgstr ""
-#: util/dnoise.c:1137
+#: util/dnoise.c:1122
msgid "processing complete\n"
msgstr ""
-#: util/dnoise.c:1147
+#: util/dnoise.c:1132
msgid "usage: dnoise [flags] input_file"
msgstr ""
-#: util/dnoise.c:1149
+#: util/dnoise.c:1134
msgid "flags:"
msgstr ""
-#: util/dnoise.c:1150
+#: util/dnoise.c:1135
msgid "i = noise reference soundfile"
msgstr ""
-#: util/dnoise.c:1151
+#: util/dnoise.c:1136
msgid "o = output file"
msgstr ""
-#: util/dnoise.c:1152
+#: util/dnoise.c:1137
msgid "N = # of bandpass filters (1024)"
msgstr ""
-#: util/dnoise.c:1153
+#: util/dnoise.c:1138
msgid "w = filter overlap factor: {0,1,(2),3} DON'T USE -w AND -M"
msgstr ""
-#: util/dnoise.c:1154
+#: util/dnoise.c:1139
msgid "M = analysis window length (N-1 unless -w is specified)"
msgstr ""
-#: util/dnoise.c:1155
+#: util/dnoise.c:1140
msgid "L = synthesis window length (M)"
msgstr ""
-#: util/dnoise.c:1156
+#: util/dnoise.c:1141
msgid "D = decimation factor (M/8)"
msgstr ""
-#: util/dnoise.c:1157
+#: util/dnoise.c:1142
msgid "b = begin time in noise reference soundfile (0)"
msgstr ""
-#: util/dnoise.c:1158
+#: util/dnoise.c:1143
msgid "B = starting sample in noise reference soundfile (0)"
msgstr ""
-#: util/dnoise.c:1159
+#: util/dnoise.c:1144
msgid "e = end time in noise reference soundfile (end)"
msgstr ""
-#: util/dnoise.c:1160
+#: util/dnoise.c:1145
msgid "E = final sample in noise reference soundfile (end)"
msgstr ""
-#: util/dnoise.c:1161
+#: util/dnoise.c:1146
msgid "t = threshold above noise reference in dB (30)"
msgstr ""
-#: util/dnoise.c:1162
+#: util/dnoise.c:1147
msgid "S = sharpness of noise-gate turnoff (1) (1 to 5)"
msgstr ""
-#: util/dnoise.c:1163
+#: util/dnoise.c:1148
msgid "n = number of FFT frames to average over (5)"
msgstr ""
-#: util/dnoise.c:1164
+#: util/dnoise.c:1149
msgid "m = minimum gain of noise-gate when off in dB (-40)"
msgstr ""
-#: util/dnoise.c:1165
+#: util/dnoise.c:1150
msgid "V : verbose - print status info"
msgstr ""
-#: util/dnoise.c:1166
+#: util/dnoise.c:1151
msgid "A : AIFF format output"
msgstr ""
-#: util/dnoise.c:1167
+#: util/dnoise.c:1152
msgid "W : WAV format output"
msgstr ""
-#: util/dnoise.c:1168
+#: util/dnoise.c:1153
msgid "J : IRCAM format output"
msgstr ""
-#: util/dnoise.c:1187
+#: util/dnoise.c:1172
#, c-format
msgid "soundfile write returned sample count of %d, not %d\n"
msgstr ""
-#: util/dnoise.c:1189
+#: util/dnoise.c:1174
msgid ""
"(disk may be full...\n"
" closing the file ...)\n"
msgstr ""
-#: util/dnoise.c:1257
+#: util/dnoise.c:1242
msgid "Removes noise from a sound file"
msgstr ""
@@ -11097,7 +10992,7 @@ msgstr ""
msgid "Usage:\tenvext [-flags] soundfile\n"
msgstr ""
-#: util/envext.c:54 util/srconv.c:738
+#: util/envext.c:54 util/srconv.c:737
msgid "-o fnam\tsound output filename\n"
msgstr ""
@@ -11131,7 +11026,7 @@ msgstr ""
msgid "enveloping %ld sample frames (%3.1f secs)\n"
msgstr ""
-#: util/envext.c:179
+#: util/envext.c:177
msgid "Create a text file of envelope"
msgstr ""
@@ -11545,7 +11440,7 @@ msgstr ""
msgid "Legal flags are:"
msgstr ""
-#: util/mixer.c:107 util/scale.c:60 util/srconv.c:753
+#: util/mixer.c:107 util/scale.c:60 util/srconv.c:752
msgid "-H#\tprint a heartbeat style 1, 2 or 3 at each soundfile write"
msgstr ""
@@ -11585,7 +11480,7 @@ msgstr ""
msgid "mixer: error: "
msgstr "mixer: Störung: "
-#: util/mixer.c:188 util/scale.c:161 util/srconv.c:232
+#: util/mixer.c:188 util/scale.c:161 util/srconv.c:231
#, c-format
msgid "%s not a recognized SFOUTYP env setting"
msgstr ""
@@ -11814,17 +11709,17 @@ msgstr "pvanal Störung: %s\n"
msgid "Soundfile analysis for pvoc"
msgstr ""
-#: util/pvanal.c:469
+#: util/pvanal.c:467
#, c-format
msgid "pvxanal: unable to create analysis file: %s"
msgstr ""
-#: util/pvanal.c:500 util/pvanal.c:532
+#: util/pvanal.c:498 util/pvanal.c:530
#, c-format
msgid "pvxanal: error writing analysis frames: %s\n"
msgstr ""
-#: util/pvanal.c:542
+#: util/pvanal.c:540
#, c-format
msgid ""
"\n"
@@ -11914,7 +11809,7 @@ msgstr ""
msgid "-P fpnum\tscale file to given percentage of full"
msgstr ""
-#: util/scale.c:62 util/srconv.c:755
+#: util/scale.c:62 util/srconv.c:754
msgid "-- fnam\tlog output to file"
msgstr ""
@@ -12065,75 +11960,75 @@ msgstr ""
msgid "Sound format -%c has been overruled by -%c"
msgstr ""
-#: util/srconv.c:299
+#: util/srconv.c:298
msgid "No Q argument"
msgstr ""
-#: util/srconv.c:304
+#: util/srconv.c:303
msgid "No P argument"
msgstr ""
-#: util/srconv.c:313
+#: util/srconv.c:312
msgid "No r argument"
msgstr ""
-#: util/srconv.c:322
+#: util/srconv.c:321
msgid "No break file"
msgstr ""
-#: util/srconv.c:345
+#: util/srconv.c:344
msgid "No input given\n"
msgstr ""
-#: util/srconv.c:362
+#: util/srconv.c:361
msgid "srconv: cannot specify both -r and -P"
msgstr ""
-#: util/srconv.c:373
+#: util/srconv.c:372
msgid "srconv: cannot open time-vary function file"
msgstr ""
-#: util/srconv.c:389
+#: util/srconv.c:388
msgid "srconv: too few x-y pairs in time-vary function file"
msgstr ""
-#: util/srconv.c:403
+#: util/srconv.c:402
msgid "srconv: first x value in time-vary function must be 0"
msgstr ""
-#: util/srconv.c:408
+#: util/srconv.c:407
msgid "srconv: invalid initial y value in time-vary function"
msgstr ""
-#: util/srconv.c:413 util/srconv.c:705
+#: util/srconv.c:412 util/srconv.c:704
msgid "srconv: invalid x values in time-vary function"
msgstr ""
-#: util/srconv.c:732
+#: util/srconv.c:731
msgid ""
"usage: srconv [flags] infile\n"
"\n"
"flags:"
msgstr ""
-#: util/srconv.c:733
+#: util/srconv.c:732
msgid ""
"-P num\tpitch transposition ratio (srate/r) [do not specify both P and r]"
msgstr ""
-#: util/srconv.c:735
+#: util/srconv.c:734
msgid "-Q num\tquality factor (1 to 8: default = 2)"
msgstr ""
-#: util/srconv.c:736
+#: util/srconv.c:735
msgid "-i filnam\tbreak file"
msgstr ""
-#: util/srconv.c:737
+#: util/srconv.c:736
msgid "-r num\toutput sample rate (must be specified)"
msgstr ""
-#: util/srconv.c:821
+#: util/srconv.c:820
msgid "Sample rate conversion"
msgstr ""
@@ -12284,6 +12179,18 @@ msgid "Extract part of a sound file"
msgstr ""
#, fuzzy
+#~ msgid "tableseg: not initialized"
+#~ msgstr "tableseg: nicht initialisiert"
+
+#, fuzzy
+#~ msgid "tablexseg: not initialized"
+#~ msgstr "tablexseg: nicht initialisiert"
+
+#, fuzzy
+#~ msgid "vdelayk: not initialized"
+#~ msgstr "delayk: nicht initialisiert"
+
+#, fuzzy
#~ msgid "csound_orcerror on line %d: %s\n"
#~ msgstr "cvanal Störung: %s\n"
diff --git a/po/italian.po b/po/italian.po
index 5c5dcad..f6d7ba5 100644
--- a/po/italian.po
+++ b/po/italian.po
@@ -33,22 +33,22 @@ msgstr "auxlist per strumento %d (%p):\n"
msgid "auxlist for instr %d (%p):\n"
msgstr "auxlist per strumento %d (%p):\n"
-#: Engine/auxfd.c:153
+#: Engine/auxfd.c:154
#, c-format
msgid "\tauxch at %p: size %ld, auxp %p, endp %p\n"
msgstr "\tauxch a %p: dimensione %ld, auxp %p, endp %p\n"
-#: Engine/auxfd.c:165
+#: Engine/auxfd.c:166
#, fuzzy, c-format
msgid "fdlist for instr %s [%d] (%p):"
msgstr "fdlist per strumento %d (%p):"
-#: Engine/auxfd.c:168
+#: Engine/auxfd.c:169
#, c-format
msgid "fdlist for instr %d (%p):"
msgstr "fdlist per strumento %d (%p):"
-#: Engine/auxfd.c:171
+#: Engine/auxfd.c:172
#, c-format
msgid " fd %p in %p"
msgstr " fd %p in %p"
@@ -101,366 +101,322 @@ msgstr "la lunghezza della stringa supera il valore permesso"
msgid "(unknown error)"
msgstr "(errore sconosciuto)"
-#: Engine/csound_orc_compile.c:214 Engine/rdorch.c:1832
+#: Engine/csound_orc_compile.c:138
+#, fuzzy, c-format
+msgid ""
+"input arg %d '%s' of type %s not allowed when expecting %c (for opcode %s), "
+"line %d\n"
+msgstr "argomento in input '%s' di tipo %s non permesso aspettando invece %c"
+
+#: Engine/csound_orc_compile.c:265 Engine/rdorch.c:1862
msgid "missing or extra arg"
msgstr "argomento mancante o in più"
-#: Engine/csound_orc_compile.c:218
+#: Engine/csound_orc_compile.c:269
#, fuzzy
msgid "too many input args\n"
msgstr "troppi argomenti in input"
-#: Engine/csound_orc_compile.c:475
+#: Engine/csound_orc_compile.c:304
+#, fuzzy, c-format
+msgid "input arg '%s' used before defined (in opcode %s), line %d\n"
+msgstr "argomento in input '%s' usato prima di essere definito"
+
+#: Engine/csound_orc_compile.c:380
+#, fuzzy, c-format
+msgid ""
+"output name previously used, type '%c' must be uniquely defined, line %d"
+msgstr "nome di output già usato, il tipo '%c' deve essere definito unicamente"
+
+#: Engine/csound_orc_compile.c:386
+#, fuzzy, c-format
+msgid "output arg '%s' illegal type (for opcode %s), line %d\n"
+msgstr "argomento di output '%s' di tipo illegale"
+
+#: Engine/csound_orc_compile.c:541
#, fuzzy, c-format
msgid "create_opcode: No rule to handle statement of type %d\n"
msgstr "create_opcode: Non c'è regola d'uso per dichiarazione di tipo %d\n"
-#: Engine/csound_orc_compile.c:671
+#: Engine/csound_orc_compile.c:738
#, c-format
msgid "create_instrument: instr num %ld\n"
msgstr "create_instrument: strumento num %ld\n"
-#: Engine/csound_orc_compile.c:681
+#: Engine/csound_orc_compile.c:748
#, c-format
msgid "create_instrument: instr name %s\n"
msgstr "create_instrument: nome dello strumento %s\n"
-#: Engine/csound_orc_compile.c:688 Engine/otran.c:351
+#: Engine/csound_orc_compile.c:755 Engine/otran.c:364
msgid "invalid name for instrument"
msgstr "nome dello strumento non valido"
-#: Engine/csound_orc_compile.c:692 Engine/otran.c:356
+#: Engine/csound_orc_compile.c:759 Engine/otran.c:370
#, c-format
msgid "instr %s redefined"
msgstr "strumento %s ridefinito"
-#: Engine/csound_orc_compile.c:833 Engine/otran.c:145 Engine/symbtab.c:394
-#, c-format
-msgid "invalid input type for opcode %s"
-msgstr "tipo di input non valido per l'opcode %s"
-
-#: Engine/csound_orc_compile.c:838 Engine/otran.c:150 Engine/symbtab.c:399
-#, c-format
-msgid "too many input args for opcode %s"
-msgstr "troppi argomenti in input per l'opcode %s"
-
-#: Engine/csound_orc_compile.c:853 Engine/otran.c:165 Engine/symbtab.c:414
-#, c-format
-msgid "too many output args for opcode %s"
-msgstr "troppi argomenti in output per l'opcode %s"
-
-#: Engine/csound_orc_compile.c:869 Engine/otran.c:187 Engine/symbtab.c:433
-#, c-format
-msgid "invalid output type for opcode %s"
-msgstr "tipo di output non valido per l'opcode %s"
-
-#: Engine/csound_orc_compile.c:954 Engine/otran.c:339
+#: Engine/csound_orc_compile.c:903 Engine/otran.c:352
#, c-format
msgid "instr %ld redefined"
msgstr "strumento %ld ridefinito"
-#: Engine/csound_orc_compile.c:964
+#: Engine/csound_orc_compile.c:914
msgid "!!! csound->opcodeInfo is NULL !!!\n"
msgstr "!!! csound->opcodeInfo e' NULL !!!\n"
-#: Engine/csound_orc_compile.c:1111
+#: Engine/csound_orc_compile.c:1083
#, c-format
msgid "Unknown TREE node of type %d found in root.\n"
msgstr "Nodo sconosciuto di tipo %d trovato in root.\n"
-#: Engine/csound_orc_compile.c:1168 Engine/otran.c:565 Engine/otran.c:1414
+#: Engine/csound_orc_compile.c:1140 Engine/otran.c:579 Engine/otran.c:1433
#, c-format
msgid "%s invalid sample rate"
msgstr "%s frequenza di campionamento (sr) non valida"
-#: Engine/csound_orc_compile.c:1170 Engine/otran.c:567 Engine/otran.c:1416
+#: Engine/csound_orc_compile.c:1142 Engine/otran.c:581 Engine/otran.c:1435
#, c-format
msgid "%s invalid control rate"
msgstr "%s frequenza dei segnali di controllo (kr) non valida"
-#: Engine/csound_orc_compile.c:1173 Engine/otran.c:570 Engine/otran.c:1412
+#: Engine/csound_orc_compile.c:1146 Engine/otran.c:584 Engine/otran.c:1431
#, c-format
msgid "%s invalid ksmps value"
msgstr "%s valore di ksmps non valido"
-#: Engine/csound_orc_compile.c:1176 Engine/otran.c:572 Engine/otran.c:1418
+#: Engine/csound_orc_compile.c:1149 Engine/otran.c:587 Engine/otran.c:1437
#, c-format
msgid "%s inconsistent sr, kr, ksmps"
msgstr "%s sr, kr e ksmps sono incongruenti"
-#: Engine/csound_orc_compile.c:1190
+#: Engine/csound_orc_compile.c:1165
msgid "perf-pass statements illegal in header blk\n"
msgstr "dichiarazione d'esecuzione non valida nel blocco header\n"
-#: Engine/csound_orc_compile.c:1195
+#: Engine/csound_orc_compile.c:1170
#, c-format
msgid "%d syntax errors in orchestra. compilation invalid\n"
msgstr "%d errore\\i di sintassi nell'orchestra. Compilazione non valida\n"
-#: Engine/csound_orc_compile.c:1255 Engine/otran.c:656
+#: Engine/csound_orc_compile.c:1230 Engine/otran.c:671
msgid "inconsistent argoff sumcount"
msgstr "argoff sumcount incoerente"
-#: Engine/csound_orc_compile.c:1327 Engine/otran.c:725
+#: Engine/csound_orc_compile.c:1302 Engine/otran.c:740
#, c-format
msgid "LABELS list is full...extending to %d\n"
msgstr "Lista delle etichette piena...estesa a %d\n"
-#: Engine/csound_orc_compile.c:1365 Engine/otran.c:763
+#: Engine/csound_orc_compile.c:1340 Engine/otran.c:778
#, c-format
msgid "GOTOS list is full..extending to %d\n"
msgstr "Lista dei GOTOS piena...estesa a %d\n"
-#: Engine/csound_orc_compile.c:1398 Engine/otran.c:796
+#: Engine/csound_orc_compile.c:1373 Engine/otran.c:811
#, c-format
msgid "target label '%s' not found"
msgstr "obiettivo dell'etichetta '%s' non trovato"
-#: Engine/csound_orc_compile.c:1463 Engine/otran.c:851
+#: Engine/csound_orc_compile.c:1451 Engine/otran.c:866
#, c-format
msgid "string syntax '%s'"
msgstr "sintassi della stringa '%s'"
-#: Engine/csound_orc_compile.c:1513 Engine/otran.c:901
+#: Engine/csound_orc_compile.c:1501 Engine/otran.c:916
#, c-format
msgid "numeric syntax '%s'"
msgstr "sintassi numerica '%s'"
-#: Engine/csound_orc_compile.c:1539 Engine/otran.c:927
+#: Engine/csound_orc_compile.c:1527 Engine/otran.c:942
#, c-format
msgid "extending Floating pool to %d\n"
msgstr "insieme dei Floating esteso a %d\n"
-#: Engine/csound_orc_compile.c:1578 Engine/otran.c:999
+#: Engine/csound_orc_compile.c:1566 Engine/otran.c:1018
msgid "gblnamset(): memory allocation failure"
msgstr "gblnamset(): allocazione di memoria fallita"
-#: Engine/csound_orc_compile.c:1606 Engine/otran.c:1027
+#: Engine/csound_orc_compile.c:1594 Engine/otran.c:1046
msgid "lclnamset(): memory allocation failure"
msgstr "lclcnamset: allocazione di memoria fallita"
-#: Engine/csound_orc_compile.c:1632 Engine/otran.c:1052
+#: Engine/csound_orc_compile.c:1620 Engine/otran.c:1071
#, fuzzy
msgid "unexpected global name"
msgstr "nome globale inaspettato"
-#: Engine/csound_orc_compile.c:1655 Engine/otran.c:1074
+#: Engine/csound_orc_compile.c:1643 Engine/otran.c:1093
msgid "unknown nametype"
msgstr "tipo di nome sconosciuto"
-#: Engine/csound_orc.l:239
+#: Engine/csound_orc_expressions.c:459
#, c-format
-msgid "unterminated string found on line %d >>%s<<\n"
+msgid "error: function %s with arg type %c not found, line %d \n"
msgstr ""
-#: Engine/csound_orc.l:259 Engine/csound_orc.l:286 Engine/csound_orc.l:314
-#: Engine/csound_orc.l:367 Engine/rdorch.c:901 Engine/sread.c:396
-#, c-format
-msgid "Undefined macro: '%s'"
-msgstr "macro non definita: '%s'"
-
-#: Engine/csound_orc.l:265 Engine/csound_orc.l:292
-#, fuzzy
-msgid "Includes nested too deeply"
-msgstr "inclusioni innestate troppo in profondità "
-
-#: Engine/csound_orc.l:335 Engine/csound_orc.l:388 Engine/rdorch.c:940
+#: Engine/csound_orc_expressions.c:862
#, c-format
-msgid ""
-"Missing argument terminator\n"
-"%.98s"
+msgid "error: non-existent statement in conditional, line %d \n"
msgstr ""
-"Manca argomento conclusivo\n"
-"%.98s"
-
-#: Engine/csound_orc.l:484
-#, fuzzy, c-format
-msgid "Line %d: Unknown character: '%c'(%2x)\n"
-msgstr "Linea %d: carattere sconosciuto: '%s'\n"
-
-#: Engine/csound_orc.l:527
-#, c-format
-msgid "Cannot open file \"%s\"\n"
-msgstr "Non è possibile aprire il file: \"%s\"\n"
-#: Engine/csound_orc.l:573 Engine/rdorch.c:689 Engine/sread.c:1595
-msgid "macro error\n"
-msgstr "errore macro\n"
-
-#: Engine/csound_orc.l:631 Engine/rdorch.c:845 Engine/sread.c:1686
-#, c-format
-msgid "macro %s undefined\n"
-msgstr "macro %s non definita\n"
-
-#: Engine/csound_orc.l:645 Engine/rdorch.c:859 Engine/sread.c:294
-msgid "Undefining undefined macro"
-msgstr "Libero la macro non definita"
-
-#: Engine/csound_orc.l:786 Engine/rdorch.c:413 Engine/sread.c:741
-#, c-format
-msgid "Macro definition for %*s\n"
-msgstr "Definizione di macro per %*s\n"
-
-#: Engine/csound_orc.l:789 Engine/rdorch.c:416
-msgid "Invalid macro name for --omacro"
-msgstr "Nome di macro non valido per --omacro"
-
-#: Engine/csound_orc.y:270
-msgid "No number following instr\n"
-msgstr "instr non è seguito da nessun numero\n"
-
-#: Engine/csound_orc_semantics.c:127
+#: Engine/csound_orc_semantics.c:157
#, fuzzy, c-format
-msgid "error: %s (token \"%s\")"
+msgid ""
+"\n"
+"error: %s (token \"%s\")"
msgstr "%s: errore: %s (%s)\n"
-#: Engine/csound_orc_semantics.c:129
+#: Engine/csound_orc_semantics.c:159
#, fuzzy, c-format
-msgid " line %d: %s"
+msgid ""
+" line %d:\n"
+">>>"
msgstr ", linea %d:\n"
-#: Engine/csound_orc_semantics.c:702 Engine/rdorch.c:1863
-#, fuzzy
-msgid "insufficient required arguments"
+#: Engine/csound_orc_semantics.c:732
+#, fuzzy, c-format
+msgid "insufficient required arguments for opcode %s on line %d\n"
msgstr "gli argomenti richiesti sono insufficienti"
-#: Engine/csound_orc_semantics.c:768 Engine/rdorch.c:1617 Engine/rdorch.c:1635
-#: Engine/rdorch.c:1676 Engine/rdorch.c:1811 Engine/rdorch.c:1980
+#: Engine/csound_orc_semantics.c:797 Engine/rdorch.c:1644 Engine/rdorch.c:1662
+#: Engine/rdorch.c:1703 Engine/rdorch.c:1841 Engine/rdorch.c:2011
#, c-format
msgid "modified opcod: %s"
msgstr "modificato l'opcode: %s"
-#: Engine/cs_par_dispatch.c:113 Engine/cs_par_dispatch.c:125
+#: Engine/cs_par_dispatch.c:115 Engine/cs_par_dispatch.c:128
#, c-format
msgid "Poorly specified global lock index: %i [max: %i]\n"
msgstr ""
-#: Engine/cs_par_dispatch.c:138 Engine/cs_par_dispatch.c:157
+#: Engine/cs_par_dispatch.c:142 Engine/cs_par_dispatch.c:162
msgid "Invalid NULL parameter name for a global variable\n"
msgstr ""
-#: Engine/cs_par_dispatch.c:505 Engine/cs_par_dispatch.c:528
-#: Engine/cs_par_dispatch.c:2463 Engine/cs_par_dispatch.c:2507
-#: Engine/cs_par_dispatch.c:2509 Engine/cs_par_dispatch.c:2570
+#: Engine/cs_par_dispatch.c:526 Engine/cs_par_dispatch.c:553
+#: Engine/cs_par_dispatch.c:2543 Engine/cs_par_dispatch.c:2588
+#: Engine/cs_par_dispatch.c:2590 Engine/cs_par_dispatch.c:2654
msgid "Invalid NULL Parameter entry"
msgstr ""
-#: Engine/cs_par_dispatch.c:507 Engine/cs_par_dispatch.c:541
-#: Engine/cs_par_dispatch.c:566 Engine/cs_par_dispatch.c:605
+#: Engine/cs_par_dispatch.c:528 Engine/cs_par_dispatch.c:567
+#: Engine/cs_par_dispatch.c:594 Engine/cs_par_dispatch.c:635
#, fuzzy
msgid "Invalid NULL Parameter name"
msgstr "nome di variabile non valido"
-#: Engine/cs_par_dispatch.c:512
+#: Engine/cs_par_dispatch.c:535
msgid "Failed to allocate Opcode Weight cache entry"
msgstr ""
-#: Engine/cs_par_dispatch.c:632 Engine/cs_par_dispatch.c:718
+#: Engine/cs_par_dispatch.c:664 Engine/cs_par_dispatch.c:755
msgid "No Weights to Dump (Using Defaults)\n"
msgstr ""
-#: Engine/cs_par_dispatch.c:670 Engine/cs_par_dispatch.c:794
+#: Engine/cs_par_dispatch.c:705 Engine/cs_par_dispatch.c:835
#, c-format
msgid "Opcode Weight Spec File not found at: %s"
msgstr ""
-#: Engine/cs_par_dispatch.c:722
+#: Engine/cs_par_dispatch.c:759
msgid "Weights Dump\n"
msgstr ""
-#: Engine/cs_par_dispatch.c:866
+#: Engine/cs_par_dispatch.c:907
#, c-format
msgid "Parallel Spec File not found at: %s"
msgstr ""
-#: Engine/cs_par_dispatch.c:872
+#: Engine/cs_par_dispatch.c:913
msgid "Parallel Spec File invalid format expected weight_min parameter"
msgstr ""
-#: Engine/cs_par_dispatch.c:877
+#: Engine/cs_par_dispatch.c:918
msgid "Parallel Spec File invalid format expected weight_max parameter"
msgstr ""
-#: Engine/cs_par_dispatch.c:881
+#: Engine/cs_par_dispatch.c:922
msgid "Parallel Spec File invalid format expected roots_avail_min parameter"
msgstr ""
-#: Engine/cs_par_dispatch.c:885
+#: Engine/cs_par_dispatch.c:926
msgid "Parallel Spec File invalid format expected roots_avail_max parameter"
msgstr ""
-#: Engine/cs_par_dispatch.c:961 Engine/cs_par_dispatch.c:985
-#: Engine/cs_par_dispatch.c:1109 Engine/cs_par_dispatch.c:1195
-#: Engine/cs_par_dispatch.c:1332 Engine/cs_par_dispatch.c:1366
-#: Engine/cs_par_dispatch.c:1383 Engine/cs_par_dispatch.c:1405
-#: Engine/cs_par_dispatch.c:1432 Engine/cs_par_dispatch.c:1452
-#: Engine/cs_par_dispatch.c:1476 Engine/cs_par_dispatch.c:1566
-#: Engine/cs_par_dispatch.c:1621 Engine/cs_par_dispatch.c:1714
-#: Engine/cs_par_dispatch.c:1769 Engine/cs_par_dispatch.c:2597
+#: Engine/cs_par_dispatch.c:1003 Engine/cs_par_dispatch.c:1027
+#: Engine/cs_par_dispatch.c:1155 Engine/cs_par_dispatch.c:1251
+#: Engine/cs_par_dispatch.c:1405 Engine/cs_par_dispatch.c:1439
+#: Engine/cs_par_dispatch.c:1456 Engine/cs_par_dispatch.c:1478
+#: Engine/cs_par_dispatch.c:1506 Engine/cs_par_dispatch.c:1528
+#: Engine/cs_par_dispatch.c:1552 Engine/cs_par_dispatch.c:1644
+#: Engine/cs_par_dispatch.c:1699 Engine/cs_par_dispatch.c:1792
+#: Engine/cs_par_dispatch.c:1847 Engine/cs_par_dispatch.c:2681
msgid "Invalid NULL Parameter dag"
msgstr ""
-#: Engine/cs_par_dispatch.c:966
+#: Engine/cs_par_dispatch.c:1008
#, fuzzy
msgid "Failed to allocate dag"
msgstr "fallita apertura del dispositivo"
-#: Engine/cs_par_dispatch.c:1017 Engine/cs_par_dispatch.c:1040
-#: Engine/cs_par_dispatch.c:1062 Engine/cs_par_dispatch.c:1064
+#: Engine/cs_par_dispatch.c:1060 Engine/cs_par_dispatch.c:1083
+#: Engine/cs_par_dispatch.c:1105 Engine/cs_par_dispatch.c:1107
msgid "Invalid NULL Parameter dag_node"
msgstr ""
-#: Engine/cs_par_dispatch.c:1019
+#: Engine/cs_par_dispatch.c:1062
#, fuzzy
msgid "Invalid NULL Parameter instr"
msgstr "nome dello strumento non valido"
-#: Engine/cs_par_dispatch.c:1021
+#: Engine/cs_par_dispatch.c:1064
msgid "Invalid NULL Parameter insds"
msgstr ""
-#: Engine/cs_par_dispatch.c:1026 Engine/cs_par_dispatch.c:1048
+#: Engine/cs_par_dispatch.c:1069 Engine/cs_par_dispatch.c:1091
msgid "Failed to allocate dag_node"
msgstr ""
-#: Engine/cs_par_dispatch.c:1043
+#: Engine/cs_par_dispatch.c:1086
msgid "Invalid Parameter count must be greater than 0"
msgstr ""
-#: Engine/cs_par_dispatch.c:1175 Engine/cs_par_dispatch.c:1433
-#: Engine/cs_par_dispatch.c:2465 Engine/cs_par_dispatch.c:2571
-#: Engine/cs_par_dispatch.c:2598
+#: Engine/cs_par_dispatch.c:1229 Engine/cs_par_dispatch.c:1508
+#: Engine/cs_par_dispatch.c:2545 Engine/cs_par_dispatch.c:2655
+#: Engine/cs_par_dispatch.c:2682
msgid "Invalid NULL Parameter chain"
msgstr ""
-#: Engine/cs_par_dispatch.c:1183
+#: Engine/cs_par_dispatch.c:1237
#, c-format
msgid "Failed to find semantic information for instrument '%i'"
msgstr ""
-#: Engine/cs_par_dispatch.c:1478
+#: Engine/cs_par_dispatch.c:1554
#, fuzzy
msgid "Invalid NULL Parameter node"
msgstr "nome dell'opcode non valido"
-#: Engine/cs_par_dispatch.c:1480
+#: Engine/cs_par_dispatch.c:1556
msgid "Invalid NULL Parameter update_hdl"
msgstr ""
-#: Engine/cs_par_dispatch.c:1569
+#: Engine/cs_par_dispatch.c:1647
msgid "Invalid Parameter update_hdl is outside the DAG range"
msgstr ""
-#: Engine/cs_par_dispatch.c:2417
+#: Engine/cs_par_dispatch.c:2497
#, c-format
msgid "Parallel Dump File not found at: %s for writing"
msgstr ""
-#: Engine/cs_par_dispatch.c:2477
+#: Engine/cs_par_dispatch.c:2557
msgid "Failed to allocate Dag2 cache entry"
msgstr ""
-#: Engine/cs_par_dispatch.c:2527
+#: Engine/cs_par_dispatch.c:2610
msgid "Cache Update\n"
msgstr ""
@@ -474,12 +430,12 @@ msgstr "La variabile d'ambiente '%s' è stata fissata a"
msgid "Creating search path cache for '%s':"
msgstr "Creata cache del percorso di ricerca per '%s':"
-#: Engine/envvar.c:1082
+#: Engine/envvar.c:1083
#, c-format
msgid "internal error: csoundFileOpen(): invalid type: %d"
msgstr "errore interno: csoundFileOpen(): tipo non valido: %d"
-#: Engine/envvar.c:1264
+#: Engine/envvar.c:1266
#, c-format
msgid "internal error: csoundCreateFileHandle(): invalid type: %d"
msgstr "errore interno: csoundCreateFileHandle(): tipo non valido: %d"
@@ -540,48 +496,48 @@ msgstr "conteggio dei termini"
msgid "expression syntax"
msgstr "sintassi d'espressione"
-#: Engine/fgens.c:95
+#: Engine/fgens.c:91
msgid "unknown GEN number"
msgstr "numero di GEN sconosciuto"
-#: Engine/fgens.c:137
+#: Engine/fgens.c:133
msgid "ftable does not exist"
msgstr "ftable non esiste"
-#: Engine/fgens.c:142
+#: Engine/fgens.c:138
#, c-format
msgid "ftable %d now deleted\n"
msgstr "la ftable %d viene cancellata\n"
-#: Engine/fgens.c:157 Engine/fgens.c:1597 Engine/fgens.c:1683
-#: Engine/fgens.c:1762 Engine/fgens.c:1878 Engine/fgens.c:1959
-#: Engine/fgens.c:2867
+#: Engine/fgens.c:153 Engine/fgens.c:1593 Engine/fgens.c:1679
+#: Engine/fgens.c:1758 Engine/fgens.c:1874 Engine/fgens.c:1955
+#: Engine/fgens.c:2909
msgid "insufficient gen arguments"
msgstr "gli argomenti della gen sono insufficienti"
-#: Engine/fgens.c:183 Opcodes/ftgen.c:116
+#: Engine/fgens.c:179 Opcodes/ftgen.c:116
#, c-format
msgid "Named gen \"%s\" not defined"
msgstr "gen chiamata \"%s\" non definita"
-#: Engine/fgens.c:190
+#: Engine/fgens.c:186
msgid "illegal gen number"
msgstr "numero di gen non consentito"
-#: Engine/fgens.c:198
-msgid "deferred size for GENs 1, 23 or 28 only"
-msgstr "dimensione differita solo per GENs 1, 23 o 28"
+#: Engine/fgens.c:194
+msgid "deferred size for GENs 1, 23, 28 or 49 only"
+msgstr "dimensione differita solo per GENs 1, 23, 28 o 49"
-#: Engine/fgens.c:201 Engine/fgens.c:249
+#: Engine/fgens.c:197 Engine/fgens.c:245
#, c-format
msgid "ftable %d:\n"
msgstr "ftable %d:\n"
-#: Engine/fgens.c:226 Engine/fgens.c:233
+#: Engine/fgens.c:222 Engine/fgens.c:229
msgid "illegal table length"
msgstr "lunghezza della tavola illegale"
-#: Engine/fgens.c:292 Engine/fgens.c:2219
+#: Engine/fgens.c:288 Engine/fgens.c:2215
#, c-format
msgid ""
"ftable %d relocating due to size change\n"
@@ -590,308 +546,309 @@ msgstr ""
"ftable %d ricollocata per cambiamento di dimensioni\n"
" gli strumenti attivi potrebbero esserne disturbati"
-#: Engine/fgens.c:350 Engine/fgens.c:471 Engine/fgens.c:555 Engine/fgens.c:636
-#: Engine/fgens.c:711 Engine/fgens.c:760 Engine/fgens.c:881 Engine/fgens.c:958
-#: Engine/fgens.c:1053 Engine/fgens.c:1097 Engine/fgens.c:1144
-#: Engine/fgens.c:1397 Engine/fgens.c:1459 Engine/fgens.c:1681
-#: Engine/fgens.c:1759 Engine/fgens.c:2114 Engine/fgens.c:2821
-#: Engine/fgens.c:2864
+#: Engine/fgens.c:346 Engine/fgens.c:467 Engine/fgens.c:551 Engine/fgens.c:632
+#: Engine/fgens.c:707 Engine/fgens.c:756 Engine/fgens.c:877 Engine/fgens.c:954
+#: Engine/fgens.c:1049 Engine/fgens.c:1093 Engine/fgens.c:1140
+#: Engine/fgens.c:1393 Engine/fgens.c:1455 Engine/fgens.c:1677
+#: Engine/fgens.c:1755 Engine/fgens.c:2110 Engine/fgens.c:2863
+#: Engine/fgens.c:2906
msgid "using extended arguments\n"
msgstr "uso di argomenti estesi\n"
-#: Engine/fgens.c:374
+#: Engine/fgens.c:370
msgid "no coefs present"
msgstr "non ci sono coefficienti"
-#: Engine/fgens.c:379 Engine/fgens.c:645 Engine/fgens.c:653
+#: Engine/fgens.c:375 Engine/fgens.c:641 Engine/fgens.c:649
msgid "illegal x interval"
msgstr "intervallo di x non consentito"
-#: Engine/fgens.c:408 Engine/fgens.c:557 Engine/fgens.c:638 Engine/fgens.c:883
-#: Engine/fgens.c:1354 Engine/fgens.c:2378 Engine/fgens.c:2694 Top/main.c:142
-#: util/cvanal.c:66 util/lpanal.c:398 util/pvanal.c:170
+#: Engine/fgens.c:404 Engine/fgens.c:553 Engine/fgens.c:634 Engine/fgens.c:879
+#: Engine/fgens.c:1350 Engine/fgens.c:2375 Engine/fgens.c:2690
+#: Engine/fgens.c:2810 Top/main.c:141 util/cvanal.c:66 util/lpanal.c:398
+#: util/pvanal.c:170
msgid "insufficient arguments"
msgstr "argomenti insufficienti"
-#: Engine/fgens.c:412 Engine/fgens.c:1359
+#: Engine/fgens.c:408 Engine/fgens.c:1355
msgid "unknown srctable number"
msgstr "numero di srctable sconosciuto"
-#: Engine/fgens.c:425
+#: Engine/fgens.c:421
msgid "table size too large"
msgstr "dimensione della tavola troppo grande"
-#: Engine/fgens.c:510 Engine/fgens.c:543
+#: Engine/fgens.c:506 Engine/fgens.c:539
msgid "gen call has negative segment size:"
msgstr "la gen chiamata ha dimensione del segmento negativa"
-#: Engine/fgens.c:512
+#: Engine/fgens.c:508
#, fuzzy
msgid "illegal input vals for gen call, beginning:"
msgstr "La gen chiamata ha valori in input non consentiti, inizio:"
-#: Engine/fgens.c:578
+#: Engine/fgens.c:574
msgid "negative segsiz"
msgstr "segsize negativo"
-#: Engine/fgens.c:787
+#: Engine/fgens.c:783
msgid "nh partials < 1"
msgstr "parziale nh < 1"
-#: Engine/fgens.c:886
+#: Engine/fgens.c:882
msgid "illegal xint value"
msgstr "valore di xint non consentito"
-#: Engine/fgens.c:889
+#: Engine/fgens.c:885
msgid "illegal xamp value"
msgstr "valore di xamp non consentito"
-#: Engine/fgens.c:961
+#: Engine/fgens.c:957
msgid "uneven number of args"
msgstr "numero di argomenti irregolare"
-#: Engine/fgens.c:1081
+#: Engine/fgens.c:1077
msgid "gen call has illegal x-ordinate values:"
msgstr "la gen chiamata ha valori di ordinata x non consentiti"
-#: Engine/fgens.c:1099
+#: Engine/fgens.c:1095
msgid "wrong number of args"
msgstr "numero di argomenti sbagliato"
-#: Engine/fgens.c:1113
+#: Engine/fgens.c:1109
msgid "a range given exceeds table length"
msgstr "un intervallo dato supera la lunghezza della tavola"
-#: Engine/fgens.c:1120
+#: Engine/fgens.c:1116
msgid "an input function does not exist"
msgstr "una funzione in input non esiste"
-#: Engine/fgens.c:1253
+#: Engine/fgens.c:1249
msgid "No such window!"
msgstr "Non c'è una tale finestra!"
-#: Engine/fgens.c:1271
+#: Engine/fgens.c:1267
msgid "Wrong number of input arguments"
msgstr "Numero di argomenti in input sbagliato"
-#: Engine/fgens.c:1272
+#: Engine/fgens.c:1268
msgid "unknown distribution"
msgstr "distrbuzione sconosciuta"
-#: Engine/fgens.c:1321
+#: Engine/fgens.c:1317
msgid "error opening ASCII file"
msgstr "errore in apertura del file ASCII"
-#: Engine/fgens.c:1327
+#: Engine/fgens.c:1323
#, c-format
msgid "%ld elements in %s\n"
msgstr "%ld elementi in %s\n"
-#: Engine/fgens.c:1338
+#: Engine/fgens.c:1334
msgid "Numbers after table full in GEN23"
msgstr "Numeri in eccesso dopo aver riempito la GEN23"
-#: Engine/fgens.c:1367
+#: Engine/fgens.c:1363
msgid "table size must be the same of source table"
msgstr ""
"il formato della tavola deve essere la stessa della tavola di derivazione "
"(source)"
-#: Engine/fgens.c:1439 Engine/fgens.c:1499
+#: Engine/fgens.c:1435 Engine/fgens.c:1495
msgid "x coordinates must all be in increasing order:"
msgstr "le coordinate x devono essere tutte in ordine crescente"
-#: Engine/fgens.c:1442 Engine/fgens.c:1501
+#: Engine/fgens.c:1438 Engine/fgens.c:1497
msgid "x coordinate greater than function size:"
msgstr "coordinata x maggiore della dimensione della tavola"
-#: Engine/fgens.c:1446
+#: Engine/fgens.c:1442
msgid "illegal input val (y <= 0) for gen call, beginning:"
msgstr "valore di input non valido (y <= 0) per la gen chiamata, inizio:"
-#: Engine/fgens.c:1519
+#: Engine/fgens.c:1515
msgid "GEN28 requires zero table length"
msgstr "GEN28 richiede lunghezza della tavola zero"
-#: Engine/fgens.c:1581
+#: Engine/fgens.c:1577
msgid "could not open space file"
msgstr "Impossibile aprire il file spazializzazione"
-#: Engine/fgens.c:1583
+#: Engine/fgens.c:1579
msgid "Time values must be in increasing order"
msgstr "I valori di tempo devono essere in ordine crescente"
-#: Engine/fgens.c:1604
+#: Engine/fgens.c:1600
#, fuzzy
msgid "GEN30: source ftable not found"
msgstr "GEN30: source ftable non trovata"
-#: Engine/fgens.c:1687
+#: Engine/fgens.c:1683
#, fuzzy
msgid "GEN31: source ftable not found"
msgstr "GEN31: source ftable non trovata"
-#: Engine/fgens.c:1795
+#: Engine/fgens.c:1791
#, c-format
msgid "GEN32: source ftable %d not found"
msgstr "GEN32: source ftable %d non trovata"
-#: Engine/fgens.c:1889
+#: Engine/fgens.c:1885
#, fuzzy
msgid "GEN33: source ftable not found"
msgstr "GEN33: source ftable non trovata"
-#: Engine/fgens.c:2057
+#: Engine/fgens.c:2053
#, fuzzy
msgid "unknown source table number"
msgstr "numero di tavola source sconosciuto"
-#: Engine/fgens.c:2089
+#: Engine/fgens.c:2085
msgid "Gen41: negative probability not allowed"
msgstr ""
-#: Engine/fgens.c:2155 Opcodes/fareygen.c:70
+#: Engine/fgens.c:2151 Opcodes/fareygen.c:70
#, c-format
msgid "ftable %d: "
msgstr "ftable %d: "
-#: Engine/fgens.c:2199
+#: Engine/fgens.c:2195
#, c-format
msgid "ftable %d:"
msgstr "ftable %d:"
-#: Engine/fgens.c:2214
+#: Engine/fgens.c:2210
#, c-format
msgid "replacing previous ftable %d"
msgstr "sostituisco la precedente ftable %d"
-#: Engine/fgens.c:2250 Engine/fgens.c:2337 Engine/fgens.c:2361
-#: Opcodes/gab/gab.c:578 Opcodes/gab/gab.c:632 Opcodes/midiops2.c:218
+#: Engine/fgens.c:2246 Engine/fgens.c:2334 Engine/fgens.c:2358
+#: Opcodes/gab/gab.c:580 Opcodes/gab/gab.c:634 Opcodes/midiops2.c:218
#: Opcodes/midiops2.c:370 Opcodes/midiops2.c:452 Opcodes/uggab.c:1317
#: Opcodes/uggab.c:1344 Opcodes/uggab.c:1364 Opcodes/uggab.c:1407
#, c-format
msgid "Invalid ftable no. %f"
msgstr "ftable num. %f non valida"
-#: Engine/fgens.c:2255
+#: Engine/fgens.c:2251
#, c-format
msgid "deferred-size ftable %f illegal here"
msgstr "la dimensione differita della ftable %f non è valida qui"
-#: Engine/fgens.c:2281
+#: Engine/fgens.c:2278 Engine/fgens.c:2848
#, c-format
msgid "Deferred load of '%s' failed"
msgstr "fallito caricamento differito di '%s'"
-#: Engine/fgens.c:2343
+#: Engine/fgens.c:2340
#, c-format
msgid "Deferred-size ftable %f load not available at perf time."
msgstr ""
"Caricamento della ftable %f a dimensione differita non disponibile al "
"momento d'esecuzione"
-#: Engine/fgens.c:2402
+#: Engine/fgens.c:2399
#, c-format
msgid "non-deferred ftable %d needs size %d\n"
msgstr "ftable %d con dimensione non differita necessita di dimensione %d\n"
-#: Engine/fgens.c:2449 Opcodes/loscilx.c:62
+#: Engine/fgens.c:2446 Opcodes/loscilx.c:64
#, c-format
msgid "invalid sample format: %d"
msgstr "formato campione non valido: %d"
-#: Engine/fgens.c:2457 Engine/fgens.c:2718
+#: Engine/fgens.c:2454 Engine/fgens.c:2714
#, c-format
msgid "channel %d illegal"
msgstr "canale %d non consentito"
-#: Engine/fgens.c:2463
+#: Engine/fgens.c:2460
msgid "deferred alloc\n"
msgstr "allocazione differita\n"
-#: Engine/fgens.c:2471
+#: Engine/fgens.c:2468
msgid "deferred size, but filesize unknown"
msgstr "dimensione differita, ma dimensione del file sconosciuta"
-#: Engine/fgens.c:2474
+#: Engine/fgens.c:2471
#, c-format
msgid " defer length %d\n"
msgstr "lunghezza differita %d\n"
-#: Engine/fgens.c:2543
+#: Engine/fgens.c:2540
msgid "GEN1: input file truncated by ftable size"
msgstr "GEN1: file di input troncato dalla dimensione della ftable"
-#: Engine/fgens.c:2547
+#: Engine/fgens.c:2544
#, c-format
msgid "\tlooping endpoint %d exceeds ftsize %d\n"
msgstr "\til punto finale del loop %d supera ftsize %d\n"
-#: Engine/fgens.c:2569
+#: Engine/fgens.c:2566
msgid "GEN1 read error"
msgstr "GEN1 errore in lettura"
-#: Engine/fgens.c:2574
+#: Engine/fgens.c:2571
msgid "GEN1: aiff file truncated by ftable size"
msgstr "GEN1: file aiff troncato dalla dimensione della ftable"
-#: Engine/fgens.c:2575
+#: Engine/fgens.c:2572
#, c-format
msgid "\taudio samps %d exceeds ftsize %d"
msgstr "\tcampioni audio %d superano ftsize %d"
-#: Engine/fgens.c:2619
+#: Engine/fgens.c:2616
msgid "wrong number of ftable arguments"
msgstr "numero sbagliato di argomenti della ftable"
-#: Engine/fgens.c:2629 OOps/pstream.c:326
+#: Engine/fgens.c:2626 OOps/pstream.c:326
msgid "Failed to load PVOC-EX file"
msgstr "Caricamento del file PVOC-EX fallito"
-#: Engine/fgens.c:2640 InOut/midirecv.c:416 OOps/midiops.c:377
+#: Engine/fgens.c:2637 InOut/midirecv.c:416 OOps/midiops.c:377
#: OOps/midiops.c:419 OOps/midiops.c:431
#, fuzzy
msgid "illegal channel number"
msgstr "numero di canale non consentito"
-#: Engine/fgens.c:2658
+#: Engine/fgens.c:2655
msgid "ftable size too small"
msgstr "dimensione della ftable troppo piccola"
-#: Engine/fgens.c:2734 Opcodes/mp3in.c:79 Opcodes/mp3in.c:218
+#: Engine/fgens.c:2730 Opcodes/mp3in.c:80 Opcodes/mp3in.c:219
msgid "Not enough memory\n"
msgstr "emoria insufficiente\n"
-#: Engine/fgens.c:2831
+#: Engine/fgens.c:2873
#, fuzzy
msgid "gen51: invalid number of p-fields (too few grades)"
msgstr "gen51: numero di p-fields non valido (troppi pochi gradi)"
-#: Engine/fgens.c:2871
+#: Engine/fgens.c:2913
msgid "number of channels inconsistent with number of args"
msgstr "numero di canali incongruente con il numero di argomenti"
-#: Engine/fgens.c:3030
+#: Engine/fgens.c:3072
msgid "GEN53: invalid number of gen arguments"
msgstr "GEN53: numero di argomenti della gen non valido"
-#: Engine/fgens.c:3040
+#: Engine/fgens.c:3082
msgid "GEN53: invalid table length"
msgstr "GEN53: lunghezza della tavola non valida"
-#: Engine/fgens.c:3044
+#: Engine/fgens.c:3086
msgid "GEN53: invalid source table number"
msgstr "GEN53: numero di source table non valido"
-#: Engine/fgens.c:3047
+#: Engine/fgens.c:3089
msgid "GEN53: mode must be in the range 0 to 15"
msgstr "GEN53: mode dev'essere nell'intervallo tra 0 e 15"
-#: Engine/fgens.c:3051
+#: Engine/fgens.c:3093
msgid "GEN53: invalid source table length"
msgstr "GEN53: numero di source table non valido"
-#: Engine/fgens.c:3056
+#: Engine/fgens.c:3098
msgid "GEN53: invalid window table"
msgstr "GEN53: window table non valida"
@@ -915,33 +872,33 @@ msgstr "Strumento %s silenziato\n"
msgid "Instrument %d muted\n"
msgstr "Strumento %d silenziato\n"
-#: Engine/insert.c:103 Engine/insert.c:1249
+#: Engine/insert.c:103 Engine/insert.c:1301
#, fuzzy, c-format
msgid "instr %s expects midi event data, cannot run from score\n"
msgstr "lo strumento %s aspetta eventi midi, non può suonare dalla score\n"
-#: Engine/insert.c:106 Engine/insert.c:1252
+#: Engine/insert.c:106 Engine/insert.c:1304
#, c-format
msgid "instr %d expects midi event data, cannot run from score\n"
msgstr "lo strumento %d aspetta eventi midi, non può suonare dalla score\n"
-#: Engine/insert.c:115 Engine/insert.c:279 Engine/insert.c:1234
+#: Engine/insert.c:115 Engine/insert.c:279 Engine/insert.c:1286
#, c-format
msgid "cannot allocate last note because it exceeds 100%% of cpu time"
msgstr ""
"impossibile allocare l'ultima nota perché supera il 100%% di tempo di cpu"
-#: Engine/insert.c:121 Engine/insert.c:285 Engine/insert.c:1239
+#: Engine/insert.c:121 Engine/insert.c:285 Engine/insert.c:1291
msgid "cannot allocate last note because it exceeds instr maxalloc"
msgstr ""
"impossibile allocare l'ultima nota perché supera maxalloc dello strumento"
-#: Engine/insert.c:137 Engine/insert.c:305 Engine/insert.c:1270
+#: Engine/insert.c:137 Engine/insert.c:305 Engine/insert.c:1322
#, fuzzy, c-format
msgid "new alloc for instr %s:\n"
msgstr "nuova allocazione per lo strumento %d:\n"
-#: Engine/insert.c:139 Engine/insert.c:307 Engine/insert.c:1272
+#: Engine/insert.c:139 Engine/insert.c:307 Engine/insert.c:1324
#, c-format
msgid "new alloc for instr %d:\n"
msgstr "nuova allocazione per lo strumento %d:\n"
@@ -956,12 +913,12 @@ msgstr "lo strumento %d usa %d p-fields ma gliene sono stati dati %d"
msgid "instr %d uses %d p-fields but is given %d"
msgstr "lo strumento %d usa %d p-fields ma gliene sono stati dati %d"
-#: Engine/insert.c:251 Engine/insert.c:463
+#: Engine/insert.c:251 Engine/insert.c:482
#, fuzzy, c-format
msgid "instr %s now active:\n"
msgstr "strumento %d ora attivo:\n"
-#: Engine/insert.c:253 Engine/insert.c:465
+#: Engine/insert.c:253 Engine/insert.c:484
#, c-format
msgid "instr %d now active:\n"
msgstr "strumento %d ora attivo:\n"
@@ -981,26 +938,26 @@ msgstr "attivo lo strumento %d\n"
msgid "MIDI note overlaps with key %d on same channel"
msgstr "La nota MIDI si sovrappone alla key %d sullo stesso canale"
-#: Engine/insert.c:566
+#: Engine/insert.c:585
#, fuzzy, c-format
msgid "removed instance of instr %s\n"
msgstr "rimossa l'istanza dello strumento %d\n"
-#: Engine/insert.c:568
+#: Engine/insert.c:587
#, c-format
msgid "removed instance of instr %d\n"
msgstr "rimossa l'istanza dello strumento %d\n"
-#: Engine/insert.c:691
+#: Engine/insert.c:710
msgid "inactive allocs returned to freespace\n"
msgstr "liberate le allocazioni inattive\n"
-#: Engine/insert.c:716
+#: Engine/insert.c:735
#, fuzzy, c-format
msgid "could not find playing instr %f\n"
msgstr "non posso trovare lo strumento %f che suona indefinitamente\n"
-#: Engine/insert.c:729
+#: Engine/insert.c:748
msgid ""
"\n"
"INIT ERROR: "
@@ -1008,22 +965,22 @@ msgstr ""
"\n"
"ERRORE di INIZIALIZZAZIONE: "
-#: Engine/insert.c:742
+#: Engine/insert.c:761
#, c-format
msgid "INIT ERROR in instr %d (opcode %s): "
msgstr "ERRORE di INIZIALIZZAZIONE dello strumento %d (opcode %s): "
-#: Engine/insert.c:745
+#: Engine/insert.c:764
#, c-format
msgid "INIT ERROR in instr %d (subinstr %d): "
msgstr "ERRORE di INIZIALIZZAZIONE nello strumento %d (subinstr %d): "
-#: Engine/insert.c:749
+#: Engine/insert.c:768
#, c-format
msgid "INIT ERROR in instr %d: "
msgstr "ERRORE di INIZIALIZZAZIONE nello strumento %d: "
-#: Engine/insert.c:767
+#: Engine/insert.c:786
msgid ""
"\n"
"PERF ERROR: "
@@ -1031,79 +988,79 @@ msgstr ""
"\n"
"ERRORE in ESECUZIONE: "
-#: Engine/insert.c:780
+#: Engine/insert.c:799
#, c-format
msgid "PERF ERROR in instr %d (opcode %s): "
msgstr "ERRORE in ESECUZIONE nello strumento %d (opcode %s): "
-#: Engine/insert.c:783
+#: Engine/insert.c:802
#, c-format
msgid "PERF ERROR in instr %d (subinstr %d): "
msgstr "ERRORE in ESECUZIONE nello strumento %d (subinstr %d): "
-#: Engine/insert.c:787
+#: Engine/insert.c:806
#, c-format
msgid "PERF ERROR in instr %d: "
msgstr "ERRORE in ESECUZIONE nello strumento %d: "
-#: Engine/insert.c:792
+#: Engine/insert.c:811
msgid " note aborted\n"
msgstr " nota cancellata\n"
-#: Engine/insert.c:820
+#: Engine/insert.c:839
msgid "subinstr: number of output args greater than nchnls"
msgstr ""
"subinstr: numero di argomenti dell'output maggiore del numero dei canali"
-#: Engine/insert.c:861
+#: Engine/insert.c:880
msgid "subinstr: too many p-fields"
msgstr "subinstr: troppi p-fields"
-#: Engine/insert.c:920
+#: Engine/insert.c:939
#, c-format
msgid "%s: invalid local ksmps value: %d"
msgstr "%s: valore locale di ksmps non valido: %d"
-#: Engine/insert.c:1040 OOps/bus.c:835 Opcodes/stackops.c:293
+#: Engine/insert.c:1062 OOps/bus.c:835 Opcodes/stackops.c:286
#, c-format
msgid "%s: not initialised"
msgstr "%s: non inizializzato"
-#: Engine/insert.c:1169
+#: Engine/insert.c:1221
#, c-format
msgid "setksmps: invalid ksmps value: %d"
msgstr "setksmps: valore do ksmps non valido: %d"
-#: Engine/insert.c:1225
+#: Engine/insert.c:1277
#, c-format
msgid "schedule event ignored. instr %d undefined\n"
msgstr "evento programmato ignorato. Lo strumento %d non è definito\n"
-#: Engine/insert.c:1303
+#: Engine/insert.c:1355
#, fuzzy, c-format
msgid "instr %s pmax = %d, note pcnt = %d"
msgstr "strumento %d pmax = %d, note pcnt = %d"
-#: Engine/insert.c:1306
+#: Engine/insert.c:1358
#, c-format
msgid "instr %d pmax = %d, note pcnt = %d"
msgstr "strumento %d pmax = %d, note pcnt = %d"
-#: Engine/insert.c:1314
+#: Engine/insert.c:1366
#, c-format
msgid "psave beg at %p\n"
msgstr "psave inizia a %p\n"
-#: Engine/insert.c:1322
+#: Engine/insert.c:1374
#, c-format
msgid " ending at %p\n"
msgstr " finisce a %p\n"
-#: Engine/insert.c:1466
+#: Engine/insert.c:1518
msgid "subinstr: not initialised"
msgstr "subinstr: non inizializzato"
-#: Engine/insert.c:1723
+#: Engine/insert.c:1855
#, c-format
msgid ""
"instr %d allocated at %p\n"
@@ -1112,30 +1069,30 @@ msgstr ""
"strumento %d allocato a %p\n"
"\tlclbas %p, opds %p\n"
-#: Engine/insert.c:1740
+#: Engine/insert.c:1872
#, c-format
msgid "op %d (%s) allocated at %p\n"
msgstr "op %d (%s) allocato a %p\n"
-#: Engine/insert.c:1766
+#: Engine/insert.c:1898
msgid "null iopadr"
msgstr "null iopadr"
-#: Engine/insert.c:1777
+#: Engine/insert.c:1909
msgid "null opadr"
msgstr "null iopadr"
-#: Engine/insert.c:1834
+#: Engine/insert.c:1966
#, fuzzy
msgid "inconsistent opds total"
msgstr "totale opds inconsistente"
-#: Engine/insert.c:1879
+#: Engine/insert.c:2011
#, fuzzy, c-format
msgid "Instrument %s is still active"
msgstr "Strumento %s ancora attivo"
-#: Engine/insert.c:1882
+#: Engine/insert.c:2014
#, fuzzy, c-format
msgid "Instrument %d is still active"
msgstr "Strumento %d ancora attivo"
@@ -1169,7 +1126,7 @@ msgstr "opcode sconosciuto %c"
msgid "multiple string p-fields"
msgstr "multiple stringhe p-fields"
-#: Engine/linevent.c:273 Engine/rdorch.c:1157
+#: Engine/linevent.c:273 Engine/rdorch.c:1184
#, fuzzy
msgid "unmatched quotes"
msgstr "virgolette senza corrispondenza"
@@ -1234,27 +1191,27 @@ msgstr "event_i: errore nella creazione dell'evento '%c'"
msgid "memory allocate failure for %lu"
msgstr "allocazione di memoria fallita per %lu"
-#: Engine/memfiles.c:112
+#: Engine/memfiles.c:113
#, c-format
msgid "cannot load %s\n"
msgstr "impossibile caricare %s\n"
-#: Engine/memfiles.c:118
+#: Engine/memfiles.c:119
#, c-format
msgid "cannot load %s, or SADIR undefined\n"
msgstr "impossibile caricare %s, oppure SADIR non definita\n"
-#: Engine/memfiles.c:130
+#: Engine/memfiles.c:131
#, c-format
msgid "error processing file %s\n"
msgstr "errore nel processamento del file %s\n"
-#: Engine/memfiles.c:136 Engine/memfiles.c:319
+#: Engine/memfiles.c:137 Engine/memfiles.c:320
#, c-format
msgid "file %s (%ld bytes) loaded into memory\n"
msgstr "file %s (%ld bytes) caricato in memoria\n"
-#: Engine/memfiles.c:199
+#: Engine/memfiles.c:200
msgid ""
"PVOCEX_LoadFile(): error:\n"
" "
@@ -1262,57 +1219,57 @@ msgstr ""
"PVOCEX_LoadFile(): errore:\n"
" "
-#: Engine/memfiles.c:216
+#: Engine/memfiles.c:217
msgid "Empty or NULL file name"
msgstr "nome di file vuoto o NULL"
-#: Engine/memfiles.c:234
+#: Engine/memfiles.c:235
#, c-format
msgid "unable to open pvocex file %s: %s"
msgstr "non riesco ad aprire il file pvocex %s: %s"
-#: Engine/memfiles.c:240
+#: Engine/memfiles.c:241
#, c-format
msgid "pvoc-ex file %s is not 32bit floats"
msgstr "il file pvoc-ex %s non è 32bit floats"
-#: Engine/memfiles.c:246
+#: Engine/memfiles.c:247
#, c-format
msgid "pvoc-ex file %s not in AMP_FREQ format"
msgstr "il file pvoc-ex %s non è nel formato AMP_FREQ"
-#: Engine/memfiles.c:252
+#: Engine/memfiles.c:253
#, c-format
msgid "pvoc-ex file %s is empty!"
msgstr "il file pvoc-ex %s è vuoto!"
-#: Engine/memfiles.c:282
+#: Engine/memfiles.c:283
#, c-format
msgid "error reading pvoc-ex file %s"
msgstr "errore in lettura del file pvoc-ex %s"
-#: Engine/memfiles.c:286
+#: Engine/memfiles.c:287
#, c-format
msgid "error reading pvoc-ex file %s after %d frames"
msgstr "errore in lettura del file pvoc-ex %s dopo %d frames"
-#: Engine/memfiles.c:291 Opcodes/pvinterp.c:71 Opcodes/pvinterp.c:174
-#: Opcodes/pvinterp.c:346 Opcodes/ugens9.c:97 Opcodes/vpvoc.c:201
+#: Engine/memfiles.c:292 Opcodes/pvinterp.c:71 Opcodes/pvinterp.c:173
+#: Opcodes/pvinterp.c:344 Opcodes/ugens9.c:97 Opcodes/vpvoc.c:202
#, c-format
msgid "%s's srate = %8.0f, orch's srate = %8.0f"
msgstr "%s's srate = %8.0f, orch's srate = %8.0f"
-#: Engine/memfiles.c:389
+#: Engine/memfiles.c:390
#, c-format
msgid "csoundLoadSoundFile(): failed to open '%s'"
msgstr "csoundLoadSoundFile(): fallita l'apertura di '%s'"
-#: Engine/memfiles.c:444
+#: Engine/memfiles.c:445
#, c-format
msgid "csoundLoadSoundFile(): error reading '%s'"
msgstr "csoundLoadSoundFile(): errore in lettura di '%s'"
-#: Engine/memfiles.c:450
+#: Engine/memfiles.c:451
#, c-format
msgid ""
"File '%s' (sr = %d Hz, %d channel(s), %lu sample frames) loaded into memory\n"
@@ -1320,98 +1277,93 @@ msgstr ""
"File '%s' (sr = %d Hz, %d canale\\\\i, %lu sample frames) caricati in "
"memoria\n"
-#: Engine/musmon.c:79
+#: Engine/musmon.c:81
#, c-format
msgid "Elapsed time at %s: real: %.3fs, CPU: %.3fs\n"
msgstr "Tempo impiegato %s: reale: %.3fs, CPU: %.3fs\n"
-#: Engine/musmon.c:106
+#: Engine/musmon.c:108
msgid "illegal istartempo value"
msgstr "valore di istartempo non consentito"
-#: Engine/musmon.c:109
+#: Engine/musmon.c:111
msgid "Beat mode not in force"
msgstr "Modo beat non attivato"
-#: Engine/musmon.c:182 Top/main.c:122
+#: Engine/musmon.c:184 Top/main.c:121
#, c-format
msgid "Csound version %s beta (double samples) %s\n"
msgstr "Csound versione %s beta (double samples) %s\n"
-#: Engine/musmon.c:185 Top/main.c:125
+#: Engine/musmon.c:187 Top/main.c:124
#, c-format
msgid "Csound version %s (double samples) %s\n"
msgstr "Csound versione %s (double samples) %s\n"
-#: Engine/musmon.c:190 Top/main.c:114
+#: Engine/musmon.c:192 Top/main.c:113
#, c-format
msgid "Csound version %s beta (float samples) %s\n"
msgstr "Csound versione %s beta (float samples) %s\n"
-#: Engine/musmon.c:193 Top/main.c:117
+#: Engine/musmon.c:195 Top/main.c:116
#, c-format
msgid "Csound version %s (float samples) %s\n"
msgstr "Csound versione %s (float samples) %s\n"
-#: Engine/musmon.c:218
+#: Engine/musmon.c:220
msgid "orch now loaded\n"
msgstr "orchestra ora caricata\n"
-#: Engine/musmon.c:243
+#: Engine/musmon.c:245
#, fuzzy
msgid "k-period aligned audio buffering\n"
msgstr "k-period allineato all'audio buffering\n"
-#: Engine/musmon.c:259
+#: Engine/musmon.c:261
#, c-format
msgid "audio buffered in %d sample-frame blocks\n"
msgstr "audio bufferizzato in blocchi di %d sample-frame\n"
-#: Engine/musmon.c:276 Top/main.c:395
-#, c-format
-msgid "cannot reopen %s"
-msgstr "Impossibile riaprire %s"
-
-#: Engine/musmon.c:287
+#: Engine/musmon.c:283
msgid "using Cscore processing\n"
msgstr "uso il processamento di Cscore\n"
-#: Engine/musmon.c:290
+#: Engine/musmon.c:286
msgid "cannot create cscore.out"
msgstr "impossibile creare cscore.out"
-#: Engine/musmon.c:303
+#: Engine/musmon.c:299
msgid "cannot reopen cscore.out"
msgstr "impossibile raprire cscore.out"
-#: Engine/musmon.c:307 Engine/musmon.c:315
+#: Engine/musmon.c:303
msgid "cannot reopen cscore.srt"
msgstr "impossibile raprire cscore.srt"
-#: Engine/musmon.c:309
+#: Engine/musmon.c:305
#, fuzzy
msgid "sorting cscore.out ..\n"
msgstr "sistemo cscore.out ..\n"
-#: Engine/musmon.c:313 Top/main.c:409
+#: Engine/musmon.c:311 Top/main.c:401
msgid "\t... done\n"
msgstr "\t... fatto\n"
-#: Engine/musmon.c:317
+#: Engine/musmon.c:312
msgid "playing from cscore.srt\n"
msgstr "suono da cscore.srt\n"
-#: Engine/musmon.c:321 Engine/musmon.c:453 Engine/musmon.c:1021
-#: Engine/musmon.c:1225
+#: Engine/musmon.c:316 Engine/musmon.c:446 Engine/musmon.c:1015
+#: Engine/musmon.c:1216
#, c-format
msgid "SECTION %d:\n"
msgstr "SEZIONE %d:\n"
-#: Engine/musmon.c:397
+#: Engine/musmon.c:390
msgid "end of score.\t\t overall amps:"
msgstr "fine della score.\t\t ampiezza totale:"
-#: Engine/musmon.c:408
+#: Engine/musmon.c:401
msgid ""
"\n"
"\t overall samples out of range:"
@@ -1419,7 +1371,7 @@ msgstr ""
"\n"
"\t numero di campioni fuori dall'intervallo (range):"
-#: Engine/musmon.c:412
+#: Engine/musmon.c:405
#, c-format
msgid ""
"\n"
@@ -1428,113 +1380,113 @@ msgstr ""
"\n"
"%d errori nell'esecuzione\n"
-#: Engine/musmon.c:414
+#: Engine/musmon.c:407
msgid "end of performance"
msgstr "fine dell'esecuzione"
-#: Engine/musmon.c:428
+#: Engine/musmon.c:421
msgid "no sound written to disk\n"
msgstr "nessun suono scritto sul disco\n"
-#: Engine/musmon.c:443
+#: Engine/musmon.c:436
#, c-format
msgid "%c\tbeep!\n"
msgstr "%c\tbeep!\n"
-#: Engine/musmon.c:509 Engine/musmon.c:555
+#: Engine/musmon.c:502 Engine/musmon.c:548
msgid "\t number of samples out of range:"
msgstr "\t numero di campioni fuori dall'intervallo:"
-#: Engine/musmon.c:548
+#: Engine/musmon.c:541
#, c-format
msgid "end of section %d\t sect peak amps:"
msgstr "fine della sezione %d\t picchi d'ampiezza della sezione:"
-#: Engine/musmon.c:550
+#: Engine/musmon.c:543
msgid "end of lplay event list\t peak amps:"
msgstr "fine lista eventi di lplay\t picco d'ampiezza:"
-#: Engine/musmon.c:614 Engine/musmon.c:639
+#: Engine/musmon.c:607 Engine/musmon.c:632
#, c-format
msgid " - note deleted. instr %s undefined"
msgstr " - nota cancellata. strumento %s non definito"
-#: Engine/musmon.c:618
+#: Engine/musmon.c:611
#, c-format
msgid "Setting instrument %s %s\n"
msgstr "Fisso lo strumento %s %s\n"
-#: Engine/musmon.c:619 Engine/musmon.c:632
+#: Engine/musmon.c:612 Engine/musmon.c:625
#: Opcodes/fluidOpcodes/fluidOpcodes.c:207
#: Opcodes/fluidOpcodes/fluidOpcodes.c:208
msgid "off"
msgstr "off"
-#: Engine/musmon.c:619 Engine/musmon.c:632
+#: Engine/musmon.c:612 Engine/musmon.c:625
#: Opcodes/fluidOpcodes/fluidOpcodes.c:207
#: Opcodes/fluidOpcodes/fluidOpcodes.c:208
msgid "on"
msgstr "on"
-#: Engine/musmon.c:627 Engine/musmon.c:666
+#: Engine/musmon.c:620 Engine/musmon.c:659
#, c-format
msgid " - note deleted. instr %d(%d) undefined"
msgstr " - nota cancellata. strumento %d(%d) non definito"
-#: Engine/musmon.c:631
+#: Engine/musmon.c:624
#, c-format
msgid "Setting instrument %d %s\n"
msgstr "Fisso lo strumento %d %s\n"
-#: Engine/musmon.c:657
+#: Engine/musmon.c:650
#, c-format
msgid " - note deleted. i%d (%s) had %d init errors"
msgstr " - nota cancellata. i%d (%s) ha %d errori di inizializzazione"
-#: Engine/musmon.c:687
+#: Engine/musmon.c:680
#, c-format
msgid " - note deleted. i%d had %d init errors"
msgstr " - nota cancellata. i%d ha %d errori di inizializzazione"
-#: Engine/musmon.c:708
+#: Engine/musmon.c:701
#, c-format
msgid "time advanced %5.3f beats by score request\n"
msgstr "avanzamento del tempo di %5.3f beats su richiesta della score\n"
-#: Engine/musmon.c:725
+#: Engine/musmon.c:719
#, c-format
msgid "\t\t T%7.3f - note deleted. "
msgstr "\t\t T%7.3f - nota cancellata. "
-#: Engine/musmon.c:729
+#: Engine/musmon.c:723
#, fuzzy, c-format
msgid "instr %s had %d init errors\n"
msgstr "lo strumento %d ha %d errori di inizializzazione\n"
-#: Engine/musmon.c:731
+#: Engine/musmon.c:725
#, c-format
msgid "instr %d had %d init errors\n"
msgstr "lo strumento %d ha %d errori di inizializzazione\n"
-#: Engine/musmon.c:822
+#: Engine/musmon.c:816
msgid "terminating.\n"
msgstr "finito.\n"
-#: Engine/musmon.c:908
+#: Engine/musmon.c:902
#, c-format
msgid "error in score. illegal opcode %c (ASCII %d)\n"
msgstr "errore nella score. opcode illecito %c (ASCII %d)\n"
-#: Engine/musmon.c:1135
+#: Engine/musmon.c:1129
msgid "insert_score_event(): invalid instrument number or name\n"
msgstr "insert_score_event(): numero o nome dello strumento non valido\n"
-#: Engine/musmon.c:1155
+#: Engine/musmon.c:1149
#, c-format
msgid "insert_score_event(): unknown opcode: %c\n"
msgstr "insert_score_event(): opcode sconosciuto: %c\n"
-#: Engine/musmon.c:1178
+#: Engine/musmon.c:1172
msgid "insert_score_event(): insufficient p-fields\n"
msgstr "insert_score_event(): p-fields insufficienti\n"
@@ -1557,28 +1509,48 @@ msgstr "Impossibile trovare lo strumento %d"
msgid "cannot find the specified instrument or opcode"
msgstr "impossibile trovare lo strumento o l'opcode specificato"
-#: Engine/new_orc_parser.c:74 Engine/rdorch.c:488
+#: Engine/new_orc_parser.c:91
+#, fuzzy
+msgid "Unmatched #ifdef\n"
+msgstr "#idef senza corrispondenza"
+
+#: Engine/otran.c:149 Engine/symbtab.c:413
#, c-format
-msgid "cannot open orch file %s"
-msgstr "impossibile aprire l'orchestra file %s"
+msgid "invalid input type for opcode %s"
+msgstr "tipo di input non valido per l'opcode %s"
+
+#: Engine/otran.c:154 Engine/symbtab.c:418
+#, c-format
+msgid "too many input args for opcode %s"
+msgstr "troppi argomenti in input per l'opcode %s"
-#: Engine/otran.c:312 Engine/otran.c:319
+#: Engine/otran.c:169 Engine/symbtab.c:433
+#, c-format
+msgid "too many output args for opcode %s"
+msgstr "troppi argomenti in output per l'opcode %s"
+
+#: Engine/otran.c:194 Engine/symbtab.c:458
+#, c-format
+msgid "invalid output type for opcode %s"
+msgstr "tipo di output non valido per l'opcode %s"
+
+#: Engine/otran.c:325 Engine/otran.c:332
msgid "missing instrument number or name"
msgstr "manca il numero o il nome dello strumento"
-#: Engine/otran.c:324
+#: Engine/otran.c:337
msgid "illegal instr number"
msgstr "numero di strumento illecito"
-#: Engine/otran.c:374
+#: Engine/otran.c:388
msgid "No opcode name"
msgstr "Non c'è il nome dell'opcode"
-#: Engine/otran.c:379 Engine/symbtab.c:501
+#: Engine/otran.c:393 Engine/symbtab.c:538
msgid "invalid name for opcode"
msgstr "nome dell'opcode non valido"
-#: Engine/otran.c:383
+#: Engine/otran.c:397
#, c-format
msgid ""
"opcode declaration error (usage: opcode name, outtypes, intypes) -- opcode %s"
@@ -1586,54 +1558,54 @@ msgstr ""
"errore dichiarazione opcode (uso: nome opcode, tipi di out, tipi di input) "
"-- opcode %s"
-#: Engine/otran.c:394 Engine/symbtab.c:511
+#: Engine/otran.c:408 Engine/symbtab.c:548
#, c-format
msgid "cannot redefine %s"
msgstr "Impossibile ridefinire %s"
-#: Engine/otran.c:398 Engine/symbtab.c:516
+#: Engine/otran.c:412 Engine/symbtab.c:553
#, c-format
msgid "WARNING: redefined opcode: %s\n"
msgstr "ATTENZIONE: opcode ridefinito: %s\n"
-#: Engine/otran.c:489
+#: Engine/otran.c:503
msgid "string constant used as output"
msgstr "stringa costante usata come output"
-#: Engine/otran.c:520
+#: Engine/otran.c:534
msgid "Missing endin"
msgstr "Manca endin"
-#: Engine/otran.c:584
+#: Engine/otran.c:599
msgid "perf-pass statements illegal in header blk"
msgstr "dichiarazione d'esecuzione non valida nel blocco header"
-#: Engine/otran.c:588
+#: Engine/otran.c:603
#, c-format
msgid "%d syntax errors in orchestra. compilation invalid"
msgstr "%d errore\\i di sintassi nell'orchestra. Compilazione non valida"
-#: Engine/otran.c:1238
+#: Engine/otran.c:1257
msgid "bad value for 0dbfs: must be positive."
msgstr "pessimo valore per 0dbfs: deve essere positivo."
-#: Engine/otran.c:1248
+#: Engine/otran.c:1267
#, c-format
msgid "sample rate overrides: esr = %7.4f, ekr = %7.4f, ksmps = %d\n"
msgstr ""
"frequenza di campionamento (sr) soprascritta: esr = %7.4f, ekr = %7.4f, "
"ksmps = %d\n"
-#: Engine/otran.c:1320
+#: Engine/otran.c:1339
msgid "internal error: string constant outarg"
msgstr "errore interno: stringa costante outarg"
-#: Engine/otran.c:1346
+#: Engine/otran.c:1365
#, c-format
msgid "i%d pset args != pmax"
msgstr "i%d pset args != pmax"
-#: Engine/otran.c:1409
+#: Engine/otran.c:1428
#, c-format
msgid ""
"sr = %.7g, kr = %.7g, ksmps = %.7g\n"
@@ -1642,278 +1614,314 @@ msgstr ""
"sr = %.7g, kr = %.7g, ksmps = %.7g\n"
"errore:"
-#: Engine/otran.c:1442
+#: Engine/otran.c:1461
msgid "header init errors"
msgstr "l'header ha errori in inizializzazione"
-#: Engine/rdorch.c:166
+#: Engine/rdorch.c:169
msgid "ungetorchar(): buffer overflow"
msgstr "ungetorchar(): buffer overflow"
-#: Engine/rdorch.c:330
+#: Engine/rdorch.c:348
msgid "Unexpected end of orchestra file"
msgstr "Fine inattesa del file orchestra"
-#: Engine/rdorch.c:484
+#: Engine/rdorch.c:431 Engine/sread.c:758
+#, c-format
+msgid "Macro definition for %*s\n"
+msgstr "Definizione di macro per %*s\n"
+
+#: Engine/rdorch.c:434
+msgid "Invalid macro name for --omacro"
+msgstr "Nome di macro non valido per --omacro"
+
+#: Engine/rdorch.c:502
msgid "orch compiler:\n"
msgstr "compilatore dell'orchestra:\n"
-#: Engine/rdorch.c:490
+#: Engine/rdorch.c:520
#, c-format
-msgid "cannot find end of file %s"
-msgstr "impossibile trovare la fine del file %s"
-
-#: Engine/rdorch.c:492
-#, c-format
-msgid "ftell error on %s"
-msgstr "errore ftell in %s"
+msgid "cannot open orch file %s"
+msgstr "impossibile aprire l'orchestra file %s"
-#: Engine/rdorch.c:657 Engine/sread.c:1572
+#: Engine/rdorch.c:684 Engine/sread.c:1584
#, c-format
msgid "Macro definition for %s\n"
msgstr "Definizione di macro per %s\n"
-#: Engine/rdorch.c:748
+#: Engine/rdorch.c:716 Engine/sread.c:1607
+msgid "macro error\n"
+msgstr "errore macro\n"
+
+#: Engine/rdorch.c:775
#, c-format
msgid "Cannot open #include'd file %s\n"
msgstr "Impossibile aprire il file #include %s\n"
-#: Engine/rdorch.c:797
+#: Engine/rdorch.c:824
#, fuzzy
msgid "unmatched #ifdef"
msgstr "#ifdef senza corrispondenza"
-#: Engine/rdorch.c:808
+#: Engine/rdorch.c:835
#, fuzzy
msgid "Unmatched #else"
msgstr "#else senza corrispondenza"
-#: Engine/rdorch.c:822
+#: Engine/rdorch.c:849
#, fuzzy
msgid "Unmatched #endif"
msgstr "#endif senza corrispondenza"
-#: Engine/rdorch.c:875
+#: Engine/rdorch.c:872 Engine/sread.c:1694
+#, c-format
+msgid "macro %s undefined\n"
+msgstr "macro %s non definita\n"
+
+#: Engine/rdorch.c:886 Engine/sread.c:286
+msgid "Undefining undefined macro"
+msgstr "Libero la macro non definita"
+
+#: Engine/rdorch.c:902
msgid "Unexpected # character"
msgstr "Carattere # inatteso"
-#: Engine/rdorch.c:877
+#: Engine/rdorch.c:904
#, c-format
msgid "Unknown # option: '%s'"
msgstr "Opzione # sconosciuta: '%s'"
-#: Engine/rdorch.c:903 Engine/sread.c:394
+#: Engine/rdorch.c:928 Engine/sread.c:380
+#, c-format
+msgid "Undefined macro: '%s'"
+msgstr "macro non definita: '%s'"
+
+#: Engine/rdorch.c:930 Engine/sread.c:378
msgid "Macro expansion symbol ($) without macro name"
msgstr "Simbolo di espansione macro ($) senza il nome della macro"
-#: Engine/rdorch.c:908 Engine/sread.c:400
+#: Engine/rdorch.c:935 Engine/sread.c:384
#, c-format
msgid "$%s matches macro name $%s"
msgstr "$%s corrisponde al nome di macro $%s"
-#: Engine/rdorch.c:925 Engine/sread.c:417
+#: Engine/rdorch.c:952 Engine/sread.c:401
msgid "Syntax error in macro call"
msgstr "Errore di sintassi nella macro chiamata"
-#: Engine/rdorch.c:975
+#: Engine/rdorch.c:967
+#, c-format
+msgid ""
+"Missing argument terminator\n"
+"%.98s"
+msgstr ""
+"Manca argomento conclusivo\n"
+"%.98s"
+
+#: Engine/rdorch.c:1002
msgid "Unmatched #ifdef"
msgstr "#idef senza corrispondenza"
-#: Engine/rdorch.c:977
+#: Engine/rdorch.c:1004
msgid "file too large for ortext space"
msgstr "file troppo grande per lo spazio ortext"
-#: Engine/rdorch.c:984
+#: Engine/rdorch.c:1011
#, fuzzy, c-format
msgid "%d (%d) lines read\n"
msgstr "%d linee lette\n"
-#: Engine/rdorch.c:1052
+#: Engine/rdorch.c:1079
#, c-format
msgid "LINE %d:"
msgstr "LINEA %d:"
-#: Engine/rdorch.c:1071
+#: Engine/rdorch.c:1098
msgid "invalid 'elseif' statement. must have a corresponding 'if'"
msgstr "dichiarazione 'elseif' non valida. Deve aver un corrispondente 'if'"
-#: Engine/rdorch.c:1078
+#: Engine/rdorch.c:1105
msgid "'elseif' statement cannot occur after an 'else'"
msgstr "una dichiarazione 'elseif' non può venire dopo un 'else'"
-#: Engine/rdorch.c:1134
+#: Engine/rdorch.c:1161
#, fuzzy
msgid "Unmatched comment"
msgstr "commento senza corrispondenza"
-#: Engine/rdorch.c:1198
+#: Engine/rdorch.c:1225
msgid "misplaced comma"
msgstr "virgola messa male"
-#: Engine/rdorch.c:1200 Engine/rdorch.c:1342 Engine/rdorch.c:1440
+#: Engine/rdorch.c:1227 Engine/rdorch.c:1369 Engine/rdorch.c:1467
msgid "unbalanced parens"
msgstr "parentesi non bilanciate"
-#: Engine/rdorch.c:1364
+#: Engine/rdorch.c:1391
#, c-format
msgid "illegal character %c"
msgstr "carattere illegale %c"
-#: Engine/rdorch.c:1377
+#: Engine/rdorch.c:1404
msgid "invalid 'else' statement. must have a corresponding 'if'"
msgstr "dichiarazione 'else' non valida. Deve aver un corrispondente 'if'"
-#: Engine/rdorch.c:1384
+#: Engine/rdorch.c:1411
msgid "duplicate 'else' statement"
msgstr "doppia dichiarazione 'else'"
-#: Engine/rdorch.c:1413
+#: Engine/rdorch.c:1440
msgid "invalid 'endif' statement. must have a corresponding 'if'"
msgstr "dichiarazione 'endif' non valida. Deve aver un corrispondente 'if'"
-#: Engine/rdorch.c:1442
+#: Engine/rdorch.c:1469
msgid "no legal opcode"
msgstr "opcode illecito"
-#: Engine/rdorch.c:1573
+#: Engine/rdorch.c:1600
msgid "illegal opcod from expr anal"
msgstr "opcode illecito da expr anal"
-#: Engine/rdorch.c:1606 Engine/rdorch.c:1628
+#: Engine/rdorch.c:1633 Engine/rdorch.c:1655
#, c-format
msgid "failed to find %s, output arg '%s' illegal type"
msgstr "faillita la ricerca di %s, argomento di output '%s' di tipo illecito"
-#: Engine/rdorch.c:1670
+#: Engine/rdorch.c:1697
#, c-format
msgid "failed to find %s, input arg illegal type"
msgstr "faillita la ricerca di %s, argomento di input di tipo illecito"
-#: Engine/rdorch.c:1684
+#: Engine/rdorch.c:1711
msgid "setksmps is allowed only in user defined opcodes"
msgstr ""
"setksmps è permesso solo in user defined opcodes (opcode definito "
"dall'utente)"
-#: Engine/rdorch.c:1687
+#: Engine/rdorch.c:1714
msgid "multiple uses of setksmps in the same opcode definition"
msgstr "uso di multipli setkmps nella stessa definizione di opcode"
-#: Engine/rdorch.c:1710
+#: Engine/rdorch.c:1739
#, c-format
msgid "%s inconsistent with global nchnls (%d); replaced with %s\n"
msgstr "%s incompatibile con canali globali (%d); sostituito con %s\n"
-#: Engine/rdorch.c:1740
+#: Engine/rdorch.c:1770
msgid "opcode blks cannot be nested (missing 'endop'?)"
msgstr "il blocco opcode non può essere innestato (manca 'endop'?)"
-#: Engine/rdorch.c:1742
+#: Engine/rdorch.c:1772
msgid "opcode not allowed in instr block"
msgstr "opcode non permesso nel blocco strumento"
-#: Engine/rdorch.c:1751
+#: Engine/rdorch.c:1781
#, fuzzy
msgid "unmatched endop"
msgstr "endop senza corrispondenza"
-#: Engine/rdorch.c:1753
+#: Engine/rdorch.c:1783
msgid "endop not allowed in instr block"
msgstr "endop non permesso nel blocco strumento"
-#: Engine/rdorch.c:1758
+#: Engine/rdorch.c:1788
msgid "instr not allowed in opcode block"
msgstr "instr non permesso nel blocco opcode"
-#: Engine/rdorch.c:1761
+#: Engine/rdorch.c:1791
msgid "instr blocks cannot be nested (missing 'endin'?)"
msgstr "il blocco strumento non può essere innestato (manca 'endin'?)"
-#: Engine/rdorch.c:1769
+#: Engine/rdorch.c:1799
msgid "endin not allowed in opcode blk"
msgstr "endin non permesso nel blocco opcode"
-#: Engine/rdorch.c:1771
+#: Engine/rdorch.c:1801
msgid "unmatched endin"
msgstr "endin senza corrispondenza"
-#: Engine/rdorch.c:1781
+#: Engine/rdorch.c:1811
msgid "misplaced opcode"
msgstr "opcode messo male"
-#: Engine/rdorch.c:1787
+#: Engine/rdorch.c:1817
msgid "xout is allowed only in user defined opcodes"
msgstr "xout è permesso solo in udo (opcode definito dall'utente)"
-#: Engine/rdorch.c:1790
+#: Engine/rdorch.c:1820
msgid "multiple uses of xout in the same opcode definition"
msgstr "uso di multipli xout nella stessa definizione di opcode"
-#: Engine/rdorch.c:1837
+#: Engine/rdorch.c:1867
msgid "too many input args"
msgstr "troppi argomenti in input"
-#: Engine/rdorch.c:1909
-#, c-format
-msgid "input arg '%s' used before defined"
+#: Engine/rdorch.c:1893
+#, fuzzy
+msgid "insufficient required arguments"
+msgstr "gli argomenti richiesti sono insufficienti"
+
+#: Engine/rdorch.c:1940
+#, fuzzy, c-format
+msgid "input arg '%s' used before defined \n"
msgstr "argomento in input '%s' usato prima di essere definito"
-#: Engine/rdorch.c:1956
+#: Engine/rdorch.c:1987
msgid "xin is allowed only in user defined opcodes"
msgstr "xin è permesso solo in udo (opcode definito dall'utente)"
-#: Engine/rdorch.c:1959
+#: Engine/rdorch.c:1990
msgid "multiple uses of xin in the same opcode definition"
msgstr "uso di multipli xin nella stessa definizione di opcode"
-#: Engine/rdorch.c:2004
+#: Engine/rdorch.c:2035
msgid "illegal no of output args"
msgstr "numero di argomenti in output illecito"
-#: Engine/rdorch.c:2023
+#: Engine/rdorch.c:2054
#, c-format
msgid "output name previously used, type '%c' must be uniquely defined"
msgstr "nome di output già usato, il tipo '%c' deve essere definito unicamente"
-#: Engine/rdorch.c:2028
+#: Engine/rdorch.c:2059
#, c-format
msgid "output arg '%s' illegal type"
msgstr "argomento di output '%s' di tipo illegale"
-#: Engine/rdorch.c:2069
+#: Engine/rdorch.c:2100
#, c-format
msgid "input arg '%s' of type %s not allowed when expecting %c"
msgstr "argomento in input '%s' di tipo %s non permesso aspettando invece %c"
-#: Engine/rdorch.c:2155
+#: Engine/rdorch.c:2187
msgid "duplicate label"
msgstr "Etichetta doppia"
-#: Engine/rdorch.c:2177
+#: Engine/rdorch.c:2209
#, c-format
msgid "error line %d. unknown label:\n"
msgstr "errore alla linea %d. etichetta sconosciuta:\n"
-#: Engine/rdorch.c:2192 Engine/rdorch.c:2239
+#: Engine/rdorch.c:2222 Engine/rdorch.c:2271
msgid "error: "
msgstr "errore:"
-#: Engine/rdorch.c:2208
+#: Engine/rdorch.c:2239
#, c-format
msgid ", line %d:\n"
msgstr ", linea %d:\n"
-#: Engine/rdorch.c:2246
+#: Engine/rdorch.c:2278
#, c-format
msgid "called from line %d of macro %s"
msgstr "chiamata dalla linea %d della macro %s"
-#: Engine/rdorch.c:2250
+#: Engine/rdorch.c:2282
#, c-format
msgid "in line %d of file input %s"
msgstr "alla linea %d del file di input %s"
-#: Engine/rdscor.c:79
+#: Engine/rdscor.c:80
#, c-format
msgid "ERROR: illegal character %c(%.2x) in scoreline: "
msgstr "ERRORE: carattere illecito %c(%.2x) alla linea di score: "
@@ -1927,7 +1935,7 @@ msgstr ""
"\n"
"\tresto della linea ignorato\n"
-#: Engine/rdscor.c:144
+#: Engine/rdscor.c:146
msgid "ERROR: too many pfields: "
msgstr "ERRORE: troppi pfields: "
@@ -1954,314 +1962,279 @@ msgstr "errore nella score: "
msgid " section %d: at position %d%s"
msgstr " sezione %d: alla posizione %d%s"
-#: Engine/sread.c:217
+#: Engine/sread.c:216
msgid "Internal error in print_input_backtrace()"
msgstr "Errore interno in print_input_backtrace()"
-#: Engine/sread.c:219
+#: Engine/sread.c:218
#, c-format
msgid " included from line %d of macro %s%s"
msgstr " incluso dalla linea %d della macro %s%s"
-#: Engine/sread.c:220
+#: Engine/sread.c:219
#, c-format
msgid " called from line %d of macro %s%s"
msgstr " chiamata dalla linea %d della macro %s%s"
-#: Engine/sread.c:222
+#: Engine/sread.c:221
#, c-format
msgid " in line %d of macro %s%s"
msgstr " alla linea %d della macro %s%s"
-#: Engine/sread.c:229
-#, c-format
-msgid " included from line %d of file input %s%s"
-msgstr " incluso dalla linea %d del file di input %s%s"
-
-#: Engine/sread.c:230
-#, c-format
-msgid " called from line %d of file input %s%s"
-msgstr " chiamata dalla linea %d del file di input %s%s"
-
-#: Engine/sread.c:232
-#, c-format
-msgid " in line %d of file input %s%s"
-msgstr " alla linea %d del file di input %s%s"
-
-#: Engine/sread.c:268
+#: Engine/sread.c:256
#, c-format
msgid "Internal error op=%c"
msgstr "Errore interno op=%c"
-#: Engine/sread.c:322
-msgid "ungetscochar(): buffer overflow"
-msgstr "ungetscochar(): buffer overflow"
-
-#: Engine/sread.c:479
+#: Engine/sread.c:464
msgid "illegal placement of number in [] expression"
msgstr "piazzamento illecito di numero in espressione []"
-#: Engine/sread.c:506
+#: Engine/sread.c:491
msgid "illegal placement of operator ~ in [] expression"
msgstr "piazzamento illecito dell'operatore ~ in espressione []"
-#: Engine/sread.c:516
+#: Engine/sread.c:501
msgid "illegal placement of operator @ or @@ in [] expression"
msgstr "piazzamento illecito dell'operatore @ o @@ in espressione []"
-#: Engine/sread.c:548 Engine/sread.c:562
+#: Engine/sread.c:533 Engine/sread.c:547
#, c-format
msgid "illegal placement of operator %c in [] expression"
msgstr "piazzamento illecito dell'operatore %c in espressione []"
-#: Engine/sread.c:574
+#: Engine/sread.c:559
msgid "illegal placement of '(' in [] expression"
msgstr "piazzamento illecito di '(' in espressione []"
-#: Engine/sread.c:580
+#: Engine/sread.c:565
msgid "missing operand before ')' in [] expression"
msgstr "manca l'operando dopo ')' in espressione []"
-#: Engine/sread.c:594
+#: Engine/sread.c:579
msgid "missing operand before closing bracket in []"
msgstr "manca l'operando dopo la chiusura della parentesi in []"
-#: Engine/sread.c:609
+#: Engine/sread.c:594
#, c-format
msgid "illegal character %c(%.2x) in [] expression"
msgstr "carattere illecito %c(%.2x) in espressione []"
-#: Engine/sread.c:658
+#: Engine/sread.c:646
#, c-format
msgid "%s Nested LOOP terminated, level:%d\n"
msgstr "%s LOOP innestato erminato, livellp: %d\n"
-#: Engine/sread.c:664
+#: Engine/sread.c:652
#, c-format
msgid "External LOOP terminated, level:%d\n"
msgstr "LOOP esterno terminato, livello: %d\n"
-#: Engine/sread.c:684
+#: Engine/sread.c:696
#, c-format
msgid "%s Nested LOOP section (%d) Level:%d\n"
msgstr "%s LOOP innestato sezione (%d) Livello:%d\n"
-#: Engine/sread.c:689
+#: Engine/sread.c:701
#, c-format
msgid " External LOOP section (%d) Level:%d\n"
msgstr " LOOP esterno sezione (%d) Livello:%d\n"
-#: Engine/sread.c:703
+#: Engine/sread.c:715
msgid "Loop terminated\n"
msgstr "Loop terminato\n"
-#: Engine/sread.c:716
+#: Engine/sread.c:733
#, c-format
msgid "Repeat section (%d)\n"
msgstr "Ripetizione della sezione (%d)\n"
-#: Engine/sread.c:719
+#: Engine/sread.c:736
msgid "Repeat section\n"
msgstr "Ripetizione della sezione\n"
-#: Engine/sread.c:744
+#: Engine/sread.c:761
msgid "Invalid macro name for --smacro"
msgstr "Nome di macro non valido per --smacro"
-#: Engine/sread.c:831
+#: Engine/sread.c:865
#, c-format
msgid "Clockbase = %f\n"
msgstr "Clockbase = %f\n"
-#: Engine/sread.c:898
+#: Engine/sread.c:934
msgid "Loops are nested too deeply"
msgstr "Loops eccessivamente innestati"
-#: Engine/sread.c:901
-msgid "Loop cannot start inside of a macro"
-msgstr "Il loop non può partire da dentro una macro"
-
-#: Engine/sread.c:920
+#: Engine/sread.c:948
#, fuzzy
msgid "{: invalid repeat count"
msgstr "{: conteggio delle ripetizioni non valido"
-#: Engine/sread.c:929
+#: Engine/sread.c:957
#, c-format
msgid "%s Nested LOOP=%d Level:%d\n"
msgstr "%s LOOP innestato=%d Livello:%d\n"
-#: Engine/sread.c:935
+#: Engine/sread.c:963
#, c-format
msgid "External LOOP=%d Level:%d\n"
msgstr "LOOP esterno=%d Livello:%d\n"
-#: Engine/sread.c:1004
-msgid "Repeat cannot start inside of a macro (ignored)"
-msgstr "Repeat non può partire da dentro una macro (ignorato)"
-
-#: Engine/sread.c:1019
+#: Engine/sread.c:1047
msgid "r: invalid repeat count"
msgstr "r: conteggio delle ripetizioni non valido"
-#: Engine/sread.c:1021
+#: Engine/sread.c:1049
#, c-format
msgid "Repeats=%d\n"
msgstr "Ripetizioni=%d\n"
-#: Engine/sread.c:1063
+#: Engine/sread.c:1093
#, c-format
msgid "Named section >>>%s<<<\n"
msgstr "Sezione Nominata >>>%s<<<\n"
-#: Engine/sread.c:1079
+#: Engine/sread.c:1108
#, c-format
msgid "%d: File %s position %ld\n"
msgstr "%d: File %s posizione %ld\n"
-#: Engine/sread.c:1085
-#, c-format
-msgid "Ignoring name %s not in file\n"
-msgstr "Ignorato il nome %s non è nel file\n"
-
-#: Engine/sread.c:1110
+#: Engine/sread.c:1133
#, c-format
msgid "Name %s not found"
msgstr "Nome %s non trovato"
-#: Engine/sread.c:1112
+#: Engine/sread.c:1135
#, c-format
msgid "Duplicate %d: %s (%s,%ld)\n"
msgstr "Duplicazione %d: %s (%s,%ld)\n"
-#: Engine/sread.c:1129
-#, c-format
-msgid "cannot open input file %s"
-msgstr "Non è possibile aprire il file di input %s"
-
-#: Engine/sread.c:1149
+#: Engine/sread.c:1164
#, c-format
msgid "Warp_factor = %f\n"
msgstr "Warp_factor = %f\n"
-#: Engine/sread.c:1174
+#: Engine/sread.c:1189
msgid "sread is confused on legal opcodes\n"
msgstr "sread è confuso sugli opcodes leciti\n"
-#: Engine/sread.c:1236
+#: Engine/sread.c:1251
msgid "No previous event for ^"
msgstr "Non c'è l'evento precedente per ^"
-#: Engine/sread.c:1241
+#: Engine/sread.c:1256
#, c-format
msgid "illegal space following %s, zero substituted"
msgstr "spazio illecito seguente %s, sostituito con zero"
-#: Engine/sread.c:1271
+#: Engine/sread.c:1286
#, c-format
msgid "ignoring '%s' in '%c' event"
msgstr "ignorato '%s' nell'evento '%c'"
-#: Engine/sread.c:1274
+#: Engine/sread.c:1289
msgid "! invalid in p1, p2, or p3"
msgstr "! non valido in p1, p2, or p3"
-#: Engine/sread.c:1275 Engine/sread.c:1280 Engine/sread.c:1730
-#: Engine/sread.c:1753 Engine/sread.c:1767
+#: Engine/sread.c:1290 Engine/sread.c:1295 Engine/sread.c:1738
+#: Engine/sread.c:1761 Engine/sread.c:1775
msgid " remainder of line flushed\n"
msgstr " resto della linea ignorato\n"
-#: Engine/sread.c:1279
+#: Engine/sread.c:1294
#, c-format
msgid "illegal character after !: '%c'"
msgstr "carattere illecito dopo !: '%c'"
-#: Engine/sread.c:1358
+#: Engine/sread.c:1373
#, c-format
msgid "WARNING: instr %s not found, assuming insno = -1\n"
msgstr "ATTENZIONE: strumento %s non trovato, insno = -1\n"
-#: Engine/sread.c:1378
+#: Engine/sread.c:1393
msgid "sread: illegal use of carry, 0 substituted\n"
msgstr "sread: uso illecito del riporto, sostituito 0\n"
-#: Engine/sread.c:1526
+#: Engine/sread.c:1539
#, fuzzy
msgid "Improper \\"
msgstr "Improprio \\"
-#: Engine/sread.c:1558
+#: Engine/sread.c:1570
msgid "Not #define"
msgstr "Non #define"
-#: Engine/sread.c:1620
+#: Engine/sread.c:1630
#, c-format
msgid "Macro %s with %d arguments defined\n"
msgstr "Macro %s con %d argomenti definiti\n"
-#: Engine/sread.c:1631
+#: Engine/sread.c:1642
msgid "Not #include"
msgstr "Non #include"
-#: Engine/sread.c:1662
+#: Engine/sread.c:1671
#, c-format
msgid "Cannot open #include'd file %s"
msgstr "Impossibile aprire il file #include %s"
-#: Engine/sread.c:1673
+#: Engine/sread.c:1681
msgid "Not #undef"
msgstr "Non #undef"
-#: Engine/sread.c:1692
+#: Engine/sread.c:1700
msgid "unknown # option"
msgstr "opzione # sconosciuta"
-#: Engine/sread.c:1729
+#: Engine/sread.c:1737
#, c-format
msgid "illegal opcode %c"
msgstr "opcode illecito %c"
-#: Engine/sread.c:1752
+#: Engine/sread.c:1760
#, c-format
msgid "unexpected char %c"
msgstr "carattere inatteso %c"
-#: Engine/sread.c:1766
+#: Engine/sread.c:1774
msgid "illegally placed string"
msgstr "stringa piazzata illecitamente"
-#: Engine/sread.c:1773
+#: Engine/sread.c:1781
msgid "unmatched quote"
msgstr "virgolette senza corrispondenza"
-#: Engine/sread.c:1817
+#: Engine/sread.c:1825
msgid "sread: illegal number format: "
msgstr "sread: formato numerico illecito: "
-#: Engine/sread.c:1823
+#: Engine/sread.c:1831
msgid " zero substituted.\n"
msgstr " sostituito zero.\n"
-#: Engine/swrite.c:123
+#: Engine/swrite.c:123 Engine/swritestr.c:134
#, c-format
msgid "swrite: unexpected opcode, section %d line %d\n"
msgstr "swrite: opcode inatteso, sezione %d linea %d\n"
-#: Engine/swrite.c:209 Engine/swrite.c:249
+#: Engine/swrite.c:209 Engine/swrite.c:249 Engine/swritestr.c:220
+#: Engine/swritestr.c:260
#, c-format
msgid "swrite: output, sect%d line%d p%d makes illegal reference to "
msgstr "swrite: output, sez%d linea%d p%d fa illecito riferimento a "
-#: Engine/swrite.c:216 Engine/swrite.c:255
+#: Engine/swrite.c:216 Engine/swrite.c:255 Engine/swritestr.c:227
+#: Engine/swritestr.c:266
msgid " Zero substituted\n"
msgstr " sostituito zero\n"
-#: Engine/swrite.c:313
+#: Engine/swrite.c:313 Engine/swritestr.c:324
#, c-format
msgid "swrite: output, sect%d line%d p%d has illegal ramp symbol\n"
msgstr "swrite: output, sez%d linea%d p%d ha illecito simbolo ramp\n"
-#: Engine/swrite.c:317
+#: Engine/swrite.c:317 Engine/swritestr.c:328
#, c-format
msgid ""
"swrite: output, sect%d line%d p%d ramp has illegal forward or backward ref\n"
@@ -2269,12 +2242,14 @@ msgstr ""
"swrite: output, sez%d linea%d p%d ramp fa riferimento a precedente o "
"successivo illecito\n"
-#: Engine/swrite.c:380 Engine/swrite.c:445
+#: Engine/swrite.c:380 Engine/swrite.c:445 Engine/swritestr.c:391
+#: Engine/swritestr.c:456
#, c-format
msgid "swrite: output, sect%d line%d p%d has illegal expramp symbol\n"
msgstr "swrite: output, sez%d linea%d p%d ha simbolo expramp illecito\n"
-#: Engine/swrite.c:385 Engine/swrite.c:450
+#: Engine/swrite.c:385 Engine/swrite.c:450 Engine/swritestr.c:396
+#: Engine/swritestr.c:461
#, c-format
msgid ""
"swrite: output, sect%d line%d p%d expramp has illegal forward or backward "
@@ -2283,27 +2258,27 @@ msgstr ""
"swrite: output, sez%d linea%d p%d expramp fa riferimento illecito a "
"precedente o sucessivo\n"
-#: Engine/swrite.c:466
+#: Engine/swrite.c:466 Engine/swritestr.c:477
#, c-format
msgid "swrite: output, sect%d line%d p%d has illegally terminated string "
msgstr ""
"swrite: output, sez%d linea%d p%d ha stringa terminante illecitamente "
-#: Engine/swrite.c:514
+#: Engine/swrite.c:514 Engine/swritestr.c:529
#, c-format
msgid "swrite: output, sect%d line%d p%d has illegal number "
msgstr "swrite: output, sez%d linea%d p%d ha numero illecito "
-#: Engine/swrite.c:521
+#: Engine/swrite.c:521 Engine/swritestr.c:536
msgid " String truncated\n"
msgstr " Stringa troncata\n"
-#: Engine/symbtab.c:202
+#: Engine/symbtab.c:208
#, c-format
msgid "Type confusion for %s (%d,%d), replacing\n"
msgstr ""
-#: Engine/symbtab.c:333
+#: Engine/symbtab.c:345
#, c-format
msgid "Unknown word type for %s on line %d\n"
msgstr "Tipo di parola sconosciuta per %s alla linea %d\n"
@@ -2325,6 +2300,16 @@ msgstr "twarp: t ha tempo non positivo\n"
msgid "twarp: t segments exceed twarp array\n"
msgstr "twarp: segmenti di t superano l'array twarp\n"
+#: InOut/cmidi.c:233
+#, fuzzy
+msgid "CoreMIDI real time MIDI plugin for Csound\n"
+msgstr "PortMIDI real time MIDI plugin per Csound\n"
+
+#: InOut/cmidi.c:247
+#, fuzzy
+msgid "rtmidi: CoreMIDI module enabled\n"
+msgstr "rtmidi: PortMIDI modulo abilitato\n"
+
#: InOut/libsnd.c:486
msgid "error: no input file name"
msgstr "errore: manca il nome del file di input"
@@ -2348,45 +2333,60 @@ msgstr "audio_in %s ha sr = %d, orch sr = %d"
msgid "audio_in %s has %d chnls, orch %d chnls_i"
msgstr "audio_in %s ha %d canali, orch %d canali"
-#: InOut/libsnd.c:573
+#: InOut/libsnd.c:574
+#, fuzzy, c-format
+msgid "reading %d sample blks of %d-bit floats from %s \n"
+msgstr "lettura blocchi di %d-byte di %s da %s (%s)\n"
+
+#: InOut/libsnd.c:578
#, c-format
msgid "reading %d-byte blks of %s from %s (%s)\n"
msgstr "lettura blocchi di %d-byte di %s da %s (%s)\n"
-#: InOut/libsnd.c:608
+#: InOut/libsnd.c:614
#, fuzzy
msgid "Output file type changed to IRCAM for use in pipe\n"
msgstr "Tipo di file output cambiato in IRCAM per uso in pipe\n"
-#: InOut/libsnd.c:628
+#: InOut/libsnd.c:634
msgid "Failed to initialise real time audio output"
msgstr "Fallita inizializzazione dell'output audio in tempo reale"
-#: InOut/libsnd.c:669 InOut/libsnd.c:673
+#: InOut/libsnd.c:675 InOut/libsnd.c:679
#, c-format
msgid "sfinit: cannot open %s"
msgstr "sfinit: impossibile aprire %s"
-#: InOut/libsnd.c:733 util/srconv.c:485
+#: InOut/libsnd.c:741
+#, fuzzy, c-format
+msgid "writing %d sample blks of %d-bit floats to %s \n"
+msgstr "scrittura blocchi di %d-byte di %s su %s"
+
+#: InOut/libsnd.c:744 util/srconv.c:484
#, c-format
msgid "writing %d-byte blks of %s to %s"
msgstr "scrittura blocchi di %d-byte di %s su %s"
-#: InOut/libsnd.c:740 InOut/libsnd.c:810
+#: InOut/libsnd.c:749 InOut/libsnd.c:824
msgid " (raw)\n"
msgstr " (raw)\n"
-#: InOut/libsnd.c:803
-#, c-format
-msgid "%ld %d-byte soundblks of %s written to %s"
+#: InOut/libsnd.c:815
+#, fuzzy, c-format
+msgid "%ld %d sample blks of %d-bit floats written to %s\n"
+msgstr "%ld blocchi di %d-byte di %s scritti su %s"
+
+#: InOut/libsnd.c:820
+#, fuzzy, c-format
+msgid "%ld %d sample blks of %s written to %s"
msgstr "%ld blocchi di %d-byte di %s scritti su %s"
-#: InOut/libsnd.c:822
+#: InOut/libsnd.c:837
#, c-format
msgid "soundfile write returned bytecount of %d, not %d"
msgstr "il file audio scritto ha conteggio byte di %d, non %d"
-#: InOut/libsnd.c:825
+#: InOut/libsnd.c:840
msgid ""
"(disk may be full...\n"
" closing the file ...)"
@@ -2394,11 +2394,11 @@ msgstr ""
"(forse disco pieno...\n"
" chiusura file ...)"
-#: InOut/libsnd.c:828 util/dnoise.c:1192
+#: InOut/libsnd.c:843 util/dnoise.c:1177
msgid "\t... closed\n"
msgstr "\t... chiuso\n"
-#: InOut/libsnd.c:834
+#: InOut/libsnd.c:849
#, fuzzy
msgid "not writing to sound disk\n"
msgstr "nessuna scrittura su sound disk\n"
@@ -2803,20 +2803,20 @@ msgstr "Errore in chiusura del dispositivo MIDI in: %d (%s)"
msgid "Error closing MIDI out device: %d (%s)"
msgstr "Errore in chiusura del dispositivo MIDI out: %d (%s)"
-#: InOut/midisend.c:171
+#: InOut/midisend.c:170
msgid " *** no callback for opening MIDI output"
msgstr ""
-#: InOut/midisend.c:173
+#: InOut/midisend.c:172
msgid " *** no callback for writing MIDI data"
msgstr ""
-#: InOut/midisend.c:179
+#: InOut/midisend.c:178
#, c-format
msgid " *** error opening MIDI out device: %d (%s)"
msgstr " *** errore in apertura del dispositivo MIDI out: %d (%s)"
-#: InOut/midisend.c:190
+#: InOut/midisend.c:189
#, c-format
msgid " *** error opening MIDI out file '%s'"
msgstr " *** errore in apertura del file MIDI out '%s'"
@@ -3076,7 +3076,7 @@ msgstr "Errore in apertura del file del dispositivo di output MIDI '%s'"
msgid "Opened MIDI output device file '%s'\n"
msgstr "Apertura del file del dispositivo di output MIDI '%s'\n"
-#: InOut/rtalsa.c:1101 InOut/rtcoreaudio.c:64 InOut/rtcoreaudio.c:74
+#: InOut/rtalsa.c:1101 InOut/rtcoreaudio.c:71 InOut/rtcoreaudio.c:81
msgid "warning... could not create global var\n"
msgstr "attenzione... impossibile creare global var\n"
@@ -3101,40 +3101,60 @@ msgstr "rtmidi: modulo ALSA abilitato\n"
msgid "rtmidi: devfile module enabled\n"
msgstr "rtmidi: modulo devfile abilitato\n"
-#: InOut/rtcoreaudio.c:83
+#: InOut/rtauhal.c:163
+#, fuzzy, c-format
+msgid "selected input device: %s \n"
+msgstr "dispositivo selezionato: %u \n"
+
+#: InOut/rtauhal.c:166
+#, fuzzy, c-format
+msgid "selected output device: %s \n"
+msgstr "dispositivo selezionato: %u \n"
+
+#: InOut/rtauhal.c:524
+#, fuzzy
+msgid "AuHAL module: device closed\n"
+msgstr "modulo coreaudio: dispositivo chiuso\n"
+
+#: InOut/rtauhal.c:541
+#, fuzzy
+msgid "rtaudio: coreaaudio-AuHAL module enabled\n"
+msgstr "rtaudio: CoreAudio modulo abilitato\n"
+
+#: InOut/rtcoreaudio.c:90
#, fuzzy
msgid ""
"CoreAudio real-time audio module for Csound\n"
"by Victor Lazzarini\n"
msgstr "CoreAudio modulo audio real-time per Csound\n"
-#: InOut/rtcoreaudio.c:105
+#: InOut/rtcoreaudio.c:112
msgid "rtaudio: CoreAudio module enabled\n"
msgstr "rtaudio: CoreAudio modulo abilitato\n"
-#: InOut/rtcoreaudio.c:254
+#: InOut/rtcoreaudio.c:261
#, c-format
msgid "selected device: %u \n"
msgstr "dispositivo selezionato: %u \n"
-#: InOut/rtcoreaudio.c:263
+#: InOut/rtcoreaudio.c:270
#, c-format
msgid "CoreAudio module: opening %s \n"
msgstr "modulo CoreAudio: apertura %s \n"
-#: InOut/rtcoreaudio.c:297
+#: InOut/rtcoreaudio.c:304
msgid " *** CoreAudio: open: could not set buffer size\n"
msgstr ""
" *** CoreAudio: apertura: impossibile impostare dimensione del buffer\n"
-#: InOut/rtcoreaudio.c:342
+#: InOut/rtcoreaudio.c:349
#, c-format
msgid " *** CoreAudio: open: could not set device parameter sr: %d \n"
msgstr ""
" *** CoreAudio: apertura: impossibile impostare parametro del dispositivo "
"sr: %d \n"
-#: InOut/rtcoreaudio.c:344
+#: InOut/rtcoreaudio.c:351
#, c-format
msgid ""
" *** CoreAudio: current device sampling rate is:%d \n"
@@ -3143,17 +3163,17 @@ msgstr ""
" *** CoreAudio: frequenza di campionamento del dispositivo:%d \n"
" provare ad impostare questo valore nell'orchestra di csound \n"
-#: InOut/rtcoreaudio.c:353
+#: InOut/rtcoreaudio.c:360
#, c-format
msgid "CoreAudio module: sr set to %d with %d audio channels \n"
msgstr "modulo CoreAudio: sr impostata a %d con %d canali audio \n"
-#: InOut/rtcoreaudio.c:374 InOut/rtcoreaudio.c:387 InOut/rtcoreaudio.c:432
-#: InOut/rtcoreaudio.c:452
+#: InOut/rtcoreaudio.c:381 InOut/rtcoreaudio.c:394 InOut/rtcoreaudio.c:439
+#: InOut/rtcoreaudio.c:459
msgid " *** CoreAudio: open: memory allocation failure\n"
msgstr " *** CoreAudio: apertura: allocazione di memoria fallita\n"
-#: InOut/rtcoreaudio.c:414
+#: InOut/rtcoreaudio.c:421
#, c-format
msgid ""
"CoreAudio module: device open with %d buffers of %d frames\n"
@@ -3162,11 +3182,11 @@ msgstr ""
"modulo CoreAudio: dispositivo aperto con %d buffers di %d frames\n"
"==========================================================\n"
-#: InOut/rtcoreaudio.c:552
+#: InOut/rtcoreaudio.c:559
msgid "coreaudio module: closing device...\n"
msgstr "modulo coreaudio: chiusura dispositivo...\n"
-#: InOut/rtcoreaudio.c:566
+#: InOut/rtcoreaudio.c:573
msgid "coreaudio module: device closed\n"
msgstr "modulo coreaudio: dispositivo chiuso\n"
@@ -3518,343 +3538,61 @@ msgstr "rtmidi: nessun dispositivo di input disponibile"
#: InOut/rtwinmm.c:541 InOut/rtwinmm.c:645
msgid "rtmidi: must specify a device number, not a name"
-msgstr "rtmidi: si deve specificare un numero di dispositivo, non un nome"
-
-#: InOut/rtwinmm.c:547
-msgid "The available MIDI input devices are:\n"
-msgstr "I dispositivi di input MIDI disponibili sono:\n"
-
-#: InOut/rtwinmm.c:554
-msgid "rtmidi: input device number is out of range"
-msgstr "rtmidi: numero del dispositivo di input fuori range"
-
-#: InOut/rtwinmm.c:559
-msgid "rtmidi: memory allocation failure"
-msgstr "rtmidi: allocazione di memoria fallita"
-
-#: InOut/rtwinmm.c:565
-#, c-format
-msgid "Opening MIDI input device %d (%s)\n"
-msgstr "Apertura del dispositivo di input MIDI %d (%s)\n"
-
-#: InOut/rtwinmm.c:571
-msgid "rtmidi: could not open input device"
-msgstr ""
-
-#: InOut/rtwinmm.c:639
-msgid "rtmidi: no output devices are available"
-msgstr ""
-
-#: InOut/rtwinmm.c:651
-msgid "The available MIDI output devices are:\n"
-msgstr ""
-
-#: InOut/rtwinmm.c:658
-msgid "rtmidi: output device number is out of range"
-msgstr ""
-
-#: InOut/rtwinmm.c:662
-#, c-format
-msgid "Opening MIDI output device %d (%s)\n"
-msgstr ""
-
-#: InOut/rtwinmm.c:667
-msgid "rtmidi: could not open output device"
-msgstr ""
-
-#: InOut/rtwinmm.c:725
-msgid ""
-"Windows MME real time audio and MIDI module for Csound by Istvan Varga\n"
-msgstr ""
-
-#: InOut/rtwinmm.c:730
-msgid "could not allocate global structure"
-msgstr ""
-
-#: InOut/rtwinmm.c:762
-msgid "rtaudio: WinMM module enabled\n"
-msgstr ""
-
-#: InOut/virtual_keyboard/virtual_keyboard.cpp:435
-msgid "virtual_keyboard.cpp: error allocating FLTK flags"
-msgstr ""
-
-#: InOut/virtual_keyboard/virtual_keyboard.cpp:443 InOut/winFLTK.c:125
-#: InOut/winFLTK.c:139
-#, c-format
-msgid "Error registering opcode '%s'"
-msgstr ""
-
-#: InOut/widgets.cpp:1081
-msgid ""
-"Invalid snapshot. Perhaps you modified orchestra widget code after you saved "
-"the snapshot bank."
-msgstr ""
-
-#: InOut/widgets.cpp:1226
-msgid "No name for FLbutbank"
-msgstr ""
-
-#: InOut/widgets.cpp:1466
-msgid "FLsetsnap: invalid table"
-msgstr ""
-
-#: InOut/widgets.cpp:1504
-msgid ""
-"Saving could overwrite the old file.\n"
-"Are you sure to save ?"
-msgstr ""
-
-#: InOut/widgets.cpp:1516
-msgid ""
-"Saving could overwrite the old file.\n"
-"Are you sure you want to save ?"
-msgstr ""
-
-#: InOut/widgets.cpp:1518
-msgid "No"
-msgstr "No"
-
-#: InOut/widgets.cpp:1518
-msgid "Yes"
-msgstr "Si"
-
-#: InOut/widgets.cpp:1527
-msgid "FLsavesnap: cannot open file"
-msgstr ""
-
-#: InOut/widgets.cpp:1580
-msgid "FLloadsnap: cannot open file"
-msgstr ""
-
-#: InOut/widgets.cpp:1625
-msgid ""
-"unmatched widget, probably due to a modified orchestra. Modifying an "
-"orchestra makes it incompatible with old snapshot files"
-msgstr ""
-
-#: InOut/widgets.cpp:1994
-msgid "end of widget thread\n"
-msgstr ""
-
-#: InOut/widgets.cpp:2020
-msgid "FLrun was already called"
-msgstr ""
-
-#: InOut/widgets.cpp:2023
-msgid "FL_run: memory allocation failure"
-msgstr ""
-
-#: InOut/widgets.cpp:2125 InOut/widgets.cpp:2145
-msgid "Error: Unable to fork process\n"
-msgstr ""
-
-#: InOut/widgets.cpp:2545
-msgid "FLpanel_end: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2548
-msgid ""
-"FLpanel_end: invalid stack count: verify FLpanel/FLpanel_end count and "
-"placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2573 InOut/widgets.cpp:2604
-msgid "FLscroll_end: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2576
-msgid ""
-"FLscroll_end: invalid stack count: verify FLscroll/FLscroll_end count and "
-"placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2607
-msgid ""
-"FLtabs_end: invalid stack count: verify FLtabs/FLtabs_end count and placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2651
-msgid "FLgroup_end: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2654
-msgid ""
-"FLgroup_end: invalid stack count: verify FLgroup/FLgroup_end count and "
-"placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2684
-msgid "FLpack_end: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2687
-msgid ""
-"FLpack_end: invalid stack count: verify FLpack/FLpack_end count and placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2840
-msgid "FLvalue cannot be set by FLsetVal.\n"
-msgstr ""
-
-#: InOut/widgets.cpp:2857
-#, c-format
-msgid "(fl_setWidgetValuei): not fully implemented yet; exp=%d"
-msgstr ""
-
-#: InOut/widgets.cpp:2876
-msgid "FLvalue cannot be set by FLsetVal\n"
-msgstr ""
-
-#: InOut/widgets.cpp:2893
-#, c-format
-msgid "(fl_setWidgetValue_set): not fully implemented yet; exp=%d"
-msgstr ""
-
-#: InOut/widgets.cpp:3242 InOut/widgets.cpp:4648
-msgid "FLslider exponential, using non-labeled slider"
-msgstr ""
-
-#: InOut/widgets.cpp:3264
-msgid "FLslider: invalid slider type"
-msgstr ""
-
-#: InOut/widgets.cpp:3276 InOut/widgets.cpp:4072
-msgid "FLslider: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:3337 InOut/widgets.cpp:4399 InOut/widgets.cpp:4610
-#: InOut/widgets.cpp:4787
-msgid "invalid ZAK space allocation"
-msgstr ""
-
-#: InOut/widgets.cpp:3451
-msgid "FLslidBnk: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:3548 InOut/widgets.cpp:3581
-msgid "FLjoy X axe: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:3675
-msgid "FLknob: invalid knob type"
-msgstr ""
-
-#: InOut/widgets.cpp:3690
-msgid "FLknob: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:3790 InOut/widgets.cpp:3912
-#, c-format
-msgid "FLbutton \"%s\" ignoring snapshot capture retrieve"
-msgstr ""
-
-#: InOut/widgets.cpp:3831
-msgid "FLbutton: invalid button type"
-msgstr ""
-
-#: InOut/widgets.cpp:3863
-msgid "FLcloseButton: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:3882
-#, c-format
-msgid "Command Found: %s\n"
-msgstr ""
-
-#: InOut/widgets.cpp:3954
-msgid "FLbuttonBank: invalid button type"
-msgstr ""
-
-#: InOut/widgets.cpp:3992
-#, c-format
-msgid "FLcount \"%s\" ignoring snapshot capture retrieve"
-msgstr ""
-
-#: InOut/widgets.cpp:4059
-msgid "FLroller: invalid roller type"
-msgstr ""
-
-#: InOut/widgets.cpp:4254
-msgid "FLhvsBox: a square area must be delimited by 2 lines at least"
-msgstr ""
-
-#: InOut/widgets.cpp:4302
-msgid "FLkeyIn: invalid table number"
-msgstr ""
-
-#: InOut/widgets.cpp:4305
-msgid "FLkeyIn: table too short!"
-msgstr ""
-
-#: InOut/widgets.cpp:4522
-msgid "FLvslidBnk: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:4698 InOut/widgets.cpp:4875
-msgid "FLsliderBank: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:4825
-msgid "FLslidBnk2: FLslider exponential, using non-labeled slider"
-msgstr ""
-
-#: InOut/widgets.cpp:4955 InOut/widgets.cpp:5018
-msgid "FLsldBnkSet: invalid table number"
-msgstr ""
+msgstr "rtmidi: si deve specificare un numero di dispositivo, non un nome"
-#: InOut/widgets.cpp:4959 InOut/widgets.cpp:5022
-msgid "FLslidBnkSet: table too short!"
-msgstr ""
+#: InOut/rtwinmm.c:547
+msgid "The available MIDI input devices are:\n"
+msgstr "I dispositivi di input MIDI disponibili sono:\n"
-#: InOut/widgets.cpp:4967 InOut/widgets.cpp:5031
-msgid "FLsldBnkSet: invalid outable number"
-msgstr ""
+#: InOut/rtwinmm.c:554
+msgid "rtmidi: input device number is out of range"
+msgstr "rtmidi: numero del dispositivo di input fuori range"
-#: InOut/widgets.cpp:4972 InOut/widgets.cpp:5037
-msgid "FLslidBnkSet: too many sliders to reset!"
-msgstr ""
+#: InOut/rtwinmm.c:559
+msgid "rtmidi: memory allocation failure"
+msgstr "rtmidi: allocazione di memoria fallita"
-#: InOut/widgets.cpp:4995
-msgid "FLslidBnkSet: function mapping not available"
-msgstr ""
+#: InOut/rtwinmm.c:565
+#, c-format
+msgid "Opening MIDI input device %d (%s)\n"
+msgstr "Apertura del dispositivo di input MIDI %d (%s)\n"
-#: InOut/widgets.cpp:5064 InOut/widgets.cpp:5149 InOut/widgets.cpp:5236
-msgid ""
-"FLslidBnk2Setk: value out of range: function mapping requires a 0 to 1 range "
-"for input"
+#: InOut/rtwinmm.c:571
+msgid "rtmidi: could not open input device"
msgstr ""
-#: InOut/widgets.cpp:5093
-msgid "FLsldBnkSetk: invalid table number"
+#: InOut/rtwinmm.c:639
+msgid "rtmidi: no output devices are available"
msgstr ""
-#: InOut/widgets.cpp:5097 InOut/widgets.cpp:5183
-msgid "FLslidBnkSetk: table too short!"
+#: InOut/rtwinmm.c:651
+msgid "The available MIDI output devices are:\n"
msgstr ""
-#: InOut/widgets.cpp:5105
-msgid "FLsldBnkSetk: invalid outable number"
+#: InOut/rtwinmm.c:658
+msgid "rtmidi: output device number is out of range"
msgstr ""
-#: InOut/widgets.cpp:5111 InOut/widgets.cpp:5197
-msgid "FLslidBnkSetk: too many sliders to reset!"
+#: InOut/rtwinmm.c:662
+#, c-format
+msgid "Opening MIDI output device %d (%s)\n"
msgstr ""
-#: InOut/widgets.cpp:5179
-msgid "FLslidBnkSetk: invalid table number"
+#: InOut/rtwinmm.c:667
+msgid "rtmidi: could not open output device"
msgstr ""
-#: InOut/widgets.cpp:5191
-msgid "FLslidBnkSetk: invalid outable number"
+#: InOut/rtwinmm.c:725
+msgid ""
+"Windows MME real time audio and MIDI module for Csound by Istvan Varga\n"
msgstr ""
-#: InOut/widgets.cpp:5268
-msgid "FLxyin: none of X limits can be zero in exponential mode!"
+#: InOut/rtwinmm.c:730
+msgid "could not allocate global structure"
msgstr ""
-#: InOut/widgets.cpp:5294
-msgid "FLxyin: none of Y limits can be zero in exponential mode!"
+#: InOut/rtwinmm.c:762
+msgid "rtaudio: WinMM module enabled\n"
msgstr ""
#: InOut/winascii.c:75
@@ -3862,7 +3600,7 @@ msgstr ""
msgid "%s\t%ld points, scalemax %5.3f\n"
msgstr ""
-#: InOut/windin.c:46 Opcodes/pitch.c:82 Opcodes/spectra.c:76
+#: InOut/windin.c:46 Opcodes/pitch.c:83 Opcodes/spectra.c:78
msgid "illegal iprd"
msgstr ""
@@ -3905,48 +3643,62 @@ msgstr ""
msgid "widgets.cpp: error allocating FLTK flags"
msgstr ""
-#: OOps/aops.c:95 OOps/aops.c:119
+#: InOut/winFLTK.c:124 InOut/winFLTK.c:137
+#: InOut/virtual_keyboard/virtual_keyboard.cpp:443
+#, c-format
+msgid "Error registering opcode '%s'"
+msgstr ""
+
+#: InOut/virtual_keyboard/virtual_keyboard.cpp:435
+msgid "virtual_keyboard.cpp: error allocating FLTK flags"
+msgstr ""
+
+#: OOps/aops.c:120 OOps/aops.c:144
#, c-format
msgid "Cannot be more In arguments than Out in init (%d,%d)"
msgstr ""
-#: OOps/aops.c:175 OOps/aops.c:194
+#: OOps/aops.c:200 OOps/aops.c:219
#, c-format
msgid "Index %d out of range [0,%d] in t[]\n"
msgstr ""
-#: OOps/aops.c:184
+#: OOps/aops.c:209
#, fuzzy
-msgid "Vector notinitialised\n"
+msgid "Vector not initialised\n"
msgstr "vco: non inizializzato"
-#: OOps/aops.c:686
+#: OOps/aops.c:711
msgid "non-looping sample"
msgstr ""
-#: OOps/aops.c:828 OOps/aops.c:856
+#: OOps/aops.c:853 OOps/aops.c:881
#, c-format
msgid "No tuning table %d"
msgstr ""
-#: OOps/aops.c:901 OOps/aops.c:939
+#: OOps/aops.c:926 OOps/aops.c:964
msgid "cpstun: invalid table"
msgstr ""
-#: OOps/aops.c:1189
+#: OOps/aops.c:1214
#, fuzzy
msgid "Input and output argument count differs in inch"
msgstr "parametri di input e di output incompatibili"
-#: OOps/aops.c:1193
+#: OOps/aops.c:1218
#, c-format
msgid "Input channel %d too large; ignored"
msgstr ""
-#: OOps/aops.c:1667
+#: OOps/aops.c:1698
msgid "k-rate invalue ChannelName cannot start with $"
msgstr ""
+#: OOps/aops.c:1835
+msgid "Unknown functuon called"
+msgstr ""
+
#: OOps/bus.c:313 OOps/bus.c:345
msgid "chani: invalid index"
msgstr ""
@@ -4240,7 +3992,7 @@ msgstr "fft"
msgid "dispfft: not initialised"
msgstr "dispfft: non inizializzato"
-#: OOps/disprep.c:435 Opcodes/spectra.c:516
+#: OOps/disprep.c:435 Opcodes/spectra.c:518
msgid "illegal iperiod"
msgstr ""
@@ -4305,15 +4057,15 @@ msgstr ""
msgid " *** fftlib.c: internal error: invalid FFT size: %d"
msgstr ""
-#: OOps/goto_ops.c:92
+#: OOps/goto_ops.c:93
msgid "negative time period"
msgstr ""
-#: OOps/goto_ops.c:182
+#: OOps/goto_ops.c:186
msgid "turnoff2: invalid instrument number"
msgstr ""
-#: OOps/goto_ops.c:187
+#: OOps/goto_ops.c:191
msgid "turnoff2: invalid mode parameter"
msgstr ""
@@ -4330,7 +4082,7 @@ msgid "cpstabm: invalid modulator table"
msgstr ""
#: OOps/midiops.c:304 OOps/midiops.c:314 OOps/midiops.c:334 OOps/midiops.c:344
-#: OOps/midiops.c:421 OOps/midiops.c:435 Opcodes/gab/sliderTable.c:563
+#: OOps/midiops.c:421 OOps/midiops.c:435 Opcodes/gab/sliderTable.c:567
#: Opcodes/midiops2.c:56 Opcodes/midiops2.c:73 Opcodes/midiops2.c:111
#: Opcodes/midiops2.c:145 Opcodes/midiops2.c:206 Opcodes/midiops2.c:237
#: Opcodes/midiops2.c:298 Opcodes/midiops2.c:317 Opcodes/midiops2.c:357
@@ -4346,7 +4098,7 @@ msgstr ""
msgid "illegal mrtmsg argument"
msgstr ""
-#: OOps/midiout.c:383
+#: OOps/midiout.c:389
#, c-format
msgid "out contr14 msb:%x lsb:%x\n"
msgstr ""
@@ -4808,148 +4560,148 @@ msgstr "pvsanal: Non Inizializzato.\n"
msgid "Unknown window type; replaced by rectangular\n"
msgstr ""
-#: OOps/pvsanal.c:1025
+#: OOps/pvsanal.c:1027
msgid "pvsynth: Not Initialised.\n"
msgstr "pvsynth: Non Inizializzato.\n"
-#: OOps/remote.c:100
+#: OOps/remote.c:103
msgid "insufficient memory to initialise remote globals."
msgstr ""
-#: OOps/remote.c:109
+#: OOps/remote.c:112
msgid "insufficient memory to initialise outgoing socket table."
msgstr ""
-#: OOps/remote.c:116
+#: OOps/remote.c:119
msgid "insufficient memory to initialise incoming socket table."
msgstr ""
-#: OOps/remote.c:124
+#: OOps/remote.c:127
msgid "insufficient memory to initialise insrfd_list."
msgstr ""
-#: OOps/remote.c:132
+#: OOps/remote.c:135
msgid "insufficient memory to initialise chnrfd_list."
msgstr ""
-#: OOps/remote.c:139
+#: OOps/remote.c:142
msgid "insufficient memory to initialise insrfd table."
msgstr ""
-#: OOps/remote.c:146
+#: OOps/remote.c:149
msgid "insufficient memory to initialise chnrfd table."
msgstr ""
-#: OOps/remote.c:153
+#: OOps/remote.c:156
msgid "insufficient memory to initialise local ip address."
msgstr ""
-#: OOps/remote.c:161
+#: OOps/remote.c:164
msgid "unable to get local ip address."
msgstr ""
-#: OOps/remote.c:222
+#: OOps/remote.c:225
msgid "could not open remote port"
msgstr ""
-#: OOps/remote.c:237
+#: OOps/remote.c:240
msgid "---> Could not connect \n"
msgstr ""
-#: OOps/remote.c:241
+#: OOps/remote.c:244
msgid "---> Failed all attempts to connect. \n"
msgstr ""
-#: OOps/remote.c:244
+#: OOps/remote.c:247
msgid "---> Connected. \n"
msgstr ""
-#: OOps/remote.c:258 Opcodes/socksend.c:232
+#: OOps/remote.c:261 Opcodes/socksend.c:305
msgid "write to socket failed"
msgstr ""
-#: OOps/remote.c:278
+#: OOps/remote.c:281
msgid "creating socket\n"
msgstr ""
-#: OOps/remote.c:280
+#: OOps/remote.c:283
msgid "created socket \n"
msgstr ""
-#: OOps/remote.c:292
+#: OOps/remote.c:295
msgid "setting socket option to reuse the addresse \n"
msgstr ""
-#: OOps/remote.c:309 Opcodes/sockrecv.c:133 Opcodes/sockrecv.c:223
-#: Opcodes/socksend.c:211
+#: OOps/remote.c:312 Opcodes/sockrecv.c:141 Opcodes/sockrecv.c:237
+#: Opcodes/socksend.c:284
msgid "bind failed"
msgstr ""
-#: OOps/remote.c:313 Opcodes/socksend.c:216
+#: OOps/remote.c:316 Opcodes/socksend.c:289
msgid "listen failed"
msgstr ""
-#: OOps/remote.c:318 Opcodes/socksend.c:222
+#: OOps/remote.c:321 Opcodes/socksend.c:295
msgid "accept failed"
msgstr ""
-#: OOps/remote.c:321
+#: OOps/remote.c:324
#, c-format
msgid "accepted, conn=%d \n"
msgstr ""
-#: OOps/remote.c:353 OOps/remote.c:374 OOps/remote.c:417 OOps/remote.c:449
-#: OOps/remote.c:489
+#: OOps/remote.c:356 OOps/remote.c:377 OOps/remote.c:420 OOps/remote.c:452
+#: OOps/remote.c:492
msgid "failed to initialise remote globals."
msgstr ""
-#: OOps/remote.c:378 OOps/remote.c:421
+#: OOps/remote.c:381 OOps/remote.c:424
msgid "missing instr nos"
msgstr ""
-#: OOps/remote.c:390 OOps/remote.c:430
+#: OOps/remote.c:393 OOps/remote.c:433
msgid "illegal instr no"
msgstr ""
-#: OOps/remote.c:393
+#: OOps/remote.c:396
msgid "insno already remote"
msgstr ""
-#: OOps/remote.c:403 OOps/remote.c:474
+#: OOps/remote.c:406 OOps/remote.c:477
msgid "Failed to open port to listen"
msgstr ""
-#: OOps/remote.c:423
+#: OOps/remote.c:426
#, c-format
msgid "*** str1: %s own:%s\n"
msgstr ""
-#: OOps/remote.c:433
+#: OOps/remote.c:436
msgid "insno already specific remote"
msgstr ""
-#: OOps/remote.c:453 OOps/remote.c:493
+#: OOps/remote.c:456 OOps/remote.c:496
msgid "missing channel nos"
msgstr ""
-#: OOps/remote.c:463 OOps/remote.c:502
+#: OOps/remote.c:466 OOps/remote.c:505
msgid "illegal channel no"
msgstr ""
-#: OOps/remote.c:466
+#: OOps/remote.c:469
msgid "channel already remote"
msgstr ""
-#: OOps/remote.c:505
+#: OOps/remote.c:508
msgid "channel already specific remote"
msgstr ""
-#: OOps/remote.c:531 OOps/remote.c:555 OOps/remote.c:579
+#: OOps/remote.c:534 OOps/remote.c:558 OOps/remote.c:582
msgid "CLsend failed"
msgstr ""
-#: OOps/remote.c:645 OOps/remote.c:653 OOps/remote.c:661 OOps/remote.c:669
-#: OOps/remote.c:677
+#: OOps/remote.c:648 OOps/remote.c:656 OOps/remote.c:664 OOps/remote.c:672
+#: OOps/remote.c:680
msgid ""
"*** This version of Csound was not compiled with remote event support ***\n"
msgstr ""
@@ -5058,53 +4810,53 @@ msgstr "linseg non inizializzato (krate)\n"
msgid "linseg: not initialised (arate)\n"
msgstr "linseg: non inizializzato (arate)\n"
-#: OOps/ugens1.c:463 OOps/ugens1.c:465 OOps/ugens1.c:512 OOps/ugens1.c:514
-#: OOps/ugens1.c:564 OOps/ugens1.c:566 OOps/ugens1.c:610 OOps/ugens1.c:612
-#: OOps/ugens1.c:774 OOps/ugens1.c:776
+#: OOps/ugens1.c:464 OOps/ugens1.c:466 OOps/ugens1.c:513 OOps/ugens1.c:515
+#: OOps/ugens1.c:565 OOps/ugens1.c:567 OOps/ugens1.c:611 OOps/ugens1.c:613
+#: OOps/ugens1.c:775 OOps/ugens1.c:777
#, c-format
msgid "ival%d is zero"
msgstr ""
-#: OOps/ugens1.c:466 OOps/ugens1.c:515 OOps/ugens1.c:567 OOps/ugens1.c:613
-#: OOps/ugens1.c:777
+#: OOps/ugens1.c:467 OOps/ugens1.c:516 OOps/ugens1.c:568 OOps/ugens1.c:614
+#: OOps/ugens1.c:778
#, c-format
msgid "ival%d sign conflict"
msgstr ""
-#: OOps/ugens1.c:495 OOps/ugens1.c:544
+#: OOps/ugens1.c:496 OOps/ugens1.c:545
#, c-format
msgid "Breakpoint time %f not valid"
msgstr ""
-#: OOps/ugens1.c:706
+#: OOps/ugens1.c:707
msgid "expseg (krate): not initialised"
msgstr "expseg (krate): non inizializzato"
-#: OOps/ugens1.c:732
+#: OOps/ugens1.c:733
msgid "expseg (arate): not initialised"
msgstr "expseg (arate): non inizializzato"
-#: OOps/ugens1.c:1013 OOps/ugens1.c:1149 OOps/ugens1.c:1311
+#: OOps/ugens1.c:1014 OOps/ugens1.c:1150 OOps/ugens1.c:1312
msgid "non-positive iatdec"
msgstr ""
-#: OOps/ugens1.c:1106 OOps/ugens1.c:1273
+#: OOps/ugens1.c:1107 OOps/ugens1.c:1274
msgid "ixmod out of range."
msgstr ""
-#: OOps/ugens1.c:1134 OOps/ugens1.c:1301
+#: OOps/ugens1.c:1135 OOps/ugens1.c:1302
msgid "rise func ends with zero"
msgstr ""
-#: OOps/ugens1.c:1178 OOps/ugens1.c:1257
+#: OOps/ugens1.c:1179 OOps/ugens1.c:1258
msgid "envlpx rise func ends with zero"
msgstr ""
-#: OOps/ugens1.c:1199 OOps/ugens1.c:1254
+#: OOps/ugens1.c:1200 OOps/ugens1.c:1255
msgid "envlpx(krate): not initialised"
msgstr "envlpx(krate): non inizializzato"
-#: OOps/ugens2.c:48 OOps/ugens2.c:61 Opcodes/shape.c:377
+#: OOps/ugens2.c:48 OOps/ugens2.c:61 Opcodes/shape.c:379
msgid "init phase truncation\n"
msgstr ""
@@ -5168,8 +4920,8 @@ msgid "oscil(krate): not initialised"
msgstr "oscil(krate): non inizializzato"
#: OOps/ugens2.c:1139 OOps/ugens2.c:1167 OOps/ugens2.c:1192 OOps/ugens2.c:1219
-#: Opcodes/pitch.c:1579 Opcodes/pitch.c:1606 Opcodes/pitch.c:1633
-#: Opcodes/pitch.c:1662
+#: Opcodes/pitch.c:1580 Opcodes/pitch.c:1607 Opcodes/pitch.c:1634
+#: Opcodes/pitch.c:1663
msgid "oscil: not initialised"
msgstr "oscil: non inizializzato"
@@ -5285,7 +5037,7 @@ msgstr ""
msgid "Seeding from current time %lu\n"
msgstr ""
-#: OOps/ugens5.c:198 OOps/ugens5.c:260 Opcodes/gab/gab.c:45 Opcodes/ugsc.c:188
+#: OOps/ugens5.c:198 OOps/ugens5.c:260 Opcodes/gab/gab.c:47 Opcodes/ugsc.c:186
#, c-format
msgid "illegal reson iscl value, %f"
msgstr ""
@@ -5517,8 +5269,8 @@ msgstr ""
msgid "Table no. < 1 dft=%.2f sft=%.2f"
msgstr ""
-#: OOps/ugrw1.c:1781 OOps/ugrw1.c:1822 Opcodes/fareyseq.c:455
-#: Opcodes/fareyseq.c:477
+#: OOps/ugrw1.c:1781 OOps/ugrw1.c:1822 Opcodes/fareyseq.c:453
+#: Opcodes/fareyseq.c:475
#, c-format
msgid "Source sft table %.2f not found."
msgstr ""
@@ -5748,19 +5500,19 @@ msgstr ""
msgid "reverbx: not initialised"
msgstr "reverbx: non inizializzato"
-#: Opcodes/ambicode1.c:80
+#: Opcodes/ambicode1.c:82
msgid "The numbers of input and output arguments are not valid."
msgstr ""
-#: Opcodes/ambicode1.c:163
+#: Opcodes/ambicode1.c:165
msgid "The number of input arguments is not valid."
msgstr ""
-#: Opcodes/ambicode1.c:167
+#: Opcodes/ambicode1.c:169
msgid "The isetup value should be between 1 and 5."
msgstr ""
-#: Opcodes/ambicode1.c:193
+#: Opcodes/ambicode1.c:195
msgid "The output channel count does not match the isetup value."
msgstr ""
@@ -5800,16 +5552,16 @@ msgstr ""
msgid "Not supported setup number!"
msgstr ""
-#: Opcodes/babo.c:740
+#: Opcodes/babo.c:742
#, c-format
msgid "Babo: resonator dimensions are incorrect (%.1f, %.1f, %.1f)"
msgstr ""
-#: Opcodes/bilbar.c:82
+#: Opcodes/bilbar.c:83
msgid "No data to continue"
msgstr ""
-#: Opcodes/bilbar.c:108
+#: Opcodes/bilbar.c:109
msgid "Ends must be clamped(1), pivoting(2) or free(3)"
msgstr ""
@@ -5822,8 +5574,8 @@ msgstr "vco: non inizializzato"
msgid "DLineN: Delay length too big ... setting to maximum length of %ld.\n"
msgstr ""
-#: Opcodes/bowedbar.c:98 Opcodes/physmod.c:489
-msgid "unknown lowest frequency for bowed string -- assuming 50Hz\n"
+#: Opcodes/bowedbar.c:98
+msgid "unknown lowest frequency for bowed bar -- assuming 50Hz\n"
msgstr ""
#: Opcodes/clfilt.c:53
@@ -5901,17 +5653,17 @@ msgstr ""
msgid "Unknown control %d"
msgstr ""
-#: Opcodes/cpumeter.c:73
+#: Opcodes/cpumeter.c:77
#, fuzzy, c-format
msgid "Failed to open /proc/stat: %s"
msgstr "non riesco ad aprire il file pvocex %s: %s"
-#: Opcodes/cpumeter.c:75 Opcodes/cpumeter.c:80 Opcodes/cpumeter.c:107
-#: Opcodes/cpumeter.c:147
+#: Opcodes/cpumeter.c:79 Opcodes/cpumeter.c:84 Opcodes/cpumeter.c:111
+#: Opcodes/cpumeter.c:151
msgid "failed /proc/stat read"
msgstr ""
-#: Opcodes/crossfm.c:33
+#: Opcodes/crossfm.c:34
#, fuzzy
msgid "crossfm: ftable not found"
msgstr "GEN30: source ftable non trovata"
@@ -5954,31 +5706,31 @@ msgstr ""
msgid "insufficient arguments for fareytable"
msgstr "argomenti insufficienti"
-#: Opcodes/fareyseq.c:250 Opcodes/fareyseq.c:300
+#: Opcodes/fareyseq.c:251 Opcodes/fareyseq.c:301
#, c-format
msgid "Farey: Table no. < 1 dft=%.2f sft=%.2f"
msgstr ""
-#: Opcodes/fareyseq.c:255
+#: Opcodes/fareyseq.c:256
#, c-format
msgid "Farey: Filter type < 1 dft=%.2f sft=%.2f"
msgstr ""
-#: Opcodes/fareyseq.c:270 Opcodes/fareyseq.c:318
+#: Opcodes/fareyseq.c:271 Opcodes/fareyseq.c:319
#, c-format
msgid "Farey: Destination dft table %.2f not found."
msgstr ""
-#: Opcodes/fareyseq.c:281 Opcodes/fareyseq.c:329
+#: Opcodes/fareyseq.c:282 Opcodes/fareyseq.c:330
#, fuzzy, c-format
msgid "Farey: Source sft table %.2f not found."
msgstr "GEN32: source ftable %d non trovata"
-#: Opcodes/fareyseq.c:305
+#: Opcodes/fareyseq.c:306
msgid "Farey: Filter type < 1"
msgstr ""
-#: Opcodes/fareyseq.c:447 Opcodes/fareyseq.c:468
+#: Opcodes/fareyseq.c:445 Opcodes/fareyseq.c:466
#, c-format
msgid "Table no. < 1 sft=%.2f"
msgstr ""
@@ -6086,45 +5838,45 @@ msgstr ""
msgid "follow - zero length!"
msgstr ""
-#: Opcodes/fout.c:59
+#: Opcodes/fout.c:60
#, c-format
msgid "Closing file '%s'...\n"
msgstr ""
-#: Opcodes/fout.c:101
+#: Opcodes/fout.c:102
msgid "invalid file handle"
msgstr ""
-#: Opcodes/fout.c:108 Opcodes/fout.c:420
+#: Opcodes/fout.c:109 Opcodes/fout.c:421
msgid "invalid file name"
msgstr ""
-#: Opcodes/fout.c:165
+#: Opcodes/fout.c:166
#, c-format
msgid "error opening file '%s'"
msgstr ""
-#: Opcodes/fout.c:192
+#: Opcodes/fout.c:193
#, c-format
msgid "error opening sound file '%s'"
msgstr ""
-#: Opcodes/fout.c:429
+#: Opcodes/fout.c:430
#, c-format
msgid "cannot close '%s': not found in list of open files"
msgstr ""
-#: Opcodes/fout.c:440
+#: Opcodes/fout.c:441
#, c-format
msgid "cannot close file #%d: not a valid handle"
msgstr ""
-#: Opcodes/fout.c:447
+#: Opcodes/fout.c:448
#, c-format
msgid "file #%d (%s) is in use, will be closed when released"
msgstr ""
-#: Opcodes/fout.c:476 Opcodes/fout.c:479 Opcodes/fout.c:550 Opcodes/fout.c:553
+#: Opcodes/fout.c:477 Opcodes/fout.c:480 Opcodes/fout.c:551 Opcodes/fout.c:554
msgid "fouti: invalid file handle"
msgstr ""
@@ -6202,555 +5954,705 @@ msgstr ""
msgid "ftsave: failed to write file"
msgstr ""
-#: Opcodes/gab/gab.c:109
+#: Opcodes/gab/gab.c:111
msgid "fastab: incorrect table number"
msgstr ""
-#: Opcodes/gab/gab.c:132 Opcodes/gab/gab.c:141 Opcodes/gab/gab.c:171
+#: Opcodes/gab/gab.c:134 Opcodes/gab/gab.c:143 Opcodes/gab/gab.c:173
msgid "tabw off end"
msgstr ""
-#: Opcodes/gab/gab.c:157 Opcodes/gab/gab.c:225 Opcodes/gab/gab.c:234
+#: Opcodes/gab/gab.c:159 Opcodes/gab/gab.c:227 Opcodes/gab/gab.c:236
msgid "tab off end"
msgstr ""
-#: Opcodes/gab/gab.c:183
+#: Opcodes/gab/gab.c:185
msgid "tab_i: incorrect table number"
msgstr ""
-#: Opcodes/gab/gab.c:190
-msgid "tab_i off end"
+#: Opcodes/gab/gab.c:192
+#, c-format
+msgid "tab_i off end: table number: %d\n"
msgstr ""
-#: Opcodes/gab/gab.c:202
+#: Opcodes/gab/gab.c:204
msgid "tabw_i: incorrect table number"
msgstr ""
-#: Opcodes/gab/gab.c:209
+#: Opcodes/gab/gab.c:211
msgid "tabw_i off end"
msgstr ""
-#: Opcodes/gab/gab.c:247
+#: Opcodes/gab/gab.c:249
msgid "tab_init: incorrect table number"
msgstr ""
-#: Opcodes/gab/gab.c:316
+#: Opcodes/gab/gab.c:318
msgid "printi parameter was not a \"quoted string\""
msgstr ""
-#: Opcodes/gab/gab.c:423
+#: Opcodes/gab/gab.c:425
msgid "adsynt2: wavetable not found!"
msgstr ""
-#: Opcodes/gab/gab.c:435
+#: Opcodes/gab/gab.c:437
msgid "adsynt2: freqtable not found!"
msgstr ""
-#: Opcodes/gab/gab.c:440
+#: Opcodes/gab/gab.c:442
msgid "adsynt2: partial count is greater than freqtable size!"
msgstr ""
-#: Opcodes/gab/gab.c:449
+#: Opcodes/gab/gab.c:451
msgid "adsynt2: amptable not found!"
msgstr ""
-#: Opcodes/gab/gab.c:454
+#: Opcodes/gab/gab.c:456
msgid "adsynt2: partial count is greater than amptable size!"
msgstr ""
-#: Opcodes/gab/gab.c:499
+#: Opcodes/gab/gab.c:501
#, fuzzy
msgid "adsynt2: not initialised"
msgstr "adsynt: non inizializzato"
-#: Opcodes/gab/gab.c:741
+#: Opcodes/gab/gab.c:743
msgid "max_k: invalid imaxflag value"
msgstr ""
-#: Opcodes/gab/hvs.c:68
+#: Opcodes/gab/hvs.c:70
msgid "hvs1: a line segment must be delimited by 2 points at least"
msgstr ""
-#: Opcodes/gab/hvs.c:150
+#: Opcodes/gab/hvs.c:152
msgid "hvs2: a square area must be delimited by 2 lines at least"
msgstr ""
-#: Opcodes/gab/hvs.c:246
+#: Opcodes/gab/hvs.c:248
msgid "hvs3: a square area must be delimited by 2 lines at least"
msgstr ""
-#: Opcodes/gab/hvs.c:389
+#: Opcodes/gab/hvs.c:390
msgid "vphaseseg: the first function is invalid or missing"
msgstr ""
-#: Opcodes/gab/hvs.c:396
+#: Opcodes/gab/hvs.c:398 Opcodes/gab/vectorial.c:2301
msgid "vphaseseg: invalid num. of elements"
msgstr ""
-#: Opcodes/gab/hvs.c:414
+#: Opcodes/gab/hvs.c:416
msgid "vphaseseg: function invalid or missing"
msgstr ""
-#: Opcodes/gab/newgabopc.c:39 Opcodes/gab/newgabopc.c:54
+#: Opcodes/gab/newgabopc.c:40 Opcodes/gab/newgabopc.c:55
msgid "vtable1: incorrect table number"
msgstr ""
-#: Opcodes/gab/newgabopc.c:359
+#: Opcodes/gab/newgabopc.c:241 Opcodes/gab/newgabopc.c:296
+msgid "copyTabElems: incorrect destination table number"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:246 Opcodes/gab/newgabopc.c:301
+msgid ""
+"copyTabElems: destination table too short or number of elements to copy too "
+"big"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:252 Opcodes/gab/newgabopc.c:306
+#, fuzzy
+msgid "copyTabElems: incorrect source table number"
+msgstr "GEN53: numero di source table non valido"
+
+#: Opcodes/gab/newgabopc.c:257 Opcodes/gab/newgabopc.c:310
+msgid ""
+"copyTabElems: source table size less than the number of elements to copy"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:273 Opcodes/gab/newgabopc.c:318
+msgid "copyTabElems: source table too short"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:276 Opcodes/gab/newgabopc.c:321
+msgid "copyTabElems: destination table too short"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:347
+msgid "inrg: audio input is not enabled"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:362
msgid "inrg: channel number cannot be < 1 (1 is the first channel)"
msgstr ""
-#: Opcodes/gab/newgabopc.c:400
+#: Opcodes/gab/newgabopc.c:403
msgid "outrg: channel number cannot be < 1 (1 is the first channel)"
msgstr ""
-#: Opcodes/gab/newgabopc.c:439 Opcodes/gab/newgabopc.c:671
+#: Opcodes/gab/newgabopc.c:440 Opcodes/gab/newgabopc.c:574
+#: Opcodes/gab/newgabopc.c:672
msgid "invalid function"
msgstr ""
-#: Opcodes/gab/newgabopc.c:442
+#: Opcodes/gab/newgabopc.c:443
msgid "lposc: no sample rate stored in function; assuming=sr\n"
msgstr ""
-#: Opcodes/gab/newgabopc.c:673
+#: Opcodes/gab/newgabopc.c:577
+msgid "lposcil: no sample rate stored in function assuming=sr\n"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:674
msgid "lposcil: no sample rate stored in function; assuming=sr\n"
msgstr ""
-#: Opcodes/gab/sliderTable.c:45 Opcodes/gab/sliderTable.c:254
+#: Opcodes/gab/sliderTable.c:47 Opcodes/gab/sliderTable.c:256
#: Opcodes/midiops3.c:44 Opcodes/midiops3.c:146 Opcodes/midiops3.c:259
#: Opcodes/midiops3.c:317 Opcodes/midiops3.c:413
msgid "illegal channel"
msgstr ""
-#: Opcodes/gab/sliderTable.c:65 Opcodes/gab/sliderTable.c:277
+#: Opcodes/gab/sliderTable.c:67 Opcodes/gab/sliderTable.c:280
#: Opcodes/midiops3.c:58 Opcodes/midiops3.c:162 Opcodes/midiops3.c:273
#, c-format
msgid "illegal control number at position n.%d"
msgstr ""
-#: Opcodes/gab/sliderTable.c:74
+#: Opcodes/gab/sliderTable.c:76
#, c-format
msgid ""
"sliderXtable: illegal initvalue at position %d. When using table indexing, "
"the init range is 0 to 1"
msgstr ""
-#: Opcodes/gab/sliderTable.c:84 Opcodes/gab/sliderTable.c:284
-#: Opcodes/gab/sliderTable.c:509 Opcodes/midiops3.c:64 Opcodes/midiops3.c:168
+#: Opcodes/gab/sliderTable.c:86 Opcodes/gab/sliderTable.c:287
+#: Opcodes/gab/sliderTable.c:513 Opcodes/midiops3.c:64 Opcodes/midiops3.c:168
#: Opcodes/midiops3.c:347
#, c-format
msgid "illegal initvalue at position n.%d"
msgstr ""
-#: Opcodes/gab/sliderTable.c:96 Opcodes/gab/sliderTable.c:296
+#: Opcodes/gab/sliderTable.c:98 Opcodes/gab/sliderTable.c:299
msgid "sliderXtable: zero is illegal in exponential operations"
msgstr ""
-#: Opcodes/gab/sliderTable.c:312
+#: Opcodes/gab/sliderTable.c:315
#, c-format
msgid ""
"sliderXtable: illegal initvalue at position %d. When using table indexing, "
"the init range is 0 to 1"
msgstr ""
-#: Opcodes/gab/sliderTable.c:565 Opcodes/midiops2.c:321 Opcodes/midiops2.c:359
+#: Opcodes/gab/sliderTable.c:569 Opcodes/midiops2.c:321 Opcodes/midiops2.c:359
#: Opcodes/midiops2.c:391 Opcodes/midiops2.c:440 Opcodes/midiops2.c:475
#: Opcodes/midiops2.c:517 Opcodes/midiops2.c:532 Opcodes/midiops2.c:551
msgid "illegal midi channel"
msgstr ""
-#: Opcodes/gab/tabmorph.c:42
+#: Opcodes/gab/tabmorph.c:43
msgid "tabmorph: invalid table number"
msgstr ""
-#: Opcodes/gab/tabmorph.c:46
+#: Opcodes/gab/tabmorph.c:47
msgid "tabmorph: all tables must have the same length!"
msgstr ""
-#: Opcodes/gab/vectorial.c:33
+#: Opcodes/gab/vectorial.c:35
msgid "mtablei: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:63 Opcodes/gab/vectorial.c:83
-#: Opcodes/gab/vectorial.c:133 Opcodes/gab/vectorial.c:200
+#: Opcodes/gab/vectorial.c:65 Opcodes/gab/vectorial.c:85
+#: Opcodes/gab/vectorial.c:135 Opcodes/gab/vectorial.c:202
msgid "mtable: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:185
+#: Opcodes/gab/vectorial.c:187
msgid "mtabi: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:252
+#: Opcodes/gab/vectorial.c:254
msgid "mtablewi: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:268 Opcodes/gab/vectorial.c:288
-#: Opcodes/gab/vectorial.c:317 Opcodes/gab/vectorial.c:362
-#: Opcodes/gab/vectorial.c:406
+#: Opcodes/gab/vectorial.c:270 Opcodes/gab/vectorial.c:290
+#: Opcodes/gab/vectorial.c:319 Opcodes/gab/vectorial.c:364
+#: Opcodes/gab/vectorial.c:408
msgid "mtabw: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:348
+#: Opcodes/gab/vectorial.c:350
msgid "mtabwi: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:380
+#: Opcodes/gab/vectorial.c:382
msgid "mtablew: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:454 Opcodes/gab/vectorial.c:513
+#: Opcodes/gab/vectorial.c:457 Opcodes/gab/vectorial.c:516
#, c-format
msgid "vadd_i: invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:470
+#: Opcodes/gab/vectorial.c:473
msgid "vadd_i: ifn length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:497
+#: Opcodes/gab/vectorial.c:500
msgid "vadd: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:529
+#: Opcodes/gab/vectorial.c:532
msgid "vmult_i: ifn length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:556
+#: Opcodes/gab/vectorial.c:559
msgid "vmult: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:572
+#: Opcodes/gab/vectorial.c:575
#, c-format
msgid "vpow_i: invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:589
+#: Opcodes/gab/vectorial.c:592
msgid "vpow_i: ifn length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:617
+#: Opcodes/gab/vectorial.c:620
msgid "vpow: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:633
+#: Opcodes/gab/vectorial.c:636
#, c-format
msgid "vexp_i: invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:649
+#: Opcodes/gab/vectorial.c:652
msgid "vexp_i: ifn length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:676
+#: Opcodes/gab/vectorial.c:679
msgid "vexp: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:694
+#: Opcodes/gab/vectorial.c:697
#, c-format
msgid "vectorsop: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:699
+#: Opcodes/gab/vectorial.c:702
#, c-format
msgid "vectorsop: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:738
+#: Opcodes/gab/vectorial.c:742
msgid "vcopy: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:756
+#: Opcodes/gab/vectorial.c:760
msgid "vcopy: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:783
+#: Opcodes/gab/vectorial.c:787
#, c-format
msgid "vcopy_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:788
+#: Opcodes/gab/vectorial.c:792
#, c-format
msgid "vcopy_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:810
+#: Opcodes/gab/vectorial.c:814
msgid "vcopy_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:827
+#: Opcodes/gab/vectorial.c:831
msgid "vcopy_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:866
+#: Opcodes/gab/vectorial.c:870
msgid "vaddv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:885
+#: Opcodes/gab/vectorial.c:889
msgid "vaddv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:911
+#: Opcodes/gab/vectorial.c:915
#, c-format
msgid "vaddv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:916
+#: Opcodes/gab/vectorial.c:920
#, c-format
msgid "vaddv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:938
+#: Opcodes/gab/vectorial.c:942
msgid "vaddv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:956
+#: Opcodes/gab/vectorial.c:960
msgid "vaddv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:987
+#: Opcodes/gab/vectorial.c:991
msgid "vsubv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1006
+#: Opcodes/gab/vectorial.c:1010
msgid "vsubv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1033
+#: Opcodes/gab/vectorial.c:1037
#, c-format
msgid "vsubv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1038
+#: Opcodes/gab/vectorial.c:1042
#, c-format
msgid "vsubv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1060
+#: Opcodes/gab/vectorial.c:1064
msgid "vsubv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1078
+#: Opcodes/gab/vectorial.c:1082
msgid "vsubv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1115
+#: Opcodes/gab/vectorial.c:1119
msgid "vmultv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1134
+#: Opcodes/gab/vectorial.c:1138
msgid "vmultv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1161
+#: Opcodes/gab/vectorial.c:1165
#, c-format
msgid "vmultv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1166
+#: Opcodes/gab/vectorial.c:1170
#, c-format
msgid "vmultv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1188
+#: Opcodes/gab/vectorial.c:1192
msgid "vmultv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1205
+#: Opcodes/gab/vectorial.c:1209
msgid "vmultv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1242
+#: Opcodes/gab/vectorial.c:1246
msgid "vdivv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1261
+#: Opcodes/gab/vectorial.c:1265
msgid "vdivv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1288
+#: Opcodes/gab/vectorial.c:1292
#, c-format
msgid "vdivv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1293
+#: Opcodes/gab/vectorial.c:1297
#, c-format
msgid "vdivv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1315
+#: Opcodes/gab/vectorial.c:1319
msgid "vdivv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1333
+#: Opcodes/gab/vectorial.c:1337
msgid "vdivv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1370
+#: Opcodes/gab/vectorial.c:1374
msgid "vpowv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1389
+#: Opcodes/gab/vectorial.c:1393
msgid "vpowv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1416
+#: Opcodes/gab/vectorial.c:1420
#, c-format
msgid "vpowv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1421
+#: Opcodes/gab/vectorial.c:1425
#, c-format
msgid "vpowv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1443
+#: Opcodes/gab/vectorial.c:1447
msgid "vpowv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1460
+#: Opcodes/gab/vectorial.c:1464
msgid "vpowv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1497
+#: Opcodes/gab/vectorial.c:1501
msgid "vexpv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1516
+#: Opcodes/gab/vectorial.c:1520
msgid "vexpv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1543
+#: Opcodes/gab/vectorial.c:1547
#, c-format
msgid "vexpv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1548
+#: Opcodes/gab/vectorial.c:1552
#, c-format
msgid "vexpv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1570
+#: Opcodes/gab/vectorial.c:1574
msgid "vexpv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1588
+#: Opcodes/gab/vectorial.c:1592
msgid "vexpv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1625
+#: Opcodes/gab/vectorial.c:1629
msgid "vmap: Error: ifn1 and ifn2 can not be the same"
msgstr ""
-#: Opcodes/gab/vectorial.c:1630
+#: Opcodes/gab/vectorial.c:1634
#, c-format
msgid "vmap: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1635
+#: Opcodes/gab/vectorial.c:1639
#, c-format
msgid "vmap: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1657
+#: Opcodes/gab/vectorial.c:1661
msgid "vmap: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1674
+#: Opcodes/gab/vectorial.c:1678
msgid "vmap: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1870
+#: Opcodes/gab/vectorial.c:1698
+#, fuzzy
+msgid "vectorop: invalid num of elements"
+msgstr "numero errato di discussioni ftable"
+
+#: Opcodes/gab/vectorial.c:1727
+#, fuzzy
+msgid "vport: invalid table length or num of elements"
+msgstr "GEN53: lunghezza della tavola non valida"
+
+#: Opcodes/gab/vectorial.c:1730
+#, fuzzy
+msgid "vport: invalid table"
+msgstr "soundin: skip time non valido"
+
+#: Opcodes/gab/vectorial.c:1735
+msgid "vport: invalid init table length or num of elements"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1738
+#, fuzzy
+msgid "vport: invalid init table"
+msgstr "soundin: skip time non valido"
+
+#: Opcodes/gab/vectorial.c:1875
#, c-format
msgid "vrandh: Seeding from current time %lu\n"
msgstr ""
-#: Opcodes/gab/vectorial.c:1968
+#: Opcodes/gab/vectorial.c:1888
+#, fuzzy
+msgid "vrandh: Invalid table."
+msgstr "ftable num. %f non valida"
+
+#: Opcodes/gab/vectorial.c:1891
+msgid "vrandh: idstoffset is greater than table length."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1896
+msgid "randh: Table length exceeded, last elements discarded."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1975
#, c-format
msgid "vrandi: Seeding from current time %lu\n"
msgstr ""
-#: Opcodes/grain4.c:57
+#: Opcodes/gab/vectorial.c:1987
+#, fuzzy
+msgid "vrandi: Invalid table."
+msgstr "ftable num. %f non valida"
+
+#: Opcodes/gab/vectorial.c:1990
+msgid "vrandi: idstoffset is greater thantable length."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1995
+msgid "vrandi: Table length exceeded, last elements discarded."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2077 Opcodes/gab/vectorial.c:2084
+#: Opcodes/gab/vectorial.c:2091
+#, fuzzy
+msgid "vecdelay: invalid num of elements"
+msgstr "numero errato di discussioni ftable"
+
+#: Opcodes/gab/vectorial.c:2079
+#, fuzzy
+msgid "vecdly: invalid output table"
+msgstr "GEN53: window table non valida"
+
+#: Opcodes/gab/vectorial.c:2086
+#, fuzzy
+msgid "vecdly: invalid input table"
+msgstr "GEN53: window table non valida"
+
+#: Opcodes/gab/vectorial.c:2093
+#, fuzzy
+msgid "vecdly: invalid delay table"
+msgstr "GEN53: window table non valida"
+
+#: Opcodes/gab/vectorial.c:2138
+#, fuzzy
+msgid "vecdly: not initialised"
+msgstr "vdelay: non inizializzato"
+
+#: Opcodes/gab/vectorial.c:2181
+msgid "vlinseg/vexpseg: invalid num. of elements"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2223 Opcodes/vpvoc.c:118
+msgid "tableseg: not initialised"
+msgstr "tableseg: non inizializzato"
+
+#: Opcodes/gab/vectorial.c:2253 Opcodes/vpvoc.c:146
+msgid "tablexseg: not initialised"
+msgstr "tablexseg: non inizializzato"
+
+#: Opcodes/gab/vectorial.c:2406
+#, fuzzy
+msgid "vdelayk: not initialised"
+msgstr "delayk: non inizializzato"
+
+#: Opcodes/gab/vectorial.c:2439 Opcodes/gab/vectorial.c:2445
+#, fuzzy
+msgid "cella: invalid num of elements"
+msgstr "numero errato di discussioni ftable"
+
+#: Opcodes/gab/vectorial.c:2441
+#, fuzzy
+msgid "cella: invalid output table"
+msgstr "GEN53: window table non valida"
+
+#: Opcodes/gab/vectorial.c:2448
+msgid "cella: invalid initial state table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2452
+#, fuzzy
+msgid "cella: invalid rule table"
+msgstr "GEN53: window table non valida"
+
+#: Opcodes/grain4.c:59
msgid "granule_set: Unable to find function table"
msgstr ""
-#: Opcodes/grain4.c:67
+#: Opcodes/grain4.c:69
msgid "granule_set: Unable to find function table for envelope"
msgstr ""
-#: Opcodes/grain4.c:73
+#: Opcodes/grain4.c:75
msgid "granule_set: Too many voices"
msgstr ""
-#: Opcodes/grain4.c:76
+#: Opcodes/grain4.c:78
msgid "granule_set: iratio must be greater then 0"
msgstr ""
-#: Opcodes/grain4.c:80
+#: Opcodes/grain4.c:82
msgid "granule_set: imode must be -1, 0 or +1"
msgstr ""
-#: Opcodes/grain4.c:84
+#: Opcodes/grain4.c:86
msgid "granule_set: Illegal ithd, must be greater than zero"
msgstr ""
-#: Opcodes/grain4.c:89
+#: Opcodes/grain4.c:91
msgid "granule_set: ipshift must be integer between 0 and 4"
msgstr ""
-#: Opcodes/grain4.c:94
+#: Opcodes/grain4.c:96
msgid "granule_set: Not enough voices for the number of pitches"
msgstr ""
-#: Opcodes/grain4.c:101
+#: Opcodes/grain4.c:103
msgid "granule_set: ipitch1 must be greater then zero"
msgstr ""
-#: Opcodes/grain4.c:106
+#: Opcodes/grain4.c:108
msgid "granule_set: ipitch2 must be greater then zero"
msgstr ""
-#: Opcodes/grain4.c:111
+#: Opcodes/grain4.c:113
msgid "granule_set: ipitch3 must be greater then zero"
msgstr ""
-#: Opcodes/grain4.c:116
+#: Opcodes/grain4.c:118
msgid "granule_set: ipitch4 must be greater then zero"
msgstr ""
-#: Opcodes/grain4.c:121
+#: Opcodes/grain4.c:123
msgid "granule_set: must be positive and less than function table length"
msgstr ""
-#: Opcodes/grain4.c:125
+#: Opcodes/grain4.c:127
msgid "granule_set: igskip_os must be greater then 0"
msgstr ""
-#: Opcodes/grain4.c:134
+#: Opcodes/grain4.c:136
msgid "granule_set: kgap must be greater then 0"
msgstr ""
-#: Opcodes/grain4.c:138
+#: Opcodes/grain4.c:140
#, c-format
msgid "granule_set: igap_os must be 0%% to 100%%"
msgstr ""
-#: Opcodes/grain4.c:142
+#: Opcodes/grain4.c:144
msgid "granule_set: kgsize must be greater then 0"
msgstr ""
-#: Opcodes/grain4.c:146
+#: Opcodes/grain4.c:148
#, c-format
msgid "granule_set: igsize_os must be 0%% to 100%%"
msgstr ""
-#: Opcodes/grain4.c:152
+#: Opcodes/grain4.c:154
msgid "granule_set: Illegal value of iatt and/or idec"
msgstr ""
-#: Opcodes/grain4.c:236
+#: Opcodes/grain4.c:238
msgid "granule_set: Illegal combination of igskip and ilength"
msgstr ""
-#: Opcodes/grain4.c:243
+#: Opcodes/grain4.c:245
#, c-format
msgid ""
"granule_set: WARNING * ilength may be too short * \n"
@@ -6760,7 +6662,7 @@ msgid ""
"ilength is %f Sec, kgsize is %f Sec\n"
msgstr ""
-#: Opcodes/grain4.c:418
+#: Opcodes/grain4.c:419
msgid "grain4: not initialised"
msgstr "grain4: non inizializzato"
@@ -6772,92 +6674,88 @@ msgstr ""
msgid "grain: not initialised"
msgstr "grain: non inizializzato"
-#: Opcodes/harmon.c:224
+#: Opcodes/harmon.c:226
msgid "harm signal has positive lead\n"
msgstr ""
-#: Opcodes/harmon.c:231
+#: Opcodes/harmon.c:233
msgid "harm signal has negative lead\n"
msgstr ""
-#: Opcodes/harmon.c:361
+#: Opcodes/harmon.c:363
msgid "harmon234: out of range\n"
msgstr ""
-#: Opcodes/hrtferX.c:79
+#: Opcodes/hrtferX.c:81
#, c-format
msgid ""
"Orchestra sampling rate is not compatible with HRTF.\n"
"Should be %d...exiting."
msgstr ""
-#: Opcodes/hrtferX.c:87
+#: Opcodes/hrtferX.c:89
msgid ""
"\n"
"Last argument must be the string 'HRTFcompact' ...correcting.\n"
msgstr ""
-#: Opcodes/hrtferX.c:489
+#: Opcodes/hrtferX.c:494
msgid "hrtfer: not initialised"
msgstr "hrtfer: non inizializzato"
-#: Opcodes/hrtfopcodes.c:232
+#: Opcodes/hrtfopcodes.c:260 Opcodes/hrtfopcodes.c:1434
+#: Opcodes/hrtfearly.c:300 Opcodes/hrtfreverb.c:257
#, c-format
msgid ""
"\n"
-"Orchestra sampling rate is not compatible with HRTF data files\n"
-"Should be %.0f, see Csound help for object\n"
+"\n"
+"WARNING!!:\n"
+"Orchestra SR not compatible with HRTF processing SR of: %.0f\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:251 Opcodes/hrtfopcodes.c:275
-#: Opcodes/hrtfopcodes.c:298 Opcodes/hrtfopcodes.c:1257
-#: Opcodes/hrtfopcodes.c:1280 Opcodes/hrtfopcodes.c:1303
-#: Opcodes/hrtfopcodes.c:1854 Opcodes/hrtfopcodes.c:1876
-#: Opcodes/hrtfopcodes.c:1898
+#: Opcodes/hrtfopcodes.c:287 Opcodes/hrtfopcodes.c:1461
+#: Opcodes/hrtfopcodes.c:2071 Opcodes/hrtfearly.c:327 Opcodes/hrtfreverb.c:300
msgid ""
"\n"
"\n"
"\n"
-"cannot load left data file, exiting\n"
+"Cannot load left data file, exiting\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:259 Opcodes/hrtfopcodes.c:283
-#: Opcodes/hrtfopcodes.c:306 Opcodes/hrtfopcodes.c:1265
-#: Opcodes/hrtfopcodes.c:1288 Opcodes/hrtfopcodes.c:1311
-#: Opcodes/hrtfopcodes.c:1862 Opcodes/hrtfopcodes.c:1884
-#: Opcodes/hrtfopcodes.c:1906
+#: Opcodes/hrtfopcodes.c:294 Opcodes/hrtfopcodes.c:1468
+#: Opcodes/hrtfopcodes.c:2078 Opcodes/hrtfearly.c:334 Opcodes/hrtfreverb.c:306
msgid ""
"\n"
"\n"
"\n"
-"cannot load right data file, exiting\n"
+"Cannot load right data file, exiting\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:313 Opcodes/hrtfopcodes.c:1912
+#: Opcodes/hrtfopcodes.c:690 Opcodes/hrtfearly.c:1241
msgid ""
"\n"
-"\n"
-"\n"
-" Sampling rate not supported, exiting\n"
+"WARNING: fades are overlapping: this could lead to noise: reduce fade size "
+"or change trajectory\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:600
+#: Opcodes/hrtfopcodes.c:2052
+#, c-format
msgid ""
-"fades are overlapping: this could lead to noise: reduce fade size or change "
-"trajectory\n"
+"\n"
+"\n"
+"WARNING!!:\n"
+"Orchestra SR not compatiblewith HRTF processing SR of: %.0f\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:1239 Opcodes/hrtfopcodes.c:1837
-#, c-format
+#: Opcodes/hrtfreverb.c:832
msgid ""
-"Orchestra sampling rate is not compatible with HRTF data files\n"
-"Should be %.0f, see Csound help for object\n"
"\n"
+"warning, approaching instability, fixed with a flat late reverb!"
msgstr ""
#: Opcodes/ifd.c:74
@@ -6883,10 +6781,9 @@ msgid "imageload: file %s is not in PNG format.\n"
msgstr ""
#: Opcodes/imageOpcodes.c:119 Opcodes/imageOpcodes.c:126
-#: Opcodes/imageOpcodes.c:134 Opcodes/imageOpcodes.c:165
-#: Opcodes/imageOpcodes.c:174 Opcodes/imageOpcodes.c:188
-#: Opcodes/imageOpcodes.c:291 Opcodes/imageOpcodes.c:298
-#: Opcodes/imageOpcodes.c:311
+#: Opcodes/imageOpcodes.c:165 Opcodes/imageOpcodes.c:174
+#: Opcodes/imageOpcodes.c:188 Opcodes/imageOpcodes.c:291
+#: Opcodes/imageOpcodes.c:298 Opcodes/imageOpcodes.c:311
msgid "imageload: out of memory.\n"
msgstr ""
@@ -6906,62 +6803,62 @@ msgid ""
"Status: %d\n"
msgstr ""
-#: Opcodes/jacko.cpp:543
+#: Opcodes/jacko.cpp:545
#, c-format
msgid "Created Jack client \"%s\" for Jack server \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:548
+#: Opcodes/jacko.cpp:551
#, c-format
msgid "Jack buffer size %d != Csound ksmps %d, exiting...\n"
msgstr ""
-#: Opcodes/jacko.cpp:556
+#: Opcodes/jacko.cpp:559
#, c-format
msgid "Jack sampling rate %d != Csound sr %d, exiting...\n"
msgstr ""
-#: Opcodes/jacko.cpp:567
+#: Opcodes/jacko.cpp:570
#, c-format
msgid "Activated Jack client \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:571
+#: Opcodes/jacko.cpp:574
#, c-format
msgid "Failed to activate Jack client \"%s\": status %d.\n"
msgstr ""
-#: Opcodes/jacko.cpp:586
+#: Opcodes/jacko.cpp:589
msgid "BEGAN JackoState::close()...\n"
msgstr ""
-#: Opcodes/jacko.cpp:622
+#: Opcodes/jacko.cpp:629
msgid "ENDED JackoState::close().\n"
msgstr ""
-#: Opcodes/jacko.cpp:876
+#: Opcodes/jacko.cpp:892
#, c-format
msgid "Failed to set Jack freewheeling mode to \"%s\": error %d.\n"
msgstr ""
-#: Opcodes/jacko.cpp:878
+#: Opcodes/jacko.cpp:895
#, c-format
msgid "Set Jack freewheeling mode to \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:893
+#: Opcodes/jacko.cpp:911
#, c-format
msgid "Turned Jack connections \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:934 Opcodes/jacko.cpp:1034 Opcodes/jacko.cpp:1134
-#: Opcodes/jacko.cpp:1200
+#: Opcodes/jacko.cpp:955 Opcodes/jacko.cpp:1062 Opcodes/jacko.cpp:1169
+#: Opcodes/jacko.cpp:1241
#, c-format
msgid "Could not create Jack port \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:946 Opcodes/jacko.cpp:1046 Opcodes/jacko.cpp:1146
-#: Opcodes/jacko.cpp:1212
+#: Opcodes/jacko.cpp:969 Opcodes/jacko.cpp:1077 Opcodes/jacko.cpp:1184
+#: Opcodes/jacko.cpp:1255
#, c-format
msgid "Could not create Jack connection from \"%s\" to \"%s\": status %d.\n"
msgstr ""
@@ -7000,27 +6897,27 @@ msgstr ""
msgid "lorisread cannot load %s"
msgstr ""
-#: Opcodes/loscilx.c:74 Opcodes/loscilx.c:178
+#: Opcodes/loscilx.c:76 Opcodes/loscilx.c:180
#, c-format
msgid "could not load '%s'"
msgstr ""
-#: Opcodes/loscilx.c:88 Opcodes/loscilx.c:258
+#: Opcodes/loscilx.c:90 Opcodes/loscilx.c:260
#, c-format
msgid "invalid loop mode: %d"
msgstr ""
-#: Opcodes/loscilx.c:170
+#: Opcodes/loscilx.c:172
msgid "loscilx: invalid number of output arguments"
msgstr ""
-#: Opcodes/loscilx.c:190 Opcodes/loscilx.c:219 Opcodes/pvlock.c:94
-#: Opcodes/pvlock.c:296 Opcodes/pvsbasic.c:460
+#: Opcodes/loscilx.c:192 Opcodes/loscilx.c:221 Opcodes/pvlock.c:118
+#: Opcodes/pvlock.c:320 Opcodes/pvsbasic.c:460
msgid ""
"number of output arguments inconsistent with number of sound file channels"
msgstr ""
-#: Opcodes/loscilx.c:665
+#: Opcodes/loscilx.c:667
msgid "loscilx: not initialised"
msgstr "loscilx: non inizializzato"
@@ -7028,11 +6925,11 @@ msgstr "loscilx: non inizializzato"
msgid "illegal order num. (min 1, max 10)"
msgstr ""
-#: Opcodes/mandolin.c:80
+#: Opcodes/mandolin.c:81
msgid "No table for Mandolin"
msgstr ""
-#: Opcodes/mandolin.c:90
+#: Opcodes/mandolin.c:91
msgid "No base frequency for mandolin"
msgstr ""
@@ -7063,27 +6960,27 @@ msgstr ""
msgid "illegal lsb control number at position n.%d"
msgstr ""
-#: Opcodes/modal4.c:45
+#: Opcodes/modal4.c:46
msgid "No table for Modal4 case"
msgstr ""
-#: Opcodes/modal4.c:245
+#: Opcodes/modal4.c:246
msgid "No table for Marimba strike"
msgstr ""
-#: Opcodes/modal4.c:284
+#: Opcodes/modal4.c:285
msgid "striking three times here!!!\n"
msgstr ""
-#: Opcodes/modal4.c:289
+#: Opcodes/modal4.c:290
msgid "striking twice here!!\n"
msgstr ""
-#: Opcodes/modal4.c:359
+#: Opcodes/modal4.c:360
msgid "No table for Vibraphone strike"
msgstr ""
-#: Opcodes/modal4.c:440
+#: Opcodes/modal4.c:441
msgid "No table for Agogobell strike"
msgstr ""
@@ -7091,12 +6988,12 @@ msgstr ""
msgid "modmatrix: "
msgstr ""
-#: Opcodes/mp3in.c:92 Opcodes/mp3in.c:230
+#: Opcodes/mp3in.c:93 Opcodes/mp3in.c:231
#, c-format
msgid "mp3in: %s: failed to open file"
msgstr ""
-#: Opcodes/mp3in.c:139
+#: Opcodes/mp3in.c:140
#, c-format
msgid "mp3in: file sample rate (%d) != orchestra sr (%d)\n"
msgstr ""
@@ -7387,7 +7284,7 @@ msgstr ""
msgid "No open glove"
msgstr ""
-#: Opcodes/pan2.c:43
+#: Opcodes/pan2.c:45
msgid "Unknown panning type"
msgstr ""
@@ -7403,197 +7300,201 @@ msgstr ""
msgid "partikkelsync: could not find opcode id"
msgstr ""
-#: Opcodes/physmod.c:121
+#: Opcodes/physmod.c:122
msgid "No table for Clarinet"
msgstr ""
-#: Opcodes/physmod.c:129
+#: Opcodes/physmod.c:130
msgid "No base frequency for clarinet -- assuming 50Hz\n"
msgstr ""
-#: Opcodes/physmod.c:283
+#: Opcodes/physmod.c:284
msgid "No table for Flute"
msgstr ""
-#: Opcodes/physmod.c:291
+#: Opcodes/physmod.c:292
msgid "No base frequency for flute -- assumed to be 50Hz\n"
msgstr ""
-#: Opcodes/physmod.c:481
+#: Opcodes/physmod.c:482
msgid "No table for wgbow vibrato"
msgstr ""
-#: Opcodes/physmod.c:689
+#: Opcodes/physmod.c:490
+msgid "unknown lowest frequency for bowed string -- assuming 50Hz\n"
+msgstr ""
+
+#: Opcodes/physmod.c:690
msgid "DlineA not initialised"
msgstr "DlineA non inizializzato"
-#: Opcodes/physmod.c:756
+#: Opcodes/physmod.c:757
msgid "No table for Brass"
msgstr ""
-#: Opcodes/physmod.c:765
+#: Opcodes/physmod.c:766
msgid "No base frequency for brass -- assumed to be 50Hz\n"
msgstr ""
-#: Opcodes/physutil.c:137 Opcodes/physutil.c:312 Opcodes/physutil.c:324
-#: Opcodes/physutil.c:345
+#: Opcodes/physutil.c:138 Opcodes/physutil.c:313 Opcodes/physutil.c:325
+#: Opcodes/physutil.c:346
msgid "negative rates not allowed!!, correcting\n"
msgstr ""
-#: Opcodes/physutil.c:186
+#: Opcodes/physutil.c:187
#, c-format
msgid "Envelope: value=%f target=%f rate=%f state=%d\n"
msgstr ""
-#: Opcodes/physutil.c:335
+#: Opcodes/physutil.c:336
msgid "Sustain level out of range!!, correcting\n"
msgstr ""
-#: Opcodes/physutil.c:356 Opcodes/physutil.c:366 Opcodes/physutil.c:376
+#: Opcodes/physutil.c:357 Opcodes/physutil.c:367 Opcodes/physutil.c:377
msgid "negative times not allowed!!, correcting\n"
msgstr ""
-#: Opcodes/pitch0.c:37
+#: Opcodes/pitch0.c:38
#, c-format
msgid "Muting new instances of instr %d\n"
msgstr ""
-#: Opcodes/pitch0.c:40
+#: Opcodes/pitch0.c:41
#, c-format
msgid "Allowing instrument %d to start\n"
msgstr ""
-#: Opcodes/pitch.c:84 Opcodes/spectra.c:78
+#: Opcodes/pitch.c:85 Opcodes/spectra.c:80
msgid "illegal iocts"
msgstr ""
-#: Opcodes/pitch.c:86 Opcodes/spectra.c:80
+#: Opcodes/pitch.c:87 Opcodes/spectra.c:82
msgid "illegal ifrqs"
msgstr ""
-#: Opcodes/pitch.c:180 Opcodes/spectra.c:584
+#: Opcodes/pitch.c:181 Opcodes/spectra.c:586
msgid "illegal no of partials"
msgstr ""
-#: Opcodes/pitch.c:205
+#: Opcodes/pitch.c:206
msgid "per octave rolloff too steep"
msgstr ""
-#: Opcodes/pitch.c:219 Opcodes/spectra.c:625
+#: Opcodes/pitch.c:220 Opcodes/spectra.c:627
msgid "illegal lo-hi values"
msgstr ""
-#: Opcodes/pitch.c:454
+#: Opcodes/pitch.c:455
msgid "pitch: not initialised"
msgstr "pitch: non inizializzato"
-#: Opcodes/pitch.c:463
+#: Opcodes/pitch.c:464
msgid "Must have even number of arguments in mac\n"
msgstr ""
-#: Opcodes/pitch.c:552
+#: Opcodes/pitch.c:553
msgid "clockread: clock still running, call clockoff first"
msgstr ""
-#: Opcodes/pitch.c:578
+#: Opcodes/pitch.c:579
msgid "adsynt: wavetable not found!"
msgstr ""
-#: Opcodes/pitch.c:591
+#: Opcodes/pitch.c:592
msgid "adsynt: freqtable not found!"
msgstr ""
-#: Opcodes/pitch.c:596
+#: Opcodes/pitch.c:597
msgid "adsynt: partial count is greater than freqtable size!"
msgstr ""
-#: Opcodes/pitch.c:604
+#: Opcodes/pitch.c:605
msgid "adsynt: amptable not found!"
msgstr ""
-#: Opcodes/pitch.c:609
+#: Opcodes/pitch.c:610
msgid "adsynt: partial count is greater than amptable size!"
msgstr ""
-#: Opcodes/pitch.c:640
+#: Opcodes/pitch.c:641
msgid "adsynt: not initialised"
msgstr "adsynt: non inizializzato"
-#: Opcodes/pitch.c:716
+#: Opcodes/pitch.c:717
msgid "hsboscil: not initialised"
msgstr "hsboscil: non inizializzato"
-#: Opcodes/pitch.c:799
+#: Opcodes/pitch.c:800
msgid "pitchamdf: maxcps must be > mincps !"
msgstr ""
-#: Opcodes/pitch.c:945
+#: Opcodes/pitch.c:946
msgid "pitchamdf: not initialised"
msgstr "pitchamdf: non inizializzato"
-#: Opcodes/pitch.c:1125 Opcodes/pitch.c:1152
+#: Opcodes/pitch.c:1126 Opcodes/pitch.c:1153
msgid "phasorbnk: not initialised"
msgstr "phasorbnk: non inizializzato"
-#: Opcodes/pitch.c:1214
+#: Opcodes/pitch.c:1215
msgid "pinkish: Invalid method code"
msgstr ""
-#: Opcodes/pitch.c:1225
+#: Opcodes/pitch.c:1226
msgid "pinkish: Filter method requires a-rate (noise) input"
msgstr ""
-#: Opcodes/pitch.c:1348
+#: Opcodes/pitch.c:1349
#, c-format
msgid ""
"pinkish: Gardner method requires 4-%d bands. Default %ld substituted for "
"%d.\n"
msgstr ""
-#: Opcodes/pitch.c:1731
+#: Opcodes/pitch.c:1733
msgid "Incorrect argument count in transeg"
msgstr ""
-#: Opcodes/pitch.c:1782
+#: Opcodes/pitch.c:1784
msgid "Incorrect argument count in transegb"
msgstr ""
-#: Opcodes/pitch.c:1832 Opcodes/pitch.c:1971
+#: Opcodes/pitch.c:1834 Opcodes/pitch.c:1977
#, fuzzy
msgid "Error: transeg not initialised (krate)\n"
msgstr ""
"\n"
"Error: transeg non inizializzato (krate)"
-#: Opcodes/pitch.c:1867 Opcodes/pitch.c:2013
+#: Opcodes/pitch.c:1869 Opcodes/pitch.c:2027
msgid "transeg: not initialised (arate)\n"
msgstr "transeg: non inizializzato (arate)\n"
-#: Opcodes/pitch.c:1921
+#: Opcodes/pitch.c:1924
msgid "Incorrect argument count in transegr"
msgstr ""
-#: Opcodes/pitch.c:2269
+#: Opcodes/pitch.c:2294
#, fuzzy
msgid "median: not initialised (arate)\n"
msgstr "linseg: non inizializzato (arate)\n"
-#: Opcodes/pitch.c:2273 Opcodes/pitch.c:2321
+#: Opcodes/pitch.c:2298 Opcodes/pitch.c:2345
#, c-format
msgid "median: window (%d)larger than maximum(%d); truncated"
msgstr ""
-#: Opcodes/pitch.c:2317
+#: Opcodes/pitch.c:2341
#, fuzzy
msgid "median: not initialised (krate)\n"
msgstr "linseg non inizializzato (krate)\n"
-#: Opcodes/pitchtrack.c:369
+#: Opcodes/pitchtrack.c:370
#, c-format
msgid "ptrack: FFT size out of range; using %d\n"
msgstr ""
-#: Opcodes/pitchtrack.c:382
+#: Opcodes/pitchtrack.c:383
#, c-format
msgid "ptrack: FFT size not a power of 2; using %d\n"
msgstr ""
@@ -7611,7 +7512,7 @@ msgstr ""
msgid "Error: %s, %s"
msgstr "Errore: %s, %s"
-#: Opcodes/ppp.c:20 Opcodes/pvlock.c:454 Opcodes/pvsband.c:46
+#: Opcodes/ppp.c:20 Opcodes/pvlock.c:478 Opcodes/pvsband.c:46
#: Opcodes/pvsbasic.c:575 Opcodes/pvsbasic.c:880 Opcodes/pvsbasic.c:1080
#: Opcodes/pvsbasic.c:1180 Opcodes/pvsbasic.c:1395 Opcodes/pvsbasic.c:1593
#: Opcodes/pvsbasic.c:1756 Opcodes/pvslock.c:20
@@ -7631,62 +7532,62 @@ msgstr ""
msgid "psynth: function table not found\n"
msgstr ""
-#: Opcodes/psynth.c:569 Opcodes/psynth.c:662
+#: Opcodes/psynth.c:567 Opcodes/psynth.c:660
msgid "Input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:767
+#: Opcodes/psynth.c:765
msgid "trsplit: input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:863 Opcodes/psynth.c:1027
+#: Opcodes/psynth.c:861 Opcodes/psynth.c:1023
msgid "trmix: first input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:868 Opcodes/psynth.c:1032
+#: Opcodes/psynth.c:866 Opcodes/psynth.c:1028
msgid "trmix: second input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:943
+#: Opcodes/psynth.c:939
msgid "trfil: input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:948
+#: Opcodes/psynth.c:944
msgid "trfil: could not find function table\n"
msgstr ""
-#: Opcodes/psynth.c:1135
+#: Opcodes/psynth.c:1131
msgid "binit: first input not in TRACKS format\n"
msgstr ""
-#: Opcodes/pvadd.c:153
+#: Opcodes/pvadd.c:150
msgid "PVADD ktimpnt truncated to last frame"
msgstr ""
-#: Opcodes/pvadd.c:191
+#: Opcodes/pvadd.c:188
msgid "pvadd: not initialised"
msgstr "pvadd: non inizializzato"
-#: Opcodes/pvadd.c:193
+#: Opcodes/pvadd.c:190
msgid "PVADD timpnt < 0"
msgstr ""
-#: Opcodes/pvadd.c:201
+#: Opcodes/pvadd.c:198
#, c-format
msgid "PVADD cannot load %s"
msgstr ""
-#: Opcodes/pvadd.c:205 Opcodes/ugens8.c:223
+#: Opcodes/pvadd.c:202 Opcodes/ugens8.c:223
#, c-format
msgid "pvoc-ex file %s: FFT size %d too large for Csound"
msgstr ""
-#: Opcodes/pvadd.c:210
+#: Opcodes/pvadd.c:207
#, c-format
msgid "PV frame %ld seems too small in %s"
msgstr ""
-#: Opcodes/pvadd.c:215 Opcodes/pvread.c:115 Opcodes/ugens8.c:229
+#: Opcodes/pvadd.c:212 Opcodes/pvread.c:115 Opcodes/ugens8.c:229
#, c-format
msgid "pvoc-ex file %s is not mono"
msgstr ""
@@ -7696,98 +7597,98 @@ msgstr ""
msgid "PVBUFREAD cannot load %s"
msgstr ""
-#: Opcodes/pvinterp.c:76 Opcodes/vpvoc.c:206
+#: Opcodes/pvinterp.c:76 Opcodes/vpvoc.c:207
#, c-format
msgid "PVOC frame %ld bigger than %ld in %s"
msgstr ""
-#: Opcodes/pvinterp.c:81 Opcodes/vpvoc.c:211
+#: Opcodes/pvinterp.c:81 Opcodes/vpvoc.c:212
#, c-format
msgid "PVOC frame %ld seems too small in %s"
msgstr ""
-#: Opcodes/pvinterp.c:85 Opcodes/pvinterp.c:184 Opcodes/pvinterp.c:356
-#: Opcodes/vpvoc.c:215
+#: Opcodes/pvinterp.c:85 Opcodes/pvinterp.c:183 Opcodes/pvinterp.c:354
+#: Opcodes/vpvoc.c:216
#, c-format
msgid "%d chans (not 1) in PVOC file %s"
msgstr ""
-#: Opcodes/pvinterp.c:101 Opcodes/pvinterp.c:212 Opcodes/pvinterp.c:382
+#: Opcodes/pvinterp.c:100 Opcodes/pvinterp.c:210 Opcodes/pvinterp.c:379
#: Opcodes/ugens8.c:95 Opcodes/vpvoc.c:244
#, c-format
msgid "ksmps of %d needs wdw of %d, max is %d for pv %s"
msgstr ""
-#: Opcodes/pvinterp.c:122 Opcodes/pvinterp.c:256 Opcodes/pvinterp.c:431
+#: Opcodes/pvinterp.c:121 Opcodes/pvinterp.c:254 Opcodes/pvinterp.c:428
#: Opcodes/pvread.c:95 Opcodes/ugens8.c:156 Opcodes/vpvoc.c:297
msgid "PVOC ktimpnt truncated to last frame"
msgstr ""
-#: Opcodes/pvinterp.c:130
+#: Opcodes/pvinterp.c:129
msgid "pvbufread: not initialised"
msgstr "pvbufread: non inizializzato"
-#: Opcodes/pvinterp.c:132 Opcodes/pvinterp.c:306 Opcodes/pvinterp.c:492
+#: Opcodes/pvinterp.c:131 Opcodes/pvinterp.c:304 Opcodes/pvinterp.c:489
#: Opcodes/pvread.c:103 Opcodes/ugens8.c:206 Opcodes/vpvoc.c:361
msgid "PVOC timpnt < 0"
msgstr ""
-#: Opcodes/pvinterp.c:149
+#: Opcodes/pvinterp.c:148
msgid "pvinterp: associated pvbufread not found"
msgstr ""
-#: Opcodes/pvinterp.c:166
+#: Opcodes/pvinterp.c:165
#, c-format
msgid "PVINTERP cannot load %s"
msgstr ""
-#: Opcodes/pvinterp.c:179
+#: Opcodes/pvinterp.c:178
#, c-format
msgid "pvinterp: %s: frame size %d does not match pvbufread frame size %d\n"
msgstr ""
-#: Opcodes/pvinterp.c:300
+#: Opcodes/pvinterp.c:298
msgid "pvinterp: not initialised"
msgstr "pvinterp: non inizializzato"
-#: Opcodes/pvinterp.c:302 Opcodes/pvinterp.c:488 Opcodes/ugens8.c:202
+#: Opcodes/pvinterp.c:300 Opcodes/pvinterp.c:485 Opcodes/ugens8.c:202
#: Opcodes/vpvoc.c:357
msgid "PVOC transpose too low"
msgstr ""
-#: Opcodes/pvinterp.c:304 Opcodes/pvinterp.c:490 Opcodes/ugens8.c:204
+#: Opcodes/pvinterp.c:302 Opcodes/pvinterp.c:487 Opcodes/ugens8.c:204
#: Opcodes/vpvoc.c:359
msgid "PVOC transpose too high"
msgstr ""
-#: Opcodes/pvinterp.c:323
+#: Opcodes/pvinterp.c:321
msgid "pvcross: associated pvbufread not found"
msgstr ""
-#: Opcodes/pvinterp.c:339
+#: Opcodes/pvinterp.c:337
#, c-format
msgid "PVCROSS cannot load %s"
msgstr ""
-#: Opcodes/pvinterp.c:351
+#: Opcodes/pvinterp.c:349
#, c-format
msgid "pvcross: %s: frame size %d does not match pvbufread frame size %d\n"
msgstr ""
-#: Opcodes/pvinterp.c:454 Opcodes/vpvoc.c:322
+#: Opcodes/pvinterp.c:451 Opcodes/vpvoc.c:322
msgid "PVOC debug: one frame gets through\n"
msgstr ""
-#: Opcodes/pvinterp.c:486
+#: Opcodes/pvinterp.c:483
msgid "pvcross: not initialised"
msgstr "pvcross: non inizializzato"
-#: Opcodes/pvlock.c:35 Opcodes/pvsbasic.c:380
+#: Opcodes/pvlock.c:59 Opcodes/pvsbasic.c:380
#, fuzzy
msgid "invalid number of output arguments"
msgstr "numero errato di discussioni ftable"
-#: Opcodes/pvlock.c:466
+#: Opcodes/pvlock.c:490
#, fuzzy
msgid "pvsfreeze: signal format must be amp-freq."
msgstr "formato campione non valido: deve essere -s, -l, o -f"
@@ -7898,31 +7799,36 @@ msgstr "pvstencil: non inizializzato"
msgid "pvs2tab: signal format must be amp-phase or amp-freq."
msgstr "formato campione non valido: deve essere -s, -l, o -f"
-#: Opcodes/pvsbasic.c:2151 Opcodes/pvsbasic.c:2190 Opcodes/tabvars.c:53
-#: Opcodes/tabvars.c:89 Opcodes/tabvars.c:131 Opcodes/tabvars.c:176
-#: Opcodes/tabvars.c:178
+#: Opcodes/pvsbasic.c:2151 Opcodes/pvsbasic.c:2189 Opcodes/tabvars.c:56
+#: Opcodes/tabvars.c:92 Opcodes/tabvars.c:134 Opcodes/tabvars.c:179
+#: Opcodes/tabvars.c:181
#, fuzzy
msgid "t-variable not initialised"
msgstr "table: non inizializzato"
-#: Opcodes/pvsbuffer.c:53 Opcodes/pvscent.c:164 Opcodes/pvsdemix.c:49
+#: Opcodes/pvsbuffer.c:56 Opcodes/pvscent.c:164 Opcodes/pvsdemix.c:49
msgid "SDFT case not implemented yet"
msgstr ""
-#: Opcodes/pvsbuffer.c:85
+#: Opcodes/pvsbuffer.c:89
#, fuzzy
msgid "error... could not create global var for handle\n"
msgstr "attenzione... impossibile creare global var\n"
-#: Opcodes/pvsbuffer.c:143 Opcodes/pvsbuffer.c:190 Opcodes/pvsbuffer.c:258
+#: Opcodes/pvsbuffer.c:148 Opcodes/pvsbuffer.c:197 Opcodes/pvsbuffer.c:266
#, fuzzy
msgid "error... could not read handle from global variable\n"
msgstr "attenzione... impossibile creare global var\n"
-#: Opcodes/pvsbuffer.c:238 Opcodes/pvsbuffer.c:306
+#: Opcodes/pvsbuffer.c:246 Opcodes/pvsbuffer.c:316
msgid "Invalid buffer handle"
msgstr ""
+#: Opcodes/pvsbuffer.c:285 Opcodes/pvsbuffer.c:291
+#, c-format
+msgid "table length too small: needed %d, got %d\n"
+msgstr ""
+
#: Opcodes/pvscent.c:42
msgid "pvscent: format must be amp-phase or amp-freq.\n"
msgstr ""
@@ -8113,49 +8019,49 @@ msgstr ""
msgid "seqtim: incorrect table number"
msgstr ""
-#: Opcodes/sfont.c:118
+#: Opcodes/sfont.c:121
#, c-format
msgid "sfload: cannot open SoundFont file \"%s\" (error %s)"
msgstr ""
-#: Opcodes/sfont.c:123
+#: Opcodes/sfont.c:126
msgid "Sfload: cannot use globals"
msgstr ""
-#: Opcodes/sfont.c:153
+#: Opcodes/sfont.c:156
msgid "sfload: could not open globals\n"
msgstr ""
-#: Opcodes/sfont.c:170
+#: Opcodes/sfont.c:173
#, fuzzy
msgid "Extending soundfonts"
msgstr "troppi buffers"
-#: Opcodes/sfont.c:201
+#: Opcodes/sfont.c:204
#, c-format
msgid ""
"\n"
"Preset list of \"%s\"\n"
msgstr ""
-#: Opcodes/sfont.c:204
+#: Opcodes/sfont.c:207
#, c-format
msgid "%3d) %-20s\tprog:%-3d bank:%d\n"
msgstr ""
-#: Opcodes/sfont.c:226
+#: Opcodes/sfont.c:229
#, c-format
msgid ""
"\n"
"Assigning all Presets of \"%s\" starting from %d (preset handle number)\n"
msgstr ""
-#: Opcodes/sfont.c:231
+#: Opcodes/sfont.c:234
#, c-format
msgid "%3d<--%-20s\t(prog:%-3d bank:%d)\n"
msgstr ""
-#: Opcodes/sfont.c:238
+#: Opcodes/sfont.c:241
#, c-format
msgid ""
"\n"
@@ -8163,38 +8069,38 @@ msgid ""
"\n"
msgstr ""
-#: Opcodes/sfont.c:251
+#: Opcodes/sfont.c:254
#, c-format
msgid ""
"\n"
"Instrument list of \"%s\"\n"
msgstr ""
-#: Opcodes/sfont.c:268
+#: Opcodes/sfont.c:271
#, c-format
msgid "sfpreset: preset handle too big (%d), max: %d"
msgstr ""
-#: Opcodes/sfont.c:284
+#: Opcodes/sfont.c:287
#, c-format
msgid ""
"sfpreset: cannot find any preset having prog number %d and bank number %d in "
"SoundFont file \"%s\""
msgstr ""
-#: Opcodes/sfont.c:306 Opcodes/sfont.c:2189
+#: Opcodes/sfont.c:309 Opcodes/sfont.c:2192
msgid "sfplay: invalid or out-of-range preset number"
msgstr ""
-#: Opcodes/sfont.c:633
+#: Opcodes/sfont.c:636
msgid "sfplaym: invalid or out-of-range preset number"
msgstr ""
-#: Opcodes/sfont.c:888 Opcodes/sfont.c:1150
+#: Opcodes/sfont.c:891 Opcodes/sfont.c:1153
msgid "sfinstr: instrument out of range"
msgstr ""
-#: Opcodes/sfont.c:1598 Opcodes/sfont.c:1835
+#: Opcodes/sfont.c:1601 Opcodes/sfont.c:1838
#, c-format
msgid ""
"SoundFont file \"%s\" contains ROM samples !\n"
@@ -8202,19 +8108,19 @@ msgid ""
"Session aborted !"
msgstr ""
-#: Opcodes/sfont.c:1987 Opcodes/sfont.c:1993
+#: Opcodes/sfont.c:1990 Opcodes/sfont.c:1996
msgid "Sfont: cannot use globals/"
msgstr ""
-#: Opcodes/sfont.c:1996
+#: Opcodes/sfont.c:1999
msgid "Sfont format not compatible"
msgstr ""
-#: Opcodes/sfont.c:2534
+#: Opcodes/sfont.c:2537
msgid "error... could not create sfont globals\n"
msgstr ""
-#: Opcodes/shape.c:49
+#: Opcodes/shape.c:51
msgid "powershape: ifullscale must be strictly positive"
msgstr ""
@@ -8228,25 +8134,25 @@ msgstr "formato campione non valido: deve essere -s, -l, o -f"
msgid "ftgenonce error"
msgstr "(nessun errore)"
-#: Opcodes/singwave.c:85
+#: Opcodes/singwave.c:86
msgid "No table for Modulatr"
msgstr ""
-#: Opcodes/singwave.c:127
+#: Opcodes/singwave.c:128
msgid "No table for Singwave"
msgstr ""
-#: Opcodes/singwave.c:207
+#: Opcodes/singwave.c:208
#, c-format
msgid "SingWave: rate=%f sweepRate=%f mytime=%f\n"
msgstr ""
-#: Opcodes/singwave.c:273
+#: Opcodes/singwave.c:280
#, c-format
msgid "Found Formant: %s (number %i)\n"
msgstr ""
-#: Opcodes/singwave.c:395
+#: Opcodes/singwave.c:397
#, c-format
msgid "Setting Phoneme: %d %f\n"
msgstr ""
@@ -8279,15 +8185,15 @@ msgstr ""
msgid "pvsarp: not initialised\n"
msgstr "pvsarp: non inizializzato\n"
-#: Opcodes/sndloop.c:995 Opcodes/sndloop.c:1092
+#: Opcodes/sndloop.c:995 Opcodes/sndloop.c:1091
msgid "signal format must be amp-phase or amp-freq.\n"
msgstr ""
-#: Opcodes/sndloop.c:1072
+#: Opcodes/sndloop.c:1071
msgid "pvsvoc: not initialised\n"
msgstr "pvsvoc: non inizializzato\n"
-#: Opcodes/sndloop.c:1123
+#: Opcodes/sndloop.c:1122
msgid "pvsmorph: not initialised\n"
msgstr "pvsmorph: non inizializzato\n"
@@ -8307,25 +8213,27 @@ msgstr ""
msgid "sndwarpst: not initialised"
msgstr "sndwarpst: non inizializzato"
-#: Opcodes/sockrecv.c:123 Opcodes/sockrecv.c:213 Opcodes/sockrecv.c:300
-#: Opcodes/socksend.c:75 Opcodes/socksend.c:133 Opcodes/socksend.c:190
-msgid "creating socket"
+#: Opcodes/sockrecv.c:117 Opcodes/sockrecv.c:215 Opcodes/sockrecv.c:314
+#: Opcodes/socksend.c:73 Opcodes/socksend.c:157 Opcodes/socksend.c:252
+#, c-format
+msgid "Winsock2 failed to start: %d"
msgstr ""
-#: Opcodes/sockrecv.c:322
-msgid "connect failed"
+#: Opcodes/sockrecv.c:131 Opcodes/sockrecv.c:227 Opcodes/sockrecv.c:320
+#: Opcodes/socksend.c:86 Opcodes/socksend.c:171 Opcodes/socksend.c:259
+msgid "creating socket"
msgstr ""
-#: Opcodes/sockrecv.c:335
-msgid "read from socket failed"
+#: Opcodes/sockrecv.c:347
+#, c-format
+msgid "connect failed (%d)"
msgstr ""
-#: Opcodes/socksend.c:67 Opcodes/socksend.c:125
-#, c-format
-msgid "The buffersize must be <= %d samples to fit in a udp-packet."
+#: Opcodes/sockrecv.c:360
+msgid "read from socket failed"
msgstr ""
-#: Opcodes/socksend.c:107 Opcodes/socksend.c:169
+#: Opcodes/socksend.c:126 Opcodes/socksend.c:215
msgid "sendto failed"
msgstr ""
@@ -8345,199 +8253,199 @@ msgstr "spat3d: non inizializzato"
msgid "spat3di: not initialised"
msgstr "spat3di: non inizializzato"
-#: Opcodes/spectra.c:82
+#: Opcodes/spectra.c:84
msgid "illegal Q value"
msgstr ""
-#: Opcodes/spectra.c:84
+#: Opcodes/spectra.c:86
msgid "unknown dbout code"
msgstr ""
-#: Opcodes/spectra.c:104
+#: Opcodes/spectra.c:106
#, c-format
msgid "spectrum: %s window, %s out, making tables ...\n"
msgstr ""
-#: Opcodes/spectra.c:123
+#: Opcodes/spectra.c:125
#, c-format
msgid ""
"\thigh cps %7.1f\n"
"\t low cps %7.1f\n"
msgstr ""
-#: Opcodes/spectra.c:138
+#: Opcodes/spectra.c:140
#, c-format
msgid "\tQ %4.1f uses a %d sample window each octdown\n"
msgstr ""
-#: Opcodes/spectra.c:169
+#: Opcodes/spectra.c:171
msgid "spectrum windowed sines:"
msgstr ""
-#: Opcodes/spectra.c:187
+#: Opcodes/spectra.c:189
#, c-format
msgid "\t%d oct analysis window delay = %ld samples (%d msecs)\n"
msgstr ""
-#: Opcodes/spectra.c:195
+#: Opcodes/spectra.c:197
msgid "octdown buffers:"
msgstr ""
-#: Opcodes/spectra.c:513 Opcodes/spectra.c:553
+#: Opcodes/spectra.c:515 Opcodes/spectra.c:555
msgid "specdisp: not initialised"
msgstr "specdisp: non inizializzato"
-#: Opcodes/spectra.c:523
+#: Opcodes/spectra.c:525
#, c-format
msgid "instr %d %s, dft (%s), %ld octaves (%d - %d Hz):"
msgstr ""
-#: Opcodes/spectra.c:530
+#: Opcodes/spectra.c:532
#, c-format
msgid "instr %d %s, dft (%s), %ld octaves (%3.1f - %3.1f Hz):"
msgstr ""
-#: Opcodes/spectra.c:611
+#: Opcodes/spectra.c:613
msgid "per oct rolloff too steep"
msgstr ""
-#: Opcodes/spectra.c:632
+#: Opcodes/spectra.c:634
#, c-format
msgid "specptrk: %d freqs, %d%s ptls at "
msgstr ""
-#: Opcodes/spectra.c:633
+#: Opcodes/spectra.c:635
msgid " odd"
msgstr ""
-#: Opcodes/spectra.c:637
+#: Opcodes/spectra.c:639
msgid ""
"\n"
"\t\trolloff vals:"
msgstr ""
-#: Opcodes/spectra.c:660
+#: Opcodes/spectra.c:662
#, c-format
msgid ""
"\n"
"\tdbthresh %4.1f: X-corr %s threshon %4.1f, threshoff %4.1f\n"
msgstr ""
-#: Opcodes/spectra.c:817
+#: Opcodes/spectra.c:819
msgid "specptrk: not initialised"
msgstr "specptrk: non inizializzato"
-#: Opcodes/spectra.c:849
+#: Opcodes/spectra.c:851
msgid "specsum: not initialised"
msgstr "specsum: non inizializzato"
-#: Opcodes/spectra.c:860
+#: Opcodes/spectra.c:862
msgid "inputs have different sizes"
msgstr ""
-#: Opcodes/spectra.c:863
+#: Opcodes/spectra.c:865
msgid "inputs have diff. time periods"
msgstr ""
-#: Opcodes/spectra.c:867
+#: Opcodes/spectra.c:869
msgid "inputs have different freq resolution"
msgstr ""
-#: Opcodes/spectra.c:870
+#: Opcodes/spectra.c:872
msgid "inputs have different amptypes"
msgstr ""
-#: Opcodes/spectra.c:902
+#: Opcodes/spectra.c:904
msgid "specaddm: not initialised"
msgstr "specaddm: non inizializzato"
-#: Opcodes/spectra.c:926
+#: Opcodes/spectra.c:928
msgid "specdiff: local buffers not initialised"
msgstr "specdiff: local buffers non inizializzato"
-#: Opcodes/spectra.c:964
+#: Opcodes/spectra.c:966
msgid "specdiff: not initialised"
msgstr "specdiff: non inizializzato"
-#: Opcodes/spectra.c:986
+#: Opcodes/spectra.c:988
msgid "specscal: local buffer not initialised"
msgstr "specscal: local buffer non inizializzato"
-#: Opcodes/spectra.c:991
+#: Opcodes/spectra.c:993
msgid "missing fscale table"
msgstr ""
-#: Opcodes/spectra.c:1057
+#: Opcodes/spectra.c:1059
msgid "specscal: not initialised"
msgstr "specscal: non inizializzato"
-#: Opcodes/spectra.c:1081
+#: Opcodes/spectra.c:1083
msgid "spechist: local buffers not intiialised"
msgstr ""
-#: Opcodes/spectra.c:1113
+#: Opcodes/spectra.c:1115
msgid "spechist: not initialised"
msgstr "spechist: non inizializzato"
-#: Opcodes/spectra.c:1134
+#: Opcodes/spectra.c:1136
msgid "specfilt: local buffers not initialised"
msgstr "specfilt: local buffers non inizializzato"
-#: Opcodes/spectra.c:1142
+#: Opcodes/spectra.c:1144
msgid "missing htim ftable"
msgstr ""
-#: Opcodes/spectra.c:1165
+#: Opcodes/spectra.c:1167
msgid "htim ftable must be all-positive"
msgstr ""
-#: Opcodes/spectra.c:1169
+#: Opcodes/spectra.c:1171
#, c-format
msgid "coef range: %6.3f - %6.3f\n"
msgstr ""
-#: Opcodes/spectra.c:1201
+#: Opcodes/spectra.c:1203
msgid "specfilt: not initialised"
msgstr "specfilt: non inizializzato"
-#: Opcodes/stackops.c:80
+#: Opcodes/stackops.c:81
msgid "fsig = : source signal is not initialised"
msgstr "fsig = : source signal is non inizializzato"
-#: Opcodes/stackops.c:126
+#: Opcodes/stackops.c:125
msgid "stack overflow"
msgstr ""
-#: Opcodes/stackops.c:134
+#: Opcodes/stackops.c:131
msgid "cannot pop from empty stack"
msgstr ""
-#: Opcodes/stackops.c:142
+#: Opcodes/stackops.c:137
msgid "argument number or type mismatch"
msgstr ""
-#: Opcodes/stackops.c:150
+#: Opcodes/stackops.c:143
msgid "string argument is too long"
msgstr ""
-#: Opcodes/stackops.c:167
+#: Opcodes/stackops.c:160
msgid "Error allocating argument stack"
msgstr ""
-#: Opcodes/stackops.c:207 Top/argdecode.c:1212 util/envext.c:99
+#: Opcodes/stackops.c:200 Top/argdecode.c:1212 util/envext.c:99
#: util/scale.c:248
msgid "too many arguments"
msgstr ""
-#: Opcodes/stackops.c:286
+#: Opcodes/stackops.c:279
msgid "the stack is already allocated"
msgstr ""
-#: Opcodes/stackops.c:637
+#: Opcodes/stackops.c:630
msgid "number of arguments != nchnls"
msgstr ""
-#: Opcodes/stdopcod.c:36
+#: Opcodes/stdopcod.c:37
msgid "stdopcod.c: error: globals already allocated"
msgstr ""
@@ -8552,36 +8460,45 @@ msgstr ""
msgid "RAWWAVE_PATH: %s\n"
msgstr ""
-#: Opcodes/syncgrain.c:175 Opcodes/syncgrain.c:338 Opcodes/syncgrain.c:683
+#: Opcodes/syncgrain.c:176 Opcodes/syncgrain.c:339 Opcodes/syncgrain.c:684
msgid "grain size smaller than 1 sample\n"
msgstr ""
-#: Opcodes/syncgrain.c:387
+#: Opcodes/syncgrain.c:388
msgid "diskgrain: invalid number of channels"
msgstr ""
-#: Opcodes/syncgrain.c:419
+#: Opcodes/syncgrain.c:420
msgid "diskgrain: could not open file\n"
msgstr ""
-#: Opcodes/syncgrain.c:423
+#: Opcodes/syncgrain.c:424
msgid ""
"diskgrain: soundfile channel numbers do not match the number of outputs \n"
msgstr ""
-#: Opcodes/syncgrain.c:435
+#: Opcodes/syncgrain.c:436
msgid "diskgrain: could not read file \n"
msgstr ""
-#: Opcodes/tabsum.c:39
+#: Opcodes/tabsum.c:40
msgid "tabsum: No table"
msgstr ""
-#: Opcodes/tabsum.c:54
+#: Opcodes/tabsum.c:55
#, fuzzy
msgid "tabsum: Not initialised"
msgstr "table: non inizializzato"
+#: Opcodes/tabvars.c:201 Opcodes/tabvars.c:218
+#, fuzzy
+msgid "t-var not initialised"
+msgstr "table: non inizializzato"
+
+#: Opcodes/tabvars.c:203 Opcodes/tabvars.c:220
+msgid "No table for copy2ftab"
+msgstr ""
+
#: Opcodes/ugens7.c:46 Opcodes/ugensa.c:49
msgid "illegal value for iolaps"
msgstr ""
@@ -8727,17 +8644,17 @@ msgstr ""
msgid "table in iftfn for ftmorf does not exist"
msgstr ""
-#: Opcodes/ugnorman.c:120
+#: Opcodes/ugnorman.c:121
#, c-format
msgid "%s: Ats file %s not read (does it exist?)"
msgstr ""
-#: Opcodes/ugnorman.c:131
+#: Opcodes/ugnorman.c:132
#, c-format
msgid "%s: either %s is not an ATS file or the byte endianness is wrong"
msgstr ""
-#: Opcodes/ugnorman.c:139
+#: Opcodes/ugnorman.c:140
#, c-format
msgid ""
"%s: %s is byte-swapped\n"
@@ -8745,125 +8662,125 @@ msgid ""
"\twill not result in different audio, but they may slow down processing."
msgstr ""
-#: Opcodes/ugnorman.c:175
+#: Opcodes/ugnorman.c:176
msgid ""
"ATSINFO: location is out of bounds: 0-8 are the only possible selections"
msgstr ""
-#: Opcodes/ugnorman.c:265
+#: Opcodes/ugnorman.c:266
#, c-format
msgid "ATSREAD: partial %i out of range, max allowed is %i"
msgstr ""
-#: Opcodes/ugnorman.c:291
+#: Opcodes/ugnorman.c:292
msgid "Type not implemented"
msgstr ""
-#: Opcodes/ugnorman.c:310
+#: Opcodes/ugnorman.c:311
msgid "ATSREAD: only positive time pointer values allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:319
+#: Opcodes/ugnorman.c:320
msgid "ATSREAD: timepointer out of range, truncated to last frame\n"
msgstr ""
-#: Opcodes/ugnorman.c:332
+#: Opcodes/ugnorman.c:333
msgid "ATSREAD: not initialised"
msgstr "ATSREAD: non inizializzato"
-#: Opcodes/ugnorman.c:394
+#: Opcodes/ugnorman.c:395
#, c-format
msgid "ATSREADNZ: band %i out of range, 1-25 are the valid band values"
msgstr ""
-#: Opcodes/ugnorman.c:412
+#: Opcodes/ugnorman.c:413
msgid "ATSREADNZ: Type either not implemented or does not contain noise"
msgstr ""
-#: Opcodes/ugnorman.c:431
+#: Opcodes/ugnorman.c:432
msgid "ATSREADNZ: only positive time pointer values allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:440
+#: Opcodes/ugnorman.c:441
msgid "ATSREADNZ: timepointer out of range, truncated to last frame\n"
msgstr ""
-#: Opcodes/ugnorman.c:449
+#: Opcodes/ugnorman.c:450
msgid "ATSREADNZ: not initialised"
msgstr "ATSREADNZ: non inizializzato"
-#: Opcodes/ugnorman.c:467
+#: Opcodes/ugnorman.c:468
msgid "ATSADD: Function table number for synthesis waveform not valid"
msgstr ""
-#: Opcodes/ugnorman.c:475
+#: Opcodes/ugnorman.c:476
msgid "ATSADD: Gate Function table number not valid"
msgstr ""
-#: Opcodes/ugnorman.c:521
+#: Opcodes/ugnorman.c:522
#, c-format
msgid "ATSADD: Partial(s) out of range, max partial allowed is %i"
msgstr ""
-#: Opcodes/ugnorman.c:555
+#: Opcodes/ugnorman.c:556
msgid "ATSADD: Type not implemented"
msgstr ""
-#: Opcodes/ugnorman.c:585
+#: Opcodes/ugnorman.c:586
msgid ""
"ATSADD: only positive time pointer values are allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:594
+#: Opcodes/ugnorman.c:595
msgid "ATSADD: time pointer out of range, truncating to last frame\n"
msgstr ""
-#: Opcodes/ugnorman.c:638
+#: Opcodes/ugnorman.c:639
msgid "ATSADD: not initialised"
msgstr "ATSADD: non inizializzato"
-#: Opcodes/ugnorman.c:842
+#: Opcodes/ugnorman.c:845
msgid "ATSADDNZ: This file type contains no noise"
msgstr ""
-#: Opcodes/ugnorman.c:846
+#: Opcodes/ugnorman.c:849
msgid "ATSADDNZ: This file type has not been implemented in this code yet."
msgstr ""
-#: Opcodes/ugnorman.c:869
+#: Opcodes/ugnorman.c:872
msgid "ATSADDNZ: Band(s) out of range, max band allowed is 25"
msgstr ""
-#: Opcodes/ugnorman.c:886
+#: Opcodes/ugnorman.c:889
msgid ""
"ATSADDNZ: Type either has no noise or is not implemented (only type 3 and 4 "
"work now)"
msgstr ""
-#: Opcodes/ugnorman.c:1002
+#: Opcodes/ugnorman.c:1005
msgid ""
"ATSADDNZ: only positive time pointer values are allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:1011
+#: Opcodes/ugnorman.c:1014
msgid "ATSADDNZ: time pointer out of range, truncating to last frame\n"
msgstr ""
-#: Opcodes/ugnorman.c:1165
+#: Opcodes/ugnorman.c:1168
#, c-format
msgid "ATSSINNOI: Partial(s) out of range, max partial allowed is %i"
msgstr ""
-#: Opcodes/ugnorman.c:1202
+#: Opcodes/ugnorman.c:1205
msgid "ATSSINNOI: Type not implemented"
msgstr ""
-#: Opcodes/ugnorman.c:1315
+#: Opcodes/ugnorman.c:1316
msgid ""
"ATSSINNOI: only positive time pointer values are allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:1324
+#: Opcodes/ugnorman.c:1325
msgid "ATSSINNOI: time pointer out of range, truncating to last frame\n"
msgstr ""
@@ -8936,44 +8853,44 @@ msgstr ""
msgid "ATSCROSS: you must have an atsbufread before an atsinterpread"
msgstr ""
-#: Opcodes/ugsc.c:394
+#: Opcodes/ugsc.c:390
msgid "Phaser mode must be either 1 or 2"
msgstr ""
-#: Opcodes/vbap.c:57
+#: Opcodes/vbap.c:59
msgid "vbap: error allocating loudspeaker table"
msgstr ""
-#: Opcodes/vbap.c:264
+#: Opcodes/vbap.c:266
msgid ""
"Number of loudspeakers is zero\n"
"Exiting"
msgstr ""
-#: Opcodes/vbap.c:573
+#: Opcodes/vbap.c:575
msgid "Error in loudspeaker dimension."
msgstr ""
-#: Opcodes/vbap.c:596
+#: Opcodes/vbap.c:598
msgid "Too few loudspeakers"
msgstr ""
-#: Opcodes/vbap.c:622
+#: Opcodes/vbap.c:624
msgid "Not valid 3-D configuration"
msgstr ""
-#: Opcodes/vbap.c:668 Opcodes/vbap.c:767
+#: Opcodes/vbap.c:670 Opcodes/vbap.c:769
msgid ""
"\n"
"Configured loudspeakers\n"
msgstr ""
-#: Opcodes/vbap.c:670
+#: Opcodes/vbap.c:672
#, c-format
msgid "Triplet %d Loudspeakers: "
msgstr ""
-#: Opcodes/vbap.c:769
+#: Opcodes/vbap.c:771
#, c-format
msgid "Pair %d Loudspeakers: "
msgstr ""
@@ -9055,41 +8972,33 @@ msgstr ""
msgid "Have to have at least %d directions in vbapzmove"
msgstr ""
-#: Opcodes/Vosim.c:49
+#: Opcodes/Vosim.c:51
msgid "vosim: pulse table not found"
msgstr ""
-#: Opcodes/Vosim.c:72
+#: Opcodes/Vosim.c:74
msgid "vosim: zero kfund. 'Infinite' length event generated."
msgstr ""
-#: Opcodes/Vosim.c:80
+#: Opcodes/Vosim.c:82
#, c-format
msgid "vosim: kfund (%f) > sr. Generating ksmps silence."
msgstr ""
-#: Opcodes/Vosim.c:158
+#: Opcodes/Vosim.c:160
msgid "vosim: not initialised"
msgstr "vosim: non inizializzato"
-#: Opcodes/vpvoc.c:118
-msgid "tableseg: not initialised"
-msgstr "tableseg: non inizializzato"
-
-#: Opcodes/vpvoc.c:146
-msgid "tablexseg: not initialised"
-msgstr "tablexseg: non inizializzato"
-
-#: Opcodes/vpvoc.c:172
+#: Opcodes/vpvoc.c:173
#, c-format
msgid "vpvoc: Could not find ifnmagctrl table %f"
msgstr ""
-#: Opcodes/vpvoc.c:178
+#: Opcodes/vpvoc.c:179
msgid "vpvoc: associated tableseg not found"
msgstr ""
-#: Opcodes/vpvoc.c:194
+#: Opcodes/vpvoc.c:195
#, c-format
msgid "VPVOC cannot load %s"
msgstr ""
@@ -9207,47 +9116,47 @@ msgstr ""
msgid "-B N\tsamples per hardware sound I/O buffer"
msgstr ""
-#: Top/argdecode.c:75 util/mixer.c:95 util/scale.c:46 util/srconv.c:739
+#: Top/argdecode.c:75 util/mixer.c:95 util/scale.c:46 util/srconv.c:738
msgid "-A\tcreate an AIFF format output soundfile"
msgstr ""
-#: Top/argdecode.c:76 util/mixer.c:96 util/scale.c:47 util/srconv.c:741
+#: Top/argdecode.c:76 util/mixer.c:96 util/scale.c:47 util/srconv.c:740
msgid "-W\tcreate a WAV format output soundfile"
msgstr ""
-#: Top/argdecode.c:77 util/srconv.c:740
+#: Top/argdecode.c:77 util/srconv.c:739
msgid "-J\tcreate an IRCAM format output soundfile"
msgstr ""
-#: Top/argdecode.c:78 util/mixer.c:97 util/scale.c:48 util/srconv.c:742
+#: Top/argdecode.c:78 util/mixer.c:97 util/scale.c:48 util/srconv.c:741
msgid "-h\tno header on output soundfile"
msgstr ""
-#: Top/argdecode.c:79 util/mixer.c:99 util/scale.c:49 util/srconv.c:743
+#: Top/argdecode.c:79 util/mixer.c:99 util/scale.c:49 util/srconv.c:742
msgid "-c\t8-bit signed_char sound samples"
msgstr ""
-#: Top/argdecode.c:81 util/mixer.c:101 util/scale.c:50 util/srconv.c:744
+#: Top/argdecode.c:81 util/mixer.c:101 util/scale.c:50 util/srconv.c:743
msgid "-a\talaw sound samples"
msgstr ""
-#: Top/argdecode.c:83 util/mixer.c:98 util/mixer.c:100 util/srconv.c:745
+#: Top/argdecode.c:83 util/mixer.c:98 util/mixer.c:100 util/srconv.c:744
msgid "-8\t8-bit unsigned_char sound samples"
msgstr ""
-#: Top/argdecode.c:84 util/mixer.c:102 util/scale.c:51 util/srconv.c:746
+#: Top/argdecode.c:84 util/mixer.c:102 util/scale.c:51 util/srconv.c:745
msgid "-u\tulaw sound samples"
msgstr ""
-#: Top/argdecode.c:85 util/mixer.c:103 util/scale.c:52 util/srconv.c:747
+#: Top/argdecode.c:85 util/mixer.c:103 util/scale.c:52 util/srconv.c:746
msgid "-s\tshort_int sound samples"
msgstr ""
-#: Top/argdecode.c:86 util/mixer.c:104 util/scale.c:53 util/srconv.c:748
+#: Top/argdecode.c:86 util/mixer.c:104 util/scale.c:53 util/srconv.c:747
msgid "-l\tlong_int sound samples"
msgstr ""
-#: Top/argdecode.c:87 util/mixer.c:105 util/scale.c:54 util/srconv.c:749
+#: Top/argdecode.c:87 util/mixer.c:105 util/scale.c:54 util/srconv.c:748
msgid "-f\tfloat sound samples"
msgstr ""
@@ -9255,7 +9164,7 @@ msgstr ""
msgid "-3\t24bit sound samples"
msgstr ""
-#: Top/argdecode.c:89 util/srconv.c:750
+#: Top/argdecode.c:89 util/srconv.c:749
msgid "-r N\torchestra srate override"
msgstr ""
@@ -9263,7 +9172,7 @@ msgstr ""
msgid "-k N\torchestra krate override"
msgstr ""
-#: Top/argdecode.c:91 util/srconv.c:751
+#: Top/argdecode.c:91 util/srconv.c:750
msgid "-K\tDo not generate PEAK chunks"
msgstr ""
@@ -9323,7 +9232,7 @@ msgstr ""
msgid "-F fnam\tread MIDIfile event stream from file 'fnam'"
msgstr ""
-#: Top/argdecode.c:107 util/mixer.c:106 util/scale.c:59 util/srconv.c:752
+#: Top/argdecode.c:107 util/mixer.c:106 util/scale.c:59 util/srconv.c:751
msgid "-R\tcontinually rewrite header while writing soundfile (WAV/AIFF)"
msgstr ""
@@ -9331,7 +9240,7 @@ msgstr ""
msgid "-H#\tprint heartbeat style 1, 2 or 3 at each soundfile write"
msgstr ""
-#: Top/argdecode.c:109 util/mixer.c:108 util/scale.c:61 util/srconv.c:754
+#: Top/argdecode.c:109 util/mixer.c:108 util/scale.c:61 util/srconv.c:753
msgid "-N\tnotify (ring the bell) when score or miditrack is done"
msgstr ""
@@ -9817,16 +9726,16 @@ msgid "-M: stdin not supported on this platform"
msgstr ""
#: Top/argdecode.c:668 Top/argdecode.c:959 util/envext.c:84 util/mixer.c:205
-#: util/scale.c:173 util/srconv.c:248 util/xtrct.c:116
+#: util/scale.c:173 util/srconv.c:247 util/xtrct.c:116
msgid "no outfilename"
msgstr ""
-#: Top/argdecode.c:671 Top/argdecode.c:963 util/scale.c:177 util/srconv.c:252
+#: Top/argdecode.c:671 Top/argdecode.c:963 util/scale.c:177 util/srconv.c:251
#: util/xtrct.c:120
msgid "-o cannot be stdin"
msgstr ""
-#: Top/argdecode.c:675 Top/argdecode.c:967 util/scale.c:180 util/srconv.c:257
+#: Top/argdecode.c:675 Top/argdecode.c:967 util/scale.c:180 util/srconv.c:256
#: util/xtrct.c:123
msgid "stdout audio not supported"
msgstr ""
@@ -9946,164 +9855,164 @@ msgstr ""
msgid "cscoreFileGetCurrent: no fp current"
msgstr ""
-#: Top/csmodule.c:192
+#: Top/csmodule.c:199
#, c-format
msgid "not loading '%s' (uses incompatible floating point type)"
msgstr ""
-#: Top/csmodule.c:201
+#: Top/csmodule.c:209
#, c-format
msgid ""
"not loading '%s' (incompatible with this version of Csound (%d.%d/%d.%d)"
msgstr ""
-#: Top/csmodule.c:244
+#: Top/csmodule.c:252
#, c-format
msgid "could not open library '%s' (%s)"
msgstr ""
-#: Top/csmodule.c:247
+#: Top/csmodule.c:255
#, c-format
msgid "could not open library '%s' (%d)"
msgstr ""
-#: Top/csmodule.c:303
+#: Top/csmodule.c:311
#, c-format
msgid "'%s' is not a Csound plugin library"
msgstr ""
-#: Top/csmodule.c:314
+#: Top/csmodule.c:322
msgid "csoundLoadExternal(): memory allocation failure"
msgstr ""
-#: Top/csmodule.c:328 Top/csmodule.c:336
+#: Top/csmodule.c:336 Top/csmodule.c:344
#, c-format
msgid "Error in pre-initialisation function of module '%s'"
msgstr ""
-#: Top/csmodule.c:599 Top/csmodule.c:605 Top/csmodule.c:616 Top/csmodule.c:623
-#: Top/csmodule.c:629 Top/csmodule.c:637
+#: Top/csmodule.c:608 Top/csmodule.c:614 Top/csmodule.c:625 Top/csmodule.c:632
+#: Top/csmodule.c:638 Top/csmodule.c:646
msgid "Error opening plugin directory\n"
msgstr ""
-#: Top/csmodule.c:687
+#: Top/csmodule.c:696
#, c-format
msgid "Error opening plugin directory '%s': %s"
msgstr ""
-#: Top/csmodule.c:722
+#: Top/csmodule.c:731
#, c-format
msgid "path name too long, skipping '%s'"
msgstr ""
-#: Top/csmodule.c:728
+#: Top/csmodule.c:737
#, c-format
msgid "Library %s omitted\n"
msgstr ""
-#: Top/csmodule.c:764
+#: Top/csmodule.c:773
msgid "Loading command-line libraries:\n"
msgstr ""
-#: Top/csmodule.c:787
+#: Top/csmodule.c:796
#, c-format
msgid " *** error loading '%s'"
msgstr ""
-#: Top/csmodule.c:810
+#: Top/csmodule.c:819
#, c-format
msgid "Error starting module '%s'"
msgstr ""
-#: Top/csmodule.c:907
+#: Top/csmodule.c:918
#, c-format
msgid "Error de-initialising module '%s'"
msgstr ""
-#: Top/csound.c:1606 Top/csound.c:1626
+#: Top/csound.c:1636 Top/csound.c:1656
msgid "Early return from csoundPerformKsmps().\n"
msgstr ""
-#: Top/csound.c:1612
+#: Top/csound.c:1642
msgid "Score finished in csoundPerformKsmps().\n"
msgstr ""
-#: Top/csound.c:1645
+#: Top/csound.c:1675
msgid "Early return from csoundPerformBuffer().\n"
msgstr ""
-#: Top/csound.c:1670
+#: Top/csound.c:1700
msgid "Early return from csoundPerform().\n"
msgstr ""
-#: Top/csound.c:1677
+#: Top/csound.c:1707
msgid "Score finished in csoundPerform().\n"
msgstr ""
-#: Top/csound.c:1697
+#: Top/csound.c:1727
msgid "csoundPerform(): stopped.\n"
msgstr ""
-#: Top/csound.c:1968
+#: Top/csound.c:1998
msgid "WARNING: "
msgstr "ATTENZIONE: "
-#: Top/csound.c:2089
+#: Top/csound.c:2119
msgid "rtdummy: failed to allocate globals"
msgstr ""
-#: Top/csound.c:2090
+#: Top/csound.c:2120
msgid "rtaudio: dummy module enabled\n"
msgstr ""
-#: Top/csound.c:2119 Top/csound.c:2155
+#: Top/csound.c:2149 Top/csound.c:2185
msgid " *** error: rtaudio module set to empty string"
msgstr ""
-#: Top/csound.c:2123 Top/csound.c:2159
+#: Top/csound.c:2153 Top/csound.c:2189
#, c-format
msgid " *** error: unknown rtaudio module: '%s'"
msgstr ""
-#: Top/csound.c:2241
+#: Top/csound.c:2271
msgid "WARNING: real time midi input disabled, using dummy functions\n"
msgstr ""
-#: Top/csound.c:2246 Top/csound.c:2280
+#: Top/csound.c:2276 Top/csound.c:2310
msgid "error: -+rtmidi set to empty string"
msgstr ""
-#: Top/csound.c:2249 Top/csound.c:2283
+#: Top/csound.c:2279 Top/csound.c:2313
#, c-format
msgid "error: -+rtmidi='%s': unknown module"
msgstr ""
-#: Top/csound.c:2275
+#: Top/csound.c:2305
msgid "WARNING: real time midi output disabled, using dummy functions\n"
msgstr ""
-#: Top/csound.c:2297
+#: Top/csound.c:2327
msgid "Unknown MIDI error"
msgstr ""
-#: Top/csound.c:2415
+#: Top/csound.c:2445
msgid "xyin not supported. use invalue opcode instead."
msgstr ""
-#: Top/csound.c:2522
+#: Top/csound.c:2552
msgid "Failed to allocate new opcode entry."
msgstr ""
-#: Top/csound.c:2545
+#: Top/csound.c:2575
#, c-format
msgid "Failed to allocate opcode entry for %s."
msgstr ""
-#: Top/csound.c:2876
+#: Top/csound.c:2906
msgid "Cannot open /proc/cpuinfo. Support for RDTSC is not available.\n"
msgstr ""
-#: Top/csound.c:2927
+#: Top/csound.c:2957
msgid "No valid CPU frequency entry was found in /proc/cpuinfo.\n"
msgstr ""
@@ -10111,25 +10020,25 @@ msgstr ""
msgid "Error allocating opcode list"
msgstr ""
-#: Top/main.c:161
+#: Top/main.c:160
#, c-format
msgid "WARNING: cannot open csoundrc file %s\n"
msgstr ""
-#: Top/main.c:164
+#: Top/main.c:163
#, c-format
msgid "Reading options from $CSOUNDRC: %s \n"
msgstr ""
-#: Top/main.c:173
+#: Top/main.c:172
msgid "Reading options from $HOME/.csoundrc\n"
msgstr ""
-#: Top/main.c:200
+#: Top/main.c:199
msgid "no orchestra name"
msgstr ""
-#: Top/main.c:225
+#: Top/main.c:224
msgid "Reading CSD failed ... stopping"
msgstr ""
@@ -10141,7 +10050,7 @@ msgstr ""
msgid "error: multiple uses of stdout"
msgstr ""
-#: Top/main.c:260 util/dnoise.c:268
+#: Top/main.c:260 util/dnoise.c:264
#, c-format
msgid "%s not a recognised SFOUTYP env setting"
msgstr ""
@@ -10154,58 +10063,62 @@ msgstr ""
msgid "realtime performance using dummy numeric scorefile\n"
msgstr ""
-#: Top/main.c:319
+#: Top/main.c:314
#, c-format
msgid "orchname: %s\n"
msgstr ""
-#: Top/main.c:321
-#, c-format
-msgid "scorename: %s\n"
+#: Top/main.c:334
+msgid "Stopping on parser failure\n"
msgstr ""
-#: Top/main.c:353
+#: Top/main.c:352
msgid "end of orchestra compile"
msgstr ""
-#: Top/main.c:360
+#: Top/main.c:359
#, c-format
msgid "using previous %s\n"
msgstr ""
-#: Top/main.c:373
+#: Top/main.c:369
#, c-format
msgid "cannot open scorefile %s"
msgstr ""
-#: Top/main.c:378 Top/main.c:399
-#, c-format
-msgid "cannot open %s for writing"
-msgstr ""
-
-#: Top/main.c:381
+#: Top/main.c:371
msgid "sorting score ...\n"
msgstr ""
-#: Top/main.c:388
+#: Top/main.c:381
#, c-format
msgid "cannot extract %s, name conflict"
msgstr ""
-#: Top/main.c:391
+#: Top/main.c:384
#, c-format
msgid "cannot open extract file %s"
msgstr ""
-#: Top/main.c:401
+#: Top/main.c:388
+#, c-format
+msgid "cannot reopen %s"
+msgstr "Impossibile riaprire %s"
+
+#: Top/main.c:392
+#, c-format
+msgid "cannot open %s for writing"
+msgstr ""
+
+#: Top/main.c:394
msgid " ... extracting ...\n"
msgstr ""
-#: Top/main.c:414
+#: Top/main.c:405
msgid "end of score sort"
msgstr ""
-#: Top/main.c:416
+#: Top/main.c:407
msgid "Syntax check completed.\n"
msgstr ""
@@ -10270,163 +10183,158 @@ msgstr ""
msgid " *** error setting option '%s' to '%s': %s\n"
msgstr ""
-#: Top/one_file.c:105 Top/one_file.c:113
+#: Top/one_file.c:110 Top/one_file.c:118
msgid " *** cannot create temporary file"
msgstr ""
-#: Top/one_file.c:198
+#: Top/one_file.c:203
#, c-format
msgid "Removing temporary file %s ...\n"
msgstr ""
-#: Top/one_file.c:202
+#: Top/one_file.c:207
#, c-format
msgid "WARNING: could not remove %s\n"
msgstr ""
-#: Top/one_file.c:268 Top/one_file.c:296
+#: Top/one_file.c:274 Top/one_file.c:302
#, c-format
msgid "More than %d arguments in <CsOptions>"
msgstr ""
-#: Top/one_file.c:313
+#: Top/one_file.c:319
#, c-format
msgid "Invalid arguments in <CsOptions>: %s"
msgstr ""
-#: Top/one_file.c:316
+#: Top/one_file.c:322
#, c-format
msgid "Invalid arguments in .csoundrc or -@ file: %s"
msgstr ""
-#: Top/one_file.c:322 Top/one_file.c:790
+#: Top/one_file.c:328 Top/one_file.c:744
msgid "Missing end tag </CsOptions>"
msgstr ""
-#: Top/one_file.c:340 Top/one_file.c:372 Top/one_file.c:420
-#, c-format
-msgid "Creating %s (%p)\n"
-msgstr ""
-
-#: Top/one_file.c:343
-#, c-format
-msgid "Failed to create %s"
-msgstr ""
-
-#: Top/one_file.c:356
+#: Top/one_file.c:354
msgid "Missing end tag </CsInstruments>"
msgstr ""
-#: Top/one_file.c:389 Top/one_file.c:442
+#: Top/one_file.c:376 Top/one_file.c:430
msgid "Missing end tag </CsScore>"
msgstr ""
-#: Top/one_file.c:403 Top/one_file.c:408
+#: Top/one_file.c:391 Top/one_file.c:396
msgid "Missing program in tag <CsScore>"
msgstr ""
-#: Top/one_file.c:433
+#: Top/one_file.c:408
+#, c-format
+msgid "Creating %s (%p)\n"
+msgstr ""
+
+#: Top/one_file.c:421
msgid "External generation failed"
msgstr ""
-#: Top/one_file.c:520
+#: Top/one_file.c:468
#, c-format
msgid "Non base64 character %c(%2x)"
msgstr ""
-#: Top/one_file.c:539
+#: Top/one_file.c:487
msgid "Truncated byte at end of base64 stream"
msgstr ""
-#: Top/one_file.c:554
+#: Top/one_file.c:503
#, c-format
msgid "Cannot open temporary file (%s) for MIDI subfile"
msgstr ""
-#: Top/one_file.c:571
+#: Top/one_file.c:520
msgid "Missing end tag </CsMidifileB>"
msgstr ""
-#: Top/one_file.c:586 Top/one_file.c:633
+#: Top/one_file.c:536 Top/one_file.c:584
#, c-format
msgid "File %s already exists"
msgstr ""
-#: Top/one_file.c:591
+#: Top/one_file.c:541
#, c-format
msgid "Cannot open sample file (%s) subfile"
msgstr ""
-#: Top/one_file.c:605
+#: Top/one_file.c:555
msgid "Missing end tag </CsSampleB>"
msgstr ""
-#: Top/one_file.c:638
+#: Top/one_file.c:589
#, c-format
msgid "Cannot open file (%s) subfile"
msgstr ""
-#: Top/one_file.c:653
+#: Top/one_file.c:604
msgid "Missing end tag </CsFileB>"
msgstr ""
-#: Top/one_file.c:672
+#: Top/one_file.c:624
#, c-format
msgid "This CSD file requires a version of Csound before %d.%02d"
msgstr ""
-#: Top/one_file.c:680 Top/one_file.c:687
+#: Top/one_file.c:632 Top/one_file.c:639
#, c-format
msgid "This CSD file requires a version of Csound after %d.%02d"
msgstr ""
-#: Top/one_file.c:693
+#: Top/one_file.c:645
msgid "Missing end tag </CsVersion>"
msgstr ""
-#: Top/one_file.c:702
+#: Top/one_file.c:655
msgid "**** Licence Information ****\n"
msgstr ""
-#: Top/one_file.c:708
+#: Top/one_file.c:661
msgid "**** End of Licence Information ****\n"
msgstr ""
-#: Top/one_file.c:719
+#: Top/one_file.c:672
msgid "Missing end tag </CsLicence>"
msgstr ""
-#: Top/one_file.c:749
+#: Top/one_file.c:703
#, c-format
msgid "Failed to open csd file: %s"
msgstr ""
-#: Top/one_file.c:764
+#: Top/one_file.c:718
msgid "STARTING FILE\n"
msgstr ""
-#: Top/one_file.c:780
+#: Top/one_file.c:734
msgid "Creating options\n"
msgstr ""
-#: Top/one_file.c:786
+#: Top/one_file.c:740
msgid "Skipping <CsOptions>\n"
msgstr ""
-#: Top/one_file.c:800
+#: Top/one_file.c:754
msgid "Creating orchestra\n"
msgstr ""
-#: Top/one_file.c:805
+#: Top/one_file.c:759
msgid "Creating score\n"
msgstr ""
-#: Top/one_file.c:839
+#: Top/one_file.c:793
#, c-format
msgid "unknown CSD tag: %s\n"
msgstr ""
-#: Top/one_file.c:844
+#: Top/one_file.c:798
msgid "Could not find <CsoundSynthesizer> tag in CSD file.\n"
msgstr ""
@@ -10600,15 +10508,15 @@ msgstr "scot: %d errori.\n"
#, c-format
msgid ""
"\n"
-" Could not open %s for writing, bye...\n"
+"Could not open %s for writing, bye...\n"
msgstr ""
#: util/atsa.c:544
msgid "saving ATS data..."
msgstr ""
-#: util/atsa.c:546 util/atsa.c:2344 util/atsa.c:2358 util/atsa.c:2368
-#: util/atsa.c:2548 util/atsa.c:2611 util/atsa.c:2699
+#: util/atsa.c:546 util/atsa.c:2354 util/atsa.c:2368 util/atsa.c:2387
+#: util/atsa.c:2567 util/atsa.c:2630 util/atsa.c:2718
msgid "done!\n"
msgstr ""
@@ -10716,181 +10624,181 @@ msgid ""
"\n"
msgstr ""
-#: util/atsa.c:1482
+#: util/atsa.c:1492
#, c-format
msgid "atsa: error opening residual file '%s'"
msgstr ""
-#: util/atsa.c:1486
+#: util/atsa.c:1496
#, c-format
msgid "atsa: residual file has %d channels, must be stereo !"
msgstr ""
-#: util/atsa.c:1813
+#: util/atsa.c:1823
#, c-format
msgid ""
"\n"
"ERROR: cannot open file %s for writing\n"
msgstr ""
-#: util/atsa.c:1908
+#: util/atsa.c:1918
msgid "Error: sound not optimised !"
msgstr ""
-#: util/atsa.c:2003
+#: util/atsa.c:2013
#, c-format
msgid "atsa: cannot open input file '%s'"
msgstr ""
-#: util/atsa.c:2010
+#: util/atsa.c:2020
#, c-format
msgid "atsa: file has %d channels, must be mono !"
msgstr ""
-#: util/atsa.c:2015
+#: util/atsa.c:2025
msgid "tracking...\n"
msgstr ""
-#: util/atsa.c:2024
+#: util/atsa.c:2034
#, c-format
msgid "start %f out of bounds, corrected to 0.0"
msgstr ""
-#: util/atsa.c:2034
+#: util/atsa.c:2044
#, c-format
msgid "duration %f out of bounds, limited to file duration"
msgstr ""
-#: util/atsa.c:2040
+#: util/atsa.c:2050
#, c-format
msgid "start: %f duration: %f file dur: %f\n"
msgstr ""
-#: util/atsa.c:2047
+#: util/atsa.c:2057
#, c-format
msgid "lowest freq. %f out of bounds, forced to default: %f"
msgstr ""
-#: util/atsa.c:2057
+#: util/atsa.c:2067
#, c-format
msgid "highest freq. %f out of bounds, forced to default: %f"
msgstr ""
-#: util/atsa.c:2064
+#: util/atsa.c:2074
#, c-format
msgid ""
"freq. dev. %f out of bounds, should be > 0.0 and <= 1.0, forced to default: "
"%f"
msgstr ""
-#: util/atsa.c:2072
+#: util/atsa.c:2082
#, c-format
msgid ""
"windows cycles %d out of bounds, should be between 1 and 8, forced to "
"default: %d"
msgstr ""
-#: util/atsa.c:2080
+#: util/atsa.c:2090
#, c-format
msgid ""
"window type %d out of bounds, should be between 0 and 3, forced to default: "
"%d"
msgstr ""
-#: util/atsa.c:2088
+#: util/atsa.c:2098
#, c-format
msgid ""
"hop size %f out of bounds, should be > 0.0 and <= 1.0, forced to default: %f"
msgstr ""
-#: util/atsa.c:2096
+#: util/atsa.c:2106
#, c-format
msgid ""
"lowest magnitude %f out of bounds, should be >= 0.0 and <= 1.0, forced to "
"default: %f"
msgstr ""
-#: util/atsa.c:2120
+#: util/atsa.c:2130
#, c-format
msgid "atsa: %d frames are not enough for analysis, need at least %d"
msgstr ""
-#: util/atsa.c:2129
+#: util/atsa.c:2139
#, c-format
msgid "track length %d out of bounds, forced to: %d"
msgstr ""
-#: util/atsa.c:2138
+#: util/atsa.c:2148
#, c-format
msgid "min. segment length %d out of bounds, forced to: %d"
msgstr ""
-#: util/atsa.c:2147
+#: util/atsa.c:2157
#, c-format
msgid "min. gap length %d out of bounds, forced to: %d"
msgstr ""
-#: util/atsa.c:2153
+#: util/atsa.c:2163
#, c-format
msgid ""
"SMR threshold %f out of bounds, should be >= 0.0 and < %f dB SPL, forced to "
"default: %f"
msgstr ""
-#: util/atsa.c:2164
+#: util/atsa.c:2174
#, c-format
msgid ""
"min. seg. SMR %f out of bounds, should be >= %f and < %f dB SPL, forced to "
"default: %f"
msgstr ""
-#: util/atsa.c:2172
+#: util/atsa.c:2182
#, c-format
msgid ""
"last peak contribution %f out of bounds, should be >= 0.0 and <= 1.0, forced "
"to default: %f"
msgstr ""
-#: util/atsa.c:2180
+#: util/atsa.c:2190
#, c-format
msgid ""
"SMR contribution %f out of bounds, should be >= 0.0 and <= 1.0, forced to "
"default: %f"
msgstr ""
-#: util/atsa.c:2325
+#: util/atsa.c:2335
msgid "Initializing ATS data..."
msgstr ""
-#: util/atsa.c:2355
+#: util/atsa.c:2365
msgid "Computing residual..."
msgstr ""
-#: util/atsa.c:2366
+#: util/atsa.c:2381 util/atsa.c:2384
msgid "Analysing residual..."
msgstr ""
-#: util/atsa.c:2370
+#: util/atsa.c:2389
msgid "tracking completed.\n"
msgstr ""
-#: util/atsa.c:2478
+#: util/atsa.c:2497
msgid "Filling sound gaps..."
msgstr ""
-#: util/atsa.c:2566
+#: util/atsa.c:2585
msgid "Trimming short partials..."
msgstr ""
-#: util/atsa.c:2662
+#: util/atsa.c:2681
msgid "Computing averages..."
msgstr ""
-#: util/atsa.c:2713
+#: util/atsa.c:2732
msgid "No partials to track -- stopping\n"
msgstr ""
-#: util/atsa.c:2813
+#: util/atsa.c:2832
msgid "Soundfile analysis for ATS opcodes"
msgstr ""
@@ -10922,8 +10830,8 @@ msgstr ""
msgid "illegal number of filenames"
msgstr ""
-#: util/cvanal.c:113 util/dnoise.c:456 util/lpanal.c:518 util/pvanal.c:258
-#: util/srconv.c:351
+#: util/cvanal.c:113 util/dnoise.c:445 util/lpanal.c:518 util/pvanal.c:258
+#: util/srconv.c:350
#, c-format
msgid "error while opening %s"
msgstr ""
@@ -10963,256 +10871,256 @@ msgstr ""
msgid "Soundfile analysis for convolve"
msgstr ""
-#: util/dnoise.c:285
+#: util/dnoise.c:281
msgid "-o cannot be stdin\n"
msgstr ""
-#: util/dnoise.c:297
+#: util/dnoise.c:293
msgid "-A overriding local default WAV out"
msgstr ""
-#: util/dnoise.c:302
+#: util/dnoise.c:298
msgid "-J overriding local default AIFF/WAV out"
msgstr ""
-#: util/dnoise.c:309
+#: util/dnoise.c:305
msgid "-W overriding local default AIFF out"
msgstr ""
-#: util/dnoise.c:356
+#: util/dnoise.c:345
msgid "no t argument"
msgstr ""
-#: util/dnoise.c:379
+#: util/dnoise.c:368
msgid "no n argument"
msgstr ""
-#: util/dnoise.c:384
+#: util/dnoise.c:373
msgid "no b argument"
msgstr ""
-#: util/dnoise.c:392
+#: util/dnoise.c:381
msgid "no B argument"
msgstr ""
-#: util/dnoise.c:404
+#: util/dnoise.c:393
msgid "no E argument"
msgstr ""
-#: util/dnoise.c:408
+#: util/dnoise.c:397
msgid "no N argument"
msgstr ""
-#: util/dnoise.c:412
+#: util/dnoise.c:401
msgid "no M argument"
msgstr ""
-#: util/dnoise.c:416
+#: util/dnoise.c:405
msgid "no L argument"
msgstr ""
-#: util/dnoise.c:420
+#: util/dnoise.c:409
msgid "no w argument"
msgstr ""
-#: util/dnoise.c:424
+#: util/dnoise.c:413
msgid "no D argument"
msgstr ""
-#: util/dnoise.c:431 util/srconv.c:328
+#: util/dnoise.c:420 util/srconv.c:327
#, c-format
msgid "Looking at %c\n"
msgstr ""
-#: util/dnoise.c:438 util/srconv.c:336
+#: util/dnoise.c:427 util/srconv.c:335
#, c-format
msgid "Infile set to %s\n"
msgstr ""
-#: util/dnoise.c:441 util/srconv.c:339
+#: util/dnoise.c:430 util/srconv.c:338
#, c-format
msgid "End with %s\n"
msgstr ""
-#: util/dnoise.c:447
+#: util/dnoise.c:436
msgid "dnoise: no input file\n"
msgstr ""
-#: util/dnoise.c:451
+#: util/dnoise.c:440
msgid "Must have an example noise file (-i name)\n"
msgstr ""
-#: util/dnoise.c:479
+#: util/dnoise.c:468
#, c-format
msgid "cannot open %s.\n"
msgstr ""
-#: util/dnoise.c:491 util/srconv.c:461 util/srconv.c:473
+#: util/dnoise.c:480 util/srconv.c:460 util/srconv.c:472
#, c-format
msgid "cannot open %s."
msgstr "Impossibile aprire %s."
-#: util/dnoise.c:510
+#: util/dnoise.c:499
msgid "dnoise: input MUST be mono or stereo\n"
msgstr ""
-#: util/dnoise.c:518
+#: util/dnoise.c:507
msgid "dnoise: cannot open noise reference file\n"
msgstr ""
-#: util/dnoise.c:523
+#: util/dnoise.c:512
msgid "Incompatible sample rates\n"
msgstr ""
-#: util/dnoise.c:542
+#: util/dnoise.c:531
#, c-format
msgid "dnoise: warning - N not a valid power of two; revised N = %d\n"
msgstr ""
-#: util/dnoise.c:552
+#: util/dnoise.c:541
msgid "dnoise: warning - do not specify both M and W\n"
msgstr ""
-#: util/dnoise.c:562
+#: util/dnoise.c:551
msgid "dnoise: warning - invalid W ignored\n"
msgstr ""
-#: util/dnoise.c:576
+#: util/dnoise.c:565
msgid "dnoise: warning - M is too small\n"
msgstr ""
-#: util/dnoise.c:586
+#: util/dnoise.c:575
msgid "dnoise: M too large\n"
msgstr ""
-#: util/dnoise.c:592
+#: util/dnoise.c:581
msgid "dnoise: L too large\n"
msgstr ""
-#: util/dnoise.c:602
+#: util/dnoise.c:591
#, c-format
msgid "writing %u-byte blks of %s to %s"
msgstr ""
-#: util/dnoise.c:627 util/dnoise.c:666 util/dnoise.c:721 util/dnoise.c:732
-#: util/dnoise.c:736 util/dnoise.c:743 util/dnoise.c:753 util/dnoise.c:758
-#: util/dnoise.c:762 util/dnoise.c:766 util/dnoise.c:770
+#: util/dnoise.c:616 util/dnoise.c:655 util/dnoise.c:710 util/dnoise.c:721
+#: util/dnoise.c:725 util/dnoise.c:732 util/dnoise.c:742 util/dnoise.c:747
+#: util/dnoise.c:751 util/dnoise.c:755 util/dnoise.c:759
msgid "dnoise: insufficient memory\n"
msgstr ""
-#: util/dnoise.c:779 util/dnoise.c:788
+#: util/dnoise.c:768 util/dnoise.c:777
msgid "dnoise: begin time is greater than EOF of noise file!"
msgstr ""
-#: util/dnoise.c:820
+#: util/dnoise.c:809
msgid "dnoise: not enough samples of noise reference\n"
msgstr ""
-#: util/dnoise.c:1118
+#: util/dnoise.c:1103
#, c-format
msgid "%5.1f seconds of input complete\n"
msgstr ""
-#: util/dnoise.c:1137
+#: util/dnoise.c:1122
msgid "processing complete\n"
msgstr ""
-#: util/dnoise.c:1147
+#: util/dnoise.c:1132
msgid "usage: dnoise [flags] input_file"
msgstr ""
-#: util/dnoise.c:1149
+#: util/dnoise.c:1134
msgid "flags:"
msgstr "flags:"
-#: util/dnoise.c:1150
+#: util/dnoise.c:1135
msgid "i = noise reference soundfile"
msgstr ""
-#: util/dnoise.c:1151
+#: util/dnoise.c:1136
msgid "o = output file"
msgstr ""
-#: util/dnoise.c:1152
+#: util/dnoise.c:1137
msgid "N = # of bandpass filters (1024)"
msgstr ""
-#: util/dnoise.c:1153
+#: util/dnoise.c:1138
msgid "w = filter overlap factor: {0,1,(2),3} DON'T USE -w AND -M"
msgstr ""
-#: util/dnoise.c:1154
+#: util/dnoise.c:1139
msgid "M = analysis window length (N-1 unless -w is specified)"
msgstr ""
-#: util/dnoise.c:1155
+#: util/dnoise.c:1140
msgid "L = synthesis window length (M)"
msgstr ""
-#: util/dnoise.c:1156
+#: util/dnoise.c:1141
msgid "D = decimation factor (M/8)"
msgstr ""
-#: util/dnoise.c:1157
+#: util/dnoise.c:1142
msgid "b = begin time in noise reference soundfile (0)"
msgstr ""
-#: util/dnoise.c:1158
+#: util/dnoise.c:1143
msgid "B = starting sample in noise reference soundfile (0)"
msgstr ""
-#: util/dnoise.c:1159
+#: util/dnoise.c:1144
msgid "e = end time in noise reference soundfile (end)"
msgstr ""
-#: util/dnoise.c:1160
+#: util/dnoise.c:1145
msgid "E = final sample in noise reference soundfile (end)"
msgstr ""
-#: util/dnoise.c:1161
+#: util/dnoise.c:1146
msgid "t = threshold above noise reference in dB (30)"
msgstr ""
-#: util/dnoise.c:1162
+#: util/dnoise.c:1147
msgid "S = sharpness of noise-gate turnoff (1) (1 to 5)"
msgstr ""
-#: util/dnoise.c:1163
+#: util/dnoise.c:1148
msgid "n = number of FFT frames to average over (5)"
msgstr ""
-#: util/dnoise.c:1164
+#: util/dnoise.c:1149
msgid "m = minimum gain of noise-gate when off in dB (-40)"
msgstr ""
-#: util/dnoise.c:1165
+#: util/dnoise.c:1150
msgid "V : verbose - print status info"
msgstr ""
-#: util/dnoise.c:1166
+#: util/dnoise.c:1151
msgid "A : AIFF format output"
msgstr ""
-#: util/dnoise.c:1167
+#: util/dnoise.c:1152
msgid "W : WAV format output"
msgstr ""
-#: util/dnoise.c:1168
+#: util/dnoise.c:1153
msgid "J : IRCAM format output"
msgstr ""
-#: util/dnoise.c:1187
+#: util/dnoise.c:1172
#, c-format
msgid "soundfile write returned sample count of %d, not %d\n"
msgstr ""
-#: util/dnoise.c:1189
+#: util/dnoise.c:1174
msgid ""
"(disk may be full...\n"
" closing the file ...)\n"
msgstr ""
-#: util/dnoise.c:1257
+#: util/dnoise.c:1242
msgid "Removes noise from a sound file"
msgstr ""
@@ -11220,7 +11128,7 @@ msgstr ""
msgid "Usage:\tenvext [-flags] soundfile\n"
msgstr ""
-#: util/envext.c:54 util/srconv.c:738
+#: util/envext.c:54 util/srconv.c:737
msgid "-o fnam\tsound output filename\n"
msgstr ""
@@ -11254,7 +11162,7 @@ msgstr ""
msgid "enveloping %ld sample frames (%3.1f secs)\n"
msgstr ""
-#: util/envext.c:179
+#: util/envext.c:177
msgid "Create a text file of envelope"
msgstr ""
@@ -11668,7 +11576,7 @@ msgstr ""
msgid "Legal flags are:"
msgstr ""
-#: util/mixer.c:107 util/scale.c:60 util/srconv.c:753
+#: util/mixer.c:107 util/scale.c:60 util/srconv.c:752
msgid "-H#\tprint a heartbeat style 1, 2 or 3 at each soundfile write"
msgstr ""
@@ -11708,7 +11616,7 @@ msgstr ""
msgid "mixer: error: "
msgstr "mixer: errore: "
-#: util/mixer.c:188 util/scale.c:161 util/srconv.c:232
+#: util/mixer.c:188 util/scale.c:161 util/srconv.c:231
#, c-format
msgid "%s not a recognized SFOUTYP env setting"
msgstr ""
@@ -11937,17 +11845,17 @@ msgstr ""
msgid "Soundfile analysis for pvoc"
msgstr ""
-#: util/pvanal.c:469
+#: util/pvanal.c:467
#, c-format
msgid "pvxanal: unable to create analysis file: %s"
msgstr ""
-#: util/pvanal.c:500 util/pvanal.c:532
+#: util/pvanal.c:498 util/pvanal.c:530
#, c-format
msgid "pvxanal: error writing analysis frames: %s\n"
msgstr ""
-#: util/pvanal.c:542
+#: util/pvanal.c:540
#, c-format
msgid ""
"\n"
@@ -12037,7 +11945,7 @@ msgstr ""
msgid "-P fpnum\tscale file to given percentage of full"
msgstr ""
-#: util/scale.c:62 util/srconv.c:755
+#: util/scale.c:62 util/srconv.c:754
msgid "-- fnam\tlog output to file"
msgstr ""
@@ -12188,75 +12096,75 @@ msgstr ""
msgid "Sound format -%c has been overruled by -%c"
msgstr ""
-#: util/srconv.c:299
+#: util/srconv.c:298
msgid "No Q argument"
msgstr ""
-#: util/srconv.c:304
+#: util/srconv.c:303
msgid "No P argument"
msgstr ""
-#: util/srconv.c:313
+#: util/srconv.c:312
msgid "No r argument"
msgstr ""
-#: util/srconv.c:322
+#: util/srconv.c:321
msgid "No break file"
msgstr ""
-#: util/srconv.c:345
+#: util/srconv.c:344
msgid "No input given\n"
msgstr ""
-#: util/srconv.c:362
+#: util/srconv.c:361
msgid "srconv: cannot specify both -r and -P"
msgstr ""
-#: util/srconv.c:373
+#: util/srconv.c:372
msgid "srconv: cannot open time-vary function file"
msgstr ""
-#: util/srconv.c:389
+#: util/srconv.c:388
msgid "srconv: too few x-y pairs in time-vary function file"
msgstr ""
-#: util/srconv.c:403
+#: util/srconv.c:402
msgid "srconv: first x value in time-vary function must be 0"
msgstr ""
-#: util/srconv.c:408
+#: util/srconv.c:407
msgid "srconv: invalid initial y value in time-vary function"
msgstr ""
-#: util/srconv.c:413 util/srconv.c:705
+#: util/srconv.c:412 util/srconv.c:704
msgid "srconv: invalid x values in time-vary function"
msgstr ""
-#: util/srconv.c:732
+#: util/srconv.c:731
msgid ""
"usage: srconv [flags] infile\n"
"\n"
"flags:"
msgstr ""
-#: util/srconv.c:733
+#: util/srconv.c:732
msgid ""
"-P num\tpitch transposition ratio (srate/r) [do not specify both P and r]"
msgstr ""
-#: util/srconv.c:735
+#: util/srconv.c:734
msgid "-Q num\tquality factor (1 to 8: default = 2)"
msgstr ""
-#: util/srconv.c:736
+#: util/srconv.c:735
msgid "-i filnam\tbreak file"
msgstr ""
-#: util/srconv.c:737
+#: util/srconv.c:736
msgid "-r num\toutput sample rate (must be specified)"
msgstr ""
-#: util/srconv.c:821
+#: util/srconv.c:820
msgid "Sample rate conversion"
msgstr ""
@@ -12408,6 +12316,76 @@ msgid "Extract part of a sound file"
msgstr ""
#, fuzzy
+#~ msgid "tableseg: not initialized"
+#~ msgstr "tableseg: non inizializzato"
+
+#, fuzzy
+#~ msgid "tablexseg: not initialized"
+#~ msgstr "tablexseg: non inizializzato"
+
+#, fuzzy
+#~ msgid "vdelayk: not initialized"
+#~ msgstr "delayk: non inizializzato"
+
+#, fuzzy
+#~ msgid " line %d: %s"
+#~ msgstr ", linea %d:\n"
+
+#, fuzzy
+#~ msgid "Includes nested too deeply"
+#~ msgstr "inclusioni innestate troppo in profondità "
+
+#, fuzzy
+#~ msgid "Line %d: Unknown character: '%c'(%2x)\n"
+#~ msgstr "Linea %d: carattere sconosciuto: '%s'\n"
+
+#~ msgid "Cannot open file \"%s\"\n"
+#~ msgstr "Non è possibile aprire il file: \"%s\"\n"
+
+#~ msgid "No number following instr\n"
+#~ msgstr "instr non è seguito da nessun numero\n"
+
+#~ msgid "cannot find end of file %s"
+#~ msgstr "impossibile trovare la fine del file %s"
+
+#~ msgid "ftell error on %s"
+#~ msgstr "errore ftell in %s"
+
+#~ msgid " included from line %d of file input %s%s"
+#~ msgstr " incluso dalla linea %d del file di input %s%s"
+
+#~ msgid " called from line %d of file input %s%s"
+#~ msgstr " chiamata dalla linea %d del file di input %s%s"
+
+#~ msgid " in line %d of file input %s%s"
+#~ msgstr " alla linea %d del file di input %s%s"
+
+#~ msgid "ungetscochar(): buffer overflow"
+#~ msgstr "ungetscochar(): buffer overflow"
+
+#~ msgid "Loop cannot start inside of a macro"
+#~ msgstr "Il loop non può partire da dentro una macro"
+
+#~ msgid "Repeat cannot start inside of a macro (ignored)"
+#~ msgstr "Repeat non può partire da dentro una macro (ignorato)"
+
+#~ msgid "Ignoring name %s not in file\n"
+#~ msgstr "Ignorato il nome %s non è nel file\n"
+
+#~ msgid "cannot open input file %s"
+#~ msgstr "Non è possibile aprire il file di input %s"
+
+#, fuzzy
+#~ msgid "rtaudio: AuHAL module enabled\n"
+#~ msgstr "rtaudio: modulo ALSA abilitato\n"
+
+#~ msgid "No"
+#~ msgstr "No"
+
+#~ msgid "Yes"
+#~ msgstr "Si"
+
+#, fuzzy
#~ msgid "csound_orcerror on line %d: %s\n"
#~ msgstr "%s: errore: %s\n"
diff --git a/po/romanian.po b/po/romanian.po
index 4d249f5..a2186d2 100644
--- a/po/romanian.po
+++ b/po/romanian.po
@@ -32,22 +32,22 @@ msgstr ""
msgid "auxlist for instr %d (%p):\n"
msgstr ""
-#: Engine/auxfd.c:153
+#: Engine/auxfd.c:154
#, c-format
msgid "\tauxch at %p: size %ld, auxp %p, endp %p\n"
msgstr ""
-#: Engine/auxfd.c:165
+#: Engine/auxfd.c:166
#, c-format
msgid "fdlist for instr %s [%d] (%p):"
msgstr ""
-#: Engine/auxfd.c:168
+#: Engine/auxfd.c:169
#, c-format
msgid "fdlist for instr %d (%p):"
msgstr ""
-#: Engine/auxfd.c:171
+#: Engine/auxfd.c:172
#, c-format
msgid " fd %p in %p"
msgstr ""
@@ -100,356 +100,316 @@ msgstr ""
msgid "(unknown error)"
msgstr ""
-#: Engine/csound_orc_compile.c:214 Engine/rdorch.c:1832
+#: Engine/csound_orc_compile.c:138
+#, c-format
+msgid ""
+"input arg %d '%s' of type %s not allowed when expecting %c (for opcode %s), "
+"line %d\n"
+msgstr ""
+
+#: Engine/csound_orc_compile.c:265 Engine/rdorch.c:1862
msgid "missing or extra arg"
msgstr ""
-#: Engine/csound_orc_compile.c:218
+#: Engine/csound_orc_compile.c:269
msgid "too many input args\n"
msgstr ""
-#: Engine/csound_orc_compile.c:475
+#: Engine/csound_orc_compile.c:304
#, c-format
-msgid "create_opcode: No rule to handle statement of type %d\n"
+msgid "input arg '%s' used before defined (in opcode %s), line %d\n"
msgstr ""
-#: Engine/csound_orc_compile.c:671
+#: Engine/csound_orc_compile.c:380
#, c-format
-msgid "create_instrument: instr num %ld\n"
+msgid ""
+"output name previously used, type '%c' must be uniquely defined, line %d"
msgstr ""
-#: Engine/csound_orc_compile.c:681
+#: Engine/csound_orc_compile.c:386
#, c-format
-msgid "create_instrument: instr name %s\n"
+msgid "output arg '%s' illegal type (for opcode %s), line %d\n"
msgstr ""
-#: Engine/csound_orc_compile.c:688 Engine/otran.c:351
-msgid "invalid name for instrument"
-msgstr ""
-
-#: Engine/csound_orc_compile.c:692 Engine/otran.c:356
+#: Engine/csound_orc_compile.c:541
#, c-format
-msgid "instr %s redefined"
+msgid "create_opcode: No rule to handle statement of type %d\n"
msgstr ""
-#: Engine/csound_orc_compile.c:833 Engine/otran.c:145 Engine/symbtab.c:394
+#: Engine/csound_orc_compile.c:738
#, c-format
-msgid "invalid input type for opcode %s"
+msgid "create_instrument: instr num %ld\n"
msgstr ""
-#: Engine/csound_orc_compile.c:838 Engine/otran.c:150 Engine/symbtab.c:399
+#: Engine/csound_orc_compile.c:748
#, c-format
-msgid "too many input args for opcode %s"
+msgid "create_instrument: instr name %s\n"
msgstr ""
-#: Engine/csound_orc_compile.c:853 Engine/otran.c:165 Engine/symbtab.c:414
-#, c-format
-msgid "too many output args for opcode %s"
+#: Engine/csound_orc_compile.c:755 Engine/otran.c:364
+msgid "invalid name for instrument"
msgstr ""
-#: Engine/csound_orc_compile.c:869 Engine/otran.c:187 Engine/symbtab.c:433
+#: Engine/csound_orc_compile.c:759 Engine/otran.c:370
#, c-format
-msgid "invalid output type for opcode %s"
+msgid "instr %s redefined"
msgstr ""
-#: Engine/csound_orc_compile.c:954 Engine/otran.c:339
+#: Engine/csound_orc_compile.c:903 Engine/otran.c:352
#, c-format
msgid "instr %ld redefined"
msgstr ""
-#: Engine/csound_orc_compile.c:964
+#: Engine/csound_orc_compile.c:914
msgid "!!! csound->opcodeInfo is NULL !!!\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1111
+#: Engine/csound_orc_compile.c:1083
#, c-format
msgid "Unknown TREE node of type %d found in root.\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1168 Engine/otran.c:565 Engine/otran.c:1414
+#: Engine/csound_orc_compile.c:1140 Engine/otran.c:579 Engine/otran.c:1433
#, c-format
msgid "%s invalid sample rate"
msgstr ""
-#: Engine/csound_orc_compile.c:1170 Engine/otran.c:567 Engine/otran.c:1416
+#: Engine/csound_orc_compile.c:1142 Engine/otran.c:581 Engine/otran.c:1435
#, c-format
msgid "%s invalid control rate"
msgstr ""
-#: Engine/csound_orc_compile.c:1173 Engine/otran.c:570 Engine/otran.c:1412
+#: Engine/csound_orc_compile.c:1146 Engine/otran.c:584 Engine/otran.c:1431
#, c-format
msgid "%s invalid ksmps value"
msgstr ""
-#: Engine/csound_orc_compile.c:1176 Engine/otran.c:572 Engine/otran.c:1418
+#: Engine/csound_orc_compile.c:1149 Engine/otran.c:587 Engine/otran.c:1437
#, c-format
msgid "%s inconsistent sr, kr, ksmps"
msgstr ""
-#: Engine/csound_orc_compile.c:1190
+#: Engine/csound_orc_compile.c:1165
msgid "perf-pass statements illegal in header blk\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1195
+#: Engine/csound_orc_compile.c:1170
#, c-format
msgid "%d syntax errors in orchestra. compilation invalid\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1255 Engine/otran.c:656
+#: Engine/csound_orc_compile.c:1230 Engine/otran.c:671
msgid "inconsistent argoff sumcount"
msgstr ""
-#: Engine/csound_orc_compile.c:1327 Engine/otran.c:725
+#: Engine/csound_orc_compile.c:1302 Engine/otran.c:740
#, c-format
msgid "LABELS list is full...extending to %d\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1365 Engine/otran.c:763
+#: Engine/csound_orc_compile.c:1340 Engine/otran.c:778
#, c-format
msgid "GOTOS list is full..extending to %d\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1398 Engine/otran.c:796
+#: Engine/csound_orc_compile.c:1373 Engine/otran.c:811
#, c-format
msgid "target label '%s' not found"
msgstr ""
-#: Engine/csound_orc_compile.c:1463 Engine/otran.c:851
+#: Engine/csound_orc_compile.c:1451 Engine/otran.c:866
#, c-format
msgid "string syntax '%s'"
msgstr ""
-#: Engine/csound_orc_compile.c:1513 Engine/otran.c:901
+#: Engine/csound_orc_compile.c:1501 Engine/otran.c:916
#, c-format
msgid "numeric syntax '%s'"
msgstr ""
-#: Engine/csound_orc_compile.c:1539 Engine/otran.c:927
+#: Engine/csound_orc_compile.c:1527 Engine/otran.c:942
#, c-format
msgid "extending Floating pool to %d\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1578 Engine/otran.c:999
+#: Engine/csound_orc_compile.c:1566 Engine/otran.c:1018
msgid "gblnamset(): memory allocation failure"
msgstr ""
-#: Engine/csound_orc_compile.c:1606 Engine/otran.c:1027
+#: Engine/csound_orc_compile.c:1594 Engine/otran.c:1046
msgid "lclnamset(): memory allocation failure"
msgstr ""
-#: Engine/csound_orc_compile.c:1632 Engine/otran.c:1052
+#: Engine/csound_orc_compile.c:1620 Engine/otran.c:1071
msgid "unexpected global name"
msgstr ""
-#: Engine/csound_orc_compile.c:1655 Engine/otran.c:1074
+#: Engine/csound_orc_compile.c:1643 Engine/otran.c:1093
msgid "unknown nametype"
msgstr ""
-#: Engine/csound_orc.l:239
+#: Engine/csound_orc_expressions.c:459
#, c-format
-msgid "unterminated string found on line %d >>%s<<\n"
+msgid "error: function %s with arg type %c not found, line %d \n"
msgstr ""
-#: Engine/csound_orc.l:259 Engine/csound_orc.l:286 Engine/csound_orc.l:314
-#: Engine/csound_orc.l:367 Engine/rdorch.c:901 Engine/sread.c:396
+#: Engine/csound_orc_expressions.c:862
#, c-format
-msgid "Undefined macro: '%s'"
+msgid "error: non-existent statement in conditional, line %d \n"
msgstr ""
-#: Engine/csound_orc.l:265 Engine/csound_orc.l:292
-msgid "Includes nested too deeply"
-msgstr ""
-
-#: Engine/csound_orc.l:335 Engine/csound_orc.l:388 Engine/rdorch.c:940
+#: Engine/csound_orc_semantics.c:157
#, c-format
msgid ""
-"Missing argument terminator\n"
-"%.98s"
-msgstr ""
-
-#: Engine/csound_orc.l:484
-#, c-format
-msgid "Line %d: Unknown character: '%c'(%2x)\n"
-msgstr ""
-
-#: Engine/csound_orc.l:527
-#, c-format
-msgid "Cannot open file \"%s\"\n"
-msgstr ""
-
-#: Engine/csound_orc.l:573 Engine/rdorch.c:689 Engine/sread.c:1595
-msgid "macro error\n"
-msgstr ""
-
-#: Engine/csound_orc.l:631 Engine/rdorch.c:845 Engine/sread.c:1686
-#, c-format
-msgid "macro %s undefined\n"
-msgstr ""
-
-#: Engine/csound_orc.l:645 Engine/rdorch.c:859 Engine/sread.c:294
-msgid "Undefining undefined macro"
-msgstr ""
-
-#: Engine/csound_orc.l:786 Engine/rdorch.c:413 Engine/sread.c:741
-#, c-format
-msgid "Macro definition for %*s\n"
-msgstr ""
-
-#: Engine/csound_orc.l:789 Engine/rdorch.c:416
-msgid "Invalid macro name for --omacro"
-msgstr ""
-
-#: Engine/csound_orc.y:270
-msgid "No number following instr\n"
+"\n"
+"error: %s (token \"%s\")"
msgstr ""
-#: Engine/csound_orc_semantics.c:127
+#: Engine/csound_orc_semantics.c:159
#, c-format
-msgid "error: %s (token \"%s\")"
+msgid ""
+" line %d:\n"
+">>>"
msgstr ""
-#: Engine/csound_orc_semantics.c:129
+#: Engine/csound_orc_semantics.c:732
#, c-format
-msgid " line %d: %s"
+msgid "insufficient required arguments for opcode %s on line %d\n"
msgstr ""
-#: Engine/csound_orc_semantics.c:702 Engine/rdorch.c:1863
-msgid "insufficient required arguments"
-msgstr ""
-
-#: Engine/csound_orc_semantics.c:768 Engine/rdorch.c:1617 Engine/rdorch.c:1635
-#: Engine/rdorch.c:1676 Engine/rdorch.c:1811 Engine/rdorch.c:1980
+#: Engine/csound_orc_semantics.c:797 Engine/rdorch.c:1644 Engine/rdorch.c:1662
+#: Engine/rdorch.c:1703 Engine/rdorch.c:1841 Engine/rdorch.c:2011
#, c-format
msgid "modified opcod: %s"
msgstr ""
-#: Engine/cs_par_dispatch.c:113 Engine/cs_par_dispatch.c:125
+#: Engine/cs_par_dispatch.c:115 Engine/cs_par_dispatch.c:128
#, c-format
msgid "Poorly specified global lock index: %i [max: %i]\n"
msgstr ""
-#: Engine/cs_par_dispatch.c:138 Engine/cs_par_dispatch.c:157
+#: Engine/cs_par_dispatch.c:142 Engine/cs_par_dispatch.c:162
msgid "Invalid NULL parameter name for a global variable\n"
msgstr ""
-#: Engine/cs_par_dispatch.c:505 Engine/cs_par_dispatch.c:528
-#: Engine/cs_par_dispatch.c:2463 Engine/cs_par_dispatch.c:2507
-#: Engine/cs_par_dispatch.c:2509 Engine/cs_par_dispatch.c:2570
+#: Engine/cs_par_dispatch.c:526 Engine/cs_par_dispatch.c:553
+#: Engine/cs_par_dispatch.c:2543 Engine/cs_par_dispatch.c:2588
+#: Engine/cs_par_dispatch.c:2590 Engine/cs_par_dispatch.c:2654
msgid "Invalid NULL Parameter entry"
msgstr ""
-#: Engine/cs_par_dispatch.c:507 Engine/cs_par_dispatch.c:541
-#: Engine/cs_par_dispatch.c:566 Engine/cs_par_dispatch.c:605
+#: Engine/cs_par_dispatch.c:528 Engine/cs_par_dispatch.c:567
+#: Engine/cs_par_dispatch.c:594 Engine/cs_par_dispatch.c:635
msgid "Invalid NULL Parameter name"
msgstr ""
-#: Engine/cs_par_dispatch.c:512
+#: Engine/cs_par_dispatch.c:535
msgid "Failed to allocate Opcode Weight cache entry"
msgstr ""
-#: Engine/cs_par_dispatch.c:632 Engine/cs_par_dispatch.c:718
+#: Engine/cs_par_dispatch.c:664 Engine/cs_par_dispatch.c:755
msgid "No Weights to Dump (Using Defaults)\n"
msgstr ""
-#: Engine/cs_par_dispatch.c:670 Engine/cs_par_dispatch.c:794
+#: Engine/cs_par_dispatch.c:705 Engine/cs_par_dispatch.c:835
#, c-format
msgid "Opcode Weight Spec File not found at: %s"
msgstr ""
-#: Engine/cs_par_dispatch.c:722
+#: Engine/cs_par_dispatch.c:759
msgid "Weights Dump\n"
msgstr ""
-#: Engine/cs_par_dispatch.c:866
+#: Engine/cs_par_dispatch.c:907
#, c-format
msgid "Parallel Spec File not found at: %s"
msgstr ""
-#: Engine/cs_par_dispatch.c:872
+#: Engine/cs_par_dispatch.c:913
msgid "Parallel Spec File invalid format expected weight_min parameter"
msgstr ""
-#: Engine/cs_par_dispatch.c:877
+#: Engine/cs_par_dispatch.c:918
msgid "Parallel Spec File invalid format expected weight_max parameter"
msgstr ""
-#: Engine/cs_par_dispatch.c:881
+#: Engine/cs_par_dispatch.c:922
msgid "Parallel Spec File invalid format expected roots_avail_min parameter"
msgstr ""
-#: Engine/cs_par_dispatch.c:885
+#: Engine/cs_par_dispatch.c:926
msgid "Parallel Spec File invalid format expected roots_avail_max parameter"
msgstr ""
-#: Engine/cs_par_dispatch.c:961 Engine/cs_par_dispatch.c:985
-#: Engine/cs_par_dispatch.c:1109 Engine/cs_par_dispatch.c:1195
-#: Engine/cs_par_dispatch.c:1332 Engine/cs_par_dispatch.c:1366
-#: Engine/cs_par_dispatch.c:1383 Engine/cs_par_dispatch.c:1405
-#: Engine/cs_par_dispatch.c:1432 Engine/cs_par_dispatch.c:1452
-#: Engine/cs_par_dispatch.c:1476 Engine/cs_par_dispatch.c:1566
-#: Engine/cs_par_dispatch.c:1621 Engine/cs_par_dispatch.c:1714
-#: Engine/cs_par_dispatch.c:1769 Engine/cs_par_dispatch.c:2597
+#: Engine/cs_par_dispatch.c:1003 Engine/cs_par_dispatch.c:1027
+#: Engine/cs_par_dispatch.c:1155 Engine/cs_par_dispatch.c:1251
+#: Engine/cs_par_dispatch.c:1405 Engine/cs_par_dispatch.c:1439
+#: Engine/cs_par_dispatch.c:1456 Engine/cs_par_dispatch.c:1478
+#: Engine/cs_par_dispatch.c:1506 Engine/cs_par_dispatch.c:1528
+#: Engine/cs_par_dispatch.c:1552 Engine/cs_par_dispatch.c:1644
+#: Engine/cs_par_dispatch.c:1699 Engine/cs_par_dispatch.c:1792
+#: Engine/cs_par_dispatch.c:1847 Engine/cs_par_dispatch.c:2681
msgid "Invalid NULL Parameter dag"
msgstr ""
-#: Engine/cs_par_dispatch.c:966
+#: Engine/cs_par_dispatch.c:1008
msgid "Failed to allocate dag"
msgstr ""
-#: Engine/cs_par_dispatch.c:1017 Engine/cs_par_dispatch.c:1040
-#: Engine/cs_par_dispatch.c:1062 Engine/cs_par_dispatch.c:1064
+#: Engine/cs_par_dispatch.c:1060 Engine/cs_par_dispatch.c:1083
+#: Engine/cs_par_dispatch.c:1105 Engine/cs_par_dispatch.c:1107
msgid "Invalid NULL Parameter dag_node"
msgstr ""
-#: Engine/cs_par_dispatch.c:1019
+#: Engine/cs_par_dispatch.c:1062
msgid "Invalid NULL Parameter instr"
msgstr ""
-#: Engine/cs_par_dispatch.c:1021
+#: Engine/cs_par_dispatch.c:1064
msgid "Invalid NULL Parameter insds"
msgstr ""
-#: Engine/cs_par_dispatch.c:1026 Engine/cs_par_dispatch.c:1048
+#: Engine/cs_par_dispatch.c:1069 Engine/cs_par_dispatch.c:1091
msgid "Failed to allocate dag_node"
msgstr ""
-#: Engine/cs_par_dispatch.c:1043
+#: Engine/cs_par_dispatch.c:1086
msgid "Invalid Parameter count must be greater than 0"
msgstr ""
-#: Engine/cs_par_dispatch.c:1175 Engine/cs_par_dispatch.c:1433
-#: Engine/cs_par_dispatch.c:2465 Engine/cs_par_dispatch.c:2571
-#: Engine/cs_par_dispatch.c:2598
+#: Engine/cs_par_dispatch.c:1229 Engine/cs_par_dispatch.c:1508
+#: Engine/cs_par_dispatch.c:2545 Engine/cs_par_dispatch.c:2655
+#: Engine/cs_par_dispatch.c:2682
msgid "Invalid NULL Parameter chain"
msgstr ""
-#: Engine/cs_par_dispatch.c:1183
+#: Engine/cs_par_dispatch.c:1237
#, c-format
msgid "Failed to find semantic information for instrument '%i'"
msgstr ""
-#: Engine/cs_par_dispatch.c:1478
+#: Engine/cs_par_dispatch.c:1554
msgid "Invalid NULL Parameter node"
msgstr ""
-#: Engine/cs_par_dispatch.c:1480
+#: Engine/cs_par_dispatch.c:1556
msgid "Invalid NULL Parameter update_hdl"
msgstr ""
-#: Engine/cs_par_dispatch.c:1569
+#: Engine/cs_par_dispatch.c:1647
msgid "Invalid Parameter update_hdl is outside the DAG range"
msgstr ""
-#: Engine/cs_par_dispatch.c:2417
+#: Engine/cs_par_dispatch.c:2497
#, c-format
msgid "Parallel Dump File not found at: %s for writing"
msgstr ""
-#: Engine/cs_par_dispatch.c:2477
+#: Engine/cs_par_dispatch.c:2557
msgid "Failed to allocate Dag2 cache entry"
msgstr ""
-#: Engine/cs_par_dispatch.c:2527
+#: Engine/cs_par_dispatch.c:2610
msgid "Cache Update\n"
msgstr ""
@@ -463,12 +423,12 @@ msgstr ""
msgid "Creating search path cache for '%s':"
msgstr ""
-#: Engine/envvar.c:1082
+#: Engine/envvar.c:1083
#, c-format
msgid "internal error: csoundFileOpen(): invalid type: %d"
msgstr ""
-#: Engine/envvar.c:1264
+#: Engine/envvar.c:1266
#, c-format
msgid "internal error: csoundCreateFileHandle(): invalid type: %d"
msgstr ""
@@ -526,345 +486,346 @@ msgstr ""
msgid "expression syntax"
msgstr ""
-#: Engine/fgens.c:95
+#: Engine/fgens.c:91
msgid "unknown GEN number"
msgstr ""
-#: Engine/fgens.c:137
+#: Engine/fgens.c:133
msgid "ftable does not exist"
msgstr ""
-#: Engine/fgens.c:142
+#: Engine/fgens.c:138
#, c-format
msgid "ftable %d now deleted\n"
msgstr ""
-#: Engine/fgens.c:157 Engine/fgens.c:1597 Engine/fgens.c:1683
-#: Engine/fgens.c:1762 Engine/fgens.c:1878 Engine/fgens.c:1959
-#: Engine/fgens.c:2867
+#: Engine/fgens.c:153 Engine/fgens.c:1593 Engine/fgens.c:1679
+#: Engine/fgens.c:1758 Engine/fgens.c:1874 Engine/fgens.c:1955
+#: Engine/fgens.c:2909
msgid "insufficient gen arguments"
msgstr ""
-#: Engine/fgens.c:183 Opcodes/ftgen.c:116
+#: Engine/fgens.c:179 Opcodes/ftgen.c:116
#, c-format
msgid "Named gen \"%s\" not defined"
msgstr ""
-#: Engine/fgens.c:190
+#: Engine/fgens.c:186
msgid "illegal gen number"
msgstr ""
-#: Engine/fgens.c:198
-msgid "deferred size for GENs 1, 23 or 28 only"
+#: Engine/fgens.c:194
+msgid "deferred size for GENs 1, 23, 28 or 49 only"
msgstr ""
-#: Engine/fgens.c:201 Engine/fgens.c:249
+#: Engine/fgens.c:197 Engine/fgens.c:245
#, c-format
msgid "ftable %d:\n"
msgstr ""
-#: Engine/fgens.c:226 Engine/fgens.c:233
+#: Engine/fgens.c:222 Engine/fgens.c:229
msgid "illegal table length"
msgstr ""
-#: Engine/fgens.c:292 Engine/fgens.c:2219
+#: Engine/fgens.c:288 Engine/fgens.c:2215
#, c-format
msgid ""
"ftable %d relocating due to size change\n"
" currently active instruments may find this disturbing"
msgstr ""
-#: Engine/fgens.c:350 Engine/fgens.c:471 Engine/fgens.c:555 Engine/fgens.c:636
-#: Engine/fgens.c:711 Engine/fgens.c:760 Engine/fgens.c:881 Engine/fgens.c:958
-#: Engine/fgens.c:1053 Engine/fgens.c:1097 Engine/fgens.c:1144
-#: Engine/fgens.c:1397 Engine/fgens.c:1459 Engine/fgens.c:1681
-#: Engine/fgens.c:1759 Engine/fgens.c:2114 Engine/fgens.c:2821
-#: Engine/fgens.c:2864
+#: Engine/fgens.c:346 Engine/fgens.c:467 Engine/fgens.c:551 Engine/fgens.c:632
+#: Engine/fgens.c:707 Engine/fgens.c:756 Engine/fgens.c:877 Engine/fgens.c:954
+#: Engine/fgens.c:1049 Engine/fgens.c:1093 Engine/fgens.c:1140
+#: Engine/fgens.c:1393 Engine/fgens.c:1455 Engine/fgens.c:1677
+#: Engine/fgens.c:1755 Engine/fgens.c:2110 Engine/fgens.c:2863
+#: Engine/fgens.c:2906
msgid "using extended arguments\n"
msgstr ""
-#: Engine/fgens.c:374
+#: Engine/fgens.c:370
msgid "no coefs present"
msgstr ""
-#: Engine/fgens.c:379 Engine/fgens.c:645 Engine/fgens.c:653
+#: Engine/fgens.c:375 Engine/fgens.c:641 Engine/fgens.c:649
msgid "illegal x interval"
msgstr ""
-#: Engine/fgens.c:408 Engine/fgens.c:557 Engine/fgens.c:638 Engine/fgens.c:883
-#: Engine/fgens.c:1354 Engine/fgens.c:2378 Engine/fgens.c:2694 Top/main.c:142
-#: util/cvanal.c:66 util/lpanal.c:398 util/pvanal.c:170
+#: Engine/fgens.c:404 Engine/fgens.c:553 Engine/fgens.c:634 Engine/fgens.c:879
+#: Engine/fgens.c:1350 Engine/fgens.c:2375 Engine/fgens.c:2690
+#: Engine/fgens.c:2810 Top/main.c:141 util/cvanal.c:66 util/lpanal.c:398
+#: util/pvanal.c:170
msgid "insufficient arguments"
msgstr ""
-#: Engine/fgens.c:412 Engine/fgens.c:1359
+#: Engine/fgens.c:408 Engine/fgens.c:1355
msgid "unknown srctable number"
msgstr ""
-#: Engine/fgens.c:425
+#: Engine/fgens.c:421
msgid "table size too large"
msgstr ""
-#: Engine/fgens.c:510 Engine/fgens.c:543
+#: Engine/fgens.c:506 Engine/fgens.c:539
msgid "gen call has negative segment size:"
msgstr ""
-#: Engine/fgens.c:512
+#: Engine/fgens.c:508
msgid "illegal input vals for gen call, beginning:"
msgstr ""
-#: Engine/fgens.c:578
+#: Engine/fgens.c:574
msgid "negative segsiz"
msgstr ""
-#: Engine/fgens.c:787
+#: Engine/fgens.c:783
msgid "nh partials < 1"
msgstr ""
-#: Engine/fgens.c:886
+#: Engine/fgens.c:882
msgid "illegal xint value"
msgstr ""
-#: Engine/fgens.c:889
+#: Engine/fgens.c:885
msgid "illegal xamp value"
msgstr ""
-#: Engine/fgens.c:961
+#: Engine/fgens.c:957
msgid "uneven number of args"
msgstr ""
-#: Engine/fgens.c:1081
+#: Engine/fgens.c:1077
msgid "gen call has illegal x-ordinate values:"
msgstr ""
-#: Engine/fgens.c:1099
+#: Engine/fgens.c:1095
msgid "wrong number of args"
msgstr ""
-#: Engine/fgens.c:1113
+#: Engine/fgens.c:1109
msgid "a range given exceeds table length"
msgstr ""
-#: Engine/fgens.c:1120
+#: Engine/fgens.c:1116
msgid "an input function does not exist"
msgstr ""
-#: Engine/fgens.c:1253
+#: Engine/fgens.c:1249
msgid "No such window!"
msgstr ""
-#: Engine/fgens.c:1271
+#: Engine/fgens.c:1267
msgid "Wrong number of input arguments"
msgstr ""
-#: Engine/fgens.c:1272
+#: Engine/fgens.c:1268
msgid "unknown distribution"
msgstr ""
-#: Engine/fgens.c:1321
+#: Engine/fgens.c:1317
msgid "error opening ASCII file"
msgstr ""
-#: Engine/fgens.c:1327
+#: Engine/fgens.c:1323
#, c-format
msgid "%ld elements in %s\n"
msgstr ""
-#: Engine/fgens.c:1338
+#: Engine/fgens.c:1334
msgid "Numbers after table full in GEN23"
msgstr ""
-#: Engine/fgens.c:1367
+#: Engine/fgens.c:1363
msgid "table size must be the same of source table"
msgstr ""
-#: Engine/fgens.c:1439 Engine/fgens.c:1499
+#: Engine/fgens.c:1435 Engine/fgens.c:1495
msgid "x coordinates must all be in increasing order:"
msgstr ""
-#: Engine/fgens.c:1442 Engine/fgens.c:1501
+#: Engine/fgens.c:1438 Engine/fgens.c:1497
msgid "x coordinate greater than function size:"
msgstr ""
-#: Engine/fgens.c:1446
+#: Engine/fgens.c:1442
msgid "illegal input val (y <= 0) for gen call, beginning:"
msgstr ""
-#: Engine/fgens.c:1519
+#: Engine/fgens.c:1515
msgid "GEN28 requires zero table length"
msgstr ""
-#: Engine/fgens.c:1581
+#: Engine/fgens.c:1577
msgid "could not open space file"
msgstr ""
-#: Engine/fgens.c:1583
+#: Engine/fgens.c:1579
msgid "Time values must be in increasing order"
msgstr ""
-#: Engine/fgens.c:1604
+#: Engine/fgens.c:1600
msgid "GEN30: source ftable not found"
msgstr ""
-#: Engine/fgens.c:1687
+#: Engine/fgens.c:1683
msgid "GEN31: source ftable not found"
msgstr ""
-#: Engine/fgens.c:1795
+#: Engine/fgens.c:1791
#, c-format
msgid "GEN32: source ftable %d not found"
msgstr ""
-#: Engine/fgens.c:1889
+#: Engine/fgens.c:1885
msgid "GEN33: source ftable not found"
msgstr ""
-#: Engine/fgens.c:2057
+#: Engine/fgens.c:2053
msgid "unknown source table number"
msgstr ""
-#: Engine/fgens.c:2089
+#: Engine/fgens.c:2085
msgid "Gen41: negative probability not allowed"
msgstr ""
-#: Engine/fgens.c:2155 Opcodes/fareygen.c:70
+#: Engine/fgens.c:2151 Opcodes/fareygen.c:70
#, c-format
msgid "ftable %d: "
msgstr ""
-#: Engine/fgens.c:2199
+#: Engine/fgens.c:2195
#, c-format
msgid "ftable %d:"
msgstr ""
-#: Engine/fgens.c:2214
+#: Engine/fgens.c:2210
#, c-format
msgid "replacing previous ftable %d"
msgstr ""
-#: Engine/fgens.c:2250 Engine/fgens.c:2337 Engine/fgens.c:2361
-#: Opcodes/gab/gab.c:578 Opcodes/gab/gab.c:632 Opcodes/midiops2.c:218
+#: Engine/fgens.c:2246 Engine/fgens.c:2334 Engine/fgens.c:2358
+#: Opcodes/gab/gab.c:580 Opcodes/gab/gab.c:634 Opcodes/midiops2.c:218
#: Opcodes/midiops2.c:370 Opcodes/midiops2.c:452 Opcodes/uggab.c:1317
#: Opcodes/uggab.c:1344 Opcodes/uggab.c:1364 Opcodes/uggab.c:1407
#, c-format
msgid "Invalid ftable no. %f"
msgstr ""
-#: Engine/fgens.c:2255
+#: Engine/fgens.c:2251
#, c-format
msgid "deferred-size ftable %f illegal here"
msgstr ""
-#: Engine/fgens.c:2281
+#: Engine/fgens.c:2278 Engine/fgens.c:2848
#, c-format
msgid "Deferred load of '%s' failed"
msgstr ""
-#: Engine/fgens.c:2343
+#: Engine/fgens.c:2340
#, c-format
msgid "Deferred-size ftable %f load not available at perf time."
msgstr ""
-#: Engine/fgens.c:2402
+#: Engine/fgens.c:2399
#, c-format
msgid "non-deferred ftable %d needs size %d\n"
msgstr ""
-#: Engine/fgens.c:2449 Opcodes/loscilx.c:62
+#: Engine/fgens.c:2446 Opcodes/loscilx.c:64
#, c-format
msgid "invalid sample format: %d"
msgstr ""
-#: Engine/fgens.c:2457 Engine/fgens.c:2718
+#: Engine/fgens.c:2454 Engine/fgens.c:2714
#, c-format
msgid "channel %d illegal"
msgstr ""
-#: Engine/fgens.c:2463
+#: Engine/fgens.c:2460
msgid "deferred alloc\n"
msgstr ""
-#: Engine/fgens.c:2471
+#: Engine/fgens.c:2468
msgid "deferred size, but filesize unknown"
msgstr ""
-#: Engine/fgens.c:2474
+#: Engine/fgens.c:2471
#, c-format
msgid " defer length %d\n"
msgstr ""
-#: Engine/fgens.c:2543
+#: Engine/fgens.c:2540
msgid "GEN1: input file truncated by ftable size"
msgstr ""
-#: Engine/fgens.c:2547
+#: Engine/fgens.c:2544
#, c-format
msgid "\tlooping endpoint %d exceeds ftsize %d\n"
msgstr ""
-#: Engine/fgens.c:2569
+#: Engine/fgens.c:2566
msgid "GEN1 read error"
msgstr ""
-#: Engine/fgens.c:2574
+#: Engine/fgens.c:2571
msgid "GEN1: aiff file truncated by ftable size"
msgstr ""
-#: Engine/fgens.c:2575
+#: Engine/fgens.c:2572
#, c-format
msgid "\taudio samps %d exceeds ftsize %d"
msgstr ""
-#: Engine/fgens.c:2619
+#: Engine/fgens.c:2616
msgid "wrong number of ftable arguments"
msgstr ""
-#: Engine/fgens.c:2629 OOps/pstream.c:326
+#: Engine/fgens.c:2626 OOps/pstream.c:326
msgid "Failed to load PVOC-EX file"
msgstr ""
-#: Engine/fgens.c:2640 InOut/midirecv.c:416 OOps/midiops.c:377
+#: Engine/fgens.c:2637 InOut/midirecv.c:416 OOps/midiops.c:377
#: OOps/midiops.c:419 OOps/midiops.c:431
msgid "illegal channel number"
msgstr ""
-#: Engine/fgens.c:2658
+#: Engine/fgens.c:2655
msgid "ftable size too small"
msgstr ""
-#: Engine/fgens.c:2734 Opcodes/mp3in.c:79 Opcodes/mp3in.c:218
+#: Engine/fgens.c:2730 Opcodes/mp3in.c:80 Opcodes/mp3in.c:219
msgid "Not enough memory\n"
msgstr ""
-#: Engine/fgens.c:2831
+#: Engine/fgens.c:2873
msgid "gen51: invalid number of p-fields (too few grades)"
msgstr ""
-#: Engine/fgens.c:2871
+#: Engine/fgens.c:2913
msgid "number of channels inconsistent with number of args"
msgstr ""
-#: Engine/fgens.c:3030
+#: Engine/fgens.c:3072
msgid "GEN53: invalid number of gen arguments"
msgstr ""
-#: Engine/fgens.c:3040
+#: Engine/fgens.c:3082
msgid "GEN53: invalid table length"
msgstr ""
-#: Engine/fgens.c:3044
+#: Engine/fgens.c:3086
msgid "GEN53: invalid source table number"
msgstr ""
-#: Engine/fgens.c:3047
+#: Engine/fgens.c:3089
msgid "GEN53: mode must be in the range 0 to 15"
msgstr ""
-#: Engine/fgens.c:3051
+#: Engine/fgens.c:3093
msgid "GEN53: invalid source table length"
msgstr ""
-#: Engine/fgens.c:3056
+#: Engine/fgens.c:3098
msgid "GEN53: invalid window table"
msgstr ""
@@ -888,31 +849,31 @@ msgstr ""
msgid "Instrument %d muted\n"
msgstr ""
-#: Engine/insert.c:103 Engine/insert.c:1249
+#: Engine/insert.c:103 Engine/insert.c:1301
#, c-format
msgid "instr %s expects midi event data, cannot run from score\n"
msgstr ""
-#: Engine/insert.c:106 Engine/insert.c:1252
+#: Engine/insert.c:106 Engine/insert.c:1304
#, c-format
msgid "instr %d expects midi event data, cannot run from score\n"
msgstr ""
-#: Engine/insert.c:115 Engine/insert.c:279 Engine/insert.c:1234
+#: Engine/insert.c:115 Engine/insert.c:279 Engine/insert.c:1286
#, c-format
msgid "cannot allocate last note because it exceeds 100%% of cpu time"
msgstr ""
-#: Engine/insert.c:121 Engine/insert.c:285 Engine/insert.c:1239
+#: Engine/insert.c:121 Engine/insert.c:285 Engine/insert.c:1291
msgid "cannot allocate last note because it exceeds instr maxalloc"
msgstr ""
-#: Engine/insert.c:137 Engine/insert.c:305 Engine/insert.c:1270
+#: Engine/insert.c:137 Engine/insert.c:305 Engine/insert.c:1322
#, c-format
msgid "new alloc for instr %s:\n"
msgstr ""
-#: Engine/insert.c:139 Engine/insert.c:307 Engine/insert.c:1272
+#: Engine/insert.c:139 Engine/insert.c:307 Engine/insert.c:1324
#, c-format
msgid "new alloc for instr %d:\n"
msgstr ""
@@ -927,12 +888,12 @@ msgstr ""
msgid "instr %d uses %d p-fields but is given %d"
msgstr ""
-#: Engine/insert.c:251 Engine/insert.c:463
+#: Engine/insert.c:251 Engine/insert.c:482
#, c-format
msgid "instr %s now active:\n"
msgstr ""
-#: Engine/insert.c:253 Engine/insert.c:465
+#: Engine/insert.c:253 Engine/insert.c:484
#, c-format
msgid "instr %d now active:\n"
msgstr ""
@@ -952,153 +913,153 @@ msgstr ""
msgid "MIDI note overlaps with key %d on same channel"
msgstr ""
-#: Engine/insert.c:566
+#: Engine/insert.c:585
#, c-format
msgid "removed instance of instr %s\n"
msgstr ""
-#: Engine/insert.c:568
+#: Engine/insert.c:587
#, c-format
msgid "removed instance of instr %d\n"
msgstr ""
-#: Engine/insert.c:691
+#: Engine/insert.c:710
msgid "inactive allocs returned to freespace\n"
msgstr ""
-#: Engine/insert.c:716
+#: Engine/insert.c:735
#, c-format
msgid "could not find playing instr %f\n"
msgstr ""
-#: Engine/insert.c:729
+#: Engine/insert.c:748
msgid ""
"\n"
"INIT ERROR: "
msgstr ""
-#: Engine/insert.c:742
+#: Engine/insert.c:761
#, c-format
msgid "INIT ERROR in instr %d (opcode %s): "
msgstr ""
-#: Engine/insert.c:745
+#: Engine/insert.c:764
#, c-format
msgid "INIT ERROR in instr %d (subinstr %d): "
msgstr ""
-#: Engine/insert.c:749
+#: Engine/insert.c:768
#, c-format
msgid "INIT ERROR in instr %d: "
msgstr ""
-#: Engine/insert.c:767
+#: Engine/insert.c:786
msgid ""
"\n"
"PERF ERROR: "
msgstr ""
-#: Engine/insert.c:780
+#: Engine/insert.c:799
#, c-format
msgid "PERF ERROR in instr %d (opcode %s): "
msgstr ""
-#: Engine/insert.c:783
+#: Engine/insert.c:802
#, c-format
msgid "PERF ERROR in instr %d (subinstr %d): "
msgstr ""
-#: Engine/insert.c:787
+#: Engine/insert.c:806
#, c-format
msgid "PERF ERROR in instr %d: "
msgstr ""
-#: Engine/insert.c:792
+#: Engine/insert.c:811
msgid " note aborted\n"
msgstr ""
-#: Engine/insert.c:820
+#: Engine/insert.c:839
msgid "subinstr: number of output args greater than nchnls"
msgstr ""
-#: Engine/insert.c:861
+#: Engine/insert.c:880
msgid "subinstr: too many p-fields"
msgstr ""
-#: Engine/insert.c:920
+#: Engine/insert.c:939
#, c-format
msgid "%s: invalid local ksmps value: %d"
msgstr ""
-#: Engine/insert.c:1040 OOps/bus.c:835 Opcodes/stackops.c:293
+#: Engine/insert.c:1062 OOps/bus.c:835 Opcodes/stackops.c:286
#, c-format
msgid "%s: not initialised"
msgstr ""
-#: Engine/insert.c:1169
+#: Engine/insert.c:1221
#, c-format
msgid "setksmps: invalid ksmps value: %d"
msgstr ""
-#: Engine/insert.c:1225
+#: Engine/insert.c:1277
#, c-format
msgid "schedule event ignored. instr %d undefined\n"
msgstr ""
-#: Engine/insert.c:1303
+#: Engine/insert.c:1355
#, c-format
msgid "instr %s pmax = %d, note pcnt = %d"
msgstr ""
-#: Engine/insert.c:1306
+#: Engine/insert.c:1358
#, c-format
msgid "instr %d pmax = %d, note pcnt = %d"
msgstr ""
-#: Engine/insert.c:1314
+#: Engine/insert.c:1366
#, c-format
msgid "psave beg at %p\n"
msgstr ""
-#: Engine/insert.c:1322
+#: Engine/insert.c:1374
#, c-format
msgid " ending at %p\n"
msgstr ""
-#: Engine/insert.c:1466
+#: Engine/insert.c:1518
msgid "subinstr: not initialised"
msgstr ""
-#: Engine/insert.c:1723
+#: Engine/insert.c:1855
#, c-format
msgid ""
"instr %d allocated at %p\n"
"\tlclbas %p, opds %p\n"
msgstr ""
-#: Engine/insert.c:1740
+#: Engine/insert.c:1872
#, c-format
msgid "op %d (%s) allocated at %p\n"
msgstr ""
-#: Engine/insert.c:1766
+#: Engine/insert.c:1898
msgid "null iopadr"
msgstr ""
-#: Engine/insert.c:1777
+#: Engine/insert.c:1909
msgid "null opadr"
msgstr ""
-#: Engine/insert.c:1834
+#: Engine/insert.c:1966
msgid "inconsistent opds total"
msgstr ""
-#: Engine/insert.c:1879
+#: Engine/insert.c:2011
#, c-format
msgid "Instrument %s is still active"
msgstr ""
-#: Engine/insert.c:1882
+#: Engine/insert.c:2014
#, c-format
msgid "Instrument %d is still active"
msgstr ""
@@ -1132,7 +1093,7 @@ msgstr ""
msgid "multiple string p-fields"
msgstr ""
-#: Engine/linevent.c:273 Engine/rdorch.c:1157
+#: Engine/linevent.c:273 Engine/rdorch.c:1184
msgid "unmatched quotes"
msgstr ""
@@ -1191,297 +1152,292 @@ msgstr ""
msgid "memory allocate failure for %lu"
msgstr ""
-#: Engine/memfiles.c:112
+#: Engine/memfiles.c:113
#, c-format
msgid "cannot load %s\n"
msgstr ""
-#: Engine/memfiles.c:118
+#: Engine/memfiles.c:119
#, c-format
msgid "cannot load %s, or SADIR undefined\n"
msgstr ""
-#: Engine/memfiles.c:130
+#: Engine/memfiles.c:131
#, c-format
msgid "error processing file %s\n"
msgstr ""
-#: Engine/memfiles.c:136 Engine/memfiles.c:319
+#: Engine/memfiles.c:137 Engine/memfiles.c:320
#, c-format
msgid "file %s (%ld bytes) loaded into memory\n"
msgstr ""
-#: Engine/memfiles.c:199
+#: Engine/memfiles.c:200
msgid ""
"PVOCEX_LoadFile(): error:\n"
" "
msgstr ""
-#: Engine/memfiles.c:216
+#: Engine/memfiles.c:217
msgid "Empty or NULL file name"
msgstr ""
-#: Engine/memfiles.c:234
+#: Engine/memfiles.c:235
#, c-format
msgid "unable to open pvocex file %s: %s"
msgstr ""
-#: Engine/memfiles.c:240
+#: Engine/memfiles.c:241
#, c-format
msgid "pvoc-ex file %s is not 32bit floats"
msgstr ""
-#: Engine/memfiles.c:246
+#: Engine/memfiles.c:247
#, c-format
msgid "pvoc-ex file %s not in AMP_FREQ format"
msgstr ""
-#: Engine/memfiles.c:252
+#: Engine/memfiles.c:253
#, c-format
msgid "pvoc-ex file %s is empty!"
msgstr ""
-#: Engine/memfiles.c:282
+#: Engine/memfiles.c:283
#, c-format
msgid "error reading pvoc-ex file %s"
msgstr ""
-#: Engine/memfiles.c:286
+#: Engine/memfiles.c:287
#, c-format
msgid "error reading pvoc-ex file %s after %d frames"
msgstr ""
-#: Engine/memfiles.c:291 Opcodes/pvinterp.c:71 Opcodes/pvinterp.c:174
-#: Opcodes/pvinterp.c:346 Opcodes/ugens9.c:97 Opcodes/vpvoc.c:201
+#: Engine/memfiles.c:292 Opcodes/pvinterp.c:71 Opcodes/pvinterp.c:173
+#: Opcodes/pvinterp.c:344 Opcodes/ugens9.c:97 Opcodes/vpvoc.c:202
#, c-format
msgid "%s's srate = %8.0f, orch's srate = %8.0f"
msgstr ""
-#: Engine/memfiles.c:389
+#: Engine/memfiles.c:390
#, c-format
msgid "csoundLoadSoundFile(): failed to open '%s'"
msgstr ""
-#: Engine/memfiles.c:444
+#: Engine/memfiles.c:445
#, c-format
msgid "csoundLoadSoundFile(): error reading '%s'"
msgstr ""
-#: Engine/memfiles.c:450
+#: Engine/memfiles.c:451
#, c-format
msgid ""
"File '%s' (sr = %d Hz, %d channel(s), %lu sample frames) loaded into memory\n"
msgstr ""
-#: Engine/musmon.c:79
+#: Engine/musmon.c:81
#, c-format
msgid "Elapsed time at %s: real: %.3fs, CPU: %.3fs\n"
msgstr ""
-#: Engine/musmon.c:106
+#: Engine/musmon.c:108
msgid "illegal istartempo value"
msgstr ""
-#: Engine/musmon.c:109
+#: Engine/musmon.c:111
msgid "Beat mode not in force"
msgstr ""
-#: Engine/musmon.c:182 Top/main.c:122
+#: Engine/musmon.c:184 Top/main.c:121
#, c-format
msgid "Csound version %s beta (double samples) %s\n"
msgstr ""
-#: Engine/musmon.c:185 Top/main.c:125
+#: Engine/musmon.c:187 Top/main.c:124
#, c-format
msgid "Csound version %s (double samples) %s\n"
msgstr ""
-#: Engine/musmon.c:190 Top/main.c:114
+#: Engine/musmon.c:192 Top/main.c:113
#, c-format
msgid "Csound version %s beta (float samples) %s\n"
msgstr ""
-#: Engine/musmon.c:193 Top/main.c:117
+#: Engine/musmon.c:195 Top/main.c:116
#, c-format
msgid "Csound version %s (float samples) %s\n"
msgstr ""
-#: Engine/musmon.c:218
+#: Engine/musmon.c:220
msgid "orch now loaded\n"
msgstr ""
-#: Engine/musmon.c:243
+#: Engine/musmon.c:245
msgid "k-period aligned audio buffering\n"
msgstr ""
-#: Engine/musmon.c:259
+#: Engine/musmon.c:261
#, c-format
msgid "audio buffered in %d sample-frame blocks\n"
msgstr ""
-#: Engine/musmon.c:276 Top/main.c:395
-#, c-format
-msgid "cannot reopen %s"
-msgstr ""
-
-#: Engine/musmon.c:287
+#: Engine/musmon.c:283
msgid "using Cscore processing\n"
msgstr ""
-#: Engine/musmon.c:290
+#: Engine/musmon.c:286
msgid "cannot create cscore.out"
msgstr ""
-#: Engine/musmon.c:303
+#: Engine/musmon.c:299
msgid "cannot reopen cscore.out"
msgstr ""
-#: Engine/musmon.c:307 Engine/musmon.c:315
+#: Engine/musmon.c:303
msgid "cannot reopen cscore.srt"
msgstr ""
-#: Engine/musmon.c:309
+#: Engine/musmon.c:305
msgid "sorting cscore.out ..\n"
msgstr ""
-#: Engine/musmon.c:313 Top/main.c:409
+#: Engine/musmon.c:311 Top/main.c:401
msgid "\t... done\n"
msgstr ""
-#: Engine/musmon.c:317
+#: Engine/musmon.c:312
msgid "playing from cscore.srt\n"
msgstr ""
-#: Engine/musmon.c:321 Engine/musmon.c:453 Engine/musmon.c:1021
-#: Engine/musmon.c:1225
+#: Engine/musmon.c:316 Engine/musmon.c:446 Engine/musmon.c:1015
+#: Engine/musmon.c:1216
#, c-format
msgid "SECTION %d:\n"
msgstr ""
-#: Engine/musmon.c:397
+#: Engine/musmon.c:390
msgid "end of score.\t\t overall amps:"
msgstr ""
-#: Engine/musmon.c:408
+#: Engine/musmon.c:401
msgid ""
"\n"
"\t overall samples out of range:"
msgstr ""
-#: Engine/musmon.c:412
+#: Engine/musmon.c:405
#, c-format
msgid ""
"\n"
"%d errors in performance\n"
msgstr ""
-#: Engine/musmon.c:414
+#: Engine/musmon.c:407
msgid "end of performance"
msgstr ""
-#: Engine/musmon.c:428
+#: Engine/musmon.c:421
msgid "no sound written to disk\n"
msgstr ""
-#: Engine/musmon.c:443
+#: Engine/musmon.c:436
#, c-format
msgid "%c\tbeep!\n"
msgstr ""
-#: Engine/musmon.c:509 Engine/musmon.c:555
+#: Engine/musmon.c:502 Engine/musmon.c:548
msgid "\t number of samples out of range:"
msgstr ""
-#: Engine/musmon.c:548
+#: Engine/musmon.c:541
#, c-format
msgid "end of section %d\t sect peak amps:"
msgstr ""
-#: Engine/musmon.c:550
+#: Engine/musmon.c:543
msgid "end of lplay event list\t peak amps:"
msgstr ""
-#: Engine/musmon.c:614 Engine/musmon.c:639
+#: Engine/musmon.c:607 Engine/musmon.c:632
#, c-format
msgid " - note deleted. instr %s undefined"
msgstr ""
-#: Engine/musmon.c:618
+#: Engine/musmon.c:611
#, c-format
msgid "Setting instrument %s %s\n"
msgstr ""
-#: Engine/musmon.c:619 Engine/musmon.c:632
+#: Engine/musmon.c:612 Engine/musmon.c:625
#: Opcodes/fluidOpcodes/fluidOpcodes.c:207
#: Opcodes/fluidOpcodes/fluidOpcodes.c:208
msgid "off"
msgstr ""
-#: Engine/musmon.c:619 Engine/musmon.c:632
+#: Engine/musmon.c:612 Engine/musmon.c:625
#: Opcodes/fluidOpcodes/fluidOpcodes.c:207
#: Opcodes/fluidOpcodes/fluidOpcodes.c:208
msgid "on"
msgstr ""
-#: Engine/musmon.c:627 Engine/musmon.c:666
+#: Engine/musmon.c:620 Engine/musmon.c:659
#, c-format
msgid " - note deleted. instr %d(%d) undefined"
msgstr ""
-#: Engine/musmon.c:631
+#: Engine/musmon.c:624
#, c-format
msgid "Setting instrument %d %s\n"
msgstr ""
-#: Engine/musmon.c:657
+#: Engine/musmon.c:650
#, c-format
msgid " - note deleted. i%d (%s) had %d init errors"
msgstr ""
-#: Engine/musmon.c:687
+#: Engine/musmon.c:680
#, c-format
msgid " - note deleted. i%d had %d init errors"
msgstr ""
-#: Engine/musmon.c:708
+#: Engine/musmon.c:701
#, c-format
msgid "time advanced %5.3f beats by score request\n"
msgstr ""
-#: Engine/musmon.c:725
+#: Engine/musmon.c:719
#, c-format
msgid "\t\t T%7.3f - note deleted. "
msgstr ""
-#: Engine/musmon.c:729
+#: Engine/musmon.c:723
#, c-format
msgid "instr %s had %d init errors\n"
msgstr ""
-#: Engine/musmon.c:731
+#: Engine/musmon.c:725
#, c-format
msgid "instr %d had %d init errors\n"
msgstr ""
-#: Engine/musmon.c:822
+#: Engine/musmon.c:816
msgid "terminating.\n"
msgstr ""
-#: Engine/musmon.c:908
+#: Engine/musmon.c:902
#, c-format
msgid "error in score. illegal opcode %c (ASCII %d)\n"
msgstr ""
-#: Engine/musmon.c:1135
+#: Engine/musmon.c:1129
msgid "insert_score_event(): invalid instrument number or name\n"
msgstr ""
-#: Engine/musmon.c:1155
+#: Engine/musmon.c:1149
#, c-format
msgid "insert_score_event(): unknown opcode: %c\n"
msgstr ""
-#: Engine/musmon.c:1178
+#: Engine/musmon.c:1172
msgid "insert_score_event(): insufficient p-fields\n"
msgstr ""
@@ -1504,350 +1460,402 @@ msgstr ""
msgid "cannot find the specified instrument or opcode"
msgstr ""
-#: Engine/new_orc_parser.c:74 Engine/rdorch.c:488
+#: Engine/new_orc_parser.c:91
+msgid "Unmatched #ifdef\n"
+msgstr ""
+
+#: Engine/otran.c:149 Engine/symbtab.c:413
#, c-format
-msgid "cannot open orch file %s"
+msgid "invalid input type for opcode %s"
+msgstr ""
+
+#: Engine/otran.c:154 Engine/symbtab.c:418
+#, c-format
+msgid "too many input args for opcode %s"
+msgstr ""
+
+#: Engine/otran.c:169 Engine/symbtab.c:433
+#, c-format
+msgid "too many output args for opcode %s"
+msgstr ""
+
+#: Engine/otran.c:194 Engine/symbtab.c:458
+#, c-format
+msgid "invalid output type for opcode %s"
msgstr ""
-#: Engine/otran.c:312 Engine/otran.c:319
+#: Engine/otran.c:325 Engine/otran.c:332
msgid "missing instrument number or name"
msgstr ""
-#: Engine/otran.c:324
+#: Engine/otran.c:337
msgid "illegal instr number"
msgstr ""
-#: Engine/otran.c:374
+#: Engine/otran.c:388
msgid "No opcode name"
msgstr ""
-#: Engine/otran.c:379 Engine/symbtab.c:501
+#: Engine/otran.c:393 Engine/symbtab.c:538
msgid "invalid name for opcode"
msgstr ""
-#: Engine/otran.c:383
+#: Engine/otran.c:397
#, c-format
msgid ""
"opcode declaration error (usage: opcode name, outtypes, intypes) -- opcode %s"
msgstr ""
-#: Engine/otran.c:394 Engine/symbtab.c:511
+#: Engine/otran.c:408 Engine/symbtab.c:548
#, c-format
msgid "cannot redefine %s"
msgstr ""
-#: Engine/otran.c:398 Engine/symbtab.c:516
+#: Engine/otran.c:412 Engine/symbtab.c:553
#, c-format
msgid "WARNING: redefined opcode: %s\n"
msgstr ""
-#: Engine/otran.c:489
+#: Engine/otran.c:503
msgid "string constant used as output"
msgstr ""
-#: Engine/otran.c:520
+#: Engine/otran.c:534
msgid "Missing endin"
msgstr ""
-#: Engine/otran.c:584
+#: Engine/otran.c:599
msgid "perf-pass statements illegal in header blk"
msgstr ""
-#: Engine/otran.c:588
+#: Engine/otran.c:603
#, c-format
msgid "%d syntax errors in orchestra. compilation invalid"
msgstr ""
-#: Engine/otran.c:1238
+#: Engine/otran.c:1257
msgid "bad value for 0dbfs: must be positive."
msgstr ""
-#: Engine/otran.c:1248
+#: Engine/otran.c:1267
#, c-format
msgid "sample rate overrides: esr = %7.4f, ekr = %7.4f, ksmps = %d\n"
msgstr ""
-#: Engine/otran.c:1320
+#: Engine/otran.c:1339
msgid "internal error: string constant outarg"
msgstr ""
-#: Engine/otran.c:1346
+#: Engine/otran.c:1365
#, c-format
msgid "i%d pset args != pmax"
msgstr ""
-#: Engine/otran.c:1409
+#: Engine/otran.c:1428
#, c-format
msgid ""
"sr = %.7g, kr = %.7g, ksmps = %.7g\n"
"error:"
msgstr ""
-#: Engine/otran.c:1442
+#: Engine/otran.c:1461
msgid "header init errors"
msgstr ""
-#: Engine/rdorch.c:166
+#: Engine/rdorch.c:169
msgid "ungetorchar(): buffer overflow"
msgstr ""
-#: Engine/rdorch.c:330
+#: Engine/rdorch.c:348
msgid "Unexpected end of orchestra file"
msgstr ""
-#: Engine/rdorch.c:484
-msgid "orch compiler:\n"
+#: Engine/rdorch.c:431 Engine/sread.c:758
+#, c-format
+msgid "Macro definition for %*s\n"
msgstr ""
-#: Engine/rdorch.c:490
-#, c-format
-msgid "cannot find end of file %s"
+#: Engine/rdorch.c:434
+msgid "Invalid macro name for --omacro"
+msgstr ""
+
+#: Engine/rdorch.c:502
+msgid "orch compiler:\n"
msgstr ""
-#: Engine/rdorch.c:492
+#: Engine/rdorch.c:520
#, c-format
-msgid "ftell error on %s"
+msgid "cannot open orch file %s"
msgstr ""
-#: Engine/rdorch.c:657 Engine/sread.c:1572
+#: Engine/rdorch.c:684 Engine/sread.c:1584
#, c-format
msgid "Macro definition for %s\n"
msgstr ""
-#: Engine/rdorch.c:748
+#: Engine/rdorch.c:716 Engine/sread.c:1607
+msgid "macro error\n"
+msgstr ""
+
+#: Engine/rdorch.c:775
#, c-format
msgid "Cannot open #include'd file %s\n"
msgstr ""
-#: Engine/rdorch.c:797
+#: Engine/rdorch.c:824
msgid "unmatched #ifdef"
msgstr ""
-#: Engine/rdorch.c:808
+#: Engine/rdorch.c:835
msgid "Unmatched #else"
msgstr ""
-#: Engine/rdorch.c:822
+#: Engine/rdorch.c:849
msgid "Unmatched #endif"
msgstr ""
-#: Engine/rdorch.c:875
+#: Engine/rdorch.c:872 Engine/sread.c:1694
+#, c-format
+msgid "macro %s undefined\n"
+msgstr ""
+
+#: Engine/rdorch.c:886 Engine/sread.c:286
+msgid "Undefining undefined macro"
+msgstr ""
+
+#: Engine/rdorch.c:902
msgid "Unexpected # character"
msgstr ""
-#: Engine/rdorch.c:877
+#: Engine/rdorch.c:904
#, c-format
msgid "Unknown # option: '%s'"
msgstr ""
-#: Engine/rdorch.c:903 Engine/sread.c:394
+#: Engine/rdorch.c:928 Engine/sread.c:380
+#, c-format
+msgid "Undefined macro: '%s'"
+msgstr ""
+
+#: Engine/rdorch.c:930 Engine/sread.c:378
msgid "Macro expansion symbol ($) without macro name"
msgstr ""
-#: Engine/rdorch.c:908 Engine/sread.c:400
+#: Engine/rdorch.c:935 Engine/sread.c:384
#, c-format
msgid "$%s matches macro name $%s"
msgstr ""
-#: Engine/rdorch.c:925 Engine/sread.c:417
+#: Engine/rdorch.c:952 Engine/sread.c:401
msgid "Syntax error in macro call"
msgstr ""
-#: Engine/rdorch.c:975
+#: Engine/rdorch.c:967
+#, c-format
+msgid ""
+"Missing argument terminator\n"
+"%.98s"
+msgstr ""
+
+#: Engine/rdorch.c:1002
msgid "Unmatched #ifdef"
msgstr ""
-#: Engine/rdorch.c:977
+#: Engine/rdorch.c:1004
msgid "file too large for ortext space"
msgstr ""
-#: Engine/rdorch.c:984
+#: Engine/rdorch.c:1011
#, c-format
msgid "%d (%d) lines read\n"
msgstr ""
-#: Engine/rdorch.c:1052
+#: Engine/rdorch.c:1079
#, c-format
msgid "LINE %d:"
msgstr ""
-#: Engine/rdorch.c:1071
+#: Engine/rdorch.c:1098
msgid "invalid 'elseif' statement. must have a corresponding 'if'"
msgstr ""
-#: Engine/rdorch.c:1078
+#: Engine/rdorch.c:1105
msgid "'elseif' statement cannot occur after an 'else'"
msgstr ""
-#: Engine/rdorch.c:1134
+#: Engine/rdorch.c:1161
msgid "Unmatched comment"
msgstr ""
-#: Engine/rdorch.c:1198
+#: Engine/rdorch.c:1225
msgid "misplaced comma"
msgstr ""
-#: Engine/rdorch.c:1200 Engine/rdorch.c:1342 Engine/rdorch.c:1440
+#: Engine/rdorch.c:1227 Engine/rdorch.c:1369 Engine/rdorch.c:1467
msgid "unbalanced parens"
msgstr ""
-#: Engine/rdorch.c:1364
+#: Engine/rdorch.c:1391
#, c-format
msgid "illegal character %c"
msgstr ""
-#: Engine/rdorch.c:1377
+#: Engine/rdorch.c:1404
msgid "invalid 'else' statement. must have a corresponding 'if'"
msgstr ""
-#: Engine/rdorch.c:1384
+#: Engine/rdorch.c:1411
msgid "duplicate 'else' statement"
msgstr ""
-#: Engine/rdorch.c:1413
+#: Engine/rdorch.c:1440
msgid "invalid 'endif' statement. must have a corresponding 'if'"
msgstr ""
-#: Engine/rdorch.c:1442
+#: Engine/rdorch.c:1469
msgid "no legal opcode"
msgstr ""
-#: Engine/rdorch.c:1573
+#: Engine/rdorch.c:1600
msgid "illegal opcod from expr anal"
msgstr ""
-#: Engine/rdorch.c:1606 Engine/rdorch.c:1628
+#: Engine/rdorch.c:1633 Engine/rdorch.c:1655
#, c-format
msgid "failed to find %s, output arg '%s' illegal type"
msgstr ""
-#: Engine/rdorch.c:1670
+#: Engine/rdorch.c:1697
#, c-format
msgid "failed to find %s, input arg illegal type"
msgstr ""
-#: Engine/rdorch.c:1684
+#: Engine/rdorch.c:1711
msgid "setksmps is allowed only in user defined opcodes"
msgstr ""
-#: Engine/rdorch.c:1687
+#: Engine/rdorch.c:1714
msgid "multiple uses of setksmps in the same opcode definition"
msgstr ""
-#: Engine/rdorch.c:1710
+#: Engine/rdorch.c:1739
#, c-format
msgid "%s inconsistent with global nchnls (%d); replaced with %s\n"
msgstr ""
-#: Engine/rdorch.c:1740
+#: Engine/rdorch.c:1770
msgid "opcode blks cannot be nested (missing 'endop'?)"
msgstr ""
-#: Engine/rdorch.c:1742
+#: Engine/rdorch.c:1772
msgid "opcode not allowed in instr block"
msgstr ""
-#: Engine/rdorch.c:1751
+#: Engine/rdorch.c:1781
msgid "unmatched endop"
msgstr ""
-#: Engine/rdorch.c:1753
+#: Engine/rdorch.c:1783
msgid "endop not allowed in instr block"
msgstr ""
-#: Engine/rdorch.c:1758
+#: Engine/rdorch.c:1788
msgid "instr not allowed in opcode block"
msgstr ""
-#: Engine/rdorch.c:1761
+#: Engine/rdorch.c:1791
msgid "instr blocks cannot be nested (missing 'endin'?)"
msgstr ""
-#: Engine/rdorch.c:1769
+#: Engine/rdorch.c:1799
msgid "endin not allowed in opcode blk"
msgstr ""
-#: Engine/rdorch.c:1771
+#: Engine/rdorch.c:1801
msgid "unmatched endin"
msgstr ""
-#: Engine/rdorch.c:1781
+#: Engine/rdorch.c:1811
msgid "misplaced opcode"
msgstr ""
-#: Engine/rdorch.c:1787
+#: Engine/rdorch.c:1817
msgid "xout is allowed only in user defined opcodes"
msgstr ""
-#: Engine/rdorch.c:1790
+#: Engine/rdorch.c:1820
msgid "multiple uses of xout in the same opcode definition"
msgstr ""
-#: Engine/rdorch.c:1837
+#: Engine/rdorch.c:1867
msgid "too many input args"
msgstr ""
-#: Engine/rdorch.c:1909
+#: Engine/rdorch.c:1893
+msgid "insufficient required arguments"
+msgstr ""
+
+#: Engine/rdorch.c:1940
#, c-format
-msgid "input arg '%s' used before defined"
+msgid "input arg '%s' used before defined \n"
msgstr ""
-#: Engine/rdorch.c:1956
+#: Engine/rdorch.c:1987
msgid "xin is allowed only in user defined opcodes"
msgstr ""
-#: Engine/rdorch.c:1959
+#: Engine/rdorch.c:1990
msgid "multiple uses of xin in the same opcode definition"
msgstr ""
-#: Engine/rdorch.c:2004
+#: Engine/rdorch.c:2035
msgid "illegal no of output args"
msgstr ""
-#: Engine/rdorch.c:2023
+#: Engine/rdorch.c:2054
#, c-format
msgid "output name previously used, type '%c' must be uniquely defined"
msgstr ""
-#: Engine/rdorch.c:2028
+#: Engine/rdorch.c:2059
#, c-format
msgid "output arg '%s' illegal type"
msgstr ""
-#: Engine/rdorch.c:2069
+#: Engine/rdorch.c:2100
#, c-format
msgid "input arg '%s' of type %s not allowed when expecting %c"
msgstr ""
-#: Engine/rdorch.c:2155
+#: Engine/rdorch.c:2187
msgid "duplicate label"
msgstr ""
-#: Engine/rdorch.c:2177
+#: Engine/rdorch.c:2209
#, c-format
msgid "error line %d. unknown label:\n"
msgstr ""
-#: Engine/rdorch.c:2192 Engine/rdorch.c:2239
+#: Engine/rdorch.c:2222 Engine/rdorch.c:2271
msgid "error: "
msgstr ""
-#: Engine/rdorch.c:2208
+#: Engine/rdorch.c:2239
#, c-format
msgid ", line %d:\n"
msgstr ""
-#: Engine/rdorch.c:2246
+#: Engine/rdorch.c:2278
#, c-format
msgid "called from line %d of macro %s"
msgstr ""
-#: Engine/rdorch.c:2250
+#: Engine/rdorch.c:2282
#, c-format
msgid "in line %d of file input %s"
msgstr ""
-#: Engine/rdscor.c:79
+#: Engine/rdscor.c:80
#, c-format
msgid "ERROR: illegal character %c(%.2x) in scoreline: "
msgstr ""
@@ -1858,7 +1866,7 @@ msgid ""
"\tremainder of line flushed\n"
msgstr ""
-#: Engine/rdscor.c:144
+#: Engine/rdscor.c:146
msgid "ERROR: too many pfields: "
msgstr ""
@@ -1884,349 +1892,316 @@ msgstr ""
msgid " section %d: at position %d%s"
msgstr ""
-#: Engine/sread.c:217
+#: Engine/sread.c:216
msgid "Internal error in print_input_backtrace()"
msgstr ""
-#: Engine/sread.c:219
+#: Engine/sread.c:218
#, c-format
msgid " included from line %d of macro %s%s"
msgstr ""
-#: Engine/sread.c:220
+#: Engine/sread.c:219
#, c-format
msgid " called from line %d of macro %s%s"
msgstr ""
-#: Engine/sread.c:222
+#: Engine/sread.c:221
#, c-format
msgid " in line %d of macro %s%s"
msgstr ""
-#: Engine/sread.c:229
-#, c-format
-msgid " included from line %d of file input %s%s"
-msgstr ""
-
-#: Engine/sread.c:230
-#, c-format
-msgid " called from line %d of file input %s%s"
-msgstr ""
-
-#: Engine/sread.c:232
-#, c-format
-msgid " in line %d of file input %s%s"
-msgstr ""
-
-#: Engine/sread.c:268
+#: Engine/sread.c:256
#, c-format
msgid "Internal error op=%c"
msgstr ""
-#: Engine/sread.c:322
-msgid "ungetscochar(): buffer overflow"
-msgstr ""
-
-#: Engine/sread.c:479
+#: Engine/sread.c:464
msgid "illegal placement of number in [] expression"
msgstr ""
-#: Engine/sread.c:506
+#: Engine/sread.c:491
msgid "illegal placement of operator ~ in [] expression"
msgstr ""
-#: Engine/sread.c:516
+#: Engine/sread.c:501
msgid "illegal placement of operator @ or @@ in [] expression"
msgstr ""
-#: Engine/sread.c:548 Engine/sread.c:562
+#: Engine/sread.c:533 Engine/sread.c:547
#, c-format
msgid "illegal placement of operator %c in [] expression"
msgstr ""
-#: Engine/sread.c:574
+#: Engine/sread.c:559
msgid "illegal placement of '(' in [] expression"
msgstr ""
-#: Engine/sread.c:580
+#: Engine/sread.c:565
msgid "missing operand before ')' in [] expression"
msgstr ""
-#: Engine/sread.c:594
+#: Engine/sread.c:579
msgid "missing operand before closing bracket in []"
msgstr ""
-#: Engine/sread.c:609
+#: Engine/sread.c:594
#, c-format
msgid "illegal character %c(%.2x) in [] expression"
msgstr ""
-#: Engine/sread.c:658
+#: Engine/sread.c:646
#, c-format
msgid "%s Nested LOOP terminated, level:%d\n"
msgstr ""
-#: Engine/sread.c:664
+#: Engine/sread.c:652
#, c-format
msgid "External LOOP terminated, level:%d\n"
msgstr ""
-#: Engine/sread.c:684
+#: Engine/sread.c:696
#, c-format
msgid "%s Nested LOOP section (%d) Level:%d\n"
msgstr ""
-#: Engine/sread.c:689
+#: Engine/sread.c:701
#, c-format
msgid " External LOOP section (%d) Level:%d\n"
msgstr ""
-#: Engine/sread.c:703
+#: Engine/sread.c:715
msgid "Loop terminated\n"
msgstr ""
-#: Engine/sread.c:716
+#: Engine/sread.c:733
#, c-format
msgid "Repeat section (%d)\n"
msgstr ""
-#: Engine/sread.c:719
+#: Engine/sread.c:736
msgid "Repeat section\n"
msgstr ""
-#: Engine/sread.c:744
+#: Engine/sread.c:761
msgid "Invalid macro name for --smacro"
msgstr ""
-#: Engine/sread.c:831
+#: Engine/sread.c:865
#, c-format
msgid "Clockbase = %f\n"
msgstr ""
-#: Engine/sread.c:898
+#: Engine/sread.c:934
msgid "Loops are nested too deeply"
msgstr ""
-#: Engine/sread.c:901
-msgid "Loop cannot start inside of a macro"
-msgstr ""
-
-#: Engine/sread.c:920
+#: Engine/sread.c:948
msgid "{: invalid repeat count"
msgstr ""
-#: Engine/sread.c:929
+#: Engine/sread.c:957
#, c-format
msgid "%s Nested LOOP=%d Level:%d\n"
msgstr ""
-#: Engine/sread.c:935
+#: Engine/sread.c:963
#, c-format
msgid "External LOOP=%d Level:%d\n"
msgstr ""
-#: Engine/sread.c:1004
-msgid "Repeat cannot start inside of a macro (ignored)"
-msgstr ""
-
-#: Engine/sread.c:1019
+#: Engine/sread.c:1047
msgid "r: invalid repeat count"
msgstr ""
-#: Engine/sread.c:1021
+#: Engine/sread.c:1049
#, c-format
msgid "Repeats=%d\n"
msgstr ""
-#: Engine/sread.c:1063
+#: Engine/sread.c:1093
#, c-format
msgid "Named section >>>%s<<<\n"
msgstr ""
-#: Engine/sread.c:1079
+#: Engine/sread.c:1108
#, c-format
msgid "%d: File %s position %ld\n"
msgstr ""
-#: Engine/sread.c:1085
-#, c-format
-msgid "Ignoring name %s not in file\n"
-msgstr ""
-
-#: Engine/sread.c:1110
+#: Engine/sread.c:1133
#, c-format
msgid "Name %s not found"
msgstr ""
-#: Engine/sread.c:1112
+#: Engine/sread.c:1135
#, c-format
msgid "Duplicate %d: %s (%s,%ld)\n"
msgstr ""
-#: Engine/sread.c:1129
-#, c-format
-msgid "cannot open input file %s"
-msgstr ""
-
-#: Engine/sread.c:1149
+#: Engine/sread.c:1164
#, c-format
msgid "Warp_factor = %f\n"
msgstr ""
-#: Engine/sread.c:1174
+#: Engine/sread.c:1189
msgid "sread is confused on legal opcodes\n"
msgstr ""
-#: Engine/sread.c:1236
+#: Engine/sread.c:1251
msgid "No previous event for ^"
msgstr ""
-#: Engine/sread.c:1241
+#: Engine/sread.c:1256
#, c-format
msgid "illegal space following %s, zero substituted"
msgstr ""
-#: Engine/sread.c:1271
+#: Engine/sread.c:1286
#, c-format
msgid "ignoring '%s' in '%c' event"
msgstr ""
-#: Engine/sread.c:1274
+#: Engine/sread.c:1289
msgid "! invalid in p1, p2, or p3"
msgstr ""
-#: Engine/sread.c:1275 Engine/sread.c:1280 Engine/sread.c:1730
-#: Engine/sread.c:1753 Engine/sread.c:1767
+#: Engine/sread.c:1290 Engine/sread.c:1295 Engine/sread.c:1738
+#: Engine/sread.c:1761 Engine/sread.c:1775
msgid " remainder of line flushed\n"
msgstr ""
-#: Engine/sread.c:1279
+#: Engine/sread.c:1294
#, c-format
msgid "illegal character after !: '%c'"
msgstr ""
-#: Engine/sread.c:1358
+#: Engine/sread.c:1373
#, c-format
msgid "WARNING: instr %s not found, assuming insno = -1\n"
msgstr ""
-#: Engine/sread.c:1378
+#: Engine/sread.c:1393
msgid "sread: illegal use of carry, 0 substituted\n"
msgstr ""
-#: Engine/sread.c:1526
+#: Engine/sread.c:1539
msgid "Improper \\"
msgstr ""
-#: Engine/sread.c:1558
+#: Engine/sread.c:1570
msgid "Not #define"
msgstr ""
-#: Engine/sread.c:1620
+#: Engine/sread.c:1630
#, c-format
msgid "Macro %s with %d arguments defined\n"
msgstr ""
-#: Engine/sread.c:1631
+#: Engine/sread.c:1642
msgid "Not #include"
msgstr ""
-#: Engine/sread.c:1662
+#: Engine/sread.c:1671
#, c-format
msgid "Cannot open #include'd file %s"
msgstr ""
-#: Engine/sread.c:1673
+#: Engine/sread.c:1681
msgid "Not #undef"
msgstr ""
-#: Engine/sread.c:1692
+#: Engine/sread.c:1700
msgid "unknown # option"
msgstr ""
-#: Engine/sread.c:1729
+#: Engine/sread.c:1737
#, c-format
msgid "illegal opcode %c"
msgstr ""
-#: Engine/sread.c:1752
+#: Engine/sread.c:1760
#, c-format
msgid "unexpected char %c"
msgstr ""
-#: Engine/sread.c:1766
+#: Engine/sread.c:1774
msgid "illegally placed string"
msgstr ""
-#: Engine/sread.c:1773
+#: Engine/sread.c:1781
msgid "unmatched quote"
msgstr ""
-#: Engine/sread.c:1817
+#: Engine/sread.c:1825
msgid "sread: illegal number format: "
msgstr ""
-#: Engine/sread.c:1823
+#: Engine/sread.c:1831
msgid " zero substituted.\n"
msgstr ""
-#: Engine/swrite.c:123
+#: Engine/swrite.c:123 Engine/swritestr.c:134
#, c-format
msgid "swrite: unexpected opcode, section %d line %d\n"
msgstr ""
-#: Engine/swrite.c:209 Engine/swrite.c:249
+#: Engine/swrite.c:209 Engine/swrite.c:249 Engine/swritestr.c:220
+#: Engine/swritestr.c:260
#, c-format
msgid "swrite: output, sect%d line%d p%d makes illegal reference to "
msgstr ""
-#: Engine/swrite.c:216 Engine/swrite.c:255
+#: Engine/swrite.c:216 Engine/swrite.c:255 Engine/swritestr.c:227
+#: Engine/swritestr.c:266
msgid " Zero substituted\n"
msgstr ""
-#: Engine/swrite.c:313
+#: Engine/swrite.c:313 Engine/swritestr.c:324
#, c-format
msgid "swrite: output, sect%d line%d p%d has illegal ramp symbol\n"
msgstr ""
-#: Engine/swrite.c:317
+#: Engine/swrite.c:317 Engine/swritestr.c:328
#, c-format
msgid ""
"swrite: output, sect%d line%d p%d ramp has illegal forward or backward ref\n"
msgstr ""
-#: Engine/swrite.c:380 Engine/swrite.c:445
+#: Engine/swrite.c:380 Engine/swrite.c:445 Engine/swritestr.c:391
+#: Engine/swritestr.c:456
#, c-format
msgid "swrite: output, sect%d line%d p%d has illegal expramp symbol\n"
msgstr ""
-#: Engine/swrite.c:385 Engine/swrite.c:450
+#: Engine/swrite.c:385 Engine/swrite.c:450 Engine/swritestr.c:396
+#: Engine/swritestr.c:461
#, c-format
msgid ""
"swrite: output, sect%d line%d p%d expramp has illegal forward or backward "
"ref\n"
msgstr ""
-#: Engine/swrite.c:466
+#: Engine/swrite.c:466 Engine/swritestr.c:477
#, c-format
msgid "swrite: output, sect%d line%d p%d has illegally terminated string "
msgstr ""
-#: Engine/swrite.c:514
+#: Engine/swrite.c:514 Engine/swritestr.c:529
#, c-format
msgid "swrite: output, sect%d line%d p%d has illegal number "
msgstr ""
-#: Engine/swrite.c:521
+#: Engine/swrite.c:521 Engine/swritestr.c:536
msgid " String truncated\n"
msgstr ""
-#: Engine/symbtab.c:202
+#: Engine/symbtab.c:208
#, c-format
msgid "Type confusion for %s (%d,%d), replacing\n"
msgstr ""
-#: Engine/symbtab.c:333
+#: Engine/symbtab.c:345
#, c-format
msgid "Unknown word type for %s on line %d\n"
msgstr ""
@@ -2247,6 +2222,14 @@ msgstr ""
msgid "twarp: t segments exceed twarp array\n"
msgstr ""
+#: InOut/cmidi.c:233
+msgid "CoreMIDI real time MIDI plugin for Csound\n"
+msgstr ""
+
+#: InOut/cmidi.c:247
+msgid "rtmidi: CoreMIDI module enabled\n"
+msgstr ""
+
#: InOut/libsnd.c:486
msgid "error: no input file name"
msgstr ""
@@ -2270,54 +2253,69 @@ msgstr ""
msgid "audio_in %s has %d chnls, orch %d chnls_i"
msgstr ""
-#: InOut/libsnd.c:573
+#: InOut/libsnd.c:574
+#, c-format
+msgid "reading %d sample blks of %d-bit floats from %s \n"
+msgstr ""
+
+#: InOut/libsnd.c:578
#, c-format
msgid "reading %d-byte blks of %s from %s (%s)\n"
msgstr ""
-#: InOut/libsnd.c:608
+#: InOut/libsnd.c:614
msgid "Output file type changed to IRCAM for use in pipe\n"
msgstr ""
-#: InOut/libsnd.c:628
+#: InOut/libsnd.c:634
msgid "Failed to initialise real time audio output"
msgstr ""
-#: InOut/libsnd.c:669 InOut/libsnd.c:673
+#: InOut/libsnd.c:675 InOut/libsnd.c:679
#, c-format
msgid "sfinit: cannot open %s"
msgstr ""
-#: InOut/libsnd.c:733 util/srconv.c:485
+#: InOut/libsnd.c:741
+#, c-format
+msgid "writing %d sample blks of %d-bit floats to %s \n"
+msgstr ""
+
+#: InOut/libsnd.c:744 util/srconv.c:484
#, c-format
msgid "writing %d-byte blks of %s to %s"
msgstr ""
-#: InOut/libsnd.c:740 InOut/libsnd.c:810
+#: InOut/libsnd.c:749 InOut/libsnd.c:824
msgid " (raw)\n"
msgstr ""
-#: InOut/libsnd.c:803
+#: InOut/libsnd.c:815
+#, c-format
+msgid "%ld %d sample blks of %d-bit floats written to %s\n"
+msgstr ""
+
+#: InOut/libsnd.c:820
#, c-format
-msgid "%ld %d-byte soundblks of %s written to %s"
+msgid "%ld %d sample blks of %s written to %s"
msgstr ""
-#: InOut/libsnd.c:822
+#: InOut/libsnd.c:837
#, c-format
msgid "soundfile write returned bytecount of %d, not %d"
msgstr ""
-#: InOut/libsnd.c:825
+#: InOut/libsnd.c:840
msgid ""
"(disk may be full...\n"
" closing the file ...)"
msgstr ""
-#: InOut/libsnd.c:828 util/dnoise.c:1192
+#: InOut/libsnd.c:843 util/dnoise.c:1177
msgid "\t... closed\n"
msgstr ""
-#: InOut/libsnd.c:834
+#: InOut/libsnd.c:849
msgid "not writing to sound disk\n"
msgstr ""
@@ -2717,20 +2715,20 @@ msgstr ""
msgid "Error closing MIDI out device: %d (%s)"
msgstr ""
-#: InOut/midisend.c:171
+#: InOut/midisend.c:170
msgid " *** no callback for opening MIDI output"
msgstr ""
-#: InOut/midisend.c:173
+#: InOut/midisend.c:172
msgid " *** no callback for writing MIDI data"
msgstr ""
-#: InOut/midisend.c:179
+#: InOut/midisend.c:178
#, c-format
msgid " *** error opening MIDI out device: %d (%s)"
msgstr ""
-#: InOut/midisend.c:190
+#: InOut/midisend.c:189
#, c-format
msgid " *** error opening MIDI out file '%s'"
msgstr ""
@@ -2984,7 +2982,7 @@ msgstr ""
msgid "Opened MIDI output device file '%s'\n"
msgstr ""
-#: InOut/rtalsa.c:1101 InOut/rtcoreaudio.c:64 InOut/rtcoreaudio.c:74
+#: InOut/rtalsa.c:1101 InOut/rtcoreaudio.c:71 InOut/rtcoreaudio.c:81
msgid "warning... could not create global var\n"
msgstr ""
@@ -3008,64 +3006,82 @@ msgstr ""
msgid "rtmidi: devfile module enabled\n"
msgstr ""
-#: InOut/rtcoreaudio.c:83
+#: InOut/rtauhal.c:163
+#, c-format
+msgid "selected input device: %s \n"
+msgstr ""
+
+#: InOut/rtauhal.c:166
+#, c-format
+msgid "selected output device: %s \n"
+msgstr ""
+
+#: InOut/rtauhal.c:524
+msgid "AuHAL module: device closed\n"
+msgstr ""
+
+#: InOut/rtauhal.c:541
+msgid "rtaudio: coreaaudio-AuHAL module enabled\n"
+msgstr ""
+
+#: InOut/rtcoreaudio.c:90
msgid ""
"CoreAudio real-time audio module for Csound\n"
"by Victor Lazzarini\n"
msgstr ""
-#: InOut/rtcoreaudio.c:105
+#: InOut/rtcoreaudio.c:112
msgid "rtaudio: CoreAudio module enabled\n"
msgstr ""
-#: InOut/rtcoreaudio.c:254
+#: InOut/rtcoreaudio.c:261
#, c-format
msgid "selected device: %u \n"
msgstr ""
-#: InOut/rtcoreaudio.c:263
+#: InOut/rtcoreaudio.c:270
#, c-format
msgid "CoreAudio module: opening %s \n"
msgstr ""
-#: InOut/rtcoreaudio.c:297
+#: InOut/rtcoreaudio.c:304
msgid " *** CoreAudio: open: could not set buffer size\n"
msgstr ""
-#: InOut/rtcoreaudio.c:342
+#: InOut/rtcoreaudio.c:349
#, c-format
msgid " *** CoreAudio: open: could not set device parameter sr: %d \n"
msgstr ""
-#: InOut/rtcoreaudio.c:344
+#: InOut/rtcoreaudio.c:351
#, c-format
msgid ""
" *** CoreAudio: current device sampling rate is:%d \n"
" try setting the above value in your csound orchestra \n"
msgstr ""
-#: InOut/rtcoreaudio.c:353
+#: InOut/rtcoreaudio.c:360
#, c-format
msgid "CoreAudio module: sr set to %d with %d audio channels \n"
msgstr ""
-#: InOut/rtcoreaudio.c:374 InOut/rtcoreaudio.c:387 InOut/rtcoreaudio.c:432
-#: InOut/rtcoreaudio.c:452
+#: InOut/rtcoreaudio.c:381 InOut/rtcoreaudio.c:394 InOut/rtcoreaudio.c:439
+#: InOut/rtcoreaudio.c:459
msgid " *** CoreAudio: open: memory allocation failure\n"
msgstr ""
-#: InOut/rtcoreaudio.c:414
+#: InOut/rtcoreaudio.c:421
#, c-format
msgid ""
"CoreAudio module: device open with %d buffers of %d frames\n"
"==========================================================\n"
msgstr ""
-#: InOut/rtcoreaudio.c:552
+#: InOut/rtcoreaudio.c:559
msgid "coreaudio module: closing device...\n"
msgstr ""
-#: InOut/rtcoreaudio.c:566
+#: InOut/rtcoreaudio.c:573
msgid "coreaudio module: device closed\n"
msgstr ""
@@ -3465,294 +3481,12 @@ msgstr ""
msgid "rtaudio: WinMM module enabled\n"
msgstr ""
-#: InOut/virtual_keyboard/virtual_keyboard.cpp:435
-msgid "virtual_keyboard.cpp: error allocating FLTK flags"
-msgstr ""
-
-#: InOut/virtual_keyboard/virtual_keyboard.cpp:443 InOut/winFLTK.c:125
-#: InOut/winFLTK.c:139
-#, c-format
-msgid "Error registering opcode '%s'"
-msgstr ""
-
-#: InOut/widgets.cpp:1081
-msgid ""
-"Invalid snapshot. Perhaps you modified orchestra widget code after you saved "
-"the snapshot bank."
-msgstr ""
-
-#: InOut/widgets.cpp:1226
-msgid "No name for FLbutbank"
-msgstr ""
-
-#: InOut/widgets.cpp:1466
-msgid "FLsetsnap: invalid table"
-msgstr ""
-
-#: InOut/widgets.cpp:1504
-msgid ""
-"Saving could overwrite the old file.\n"
-"Are you sure to save ?"
-msgstr ""
-
-#: InOut/widgets.cpp:1516
-msgid ""
-"Saving could overwrite the old file.\n"
-"Are you sure you want to save ?"
-msgstr ""
-
-#: InOut/widgets.cpp:1518
-msgid "No"
-msgstr ""
-
-#: InOut/widgets.cpp:1518
-msgid "Yes"
-msgstr ""
-
-#: InOut/widgets.cpp:1527
-msgid "FLsavesnap: cannot open file"
-msgstr ""
-
-#: InOut/widgets.cpp:1580
-msgid "FLloadsnap: cannot open file"
-msgstr ""
-
-#: InOut/widgets.cpp:1625
-msgid ""
-"unmatched widget, probably due to a modified orchestra. Modifying an "
-"orchestra makes it incompatible with old snapshot files"
-msgstr ""
-
-#: InOut/widgets.cpp:1994
-msgid "end of widget thread\n"
-msgstr ""
-
-#: InOut/widgets.cpp:2020
-msgid "FLrun was already called"
-msgstr ""
-
-#: InOut/widgets.cpp:2023
-msgid "FL_run: memory allocation failure"
-msgstr ""
-
-#: InOut/widgets.cpp:2125 InOut/widgets.cpp:2145
-msgid "Error: Unable to fork process\n"
-msgstr ""
-
-#: InOut/widgets.cpp:2545
-msgid "FLpanel_end: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2548
-msgid ""
-"FLpanel_end: invalid stack count: verify FLpanel/FLpanel_end count and "
-"placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2573 InOut/widgets.cpp:2604
-msgid "FLscroll_end: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2576
-msgid ""
-"FLscroll_end: invalid stack count: verify FLscroll/FLscroll_end count and "
-"placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2607
-msgid ""
-"FLtabs_end: invalid stack count: verify FLtabs/FLtabs_end count and placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2651
-msgid "FLgroup_end: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2654
-msgid ""
-"FLgroup_end: invalid stack count: verify FLgroup/FLgroup_end count and "
-"placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2684
-msgid "FLpack_end: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2687
-msgid ""
-"FLpack_end: invalid stack count: verify FLpack/FLpack_end count and placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2840
-msgid "FLvalue cannot be set by FLsetVal.\n"
-msgstr ""
-
-#: InOut/widgets.cpp:2857
-#, c-format
-msgid "(fl_setWidgetValuei): not fully implemented yet; exp=%d"
-msgstr ""
-
-#: InOut/widgets.cpp:2876
-msgid "FLvalue cannot be set by FLsetVal\n"
-msgstr ""
-
-#: InOut/widgets.cpp:2893
-#, c-format
-msgid "(fl_setWidgetValue_set): not fully implemented yet; exp=%d"
-msgstr ""
-
-#: InOut/widgets.cpp:3242 InOut/widgets.cpp:4648
-msgid "FLslider exponential, using non-labeled slider"
-msgstr ""
-
-#: InOut/widgets.cpp:3264
-msgid "FLslider: invalid slider type"
-msgstr ""
-
-#: InOut/widgets.cpp:3276 InOut/widgets.cpp:4072
-msgid "FLslider: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:3337 InOut/widgets.cpp:4399 InOut/widgets.cpp:4610
-#: InOut/widgets.cpp:4787
-msgid "invalid ZAK space allocation"
-msgstr ""
-
-#: InOut/widgets.cpp:3451
-msgid "FLslidBnk: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:3548 InOut/widgets.cpp:3581
-msgid "FLjoy X axe: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:3675
-msgid "FLknob: invalid knob type"
-msgstr ""
-
-#: InOut/widgets.cpp:3690
-msgid "FLknob: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:3790 InOut/widgets.cpp:3912
-#, c-format
-msgid "FLbutton \"%s\" ignoring snapshot capture retrieve"
-msgstr ""
-
-#: InOut/widgets.cpp:3831
-msgid "FLbutton: invalid button type"
-msgstr ""
-
-#: InOut/widgets.cpp:3863
-msgid "FLcloseButton: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:3882
-#, c-format
-msgid "Command Found: %s\n"
-msgstr ""
-
-#: InOut/widgets.cpp:3954
-msgid "FLbuttonBank: invalid button type"
-msgstr ""
-
-#: InOut/widgets.cpp:3992
-#, c-format
-msgid "FLcount \"%s\" ignoring snapshot capture retrieve"
-msgstr ""
-
-#: InOut/widgets.cpp:4059
-msgid "FLroller: invalid roller type"
-msgstr ""
-
-#: InOut/widgets.cpp:4254
-msgid "FLhvsBox: a square area must be delimited by 2 lines at least"
-msgstr ""
-
-#: InOut/widgets.cpp:4302
-msgid "FLkeyIn: invalid table number"
-msgstr ""
-
-#: InOut/widgets.cpp:4305
-msgid "FLkeyIn: table too short!"
-msgstr ""
-
-#: InOut/widgets.cpp:4522
-msgid "FLvslidBnk: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:4698 InOut/widgets.cpp:4875
-msgid "FLsliderBank: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:4825
-msgid "FLslidBnk2: FLslider exponential, using non-labeled slider"
-msgstr ""
-
-#: InOut/widgets.cpp:4955 InOut/widgets.cpp:5018
-msgid "FLsldBnkSet: invalid table number"
-msgstr ""
-
-#: InOut/widgets.cpp:4959 InOut/widgets.cpp:5022
-msgid "FLslidBnkSet: table too short!"
-msgstr ""
-
-#: InOut/widgets.cpp:4967 InOut/widgets.cpp:5031
-msgid "FLsldBnkSet: invalid outable number"
-msgstr ""
-
-#: InOut/widgets.cpp:4972 InOut/widgets.cpp:5037
-msgid "FLslidBnkSet: too many sliders to reset!"
-msgstr ""
-
-#: InOut/widgets.cpp:4995
-msgid "FLslidBnkSet: function mapping not available"
-msgstr ""
-
-#: InOut/widgets.cpp:5064 InOut/widgets.cpp:5149 InOut/widgets.cpp:5236
-msgid ""
-"FLslidBnk2Setk: value out of range: function mapping requires a 0 to 1 range "
-"for input"
-msgstr ""
-
-#: InOut/widgets.cpp:5093
-msgid "FLsldBnkSetk: invalid table number"
-msgstr ""
-
-#: InOut/widgets.cpp:5097 InOut/widgets.cpp:5183
-msgid "FLslidBnkSetk: table too short!"
-msgstr ""
-
-#: InOut/widgets.cpp:5105
-msgid "FLsldBnkSetk: invalid outable number"
-msgstr ""
-
-#: InOut/widgets.cpp:5111 InOut/widgets.cpp:5197
-msgid "FLslidBnkSetk: too many sliders to reset!"
-msgstr ""
-
-#: InOut/widgets.cpp:5179
-msgid "FLslidBnkSetk: invalid table number"
-msgstr ""
-
-#: InOut/widgets.cpp:5191
-msgid "FLslidBnkSetk: invalid outable number"
-msgstr ""
-
-#: InOut/widgets.cpp:5268
-msgid "FLxyin: none of X limits can be zero in exponential mode!"
-msgstr ""
-
-#: InOut/widgets.cpp:5294
-msgid "FLxyin: none of Y limits can be zero in exponential mode!"
-msgstr ""
-
#: InOut/winascii.c:75
#, c-format
msgid "%s\t%ld points, scalemax %5.3f\n"
msgstr ""
-#: InOut/windin.c:46 Opcodes/pitch.c:82 Opcodes/spectra.c:76
+#: InOut/windin.c:46 Opcodes/pitch.c:83 Opcodes/spectra.c:78
msgid "illegal iprd"
msgstr ""
@@ -3795,46 +3529,60 @@ msgstr ""
msgid "widgets.cpp: error allocating FLTK flags"
msgstr ""
-#: OOps/aops.c:95 OOps/aops.c:119
+#: InOut/winFLTK.c:124 InOut/winFLTK.c:137
+#: InOut/virtual_keyboard/virtual_keyboard.cpp:443
+#, c-format
+msgid "Error registering opcode '%s'"
+msgstr ""
+
+#: InOut/virtual_keyboard/virtual_keyboard.cpp:435
+msgid "virtual_keyboard.cpp: error allocating FLTK flags"
+msgstr ""
+
+#: OOps/aops.c:120 OOps/aops.c:144
#, c-format
msgid "Cannot be more In arguments than Out in init (%d,%d)"
msgstr ""
-#: OOps/aops.c:175 OOps/aops.c:194
+#: OOps/aops.c:200 OOps/aops.c:219
#, c-format
msgid "Index %d out of range [0,%d] in t[]\n"
msgstr ""
-#: OOps/aops.c:184
-msgid "Vector notinitialised\n"
+#: OOps/aops.c:209
+msgid "Vector not initialised\n"
msgstr ""
-#: OOps/aops.c:686
+#: OOps/aops.c:711
msgid "non-looping sample"
msgstr ""
-#: OOps/aops.c:828 OOps/aops.c:856
+#: OOps/aops.c:853 OOps/aops.c:881
#, c-format
msgid "No tuning table %d"
msgstr ""
-#: OOps/aops.c:901 OOps/aops.c:939
+#: OOps/aops.c:926 OOps/aops.c:964
msgid "cpstun: invalid table"
msgstr ""
-#: OOps/aops.c:1189
+#: OOps/aops.c:1214
msgid "Input and output argument count differs in inch"
msgstr ""
-#: OOps/aops.c:1193
+#: OOps/aops.c:1218
#, c-format
msgid "Input channel %d too large; ignored"
msgstr ""
-#: OOps/aops.c:1667
+#: OOps/aops.c:1698
msgid "k-rate invalue ChannelName cannot start with $"
msgstr ""
+#: OOps/aops.c:1835
+msgid "Unknown functuon called"
+msgstr ""
+
#: OOps/bus.c:313 OOps/bus.c:345
msgid "chani: invalid index"
msgstr ""
@@ -4117,7 +3865,7 @@ msgstr ""
msgid "dispfft: not initialised"
msgstr ""
-#: OOps/disprep.c:435 Opcodes/spectra.c:516
+#: OOps/disprep.c:435 Opcodes/spectra.c:518
msgid "illegal iperiod"
msgstr ""
@@ -4181,15 +3929,15 @@ msgstr ""
msgid " *** fftlib.c: internal error: invalid FFT size: %d"
msgstr ""
-#: OOps/goto_ops.c:92
+#: OOps/goto_ops.c:93
msgid "negative time period"
msgstr ""
-#: OOps/goto_ops.c:182
+#: OOps/goto_ops.c:186
msgid "turnoff2: invalid instrument number"
msgstr ""
-#: OOps/goto_ops.c:187
+#: OOps/goto_ops.c:191
msgid "turnoff2: invalid mode parameter"
msgstr ""
@@ -4206,7 +3954,7 @@ msgid "cpstabm: invalid modulator table"
msgstr ""
#: OOps/midiops.c:304 OOps/midiops.c:314 OOps/midiops.c:334 OOps/midiops.c:344
-#: OOps/midiops.c:421 OOps/midiops.c:435 Opcodes/gab/sliderTable.c:563
+#: OOps/midiops.c:421 OOps/midiops.c:435 Opcodes/gab/sliderTable.c:567
#: Opcodes/midiops2.c:56 Opcodes/midiops2.c:73 Opcodes/midiops2.c:111
#: Opcodes/midiops2.c:145 Opcodes/midiops2.c:206 Opcodes/midiops2.c:237
#: Opcodes/midiops2.c:298 Opcodes/midiops2.c:317 Opcodes/midiops2.c:357
@@ -4222,7 +3970,7 @@ msgstr ""
msgid "illegal mrtmsg argument"
msgstr ""
-#: OOps/midiout.c:383
+#: OOps/midiout.c:389
#, c-format
msgid "out contr14 msb:%x lsb:%x\n"
msgstr ""
@@ -4684,148 +4432,148 @@ msgstr ""
msgid "Unknown window type; replaced by rectangular\n"
msgstr ""
-#: OOps/pvsanal.c:1025
+#: OOps/pvsanal.c:1027
msgid "pvsynth: Not Initialised.\n"
msgstr ""
-#: OOps/remote.c:100
+#: OOps/remote.c:103
msgid "insufficient memory to initialise remote globals."
msgstr ""
-#: OOps/remote.c:109
+#: OOps/remote.c:112
msgid "insufficient memory to initialise outgoing socket table."
msgstr ""
-#: OOps/remote.c:116
+#: OOps/remote.c:119
msgid "insufficient memory to initialise incoming socket table."
msgstr ""
-#: OOps/remote.c:124
+#: OOps/remote.c:127
msgid "insufficient memory to initialise insrfd_list."
msgstr ""
-#: OOps/remote.c:132
+#: OOps/remote.c:135
msgid "insufficient memory to initialise chnrfd_list."
msgstr ""
-#: OOps/remote.c:139
+#: OOps/remote.c:142
msgid "insufficient memory to initialise insrfd table."
msgstr ""
-#: OOps/remote.c:146
+#: OOps/remote.c:149
msgid "insufficient memory to initialise chnrfd table."
msgstr ""
-#: OOps/remote.c:153
+#: OOps/remote.c:156
msgid "insufficient memory to initialise local ip address."
msgstr ""
-#: OOps/remote.c:161
+#: OOps/remote.c:164
msgid "unable to get local ip address."
msgstr ""
-#: OOps/remote.c:222
+#: OOps/remote.c:225
msgid "could not open remote port"
msgstr ""
-#: OOps/remote.c:237
+#: OOps/remote.c:240
msgid "---> Could not connect \n"
msgstr ""
-#: OOps/remote.c:241
+#: OOps/remote.c:244
msgid "---> Failed all attempts to connect. \n"
msgstr ""
-#: OOps/remote.c:244
+#: OOps/remote.c:247
msgid "---> Connected. \n"
msgstr ""
-#: OOps/remote.c:258 Opcodes/socksend.c:232
+#: OOps/remote.c:261 Opcodes/socksend.c:305
msgid "write to socket failed"
msgstr ""
-#: OOps/remote.c:278
+#: OOps/remote.c:281
msgid "creating socket\n"
msgstr ""
-#: OOps/remote.c:280
+#: OOps/remote.c:283
msgid "created socket \n"
msgstr ""
-#: OOps/remote.c:292
+#: OOps/remote.c:295
msgid "setting socket option to reuse the addresse \n"
msgstr ""
-#: OOps/remote.c:309 Opcodes/sockrecv.c:133 Opcodes/sockrecv.c:223
-#: Opcodes/socksend.c:211
+#: OOps/remote.c:312 Opcodes/sockrecv.c:141 Opcodes/sockrecv.c:237
+#: Opcodes/socksend.c:284
msgid "bind failed"
msgstr ""
-#: OOps/remote.c:313 Opcodes/socksend.c:216
+#: OOps/remote.c:316 Opcodes/socksend.c:289
msgid "listen failed"
msgstr ""
-#: OOps/remote.c:318 Opcodes/socksend.c:222
+#: OOps/remote.c:321 Opcodes/socksend.c:295
msgid "accept failed"
msgstr ""
-#: OOps/remote.c:321
+#: OOps/remote.c:324
#, c-format
msgid "accepted, conn=%d \n"
msgstr ""
-#: OOps/remote.c:353 OOps/remote.c:374 OOps/remote.c:417 OOps/remote.c:449
-#: OOps/remote.c:489
+#: OOps/remote.c:356 OOps/remote.c:377 OOps/remote.c:420 OOps/remote.c:452
+#: OOps/remote.c:492
msgid "failed to initialise remote globals."
msgstr ""
-#: OOps/remote.c:378 OOps/remote.c:421
+#: OOps/remote.c:381 OOps/remote.c:424
msgid "missing instr nos"
msgstr ""
-#: OOps/remote.c:390 OOps/remote.c:430
+#: OOps/remote.c:393 OOps/remote.c:433
msgid "illegal instr no"
msgstr ""
-#: OOps/remote.c:393
+#: OOps/remote.c:396
msgid "insno already remote"
msgstr ""
-#: OOps/remote.c:403 OOps/remote.c:474
+#: OOps/remote.c:406 OOps/remote.c:477
msgid "Failed to open port to listen"
msgstr ""
-#: OOps/remote.c:423
+#: OOps/remote.c:426
#, c-format
msgid "*** str1: %s own:%s\n"
msgstr ""
-#: OOps/remote.c:433
+#: OOps/remote.c:436
msgid "insno already specific remote"
msgstr ""
-#: OOps/remote.c:453 OOps/remote.c:493
+#: OOps/remote.c:456 OOps/remote.c:496
msgid "missing channel nos"
msgstr ""
-#: OOps/remote.c:463 OOps/remote.c:502
+#: OOps/remote.c:466 OOps/remote.c:505
msgid "illegal channel no"
msgstr ""
-#: OOps/remote.c:466
+#: OOps/remote.c:469
msgid "channel already remote"
msgstr ""
-#: OOps/remote.c:505
+#: OOps/remote.c:508
msgid "channel already specific remote"
msgstr ""
-#: OOps/remote.c:531 OOps/remote.c:555 OOps/remote.c:579
+#: OOps/remote.c:534 OOps/remote.c:558 OOps/remote.c:582
msgid "CLsend failed"
msgstr ""
-#: OOps/remote.c:645 OOps/remote.c:653 OOps/remote.c:661 OOps/remote.c:669
-#: OOps/remote.c:677
+#: OOps/remote.c:648 OOps/remote.c:656 OOps/remote.c:664 OOps/remote.c:672
+#: OOps/remote.c:680
msgid ""
"*** This version of Csound was not compiled with remote event support ***\n"
msgstr ""
@@ -4934,53 +4682,53 @@ msgstr ""
msgid "linseg: not initialised (arate)\n"
msgstr ""
-#: OOps/ugens1.c:463 OOps/ugens1.c:465 OOps/ugens1.c:512 OOps/ugens1.c:514
-#: OOps/ugens1.c:564 OOps/ugens1.c:566 OOps/ugens1.c:610 OOps/ugens1.c:612
-#: OOps/ugens1.c:774 OOps/ugens1.c:776
+#: OOps/ugens1.c:464 OOps/ugens1.c:466 OOps/ugens1.c:513 OOps/ugens1.c:515
+#: OOps/ugens1.c:565 OOps/ugens1.c:567 OOps/ugens1.c:611 OOps/ugens1.c:613
+#: OOps/ugens1.c:775 OOps/ugens1.c:777
#, c-format
msgid "ival%d is zero"
msgstr ""
-#: OOps/ugens1.c:466 OOps/ugens1.c:515 OOps/ugens1.c:567 OOps/ugens1.c:613
-#: OOps/ugens1.c:777
+#: OOps/ugens1.c:467 OOps/ugens1.c:516 OOps/ugens1.c:568 OOps/ugens1.c:614
+#: OOps/ugens1.c:778
#, c-format
msgid "ival%d sign conflict"
msgstr ""
-#: OOps/ugens1.c:495 OOps/ugens1.c:544
+#: OOps/ugens1.c:496 OOps/ugens1.c:545
#, c-format
msgid "Breakpoint time %f not valid"
msgstr ""
-#: OOps/ugens1.c:706
+#: OOps/ugens1.c:707
msgid "expseg (krate): not initialised"
msgstr ""
-#: OOps/ugens1.c:732
+#: OOps/ugens1.c:733
msgid "expseg (arate): not initialised"
msgstr ""
-#: OOps/ugens1.c:1013 OOps/ugens1.c:1149 OOps/ugens1.c:1311
+#: OOps/ugens1.c:1014 OOps/ugens1.c:1150 OOps/ugens1.c:1312
msgid "non-positive iatdec"
msgstr ""
-#: OOps/ugens1.c:1106 OOps/ugens1.c:1273
+#: OOps/ugens1.c:1107 OOps/ugens1.c:1274
msgid "ixmod out of range."
msgstr ""
-#: OOps/ugens1.c:1134 OOps/ugens1.c:1301
+#: OOps/ugens1.c:1135 OOps/ugens1.c:1302
msgid "rise func ends with zero"
msgstr ""
-#: OOps/ugens1.c:1178 OOps/ugens1.c:1257
+#: OOps/ugens1.c:1179 OOps/ugens1.c:1258
msgid "envlpx rise func ends with zero"
msgstr ""
-#: OOps/ugens1.c:1199 OOps/ugens1.c:1254
+#: OOps/ugens1.c:1200 OOps/ugens1.c:1255
msgid "envlpx(krate): not initialised"
msgstr ""
-#: OOps/ugens2.c:48 OOps/ugens2.c:61 Opcodes/shape.c:377
+#: OOps/ugens2.c:48 OOps/ugens2.c:61 Opcodes/shape.c:379
msgid "init phase truncation\n"
msgstr ""
@@ -5044,8 +4792,8 @@ msgid "oscil(krate): not initialised"
msgstr ""
#: OOps/ugens2.c:1139 OOps/ugens2.c:1167 OOps/ugens2.c:1192 OOps/ugens2.c:1219
-#: Opcodes/pitch.c:1579 Opcodes/pitch.c:1606 Opcodes/pitch.c:1633
-#: Opcodes/pitch.c:1662
+#: Opcodes/pitch.c:1580 Opcodes/pitch.c:1607 Opcodes/pitch.c:1634
+#: Opcodes/pitch.c:1663
msgid "oscil: not initialised"
msgstr ""
@@ -5161,7 +4909,7 @@ msgstr ""
msgid "Seeding from current time %lu\n"
msgstr ""
-#: OOps/ugens5.c:198 OOps/ugens5.c:260 Opcodes/gab/gab.c:45 Opcodes/ugsc.c:188
+#: OOps/ugens5.c:198 OOps/ugens5.c:260 Opcodes/gab/gab.c:47 Opcodes/ugsc.c:186
#, c-format
msgid "illegal reson iscl value, %f"
msgstr ""
@@ -5393,8 +5141,8 @@ msgstr ""
msgid "Table no. < 1 dft=%.2f sft=%.2f"
msgstr ""
-#: OOps/ugrw1.c:1781 OOps/ugrw1.c:1822 Opcodes/fareyseq.c:455
-#: Opcodes/fareyseq.c:477
+#: OOps/ugrw1.c:1781 OOps/ugrw1.c:1822 Opcodes/fareyseq.c:453
+#: Opcodes/fareyseq.c:475
#, c-format
msgid "Source sft table %.2f not found."
msgstr ""
@@ -5624,19 +5372,19 @@ msgstr ""
msgid "reverbx: not initialised"
msgstr ""
-#: Opcodes/ambicode1.c:80
+#: Opcodes/ambicode1.c:82
msgid "The numbers of input and output arguments are not valid."
msgstr ""
-#: Opcodes/ambicode1.c:163
+#: Opcodes/ambicode1.c:165
msgid "The number of input arguments is not valid."
msgstr ""
-#: Opcodes/ambicode1.c:167
+#: Opcodes/ambicode1.c:169
msgid "The isetup value should be between 1 and 5."
msgstr ""
-#: Opcodes/ambicode1.c:193
+#: Opcodes/ambicode1.c:195
msgid "The output channel count does not match the isetup value."
msgstr ""
@@ -5676,16 +5424,16 @@ msgstr ""
msgid "Not supported setup number!"
msgstr ""
-#: Opcodes/babo.c:740
+#: Opcodes/babo.c:742
#, c-format
msgid "Babo: resonator dimensions are incorrect (%.1f, %.1f, %.1f)"
msgstr ""
-#: Opcodes/bilbar.c:82
+#: Opcodes/bilbar.c:83
msgid "No data to continue"
msgstr ""
-#: Opcodes/bilbar.c:108
+#: Opcodes/bilbar.c:109
msgid "Ends must be clamped(1), pivoting(2) or free(3)"
msgstr ""
@@ -5698,8 +5446,8 @@ msgstr ""
msgid "DLineN: Delay length too big ... setting to maximum length of %ld.\n"
msgstr ""
-#: Opcodes/bowedbar.c:98 Opcodes/physmod.c:489
-msgid "unknown lowest frequency for bowed string -- assuming 50Hz\n"
+#: Opcodes/bowedbar.c:98
+msgid "unknown lowest frequency for bowed bar -- assuming 50Hz\n"
msgstr ""
#: Opcodes/clfilt.c:53
@@ -5777,17 +5525,17 @@ msgstr ""
msgid "Unknown control %d"
msgstr ""
-#: Opcodes/cpumeter.c:73
+#: Opcodes/cpumeter.c:77
#, c-format
msgid "Failed to open /proc/stat: %s"
msgstr ""
-#: Opcodes/cpumeter.c:75 Opcodes/cpumeter.c:80 Opcodes/cpumeter.c:107
-#: Opcodes/cpumeter.c:147
+#: Opcodes/cpumeter.c:79 Opcodes/cpumeter.c:84 Opcodes/cpumeter.c:111
+#: Opcodes/cpumeter.c:151
msgid "failed /proc/stat read"
msgstr ""
-#: Opcodes/crossfm.c:33
+#: Opcodes/crossfm.c:34
msgid "crossfm: ftable not found"
msgstr ""
@@ -5828,31 +5576,31 @@ msgstr ""
msgid "insufficient arguments for fareytable"
msgstr ""
-#: Opcodes/fareyseq.c:250 Opcodes/fareyseq.c:300
+#: Opcodes/fareyseq.c:251 Opcodes/fareyseq.c:301
#, c-format
msgid "Farey: Table no. < 1 dft=%.2f sft=%.2f"
msgstr ""
-#: Opcodes/fareyseq.c:255
+#: Opcodes/fareyseq.c:256
#, c-format
msgid "Farey: Filter type < 1 dft=%.2f sft=%.2f"
msgstr ""
-#: Opcodes/fareyseq.c:270 Opcodes/fareyseq.c:318
+#: Opcodes/fareyseq.c:271 Opcodes/fareyseq.c:319
#, c-format
msgid "Farey: Destination dft table %.2f not found."
msgstr ""
-#: Opcodes/fareyseq.c:281 Opcodes/fareyseq.c:329
+#: Opcodes/fareyseq.c:282 Opcodes/fareyseq.c:330
#, c-format
msgid "Farey: Source sft table %.2f not found."
msgstr ""
-#: Opcodes/fareyseq.c:305
+#: Opcodes/fareyseq.c:306
msgid "Farey: Filter type < 1"
msgstr ""
-#: Opcodes/fareyseq.c:447 Opcodes/fareyseq.c:468
+#: Opcodes/fareyseq.c:445 Opcodes/fareyseq.c:466
#, c-format
msgid "Table no. < 1 sft=%.2f"
msgstr ""
@@ -5960,45 +5708,45 @@ msgstr ""
msgid "follow - zero length!"
msgstr ""
-#: Opcodes/fout.c:59
+#: Opcodes/fout.c:60
#, c-format
msgid "Closing file '%s'...\n"
msgstr ""
-#: Opcodes/fout.c:101
+#: Opcodes/fout.c:102
msgid "invalid file handle"
msgstr ""
-#: Opcodes/fout.c:108 Opcodes/fout.c:420
+#: Opcodes/fout.c:109 Opcodes/fout.c:421
msgid "invalid file name"
msgstr ""
-#: Opcodes/fout.c:165
+#: Opcodes/fout.c:166
#, c-format
msgid "error opening file '%s'"
msgstr ""
-#: Opcodes/fout.c:192
+#: Opcodes/fout.c:193
#, c-format
msgid "error opening sound file '%s'"
msgstr ""
-#: Opcodes/fout.c:429
+#: Opcodes/fout.c:430
#, c-format
msgid "cannot close '%s': not found in list of open files"
msgstr ""
-#: Opcodes/fout.c:440
+#: Opcodes/fout.c:441
#, c-format
msgid "cannot close file #%d: not a valid handle"
msgstr ""
-#: Opcodes/fout.c:447
+#: Opcodes/fout.c:448
#, c-format
msgid "file #%d (%s) is in use, will be closed when released"
msgstr ""
-#: Opcodes/fout.c:476 Opcodes/fout.c:479 Opcodes/fout.c:550 Opcodes/fout.c:553
+#: Opcodes/fout.c:477 Opcodes/fout.c:480 Opcodes/fout.c:551 Opcodes/fout.c:554
msgid "fouti: invalid file handle"
msgstr ""
@@ -6076,554 +5824,688 @@ msgstr ""
msgid "ftsave: failed to write file"
msgstr ""
-#: Opcodes/gab/gab.c:109
+#: Opcodes/gab/gab.c:111
msgid "fastab: incorrect table number"
msgstr ""
-#: Opcodes/gab/gab.c:132 Opcodes/gab/gab.c:141 Opcodes/gab/gab.c:171
+#: Opcodes/gab/gab.c:134 Opcodes/gab/gab.c:143 Opcodes/gab/gab.c:173
msgid "tabw off end"
msgstr ""
-#: Opcodes/gab/gab.c:157 Opcodes/gab/gab.c:225 Opcodes/gab/gab.c:234
+#: Opcodes/gab/gab.c:159 Opcodes/gab/gab.c:227 Opcodes/gab/gab.c:236
msgid "tab off end"
msgstr ""
-#: Opcodes/gab/gab.c:183
+#: Opcodes/gab/gab.c:185
msgid "tab_i: incorrect table number"
msgstr ""
-#: Opcodes/gab/gab.c:190
-msgid "tab_i off end"
+#: Opcodes/gab/gab.c:192
+#, c-format
+msgid "tab_i off end: table number: %d\n"
msgstr ""
-#: Opcodes/gab/gab.c:202
+#: Opcodes/gab/gab.c:204
msgid "tabw_i: incorrect table number"
msgstr ""
-#: Opcodes/gab/gab.c:209
+#: Opcodes/gab/gab.c:211
msgid "tabw_i off end"
msgstr ""
-#: Opcodes/gab/gab.c:247
+#: Opcodes/gab/gab.c:249
msgid "tab_init: incorrect table number"
msgstr ""
-#: Opcodes/gab/gab.c:316
+#: Opcodes/gab/gab.c:318
msgid "printi parameter was not a \"quoted string\""
msgstr ""
-#: Opcodes/gab/gab.c:423
+#: Opcodes/gab/gab.c:425
msgid "adsynt2: wavetable not found!"
msgstr ""
-#: Opcodes/gab/gab.c:435
+#: Opcodes/gab/gab.c:437
msgid "adsynt2: freqtable not found!"
msgstr ""
-#: Opcodes/gab/gab.c:440
+#: Opcodes/gab/gab.c:442
msgid "adsynt2: partial count is greater than freqtable size!"
msgstr ""
-#: Opcodes/gab/gab.c:449
+#: Opcodes/gab/gab.c:451
msgid "adsynt2: amptable not found!"
msgstr ""
-#: Opcodes/gab/gab.c:454
+#: Opcodes/gab/gab.c:456
msgid "adsynt2: partial count is greater than amptable size!"
msgstr ""
-#: Opcodes/gab/gab.c:499
+#: Opcodes/gab/gab.c:501
msgid "adsynt2: not initialised"
msgstr ""
-#: Opcodes/gab/gab.c:741
+#: Opcodes/gab/gab.c:743
msgid "max_k: invalid imaxflag value"
msgstr ""
-#: Opcodes/gab/hvs.c:68
+#: Opcodes/gab/hvs.c:70
msgid "hvs1: a line segment must be delimited by 2 points at least"
msgstr ""
-#: Opcodes/gab/hvs.c:150
+#: Opcodes/gab/hvs.c:152
msgid "hvs2: a square area must be delimited by 2 lines at least"
msgstr ""
-#: Opcodes/gab/hvs.c:246
+#: Opcodes/gab/hvs.c:248
msgid "hvs3: a square area must be delimited by 2 lines at least"
msgstr ""
-#: Opcodes/gab/hvs.c:389
+#: Opcodes/gab/hvs.c:390
msgid "vphaseseg: the first function is invalid or missing"
msgstr ""
-#: Opcodes/gab/hvs.c:396
+#: Opcodes/gab/hvs.c:398 Opcodes/gab/vectorial.c:2301
msgid "vphaseseg: invalid num. of elements"
msgstr ""
-#: Opcodes/gab/hvs.c:414
+#: Opcodes/gab/hvs.c:416
msgid "vphaseseg: function invalid or missing"
msgstr ""
-#: Opcodes/gab/newgabopc.c:39 Opcodes/gab/newgabopc.c:54
+#: Opcodes/gab/newgabopc.c:40 Opcodes/gab/newgabopc.c:55
msgid "vtable1: incorrect table number"
msgstr ""
-#: Opcodes/gab/newgabopc.c:359
+#: Opcodes/gab/newgabopc.c:241 Opcodes/gab/newgabopc.c:296
+msgid "copyTabElems: incorrect destination table number"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:246 Opcodes/gab/newgabopc.c:301
+msgid ""
+"copyTabElems: destination table too short or number of elements to copy too "
+"big"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:252 Opcodes/gab/newgabopc.c:306
+msgid "copyTabElems: incorrect source table number"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:257 Opcodes/gab/newgabopc.c:310
+msgid ""
+"copyTabElems: source table size less than the number of elements to copy"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:273 Opcodes/gab/newgabopc.c:318
+msgid "copyTabElems: source table too short"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:276 Opcodes/gab/newgabopc.c:321
+msgid "copyTabElems: destination table too short"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:347
+msgid "inrg: audio input is not enabled"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:362
msgid "inrg: channel number cannot be < 1 (1 is the first channel)"
msgstr ""
-#: Opcodes/gab/newgabopc.c:400
+#: Opcodes/gab/newgabopc.c:403
msgid "outrg: channel number cannot be < 1 (1 is the first channel)"
msgstr ""
-#: Opcodes/gab/newgabopc.c:439 Opcodes/gab/newgabopc.c:671
+#: Opcodes/gab/newgabopc.c:440 Opcodes/gab/newgabopc.c:574
+#: Opcodes/gab/newgabopc.c:672
msgid "invalid function"
msgstr ""
-#: Opcodes/gab/newgabopc.c:442
+#: Opcodes/gab/newgabopc.c:443
msgid "lposc: no sample rate stored in function; assuming=sr\n"
msgstr ""
-#: Opcodes/gab/newgabopc.c:673
+#: Opcodes/gab/newgabopc.c:577
+msgid "lposcil: no sample rate stored in function assuming=sr\n"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:674
msgid "lposcil: no sample rate stored in function; assuming=sr\n"
msgstr ""
-#: Opcodes/gab/sliderTable.c:45 Opcodes/gab/sliderTable.c:254
+#: Opcodes/gab/sliderTable.c:47 Opcodes/gab/sliderTable.c:256
#: Opcodes/midiops3.c:44 Opcodes/midiops3.c:146 Opcodes/midiops3.c:259
#: Opcodes/midiops3.c:317 Opcodes/midiops3.c:413
msgid "illegal channel"
msgstr ""
-#: Opcodes/gab/sliderTable.c:65 Opcodes/gab/sliderTable.c:277
+#: Opcodes/gab/sliderTable.c:67 Opcodes/gab/sliderTable.c:280
#: Opcodes/midiops3.c:58 Opcodes/midiops3.c:162 Opcodes/midiops3.c:273
#, c-format
msgid "illegal control number at position n.%d"
msgstr ""
-#: Opcodes/gab/sliderTable.c:74
+#: Opcodes/gab/sliderTable.c:76
#, c-format
msgid ""
"sliderXtable: illegal initvalue at position %d. When using table indexing, "
"the init range is 0 to 1"
msgstr ""
-#: Opcodes/gab/sliderTable.c:84 Opcodes/gab/sliderTable.c:284
-#: Opcodes/gab/sliderTable.c:509 Opcodes/midiops3.c:64 Opcodes/midiops3.c:168
+#: Opcodes/gab/sliderTable.c:86 Opcodes/gab/sliderTable.c:287
+#: Opcodes/gab/sliderTable.c:513 Opcodes/midiops3.c:64 Opcodes/midiops3.c:168
#: Opcodes/midiops3.c:347
#, c-format
msgid "illegal initvalue at position n.%d"
msgstr ""
-#: Opcodes/gab/sliderTable.c:96 Opcodes/gab/sliderTable.c:296
+#: Opcodes/gab/sliderTable.c:98 Opcodes/gab/sliderTable.c:299
msgid "sliderXtable: zero is illegal in exponential operations"
msgstr ""
-#: Opcodes/gab/sliderTable.c:312
+#: Opcodes/gab/sliderTable.c:315
#, c-format
msgid ""
"sliderXtable: illegal initvalue at position %d. When using table indexing, "
"the init range is 0 to 1"
msgstr ""
-#: Opcodes/gab/sliderTable.c:565 Opcodes/midiops2.c:321 Opcodes/midiops2.c:359
+#: Opcodes/gab/sliderTable.c:569 Opcodes/midiops2.c:321 Opcodes/midiops2.c:359
#: Opcodes/midiops2.c:391 Opcodes/midiops2.c:440 Opcodes/midiops2.c:475
#: Opcodes/midiops2.c:517 Opcodes/midiops2.c:532 Opcodes/midiops2.c:551
msgid "illegal midi channel"
msgstr ""
-#: Opcodes/gab/tabmorph.c:42
+#: Opcodes/gab/tabmorph.c:43
msgid "tabmorph: invalid table number"
msgstr ""
-#: Opcodes/gab/tabmorph.c:46
+#: Opcodes/gab/tabmorph.c:47
msgid "tabmorph: all tables must have the same length!"
msgstr ""
-#: Opcodes/gab/vectorial.c:33
+#: Opcodes/gab/vectorial.c:35
msgid "mtablei: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:63 Opcodes/gab/vectorial.c:83
-#: Opcodes/gab/vectorial.c:133 Opcodes/gab/vectorial.c:200
+#: Opcodes/gab/vectorial.c:65 Opcodes/gab/vectorial.c:85
+#: Opcodes/gab/vectorial.c:135 Opcodes/gab/vectorial.c:202
msgid "mtable: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:185
+#: Opcodes/gab/vectorial.c:187
msgid "mtabi: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:252
+#: Opcodes/gab/vectorial.c:254
msgid "mtablewi: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:268 Opcodes/gab/vectorial.c:288
-#: Opcodes/gab/vectorial.c:317 Opcodes/gab/vectorial.c:362
-#: Opcodes/gab/vectorial.c:406
+#: Opcodes/gab/vectorial.c:270 Opcodes/gab/vectorial.c:290
+#: Opcodes/gab/vectorial.c:319 Opcodes/gab/vectorial.c:364
+#: Opcodes/gab/vectorial.c:408
msgid "mtabw: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:348
+#: Opcodes/gab/vectorial.c:350
msgid "mtabwi: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:380
+#: Opcodes/gab/vectorial.c:382
msgid "mtablew: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:454 Opcodes/gab/vectorial.c:513
+#: Opcodes/gab/vectorial.c:457 Opcodes/gab/vectorial.c:516
#, c-format
msgid "vadd_i: invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:470
+#: Opcodes/gab/vectorial.c:473
msgid "vadd_i: ifn length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:497
+#: Opcodes/gab/vectorial.c:500
msgid "vadd: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:529
+#: Opcodes/gab/vectorial.c:532
msgid "vmult_i: ifn length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:556
+#: Opcodes/gab/vectorial.c:559
msgid "vmult: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:572
+#: Opcodes/gab/vectorial.c:575
#, c-format
msgid "vpow_i: invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:589
+#: Opcodes/gab/vectorial.c:592
msgid "vpow_i: ifn length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:617
+#: Opcodes/gab/vectorial.c:620
msgid "vpow: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:633
+#: Opcodes/gab/vectorial.c:636
#, c-format
msgid "vexp_i: invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:649
+#: Opcodes/gab/vectorial.c:652
msgid "vexp_i: ifn length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:676
+#: Opcodes/gab/vectorial.c:679
msgid "vexp: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:694
+#: Opcodes/gab/vectorial.c:697
#, c-format
msgid "vectorsop: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:699
+#: Opcodes/gab/vectorial.c:702
#, c-format
msgid "vectorsop: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:738
+#: Opcodes/gab/vectorial.c:742
msgid "vcopy: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:756
+#: Opcodes/gab/vectorial.c:760
msgid "vcopy: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:783
+#: Opcodes/gab/vectorial.c:787
#, c-format
msgid "vcopy_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:788
+#: Opcodes/gab/vectorial.c:792
#, c-format
msgid "vcopy_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:810
+#: Opcodes/gab/vectorial.c:814
msgid "vcopy_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:827
+#: Opcodes/gab/vectorial.c:831
msgid "vcopy_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:866
+#: Opcodes/gab/vectorial.c:870
msgid "vaddv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:885
+#: Opcodes/gab/vectorial.c:889
msgid "vaddv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:911
+#: Opcodes/gab/vectorial.c:915
#, c-format
msgid "vaddv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:916
+#: Opcodes/gab/vectorial.c:920
#, c-format
msgid "vaddv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:938
+#: Opcodes/gab/vectorial.c:942
msgid "vaddv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:956
+#: Opcodes/gab/vectorial.c:960
msgid "vaddv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:987
+#: Opcodes/gab/vectorial.c:991
msgid "vsubv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1006
+#: Opcodes/gab/vectorial.c:1010
msgid "vsubv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1033
+#: Opcodes/gab/vectorial.c:1037
#, c-format
msgid "vsubv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1038
+#: Opcodes/gab/vectorial.c:1042
#, c-format
msgid "vsubv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1060
+#: Opcodes/gab/vectorial.c:1064
msgid "vsubv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1078
+#: Opcodes/gab/vectorial.c:1082
msgid "vsubv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1115
+#: Opcodes/gab/vectorial.c:1119
msgid "vmultv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1134
+#: Opcodes/gab/vectorial.c:1138
msgid "vmultv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1161
+#: Opcodes/gab/vectorial.c:1165
#, c-format
msgid "vmultv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1166
+#: Opcodes/gab/vectorial.c:1170
#, c-format
msgid "vmultv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1188
+#: Opcodes/gab/vectorial.c:1192
msgid "vmultv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1205
+#: Opcodes/gab/vectorial.c:1209
msgid "vmultv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1242
+#: Opcodes/gab/vectorial.c:1246
msgid "vdivv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1261
+#: Opcodes/gab/vectorial.c:1265
msgid "vdivv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1288
+#: Opcodes/gab/vectorial.c:1292
#, c-format
msgid "vdivv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1293
+#: Opcodes/gab/vectorial.c:1297
#, c-format
msgid "vdivv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1315
+#: Opcodes/gab/vectorial.c:1319
msgid "vdivv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1333
+#: Opcodes/gab/vectorial.c:1337
msgid "vdivv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1370
+#: Opcodes/gab/vectorial.c:1374
msgid "vpowv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1389
+#: Opcodes/gab/vectorial.c:1393
msgid "vpowv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1416
+#: Opcodes/gab/vectorial.c:1420
#, c-format
msgid "vpowv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1421
+#: Opcodes/gab/vectorial.c:1425
#, c-format
msgid "vpowv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1443
+#: Opcodes/gab/vectorial.c:1447
msgid "vpowv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1460
+#: Opcodes/gab/vectorial.c:1464
msgid "vpowv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1497
+#: Opcodes/gab/vectorial.c:1501
msgid "vexpv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1516
+#: Opcodes/gab/vectorial.c:1520
msgid "vexpv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1543
+#: Opcodes/gab/vectorial.c:1547
#, c-format
msgid "vexpv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1548
+#: Opcodes/gab/vectorial.c:1552
#, c-format
msgid "vexpv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1570
+#: Opcodes/gab/vectorial.c:1574
msgid "vexpv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1588
+#: Opcodes/gab/vectorial.c:1592
msgid "vexpv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1625
+#: Opcodes/gab/vectorial.c:1629
msgid "vmap: Error: ifn1 and ifn2 can not be the same"
msgstr ""
-#: Opcodes/gab/vectorial.c:1630
+#: Opcodes/gab/vectorial.c:1634
#, c-format
msgid "vmap: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1635
+#: Opcodes/gab/vectorial.c:1639
#, c-format
msgid "vmap: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1657
+#: Opcodes/gab/vectorial.c:1661
msgid "vmap: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1674
+#: Opcodes/gab/vectorial.c:1678
msgid "vmap: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1870
+#: Opcodes/gab/vectorial.c:1698
+msgid "vectorop: invalid num of elements"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1727
+msgid "vport: invalid table length or num of elements"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1730
+msgid "vport: invalid table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1735
+msgid "vport: invalid init table length or num of elements"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1738
+msgid "vport: invalid init table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1875
#, c-format
msgid "vrandh: Seeding from current time %lu\n"
msgstr ""
-#: Opcodes/gab/vectorial.c:1968
+#: Opcodes/gab/vectorial.c:1888
+msgid "vrandh: Invalid table."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1891
+msgid "vrandh: idstoffset is greater than table length."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1896
+msgid "randh: Table length exceeded, last elements discarded."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1975
#, c-format
msgid "vrandi: Seeding from current time %lu\n"
msgstr ""
-#: Opcodes/grain4.c:57
+#: Opcodes/gab/vectorial.c:1987
+msgid "vrandi: Invalid table."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1990
+msgid "vrandi: idstoffset is greater thantable length."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1995
+msgid "vrandi: Table length exceeded, last elements discarded."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2077 Opcodes/gab/vectorial.c:2084
+#: Opcodes/gab/vectorial.c:2091
+msgid "vecdelay: invalid num of elements"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2079
+msgid "vecdly: invalid output table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2086
+msgid "vecdly: invalid input table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2093
+msgid "vecdly: invalid delay table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2138
+msgid "vecdly: not initialised"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2181
+msgid "vlinseg/vexpseg: invalid num. of elements"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2223 Opcodes/vpvoc.c:118
+msgid "tableseg: not initialised"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2253 Opcodes/vpvoc.c:146
+msgid "tablexseg: not initialised"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2406
+msgid "vdelayk: not initialised"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2439 Opcodes/gab/vectorial.c:2445
+msgid "cella: invalid num of elements"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2441
+msgid "cella: invalid output table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2448
+msgid "cella: invalid initial state table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2452
+msgid "cella: invalid rule table"
+msgstr ""
+
+#: Opcodes/grain4.c:59
msgid "granule_set: Unable to find function table"
msgstr ""
-#: Opcodes/grain4.c:67
+#: Opcodes/grain4.c:69
msgid "granule_set: Unable to find function table for envelope"
msgstr ""
-#: Opcodes/grain4.c:73
+#: Opcodes/grain4.c:75
msgid "granule_set: Too many voices"
msgstr ""
-#: Opcodes/grain4.c:76
+#: Opcodes/grain4.c:78
msgid "granule_set: iratio must be greater then 0"
msgstr ""
-#: Opcodes/grain4.c:80
+#: Opcodes/grain4.c:82
msgid "granule_set: imode must be -1, 0 or +1"
msgstr ""
-#: Opcodes/grain4.c:84
+#: Opcodes/grain4.c:86
msgid "granule_set: Illegal ithd, must be greater than zero"
msgstr ""
-#: Opcodes/grain4.c:89
+#: Opcodes/grain4.c:91
msgid "granule_set: ipshift must be integer between 0 and 4"
msgstr ""
-#: Opcodes/grain4.c:94
+#: Opcodes/grain4.c:96
msgid "granule_set: Not enough voices for the number of pitches"
msgstr ""
-#: Opcodes/grain4.c:101
+#: Opcodes/grain4.c:103
msgid "granule_set: ipitch1 must be greater then zero"
msgstr ""
-#: Opcodes/grain4.c:106
+#: Opcodes/grain4.c:108
msgid "granule_set: ipitch2 must be greater then zero"
msgstr ""
-#: Opcodes/grain4.c:111
+#: Opcodes/grain4.c:113
msgid "granule_set: ipitch3 must be greater then zero"
msgstr ""
-#: Opcodes/grain4.c:116
+#: Opcodes/grain4.c:118
msgid "granule_set: ipitch4 must be greater then zero"
msgstr ""
-#: Opcodes/grain4.c:121
+#: Opcodes/grain4.c:123
msgid "granule_set: must be positive and less than function table length"
msgstr ""
-#: Opcodes/grain4.c:125
+#: Opcodes/grain4.c:127
msgid "granule_set: igskip_os must be greater then 0"
msgstr ""
-#: Opcodes/grain4.c:134
+#: Opcodes/grain4.c:136
msgid "granule_set: kgap must be greater then 0"
msgstr ""
-#: Opcodes/grain4.c:138
+#: Opcodes/grain4.c:140
#, c-format
msgid "granule_set: igap_os must be 0%% to 100%%"
msgstr ""
-#: Opcodes/grain4.c:142
+#: Opcodes/grain4.c:144
msgid "granule_set: kgsize must be greater then 0"
msgstr ""
-#: Opcodes/grain4.c:146
+#: Opcodes/grain4.c:148
#, c-format
msgid "granule_set: igsize_os must be 0%% to 100%%"
msgstr ""
-#: Opcodes/grain4.c:152
+#: Opcodes/grain4.c:154
msgid "granule_set: Illegal value of iatt and/or idec"
msgstr ""
-#: Opcodes/grain4.c:236
+#: Opcodes/grain4.c:238
msgid "granule_set: Illegal combination of igskip and ilength"
msgstr ""
-#: Opcodes/grain4.c:243
+#: Opcodes/grain4.c:245
#, c-format
msgid ""
"granule_set: WARNING * ilength may be too short * \n"
@@ -6633,7 +6515,7 @@ msgid ""
"ilength is %f Sec, kgsize is %f Sec\n"
msgstr ""
-#: Opcodes/grain4.c:418
+#: Opcodes/grain4.c:419
msgid "grain4: not initialised"
msgstr ""
@@ -6645,92 +6527,88 @@ msgstr ""
msgid "grain: not initialised"
msgstr ""
-#: Opcodes/harmon.c:224
+#: Opcodes/harmon.c:226
msgid "harm signal has positive lead\n"
msgstr ""
-#: Opcodes/harmon.c:231
+#: Opcodes/harmon.c:233
msgid "harm signal has negative lead\n"
msgstr ""
-#: Opcodes/harmon.c:361
+#: Opcodes/harmon.c:363
msgid "harmon234: out of range\n"
msgstr ""
-#: Opcodes/hrtferX.c:79
+#: Opcodes/hrtferX.c:81
#, c-format
msgid ""
"Orchestra sampling rate is not compatible with HRTF.\n"
"Should be %d...exiting."
msgstr ""
-#: Opcodes/hrtferX.c:87
+#: Opcodes/hrtferX.c:89
msgid ""
"\n"
"Last argument must be the string 'HRTFcompact' ...correcting.\n"
msgstr ""
-#: Opcodes/hrtferX.c:489
+#: Opcodes/hrtferX.c:494
msgid "hrtfer: not initialised"
msgstr ""
-#: Opcodes/hrtfopcodes.c:232
+#: Opcodes/hrtfopcodes.c:260 Opcodes/hrtfopcodes.c:1434
+#: Opcodes/hrtfearly.c:300 Opcodes/hrtfreverb.c:257
#, c-format
msgid ""
"\n"
-"Orchestra sampling rate is not compatible with HRTF data files\n"
-"Should be %.0f, see Csound help for object\n"
+"\n"
+"WARNING!!:\n"
+"Orchestra SR not compatible with HRTF processing SR of: %.0f\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:251 Opcodes/hrtfopcodes.c:275
-#: Opcodes/hrtfopcodes.c:298 Opcodes/hrtfopcodes.c:1257
-#: Opcodes/hrtfopcodes.c:1280 Opcodes/hrtfopcodes.c:1303
-#: Opcodes/hrtfopcodes.c:1854 Opcodes/hrtfopcodes.c:1876
-#: Opcodes/hrtfopcodes.c:1898
+#: Opcodes/hrtfopcodes.c:287 Opcodes/hrtfopcodes.c:1461
+#: Opcodes/hrtfopcodes.c:2071 Opcodes/hrtfearly.c:327 Opcodes/hrtfreverb.c:300
msgid ""
"\n"
"\n"
"\n"
-"cannot load left data file, exiting\n"
+"Cannot load left data file, exiting\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:259 Opcodes/hrtfopcodes.c:283
-#: Opcodes/hrtfopcodes.c:306 Opcodes/hrtfopcodes.c:1265
-#: Opcodes/hrtfopcodes.c:1288 Opcodes/hrtfopcodes.c:1311
-#: Opcodes/hrtfopcodes.c:1862 Opcodes/hrtfopcodes.c:1884
-#: Opcodes/hrtfopcodes.c:1906
+#: Opcodes/hrtfopcodes.c:294 Opcodes/hrtfopcodes.c:1468
+#: Opcodes/hrtfopcodes.c:2078 Opcodes/hrtfearly.c:334 Opcodes/hrtfreverb.c:306
msgid ""
"\n"
"\n"
"\n"
-"cannot load right data file, exiting\n"
+"Cannot load right data file, exiting\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:313 Opcodes/hrtfopcodes.c:1912
+#: Opcodes/hrtfopcodes.c:690 Opcodes/hrtfearly.c:1241
msgid ""
"\n"
-"\n"
-"\n"
-" Sampling rate not supported, exiting\n"
+"WARNING: fades are overlapping: this could lead to noise: reduce fade size "
+"or change trajectory\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:600
+#: Opcodes/hrtfopcodes.c:2052
+#, c-format
msgid ""
-"fades are overlapping: this could lead to noise: reduce fade size or change "
-"trajectory\n"
+"\n"
+"\n"
+"WARNING!!:\n"
+"Orchestra SR not compatiblewith HRTF processing SR of: %.0f\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:1239 Opcodes/hrtfopcodes.c:1837
-#, c-format
+#: Opcodes/hrtfreverb.c:832
msgid ""
-"Orchestra sampling rate is not compatible with HRTF data files\n"
-"Should be %.0f, see Csound help for object\n"
"\n"
+"warning, approaching instability, fixed with a flat late reverb!"
msgstr ""
#: Opcodes/ifd.c:74
@@ -6756,10 +6634,9 @@ msgid "imageload: file %s is not in PNG format.\n"
msgstr ""
#: Opcodes/imageOpcodes.c:119 Opcodes/imageOpcodes.c:126
-#: Opcodes/imageOpcodes.c:134 Opcodes/imageOpcodes.c:165
-#: Opcodes/imageOpcodes.c:174 Opcodes/imageOpcodes.c:188
-#: Opcodes/imageOpcodes.c:291 Opcodes/imageOpcodes.c:298
-#: Opcodes/imageOpcodes.c:311
+#: Opcodes/imageOpcodes.c:165 Opcodes/imageOpcodes.c:174
+#: Opcodes/imageOpcodes.c:188 Opcodes/imageOpcodes.c:291
+#: Opcodes/imageOpcodes.c:298 Opcodes/imageOpcodes.c:311
msgid "imageload: out of memory.\n"
msgstr ""
@@ -6779,62 +6656,62 @@ msgid ""
"Status: %d\n"
msgstr ""
-#: Opcodes/jacko.cpp:543
+#: Opcodes/jacko.cpp:545
#, c-format
msgid "Created Jack client \"%s\" for Jack server \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:548
+#: Opcodes/jacko.cpp:551
#, c-format
msgid "Jack buffer size %d != Csound ksmps %d, exiting...\n"
msgstr ""
-#: Opcodes/jacko.cpp:556
+#: Opcodes/jacko.cpp:559
#, c-format
msgid "Jack sampling rate %d != Csound sr %d, exiting...\n"
msgstr ""
-#: Opcodes/jacko.cpp:567
+#: Opcodes/jacko.cpp:570
#, c-format
msgid "Activated Jack client \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:571
+#: Opcodes/jacko.cpp:574
#, c-format
msgid "Failed to activate Jack client \"%s\": status %d.\n"
msgstr ""
-#: Opcodes/jacko.cpp:586
+#: Opcodes/jacko.cpp:589
msgid "BEGAN JackoState::close()...\n"
msgstr ""
-#: Opcodes/jacko.cpp:622
+#: Opcodes/jacko.cpp:629
msgid "ENDED JackoState::close().\n"
msgstr ""
-#: Opcodes/jacko.cpp:876
+#: Opcodes/jacko.cpp:892
#, c-format
msgid "Failed to set Jack freewheeling mode to \"%s\": error %d.\n"
msgstr ""
-#: Opcodes/jacko.cpp:878
+#: Opcodes/jacko.cpp:895
#, c-format
msgid "Set Jack freewheeling mode to \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:893
+#: Opcodes/jacko.cpp:911
#, c-format
msgid "Turned Jack connections \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:934 Opcodes/jacko.cpp:1034 Opcodes/jacko.cpp:1134
-#: Opcodes/jacko.cpp:1200
+#: Opcodes/jacko.cpp:955 Opcodes/jacko.cpp:1062 Opcodes/jacko.cpp:1169
+#: Opcodes/jacko.cpp:1241
#, c-format
msgid "Could not create Jack port \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:946 Opcodes/jacko.cpp:1046 Opcodes/jacko.cpp:1146
-#: Opcodes/jacko.cpp:1212
+#: Opcodes/jacko.cpp:969 Opcodes/jacko.cpp:1077 Opcodes/jacko.cpp:1184
+#: Opcodes/jacko.cpp:1255
#, c-format
msgid "Could not create Jack connection from \"%s\" to \"%s\": status %d.\n"
msgstr ""
@@ -6873,27 +6750,27 @@ msgstr ""
msgid "lorisread cannot load %s"
msgstr ""
-#: Opcodes/loscilx.c:74 Opcodes/loscilx.c:178
+#: Opcodes/loscilx.c:76 Opcodes/loscilx.c:180
#, c-format
msgid "could not load '%s'"
msgstr ""
-#: Opcodes/loscilx.c:88 Opcodes/loscilx.c:258
+#: Opcodes/loscilx.c:90 Opcodes/loscilx.c:260
#, c-format
msgid "invalid loop mode: %d"
msgstr ""
-#: Opcodes/loscilx.c:170
+#: Opcodes/loscilx.c:172
msgid "loscilx: invalid number of output arguments"
msgstr ""
-#: Opcodes/loscilx.c:190 Opcodes/loscilx.c:219 Opcodes/pvlock.c:94
-#: Opcodes/pvlock.c:296 Opcodes/pvsbasic.c:460
+#: Opcodes/loscilx.c:192 Opcodes/loscilx.c:221 Opcodes/pvlock.c:118
+#: Opcodes/pvlock.c:320 Opcodes/pvsbasic.c:460
msgid ""
"number of output arguments inconsistent with number of sound file channels"
msgstr ""
-#: Opcodes/loscilx.c:665
+#: Opcodes/loscilx.c:667
msgid "loscilx: not initialised"
msgstr ""
@@ -6901,11 +6778,11 @@ msgstr ""
msgid "illegal order num. (min 1, max 10)"
msgstr ""
-#: Opcodes/mandolin.c:80
+#: Opcodes/mandolin.c:81
msgid "No table for Mandolin"
msgstr ""
-#: Opcodes/mandolin.c:90
+#: Opcodes/mandolin.c:91
msgid "No base frequency for mandolin"
msgstr ""
@@ -6936,27 +6813,27 @@ msgstr ""
msgid "illegal lsb control number at position n.%d"
msgstr ""
-#: Opcodes/modal4.c:45
+#: Opcodes/modal4.c:46
msgid "No table for Modal4 case"
msgstr ""
-#: Opcodes/modal4.c:245
+#: Opcodes/modal4.c:246
msgid "No table for Marimba strike"
msgstr ""
-#: Opcodes/modal4.c:284
+#: Opcodes/modal4.c:285
msgid "striking three times here!!!\n"
msgstr ""
-#: Opcodes/modal4.c:289
+#: Opcodes/modal4.c:290
msgid "striking twice here!!\n"
msgstr ""
-#: Opcodes/modal4.c:359
+#: Opcodes/modal4.c:360
msgid "No table for Vibraphone strike"
msgstr ""
-#: Opcodes/modal4.c:440
+#: Opcodes/modal4.c:441
msgid "No table for Agogobell strike"
msgstr ""
@@ -6964,12 +6841,12 @@ msgstr ""
msgid "modmatrix: "
msgstr ""
-#: Opcodes/mp3in.c:92 Opcodes/mp3in.c:230
+#: Opcodes/mp3in.c:93 Opcodes/mp3in.c:231
#, c-format
msgid "mp3in: %s: failed to open file"
msgstr ""
-#: Opcodes/mp3in.c:139
+#: Opcodes/mp3in.c:140
#, c-format
msgid "mp3in: file sample rate (%d) != orchestra sr (%d)\n"
msgstr ""
@@ -7256,7 +7133,7 @@ msgstr ""
msgid "No open glove"
msgstr ""
-#: Opcodes/pan2.c:43
+#: Opcodes/pan2.c:45
msgid "Unknown panning type"
msgstr ""
@@ -7272,192 +7149,196 @@ msgstr ""
msgid "partikkelsync: could not find opcode id"
msgstr ""
-#: Opcodes/physmod.c:121
+#: Opcodes/physmod.c:122
msgid "No table for Clarinet"
msgstr ""
-#: Opcodes/physmod.c:129
+#: Opcodes/physmod.c:130
msgid "No base frequency for clarinet -- assuming 50Hz\n"
msgstr ""
-#: Opcodes/physmod.c:283
+#: Opcodes/physmod.c:284
msgid "No table for Flute"
msgstr ""
-#: Opcodes/physmod.c:291
+#: Opcodes/physmod.c:292
msgid "No base frequency for flute -- assumed to be 50Hz\n"
msgstr ""
-#: Opcodes/physmod.c:481
+#: Opcodes/physmod.c:482
msgid "No table for wgbow vibrato"
msgstr ""
-#: Opcodes/physmod.c:689
+#: Opcodes/physmod.c:490
+msgid "unknown lowest frequency for bowed string -- assuming 50Hz\n"
+msgstr ""
+
+#: Opcodes/physmod.c:690
msgid "DlineA not initialised"
msgstr ""
-#: Opcodes/physmod.c:756
+#: Opcodes/physmod.c:757
msgid "No table for Brass"
msgstr ""
-#: Opcodes/physmod.c:765
+#: Opcodes/physmod.c:766
msgid "No base frequency for brass -- assumed to be 50Hz\n"
msgstr ""
-#: Opcodes/physutil.c:137 Opcodes/physutil.c:312 Opcodes/physutil.c:324
-#: Opcodes/physutil.c:345
+#: Opcodes/physutil.c:138 Opcodes/physutil.c:313 Opcodes/physutil.c:325
+#: Opcodes/physutil.c:346
msgid "negative rates not allowed!!, correcting\n"
msgstr ""
-#: Opcodes/physutil.c:186
+#: Opcodes/physutil.c:187
#, c-format
msgid "Envelope: value=%f target=%f rate=%f state=%d\n"
msgstr ""
-#: Opcodes/physutil.c:335
+#: Opcodes/physutil.c:336
msgid "Sustain level out of range!!, correcting\n"
msgstr ""
-#: Opcodes/physutil.c:356 Opcodes/physutil.c:366 Opcodes/physutil.c:376
+#: Opcodes/physutil.c:357 Opcodes/physutil.c:367 Opcodes/physutil.c:377
msgid "negative times not allowed!!, correcting\n"
msgstr ""
-#: Opcodes/pitch0.c:37
+#: Opcodes/pitch0.c:38
#, c-format
msgid "Muting new instances of instr %d\n"
msgstr ""
-#: Opcodes/pitch0.c:40
+#: Opcodes/pitch0.c:41
#, c-format
msgid "Allowing instrument %d to start\n"
msgstr ""
-#: Opcodes/pitch.c:84 Opcodes/spectra.c:78
+#: Opcodes/pitch.c:85 Opcodes/spectra.c:80
msgid "illegal iocts"
msgstr ""
-#: Opcodes/pitch.c:86 Opcodes/spectra.c:80
+#: Opcodes/pitch.c:87 Opcodes/spectra.c:82
msgid "illegal ifrqs"
msgstr ""
-#: Opcodes/pitch.c:180 Opcodes/spectra.c:584
+#: Opcodes/pitch.c:181 Opcodes/spectra.c:586
msgid "illegal no of partials"
msgstr ""
-#: Opcodes/pitch.c:205
+#: Opcodes/pitch.c:206
msgid "per octave rolloff too steep"
msgstr ""
-#: Opcodes/pitch.c:219 Opcodes/spectra.c:625
+#: Opcodes/pitch.c:220 Opcodes/spectra.c:627
msgid "illegal lo-hi values"
msgstr ""
-#: Opcodes/pitch.c:454
+#: Opcodes/pitch.c:455
msgid "pitch: not initialised"
msgstr ""
-#: Opcodes/pitch.c:463
+#: Opcodes/pitch.c:464
msgid "Must have even number of arguments in mac\n"
msgstr ""
-#: Opcodes/pitch.c:552
+#: Opcodes/pitch.c:553
msgid "clockread: clock still running, call clockoff first"
msgstr ""
-#: Opcodes/pitch.c:578
+#: Opcodes/pitch.c:579
msgid "adsynt: wavetable not found!"
msgstr ""
-#: Opcodes/pitch.c:591
+#: Opcodes/pitch.c:592
msgid "adsynt: freqtable not found!"
msgstr ""
-#: Opcodes/pitch.c:596
+#: Opcodes/pitch.c:597
msgid "adsynt: partial count is greater than freqtable size!"
msgstr ""
-#: Opcodes/pitch.c:604
+#: Opcodes/pitch.c:605
msgid "adsynt: amptable not found!"
msgstr ""
-#: Opcodes/pitch.c:609
+#: Opcodes/pitch.c:610
msgid "adsynt: partial count is greater than amptable size!"
msgstr ""
-#: Opcodes/pitch.c:640
+#: Opcodes/pitch.c:641
msgid "adsynt: not initialised"
msgstr ""
-#: Opcodes/pitch.c:716
+#: Opcodes/pitch.c:717
msgid "hsboscil: not initialised"
msgstr ""
-#: Opcodes/pitch.c:799
+#: Opcodes/pitch.c:800
msgid "pitchamdf: maxcps must be > mincps !"
msgstr ""
-#: Opcodes/pitch.c:945
+#: Opcodes/pitch.c:946
msgid "pitchamdf: not initialised"
msgstr ""
-#: Opcodes/pitch.c:1125 Opcodes/pitch.c:1152
+#: Opcodes/pitch.c:1126 Opcodes/pitch.c:1153
msgid "phasorbnk: not initialised"
msgstr ""
-#: Opcodes/pitch.c:1214
+#: Opcodes/pitch.c:1215
msgid "pinkish: Invalid method code"
msgstr ""
-#: Opcodes/pitch.c:1225
+#: Opcodes/pitch.c:1226
msgid "pinkish: Filter method requires a-rate (noise) input"
msgstr ""
-#: Opcodes/pitch.c:1348
+#: Opcodes/pitch.c:1349
#, c-format
msgid ""
"pinkish: Gardner method requires 4-%d bands. Default %ld substituted for "
"%d.\n"
msgstr ""
-#: Opcodes/pitch.c:1731
+#: Opcodes/pitch.c:1733
msgid "Incorrect argument count in transeg"
msgstr ""
-#: Opcodes/pitch.c:1782
+#: Opcodes/pitch.c:1784
msgid "Incorrect argument count in transegb"
msgstr ""
-#: Opcodes/pitch.c:1832 Opcodes/pitch.c:1971
+#: Opcodes/pitch.c:1834 Opcodes/pitch.c:1977
msgid "Error: transeg not initialised (krate)\n"
msgstr ""
-#: Opcodes/pitch.c:1867 Opcodes/pitch.c:2013
+#: Opcodes/pitch.c:1869 Opcodes/pitch.c:2027
msgid "transeg: not initialised (arate)\n"
msgstr ""
-#: Opcodes/pitch.c:1921
+#: Opcodes/pitch.c:1924
msgid "Incorrect argument count in transegr"
msgstr ""
-#: Opcodes/pitch.c:2269
+#: Opcodes/pitch.c:2294
msgid "median: not initialised (arate)\n"
msgstr ""
-#: Opcodes/pitch.c:2273 Opcodes/pitch.c:2321
+#: Opcodes/pitch.c:2298 Opcodes/pitch.c:2345
#, c-format
msgid "median: window (%d)larger than maximum(%d); truncated"
msgstr ""
-#: Opcodes/pitch.c:2317
+#: Opcodes/pitch.c:2341
msgid "median: not initialised (krate)\n"
msgstr ""
-#: Opcodes/pitchtrack.c:369
+#: Opcodes/pitchtrack.c:370
#, c-format
msgid "ptrack: FFT size out of range; using %d\n"
msgstr ""
-#: Opcodes/pitchtrack.c:382
+#: Opcodes/pitchtrack.c:383
#, c-format
msgid "ptrack: FFT size not a power of 2; using %d\n"
msgstr ""
@@ -7475,7 +7356,7 @@ msgstr ""
msgid "Error: %s, %s"
msgstr ""
-#: Opcodes/ppp.c:20 Opcodes/pvlock.c:454 Opcodes/pvsband.c:46
+#: Opcodes/ppp.c:20 Opcodes/pvlock.c:478 Opcodes/pvsband.c:46
#: Opcodes/pvsbasic.c:575 Opcodes/pvsbasic.c:880 Opcodes/pvsbasic.c:1080
#: Opcodes/pvsbasic.c:1180 Opcodes/pvsbasic.c:1395 Opcodes/pvsbasic.c:1593
#: Opcodes/pvsbasic.c:1756 Opcodes/pvslock.c:20
@@ -7494,62 +7375,62 @@ msgstr ""
msgid "psynth: function table not found\n"
msgstr ""
-#: Opcodes/psynth.c:569 Opcodes/psynth.c:662
+#: Opcodes/psynth.c:567 Opcodes/psynth.c:660
msgid "Input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:767
+#: Opcodes/psynth.c:765
msgid "trsplit: input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:863 Opcodes/psynth.c:1027
+#: Opcodes/psynth.c:861 Opcodes/psynth.c:1023
msgid "trmix: first input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:868 Opcodes/psynth.c:1032
+#: Opcodes/psynth.c:866 Opcodes/psynth.c:1028
msgid "trmix: second input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:943
+#: Opcodes/psynth.c:939
msgid "trfil: input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:948
+#: Opcodes/psynth.c:944
msgid "trfil: could not find function table\n"
msgstr ""
-#: Opcodes/psynth.c:1135
+#: Opcodes/psynth.c:1131
msgid "binit: first input not in TRACKS format\n"
msgstr ""
-#: Opcodes/pvadd.c:153
+#: Opcodes/pvadd.c:150
msgid "PVADD ktimpnt truncated to last frame"
msgstr ""
-#: Opcodes/pvadd.c:191
+#: Opcodes/pvadd.c:188
msgid "pvadd: not initialised"
msgstr ""
-#: Opcodes/pvadd.c:193
+#: Opcodes/pvadd.c:190
msgid "PVADD timpnt < 0"
msgstr ""
-#: Opcodes/pvadd.c:201
+#: Opcodes/pvadd.c:198
#, c-format
msgid "PVADD cannot load %s"
msgstr ""
-#: Opcodes/pvadd.c:205 Opcodes/ugens8.c:223
+#: Opcodes/pvadd.c:202 Opcodes/ugens8.c:223
#, c-format
msgid "pvoc-ex file %s: FFT size %d too large for Csound"
msgstr ""
-#: Opcodes/pvadd.c:210
+#: Opcodes/pvadd.c:207
#, c-format
msgid "PV frame %ld seems too small in %s"
msgstr ""
-#: Opcodes/pvadd.c:215 Opcodes/pvread.c:115 Opcodes/ugens8.c:229
+#: Opcodes/pvadd.c:212 Opcodes/pvread.c:115 Opcodes/ugens8.c:229
#, c-format
msgid "pvoc-ex file %s is not mono"
msgstr ""
@@ -7559,97 +7440,97 @@ msgstr ""
msgid "PVBUFREAD cannot load %s"
msgstr ""
-#: Opcodes/pvinterp.c:76 Opcodes/vpvoc.c:206
+#: Opcodes/pvinterp.c:76 Opcodes/vpvoc.c:207
#, c-format
msgid "PVOC frame %ld bigger than %ld in %s"
msgstr ""
-#: Opcodes/pvinterp.c:81 Opcodes/vpvoc.c:211
+#: Opcodes/pvinterp.c:81 Opcodes/vpvoc.c:212
#, c-format
msgid "PVOC frame %ld seems too small in %s"
msgstr ""
-#: Opcodes/pvinterp.c:85 Opcodes/pvinterp.c:184 Opcodes/pvinterp.c:356
-#: Opcodes/vpvoc.c:215
+#: Opcodes/pvinterp.c:85 Opcodes/pvinterp.c:183 Opcodes/pvinterp.c:354
+#: Opcodes/vpvoc.c:216
#, c-format
msgid "%d chans (not 1) in PVOC file %s"
msgstr ""
-#: Opcodes/pvinterp.c:101 Opcodes/pvinterp.c:212 Opcodes/pvinterp.c:382
+#: Opcodes/pvinterp.c:100 Opcodes/pvinterp.c:210 Opcodes/pvinterp.c:379
#: Opcodes/ugens8.c:95 Opcodes/vpvoc.c:244
#, c-format
msgid "ksmps of %d needs wdw of %d, max is %d for pv %s"
msgstr ""
-#: Opcodes/pvinterp.c:122 Opcodes/pvinterp.c:256 Opcodes/pvinterp.c:431
+#: Opcodes/pvinterp.c:121 Opcodes/pvinterp.c:254 Opcodes/pvinterp.c:428
#: Opcodes/pvread.c:95 Opcodes/ugens8.c:156 Opcodes/vpvoc.c:297
msgid "PVOC ktimpnt truncated to last frame"
msgstr ""
-#: Opcodes/pvinterp.c:130
+#: Opcodes/pvinterp.c:129
msgid "pvbufread: not initialised"
msgstr ""
-#: Opcodes/pvinterp.c:132 Opcodes/pvinterp.c:306 Opcodes/pvinterp.c:492
+#: Opcodes/pvinterp.c:131 Opcodes/pvinterp.c:304 Opcodes/pvinterp.c:489
#: Opcodes/pvread.c:103 Opcodes/ugens8.c:206 Opcodes/vpvoc.c:361
msgid "PVOC timpnt < 0"
msgstr ""
-#: Opcodes/pvinterp.c:149
+#: Opcodes/pvinterp.c:148
msgid "pvinterp: associated pvbufread not found"
msgstr ""
-#: Opcodes/pvinterp.c:166
+#: Opcodes/pvinterp.c:165
#, c-format
msgid "PVINTERP cannot load %s"
msgstr ""
-#: Opcodes/pvinterp.c:179
+#: Opcodes/pvinterp.c:178
#, c-format
msgid "pvinterp: %s: frame size %d does not match pvbufread frame size %d\n"
msgstr ""
-#: Opcodes/pvinterp.c:300
+#: Opcodes/pvinterp.c:298
msgid "pvinterp: not initialised"
msgstr ""
-#: Opcodes/pvinterp.c:302 Opcodes/pvinterp.c:488 Opcodes/ugens8.c:202
+#: Opcodes/pvinterp.c:300 Opcodes/pvinterp.c:485 Opcodes/ugens8.c:202
#: Opcodes/vpvoc.c:357
msgid "PVOC transpose too low"
msgstr ""
-#: Opcodes/pvinterp.c:304 Opcodes/pvinterp.c:490 Opcodes/ugens8.c:204
+#: Opcodes/pvinterp.c:302 Opcodes/pvinterp.c:487 Opcodes/ugens8.c:204
#: Opcodes/vpvoc.c:359
msgid "PVOC transpose too high"
msgstr ""
-#: Opcodes/pvinterp.c:323
+#: Opcodes/pvinterp.c:321
msgid "pvcross: associated pvbufread not found"
msgstr ""
-#: Opcodes/pvinterp.c:339
+#: Opcodes/pvinterp.c:337
#, c-format
msgid "PVCROSS cannot load %s"
msgstr ""
-#: Opcodes/pvinterp.c:351
+#: Opcodes/pvinterp.c:349
#, c-format
msgid "pvcross: %s: frame size %d does not match pvbufread frame size %d\n"
msgstr ""
-#: Opcodes/pvinterp.c:454 Opcodes/vpvoc.c:322
+#: Opcodes/pvinterp.c:451 Opcodes/vpvoc.c:322
msgid "PVOC debug: one frame gets through\n"
msgstr ""
-#: Opcodes/pvinterp.c:486
+#: Opcodes/pvinterp.c:483
msgid "pvcross: not initialised"
msgstr ""
-#: Opcodes/pvlock.c:35 Opcodes/pvsbasic.c:380
+#: Opcodes/pvlock.c:59 Opcodes/pvsbasic.c:380
msgid "invalid number of output arguments"
msgstr ""
-#: Opcodes/pvlock.c:466
+#: Opcodes/pvlock.c:490
msgid "pvsfreeze: signal format must be amp-freq."
msgstr ""
@@ -7756,28 +7637,33 @@ msgstr ""
msgid "pvs2tab: signal format must be amp-phase or amp-freq."
msgstr ""
-#: Opcodes/pvsbasic.c:2151 Opcodes/pvsbasic.c:2190 Opcodes/tabvars.c:53
-#: Opcodes/tabvars.c:89 Opcodes/tabvars.c:131 Opcodes/tabvars.c:176
-#: Opcodes/tabvars.c:178
+#: Opcodes/pvsbasic.c:2151 Opcodes/pvsbasic.c:2189 Opcodes/tabvars.c:56
+#: Opcodes/tabvars.c:92 Opcodes/tabvars.c:134 Opcodes/tabvars.c:179
+#: Opcodes/tabvars.c:181
msgid "t-variable not initialised"
msgstr ""
-#: Opcodes/pvsbuffer.c:53 Opcodes/pvscent.c:164 Opcodes/pvsdemix.c:49
+#: Opcodes/pvsbuffer.c:56 Opcodes/pvscent.c:164 Opcodes/pvsdemix.c:49
msgid "SDFT case not implemented yet"
msgstr ""
-#: Opcodes/pvsbuffer.c:85
+#: Opcodes/pvsbuffer.c:89
msgid "error... could not create global var for handle\n"
msgstr ""
-#: Opcodes/pvsbuffer.c:143 Opcodes/pvsbuffer.c:190 Opcodes/pvsbuffer.c:258
+#: Opcodes/pvsbuffer.c:148 Opcodes/pvsbuffer.c:197 Opcodes/pvsbuffer.c:266
msgid "error... could not read handle from global variable\n"
msgstr ""
-#: Opcodes/pvsbuffer.c:238 Opcodes/pvsbuffer.c:306
+#: Opcodes/pvsbuffer.c:246 Opcodes/pvsbuffer.c:316
msgid "Invalid buffer handle"
msgstr ""
+#: Opcodes/pvsbuffer.c:285 Opcodes/pvsbuffer.c:291
+#, c-format
+msgid "table length too small: needed %d, got %d\n"
+msgstr ""
+
#: Opcodes/pvscent.c:42
msgid "pvscent: format must be amp-phase or amp-freq.\n"
msgstr ""
@@ -7966,48 +7852,48 @@ msgstr ""
msgid "seqtim: incorrect table number"
msgstr ""
-#: Opcodes/sfont.c:118
+#: Opcodes/sfont.c:121
#, c-format
msgid "sfload: cannot open SoundFont file \"%s\" (error %s)"
msgstr ""
-#: Opcodes/sfont.c:123
+#: Opcodes/sfont.c:126
msgid "Sfload: cannot use globals"
msgstr ""
-#: Opcodes/sfont.c:153
+#: Opcodes/sfont.c:156
msgid "sfload: could not open globals\n"
msgstr ""
-#: Opcodes/sfont.c:170
+#: Opcodes/sfont.c:173
msgid "Extending soundfonts"
msgstr ""
-#: Opcodes/sfont.c:201
+#: Opcodes/sfont.c:204
#, c-format
msgid ""
"\n"
"Preset list of \"%s\"\n"
msgstr ""
-#: Opcodes/sfont.c:204
+#: Opcodes/sfont.c:207
#, c-format
msgid "%3d) %-20s\tprog:%-3d bank:%d\n"
msgstr ""
-#: Opcodes/sfont.c:226
+#: Opcodes/sfont.c:229
#, c-format
msgid ""
"\n"
"Assigning all Presets of \"%s\" starting from %d (preset handle number)\n"
msgstr ""
-#: Opcodes/sfont.c:231
+#: Opcodes/sfont.c:234
#, c-format
msgid "%3d<--%-20s\t(prog:%-3d bank:%d)\n"
msgstr ""
-#: Opcodes/sfont.c:238
+#: Opcodes/sfont.c:241
#, c-format
msgid ""
"\n"
@@ -8015,38 +7901,38 @@ msgid ""
"\n"
msgstr ""
-#: Opcodes/sfont.c:251
+#: Opcodes/sfont.c:254
#, c-format
msgid ""
"\n"
"Instrument list of \"%s\"\n"
msgstr ""
-#: Opcodes/sfont.c:268
+#: Opcodes/sfont.c:271
#, c-format
msgid "sfpreset: preset handle too big (%d), max: %d"
msgstr ""
-#: Opcodes/sfont.c:284
+#: Opcodes/sfont.c:287
#, c-format
msgid ""
"sfpreset: cannot find any preset having prog number %d and bank number %d in "
"SoundFont file \"%s\""
msgstr ""
-#: Opcodes/sfont.c:306 Opcodes/sfont.c:2189
+#: Opcodes/sfont.c:309 Opcodes/sfont.c:2192
msgid "sfplay: invalid or out-of-range preset number"
msgstr ""
-#: Opcodes/sfont.c:633
+#: Opcodes/sfont.c:636
msgid "sfplaym: invalid or out-of-range preset number"
msgstr ""
-#: Opcodes/sfont.c:888 Opcodes/sfont.c:1150
+#: Opcodes/sfont.c:891 Opcodes/sfont.c:1153
msgid "sfinstr: instrument out of range"
msgstr ""
-#: Opcodes/sfont.c:1598 Opcodes/sfont.c:1835
+#: Opcodes/sfont.c:1601 Opcodes/sfont.c:1838
#, c-format
msgid ""
"SoundFont file \"%s\" contains ROM samples !\n"
@@ -8054,19 +7940,19 @@ msgid ""
"Session aborted !"
msgstr ""
-#: Opcodes/sfont.c:1987 Opcodes/sfont.c:1993
+#: Opcodes/sfont.c:1990 Opcodes/sfont.c:1996
msgid "Sfont: cannot use globals/"
msgstr ""
-#: Opcodes/sfont.c:1996
+#: Opcodes/sfont.c:1999
msgid "Sfont format not compatible"
msgstr ""
-#: Opcodes/sfont.c:2534
+#: Opcodes/sfont.c:2537
msgid "error... could not create sfont globals\n"
msgstr ""
-#: Opcodes/shape.c:49
+#: Opcodes/shape.c:51
msgid "powershape: ifullscale must be strictly positive"
msgstr ""
@@ -8078,25 +7964,25 @@ msgstr ""
msgid "ftgenonce error"
msgstr ""
-#: Opcodes/singwave.c:85
+#: Opcodes/singwave.c:86
msgid "No table for Modulatr"
msgstr ""
-#: Opcodes/singwave.c:127
+#: Opcodes/singwave.c:128
msgid "No table for Singwave"
msgstr ""
-#: Opcodes/singwave.c:207
+#: Opcodes/singwave.c:208
#, c-format
msgid "SingWave: rate=%f sweepRate=%f mytime=%f\n"
msgstr ""
-#: Opcodes/singwave.c:273
+#: Opcodes/singwave.c:280
#, c-format
msgid "Found Formant: %s (number %i)\n"
msgstr ""
-#: Opcodes/singwave.c:395
+#: Opcodes/singwave.c:397
#, c-format
msgid "Setting Phoneme: %d %f\n"
msgstr ""
@@ -8129,15 +8015,15 @@ msgstr ""
msgid "pvsarp: not initialised\n"
msgstr ""
-#: Opcodes/sndloop.c:995 Opcodes/sndloop.c:1092
+#: Opcodes/sndloop.c:995 Opcodes/sndloop.c:1091
msgid "signal format must be amp-phase or amp-freq.\n"
msgstr ""
-#: Opcodes/sndloop.c:1072
+#: Opcodes/sndloop.c:1071
msgid "pvsvoc: not initialised\n"
msgstr ""
-#: Opcodes/sndloop.c:1123
+#: Opcodes/sndloop.c:1122
msgid "pvsmorph: not initialised\n"
msgstr ""
@@ -8157,25 +8043,27 @@ msgstr ""
msgid "sndwarpst: not initialised"
msgstr ""
-#: Opcodes/sockrecv.c:123 Opcodes/sockrecv.c:213 Opcodes/sockrecv.c:300
-#: Opcodes/socksend.c:75 Opcodes/socksend.c:133 Opcodes/socksend.c:190
-msgid "creating socket"
+#: Opcodes/sockrecv.c:117 Opcodes/sockrecv.c:215 Opcodes/sockrecv.c:314
+#: Opcodes/socksend.c:73 Opcodes/socksend.c:157 Opcodes/socksend.c:252
+#, c-format
+msgid "Winsock2 failed to start: %d"
msgstr ""
-#: Opcodes/sockrecv.c:322
-msgid "connect failed"
+#: Opcodes/sockrecv.c:131 Opcodes/sockrecv.c:227 Opcodes/sockrecv.c:320
+#: Opcodes/socksend.c:86 Opcodes/socksend.c:171 Opcodes/socksend.c:259
+msgid "creating socket"
msgstr ""
-#: Opcodes/sockrecv.c:335
-msgid "read from socket failed"
+#: Opcodes/sockrecv.c:347
+#, c-format
+msgid "connect failed (%d)"
msgstr ""
-#: Opcodes/socksend.c:67 Opcodes/socksend.c:125
-#, c-format
-msgid "The buffersize must be <= %d samples to fit in a udp-packet."
+#: Opcodes/sockrecv.c:360
+msgid "read from socket failed"
msgstr ""
-#: Opcodes/socksend.c:107 Opcodes/socksend.c:169
+#: Opcodes/socksend.c:126 Opcodes/socksend.c:215
msgid "sendto failed"
msgstr ""
@@ -8195,199 +8083,199 @@ msgstr ""
msgid "spat3di: not initialised"
msgstr ""
-#: Opcodes/spectra.c:82
+#: Opcodes/spectra.c:84
msgid "illegal Q value"
msgstr ""
-#: Opcodes/spectra.c:84
+#: Opcodes/spectra.c:86
msgid "unknown dbout code"
msgstr ""
-#: Opcodes/spectra.c:104
+#: Opcodes/spectra.c:106
#, c-format
msgid "spectrum: %s window, %s out, making tables ...\n"
msgstr ""
-#: Opcodes/spectra.c:123
+#: Opcodes/spectra.c:125
#, c-format
msgid ""
"\thigh cps %7.1f\n"
"\t low cps %7.1f\n"
msgstr ""
-#: Opcodes/spectra.c:138
+#: Opcodes/spectra.c:140
#, c-format
msgid "\tQ %4.1f uses a %d sample window each octdown\n"
msgstr ""
-#: Opcodes/spectra.c:169
+#: Opcodes/spectra.c:171
msgid "spectrum windowed sines:"
msgstr ""
-#: Opcodes/spectra.c:187
+#: Opcodes/spectra.c:189
#, c-format
msgid "\t%d oct analysis window delay = %ld samples (%d msecs)\n"
msgstr ""
-#: Opcodes/spectra.c:195
+#: Opcodes/spectra.c:197
msgid "octdown buffers:"
msgstr ""
-#: Opcodes/spectra.c:513 Opcodes/spectra.c:553
+#: Opcodes/spectra.c:515 Opcodes/spectra.c:555
msgid "specdisp: not initialised"
msgstr ""
-#: Opcodes/spectra.c:523
+#: Opcodes/spectra.c:525
#, c-format
msgid "instr %d %s, dft (%s), %ld octaves (%d - %d Hz):"
msgstr ""
-#: Opcodes/spectra.c:530
+#: Opcodes/spectra.c:532
#, c-format
msgid "instr %d %s, dft (%s), %ld octaves (%3.1f - %3.1f Hz):"
msgstr ""
-#: Opcodes/spectra.c:611
+#: Opcodes/spectra.c:613
msgid "per oct rolloff too steep"
msgstr ""
-#: Opcodes/spectra.c:632
+#: Opcodes/spectra.c:634
#, c-format
msgid "specptrk: %d freqs, %d%s ptls at "
msgstr ""
-#: Opcodes/spectra.c:633
+#: Opcodes/spectra.c:635
msgid " odd"
msgstr ""
-#: Opcodes/spectra.c:637
+#: Opcodes/spectra.c:639
msgid ""
"\n"
"\t\trolloff vals:"
msgstr ""
-#: Opcodes/spectra.c:660
+#: Opcodes/spectra.c:662
#, c-format
msgid ""
"\n"
"\tdbthresh %4.1f: X-corr %s threshon %4.1f, threshoff %4.1f\n"
msgstr ""
-#: Opcodes/spectra.c:817
+#: Opcodes/spectra.c:819
msgid "specptrk: not initialised"
msgstr ""
-#: Opcodes/spectra.c:849
+#: Opcodes/spectra.c:851
msgid "specsum: not initialised"
msgstr ""
-#: Opcodes/spectra.c:860
+#: Opcodes/spectra.c:862
msgid "inputs have different sizes"
msgstr ""
-#: Opcodes/spectra.c:863
+#: Opcodes/spectra.c:865
msgid "inputs have diff. time periods"
msgstr ""
-#: Opcodes/spectra.c:867
+#: Opcodes/spectra.c:869
msgid "inputs have different freq resolution"
msgstr ""
-#: Opcodes/spectra.c:870
+#: Opcodes/spectra.c:872
msgid "inputs have different amptypes"
msgstr ""
-#: Opcodes/spectra.c:902
+#: Opcodes/spectra.c:904
msgid "specaddm: not initialised"
msgstr ""
-#: Opcodes/spectra.c:926
+#: Opcodes/spectra.c:928
msgid "specdiff: local buffers not initialised"
msgstr ""
-#: Opcodes/spectra.c:964
+#: Opcodes/spectra.c:966
msgid "specdiff: not initialised"
msgstr ""
-#: Opcodes/spectra.c:986
+#: Opcodes/spectra.c:988
msgid "specscal: local buffer not initialised"
msgstr ""
-#: Opcodes/spectra.c:991
+#: Opcodes/spectra.c:993
msgid "missing fscale table"
msgstr ""
-#: Opcodes/spectra.c:1057
+#: Opcodes/spectra.c:1059
msgid "specscal: not initialised"
msgstr ""
-#: Opcodes/spectra.c:1081
+#: Opcodes/spectra.c:1083
msgid "spechist: local buffers not intiialised"
msgstr ""
-#: Opcodes/spectra.c:1113
+#: Opcodes/spectra.c:1115
msgid "spechist: not initialised"
msgstr ""
-#: Opcodes/spectra.c:1134
+#: Opcodes/spectra.c:1136
msgid "specfilt: local buffers not initialised"
msgstr ""
-#: Opcodes/spectra.c:1142
+#: Opcodes/spectra.c:1144
msgid "missing htim ftable"
msgstr ""
-#: Opcodes/spectra.c:1165
+#: Opcodes/spectra.c:1167
msgid "htim ftable must be all-positive"
msgstr ""
-#: Opcodes/spectra.c:1169
+#: Opcodes/spectra.c:1171
#, c-format
msgid "coef range: %6.3f - %6.3f\n"
msgstr ""
-#: Opcodes/spectra.c:1201
+#: Opcodes/spectra.c:1203
msgid "specfilt: not initialised"
msgstr ""
-#: Opcodes/stackops.c:80
+#: Opcodes/stackops.c:81
msgid "fsig = : source signal is not initialised"
msgstr ""
-#: Opcodes/stackops.c:126
+#: Opcodes/stackops.c:125
msgid "stack overflow"
msgstr ""
-#: Opcodes/stackops.c:134
+#: Opcodes/stackops.c:131
msgid "cannot pop from empty stack"
msgstr ""
-#: Opcodes/stackops.c:142
+#: Opcodes/stackops.c:137
msgid "argument number or type mismatch"
msgstr ""
-#: Opcodes/stackops.c:150
+#: Opcodes/stackops.c:143
msgid "string argument is too long"
msgstr ""
-#: Opcodes/stackops.c:167
+#: Opcodes/stackops.c:160
msgid "Error allocating argument stack"
msgstr ""
-#: Opcodes/stackops.c:207 Top/argdecode.c:1212 util/envext.c:99
+#: Opcodes/stackops.c:200 Top/argdecode.c:1212 util/envext.c:99
#: util/scale.c:248
msgid "too many arguments"
msgstr ""
-#: Opcodes/stackops.c:286
+#: Opcodes/stackops.c:279
msgid "the stack is already allocated"
msgstr ""
-#: Opcodes/stackops.c:637
+#: Opcodes/stackops.c:630
msgid "number of arguments != nchnls"
msgstr ""
-#: Opcodes/stdopcod.c:36
+#: Opcodes/stdopcod.c:37
msgid "stdopcod.c: error: globals already allocated"
msgstr ""
@@ -8402,35 +8290,43 @@ msgstr ""
msgid "RAWWAVE_PATH: %s\n"
msgstr ""
-#: Opcodes/syncgrain.c:175 Opcodes/syncgrain.c:338 Opcodes/syncgrain.c:683
+#: Opcodes/syncgrain.c:176 Opcodes/syncgrain.c:339 Opcodes/syncgrain.c:684
msgid "grain size smaller than 1 sample\n"
msgstr ""
-#: Opcodes/syncgrain.c:387
+#: Opcodes/syncgrain.c:388
msgid "diskgrain: invalid number of channels"
msgstr ""
-#: Opcodes/syncgrain.c:419
+#: Opcodes/syncgrain.c:420
msgid "diskgrain: could not open file\n"
msgstr ""
-#: Opcodes/syncgrain.c:423
+#: Opcodes/syncgrain.c:424
msgid ""
"diskgrain: soundfile channel numbers do not match the number of outputs \n"
msgstr ""
-#: Opcodes/syncgrain.c:435
+#: Opcodes/syncgrain.c:436
msgid "diskgrain: could not read file \n"
msgstr ""
-#: Opcodes/tabsum.c:39
+#: Opcodes/tabsum.c:40
msgid "tabsum: No table"
msgstr ""
-#: Opcodes/tabsum.c:54
+#: Opcodes/tabsum.c:55
msgid "tabsum: Not initialised"
msgstr ""
+#: Opcodes/tabvars.c:201 Opcodes/tabvars.c:218
+msgid "t-var not initialised"
+msgstr ""
+
+#: Opcodes/tabvars.c:203 Opcodes/tabvars.c:220
+msgid "No table for copy2ftab"
+msgstr ""
+
#: Opcodes/ugens7.c:46 Opcodes/ugensa.c:49
msgid "illegal value for iolaps"
msgstr ""
@@ -8576,17 +8472,17 @@ msgstr ""
msgid "table in iftfn for ftmorf does not exist"
msgstr ""
-#: Opcodes/ugnorman.c:120
+#: Opcodes/ugnorman.c:121
#, c-format
msgid "%s: Ats file %s not read (does it exist?)"
msgstr ""
-#: Opcodes/ugnorman.c:131
+#: Opcodes/ugnorman.c:132
#, c-format
msgid "%s: either %s is not an ATS file or the byte endianness is wrong"
msgstr ""
-#: Opcodes/ugnorman.c:139
+#: Opcodes/ugnorman.c:140
#, c-format
msgid ""
"%s: %s is byte-swapped\n"
@@ -8594,125 +8490,125 @@ msgid ""
"\twill not result in different audio, but they may slow down processing."
msgstr ""
-#: Opcodes/ugnorman.c:175
+#: Opcodes/ugnorman.c:176
msgid ""
"ATSINFO: location is out of bounds: 0-8 are the only possible selections"
msgstr ""
-#: Opcodes/ugnorman.c:265
+#: Opcodes/ugnorman.c:266
#, c-format
msgid "ATSREAD: partial %i out of range, max allowed is %i"
msgstr ""
-#: Opcodes/ugnorman.c:291
+#: Opcodes/ugnorman.c:292
msgid "Type not implemented"
msgstr ""
-#: Opcodes/ugnorman.c:310
+#: Opcodes/ugnorman.c:311
msgid "ATSREAD: only positive time pointer values allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:319
+#: Opcodes/ugnorman.c:320
msgid "ATSREAD: timepointer out of range, truncated to last frame\n"
msgstr ""
-#: Opcodes/ugnorman.c:332
+#: Opcodes/ugnorman.c:333
msgid "ATSREAD: not initialised"
msgstr ""
-#: Opcodes/ugnorman.c:394
+#: Opcodes/ugnorman.c:395
#, c-format
msgid "ATSREADNZ: band %i out of range, 1-25 are the valid band values"
msgstr ""
-#: Opcodes/ugnorman.c:412
+#: Opcodes/ugnorman.c:413
msgid "ATSREADNZ: Type either not implemented or does not contain noise"
msgstr ""
-#: Opcodes/ugnorman.c:431
+#: Opcodes/ugnorman.c:432
msgid "ATSREADNZ: only positive time pointer values allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:440
+#: Opcodes/ugnorman.c:441
msgid "ATSREADNZ: timepointer out of range, truncated to last frame\n"
msgstr ""
-#: Opcodes/ugnorman.c:449
+#: Opcodes/ugnorman.c:450
msgid "ATSREADNZ: not initialised"
msgstr ""
-#: Opcodes/ugnorman.c:467
+#: Opcodes/ugnorman.c:468
msgid "ATSADD: Function table number for synthesis waveform not valid"
msgstr ""
-#: Opcodes/ugnorman.c:475
+#: Opcodes/ugnorman.c:476
msgid "ATSADD: Gate Function table number not valid"
msgstr ""
-#: Opcodes/ugnorman.c:521
+#: Opcodes/ugnorman.c:522
#, c-format
msgid "ATSADD: Partial(s) out of range, max partial allowed is %i"
msgstr ""
-#: Opcodes/ugnorman.c:555
+#: Opcodes/ugnorman.c:556
msgid "ATSADD: Type not implemented"
msgstr ""
-#: Opcodes/ugnorman.c:585
+#: Opcodes/ugnorman.c:586
msgid ""
"ATSADD: only positive time pointer values are allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:594
+#: Opcodes/ugnorman.c:595
msgid "ATSADD: time pointer out of range, truncating to last frame\n"
msgstr ""
-#: Opcodes/ugnorman.c:638
+#: Opcodes/ugnorman.c:639
msgid "ATSADD: not initialised"
msgstr ""
-#: Opcodes/ugnorman.c:842
+#: Opcodes/ugnorman.c:845
msgid "ATSADDNZ: This file type contains no noise"
msgstr ""
-#: Opcodes/ugnorman.c:846
+#: Opcodes/ugnorman.c:849
msgid "ATSADDNZ: This file type has not been implemented in this code yet."
msgstr ""
-#: Opcodes/ugnorman.c:869
+#: Opcodes/ugnorman.c:872
msgid "ATSADDNZ: Band(s) out of range, max band allowed is 25"
msgstr ""
-#: Opcodes/ugnorman.c:886
+#: Opcodes/ugnorman.c:889
msgid ""
"ATSADDNZ: Type either has no noise or is not implemented (only type 3 and 4 "
"work now)"
msgstr ""
-#: Opcodes/ugnorman.c:1002
+#: Opcodes/ugnorman.c:1005
msgid ""
"ATSADDNZ: only positive time pointer values are allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:1011
+#: Opcodes/ugnorman.c:1014
msgid "ATSADDNZ: time pointer out of range, truncating to last frame\n"
msgstr ""
-#: Opcodes/ugnorman.c:1165
+#: Opcodes/ugnorman.c:1168
#, c-format
msgid "ATSSINNOI: Partial(s) out of range, max partial allowed is %i"
msgstr ""
-#: Opcodes/ugnorman.c:1202
+#: Opcodes/ugnorman.c:1205
msgid "ATSSINNOI: Type not implemented"
msgstr ""
-#: Opcodes/ugnorman.c:1315
+#: Opcodes/ugnorman.c:1316
msgid ""
"ATSSINNOI: only positive time pointer values are allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:1324
+#: Opcodes/ugnorman.c:1325
msgid "ATSSINNOI: time pointer out of range, truncating to last frame\n"
msgstr ""
@@ -8785,44 +8681,44 @@ msgstr ""
msgid "ATSCROSS: you must have an atsbufread before an atsinterpread"
msgstr ""
-#: Opcodes/ugsc.c:394
+#: Opcodes/ugsc.c:390
msgid "Phaser mode must be either 1 or 2"
msgstr ""
-#: Opcodes/vbap.c:57
+#: Opcodes/vbap.c:59
msgid "vbap: error allocating loudspeaker table"
msgstr ""
-#: Opcodes/vbap.c:264
+#: Opcodes/vbap.c:266
msgid ""
"Number of loudspeakers is zero\n"
"Exiting"
msgstr ""
-#: Opcodes/vbap.c:573
+#: Opcodes/vbap.c:575
msgid "Error in loudspeaker dimension."
msgstr ""
-#: Opcodes/vbap.c:596
+#: Opcodes/vbap.c:598
msgid "Too few loudspeakers"
msgstr ""
-#: Opcodes/vbap.c:622
+#: Opcodes/vbap.c:624
msgid "Not valid 3-D configuration"
msgstr ""
-#: Opcodes/vbap.c:668 Opcodes/vbap.c:767
+#: Opcodes/vbap.c:670 Opcodes/vbap.c:769
msgid ""
"\n"
"Configured loudspeakers\n"
msgstr ""
-#: Opcodes/vbap.c:670
+#: Opcodes/vbap.c:672
#, c-format
msgid "Triplet %d Loudspeakers: "
msgstr ""
-#: Opcodes/vbap.c:769
+#: Opcodes/vbap.c:771
#, c-format
msgid "Pair %d Loudspeakers: "
msgstr ""
@@ -8904,41 +8800,33 @@ msgstr ""
msgid "Have to have at least %d directions in vbapzmove"
msgstr ""
-#: Opcodes/Vosim.c:49
+#: Opcodes/Vosim.c:51
msgid "vosim: pulse table not found"
msgstr ""
-#: Opcodes/Vosim.c:72
+#: Opcodes/Vosim.c:74
msgid "vosim: zero kfund. 'Infinite' length event generated."
msgstr ""
-#: Opcodes/Vosim.c:80
+#: Opcodes/Vosim.c:82
#, c-format
msgid "vosim: kfund (%f) > sr. Generating ksmps silence."
msgstr ""
-#: Opcodes/Vosim.c:158
+#: Opcodes/Vosim.c:160
msgid "vosim: not initialised"
msgstr ""
-#: Opcodes/vpvoc.c:118
-msgid "tableseg: not initialised"
-msgstr ""
-
-#: Opcodes/vpvoc.c:146
-msgid "tablexseg: not initialised"
-msgstr ""
-
-#: Opcodes/vpvoc.c:172
+#: Opcodes/vpvoc.c:173
#, c-format
msgid "vpvoc: Could not find ifnmagctrl table %f"
msgstr ""
-#: Opcodes/vpvoc.c:178
+#: Opcodes/vpvoc.c:179
msgid "vpvoc: associated tableseg not found"
msgstr ""
-#: Opcodes/vpvoc.c:194
+#: Opcodes/vpvoc.c:195
#, c-format
msgid "VPVOC cannot load %s"
msgstr ""
@@ -9055,47 +8943,47 @@ msgstr ""
msgid "-B N\tsamples per hardware sound I/O buffer"
msgstr ""
-#: Top/argdecode.c:75 util/mixer.c:95 util/scale.c:46 util/srconv.c:739
+#: Top/argdecode.c:75 util/mixer.c:95 util/scale.c:46 util/srconv.c:738
msgid "-A\tcreate an AIFF format output soundfile"
msgstr ""
-#: Top/argdecode.c:76 util/mixer.c:96 util/scale.c:47 util/srconv.c:741
+#: Top/argdecode.c:76 util/mixer.c:96 util/scale.c:47 util/srconv.c:740
msgid "-W\tcreate a WAV format output soundfile"
msgstr ""
-#: Top/argdecode.c:77 util/srconv.c:740
+#: Top/argdecode.c:77 util/srconv.c:739
msgid "-J\tcreate an IRCAM format output soundfile"
msgstr ""
-#: Top/argdecode.c:78 util/mixer.c:97 util/scale.c:48 util/srconv.c:742
+#: Top/argdecode.c:78 util/mixer.c:97 util/scale.c:48 util/srconv.c:741
msgid "-h\tno header on output soundfile"
msgstr ""
-#: Top/argdecode.c:79 util/mixer.c:99 util/scale.c:49 util/srconv.c:743
+#: Top/argdecode.c:79 util/mixer.c:99 util/scale.c:49 util/srconv.c:742
msgid "-c\t8-bit signed_char sound samples"
msgstr ""
-#: Top/argdecode.c:81 util/mixer.c:101 util/scale.c:50 util/srconv.c:744
+#: Top/argdecode.c:81 util/mixer.c:101 util/scale.c:50 util/srconv.c:743
msgid "-a\talaw sound samples"
msgstr ""
-#: Top/argdecode.c:83 util/mixer.c:98 util/mixer.c:100 util/srconv.c:745
+#: Top/argdecode.c:83 util/mixer.c:98 util/mixer.c:100 util/srconv.c:744
msgid "-8\t8-bit unsigned_char sound samples"
msgstr ""
-#: Top/argdecode.c:84 util/mixer.c:102 util/scale.c:51 util/srconv.c:746
+#: Top/argdecode.c:84 util/mixer.c:102 util/scale.c:51 util/srconv.c:745
msgid "-u\tulaw sound samples"
msgstr ""
-#: Top/argdecode.c:85 util/mixer.c:103 util/scale.c:52 util/srconv.c:747
+#: Top/argdecode.c:85 util/mixer.c:103 util/scale.c:52 util/srconv.c:746
msgid "-s\tshort_int sound samples"
msgstr ""
-#: Top/argdecode.c:86 util/mixer.c:104 util/scale.c:53 util/srconv.c:748
+#: Top/argdecode.c:86 util/mixer.c:104 util/scale.c:53 util/srconv.c:747
msgid "-l\tlong_int sound samples"
msgstr ""
-#: Top/argdecode.c:87 util/mixer.c:105 util/scale.c:54 util/srconv.c:749
+#: Top/argdecode.c:87 util/mixer.c:105 util/scale.c:54 util/srconv.c:748
msgid "-f\tfloat sound samples"
msgstr ""
@@ -9103,7 +8991,7 @@ msgstr ""
msgid "-3\t24bit sound samples"
msgstr ""
-#: Top/argdecode.c:89 util/srconv.c:750
+#: Top/argdecode.c:89 util/srconv.c:749
msgid "-r N\torchestra srate override"
msgstr ""
@@ -9111,7 +8999,7 @@ msgstr ""
msgid "-k N\torchestra krate override"
msgstr ""
-#: Top/argdecode.c:91 util/srconv.c:751
+#: Top/argdecode.c:91 util/srconv.c:750
msgid "-K\tDo not generate PEAK chunks"
msgstr ""
@@ -9171,7 +9059,7 @@ msgstr ""
msgid "-F fnam\tread MIDIfile event stream from file 'fnam'"
msgstr ""
-#: Top/argdecode.c:107 util/mixer.c:106 util/scale.c:59 util/srconv.c:752
+#: Top/argdecode.c:107 util/mixer.c:106 util/scale.c:59 util/srconv.c:751
msgid "-R\tcontinually rewrite header while writing soundfile (WAV/AIFF)"
msgstr ""
@@ -9179,7 +9067,7 @@ msgstr ""
msgid "-H#\tprint heartbeat style 1, 2 or 3 at each soundfile write"
msgstr ""
-#: Top/argdecode.c:109 util/mixer.c:108 util/scale.c:61 util/srconv.c:754
+#: Top/argdecode.c:109 util/mixer.c:108 util/scale.c:61 util/srconv.c:753
msgid "-N\tnotify (ring the bell) when score or miditrack is done"
msgstr ""
@@ -9665,16 +9553,16 @@ msgid "-M: stdin not supported on this platform"
msgstr ""
#: Top/argdecode.c:668 Top/argdecode.c:959 util/envext.c:84 util/mixer.c:205
-#: util/scale.c:173 util/srconv.c:248 util/xtrct.c:116
+#: util/scale.c:173 util/srconv.c:247 util/xtrct.c:116
msgid "no outfilename"
msgstr ""
-#: Top/argdecode.c:671 Top/argdecode.c:963 util/scale.c:177 util/srconv.c:252
+#: Top/argdecode.c:671 Top/argdecode.c:963 util/scale.c:177 util/srconv.c:251
#: util/xtrct.c:120
msgid "-o cannot be stdin"
msgstr ""
-#: Top/argdecode.c:675 Top/argdecode.c:967 util/scale.c:180 util/srconv.c:257
+#: Top/argdecode.c:675 Top/argdecode.c:967 util/scale.c:180 util/srconv.c:256
#: util/xtrct.c:123
msgid "stdout audio not supported"
msgstr ""
@@ -9793,164 +9681,164 @@ msgstr ""
msgid "cscoreFileGetCurrent: no fp current"
msgstr ""
-#: Top/csmodule.c:192
+#: Top/csmodule.c:199
#, c-format
msgid "not loading '%s' (uses incompatible floating point type)"
msgstr ""
-#: Top/csmodule.c:201
+#: Top/csmodule.c:209
#, c-format
msgid ""
"not loading '%s' (incompatible with this version of Csound (%d.%d/%d.%d)"
msgstr ""
-#: Top/csmodule.c:244
+#: Top/csmodule.c:252
#, c-format
msgid "could not open library '%s' (%s)"
msgstr ""
-#: Top/csmodule.c:247
+#: Top/csmodule.c:255
#, c-format
msgid "could not open library '%s' (%d)"
msgstr ""
-#: Top/csmodule.c:303
+#: Top/csmodule.c:311
#, c-format
msgid "'%s' is not a Csound plugin library"
msgstr ""
-#: Top/csmodule.c:314
+#: Top/csmodule.c:322
msgid "csoundLoadExternal(): memory allocation failure"
msgstr ""
-#: Top/csmodule.c:328 Top/csmodule.c:336
+#: Top/csmodule.c:336 Top/csmodule.c:344
#, c-format
msgid "Error in pre-initialisation function of module '%s'"
msgstr ""
-#: Top/csmodule.c:599 Top/csmodule.c:605 Top/csmodule.c:616 Top/csmodule.c:623
-#: Top/csmodule.c:629 Top/csmodule.c:637
+#: Top/csmodule.c:608 Top/csmodule.c:614 Top/csmodule.c:625 Top/csmodule.c:632
+#: Top/csmodule.c:638 Top/csmodule.c:646
msgid "Error opening plugin directory\n"
msgstr ""
-#: Top/csmodule.c:687
+#: Top/csmodule.c:696
#, c-format
msgid "Error opening plugin directory '%s': %s"
msgstr ""
-#: Top/csmodule.c:722
+#: Top/csmodule.c:731
#, c-format
msgid "path name too long, skipping '%s'"
msgstr ""
-#: Top/csmodule.c:728
+#: Top/csmodule.c:737
#, c-format
msgid "Library %s omitted\n"
msgstr ""
-#: Top/csmodule.c:764
+#: Top/csmodule.c:773
msgid "Loading command-line libraries:\n"
msgstr ""
-#: Top/csmodule.c:787
+#: Top/csmodule.c:796
#, c-format
msgid " *** error loading '%s'"
msgstr ""
-#: Top/csmodule.c:810
+#: Top/csmodule.c:819
#, c-format
msgid "Error starting module '%s'"
msgstr ""
-#: Top/csmodule.c:907
+#: Top/csmodule.c:918
#, c-format
msgid "Error de-initialising module '%s'"
msgstr ""
-#: Top/csound.c:1606 Top/csound.c:1626
+#: Top/csound.c:1636 Top/csound.c:1656
msgid "Early return from csoundPerformKsmps().\n"
msgstr ""
-#: Top/csound.c:1612
+#: Top/csound.c:1642
msgid "Score finished in csoundPerformKsmps().\n"
msgstr ""
-#: Top/csound.c:1645
+#: Top/csound.c:1675
msgid "Early return from csoundPerformBuffer().\n"
msgstr ""
-#: Top/csound.c:1670
+#: Top/csound.c:1700
msgid "Early return from csoundPerform().\n"
msgstr ""
-#: Top/csound.c:1677
+#: Top/csound.c:1707
msgid "Score finished in csoundPerform().\n"
msgstr ""
-#: Top/csound.c:1697
+#: Top/csound.c:1727
msgid "csoundPerform(): stopped.\n"
msgstr ""
-#: Top/csound.c:1968
+#: Top/csound.c:1998
msgid "WARNING: "
msgstr ""
-#: Top/csound.c:2089
+#: Top/csound.c:2119
msgid "rtdummy: failed to allocate globals"
msgstr ""
-#: Top/csound.c:2090
+#: Top/csound.c:2120
msgid "rtaudio: dummy module enabled\n"
msgstr ""
-#: Top/csound.c:2119 Top/csound.c:2155
+#: Top/csound.c:2149 Top/csound.c:2185
msgid " *** error: rtaudio module set to empty string"
msgstr ""
-#: Top/csound.c:2123 Top/csound.c:2159
+#: Top/csound.c:2153 Top/csound.c:2189
#, c-format
msgid " *** error: unknown rtaudio module: '%s'"
msgstr ""
-#: Top/csound.c:2241
+#: Top/csound.c:2271
msgid "WARNING: real time midi input disabled, using dummy functions\n"
msgstr ""
-#: Top/csound.c:2246 Top/csound.c:2280
+#: Top/csound.c:2276 Top/csound.c:2310
msgid "error: -+rtmidi set to empty string"
msgstr ""
-#: Top/csound.c:2249 Top/csound.c:2283
+#: Top/csound.c:2279 Top/csound.c:2313
#, c-format
msgid "error: -+rtmidi='%s': unknown module"
msgstr ""
-#: Top/csound.c:2275
+#: Top/csound.c:2305
msgid "WARNING: real time midi output disabled, using dummy functions\n"
msgstr ""
-#: Top/csound.c:2297
+#: Top/csound.c:2327
msgid "Unknown MIDI error"
msgstr ""
-#: Top/csound.c:2415
+#: Top/csound.c:2445
msgid "xyin not supported. use invalue opcode instead."
msgstr ""
-#: Top/csound.c:2522
+#: Top/csound.c:2552
msgid "Failed to allocate new opcode entry."
msgstr ""
-#: Top/csound.c:2545
+#: Top/csound.c:2575
#, c-format
msgid "Failed to allocate opcode entry for %s."
msgstr ""
-#: Top/csound.c:2876
+#: Top/csound.c:2906
msgid "Cannot open /proc/cpuinfo. Support for RDTSC is not available.\n"
msgstr ""
-#: Top/csound.c:2927
+#: Top/csound.c:2957
msgid "No valid CPU frequency entry was found in /proc/cpuinfo.\n"
msgstr ""
@@ -9958,25 +9846,25 @@ msgstr ""
msgid "Error allocating opcode list"
msgstr ""
-#: Top/main.c:161
+#: Top/main.c:160
#, c-format
msgid "WARNING: cannot open csoundrc file %s\n"
msgstr ""
-#: Top/main.c:164
+#: Top/main.c:163
#, c-format
msgid "Reading options from $CSOUNDRC: %s \n"
msgstr ""
-#: Top/main.c:173
+#: Top/main.c:172
msgid "Reading options from $HOME/.csoundrc\n"
msgstr ""
-#: Top/main.c:200
+#: Top/main.c:199
msgid "no orchestra name"
msgstr ""
-#: Top/main.c:225
+#: Top/main.c:224
msgid "Reading CSD failed ... stopping"
msgstr ""
@@ -9988,7 +9876,7 @@ msgstr ""
msgid "error: multiple uses of stdout"
msgstr ""
-#: Top/main.c:260 util/dnoise.c:268
+#: Top/main.c:260 util/dnoise.c:264
#, c-format
msgid "%s not a recognised SFOUTYP env setting"
msgstr ""
@@ -10001,58 +9889,62 @@ msgstr ""
msgid "realtime performance using dummy numeric scorefile\n"
msgstr ""
-#: Top/main.c:319
+#: Top/main.c:314
#, c-format
msgid "orchname: %s\n"
msgstr ""
-#: Top/main.c:321
-#, c-format
-msgid "scorename: %s\n"
+#: Top/main.c:334
+msgid "Stopping on parser failure\n"
msgstr ""
-#: Top/main.c:353
+#: Top/main.c:352
msgid "end of orchestra compile"
msgstr ""
-#: Top/main.c:360
+#: Top/main.c:359
#, c-format
msgid "using previous %s\n"
msgstr ""
-#: Top/main.c:373
+#: Top/main.c:369
#, c-format
msgid "cannot open scorefile %s"
msgstr ""
-#: Top/main.c:378 Top/main.c:399
-#, c-format
-msgid "cannot open %s for writing"
+#: Top/main.c:371
+msgid "sorting score ...\n"
msgstr ""
#: Top/main.c:381
-msgid "sorting score ...\n"
+#, c-format
+msgid "cannot extract %s, name conflict"
+msgstr ""
+
+#: Top/main.c:384
+#, c-format
+msgid "cannot open extract file %s"
msgstr ""
#: Top/main.c:388
#, c-format
-msgid "cannot extract %s, name conflict"
+msgid "cannot reopen %s"
msgstr ""
-#: Top/main.c:391
+#: Top/main.c:392
#, c-format
-msgid "cannot open extract file %s"
+msgid "cannot open %s for writing"
msgstr ""
-#: Top/main.c:401
+#: Top/main.c:394
msgid " ... extracting ...\n"
msgstr ""
-#: Top/main.c:414
+#: Top/main.c:405
msgid "end of score sort"
msgstr ""
-#: Top/main.c:416
+#: Top/main.c:407
msgid "Syntax check completed.\n"
msgstr ""
@@ -10117,163 +10009,158 @@ msgstr ""
msgid " *** error setting option '%s' to '%s': %s\n"
msgstr ""
-#: Top/one_file.c:105 Top/one_file.c:113
+#: Top/one_file.c:110 Top/one_file.c:118
msgid " *** cannot create temporary file"
msgstr ""
-#: Top/one_file.c:198
+#: Top/one_file.c:203
#, c-format
msgid "Removing temporary file %s ...\n"
msgstr ""
-#: Top/one_file.c:202
+#: Top/one_file.c:207
#, c-format
msgid "WARNING: could not remove %s\n"
msgstr ""
-#: Top/one_file.c:268 Top/one_file.c:296
+#: Top/one_file.c:274 Top/one_file.c:302
#, c-format
msgid "More than %d arguments in <CsOptions>"
msgstr ""
-#: Top/one_file.c:313
+#: Top/one_file.c:319
#, c-format
msgid "Invalid arguments in <CsOptions>: %s"
msgstr ""
-#: Top/one_file.c:316
+#: Top/one_file.c:322
#, c-format
msgid "Invalid arguments in .csoundrc or -@ file: %s"
msgstr ""
-#: Top/one_file.c:322 Top/one_file.c:790
+#: Top/one_file.c:328 Top/one_file.c:744
msgid "Missing end tag </CsOptions>"
msgstr ""
-#: Top/one_file.c:340 Top/one_file.c:372 Top/one_file.c:420
-#, c-format
-msgid "Creating %s (%p)\n"
-msgstr ""
-
-#: Top/one_file.c:343
-#, c-format
-msgid "Failed to create %s"
-msgstr ""
-
-#: Top/one_file.c:356
+#: Top/one_file.c:354
msgid "Missing end tag </CsInstruments>"
msgstr ""
-#: Top/one_file.c:389 Top/one_file.c:442
+#: Top/one_file.c:376 Top/one_file.c:430
msgid "Missing end tag </CsScore>"
msgstr ""
-#: Top/one_file.c:403 Top/one_file.c:408
+#: Top/one_file.c:391 Top/one_file.c:396
msgid "Missing program in tag <CsScore>"
msgstr ""
-#: Top/one_file.c:433
+#: Top/one_file.c:408
+#, c-format
+msgid "Creating %s (%p)\n"
+msgstr ""
+
+#: Top/one_file.c:421
msgid "External generation failed"
msgstr ""
-#: Top/one_file.c:520
+#: Top/one_file.c:468
#, c-format
msgid "Non base64 character %c(%2x)"
msgstr ""
-#: Top/one_file.c:539
+#: Top/one_file.c:487
msgid "Truncated byte at end of base64 stream"
msgstr ""
-#: Top/one_file.c:554
+#: Top/one_file.c:503
#, c-format
msgid "Cannot open temporary file (%s) for MIDI subfile"
msgstr ""
-#: Top/one_file.c:571
+#: Top/one_file.c:520
msgid "Missing end tag </CsMidifileB>"
msgstr ""
-#: Top/one_file.c:586 Top/one_file.c:633
+#: Top/one_file.c:536 Top/one_file.c:584
#, c-format
msgid "File %s already exists"
msgstr ""
-#: Top/one_file.c:591
+#: Top/one_file.c:541
#, c-format
msgid "Cannot open sample file (%s) subfile"
msgstr ""
-#: Top/one_file.c:605
+#: Top/one_file.c:555
msgid "Missing end tag </CsSampleB>"
msgstr ""
-#: Top/one_file.c:638
+#: Top/one_file.c:589
#, c-format
msgid "Cannot open file (%s) subfile"
msgstr ""
-#: Top/one_file.c:653
+#: Top/one_file.c:604
msgid "Missing end tag </CsFileB>"
msgstr ""
-#: Top/one_file.c:672
+#: Top/one_file.c:624
#, c-format
msgid "This CSD file requires a version of Csound before %d.%02d"
msgstr ""
-#: Top/one_file.c:680 Top/one_file.c:687
+#: Top/one_file.c:632 Top/one_file.c:639
#, c-format
msgid "This CSD file requires a version of Csound after %d.%02d"
msgstr ""
-#: Top/one_file.c:693
+#: Top/one_file.c:645
msgid "Missing end tag </CsVersion>"
msgstr ""
-#: Top/one_file.c:702
+#: Top/one_file.c:655
msgid "**** Licence Information ****\n"
msgstr ""
-#: Top/one_file.c:708
+#: Top/one_file.c:661
msgid "**** End of Licence Information ****\n"
msgstr ""
-#: Top/one_file.c:719
+#: Top/one_file.c:672
msgid "Missing end tag </CsLicence>"
msgstr ""
-#: Top/one_file.c:749
+#: Top/one_file.c:703
#, c-format
msgid "Failed to open csd file: %s"
msgstr ""
-#: Top/one_file.c:764
+#: Top/one_file.c:718
msgid "STARTING FILE\n"
msgstr ""
-#: Top/one_file.c:780
+#: Top/one_file.c:734
msgid "Creating options\n"
msgstr ""
-#: Top/one_file.c:786
+#: Top/one_file.c:740
msgid "Skipping <CsOptions>\n"
msgstr ""
-#: Top/one_file.c:800
+#: Top/one_file.c:754
msgid "Creating orchestra\n"
msgstr ""
-#: Top/one_file.c:805
+#: Top/one_file.c:759
msgid "Creating score\n"
msgstr ""
-#: Top/one_file.c:839
+#: Top/one_file.c:793
#, c-format
msgid "unknown CSD tag: %s\n"
msgstr ""
-#: Top/one_file.c:844
+#: Top/one_file.c:798
msgid "Could not find <CsoundSynthesizer> tag in CSD file.\n"
msgstr ""
@@ -10447,15 +10334,15 @@ msgstr ""
#, c-format
msgid ""
"\n"
-" Could not open %s for writing, bye...\n"
+"Could not open %s for writing, bye...\n"
msgstr ""
#: util/atsa.c:544
msgid "saving ATS data..."
msgstr ""
-#: util/atsa.c:546 util/atsa.c:2344 util/atsa.c:2358 util/atsa.c:2368
-#: util/atsa.c:2548 util/atsa.c:2611 util/atsa.c:2699
+#: util/atsa.c:546 util/atsa.c:2354 util/atsa.c:2368 util/atsa.c:2387
+#: util/atsa.c:2567 util/atsa.c:2630 util/atsa.c:2718
msgid "done!\n"
msgstr ""
@@ -10563,181 +10450,181 @@ msgid ""
"\n"
msgstr ""
-#: util/atsa.c:1482
+#: util/atsa.c:1492
#, c-format
msgid "atsa: error opening residual file '%s'"
msgstr ""
-#: util/atsa.c:1486
+#: util/atsa.c:1496
#, c-format
msgid "atsa: residual file has %d channels, must be stereo !"
msgstr ""
-#: util/atsa.c:1813
+#: util/atsa.c:1823
#, c-format
msgid ""
"\n"
"ERROR: cannot open file %s for writing\n"
msgstr ""
-#: util/atsa.c:1908
+#: util/atsa.c:1918
msgid "Error: sound not optimised !"
msgstr ""
-#: util/atsa.c:2003
+#: util/atsa.c:2013
#, c-format
msgid "atsa: cannot open input file '%s'"
msgstr ""
-#: util/atsa.c:2010
+#: util/atsa.c:2020
#, c-format
msgid "atsa: file has %d channels, must be mono !"
msgstr ""
-#: util/atsa.c:2015
+#: util/atsa.c:2025
msgid "tracking...\n"
msgstr ""
-#: util/atsa.c:2024
+#: util/atsa.c:2034
#, c-format
msgid "start %f out of bounds, corrected to 0.0"
msgstr ""
-#: util/atsa.c:2034
+#: util/atsa.c:2044
#, c-format
msgid "duration %f out of bounds, limited to file duration"
msgstr ""
-#: util/atsa.c:2040
+#: util/atsa.c:2050
#, c-format
msgid "start: %f duration: %f file dur: %f\n"
msgstr ""
-#: util/atsa.c:2047
+#: util/atsa.c:2057
#, c-format
msgid "lowest freq. %f out of bounds, forced to default: %f"
msgstr ""
-#: util/atsa.c:2057
+#: util/atsa.c:2067
#, c-format
msgid "highest freq. %f out of bounds, forced to default: %f"
msgstr ""
-#: util/atsa.c:2064
+#: util/atsa.c:2074
#, c-format
msgid ""
"freq. dev. %f out of bounds, should be > 0.0 and <= 1.0, forced to default: "
"%f"
msgstr ""
-#: util/atsa.c:2072
+#: util/atsa.c:2082
#, c-format
msgid ""
"windows cycles %d out of bounds, should be between 1 and 8, forced to "
"default: %d"
msgstr ""
-#: util/atsa.c:2080
+#: util/atsa.c:2090
#, c-format
msgid ""
"window type %d out of bounds, should be between 0 and 3, forced to default: "
"%d"
msgstr ""
-#: util/atsa.c:2088
+#: util/atsa.c:2098
#, c-format
msgid ""
"hop size %f out of bounds, should be > 0.0 and <= 1.0, forced to default: %f"
msgstr ""
-#: util/atsa.c:2096
+#: util/atsa.c:2106
#, c-format
msgid ""
"lowest magnitude %f out of bounds, should be >= 0.0 and <= 1.0, forced to "
"default: %f"
msgstr ""
-#: util/atsa.c:2120
+#: util/atsa.c:2130
#, c-format
msgid "atsa: %d frames are not enough for analysis, need at least %d"
msgstr ""
-#: util/atsa.c:2129
+#: util/atsa.c:2139
#, c-format
msgid "track length %d out of bounds, forced to: %d"
msgstr ""
-#: util/atsa.c:2138
+#: util/atsa.c:2148
#, c-format
msgid "min. segment length %d out of bounds, forced to: %d"
msgstr ""
-#: util/atsa.c:2147
+#: util/atsa.c:2157
#, c-format
msgid "min. gap length %d out of bounds, forced to: %d"
msgstr ""
-#: util/atsa.c:2153
+#: util/atsa.c:2163
#, c-format
msgid ""
"SMR threshold %f out of bounds, should be >= 0.0 and < %f dB SPL, forced to "
"default: %f"
msgstr ""
-#: util/atsa.c:2164
+#: util/atsa.c:2174
#, c-format
msgid ""
"min. seg. SMR %f out of bounds, should be >= %f and < %f dB SPL, forced to "
"default: %f"
msgstr ""
-#: util/atsa.c:2172
+#: util/atsa.c:2182
#, c-format
msgid ""
"last peak contribution %f out of bounds, should be >= 0.0 and <= 1.0, forced "
"to default: %f"
msgstr ""
-#: util/atsa.c:2180
+#: util/atsa.c:2190
#, c-format
msgid ""
"SMR contribution %f out of bounds, should be >= 0.0 and <= 1.0, forced to "
"default: %f"
msgstr ""
-#: util/atsa.c:2325
+#: util/atsa.c:2335
msgid "Initializing ATS data..."
msgstr ""
-#: util/atsa.c:2355
+#: util/atsa.c:2365
msgid "Computing residual..."
msgstr ""
-#: util/atsa.c:2366
+#: util/atsa.c:2381 util/atsa.c:2384
msgid "Analysing residual..."
msgstr ""
-#: util/atsa.c:2370
+#: util/atsa.c:2389
msgid "tracking completed.\n"
msgstr ""
-#: util/atsa.c:2478
+#: util/atsa.c:2497
msgid "Filling sound gaps..."
msgstr ""
-#: util/atsa.c:2566
+#: util/atsa.c:2585
msgid "Trimming short partials..."
msgstr ""
-#: util/atsa.c:2662
+#: util/atsa.c:2681
msgid "Computing averages..."
msgstr ""
-#: util/atsa.c:2713
+#: util/atsa.c:2732
msgid "No partials to track -- stopping\n"
msgstr ""
-#: util/atsa.c:2813
+#: util/atsa.c:2832
msgid "Soundfile analysis for ATS opcodes"
msgstr ""
@@ -10769,8 +10656,8 @@ msgstr ""
msgid "illegal number of filenames"
msgstr ""
-#: util/cvanal.c:113 util/dnoise.c:456 util/lpanal.c:518 util/pvanal.c:258
-#: util/srconv.c:351
+#: util/cvanal.c:113 util/dnoise.c:445 util/lpanal.c:518 util/pvanal.c:258
+#: util/srconv.c:350
#, c-format
msgid "error while opening %s"
msgstr ""
@@ -10810,256 +10697,256 @@ msgstr ""
msgid "Soundfile analysis for convolve"
msgstr ""
-#: util/dnoise.c:285
+#: util/dnoise.c:281
msgid "-o cannot be stdin\n"
msgstr ""
-#: util/dnoise.c:297
+#: util/dnoise.c:293
msgid "-A overriding local default WAV out"
msgstr ""
-#: util/dnoise.c:302
+#: util/dnoise.c:298
msgid "-J overriding local default AIFF/WAV out"
msgstr ""
-#: util/dnoise.c:309
+#: util/dnoise.c:305
msgid "-W overriding local default AIFF out"
msgstr ""
-#: util/dnoise.c:356
+#: util/dnoise.c:345
msgid "no t argument"
msgstr ""
-#: util/dnoise.c:379
+#: util/dnoise.c:368
msgid "no n argument"
msgstr ""
-#: util/dnoise.c:384
+#: util/dnoise.c:373
msgid "no b argument"
msgstr ""
-#: util/dnoise.c:392
+#: util/dnoise.c:381
msgid "no B argument"
msgstr ""
-#: util/dnoise.c:404
+#: util/dnoise.c:393
msgid "no E argument"
msgstr ""
-#: util/dnoise.c:408
+#: util/dnoise.c:397
msgid "no N argument"
msgstr ""
-#: util/dnoise.c:412
+#: util/dnoise.c:401
msgid "no M argument"
msgstr ""
-#: util/dnoise.c:416
+#: util/dnoise.c:405
msgid "no L argument"
msgstr ""
-#: util/dnoise.c:420
+#: util/dnoise.c:409
msgid "no w argument"
msgstr ""
-#: util/dnoise.c:424
+#: util/dnoise.c:413
msgid "no D argument"
msgstr ""
-#: util/dnoise.c:431 util/srconv.c:328
+#: util/dnoise.c:420 util/srconv.c:327
#, c-format
msgid "Looking at %c\n"
msgstr ""
-#: util/dnoise.c:438 util/srconv.c:336
+#: util/dnoise.c:427 util/srconv.c:335
#, c-format
msgid "Infile set to %s\n"
msgstr ""
-#: util/dnoise.c:441 util/srconv.c:339
+#: util/dnoise.c:430 util/srconv.c:338
#, c-format
msgid "End with %s\n"
msgstr ""
-#: util/dnoise.c:447
+#: util/dnoise.c:436
msgid "dnoise: no input file\n"
msgstr ""
-#: util/dnoise.c:451
+#: util/dnoise.c:440
msgid "Must have an example noise file (-i name)\n"
msgstr ""
-#: util/dnoise.c:479
+#: util/dnoise.c:468
#, c-format
msgid "cannot open %s.\n"
msgstr ""
-#: util/dnoise.c:491 util/srconv.c:461 util/srconv.c:473
+#: util/dnoise.c:480 util/srconv.c:460 util/srconv.c:472
#, c-format
msgid "cannot open %s."
msgstr ""
-#: util/dnoise.c:510
+#: util/dnoise.c:499
msgid "dnoise: input MUST be mono or stereo\n"
msgstr ""
-#: util/dnoise.c:518
+#: util/dnoise.c:507
msgid "dnoise: cannot open noise reference file\n"
msgstr ""
-#: util/dnoise.c:523
+#: util/dnoise.c:512
msgid "Incompatible sample rates\n"
msgstr ""
-#: util/dnoise.c:542
+#: util/dnoise.c:531
#, c-format
msgid "dnoise: warning - N not a valid power of two; revised N = %d\n"
msgstr ""
-#: util/dnoise.c:552
+#: util/dnoise.c:541
msgid "dnoise: warning - do not specify both M and W\n"
msgstr ""
-#: util/dnoise.c:562
+#: util/dnoise.c:551
msgid "dnoise: warning - invalid W ignored\n"
msgstr ""
-#: util/dnoise.c:576
+#: util/dnoise.c:565
msgid "dnoise: warning - M is too small\n"
msgstr ""
-#: util/dnoise.c:586
+#: util/dnoise.c:575
msgid "dnoise: M too large\n"
msgstr ""
-#: util/dnoise.c:592
+#: util/dnoise.c:581
msgid "dnoise: L too large\n"
msgstr ""
-#: util/dnoise.c:602
+#: util/dnoise.c:591
#, c-format
msgid "writing %u-byte blks of %s to %s"
msgstr ""
-#: util/dnoise.c:627 util/dnoise.c:666 util/dnoise.c:721 util/dnoise.c:732
-#: util/dnoise.c:736 util/dnoise.c:743 util/dnoise.c:753 util/dnoise.c:758
-#: util/dnoise.c:762 util/dnoise.c:766 util/dnoise.c:770
+#: util/dnoise.c:616 util/dnoise.c:655 util/dnoise.c:710 util/dnoise.c:721
+#: util/dnoise.c:725 util/dnoise.c:732 util/dnoise.c:742 util/dnoise.c:747
+#: util/dnoise.c:751 util/dnoise.c:755 util/dnoise.c:759
msgid "dnoise: insufficient memory\n"
msgstr ""
-#: util/dnoise.c:779 util/dnoise.c:788
+#: util/dnoise.c:768 util/dnoise.c:777
msgid "dnoise: begin time is greater than EOF of noise file!"
msgstr ""
-#: util/dnoise.c:820
+#: util/dnoise.c:809
msgid "dnoise: not enough samples of noise reference\n"
msgstr ""
-#: util/dnoise.c:1118
+#: util/dnoise.c:1103
#, c-format
msgid "%5.1f seconds of input complete\n"
msgstr ""
-#: util/dnoise.c:1137
+#: util/dnoise.c:1122
msgid "processing complete\n"
msgstr ""
-#: util/dnoise.c:1147
+#: util/dnoise.c:1132
msgid "usage: dnoise [flags] input_file"
msgstr ""
-#: util/dnoise.c:1149
+#: util/dnoise.c:1134
msgid "flags:"
msgstr ""
-#: util/dnoise.c:1150
+#: util/dnoise.c:1135
msgid "i = noise reference soundfile"
msgstr ""
-#: util/dnoise.c:1151
+#: util/dnoise.c:1136
msgid "o = output file"
msgstr ""
-#: util/dnoise.c:1152
+#: util/dnoise.c:1137
msgid "N = # of bandpass filters (1024)"
msgstr ""
-#: util/dnoise.c:1153
+#: util/dnoise.c:1138
msgid "w = filter overlap factor: {0,1,(2),3} DON'T USE -w AND -M"
msgstr ""
-#: util/dnoise.c:1154
+#: util/dnoise.c:1139
msgid "M = analysis window length (N-1 unless -w is specified)"
msgstr ""
-#: util/dnoise.c:1155
+#: util/dnoise.c:1140
msgid "L = synthesis window length (M)"
msgstr ""
-#: util/dnoise.c:1156
+#: util/dnoise.c:1141
msgid "D = decimation factor (M/8)"
msgstr ""
-#: util/dnoise.c:1157
+#: util/dnoise.c:1142
msgid "b = begin time in noise reference soundfile (0)"
msgstr ""
-#: util/dnoise.c:1158
+#: util/dnoise.c:1143
msgid "B = starting sample in noise reference soundfile (0)"
msgstr ""
-#: util/dnoise.c:1159
+#: util/dnoise.c:1144
msgid "e = end time in noise reference soundfile (end)"
msgstr ""
-#: util/dnoise.c:1160
+#: util/dnoise.c:1145
msgid "E = final sample in noise reference soundfile (end)"
msgstr ""
-#: util/dnoise.c:1161
+#: util/dnoise.c:1146
msgid "t = threshold above noise reference in dB (30)"
msgstr ""
-#: util/dnoise.c:1162
+#: util/dnoise.c:1147
msgid "S = sharpness of noise-gate turnoff (1) (1 to 5)"
msgstr ""
-#: util/dnoise.c:1163
+#: util/dnoise.c:1148
msgid "n = number of FFT frames to average over (5)"
msgstr ""
-#: util/dnoise.c:1164
+#: util/dnoise.c:1149
msgid "m = minimum gain of noise-gate when off in dB (-40)"
msgstr ""
-#: util/dnoise.c:1165
+#: util/dnoise.c:1150
msgid "V : verbose - print status info"
msgstr ""
-#: util/dnoise.c:1166
+#: util/dnoise.c:1151
msgid "A : AIFF format output"
msgstr ""
-#: util/dnoise.c:1167
+#: util/dnoise.c:1152
msgid "W : WAV format output"
msgstr ""
-#: util/dnoise.c:1168
+#: util/dnoise.c:1153
msgid "J : IRCAM format output"
msgstr ""
-#: util/dnoise.c:1187
+#: util/dnoise.c:1172
#, c-format
msgid "soundfile write returned sample count of %d, not %d\n"
msgstr ""
-#: util/dnoise.c:1189
+#: util/dnoise.c:1174
msgid ""
"(disk may be full...\n"
" closing the file ...)\n"
msgstr ""
-#: util/dnoise.c:1257
+#: util/dnoise.c:1242
msgid "Removes noise from a sound file"
msgstr ""
@@ -11067,7 +10954,7 @@ msgstr ""
msgid "Usage:\tenvext [-flags] soundfile\n"
msgstr ""
-#: util/envext.c:54 util/srconv.c:738
+#: util/envext.c:54 util/srconv.c:737
msgid "-o fnam\tsound output filename\n"
msgstr ""
@@ -11101,7 +10988,7 @@ msgstr ""
msgid "enveloping %ld sample frames (%3.1f secs)\n"
msgstr ""
-#: util/envext.c:179
+#: util/envext.c:177
msgid "Create a text file of envelope"
msgstr ""
@@ -11515,7 +11402,7 @@ msgstr ""
msgid "Legal flags are:"
msgstr ""
-#: util/mixer.c:107 util/scale.c:60 util/srconv.c:753
+#: util/mixer.c:107 util/scale.c:60 util/srconv.c:752
msgid "-H#\tprint a heartbeat style 1, 2 or 3 at each soundfile write"
msgstr ""
@@ -11555,7 +11442,7 @@ msgstr ""
msgid "mixer: error: "
msgstr ""
-#: util/mixer.c:188 util/scale.c:161 util/srconv.c:232
+#: util/mixer.c:188 util/scale.c:161 util/srconv.c:231
#, c-format
msgid "%s not a recognized SFOUTYP env setting"
msgstr ""
@@ -11784,17 +11671,17 @@ msgstr ""
msgid "Soundfile analysis for pvoc"
msgstr ""
-#: util/pvanal.c:469
+#: util/pvanal.c:467
#, c-format
msgid "pvxanal: unable to create analysis file: %s"
msgstr ""
-#: util/pvanal.c:500 util/pvanal.c:532
+#: util/pvanal.c:498 util/pvanal.c:530
#, c-format
msgid "pvxanal: error writing analysis frames: %s\n"
msgstr ""
-#: util/pvanal.c:542
+#: util/pvanal.c:540
#, c-format
msgid ""
"\n"
@@ -11884,7 +11771,7 @@ msgstr ""
msgid "-P fpnum\tscale file to given percentage of full"
msgstr ""
-#: util/scale.c:62 util/srconv.c:755
+#: util/scale.c:62 util/srconv.c:754
msgid "-- fnam\tlog output to file"
msgstr ""
@@ -12035,75 +11922,75 @@ msgstr ""
msgid "Sound format -%c has been overruled by -%c"
msgstr ""
-#: util/srconv.c:299
+#: util/srconv.c:298
msgid "No Q argument"
msgstr ""
-#: util/srconv.c:304
+#: util/srconv.c:303
msgid "No P argument"
msgstr ""
-#: util/srconv.c:313
+#: util/srconv.c:312
msgid "No r argument"
msgstr ""
-#: util/srconv.c:322
+#: util/srconv.c:321
msgid "No break file"
msgstr ""
-#: util/srconv.c:345
+#: util/srconv.c:344
msgid "No input given\n"
msgstr ""
-#: util/srconv.c:362
+#: util/srconv.c:361
msgid "srconv: cannot specify both -r and -P"
msgstr ""
-#: util/srconv.c:373
+#: util/srconv.c:372
msgid "srconv: cannot open time-vary function file"
msgstr ""
-#: util/srconv.c:389
+#: util/srconv.c:388
msgid "srconv: too few x-y pairs in time-vary function file"
msgstr ""
-#: util/srconv.c:403
+#: util/srconv.c:402
msgid "srconv: first x value in time-vary function must be 0"
msgstr ""
-#: util/srconv.c:408
+#: util/srconv.c:407
msgid "srconv: invalid initial y value in time-vary function"
msgstr ""
-#: util/srconv.c:413 util/srconv.c:705
+#: util/srconv.c:412 util/srconv.c:704
msgid "srconv: invalid x values in time-vary function"
msgstr ""
-#: util/srconv.c:732
+#: util/srconv.c:731
msgid ""
"usage: srconv [flags] infile\n"
"\n"
"flags:"
msgstr ""
-#: util/srconv.c:733
+#: util/srconv.c:732
msgid ""
"-P num\tpitch transposition ratio (srate/r) [do not specify both P and r]"
msgstr ""
-#: util/srconv.c:735
+#: util/srconv.c:734
msgid "-Q num\tquality factor (1 to 8: default = 2)"
msgstr ""
-#: util/srconv.c:736
+#: util/srconv.c:735
msgid "-i filnam\tbreak file"
msgstr ""
-#: util/srconv.c:737
+#: util/srconv.c:736
msgid "-r num\toutput sample rate (must be specified)"
msgstr ""
-#: util/srconv.c:821
+#: util/srconv.c:820
msgid "Sample rate conversion"
msgstr ""
diff --git a/po/russian.po b/po/russian.po
index 8750949..b221130 100644
--- a/po/russian.po
+++ b/po/russian.po
@@ -31,22 +31,22 @@ msgstr ""
msgid "auxlist for instr %d (%p):\n"
msgstr ""
-#: Engine/auxfd.c:153
+#: Engine/auxfd.c:154
#, c-format
msgid "\tauxch at %p: size %ld, auxp %p, endp %p\n"
msgstr ""
-#: Engine/auxfd.c:165
+#: Engine/auxfd.c:166
#, c-format
msgid "fdlist for instr %s [%d] (%p):"
msgstr ""
-#: Engine/auxfd.c:168
+#: Engine/auxfd.c:169
#, c-format
msgid "fdlist for instr %d (%p):"
msgstr ""
-#: Engine/auxfd.c:171
+#: Engine/auxfd.c:172
#, c-format
msgid " fd %p in %p"
msgstr ""
@@ -99,356 +99,316 @@ msgstr "ÑнÑÑ Ð¿ÑевÑÑÐ°ÐµÑ Ð´Ð»Ð¸Ð½Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ð½ÑÑ Ð¼Ð°ÐºÑи
msgid "(unknown error)"
msgstr ""
-#: Engine/csound_orc_compile.c:214 Engine/rdorch.c:1832
+#: Engine/csound_orc_compile.c:138
+#, c-format
+msgid ""
+"input arg %d '%s' of type %s not allowed when expecting %c (for opcode %s), "
+"line %d\n"
+msgstr ""
+
+#: Engine/csound_orc_compile.c:265 Engine/rdorch.c:1862
msgid "missing or extra arg"
msgstr ""
-#: Engine/csound_orc_compile.c:218
+#: Engine/csound_orc_compile.c:269
msgid "too many input args\n"
msgstr ""
-#: Engine/csound_orc_compile.c:475
+#: Engine/csound_orc_compile.c:304
#, c-format
-msgid "create_opcode: No rule to handle statement of type %d\n"
+msgid "input arg '%s' used before defined (in opcode %s), line %d\n"
msgstr ""
-#: Engine/csound_orc_compile.c:671
+#: Engine/csound_orc_compile.c:380
#, c-format
-msgid "create_instrument: instr num %ld\n"
+msgid ""
+"output name previously used, type '%c' must be uniquely defined, line %d"
msgstr ""
-#: Engine/csound_orc_compile.c:681
+#: Engine/csound_orc_compile.c:386
#, c-format
-msgid "create_instrument: instr name %s\n"
+msgid "output arg '%s' illegal type (for opcode %s), line %d\n"
msgstr ""
-#: Engine/csound_orc_compile.c:688 Engine/otran.c:351
-msgid "invalid name for instrument"
-msgstr ""
-
-#: Engine/csound_orc_compile.c:692 Engine/otran.c:356
+#: Engine/csound_orc_compile.c:541
#, c-format
-msgid "instr %s redefined"
+msgid "create_opcode: No rule to handle statement of type %d\n"
msgstr ""
-#: Engine/csound_orc_compile.c:833 Engine/otran.c:145 Engine/symbtab.c:394
+#: Engine/csound_orc_compile.c:738
#, c-format
-msgid "invalid input type for opcode %s"
+msgid "create_instrument: instr num %ld\n"
msgstr ""
-#: Engine/csound_orc_compile.c:838 Engine/otran.c:150 Engine/symbtab.c:399
+#: Engine/csound_orc_compile.c:748
#, c-format
-msgid "too many input args for opcode %s"
+msgid "create_instrument: instr name %s\n"
msgstr ""
-#: Engine/csound_orc_compile.c:853 Engine/otran.c:165 Engine/symbtab.c:414
-#, c-format
-msgid "too many output args for opcode %s"
+#: Engine/csound_orc_compile.c:755 Engine/otran.c:364
+msgid "invalid name for instrument"
msgstr ""
-#: Engine/csound_orc_compile.c:869 Engine/otran.c:187 Engine/symbtab.c:433
+#: Engine/csound_orc_compile.c:759 Engine/otran.c:370
#, c-format
-msgid "invalid output type for opcode %s"
+msgid "instr %s redefined"
msgstr ""
-#: Engine/csound_orc_compile.c:954 Engine/otran.c:339
+#: Engine/csound_orc_compile.c:903 Engine/otran.c:352
#, c-format
msgid "instr %ld redefined"
msgstr ""
-#: Engine/csound_orc_compile.c:964
+#: Engine/csound_orc_compile.c:914
msgid "!!! csound->opcodeInfo is NULL !!!\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1111
+#: Engine/csound_orc_compile.c:1083
#, c-format
msgid "Unknown TREE node of type %d found in root.\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1168 Engine/otran.c:565 Engine/otran.c:1414
+#: Engine/csound_orc_compile.c:1140 Engine/otran.c:579 Engine/otran.c:1433
#, c-format
msgid "%s invalid sample rate"
msgstr ""
-#: Engine/csound_orc_compile.c:1170 Engine/otran.c:567 Engine/otran.c:1416
+#: Engine/csound_orc_compile.c:1142 Engine/otran.c:581 Engine/otran.c:1435
#, c-format
msgid "%s invalid control rate"
msgstr ""
-#: Engine/csound_orc_compile.c:1173 Engine/otran.c:570 Engine/otran.c:1412
+#: Engine/csound_orc_compile.c:1146 Engine/otran.c:584 Engine/otran.c:1431
#, c-format
msgid "%s invalid ksmps value"
msgstr ""
-#: Engine/csound_orc_compile.c:1176 Engine/otran.c:572 Engine/otran.c:1418
+#: Engine/csound_orc_compile.c:1149 Engine/otran.c:587 Engine/otran.c:1437
#, c-format
msgid "%s inconsistent sr, kr, ksmps"
msgstr ""
-#: Engine/csound_orc_compile.c:1190
+#: Engine/csound_orc_compile.c:1165
msgid "perf-pass statements illegal in header blk\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1195
+#: Engine/csound_orc_compile.c:1170
#, c-format
msgid "%d syntax errors in orchestra. compilation invalid\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1255 Engine/otran.c:656
+#: Engine/csound_orc_compile.c:1230 Engine/otran.c:671
msgid "inconsistent argoff sumcount"
msgstr ""
-#: Engine/csound_orc_compile.c:1327 Engine/otran.c:725
+#: Engine/csound_orc_compile.c:1302 Engine/otran.c:740
#, c-format
msgid "LABELS list is full...extending to %d\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1365 Engine/otran.c:763
+#: Engine/csound_orc_compile.c:1340 Engine/otran.c:778
#, c-format
msgid "GOTOS list is full..extending to %d\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1398 Engine/otran.c:796
+#: Engine/csound_orc_compile.c:1373 Engine/otran.c:811
#, c-format
msgid "target label '%s' not found"
msgstr ""
-#: Engine/csound_orc_compile.c:1463 Engine/otran.c:851
+#: Engine/csound_orc_compile.c:1451 Engine/otran.c:866
#, c-format
msgid "string syntax '%s'"
msgstr ""
-#: Engine/csound_orc_compile.c:1513 Engine/otran.c:901
+#: Engine/csound_orc_compile.c:1501 Engine/otran.c:916
#, c-format
msgid "numeric syntax '%s'"
msgstr ""
-#: Engine/csound_orc_compile.c:1539 Engine/otran.c:927
+#: Engine/csound_orc_compile.c:1527 Engine/otran.c:942
#, c-format
msgid "extending Floating pool to %d\n"
msgstr ""
-#: Engine/csound_orc_compile.c:1578 Engine/otran.c:999
+#: Engine/csound_orc_compile.c:1566 Engine/otran.c:1018
msgid "gblnamset(): memory allocation failure"
msgstr ""
-#: Engine/csound_orc_compile.c:1606 Engine/otran.c:1027
+#: Engine/csound_orc_compile.c:1594 Engine/otran.c:1046
msgid "lclnamset(): memory allocation failure"
msgstr ""
-#: Engine/csound_orc_compile.c:1632 Engine/otran.c:1052
+#: Engine/csound_orc_compile.c:1620 Engine/otran.c:1071
msgid "unexpected global name"
msgstr ""
-#: Engine/csound_orc_compile.c:1655 Engine/otran.c:1074
+#: Engine/csound_orc_compile.c:1643 Engine/otran.c:1093
msgid "unknown nametype"
msgstr ""
-#: Engine/csound_orc.l:239
+#: Engine/csound_orc_expressions.c:459
#, c-format
-msgid "unterminated string found on line %d >>%s<<\n"
+msgid "error: function %s with arg type %c not found, line %d \n"
msgstr ""
-#: Engine/csound_orc.l:259 Engine/csound_orc.l:286 Engine/csound_orc.l:314
-#: Engine/csound_orc.l:367 Engine/rdorch.c:901 Engine/sread.c:396
+#: Engine/csound_orc_expressions.c:862
#, c-format
-msgid "Undefined macro: '%s'"
-msgstr ""
-
-#: Engine/csound_orc.l:265 Engine/csound_orc.l:292
-msgid "Includes nested too deeply"
+msgid "error: non-existent statement in conditional, line %d \n"
msgstr ""
-#: Engine/csound_orc.l:335 Engine/csound_orc.l:388 Engine/rdorch.c:940
+#: Engine/csound_orc_semantics.c:157
#, c-format
msgid ""
-"Missing argument terminator\n"
-"%.98s"
-msgstr ""
-
-#: Engine/csound_orc.l:484
-#, c-format
-msgid "Line %d: Unknown character: '%c'(%2x)\n"
-msgstr ""
-
-#: Engine/csound_orc.l:527
-#, c-format
-msgid "Cannot open file \"%s\"\n"
-msgstr ""
-
-#: Engine/csound_orc.l:573 Engine/rdorch.c:689 Engine/sread.c:1595
-msgid "macro error\n"
-msgstr ""
-
-#: Engine/csound_orc.l:631 Engine/rdorch.c:845 Engine/sread.c:1686
-#, c-format
-msgid "macro %s undefined\n"
-msgstr ""
-
-#: Engine/csound_orc.l:645 Engine/rdorch.c:859 Engine/sread.c:294
-msgid "Undefining undefined macro"
-msgstr ""
-
-#: Engine/csound_orc.l:786 Engine/rdorch.c:413 Engine/sread.c:741
-#, c-format
-msgid "Macro definition for %*s\n"
-msgstr ""
-
-#: Engine/csound_orc.l:789 Engine/rdorch.c:416
-msgid "Invalid macro name for --omacro"
-msgstr ""
-
-#: Engine/csound_orc.y:270
-msgid "No number following instr\n"
-msgstr ""
-
-#: Engine/csound_orc_semantics.c:127
-#, c-format
-msgid "error: %s (token \"%s\")"
+"\n"
+"error: %s (token \"%s\")"
msgstr ""
-#: Engine/csound_orc_semantics.c:129
+#: Engine/csound_orc_semantics.c:159
#, c-format
-msgid " line %d: %s"
+msgid ""
+" line %d:\n"
+">>>"
msgstr ""
-#: Engine/csound_orc_semantics.c:702 Engine/rdorch.c:1863
-msgid "insufficient required arguments"
-msgstr ""
+#: Engine/csound_orc_semantics.c:732
+#, fuzzy, c-format
+msgid "insufficient required arguments for opcode %s on line %d\n"
+msgstr "недоÑÑаÑоÑнÑе аÑгÑменÑÑ"
-#: Engine/csound_orc_semantics.c:768 Engine/rdorch.c:1617 Engine/rdorch.c:1635
-#: Engine/rdorch.c:1676 Engine/rdorch.c:1811 Engine/rdorch.c:1980
+#: Engine/csound_orc_semantics.c:797 Engine/rdorch.c:1644 Engine/rdorch.c:1662
+#: Engine/rdorch.c:1703 Engine/rdorch.c:1841 Engine/rdorch.c:2011
#, c-format
msgid "modified opcod: %s"
msgstr ""
-#: Engine/cs_par_dispatch.c:113 Engine/cs_par_dispatch.c:125
+#: Engine/cs_par_dispatch.c:115 Engine/cs_par_dispatch.c:128
#, c-format
msgid "Poorly specified global lock index: %i [max: %i]\n"
msgstr ""
-#: Engine/cs_par_dispatch.c:138 Engine/cs_par_dispatch.c:157
+#: Engine/cs_par_dispatch.c:142 Engine/cs_par_dispatch.c:162
msgid "Invalid NULL parameter name for a global variable\n"
msgstr ""
-#: Engine/cs_par_dispatch.c:505 Engine/cs_par_dispatch.c:528
-#: Engine/cs_par_dispatch.c:2463 Engine/cs_par_dispatch.c:2507
-#: Engine/cs_par_dispatch.c:2509 Engine/cs_par_dispatch.c:2570
+#: Engine/cs_par_dispatch.c:526 Engine/cs_par_dispatch.c:553
+#: Engine/cs_par_dispatch.c:2543 Engine/cs_par_dispatch.c:2588
+#: Engine/cs_par_dispatch.c:2590 Engine/cs_par_dispatch.c:2654
msgid "Invalid NULL Parameter entry"
msgstr ""
-#: Engine/cs_par_dispatch.c:507 Engine/cs_par_dispatch.c:541
-#: Engine/cs_par_dispatch.c:566 Engine/cs_par_dispatch.c:605
+#: Engine/cs_par_dispatch.c:528 Engine/cs_par_dispatch.c:567
+#: Engine/cs_par_dispatch.c:594 Engine/cs_par_dispatch.c:635
msgid "Invalid NULL Parameter name"
msgstr ""
-#: Engine/cs_par_dispatch.c:512
+#: Engine/cs_par_dispatch.c:535
msgid "Failed to allocate Opcode Weight cache entry"
msgstr ""
-#: Engine/cs_par_dispatch.c:632 Engine/cs_par_dispatch.c:718
+#: Engine/cs_par_dispatch.c:664 Engine/cs_par_dispatch.c:755
msgid "No Weights to Dump (Using Defaults)\n"
msgstr ""
-#: Engine/cs_par_dispatch.c:670 Engine/cs_par_dispatch.c:794
+#: Engine/cs_par_dispatch.c:705 Engine/cs_par_dispatch.c:835
#, c-format
msgid "Opcode Weight Spec File not found at: %s"
msgstr ""
-#: Engine/cs_par_dispatch.c:722
+#: Engine/cs_par_dispatch.c:759
msgid "Weights Dump\n"
msgstr ""
-#: Engine/cs_par_dispatch.c:866
+#: Engine/cs_par_dispatch.c:907
#, c-format
msgid "Parallel Spec File not found at: %s"
msgstr ""
-#: Engine/cs_par_dispatch.c:872
+#: Engine/cs_par_dispatch.c:913
msgid "Parallel Spec File invalid format expected weight_min parameter"
msgstr ""
-#: Engine/cs_par_dispatch.c:877
+#: Engine/cs_par_dispatch.c:918
msgid "Parallel Spec File invalid format expected weight_max parameter"
msgstr ""
-#: Engine/cs_par_dispatch.c:881
+#: Engine/cs_par_dispatch.c:922
msgid "Parallel Spec File invalid format expected roots_avail_min parameter"
msgstr ""
-#: Engine/cs_par_dispatch.c:885
+#: Engine/cs_par_dispatch.c:926
msgid "Parallel Spec File invalid format expected roots_avail_max parameter"
msgstr ""
-#: Engine/cs_par_dispatch.c:961 Engine/cs_par_dispatch.c:985
-#: Engine/cs_par_dispatch.c:1109 Engine/cs_par_dispatch.c:1195
-#: Engine/cs_par_dispatch.c:1332 Engine/cs_par_dispatch.c:1366
-#: Engine/cs_par_dispatch.c:1383 Engine/cs_par_dispatch.c:1405
-#: Engine/cs_par_dispatch.c:1432 Engine/cs_par_dispatch.c:1452
-#: Engine/cs_par_dispatch.c:1476 Engine/cs_par_dispatch.c:1566
-#: Engine/cs_par_dispatch.c:1621 Engine/cs_par_dispatch.c:1714
-#: Engine/cs_par_dispatch.c:1769 Engine/cs_par_dispatch.c:2597
+#: Engine/cs_par_dispatch.c:1003 Engine/cs_par_dispatch.c:1027
+#: Engine/cs_par_dispatch.c:1155 Engine/cs_par_dispatch.c:1251
+#: Engine/cs_par_dispatch.c:1405 Engine/cs_par_dispatch.c:1439
+#: Engine/cs_par_dispatch.c:1456 Engine/cs_par_dispatch.c:1478
+#: Engine/cs_par_dispatch.c:1506 Engine/cs_par_dispatch.c:1528
+#: Engine/cs_par_dispatch.c:1552 Engine/cs_par_dispatch.c:1644
+#: Engine/cs_par_dispatch.c:1699 Engine/cs_par_dispatch.c:1792
+#: Engine/cs_par_dispatch.c:1847 Engine/cs_par_dispatch.c:2681
msgid "Invalid NULL Parameter dag"
msgstr ""
-#: Engine/cs_par_dispatch.c:966
+#: Engine/cs_par_dispatch.c:1008
msgid "Failed to allocate dag"
msgstr ""
-#: Engine/cs_par_dispatch.c:1017 Engine/cs_par_dispatch.c:1040
-#: Engine/cs_par_dispatch.c:1062 Engine/cs_par_dispatch.c:1064
+#: Engine/cs_par_dispatch.c:1060 Engine/cs_par_dispatch.c:1083
+#: Engine/cs_par_dispatch.c:1105 Engine/cs_par_dispatch.c:1107
msgid "Invalid NULL Parameter dag_node"
msgstr ""
-#: Engine/cs_par_dispatch.c:1019
+#: Engine/cs_par_dispatch.c:1062
msgid "Invalid NULL Parameter instr"
msgstr ""
-#: Engine/cs_par_dispatch.c:1021
+#: Engine/cs_par_dispatch.c:1064
msgid "Invalid NULL Parameter insds"
msgstr ""
-#: Engine/cs_par_dispatch.c:1026 Engine/cs_par_dispatch.c:1048
+#: Engine/cs_par_dispatch.c:1069 Engine/cs_par_dispatch.c:1091
msgid "Failed to allocate dag_node"
msgstr ""
-#: Engine/cs_par_dispatch.c:1043
+#: Engine/cs_par_dispatch.c:1086
msgid "Invalid Parameter count must be greater than 0"
msgstr ""
-#: Engine/cs_par_dispatch.c:1175 Engine/cs_par_dispatch.c:1433
-#: Engine/cs_par_dispatch.c:2465 Engine/cs_par_dispatch.c:2571
-#: Engine/cs_par_dispatch.c:2598
+#: Engine/cs_par_dispatch.c:1229 Engine/cs_par_dispatch.c:1508
+#: Engine/cs_par_dispatch.c:2545 Engine/cs_par_dispatch.c:2655
+#: Engine/cs_par_dispatch.c:2682
msgid "Invalid NULL Parameter chain"
msgstr ""
-#: Engine/cs_par_dispatch.c:1183
+#: Engine/cs_par_dispatch.c:1237
#, c-format
msgid "Failed to find semantic information for instrument '%i'"
msgstr ""
-#: Engine/cs_par_dispatch.c:1478
+#: Engine/cs_par_dispatch.c:1554
msgid "Invalid NULL Parameter node"
msgstr ""
-#: Engine/cs_par_dispatch.c:1480
+#: Engine/cs_par_dispatch.c:1556
msgid "Invalid NULL Parameter update_hdl"
msgstr ""
-#: Engine/cs_par_dispatch.c:1569
+#: Engine/cs_par_dispatch.c:1647
msgid "Invalid Parameter update_hdl is outside the DAG range"
msgstr ""
-#: Engine/cs_par_dispatch.c:2417
+#: Engine/cs_par_dispatch.c:2497
#, c-format
msgid "Parallel Dump File not found at: %s for writing"
msgstr ""
-#: Engine/cs_par_dispatch.c:2477
+#: Engine/cs_par_dispatch.c:2557
msgid "Failed to allocate Dag2 cache entry"
msgstr ""
-#: Engine/cs_par_dispatch.c:2527
+#: Engine/cs_par_dispatch.c:2610
msgid "Cache Update\n"
msgstr ""
@@ -462,12 +422,12 @@ msgstr ""
msgid "Creating search path cache for '%s':"
msgstr ""
-#: Engine/envvar.c:1082
+#: Engine/envvar.c:1083
#, c-format
msgid "internal error: csoundFileOpen(): invalid type: %d"
msgstr ""
-#: Engine/envvar.c:1264
+#: Engine/envvar.c:1266
#, c-format
msgid "internal error: csoundCreateFileHandle(): invalid type: %d"
msgstr ""
@@ -525,345 +485,346 @@ msgstr ""
msgid "expression syntax"
msgstr ""
-#: Engine/fgens.c:95
+#: Engine/fgens.c:91
msgid "unknown GEN number"
msgstr ""
-#: Engine/fgens.c:137
+#: Engine/fgens.c:133
msgid "ftable does not exist"
msgstr ""
-#: Engine/fgens.c:142
+#: Engine/fgens.c:138
#, c-format
msgid "ftable %d now deleted\n"
msgstr ""
-#: Engine/fgens.c:157 Engine/fgens.c:1597 Engine/fgens.c:1683
-#: Engine/fgens.c:1762 Engine/fgens.c:1878 Engine/fgens.c:1959
-#: Engine/fgens.c:2867
+#: Engine/fgens.c:153 Engine/fgens.c:1593 Engine/fgens.c:1679
+#: Engine/fgens.c:1758 Engine/fgens.c:1874 Engine/fgens.c:1955
+#: Engine/fgens.c:2909
msgid "insufficient gen arguments"
msgstr ""
-#: Engine/fgens.c:183 Opcodes/ftgen.c:116
+#: Engine/fgens.c:179 Opcodes/ftgen.c:116
#, c-format
msgid "Named gen \"%s\" not defined"
msgstr ""
-#: Engine/fgens.c:190
+#: Engine/fgens.c:186
msgid "illegal gen number"
msgstr ""
-#: Engine/fgens.c:198
-msgid "deferred size for GENs 1, 23 or 28 only"
+#: Engine/fgens.c:194
+msgid "deferred size for GENs 1, 23, 28 or 49 only"
msgstr ""
-#: Engine/fgens.c:201 Engine/fgens.c:249
+#: Engine/fgens.c:197 Engine/fgens.c:245
#, c-format
msgid "ftable %d:\n"
msgstr ""
-#: Engine/fgens.c:226 Engine/fgens.c:233
+#: Engine/fgens.c:222 Engine/fgens.c:229
msgid "illegal table length"
msgstr ""
-#: Engine/fgens.c:292 Engine/fgens.c:2219
+#: Engine/fgens.c:288 Engine/fgens.c:2215
#, c-format
msgid ""
"ftable %d relocating due to size change\n"
" currently active instruments may find this disturbing"
msgstr ""
-#: Engine/fgens.c:350 Engine/fgens.c:471 Engine/fgens.c:555 Engine/fgens.c:636
-#: Engine/fgens.c:711 Engine/fgens.c:760 Engine/fgens.c:881 Engine/fgens.c:958
-#: Engine/fgens.c:1053 Engine/fgens.c:1097 Engine/fgens.c:1144
-#: Engine/fgens.c:1397 Engine/fgens.c:1459 Engine/fgens.c:1681
-#: Engine/fgens.c:1759 Engine/fgens.c:2114 Engine/fgens.c:2821
-#: Engine/fgens.c:2864
+#: Engine/fgens.c:346 Engine/fgens.c:467 Engine/fgens.c:551 Engine/fgens.c:632
+#: Engine/fgens.c:707 Engine/fgens.c:756 Engine/fgens.c:877 Engine/fgens.c:954
+#: Engine/fgens.c:1049 Engine/fgens.c:1093 Engine/fgens.c:1140
+#: Engine/fgens.c:1393 Engine/fgens.c:1455 Engine/fgens.c:1677
+#: Engine/fgens.c:1755 Engine/fgens.c:2110 Engine/fgens.c:2863
+#: Engine/fgens.c:2906
msgid "using extended arguments\n"
msgstr ""
-#: Engine/fgens.c:374
+#: Engine/fgens.c:370
msgid "no coefs present"
msgstr ""
-#: Engine/fgens.c:379 Engine/fgens.c:645 Engine/fgens.c:653
+#: Engine/fgens.c:375 Engine/fgens.c:641 Engine/fgens.c:649
msgid "illegal x interval"
msgstr ""
-#: Engine/fgens.c:408 Engine/fgens.c:557 Engine/fgens.c:638 Engine/fgens.c:883
-#: Engine/fgens.c:1354 Engine/fgens.c:2378 Engine/fgens.c:2694 Top/main.c:142
-#: util/cvanal.c:66 util/lpanal.c:398 util/pvanal.c:170
+#: Engine/fgens.c:404 Engine/fgens.c:553 Engine/fgens.c:634 Engine/fgens.c:879
+#: Engine/fgens.c:1350 Engine/fgens.c:2375 Engine/fgens.c:2690
+#: Engine/fgens.c:2810 Top/main.c:141 util/cvanal.c:66 util/lpanal.c:398
+#: util/pvanal.c:170
msgid "insufficient arguments"
msgstr "недоÑÑаÑоÑнÑе аÑгÑменÑÑ"
-#: Engine/fgens.c:412 Engine/fgens.c:1359
+#: Engine/fgens.c:408 Engine/fgens.c:1355
msgid "unknown srctable number"
msgstr ""
-#: Engine/fgens.c:425
+#: Engine/fgens.c:421
msgid "table size too large"
msgstr ""
-#: Engine/fgens.c:510 Engine/fgens.c:543
+#: Engine/fgens.c:506 Engine/fgens.c:539
msgid "gen call has negative segment size:"
msgstr ""
-#: Engine/fgens.c:512
+#: Engine/fgens.c:508
msgid "illegal input vals for gen call, beginning:"
msgstr ""
-#: Engine/fgens.c:578
+#: Engine/fgens.c:574
msgid "negative segsiz"
msgstr ""
-#: Engine/fgens.c:787
+#: Engine/fgens.c:783
msgid "nh partials < 1"
msgstr ""
-#: Engine/fgens.c:886
+#: Engine/fgens.c:882
msgid "illegal xint value"
msgstr ""
-#: Engine/fgens.c:889
+#: Engine/fgens.c:885
msgid "illegal xamp value"
msgstr ""
-#: Engine/fgens.c:961
+#: Engine/fgens.c:957
msgid "uneven number of args"
msgstr ""
-#: Engine/fgens.c:1081
+#: Engine/fgens.c:1077
msgid "gen call has illegal x-ordinate values:"
msgstr ""
-#: Engine/fgens.c:1099
+#: Engine/fgens.c:1095
msgid "wrong number of args"
msgstr "непÑавилÑнÑй ÑиÑло аÑгÑменÑов"
-#: Engine/fgens.c:1113
+#: Engine/fgens.c:1109
msgid "a range given exceeds table length"
msgstr ""
-#: Engine/fgens.c:1120
+#: Engine/fgens.c:1116
msgid "an input function does not exist"
msgstr ""
-#: Engine/fgens.c:1253
+#: Engine/fgens.c:1249
msgid "No such window!"
msgstr ""
-#: Engine/fgens.c:1271
+#: Engine/fgens.c:1267
msgid "Wrong number of input arguments"
msgstr "непÑавилÑнÑй ÑиÑло аÑгÑменÑов вÑ
одного Ñигнала"
-#: Engine/fgens.c:1272
+#: Engine/fgens.c:1268
msgid "unknown distribution"
msgstr ""
-#: Engine/fgens.c:1321
+#: Engine/fgens.c:1317
msgid "error opening ASCII file"
msgstr ""
-#: Engine/fgens.c:1327
+#: Engine/fgens.c:1323
#, c-format
msgid "%ld elements in %s\n"
msgstr ""
-#: Engine/fgens.c:1338
+#: Engine/fgens.c:1334
msgid "Numbers after table full in GEN23"
msgstr ""
-#: Engine/fgens.c:1367
+#: Engine/fgens.c:1363
msgid "table size must be the same of source table"
msgstr ""
-#: Engine/fgens.c:1439 Engine/fgens.c:1499
+#: Engine/fgens.c:1435 Engine/fgens.c:1495
msgid "x coordinates must all be in increasing order:"
msgstr ""
-#: Engine/fgens.c:1442 Engine/fgens.c:1501
+#: Engine/fgens.c:1438 Engine/fgens.c:1497
msgid "x coordinate greater than function size:"
msgstr ""
-#: Engine/fgens.c:1446
+#: Engine/fgens.c:1442
msgid "illegal input val (y <= 0) for gen call, beginning:"
msgstr ""
-#: Engine/fgens.c:1519
+#: Engine/fgens.c:1515
msgid "GEN28 requires zero table length"
msgstr ""
-#: Engine/fgens.c:1581
+#: Engine/fgens.c:1577
msgid "could not open space file"
msgstr ""
-#: Engine/fgens.c:1583
+#: Engine/fgens.c:1579
msgid "Time values must be in increasing order"
msgstr ""
-#: Engine/fgens.c:1604
+#: Engine/fgens.c:1600
msgid "GEN30: source ftable not found"
msgstr ""
-#: Engine/fgens.c:1687
+#: Engine/fgens.c:1683
msgid "GEN31: source ftable not found"
msgstr ""
-#: Engine/fgens.c:1795
+#: Engine/fgens.c:1791
#, c-format
msgid "GEN32: source ftable %d not found"
msgstr ""
-#: Engine/fgens.c:1889
+#: Engine/fgens.c:1885
msgid "GEN33: source ftable not found"
msgstr ""
-#: Engine/fgens.c:2057
+#: Engine/fgens.c:2053
msgid "unknown source table number"
msgstr ""
-#: Engine/fgens.c:2089
+#: Engine/fgens.c:2085
msgid "Gen41: negative probability not allowed"
msgstr ""
-#: Engine/fgens.c:2155 Opcodes/fareygen.c:70
+#: Engine/fgens.c:2151 Opcodes/fareygen.c:70
#, c-format
msgid "ftable %d: "
msgstr ""
-#: Engine/fgens.c:2199
+#: Engine/fgens.c:2195
#, c-format
msgid "ftable %d:"
msgstr ""
-#: Engine/fgens.c:2214
+#: Engine/fgens.c:2210
#, c-format
msgid "replacing previous ftable %d"
msgstr ""
-#: Engine/fgens.c:2250 Engine/fgens.c:2337 Engine/fgens.c:2361
-#: Opcodes/gab/gab.c:578 Opcodes/gab/gab.c:632 Opcodes/midiops2.c:218
+#: Engine/fgens.c:2246 Engine/fgens.c:2334 Engine/fgens.c:2358
+#: Opcodes/gab/gab.c:580 Opcodes/gab/gab.c:634 Opcodes/midiops2.c:218
#: Opcodes/midiops2.c:370 Opcodes/midiops2.c:452 Opcodes/uggab.c:1317
#: Opcodes/uggab.c:1344 Opcodes/uggab.c:1364 Opcodes/uggab.c:1407
#, c-format
msgid "Invalid ftable no. %f"
msgstr ""
-#: Engine/fgens.c:2255
+#: Engine/fgens.c:2251
#, c-format
msgid "deferred-size ftable %f illegal here"
msgstr ""
-#: Engine/fgens.c:2281
+#: Engine/fgens.c:2278 Engine/fgens.c:2848
#, c-format
msgid "Deferred load of '%s' failed"
msgstr ""
-#: Engine/fgens.c:2343
+#: Engine/fgens.c:2340
#, c-format
msgid "Deferred-size ftable %f load not available at perf time."
msgstr ""
-#: Engine/fgens.c:2402
+#: Engine/fgens.c:2399
#, c-format
msgid "non-deferred ftable %d needs size %d\n"
msgstr ""
-#: Engine/fgens.c:2449 Opcodes/loscilx.c:62
+#: Engine/fgens.c:2446 Opcodes/loscilx.c:64
#, c-format
msgid "invalid sample format: %d"
msgstr ""
-#: Engine/fgens.c:2457 Engine/fgens.c:2718
+#: Engine/fgens.c:2454 Engine/fgens.c:2714
#, c-format
msgid "channel %d illegal"
msgstr ""
-#: Engine/fgens.c:2463
+#: Engine/fgens.c:2460
msgid "deferred alloc\n"
msgstr ""
-#: Engine/fgens.c:2471
+#: Engine/fgens.c:2468
msgid "deferred size, but filesize unknown"
msgstr ""
-#: Engine/fgens.c:2474
+#: Engine/fgens.c:2471
#, c-format
msgid " defer length %d\n"
msgstr ""
-#: Engine/fgens.c:2543
+#: Engine/fgens.c:2540
msgid "GEN1: input file truncated by ftable size"
msgstr ""
-#: Engine/fgens.c:2547
+#: Engine/fgens.c:2544
#, c-format
msgid "\tlooping endpoint %d exceeds ftsize %d\n"
msgstr ""
-#: Engine/fgens.c:2569
+#: Engine/fgens.c:2566
msgid "GEN1 read error"
msgstr ""
-#: Engine/fgens.c:2574
+#: Engine/fgens.c:2571
msgid "GEN1: aiff file truncated by ftable size"
msgstr ""
-#: Engine/fgens.c:2575
+#: Engine/fgens.c:2572
#, c-format
msgid "\taudio samps %d exceeds ftsize %d"
msgstr ""
-#: Engine/fgens.c:2619
+#: Engine/fgens.c:2616
msgid "wrong number of ftable arguments"
msgstr ""
-#: Engine/fgens.c:2629 OOps/pstream.c:326
+#: Engine/fgens.c:2626 OOps/pstream.c:326
msgid "Failed to load PVOC-EX file"
msgstr ""
-#: Engine/fgens.c:2640 InOut/midirecv.c:416 OOps/midiops.c:377
+#: Engine/fgens.c:2637 InOut/midirecv.c:416 OOps/midiops.c:377
#: OOps/midiops.c:419 OOps/midiops.c:431
msgid "illegal channel number"
msgstr ""
-#: Engine/fgens.c:2658
+#: Engine/fgens.c:2655
msgid "ftable size too small"
msgstr ""
-#: Engine/fgens.c:2734 Opcodes/mp3in.c:79 Opcodes/mp3in.c:218
+#: Engine/fgens.c:2730 Opcodes/mp3in.c:80 Opcodes/mp3in.c:219
msgid "Not enough memory\n"
msgstr ""
-#: Engine/fgens.c:2831
+#: Engine/fgens.c:2873
msgid "gen51: invalid number of p-fields (too few grades)"
msgstr ""
-#: Engine/fgens.c:2871
+#: Engine/fgens.c:2913
msgid "number of channels inconsistent with number of args"
msgstr ""
-#: Engine/fgens.c:3030
+#: Engine/fgens.c:3072
msgid "GEN53: invalid number of gen arguments"
msgstr ""
-#: Engine/fgens.c:3040
+#: Engine/fgens.c:3082
msgid "GEN53: invalid table length"
msgstr ""
-#: Engine/fgens.c:3044
+#: Engine/fgens.c:3086
msgid "GEN53: invalid source table number"
msgstr ""
-#: Engine/fgens.c:3047
+#: Engine/fgens.c:3089
msgid "GEN53: mode must be in the range 0 to 15"
msgstr ""
-#: Engine/fgens.c:3051
+#: Engine/fgens.c:3093
msgid "GEN53: invalid source table length"
msgstr ""
-#: Engine/fgens.c:3056
+#: Engine/fgens.c:3098
msgid "GEN53: invalid window table"
msgstr ""
@@ -887,31 +848,31 @@ msgstr ""
msgid "Instrument %d muted\n"
msgstr ""
-#: Engine/insert.c:103 Engine/insert.c:1249
+#: Engine/insert.c:103 Engine/insert.c:1301
#, c-format
msgid "instr %s expects midi event data, cannot run from score\n"
msgstr ""
-#: Engine/insert.c:106 Engine/insert.c:1252
+#: Engine/insert.c:106 Engine/insert.c:1304
#, c-format
msgid "instr %d expects midi event data, cannot run from score\n"
msgstr ""
-#: Engine/insert.c:115 Engine/insert.c:279 Engine/insert.c:1234
+#: Engine/insert.c:115 Engine/insert.c:279 Engine/insert.c:1286
#, c-format
msgid "cannot allocate last note because it exceeds 100%% of cpu time"
msgstr ""
-#: Engine/insert.c:121 Engine/insert.c:285 Engine/insert.c:1239
+#: Engine/insert.c:121 Engine/insert.c:285 Engine/insert.c:1291
msgid "cannot allocate last note because it exceeds instr maxalloc"
msgstr ""
-#: Engine/insert.c:137 Engine/insert.c:305 Engine/insert.c:1270
+#: Engine/insert.c:137 Engine/insert.c:305 Engine/insert.c:1322
#, c-format
msgid "new alloc for instr %s:\n"
msgstr ""
-#: Engine/insert.c:139 Engine/insert.c:307 Engine/insert.c:1272
+#: Engine/insert.c:139 Engine/insert.c:307 Engine/insert.c:1324
#, c-format
msgid "new alloc for instr %d:\n"
msgstr ""
@@ -926,12 +887,12 @@ msgstr ""
msgid "instr %d uses %d p-fields but is given %d"
msgstr ""
-#: Engine/insert.c:251 Engine/insert.c:463
+#: Engine/insert.c:251 Engine/insert.c:482
#, c-format
msgid "instr %s now active:\n"
msgstr ""
-#: Engine/insert.c:253 Engine/insert.c:465
+#: Engine/insert.c:253 Engine/insert.c:484
#, c-format
msgid "instr %d now active:\n"
msgstr ""
@@ -951,153 +912,153 @@ msgstr ""
msgid "MIDI note overlaps with key %d on same channel"
msgstr ""
-#: Engine/insert.c:566
+#: Engine/insert.c:585
#, c-format
msgid "removed instance of instr %s\n"
msgstr ""
-#: Engine/insert.c:568
+#: Engine/insert.c:587
#, c-format
msgid "removed instance of instr %d\n"
msgstr ""
-#: Engine/insert.c:691
+#: Engine/insert.c:710
msgid "inactive allocs returned to freespace\n"
msgstr ""
-#: Engine/insert.c:716
+#: Engine/insert.c:735
#, c-format
msgid "could not find playing instr %f\n"
msgstr ""
-#: Engine/insert.c:729
+#: Engine/insert.c:748
msgid ""
"\n"
"INIT ERROR: "
msgstr ""
-#: Engine/insert.c:742
+#: Engine/insert.c:761
#, c-format
msgid "INIT ERROR in instr %d (opcode %s): "
msgstr ""
-#: Engine/insert.c:745
+#: Engine/insert.c:764
#, c-format
msgid "INIT ERROR in instr %d (subinstr %d): "
msgstr ""
-#: Engine/insert.c:749
+#: Engine/insert.c:768
#, c-format
msgid "INIT ERROR in instr %d: "
msgstr ""
-#: Engine/insert.c:767
+#: Engine/insert.c:786
msgid ""
"\n"
"PERF ERROR: "
msgstr ""
-#: Engine/insert.c:780
+#: Engine/insert.c:799
#, c-format
msgid "PERF ERROR in instr %d (opcode %s): "
msgstr ""
-#: Engine/insert.c:783
+#: Engine/insert.c:802
#, c-format
msgid "PERF ERROR in instr %d (subinstr %d): "
msgstr ""
-#: Engine/insert.c:787
+#: Engine/insert.c:806
#, c-format
msgid "PERF ERROR in instr %d: "
msgstr ""
-#: Engine/insert.c:792
+#: Engine/insert.c:811
msgid " note aborted\n"
msgstr ""
-#: Engine/insert.c:820
+#: Engine/insert.c:839
msgid "subinstr: number of output args greater than nchnls"
msgstr ""
-#: Engine/insert.c:861
+#: Engine/insert.c:880
msgid "subinstr: too many p-fields"
msgstr ""
-#: Engine/insert.c:920
+#: Engine/insert.c:939
#, c-format
msgid "%s: invalid local ksmps value: %d"
msgstr ""
-#: Engine/insert.c:1040 OOps/bus.c:835 Opcodes/stackops.c:293
+#: Engine/insert.c:1062 OOps/bus.c:835 Opcodes/stackops.c:286
#, c-format
msgid "%s: not initialised"
msgstr "%s: не вÑÑÑÑплено Ñ Ð¸Ð½Ð¸ÑиаÑивой"
-#: Engine/insert.c:1169
+#: Engine/insert.c:1221
#, c-format
msgid "setksmps: invalid ksmps value: %d"
msgstr ""
-#: Engine/insert.c:1225
+#: Engine/insert.c:1277
#, c-format
msgid "schedule event ignored. instr %d undefined\n"
msgstr ""
-#: Engine/insert.c:1303
+#: Engine/insert.c:1355
#, c-format
msgid "instr %s pmax = %d, note pcnt = %d"
msgstr ""
-#: Engine/insert.c:1306
+#: Engine/insert.c:1358
#, c-format
msgid "instr %d pmax = %d, note pcnt = %d"
msgstr ""
-#: Engine/insert.c:1314
+#: Engine/insert.c:1366
#, c-format
msgid "psave beg at %p\n"
msgstr ""
-#: Engine/insert.c:1322
+#: Engine/insert.c:1374
#, c-format
msgid " ending at %p\n"
msgstr ""
-#: Engine/insert.c:1466
+#: Engine/insert.c:1518
msgid "subinstr: not initialised"
msgstr ""
-#: Engine/insert.c:1723
+#: Engine/insert.c:1855
#, c-format
msgid ""
"instr %d allocated at %p\n"
"\tlclbas %p, opds %p\n"
msgstr ""
-#: Engine/insert.c:1740
+#: Engine/insert.c:1872
#, c-format
msgid "op %d (%s) allocated at %p\n"
msgstr ""
-#: Engine/insert.c:1766
+#: Engine/insert.c:1898
msgid "null iopadr"
msgstr ""
-#: Engine/insert.c:1777
+#: Engine/insert.c:1909
msgid "null opadr"
msgstr ""
-#: Engine/insert.c:1834
+#: Engine/insert.c:1966
msgid "inconsistent opds total"
msgstr ""
-#: Engine/insert.c:1879
+#: Engine/insert.c:2011
#, c-format
msgid "Instrument %s is still active"
msgstr ""
-#: Engine/insert.c:1882
+#: Engine/insert.c:2014
#, c-format
msgid "Instrument %d is still active"
msgstr ""
@@ -1131,7 +1092,7 @@ msgstr ""
msgid "multiple string p-fields"
msgstr ""
-#: Engine/linevent.c:273 Engine/rdorch.c:1157
+#: Engine/linevent.c:273 Engine/rdorch.c:1184
msgid "unmatched quotes"
msgstr ""
@@ -1190,297 +1151,292 @@ msgstr ""
msgid "memory allocate failure for %lu"
msgstr ""
-#: Engine/memfiles.c:112
+#: Engine/memfiles.c:113
#, c-format
msgid "cannot load %s\n"
msgstr ""
-#: Engine/memfiles.c:118
+#: Engine/memfiles.c:119
#, c-format
msgid "cannot load %s, or SADIR undefined\n"
msgstr ""
-#: Engine/memfiles.c:130
+#: Engine/memfiles.c:131
#, c-format
msgid "error processing file %s\n"
msgstr ""
-#: Engine/memfiles.c:136 Engine/memfiles.c:319
+#: Engine/memfiles.c:137 Engine/memfiles.c:320
#, c-format
msgid "file %s (%ld bytes) loaded into memory\n"
msgstr ""
-#: Engine/memfiles.c:199
+#: Engine/memfiles.c:200
msgid ""
"PVOCEX_LoadFile(): error:\n"
" "
msgstr ""
-#: Engine/memfiles.c:216
+#: Engine/memfiles.c:217
msgid "Empty or NULL file name"
msgstr ""
-#: Engine/memfiles.c:234
+#: Engine/memfiles.c:235
#, c-format
msgid "unable to open pvocex file %s: %s"
msgstr ""
-#: Engine/memfiles.c:240
+#: Engine/memfiles.c:241
#, c-format
msgid "pvoc-ex file %s is not 32bit floats"
msgstr ""
-#: Engine/memfiles.c:246
+#: Engine/memfiles.c:247
#, c-format
msgid "pvoc-ex file %s not in AMP_FREQ format"
msgstr ""
-#: Engine/memfiles.c:252
+#: Engine/memfiles.c:253
#, c-format
msgid "pvoc-ex file %s is empty!"
msgstr ""
-#: Engine/memfiles.c:282
+#: Engine/memfiles.c:283
#, c-format
msgid "error reading pvoc-ex file %s"
msgstr ""
-#: Engine/memfiles.c:286
+#: Engine/memfiles.c:287
#, c-format
msgid "error reading pvoc-ex file %s after %d frames"
msgstr ""
-#: Engine/memfiles.c:291 Opcodes/pvinterp.c:71 Opcodes/pvinterp.c:174
-#: Opcodes/pvinterp.c:346 Opcodes/ugens9.c:97 Opcodes/vpvoc.c:201
+#: Engine/memfiles.c:292 Opcodes/pvinterp.c:71 Opcodes/pvinterp.c:173
+#: Opcodes/pvinterp.c:344 Opcodes/ugens9.c:97 Opcodes/vpvoc.c:202
#, c-format
msgid "%s's srate = %8.0f, orch's srate = %8.0f"
msgstr ""
-#: Engine/memfiles.c:389
+#: Engine/memfiles.c:390
#, c-format
msgid "csoundLoadSoundFile(): failed to open '%s'"
msgstr ""
-#: Engine/memfiles.c:444
+#: Engine/memfiles.c:445
#, c-format
msgid "csoundLoadSoundFile(): error reading '%s'"
msgstr ""
-#: Engine/memfiles.c:450
+#: Engine/memfiles.c:451
#, c-format
msgid ""
"File '%s' (sr = %d Hz, %d channel(s), %lu sample frames) loaded into memory\n"
msgstr ""
-#: Engine/musmon.c:79
+#: Engine/musmon.c:81
#, c-format
msgid "Elapsed time at %s: real: %.3fs, CPU: %.3fs\n"
msgstr ""
-#: Engine/musmon.c:106
+#: Engine/musmon.c:108
msgid "illegal istartempo value"
msgstr ""
-#: Engine/musmon.c:109
+#: Engine/musmon.c:111
msgid "Beat mode not in force"
msgstr ""
-#: Engine/musmon.c:182 Top/main.c:122
+#: Engine/musmon.c:184 Top/main.c:121
#, c-format
msgid "Csound version %s beta (double samples) %s\n"
msgstr ""
-#: Engine/musmon.c:185 Top/main.c:125
+#: Engine/musmon.c:187 Top/main.c:124
#, c-format
msgid "Csound version %s (double samples) %s\n"
msgstr ""
-#: Engine/musmon.c:190 Top/main.c:114
+#: Engine/musmon.c:192 Top/main.c:113
#, c-format
msgid "Csound version %s beta (float samples) %s\n"
msgstr ""
-#: Engine/musmon.c:193 Top/main.c:117
+#: Engine/musmon.c:195 Top/main.c:116
#, c-format
msgid "Csound version %s (float samples) %s\n"
msgstr ""
-#: Engine/musmon.c:218
+#: Engine/musmon.c:220
msgid "orch now loaded\n"
msgstr ""
-#: Engine/musmon.c:243
+#: Engine/musmon.c:245
msgid "k-period aligned audio buffering\n"
msgstr ""
-#: Engine/musmon.c:259
+#: Engine/musmon.c:261
#, c-format
msgid "audio buffered in %d sample-frame blocks\n"
msgstr ""
-#: Engine/musmon.c:276 Top/main.c:395
-#, c-format
-msgid "cannot reopen %s"
-msgstr ""
-
-#: Engine/musmon.c:287
+#: Engine/musmon.c:283
msgid "using Cscore processing\n"
msgstr ""
-#: Engine/musmon.c:290
+#: Engine/musmon.c:286
msgid "cannot create cscore.out"
msgstr ""
-#: Engine/musmon.c:303
+#: Engine/musmon.c:299
msgid "cannot reopen cscore.out"
msgstr ""
-#: Engine/musmon.c:307 Engine/musmon.c:315
+#: Engine/musmon.c:303
msgid "cannot reopen cscore.srt"
msgstr ""
-#: Engine/musmon.c:309
+#: Engine/musmon.c:305
msgid "sorting cscore.out ..\n"
msgstr ""
-#: Engine/musmon.c:313 Top/main.c:409
+#: Engine/musmon.c:311 Top/main.c:401
msgid "\t... done\n"
msgstr ""
-#: Engine/musmon.c:317
+#: Engine/musmon.c:312
msgid "playing from cscore.srt\n"
msgstr ""
-#: Engine/musmon.c:321 Engine/musmon.c:453 Engine/musmon.c:1021
-#: Engine/musmon.c:1225
+#: Engine/musmon.c:316 Engine/musmon.c:446 Engine/musmon.c:1015
+#: Engine/musmon.c:1216
#, c-format
msgid "SECTION %d:\n"
msgstr ""
-#: Engine/musmon.c:397
+#: Engine/musmon.c:390
msgid "end of score.\t\t overall amps:"
msgstr ""
-#: Engine/musmon.c:408
+#: Engine/musmon.c:401
msgid ""
"\n"
"\t overall samples out of range:"
msgstr ""
-#: Engine/musmon.c:412
+#: Engine/musmon.c:405
#, c-format
msgid ""
"\n"
"%d errors in performance\n"
msgstr ""
-#: Engine/musmon.c:414
+#: Engine/musmon.c:407
msgid "end of performance"
msgstr ""
-#: Engine/musmon.c:428
+#: Engine/musmon.c:421
msgid "no sound written to disk\n"
msgstr ""
-#: Engine/musmon.c:443
+#: Engine/musmon.c:436
#, c-format
msgid "%c\tbeep!\n"
msgstr ""
-#: Engine/musmon.c:509 Engine/musmon.c:555
+#: Engine/musmon.c:502 Engine/musmon.c:548
msgid "\t number of samples out of range:"
msgstr ""
-#: Engine/musmon.c:548
+#: Engine/musmon.c:541
#, c-format
msgid "end of section %d\t sect peak amps:"
msgstr ""
-#: Engine/musmon.c:550
+#: Engine/musmon.c:543
msgid "end of lplay event list\t peak amps:"
msgstr ""
-#: Engine/musmon.c:614 Engine/musmon.c:639
+#: Engine/musmon.c:607 Engine/musmon.c:632
#, c-format
msgid " - note deleted. instr %s undefined"
msgstr ""
-#: Engine/musmon.c:618
+#: Engine/musmon.c:611
#, c-format
msgid "Setting instrument %s %s\n"
msgstr ""
-#: Engine/musmon.c:619 Engine/musmon.c:632
+#: Engine/musmon.c:612 Engine/musmon.c:625
#: Opcodes/fluidOpcodes/fluidOpcodes.c:207
#: Opcodes/fluidOpcodes/fluidOpcodes.c:208
msgid "off"
msgstr ""
-#: Engine/musmon.c:619 Engine/musmon.c:632
+#: Engine/musmon.c:612 Engine/musmon.c:625
#: Opcodes/fluidOpcodes/fluidOpcodes.c:207
#: Opcodes/fluidOpcodes/fluidOpcodes.c:208
msgid "on"
msgstr ""
-#: Engine/musmon.c:627 Engine/musmon.c:666
+#: Engine/musmon.c:620 Engine/musmon.c:659
#, c-format
msgid " - note deleted. instr %d(%d) undefined"
msgstr ""
-#: Engine/musmon.c:631
+#: Engine/musmon.c:624
#, c-format
msgid "Setting instrument %d %s\n"
msgstr ""
-#: Engine/musmon.c:657
+#: Engine/musmon.c:650
#, c-format
msgid " - note deleted. i%d (%s) had %d init errors"
msgstr ""
-#: Engine/musmon.c:687
+#: Engine/musmon.c:680
#, c-format
msgid " - note deleted. i%d had %d init errors"
msgstr ""
-#: Engine/musmon.c:708
+#: Engine/musmon.c:701
#, c-format
msgid "time advanced %5.3f beats by score request\n"
msgstr ""
-#: Engine/musmon.c:725
+#: Engine/musmon.c:719
#, c-format
msgid "\t\t T%7.3f - note deleted. "
msgstr ""
-#: Engine/musmon.c:729
+#: Engine/musmon.c:723
#, c-format
msgid "instr %s had %d init errors\n"
msgstr ""
-#: Engine/musmon.c:731
+#: Engine/musmon.c:725
#, c-format
msgid "instr %d had %d init errors\n"
msgstr ""
-#: Engine/musmon.c:822
+#: Engine/musmon.c:816
msgid "terminating.\n"
msgstr ""
-#: Engine/musmon.c:908
+#: Engine/musmon.c:902
#, c-format
msgid "error in score. illegal opcode %c (ASCII %d)\n"
msgstr ""
-#: Engine/musmon.c:1135
+#: Engine/musmon.c:1129
msgid "insert_score_event(): invalid instrument number or name\n"
msgstr ""
-#: Engine/musmon.c:1155
+#: Engine/musmon.c:1149
#, c-format
msgid "insert_score_event(): unknown opcode: %c\n"
msgstr ""
-#: Engine/musmon.c:1178
+#: Engine/musmon.c:1172
msgid "insert_score_event(): insufficient p-fields\n"
msgstr ""
@@ -1503,350 +1459,402 @@ msgstr ""
msgid "cannot find the specified instrument or opcode"
msgstr ""
-#: Engine/new_orc_parser.c:74 Engine/rdorch.c:488
+#: Engine/new_orc_parser.c:91
+msgid "Unmatched #ifdef\n"
+msgstr ""
+
+#: Engine/otran.c:149 Engine/symbtab.c:413
#, c-format
-msgid "cannot open orch file %s"
+msgid "invalid input type for opcode %s"
+msgstr ""
+
+#: Engine/otran.c:154 Engine/symbtab.c:418
+#, c-format
+msgid "too many input args for opcode %s"
msgstr ""
-#: Engine/otran.c:312 Engine/otran.c:319
+#: Engine/otran.c:169 Engine/symbtab.c:433
+#, c-format
+msgid "too many output args for opcode %s"
+msgstr ""
+
+#: Engine/otran.c:194 Engine/symbtab.c:458
+#, c-format
+msgid "invalid output type for opcode %s"
+msgstr ""
+
+#: Engine/otran.c:325 Engine/otran.c:332
msgid "missing instrument number or name"
msgstr ""
-#: Engine/otran.c:324
+#: Engine/otran.c:337
msgid "illegal instr number"
msgstr ""
-#: Engine/otran.c:374
+#: Engine/otran.c:388
msgid "No opcode name"
msgstr ""
-#: Engine/otran.c:379 Engine/symbtab.c:501
+#: Engine/otran.c:393 Engine/symbtab.c:538
msgid "invalid name for opcode"
msgstr ""
-#: Engine/otran.c:383
+#: Engine/otran.c:397
#, c-format
msgid ""
"opcode declaration error (usage: opcode name, outtypes, intypes) -- opcode %s"
msgstr ""
-#: Engine/otran.c:394 Engine/symbtab.c:511
+#: Engine/otran.c:408 Engine/symbtab.c:548
#, c-format
msgid "cannot redefine %s"
msgstr ""
-#: Engine/otran.c:398 Engine/symbtab.c:516
+#: Engine/otran.c:412 Engine/symbtab.c:553
#, c-format
msgid "WARNING: redefined opcode: %s\n"
msgstr ""
-#: Engine/otran.c:489
+#: Engine/otran.c:503
msgid "string constant used as output"
msgstr ""
-#: Engine/otran.c:520
+#: Engine/otran.c:534
msgid "Missing endin"
msgstr ""
-#: Engine/otran.c:584
+#: Engine/otran.c:599
msgid "perf-pass statements illegal in header blk"
msgstr ""
-#: Engine/otran.c:588
+#: Engine/otran.c:603
#, c-format
msgid "%d syntax errors in orchestra. compilation invalid"
msgstr ""
-#: Engine/otran.c:1238
+#: Engine/otran.c:1257
msgid "bad value for 0dbfs: must be positive."
msgstr ""
-#: Engine/otran.c:1248
+#: Engine/otran.c:1267
#, c-format
msgid "sample rate overrides: esr = %7.4f, ekr = %7.4f, ksmps = %d\n"
msgstr ""
-#: Engine/otran.c:1320
+#: Engine/otran.c:1339
msgid "internal error: string constant outarg"
msgstr ""
-#: Engine/otran.c:1346
+#: Engine/otran.c:1365
#, c-format
msgid "i%d pset args != pmax"
msgstr ""
-#: Engine/otran.c:1409
+#: Engine/otran.c:1428
#, c-format
msgid ""
"sr = %.7g, kr = %.7g, ksmps = %.7g\n"
"error:"
msgstr ""
-#: Engine/otran.c:1442
+#: Engine/otran.c:1461
msgid "header init errors"
msgstr ""
-#: Engine/rdorch.c:166
+#: Engine/rdorch.c:169
msgid "ungetorchar(): buffer overflow"
msgstr ""
-#: Engine/rdorch.c:330
+#: Engine/rdorch.c:348
msgid "Unexpected end of orchestra file"
msgstr ""
-#: Engine/rdorch.c:484
-msgid "orch compiler:\n"
+#: Engine/rdorch.c:431 Engine/sread.c:758
+#, c-format
+msgid "Macro definition for %*s\n"
msgstr ""
-#: Engine/rdorch.c:490
-#, c-format
-msgid "cannot find end of file %s"
+#: Engine/rdorch.c:434
+msgid "Invalid macro name for --omacro"
+msgstr ""
+
+#: Engine/rdorch.c:502
+msgid "orch compiler:\n"
msgstr ""
-#: Engine/rdorch.c:492
+#: Engine/rdorch.c:520
#, c-format
-msgid "ftell error on %s"
+msgid "cannot open orch file %s"
msgstr ""
-#: Engine/rdorch.c:657 Engine/sread.c:1572
+#: Engine/rdorch.c:684 Engine/sread.c:1584
#, c-format
msgid "Macro definition for %s\n"
msgstr ""
-#: Engine/rdorch.c:748
+#: Engine/rdorch.c:716 Engine/sread.c:1607
+msgid "macro error\n"
+msgstr ""
+
+#: Engine/rdorch.c:775
#, c-format
msgid "Cannot open #include'd file %s\n"
msgstr ""
-#: Engine/rdorch.c:797
+#: Engine/rdorch.c:824
msgid "unmatched #ifdef"
msgstr ""
-#: Engine/rdorch.c:808
+#: Engine/rdorch.c:835
msgid "Unmatched #else"
msgstr ""
-#: Engine/rdorch.c:822
+#: Engine/rdorch.c:849
msgid "Unmatched #endif"
msgstr ""
-#: Engine/rdorch.c:875
+#: Engine/rdorch.c:872 Engine/sread.c:1694
+#, c-format
+msgid "macro %s undefined\n"
+msgstr ""
+
+#: Engine/rdorch.c:886 Engine/sread.c:286
+msgid "Undefining undefined macro"
+msgstr ""
+
+#: Engine/rdorch.c:902
msgid "Unexpected # character"
msgstr ""
-#: Engine/rdorch.c:877
+#: Engine/rdorch.c:904
#, c-format
msgid "Unknown # option: '%s'"
msgstr ""
-#: Engine/rdorch.c:903 Engine/sread.c:394
+#: Engine/rdorch.c:928 Engine/sread.c:380
+#, c-format
+msgid "Undefined macro: '%s'"
+msgstr ""
+
+#: Engine/rdorch.c:930 Engine/sread.c:378
msgid "Macro expansion symbol ($) without macro name"
msgstr ""
-#: Engine/rdorch.c:908 Engine/sread.c:400
+#: Engine/rdorch.c:935 Engine/sread.c:384
#, c-format
msgid "$%s matches macro name $%s"
msgstr ""
-#: Engine/rdorch.c:925 Engine/sread.c:417
+#: Engine/rdorch.c:952 Engine/sread.c:401
msgid "Syntax error in macro call"
msgstr ""
-#: Engine/rdorch.c:975
+#: Engine/rdorch.c:967
+#, c-format
+msgid ""
+"Missing argument terminator\n"
+"%.98s"
+msgstr ""
+
+#: Engine/rdorch.c:1002
msgid "Unmatched #ifdef"
msgstr ""
-#: Engine/rdorch.c:977
+#: Engine/rdorch.c:1004
msgid "file too large for ortext space"
msgstr ""
-#: Engine/rdorch.c:984
+#: Engine/rdorch.c:1011
#, c-format
msgid "%d (%d) lines read\n"
msgstr ""
-#: Engine/rdorch.c:1052
+#: Engine/rdorch.c:1079
#, c-format
msgid "LINE %d:"
msgstr ""
-#: Engine/rdorch.c:1071
+#: Engine/rdorch.c:1098
msgid "invalid 'elseif' statement. must have a corresponding 'if'"
msgstr ""
-#: Engine/rdorch.c:1078
+#: Engine/rdorch.c:1105
msgid "'elseif' statement cannot occur after an 'else'"
msgstr ""
-#: Engine/rdorch.c:1134
+#: Engine/rdorch.c:1161
msgid "Unmatched comment"
msgstr ""
-#: Engine/rdorch.c:1198
+#: Engine/rdorch.c:1225
msgid "misplaced comma"
msgstr ""
-#: Engine/rdorch.c:1200 Engine/rdorch.c:1342 Engine/rdorch.c:1440
+#: Engine/rdorch.c:1227 Engine/rdorch.c:1369 Engine/rdorch.c:1467
msgid "unbalanced parens"
msgstr ""
-#: Engine/rdorch.c:1364
+#: Engine/rdorch.c:1391
#, c-format
msgid "illegal character %c"
msgstr ""
-#: Engine/rdorch.c:1377
+#: Engine/rdorch.c:1404
msgid "invalid 'else' statement. must have a corresponding 'if'"
msgstr ""
-#: Engine/rdorch.c:1384
+#: Engine/rdorch.c:1411
msgid "duplicate 'else' statement"
msgstr ""
-#: Engine/rdorch.c:1413
+#: Engine/rdorch.c:1440
msgid "invalid 'endif' statement. must have a corresponding 'if'"
msgstr ""
-#: Engine/rdorch.c:1442
+#: Engine/rdorch.c:1469
msgid "no legal opcode"
msgstr ""
-#: Engine/rdorch.c:1573
+#: Engine/rdorch.c:1600
msgid "illegal opcod from expr anal"
msgstr ""
-#: Engine/rdorch.c:1606 Engine/rdorch.c:1628
+#: Engine/rdorch.c:1633 Engine/rdorch.c:1655
#, c-format
msgid "failed to find %s, output arg '%s' illegal type"
msgstr ""
-#: Engine/rdorch.c:1670
+#: Engine/rdorch.c:1697
#, c-format
msgid "failed to find %s, input arg illegal type"
msgstr ""
-#: Engine/rdorch.c:1684
+#: Engine/rdorch.c:1711
msgid "setksmps is allowed only in user defined opcodes"
msgstr ""
-#: Engine/rdorch.c:1687
+#: Engine/rdorch.c:1714
msgid "multiple uses of setksmps in the same opcode definition"
msgstr ""
-#: Engine/rdorch.c:1710
+#: Engine/rdorch.c:1739
#, c-format
msgid "%s inconsistent with global nchnls (%d); replaced with %s\n"
msgstr ""
-#: Engine/rdorch.c:1740
+#: Engine/rdorch.c:1770
msgid "opcode blks cannot be nested (missing 'endop'?)"
msgstr ""
-#: Engine/rdorch.c:1742
+#: Engine/rdorch.c:1772
msgid "opcode not allowed in instr block"
msgstr ""
-#: Engine/rdorch.c:1751
+#: Engine/rdorch.c:1781
msgid "unmatched endop"
msgstr ""
-#: Engine/rdorch.c:1753
+#: Engine/rdorch.c:1783
msgid "endop not allowed in instr block"
msgstr ""
-#: Engine/rdorch.c:1758
+#: Engine/rdorch.c:1788
msgid "instr not allowed in opcode block"
msgstr ""
-#: Engine/rdorch.c:1761
+#: Engine/rdorch.c:1791
msgid "instr blocks cannot be nested (missing 'endin'?)"
msgstr ""
-#: Engine/rdorch.c:1769
+#: Engine/rdorch.c:1799
msgid "endin not allowed in opcode blk"
msgstr ""
-#: Engine/rdorch.c:1771
+#: Engine/rdorch.c:1801
msgid "unmatched endin"
msgstr ""
-#: Engine/rdorch.c:1781
+#: Engine/rdorch.c:1811
msgid "misplaced opcode"
msgstr ""
-#: Engine/rdorch.c:1787
+#: Engine/rdorch.c:1817
msgid "xout is allowed only in user defined opcodes"
msgstr ""
-#: Engine/rdorch.c:1790
+#: Engine/rdorch.c:1820
msgid "multiple uses of xout in the same opcode definition"
msgstr ""
-#: Engine/rdorch.c:1837
+#: Engine/rdorch.c:1867
msgid "too many input args"
msgstr ""
-#: Engine/rdorch.c:1909
+#: Engine/rdorch.c:1893
+msgid "insufficient required arguments"
+msgstr ""
+
+#: Engine/rdorch.c:1940
#, c-format
-msgid "input arg '%s' used before defined"
+msgid "input arg '%s' used before defined \n"
msgstr ""
-#: Engine/rdorch.c:1956
+#: Engine/rdorch.c:1987
msgid "xin is allowed only in user defined opcodes"
msgstr ""
-#: Engine/rdorch.c:1959
+#: Engine/rdorch.c:1990
msgid "multiple uses of xin in the same opcode definition"
msgstr ""
-#: Engine/rdorch.c:2004
+#: Engine/rdorch.c:2035
msgid "illegal no of output args"
msgstr ""
-#: Engine/rdorch.c:2023
+#: Engine/rdorch.c:2054
#, c-format
msgid "output name previously used, type '%c' must be uniquely defined"
msgstr ""
-#: Engine/rdorch.c:2028
+#: Engine/rdorch.c:2059
#, c-format
msgid "output arg '%s' illegal type"
msgstr ""
-#: Engine/rdorch.c:2069
+#: Engine/rdorch.c:2100
#, c-format
msgid "input arg '%s' of type %s not allowed when expecting %c"
msgstr ""
-#: Engine/rdorch.c:2155
+#: Engine/rdorch.c:2187
msgid "duplicate label"
msgstr ""
-#: Engine/rdorch.c:2177
+#: Engine/rdorch.c:2209
#, c-format
msgid "error line %d. unknown label:\n"
msgstr ""
-#: Engine/rdorch.c:2192 Engine/rdorch.c:2239
+#: Engine/rdorch.c:2222 Engine/rdorch.c:2271
msgid "error: "
msgstr ""
-#: Engine/rdorch.c:2208
+#: Engine/rdorch.c:2239
#, c-format
msgid ", line %d:\n"
msgstr ""
-#: Engine/rdorch.c:2246
+#: Engine/rdorch.c:2278
#, c-format
msgid "called from line %d of macro %s"
msgstr ""
-#: Engine/rdorch.c:2250
+#: Engine/rdorch.c:2282
#, c-format
msgid "in line %d of file input %s"
msgstr ""
-#: Engine/rdscor.c:79
+#: Engine/rdscor.c:80
#, c-format
msgid "ERROR: illegal character %c(%.2x) in scoreline: "
msgstr ""
@@ -1857,7 +1865,7 @@ msgid ""
"\tremainder of line flushed\n"
msgstr ""
-#: Engine/rdscor.c:144
+#: Engine/rdscor.c:146
msgid "ERROR: too many pfields: "
msgstr ""
@@ -1883,349 +1891,316 @@ msgstr ""
msgid " section %d: at position %d%s"
msgstr ""
-#: Engine/sread.c:217
+#: Engine/sread.c:216
msgid "Internal error in print_input_backtrace()"
msgstr ""
-#: Engine/sread.c:219
+#: Engine/sread.c:218
#, c-format
msgid " included from line %d of macro %s%s"
msgstr ""
-#: Engine/sread.c:220
+#: Engine/sread.c:219
#, c-format
msgid " called from line %d of macro %s%s"
msgstr ""
-#: Engine/sread.c:222
+#: Engine/sread.c:221
#, c-format
msgid " in line %d of macro %s%s"
msgstr ""
-#: Engine/sread.c:229
-#, c-format
-msgid " included from line %d of file input %s%s"
-msgstr ""
-
-#: Engine/sread.c:230
-#, c-format
-msgid " called from line %d of file input %s%s"
-msgstr ""
-
-#: Engine/sread.c:232
-#, c-format
-msgid " in line %d of file input %s%s"
-msgstr ""
-
-#: Engine/sread.c:268
+#: Engine/sread.c:256
#, c-format
msgid "Internal error op=%c"
msgstr ""
-#: Engine/sread.c:322
-msgid "ungetscochar(): buffer overflow"
-msgstr ""
-
-#: Engine/sread.c:479
+#: Engine/sread.c:464
msgid "illegal placement of number in [] expression"
msgstr ""
-#: Engine/sread.c:506
+#: Engine/sread.c:491
msgid "illegal placement of operator ~ in [] expression"
msgstr ""
-#: Engine/sread.c:516
+#: Engine/sread.c:501
msgid "illegal placement of operator @ or @@ in [] expression"
msgstr ""
-#: Engine/sread.c:548 Engine/sread.c:562
+#: Engine/sread.c:533 Engine/sread.c:547
#, c-format
msgid "illegal placement of operator %c in [] expression"
msgstr ""
-#: Engine/sread.c:574
+#: Engine/sread.c:559
msgid "illegal placement of '(' in [] expression"
msgstr ""
-#: Engine/sread.c:580
+#: Engine/sread.c:565
msgid "missing operand before ')' in [] expression"
msgstr ""
-#: Engine/sread.c:594
+#: Engine/sread.c:579
msgid "missing operand before closing bracket in []"
msgstr ""
-#: Engine/sread.c:609
+#: Engine/sread.c:594
#, c-format
msgid "illegal character %c(%.2x) in [] expression"
msgstr ""
-#: Engine/sread.c:658
+#: Engine/sread.c:646
#, c-format
msgid "%s Nested LOOP terminated, level:%d\n"
msgstr ""
-#: Engine/sread.c:664
+#: Engine/sread.c:652
#, c-format
msgid "External LOOP terminated, level:%d\n"
msgstr ""
-#: Engine/sread.c:684
+#: Engine/sread.c:696
#, c-format
msgid "%s Nested LOOP section (%d) Level:%d\n"
msgstr ""
-#: Engine/sread.c:689
+#: Engine/sread.c:701
#, c-format
msgid " External LOOP section (%d) Level:%d\n"
msgstr ""
-#: Engine/sread.c:703
+#: Engine/sread.c:715
msgid "Loop terminated\n"
msgstr ""
-#: Engine/sread.c:716
+#: Engine/sread.c:733
#, c-format
msgid "Repeat section (%d)\n"
msgstr ""
-#: Engine/sread.c:719
+#: Engine/sread.c:736
msgid "Repeat section\n"
msgstr ""
-#: Engine/sread.c:744
+#: Engine/sread.c:761
msgid "Invalid macro name for --smacro"
msgstr ""
-#: Engine/sread.c:831
+#: Engine/sread.c:865
#, c-format
msgid "Clockbase = %f\n"
msgstr ""
-#: Engine/sread.c:898
+#: Engine/sread.c:934
msgid "Loops are nested too deeply"
msgstr ""
-#: Engine/sread.c:901
-msgid "Loop cannot start inside of a macro"
-msgstr ""
-
-#: Engine/sread.c:920
+#: Engine/sread.c:948
msgid "{: invalid repeat count"
msgstr ""
-#: Engine/sread.c:929
+#: Engine/sread.c:957
#, c-format
msgid "%s Nested LOOP=%d Level:%d\n"
msgstr ""
-#: Engine/sread.c:935
+#: Engine/sread.c:963
#, c-format
msgid "External LOOP=%d Level:%d\n"
msgstr ""
-#: Engine/sread.c:1004
-msgid "Repeat cannot start inside of a macro (ignored)"
-msgstr ""
-
-#: Engine/sread.c:1019
+#: Engine/sread.c:1047
msgid "r: invalid repeat count"
msgstr ""
-#: Engine/sread.c:1021
+#: Engine/sread.c:1049
#, c-format
msgid "Repeats=%d\n"
msgstr ""
-#: Engine/sread.c:1063
+#: Engine/sread.c:1093
#, c-format
msgid "Named section >>>%s<<<\n"
msgstr ""
-#: Engine/sread.c:1079
+#: Engine/sread.c:1108
#, c-format
msgid "%d: File %s position %ld\n"
msgstr ""
-#: Engine/sread.c:1085
-#, c-format
-msgid "Ignoring name %s not in file\n"
-msgstr ""
-
-#: Engine/sread.c:1110
+#: Engine/sread.c:1133
#, c-format
msgid "Name %s not found"
msgstr ""
-#: Engine/sread.c:1112
+#: Engine/sread.c:1135
#, c-format
msgid "Duplicate %d: %s (%s,%ld)\n"
msgstr ""
-#: Engine/sread.c:1129
-#, c-format
-msgid "cannot open input file %s"
-msgstr ""
-
-#: Engine/sread.c:1149
+#: Engine/sread.c:1164
#, c-format
msgid "Warp_factor = %f\n"
msgstr ""
-#: Engine/sread.c:1174
+#: Engine/sread.c:1189
msgid "sread is confused on legal opcodes\n"
msgstr ""
-#: Engine/sread.c:1236
+#: Engine/sread.c:1251
msgid "No previous event for ^"
msgstr ""
-#: Engine/sread.c:1241
+#: Engine/sread.c:1256
#, c-format
msgid "illegal space following %s, zero substituted"
msgstr ""
-#: Engine/sread.c:1271
+#: Engine/sread.c:1286
#, c-format
msgid "ignoring '%s' in '%c' event"
msgstr ""
-#: Engine/sread.c:1274
+#: Engine/sread.c:1289
msgid "! invalid in p1, p2, or p3"
msgstr ""
-#: Engine/sread.c:1275 Engine/sread.c:1280 Engine/sread.c:1730
-#: Engine/sread.c:1753 Engine/sread.c:1767
+#: Engine/sread.c:1290 Engine/sread.c:1295 Engine/sread.c:1738
+#: Engine/sread.c:1761 Engine/sread.c:1775
msgid " remainder of line flushed\n"
msgstr ""
-#: Engine/sread.c:1279
+#: Engine/sread.c:1294
#, c-format
msgid "illegal character after !: '%c'"
msgstr ""
-#: Engine/sread.c:1358
+#: Engine/sread.c:1373
#, c-format
msgid "WARNING: instr %s not found, assuming insno = -1\n"
msgstr ""
-#: Engine/sread.c:1378
+#: Engine/sread.c:1393
msgid "sread: illegal use of carry, 0 substituted\n"
msgstr ""
-#: Engine/sread.c:1526
+#: Engine/sread.c:1539
msgid "Improper \\"
msgstr ""
-#: Engine/sread.c:1558
+#: Engine/sread.c:1570
msgid "Not #define"
msgstr ""
-#: Engine/sread.c:1620
+#: Engine/sread.c:1630
#, c-format
msgid "Macro %s with %d arguments defined\n"
msgstr ""
-#: Engine/sread.c:1631
+#: Engine/sread.c:1642
msgid "Not #include"
msgstr ""
-#: Engine/sread.c:1662
+#: Engine/sread.c:1671
#, c-format
msgid "Cannot open #include'd file %s"
msgstr ""
-#: Engine/sread.c:1673
+#: Engine/sread.c:1681
msgid "Not #undef"
msgstr ""
-#: Engine/sread.c:1692
+#: Engine/sread.c:1700
msgid "unknown # option"
msgstr ""
-#: Engine/sread.c:1729
+#: Engine/sread.c:1737
#, c-format
msgid "illegal opcode %c"
msgstr ""
-#: Engine/sread.c:1752
+#: Engine/sread.c:1760
#, c-format
msgid "unexpected char %c"
msgstr ""
-#: Engine/sread.c:1766
+#: Engine/sread.c:1774
msgid "illegally placed string"
msgstr ""
-#: Engine/sread.c:1773
+#: Engine/sread.c:1781
msgid "unmatched quote"
msgstr ""
-#: Engine/sread.c:1817
+#: Engine/sread.c:1825
msgid "sread: illegal number format: "
msgstr ""
-#: Engine/sread.c:1823
+#: Engine/sread.c:1831
msgid " zero substituted.\n"
msgstr ""
-#: Engine/swrite.c:123
+#: Engine/swrite.c:123 Engine/swritestr.c:134
#, c-format
msgid "swrite: unexpected opcode, section %d line %d\n"
msgstr ""
-#: Engine/swrite.c:209 Engine/swrite.c:249
+#: Engine/swrite.c:209 Engine/swrite.c:249 Engine/swritestr.c:220
+#: Engine/swritestr.c:260
#, c-format
msgid "swrite: output, sect%d line%d p%d makes illegal reference to "
msgstr ""
-#: Engine/swrite.c:216 Engine/swrite.c:255
+#: Engine/swrite.c:216 Engine/swrite.c:255 Engine/swritestr.c:227
+#: Engine/swritestr.c:266
msgid " Zero substituted\n"
msgstr ""
-#: Engine/swrite.c:313
+#: Engine/swrite.c:313 Engine/swritestr.c:324
#, c-format
msgid "swrite: output, sect%d line%d p%d has illegal ramp symbol\n"
msgstr ""
-#: Engine/swrite.c:317
+#: Engine/swrite.c:317 Engine/swritestr.c:328
#, c-format
msgid ""
"swrite: output, sect%d line%d p%d ramp has illegal forward or backward ref\n"
msgstr ""
-#: Engine/swrite.c:380 Engine/swrite.c:445
+#: Engine/swrite.c:380 Engine/swrite.c:445 Engine/swritestr.c:391
+#: Engine/swritestr.c:456
#, c-format
msgid "swrite: output, sect%d line%d p%d has illegal expramp symbol\n"
msgstr ""
-#: Engine/swrite.c:385 Engine/swrite.c:450
+#: Engine/swrite.c:385 Engine/swrite.c:450 Engine/swritestr.c:396
+#: Engine/swritestr.c:461
#, c-format
msgid ""
"swrite: output, sect%d line%d p%d expramp has illegal forward or backward "
"ref\n"
msgstr ""
-#: Engine/swrite.c:466
+#: Engine/swrite.c:466 Engine/swritestr.c:477
#, c-format
msgid "swrite: output, sect%d line%d p%d has illegally terminated string "
msgstr ""
-#: Engine/swrite.c:514
+#: Engine/swrite.c:514 Engine/swritestr.c:529
#, c-format
msgid "swrite: output, sect%d line%d p%d has illegal number "
msgstr ""
-#: Engine/swrite.c:521
+#: Engine/swrite.c:521 Engine/swritestr.c:536
msgid " String truncated\n"
msgstr ""
-#: Engine/symbtab.c:202
+#: Engine/symbtab.c:208
#, c-format
msgid "Type confusion for %s (%d,%d), replacing\n"
msgstr ""
-#: Engine/symbtab.c:333
+#: Engine/symbtab.c:345
#, c-format
msgid "Unknown word type for %s on line %d\n"
msgstr ""
@@ -2246,6 +2221,14 @@ msgstr ""
msgid "twarp: t segments exceed twarp array\n"
msgstr ""
+#: InOut/cmidi.c:233
+msgid "CoreMIDI real time MIDI plugin for Csound\n"
+msgstr ""
+
+#: InOut/cmidi.c:247
+msgid "rtmidi: CoreMIDI module enabled\n"
+msgstr ""
+
#: InOut/libsnd.c:486
msgid "error: no input file name"
msgstr ""
@@ -2269,54 +2252,69 @@ msgstr ""
msgid "audio_in %s has %d chnls, orch %d chnls_i"
msgstr ""
-#: InOut/libsnd.c:573
+#: InOut/libsnd.c:574
+#, c-format
+msgid "reading %d sample blks of %d-bit floats from %s \n"
+msgstr ""
+
+#: InOut/libsnd.c:578
#, c-format
msgid "reading %d-byte blks of %s from %s (%s)\n"
msgstr ""
-#: InOut/libsnd.c:608
+#: InOut/libsnd.c:614
msgid "Output file type changed to IRCAM for use in pipe\n"
msgstr ""
-#: InOut/libsnd.c:628
+#: InOut/libsnd.c:634
msgid "Failed to initialise real time audio output"
msgstr ""
-#: InOut/libsnd.c:669 InOut/libsnd.c:673
+#: InOut/libsnd.c:675 InOut/libsnd.c:679
#, c-format
msgid "sfinit: cannot open %s"
msgstr ""
-#: InOut/libsnd.c:733 util/srconv.c:485
+#: InOut/libsnd.c:741
+#, c-format
+msgid "writing %d sample blks of %d-bit floats to %s \n"
+msgstr ""
+
+#: InOut/libsnd.c:744 util/srconv.c:484
#, c-format
msgid "writing %d-byte blks of %s to %s"
msgstr ""
-#: InOut/libsnd.c:740 InOut/libsnd.c:810
+#: InOut/libsnd.c:749 InOut/libsnd.c:824
msgid " (raw)\n"
msgstr ""
-#: InOut/libsnd.c:803
+#: InOut/libsnd.c:815
+#, c-format
+msgid "%ld %d sample blks of %d-bit floats written to %s\n"
+msgstr ""
+
+#: InOut/libsnd.c:820
#, c-format
-msgid "%ld %d-byte soundblks of %s written to %s"
+msgid "%ld %d sample blks of %s written to %s"
msgstr ""
-#: InOut/libsnd.c:822
+#: InOut/libsnd.c:837
#, c-format
msgid "soundfile write returned bytecount of %d, not %d"
msgstr ""
-#: InOut/libsnd.c:825
+#: InOut/libsnd.c:840
msgid ""
"(disk may be full...\n"
" closing the file ...)"
msgstr ""
-#: InOut/libsnd.c:828 util/dnoise.c:1192
+#: InOut/libsnd.c:843 util/dnoise.c:1177
msgid "\t... closed\n"
msgstr ""
-#: InOut/libsnd.c:834
+#: InOut/libsnd.c:849
msgid "not writing to sound disk\n"
msgstr ""
@@ -2716,20 +2714,20 @@ msgstr ""
msgid "Error closing MIDI out device: %d (%s)"
msgstr ""
-#: InOut/midisend.c:171
+#: InOut/midisend.c:170
msgid " *** no callback for opening MIDI output"
msgstr ""
-#: InOut/midisend.c:173
+#: InOut/midisend.c:172
msgid " *** no callback for writing MIDI data"
msgstr ""
-#: InOut/midisend.c:179
+#: InOut/midisend.c:178
#, c-format
msgid " *** error opening MIDI out device: %d (%s)"
msgstr ""
-#: InOut/midisend.c:190
+#: InOut/midisend.c:189
#, c-format
msgid " *** error opening MIDI out file '%s'"
msgstr ""
@@ -2983,7 +2981,7 @@ msgstr ""
msgid "Opened MIDI output device file '%s'\n"
msgstr ""
-#: InOut/rtalsa.c:1101 InOut/rtcoreaudio.c:64 InOut/rtcoreaudio.c:74
+#: InOut/rtalsa.c:1101 InOut/rtcoreaudio.c:71 InOut/rtcoreaudio.c:81
msgid "warning... could not create global var\n"
msgstr ""
@@ -3007,64 +3005,82 @@ msgstr ""
msgid "rtmidi: devfile module enabled\n"
msgstr ""
-#: InOut/rtcoreaudio.c:83
+#: InOut/rtauhal.c:163
+#, c-format
+msgid "selected input device: %s \n"
+msgstr ""
+
+#: InOut/rtauhal.c:166
+#, c-format
+msgid "selected output device: %s \n"
+msgstr ""
+
+#: InOut/rtauhal.c:524
+msgid "AuHAL module: device closed\n"
+msgstr ""
+
+#: InOut/rtauhal.c:541
+msgid "rtaudio: coreaaudio-AuHAL module enabled\n"
+msgstr ""
+
+#: InOut/rtcoreaudio.c:90
msgid ""
"CoreAudio real-time audio module for Csound\n"
"by Victor Lazzarini\n"
msgstr ""
-#: InOut/rtcoreaudio.c:105
+#: InOut/rtcoreaudio.c:112
msgid "rtaudio: CoreAudio module enabled\n"
msgstr ""
-#: InOut/rtcoreaudio.c:254
+#: InOut/rtcoreaudio.c:261
#, c-format
msgid "selected device: %u \n"
msgstr ""
-#: InOut/rtcoreaudio.c:263
+#: InOut/rtcoreaudio.c:270
#, c-format
msgid "CoreAudio module: opening %s \n"
msgstr ""
-#: InOut/rtcoreaudio.c:297
+#: InOut/rtcoreaudio.c:304
msgid " *** CoreAudio: open: could not set buffer size\n"
msgstr ""
-#: InOut/rtcoreaudio.c:342
+#: InOut/rtcoreaudio.c:349
#, c-format
msgid " *** CoreAudio: open: could not set device parameter sr: %d \n"
msgstr ""
-#: InOut/rtcoreaudio.c:344
+#: InOut/rtcoreaudio.c:351
#, c-format
msgid ""
" *** CoreAudio: current device sampling rate is:%d \n"
" try setting the above value in your csound orchestra \n"
msgstr ""
-#: InOut/rtcoreaudio.c:353
+#: InOut/rtcoreaudio.c:360
#, c-format
msgid "CoreAudio module: sr set to %d with %d audio channels \n"
msgstr ""
-#: InOut/rtcoreaudio.c:374 InOut/rtcoreaudio.c:387 InOut/rtcoreaudio.c:432
-#: InOut/rtcoreaudio.c:452
+#: InOut/rtcoreaudio.c:381 InOut/rtcoreaudio.c:394 InOut/rtcoreaudio.c:439
+#: InOut/rtcoreaudio.c:459
msgid " *** CoreAudio: open: memory allocation failure\n"
msgstr ""
-#: InOut/rtcoreaudio.c:414
+#: InOut/rtcoreaudio.c:421
#, c-format
msgid ""
"CoreAudio module: device open with %d buffers of %d frames\n"
"==========================================================\n"
msgstr ""
-#: InOut/rtcoreaudio.c:552
+#: InOut/rtcoreaudio.c:559
msgid "coreaudio module: closing device...\n"
msgstr ""
-#: InOut/rtcoreaudio.c:566
+#: InOut/rtcoreaudio.c:573
msgid "coreaudio module: device closed\n"
msgstr ""
@@ -3466,294 +3482,12 @@ msgstr ""
msgid "rtaudio: WinMM module enabled\n"
msgstr ""
-#: InOut/virtual_keyboard/virtual_keyboard.cpp:435
-msgid "virtual_keyboard.cpp: error allocating FLTK flags"
-msgstr ""
-
-#: InOut/virtual_keyboard/virtual_keyboard.cpp:443 InOut/winFLTK.c:125
-#: InOut/winFLTK.c:139
-#, c-format
-msgid "Error registering opcode '%s'"
-msgstr ""
-
-#: InOut/widgets.cpp:1081
-msgid ""
-"Invalid snapshot. Perhaps you modified orchestra widget code after you saved "
-"the snapshot bank."
-msgstr ""
-
-#: InOut/widgets.cpp:1226
-msgid "No name for FLbutbank"
-msgstr ""
-
-#: InOut/widgets.cpp:1466
-msgid "FLsetsnap: invalid table"
-msgstr ""
-
-#: InOut/widgets.cpp:1504
-msgid ""
-"Saving could overwrite the old file.\n"
-"Are you sure to save ?"
-msgstr ""
-
-#: InOut/widgets.cpp:1516
-msgid ""
-"Saving could overwrite the old file.\n"
-"Are you sure you want to save ?"
-msgstr ""
-
-#: InOut/widgets.cpp:1518
-msgid "No"
-msgstr ""
-
-#: InOut/widgets.cpp:1518
-msgid "Yes"
-msgstr ""
-
-#: InOut/widgets.cpp:1527
-msgid "FLsavesnap: cannot open file"
-msgstr ""
-
-#: InOut/widgets.cpp:1580
-msgid "FLloadsnap: cannot open file"
-msgstr ""
-
-#: InOut/widgets.cpp:1625
-msgid ""
-"unmatched widget, probably due to a modified orchestra. Modifying an "
-"orchestra makes it incompatible with old snapshot files"
-msgstr ""
-
-#: InOut/widgets.cpp:1994
-msgid "end of widget thread\n"
-msgstr ""
-
-#: InOut/widgets.cpp:2020
-msgid "FLrun was already called"
-msgstr ""
-
-#: InOut/widgets.cpp:2023
-msgid "FL_run: memory allocation failure"
-msgstr ""
-
-#: InOut/widgets.cpp:2125 InOut/widgets.cpp:2145
-msgid "Error: Unable to fork process\n"
-msgstr ""
-
-#: InOut/widgets.cpp:2545
-msgid "FLpanel_end: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2548
-msgid ""
-"FLpanel_end: invalid stack count: verify FLpanel/FLpanel_end count and "
-"placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2573 InOut/widgets.cpp:2604
-msgid "FLscroll_end: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2576
-msgid ""
-"FLscroll_end: invalid stack count: verify FLscroll/FLscroll_end count and "
-"placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2607
-msgid ""
-"FLtabs_end: invalid stack count: verify FLtabs/FLtabs_end count and placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2651
-msgid "FLgroup_end: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2654
-msgid ""
-"FLgroup_end: invalid stack count: verify FLgroup/FLgroup_end count and "
-"placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2684
-msgid "FLpack_end: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2687
-msgid ""
-"FLpack_end: invalid stack count: verify FLpack/FLpack_end count and placement"
-msgstr ""
-
-#: InOut/widgets.cpp:2840
-msgid "FLvalue cannot be set by FLsetVal.\n"
-msgstr ""
-
-#: InOut/widgets.cpp:2857
-#, c-format
-msgid "(fl_setWidgetValuei): not fully implemented yet; exp=%d"
-msgstr ""
-
-#: InOut/widgets.cpp:2876
-msgid "FLvalue cannot be set by FLsetVal\n"
-msgstr ""
-
-#: InOut/widgets.cpp:2893
-#, c-format
-msgid "(fl_setWidgetValue_set): not fully implemented yet; exp=%d"
-msgstr ""
-
-#: InOut/widgets.cpp:3242 InOut/widgets.cpp:4648
-msgid "FLslider exponential, using non-labeled slider"
-msgstr ""
-
-#: InOut/widgets.cpp:3264
-msgid "FLslider: invalid slider type"
-msgstr ""
-
-#: InOut/widgets.cpp:3276 InOut/widgets.cpp:4072
-msgid "FLslider: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:3337 InOut/widgets.cpp:4399 InOut/widgets.cpp:4610
-#: InOut/widgets.cpp:4787
-msgid "invalid ZAK space allocation"
-msgstr ""
-
-#: InOut/widgets.cpp:3451
-msgid "FLslidBnk: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:3548 InOut/widgets.cpp:3581
-msgid "FLjoy X axe: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:3675
-msgid "FLknob: invalid knob type"
-msgstr ""
-
-#: InOut/widgets.cpp:3690
-msgid "FLknob: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:3790 InOut/widgets.cpp:3912
-#, c-format
-msgid "FLbutton \"%s\" ignoring snapshot capture retrieve"
-msgstr ""
-
-#: InOut/widgets.cpp:3831
-msgid "FLbutton: invalid button type"
-msgstr ""
-
-#: InOut/widgets.cpp:3863
-msgid "FLcloseButton: invalid stack pointer: verify its placement"
-msgstr ""
-
-#: InOut/widgets.cpp:3882
-#, c-format
-msgid "Command Found: %s\n"
-msgstr ""
-
-#: InOut/widgets.cpp:3954
-msgid "FLbuttonBank: invalid button type"
-msgstr ""
-
-#: InOut/widgets.cpp:3992
-#, c-format
-msgid "FLcount \"%s\" ignoring snapshot capture retrieve"
-msgstr ""
-
-#: InOut/widgets.cpp:4059
-msgid "FLroller: invalid roller type"
-msgstr ""
-
-#: InOut/widgets.cpp:4254
-msgid "FLhvsBox: a square area must be delimited by 2 lines at least"
-msgstr ""
-
-#: InOut/widgets.cpp:4302
-msgid "FLkeyIn: invalid table number"
-msgstr ""
-
-#: InOut/widgets.cpp:4305
-msgid "FLkeyIn: table too short!"
-msgstr ""
-
-#: InOut/widgets.cpp:4522
-msgid "FLvslidBnk: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:4698 InOut/widgets.cpp:4875
-msgid "FLsliderBank: zero is illegal in exponential operations"
-msgstr ""
-
-#: InOut/widgets.cpp:4825
-msgid "FLslidBnk2: FLslider exponential, using non-labeled slider"
-msgstr ""
-
-#: InOut/widgets.cpp:4955 InOut/widgets.cpp:5018
-msgid "FLsldBnkSet: invalid table number"
-msgstr ""
-
-#: InOut/widgets.cpp:4959 InOut/widgets.cpp:5022
-msgid "FLslidBnkSet: table too short!"
-msgstr ""
-
-#: InOut/widgets.cpp:4967 InOut/widgets.cpp:5031
-msgid "FLsldBnkSet: invalid outable number"
-msgstr ""
-
-#: InOut/widgets.cpp:4972 InOut/widgets.cpp:5037
-msgid "FLslidBnkSet: too many sliders to reset!"
-msgstr ""
-
-#: InOut/widgets.cpp:4995
-msgid "FLslidBnkSet: function mapping not available"
-msgstr ""
-
-#: InOut/widgets.cpp:5064 InOut/widgets.cpp:5149 InOut/widgets.cpp:5236
-msgid ""
-"FLslidBnk2Setk: value out of range: function mapping requires a 0 to 1 range "
-"for input"
-msgstr ""
-
-#: InOut/widgets.cpp:5093
-msgid "FLsldBnkSetk: invalid table number"
-msgstr ""
-
-#: InOut/widgets.cpp:5097 InOut/widgets.cpp:5183
-msgid "FLslidBnkSetk: table too short!"
-msgstr ""
-
-#: InOut/widgets.cpp:5105
-msgid "FLsldBnkSetk: invalid outable number"
-msgstr ""
-
-#: InOut/widgets.cpp:5111 InOut/widgets.cpp:5197
-msgid "FLslidBnkSetk: too many sliders to reset!"
-msgstr ""
-
-#: InOut/widgets.cpp:5179
-msgid "FLslidBnkSetk: invalid table number"
-msgstr ""
-
-#: InOut/widgets.cpp:5191
-msgid "FLslidBnkSetk: invalid outable number"
-msgstr ""
-
-#: InOut/widgets.cpp:5268
-msgid "FLxyin: none of X limits can be zero in exponential mode!"
-msgstr ""
-
-#: InOut/widgets.cpp:5294
-msgid "FLxyin: none of Y limits can be zero in exponential mode!"
-msgstr ""
-
#: InOut/winascii.c:75
#, c-format
msgid "%s\t%ld points, scalemax %5.3f\n"
msgstr ""
-#: InOut/windin.c:46 Opcodes/pitch.c:82 Opcodes/spectra.c:76
+#: InOut/windin.c:46 Opcodes/pitch.c:83 Opcodes/spectra.c:78
msgid "illegal iprd"
msgstr ""
@@ -3796,47 +3530,61 @@ msgstr ""
msgid "widgets.cpp: error allocating FLTK flags"
msgstr ""
-#: OOps/aops.c:95 OOps/aops.c:119
+#: InOut/winFLTK.c:124 InOut/winFLTK.c:137
+#: InOut/virtual_keyboard/virtual_keyboard.cpp:443
+#, c-format
+msgid "Error registering opcode '%s'"
+msgstr ""
+
+#: InOut/virtual_keyboard/virtual_keyboard.cpp:435
+msgid "virtual_keyboard.cpp: error allocating FLTK flags"
+msgstr ""
+
+#: OOps/aops.c:120 OOps/aops.c:144
#, c-format
msgid "Cannot be more In arguments than Out in init (%d,%d)"
msgstr ""
-#: OOps/aops.c:175 OOps/aops.c:194
+#: OOps/aops.c:200 OOps/aops.c:219
#, c-format
msgid "Index %d out of range [0,%d] in t[]\n"
msgstr ""
-#: OOps/aops.c:184
+#: OOps/aops.c:209
#, fuzzy
-msgid "Vector notinitialised\n"
+msgid "Vector not initialised\n"
msgstr "%s: не вÑÑÑÑплено Ñ Ð¸Ð½Ð¸ÑиаÑивой"
-#: OOps/aops.c:686
+#: OOps/aops.c:711
msgid "non-looping sample"
msgstr ""
-#: OOps/aops.c:828 OOps/aops.c:856
+#: OOps/aops.c:853 OOps/aops.c:881
#, c-format
msgid "No tuning table %d"
msgstr ""
-#: OOps/aops.c:901 OOps/aops.c:939
+#: OOps/aops.c:926 OOps/aops.c:964
msgid "cpstun: invalid table"
msgstr ""
-#: OOps/aops.c:1189
+#: OOps/aops.c:1214
msgid "Input and output argument count differs in inch"
msgstr ""
-#: OOps/aops.c:1193
+#: OOps/aops.c:1218
#, c-format
msgid "Input channel %d too large; ignored"
msgstr ""
-#: OOps/aops.c:1667
+#: OOps/aops.c:1698
msgid "k-rate invalue ChannelName cannot start with $"
msgstr ""
+#: OOps/aops.c:1835
+msgid "Unknown functuon called"
+msgstr ""
+
#: OOps/bus.c:313 OOps/bus.c:345
msgid "chani: invalid index"
msgstr ""
@@ -4119,7 +3867,7 @@ msgstr ""
msgid "dispfft: not initialised"
msgstr ""
-#: OOps/disprep.c:435 Opcodes/spectra.c:516
+#: OOps/disprep.c:435 Opcodes/spectra.c:518
msgid "illegal iperiod"
msgstr ""
@@ -4183,15 +3931,15 @@ msgstr ""
msgid " *** fftlib.c: internal error: invalid FFT size: %d"
msgstr ""
-#: OOps/goto_ops.c:92
+#: OOps/goto_ops.c:93
msgid "negative time period"
msgstr ""
-#: OOps/goto_ops.c:182
+#: OOps/goto_ops.c:186
msgid "turnoff2: invalid instrument number"
msgstr ""
-#: OOps/goto_ops.c:187
+#: OOps/goto_ops.c:191
msgid "turnoff2: invalid mode parameter"
msgstr ""
@@ -4208,7 +3956,7 @@ msgid "cpstabm: invalid modulator table"
msgstr ""
#: OOps/midiops.c:304 OOps/midiops.c:314 OOps/midiops.c:334 OOps/midiops.c:344
-#: OOps/midiops.c:421 OOps/midiops.c:435 Opcodes/gab/sliderTable.c:563
+#: OOps/midiops.c:421 OOps/midiops.c:435 Opcodes/gab/sliderTable.c:567
#: Opcodes/midiops2.c:56 Opcodes/midiops2.c:73 Opcodes/midiops2.c:111
#: Opcodes/midiops2.c:145 Opcodes/midiops2.c:206 Opcodes/midiops2.c:237
#: Opcodes/midiops2.c:298 Opcodes/midiops2.c:317 Opcodes/midiops2.c:357
@@ -4224,7 +3972,7 @@ msgstr ""
msgid "illegal mrtmsg argument"
msgstr ""
-#: OOps/midiout.c:383
+#: OOps/midiout.c:389
#, c-format
msgid "out contr14 msb:%x lsb:%x\n"
msgstr ""
@@ -4686,148 +4434,148 @@ msgstr ""
msgid "Unknown window type; replaced by rectangular\n"
msgstr ""
-#: OOps/pvsanal.c:1025
+#: OOps/pvsanal.c:1027
msgid "pvsynth: Not Initialised.\n"
msgstr ""
-#: OOps/remote.c:100
+#: OOps/remote.c:103
msgid "insufficient memory to initialise remote globals."
msgstr ""
-#: OOps/remote.c:109
+#: OOps/remote.c:112
msgid "insufficient memory to initialise outgoing socket table."
msgstr ""
-#: OOps/remote.c:116
+#: OOps/remote.c:119
msgid "insufficient memory to initialise incoming socket table."
msgstr ""
-#: OOps/remote.c:124
+#: OOps/remote.c:127
msgid "insufficient memory to initialise insrfd_list."
msgstr ""
-#: OOps/remote.c:132
+#: OOps/remote.c:135
msgid "insufficient memory to initialise chnrfd_list."
msgstr ""
-#: OOps/remote.c:139
+#: OOps/remote.c:142
msgid "insufficient memory to initialise insrfd table."
msgstr ""
-#: OOps/remote.c:146
+#: OOps/remote.c:149
msgid "insufficient memory to initialise chnrfd table."
msgstr ""
-#: OOps/remote.c:153
+#: OOps/remote.c:156
msgid "insufficient memory to initialise local ip address."
msgstr ""
-#: OOps/remote.c:161
+#: OOps/remote.c:164
msgid "unable to get local ip address."
msgstr ""
-#: OOps/remote.c:222
+#: OOps/remote.c:225
msgid "could not open remote port"
msgstr ""
-#: OOps/remote.c:237
+#: OOps/remote.c:240
msgid "---> Could not connect \n"
msgstr "---> Ðе Ñмогл ÑоединиÑÑÑÑ \n"
-#: OOps/remote.c:241
+#: OOps/remote.c:244
msgid "---> Failed all attempts to connect. \n"
msgstr ""
-#: OOps/remote.c:244
+#: OOps/remote.c:247
msgid "---> Connected. \n"
msgstr ""
-#: OOps/remote.c:258 Opcodes/socksend.c:232
+#: OOps/remote.c:261 Opcodes/socksend.c:305
msgid "write to socket failed"
msgstr ""
-#: OOps/remote.c:278
+#: OOps/remote.c:281
msgid "creating socket\n"
msgstr ""
-#: OOps/remote.c:280
+#: OOps/remote.c:283
msgid "created socket \n"
msgstr ""
-#: OOps/remote.c:292
+#: OOps/remote.c:295
msgid "setting socket option to reuse the addresse \n"
msgstr ""
-#: OOps/remote.c:309 Opcodes/sockrecv.c:133 Opcodes/sockrecv.c:223
-#: Opcodes/socksend.c:211
+#: OOps/remote.c:312 Opcodes/sockrecv.c:141 Opcodes/sockrecv.c:237
+#: Opcodes/socksend.c:284
msgid "bind failed"
msgstr ""
-#: OOps/remote.c:313 Opcodes/socksend.c:216
+#: OOps/remote.c:316 Opcodes/socksend.c:289
msgid "listen failed"
msgstr ""
-#: OOps/remote.c:318 Opcodes/socksend.c:222
+#: OOps/remote.c:321 Opcodes/socksend.c:295
msgid "accept failed"
msgstr ""
-#: OOps/remote.c:321
+#: OOps/remote.c:324
#, c-format
msgid "accepted, conn=%d \n"
msgstr ""
-#: OOps/remote.c:353 OOps/remote.c:374 OOps/remote.c:417 OOps/remote.c:449
-#: OOps/remote.c:489
+#: OOps/remote.c:356 OOps/remote.c:377 OOps/remote.c:420 OOps/remote.c:452
+#: OOps/remote.c:492
msgid "failed to initialise remote globals."
msgstr ""
-#: OOps/remote.c:378 OOps/remote.c:421
+#: OOps/remote.c:381 OOps/remote.c:424
msgid "missing instr nos"
msgstr ""
-#: OOps/remote.c:390 OOps/remote.c:430
+#: OOps/remote.c:393 OOps/remote.c:433
msgid "illegal instr no"
msgstr ""
-#: OOps/remote.c:393
+#: OOps/remote.c:396
msgid "insno already remote"
msgstr ""
-#: OOps/remote.c:403 OOps/remote.c:474
+#: OOps/remote.c:406 OOps/remote.c:477
msgid "Failed to open port to listen"
msgstr ""
-#: OOps/remote.c:423
+#: OOps/remote.c:426
#, c-format
msgid "*** str1: %s own:%s\n"
msgstr ""
-#: OOps/remote.c:433
+#: OOps/remote.c:436
msgid "insno already specific remote"
msgstr ""
-#: OOps/remote.c:453 OOps/remote.c:493
+#: OOps/remote.c:456 OOps/remote.c:496
msgid "missing channel nos"
msgstr ""
-#: OOps/remote.c:463 OOps/remote.c:502
+#: OOps/remote.c:466 OOps/remote.c:505
msgid "illegal channel no"
msgstr ""
-#: OOps/remote.c:466
+#: OOps/remote.c:469
msgid "channel already remote"
msgstr ""
-#: OOps/remote.c:505
+#: OOps/remote.c:508
msgid "channel already specific remote"
msgstr ""
-#: OOps/remote.c:531 OOps/remote.c:555 OOps/remote.c:579
+#: OOps/remote.c:534 OOps/remote.c:558 OOps/remote.c:582
msgid "CLsend failed"
msgstr ""
-#: OOps/remote.c:645 OOps/remote.c:653 OOps/remote.c:661 OOps/remote.c:669
-#: OOps/remote.c:677
+#: OOps/remote.c:648 OOps/remote.c:656 OOps/remote.c:664 OOps/remote.c:672
+#: OOps/remote.c:680
msgid ""
"*** This version of Csound was not compiled with remote event support ***\n"
msgstr ""
@@ -4937,53 +4685,53 @@ msgstr "%s: не вÑÑÑÑплено Ñ Ð¸Ð½Ð¸ÑиаÑивой"
msgid "linseg: not initialised (arate)\n"
msgstr ""
-#: OOps/ugens1.c:463 OOps/ugens1.c:465 OOps/ugens1.c:512 OOps/ugens1.c:514
-#: OOps/ugens1.c:564 OOps/ugens1.c:566 OOps/ugens1.c:610 OOps/ugens1.c:612
-#: OOps/ugens1.c:774 OOps/ugens1.c:776
+#: OOps/ugens1.c:464 OOps/ugens1.c:466 OOps/ugens1.c:513 OOps/ugens1.c:515
+#: OOps/ugens1.c:565 OOps/ugens1.c:567 OOps/ugens1.c:611 OOps/ugens1.c:613
+#: OOps/ugens1.c:775 OOps/ugens1.c:777
#, c-format
msgid "ival%d is zero"
msgstr ""
-#: OOps/ugens1.c:466 OOps/ugens1.c:515 OOps/ugens1.c:567 OOps/ugens1.c:613
-#: OOps/ugens1.c:777
+#: OOps/ugens1.c:467 OOps/ugens1.c:516 OOps/ugens1.c:568 OOps/ugens1.c:614
+#: OOps/ugens1.c:778
#, c-format
msgid "ival%d sign conflict"
msgstr ""
-#: OOps/ugens1.c:495 OOps/ugens1.c:544
+#: OOps/ugens1.c:496 OOps/ugens1.c:545
#, c-format
msgid "Breakpoint time %f not valid"
msgstr ""
-#: OOps/ugens1.c:706
+#: OOps/ugens1.c:707
msgid "expseg (krate): not initialised"
msgstr ""
-#: OOps/ugens1.c:732
+#: OOps/ugens1.c:733
msgid "expseg (arate): not initialised"
msgstr ""
-#: OOps/ugens1.c:1013 OOps/ugens1.c:1149 OOps/ugens1.c:1311
+#: OOps/ugens1.c:1014 OOps/ugens1.c:1150 OOps/ugens1.c:1312
msgid "non-positive iatdec"
msgstr ""
-#: OOps/ugens1.c:1106 OOps/ugens1.c:1273
+#: OOps/ugens1.c:1107 OOps/ugens1.c:1274
msgid "ixmod out of range."
msgstr ""
-#: OOps/ugens1.c:1134 OOps/ugens1.c:1301
+#: OOps/ugens1.c:1135 OOps/ugens1.c:1302
msgid "rise func ends with zero"
msgstr ""
-#: OOps/ugens1.c:1178 OOps/ugens1.c:1257
+#: OOps/ugens1.c:1179 OOps/ugens1.c:1258
msgid "envlpx rise func ends with zero"
msgstr ""
-#: OOps/ugens1.c:1199 OOps/ugens1.c:1254
+#: OOps/ugens1.c:1200 OOps/ugens1.c:1255
msgid "envlpx(krate): not initialised"
msgstr ""
-#: OOps/ugens2.c:48 OOps/ugens2.c:61 Opcodes/shape.c:377
+#: OOps/ugens2.c:48 OOps/ugens2.c:61 Opcodes/shape.c:379
msgid "init phase truncation\n"
msgstr ""
@@ -5047,8 +4795,8 @@ msgid "oscil(krate): not initialised"
msgstr ""
#: OOps/ugens2.c:1139 OOps/ugens2.c:1167 OOps/ugens2.c:1192 OOps/ugens2.c:1219
-#: Opcodes/pitch.c:1579 Opcodes/pitch.c:1606 Opcodes/pitch.c:1633
-#: Opcodes/pitch.c:1662
+#: Opcodes/pitch.c:1580 Opcodes/pitch.c:1607 Opcodes/pitch.c:1634
+#: Opcodes/pitch.c:1663
msgid "oscil: not initialised"
msgstr ""
@@ -5164,7 +4912,7 @@ msgstr ""
msgid "Seeding from current time %lu\n"
msgstr ""
-#: OOps/ugens5.c:198 OOps/ugens5.c:260 Opcodes/gab/gab.c:45 Opcodes/ugsc.c:188
+#: OOps/ugens5.c:198 OOps/ugens5.c:260 Opcodes/gab/gab.c:47 Opcodes/ugsc.c:186
#, c-format
msgid "illegal reson iscl value, %f"
msgstr ""
@@ -5396,8 +5144,8 @@ msgstr ""
msgid "Table no. < 1 dft=%.2f sft=%.2f"
msgstr ""
-#: OOps/ugrw1.c:1781 OOps/ugrw1.c:1822 Opcodes/fareyseq.c:455
-#: Opcodes/fareyseq.c:477
+#: OOps/ugrw1.c:1781 OOps/ugrw1.c:1822 Opcodes/fareyseq.c:453
+#: Opcodes/fareyseq.c:475
#, c-format
msgid "Source sft table %.2f not found."
msgstr ""
@@ -5627,19 +5375,19 @@ msgstr ""
msgid "reverbx: not initialised"
msgstr ""
-#: Opcodes/ambicode1.c:80
+#: Opcodes/ambicode1.c:82
msgid "The numbers of input and output arguments are not valid."
msgstr ""
-#: Opcodes/ambicode1.c:163
+#: Opcodes/ambicode1.c:165
msgid "The number of input arguments is not valid."
msgstr ""
-#: Opcodes/ambicode1.c:167
+#: Opcodes/ambicode1.c:169
msgid "The isetup value should be between 1 and 5."
msgstr ""
-#: Opcodes/ambicode1.c:193
+#: Opcodes/ambicode1.c:195
msgid "The output channel count does not match the isetup value."
msgstr ""
@@ -5679,16 +5427,16 @@ msgstr ""
msgid "Not supported setup number!"
msgstr ""
-#: Opcodes/babo.c:740
+#: Opcodes/babo.c:742
#, c-format
msgid "Babo: resonator dimensions are incorrect (%.1f, %.1f, %.1f)"
msgstr ""
-#: Opcodes/bilbar.c:82
+#: Opcodes/bilbar.c:83
msgid "No data to continue"
msgstr ""
-#: Opcodes/bilbar.c:108
+#: Opcodes/bilbar.c:109
msgid "Ends must be clamped(1), pivoting(2) or free(3)"
msgstr ""
@@ -5701,8 +5449,8 @@ msgstr ""
msgid "DLineN: Delay length too big ... setting to maximum length of %ld.\n"
msgstr ""
-#: Opcodes/bowedbar.c:98 Opcodes/physmod.c:489
-msgid "unknown lowest frequency for bowed string -- assuming 50Hz\n"
+#: Opcodes/bowedbar.c:98
+msgid "unknown lowest frequency for bowed bar -- assuming 50Hz\n"
msgstr ""
#: Opcodes/clfilt.c:53
@@ -5780,17 +5528,17 @@ msgstr ""
msgid "Unknown control %d"
msgstr ""
-#: Opcodes/cpumeter.c:73
+#: Opcodes/cpumeter.c:77
#, c-format
msgid "Failed to open /proc/stat: %s"
msgstr ""
-#: Opcodes/cpumeter.c:75 Opcodes/cpumeter.c:80 Opcodes/cpumeter.c:107
-#: Opcodes/cpumeter.c:147
+#: Opcodes/cpumeter.c:79 Opcodes/cpumeter.c:84 Opcodes/cpumeter.c:111
+#: Opcodes/cpumeter.c:151
msgid "failed /proc/stat read"
msgstr ""
-#: Opcodes/crossfm.c:33
+#: Opcodes/crossfm.c:34
msgid "crossfm: ftable not found"
msgstr ""
@@ -5832,31 +5580,31 @@ msgstr ""
msgid "insufficient arguments for fareytable"
msgstr "недоÑÑаÑоÑнÑе аÑгÑменÑÑ"
-#: Opcodes/fareyseq.c:250 Opcodes/fareyseq.c:300
+#: Opcodes/fareyseq.c:251 Opcodes/fareyseq.c:301
#, c-format
msgid "Farey: Table no. < 1 dft=%.2f sft=%.2f"
msgstr ""
-#: Opcodes/fareyseq.c:255
+#: Opcodes/fareyseq.c:256
#, c-format
msgid "Farey: Filter type < 1 dft=%.2f sft=%.2f"
msgstr ""
-#: Opcodes/fareyseq.c:270 Opcodes/fareyseq.c:318
+#: Opcodes/fareyseq.c:271 Opcodes/fareyseq.c:319
#, c-format
msgid "Farey: Destination dft table %.2f not found."
msgstr ""
-#: Opcodes/fareyseq.c:281 Opcodes/fareyseq.c:329
+#: Opcodes/fareyseq.c:282 Opcodes/fareyseq.c:330
#, c-format
msgid "Farey: Source sft table %.2f not found."
msgstr ""
-#: Opcodes/fareyseq.c:305
+#: Opcodes/fareyseq.c:306
msgid "Farey: Filter type < 1"
msgstr ""
-#: Opcodes/fareyseq.c:447 Opcodes/fareyseq.c:468
+#: Opcodes/fareyseq.c:445 Opcodes/fareyseq.c:466
#, c-format
msgid "Table no. < 1 sft=%.2f"
msgstr ""
@@ -5964,45 +5712,45 @@ msgstr ""
msgid "follow - zero length!"
msgstr ""
-#: Opcodes/fout.c:59
+#: Opcodes/fout.c:60
#, c-format
msgid "Closing file '%s'...\n"
msgstr ""
-#: Opcodes/fout.c:101
+#: Opcodes/fout.c:102
msgid "invalid file handle"
msgstr ""
-#: Opcodes/fout.c:108 Opcodes/fout.c:420
+#: Opcodes/fout.c:109 Opcodes/fout.c:421
msgid "invalid file name"
msgstr ""
-#: Opcodes/fout.c:165
+#: Opcodes/fout.c:166
#, c-format
msgid "error opening file '%s'"
msgstr ""
-#: Opcodes/fout.c:192
+#: Opcodes/fout.c:193
#, c-format
msgid "error opening sound file '%s'"
msgstr ""
-#: Opcodes/fout.c:429
+#: Opcodes/fout.c:430
#, c-format
msgid "cannot close '%s': not found in list of open files"
msgstr ""
-#: Opcodes/fout.c:440
+#: Opcodes/fout.c:441
#, c-format
msgid "cannot close file #%d: not a valid handle"
msgstr ""
-#: Opcodes/fout.c:447
+#: Opcodes/fout.c:448
#, c-format
msgid "file #%d (%s) is in use, will be closed when released"
msgstr ""
-#: Opcodes/fout.c:476 Opcodes/fout.c:479 Opcodes/fout.c:550 Opcodes/fout.c:553
+#: Opcodes/fout.c:477 Opcodes/fout.c:480 Opcodes/fout.c:551 Opcodes/fout.c:554
msgid "fouti: invalid file handle"
msgstr ""
@@ -6080,555 +5828,694 @@ msgstr ""
msgid "ftsave: failed to write file"
msgstr ""
-#: Opcodes/gab/gab.c:109
+#: Opcodes/gab/gab.c:111
msgid "fastab: incorrect table number"
msgstr ""
-#: Opcodes/gab/gab.c:132 Opcodes/gab/gab.c:141 Opcodes/gab/gab.c:171
+#: Opcodes/gab/gab.c:134 Opcodes/gab/gab.c:143 Opcodes/gab/gab.c:173
msgid "tabw off end"
msgstr ""
-#: Opcodes/gab/gab.c:157 Opcodes/gab/gab.c:225 Opcodes/gab/gab.c:234
+#: Opcodes/gab/gab.c:159 Opcodes/gab/gab.c:227 Opcodes/gab/gab.c:236
msgid "tab off end"
msgstr ""
-#: Opcodes/gab/gab.c:183
+#: Opcodes/gab/gab.c:185
msgid "tab_i: incorrect table number"
msgstr ""
-#: Opcodes/gab/gab.c:190
-msgid "tab_i off end"
+#: Opcodes/gab/gab.c:192
+#, c-format
+msgid "tab_i off end: table number: %d\n"
msgstr ""
-#: Opcodes/gab/gab.c:202
+#: Opcodes/gab/gab.c:204
msgid "tabw_i: incorrect table number"
msgstr ""
-#: Opcodes/gab/gab.c:209
+#: Opcodes/gab/gab.c:211
msgid "tabw_i off end"
msgstr ""
-#: Opcodes/gab/gab.c:247
+#: Opcodes/gab/gab.c:249
msgid "tab_init: incorrect table number"
msgstr ""
-#: Opcodes/gab/gab.c:316
+#: Opcodes/gab/gab.c:318
msgid "printi parameter was not a \"quoted string\""
msgstr ""
-#: Opcodes/gab/gab.c:423
+#: Opcodes/gab/gab.c:425
msgid "adsynt2: wavetable not found!"
msgstr ""
-#: Opcodes/gab/gab.c:435
+#: Opcodes/gab/gab.c:437
msgid "adsynt2: freqtable not found!"
msgstr ""
-#: Opcodes/gab/gab.c:440
+#: Opcodes/gab/gab.c:442
msgid "adsynt2: partial count is greater than freqtable size!"
msgstr ""
-#: Opcodes/gab/gab.c:449
+#: Opcodes/gab/gab.c:451
msgid "adsynt2: amptable not found!"
msgstr ""
-#: Opcodes/gab/gab.c:454
+#: Opcodes/gab/gab.c:456
msgid "adsynt2: partial count is greater than amptable size!"
msgstr ""
-#: Opcodes/gab/gab.c:499
+#: Opcodes/gab/gab.c:501
#, fuzzy
msgid "adsynt2: not initialised"
msgstr "%s: не вÑÑÑÑплено Ñ Ð¸Ð½Ð¸ÑиаÑивой"
-#: Opcodes/gab/gab.c:741
+#: Opcodes/gab/gab.c:743
msgid "max_k: invalid imaxflag value"
msgstr ""
-#: Opcodes/gab/hvs.c:68
+#: Opcodes/gab/hvs.c:70
msgid "hvs1: a line segment must be delimited by 2 points at least"
msgstr ""
-#: Opcodes/gab/hvs.c:150
+#: Opcodes/gab/hvs.c:152
msgid "hvs2: a square area must be delimited by 2 lines at least"
msgstr ""
-#: Opcodes/gab/hvs.c:246
+#: Opcodes/gab/hvs.c:248
msgid "hvs3: a square area must be delimited by 2 lines at least"
msgstr ""
-#: Opcodes/gab/hvs.c:389
+#: Opcodes/gab/hvs.c:390
msgid "vphaseseg: the first function is invalid or missing"
msgstr ""
-#: Opcodes/gab/hvs.c:396
+#: Opcodes/gab/hvs.c:398 Opcodes/gab/vectorial.c:2301
msgid "vphaseseg: invalid num. of elements"
msgstr ""
-#: Opcodes/gab/hvs.c:414
+#: Opcodes/gab/hvs.c:416
msgid "vphaseseg: function invalid or missing"
msgstr ""
-#: Opcodes/gab/newgabopc.c:39 Opcodes/gab/newgabopc.c:54
+#: Opcodes/gab/newgabopc.c:40 Opcodes/gab/newgabopc.c:55
msgid "vtable1: incorrect table number"
msgstr ""
-#: Opcodes/gab/newgabopc.c:359
+#: Opcodes/gab/newgabopc.c:241 Opcodes/gab/newgabopc.c:296
+msgid "copyTabElems: incorrect destination table number"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:246 Opcodes/gab/newgabopc.c:301
+msgid ""
+"copyTabElems: destination table too short or number of elements to copy too "
+"big"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:252 Opcodes/gab/newgabopc.c:306
+msgid "copyTabElems: incorrect source table number"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:257 Opcodes/gab/newgabopc.c:310
+msgid ""
+"copyTabElems: source table size less than the number of elements to copy"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:273 Opcodes/gab/newgabopc.c:318
+msgid "copyTabElems: source table too short"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:276 Opcodes/gab/newgabopc.c:321
+msgid "copyTabElems: destination table too short"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:347
+msgid "inrg: audio input is not enabled"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:362
msgid "inrg: channel number cannot be < 1 (1 is the first channel)"
msgstr ""
-#: Opcodes/gab/newgabopc.c:400
+#: Opcodes/gab/newgabopc.c:403
msgid "outrg: channel number cannot be < 1 (1 is the first channel)"
msgstr ""
-#: Opcodes/gab/newgabopc.c:439 Opcodes/gab/newgabopc.c:671
+#: Opcodes/gab/newgabopc.c:440 Opcodes/gab/newgabopc.c:574
+#: Opcodes/gab/newgabopc.c:672
msgid "invalid function"
msgstr ""
-#: Opcodes/gab/newgabopc.c:442
+#: Opcodes/gab/newgabopc.c:443
msgid "lposc: no sample rate stored in function; assuming=sr\n"
msgstr ""
-#: Opcodes/gab/newgabopc.c:673
+#: Opcodes/gab/newgabopc.c:577
+msgid "lposcil: no sample rate stored in function assuming=sr\n"
+msgstr ""
+
+#: Opcodes/gab/newgabopc.c:674
msgid "lposcil: no sample rate stored in function; assuming=sr\n"
msgstr ""
-#: Opcodes/gab/sliderTable.c:45 Opcodes/gab/sliderTable.c:254
+#: Opcodes/gab/sliderTable.c:47 Opcodes/gab/sliderTable.c:256
#: Opcodes/midiops3.c:44 Opcodes/midiops3.c:146 Opcodes/midiops3.c:259
#: Opcodes/midiops3.c:317 Opcodes/midiops3.c:413
msgid "illegal channel"
msgstr ""
-#: Opcodes/gab/sliderTable.c:65 Opcodes/gab/sliderTable.c:277
+#: Opcodes/gab/sliderTable.c:67 Opcodes/gab/sliderTable.c:280
#: Opcodes/midiops3.c:58 Opcodes/midiops3.c:162 Opcodes/midiops3.c:273
#, c-format
msgid "illegal control number at position n.%d"
msgstr ""
-#: Opcodes/gab/sliderTable.c:74
+#: Opcodes/gab/sliderTable.c:76
#, c-format
msgid ""
"sliderXtable: illegal initvalue at position %d. When using table indexing, "
"the init range is 0 to 1"
msgstr ""
-#: Opcodes/gab/sliderTable.c:84 Opcodes/gab/sliderTable.c:284
-#: Opcodes/gab/sliderTable.c:509 Opcodes/midiops3.c:64 Opcodes/midiops3.c:168
+#: Opcodes/gab/sliderTable.c:86 Opcodes/gab/sliderTable.c:287
+#: Opcodes/gab/sliderTable.c:513 Opcodes/midiops3.c:64 Opcodes/midiops3.c:168
#: Opcodes/midiops3.c:347
#, c-format
msgid "illegal initvalue at position n.%d"
msgstr ""
-#: Opcodes/gab/sliderTable.c:96 Opcodes/gab/sliderTable.c:296
+#: Opcodes/gab/sliderTable.c:98 Opcodes/gab/sliderTable.c:299
msgid "sliderXtable: zero is illegal in exponential operations"
msgstr ""
-#: Opcodes/gab/sliderTable.c:312
+#: Opcodes/gab/sliderTable.c:315
#, c-format
msgid ""
"sliderXtable: illegal initvalue at position %d. When using table indexing, "
"the init range is 0 to 1"
msgstr ""
-#: Opcodes/gab/sliderTable.c:565 Opcodes/midiops2.c:321 Opcodes/midiops2.c:359
+#: Opcodes/gab/sliderTable.c:569 Opcodes/midiops2.c:321 Opcodes/midiops2.c:359
#: Opcodes/midiops2.c:391 Opcodes/midiops2.c:440 Opcodes/midiops2.c:475
#: Opcodes/midiops2.c:517 Opcodes/midiops2.c:532 Opcodes/midiops2.c:551
msgid "illegal midi channel"
msgstr ""
-#: Opcodes/gab/tabmorph.c:42
+#: Opcodes/gab/tabmorph.c:43
msgid "tabmorph: invalid table number"
msgstr ""
-#: Opcodes/gab/tabmorph.c:46
+#: Opcodes/gab/tabmorph.c:47
msgid "tabmorph: all tables must have the same length!"
msgstr ""
-#: Opcodes/gab/vectorial.c:33
+#: Opcodes/gab/vectorial.c:35
msgid "mtablei: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:63 Opcodes/gab/vectorial.c:83
-#: Opcodes/gab/vectorial.c:133 Opcodes/gab/vectorial.c:200
+#: Opcodes/gab/vectorial.c:65 Opcodes/gab/vectorial.c:85
+#: Opcodes/gab/vectorial.c:135 Opcodes/gab/vectorial.c:202
msgid "mtable: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:185
+#: Opcodes/gab/vectorial.c:187
msgid "mtabi: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:252
+#: Opcodes/gab/vectorial.c:254
msgid "mtablewi: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:268 Opcodes/gab/vectorial.c:288
-#: Opcodes/gab/vectorial.c:317 Opcodes/gab/vectorial.c:362
-#: Opcodes/gab/vectorial.c:406
+#: Opcodes/gab/vectorial.c:270 Opcodes/gab/vectorial.c:290
+#: Opcodes/gab/vectorial.c:319 Opcodes/gab/vectorial.c:364
+#: Opcodes/gab/vectorial.c:408
msgid "mtabw: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:348
+#: Opcodes/gab/vectorial.c:350
msgid "mtabwi: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:380
+#: Opcodes/gab/vectorial.c:382
msgid "mtablew: incorrect table number"
msgstr ""
-#: Opcodes/gab/vectorial.c:454 Opcodes/gab/vectorial.c:513
+#: Opcodes/gab/vectorial.c:457 Opcodes/gab/vectorial.c:516
#, c-format
msgid "vadd_i: invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:470
+#: Opcodes/gab/vectorial.c:473
msgid "vadd_i: ifn length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:497
+#: Opcodes/gab/vectorial.c:500
msgid "vadd: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:529
+#: Opcodes/gab/vectorial.c:532
msgid "vmult_i: ifn length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:556
+#: Opcodes/gab/vectorial.c:559
msgid "vmult: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:572
+#: Opcodes/gab/vectorial.c:575
#, c-format
msgid "vpow_i: invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:589
+#: Opcodes/gab/vectorial.c:592
msgid "vpow_i: ifn length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:617
+#: Opcodes/gab/vectorial.c:620
msgid "vpow: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:633
+#: Opcodes/gab/vectorial.c:636
#, c-format
msgid "vexp_i: invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:649
+#: Opcodes/gab/vectorial.c:652
msgid "vexp_i: ifn length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:676
+#: Opcodes/gab/vectorial.c:679
msgid "vexp: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:694
+#: Opcodes/gab/vectorial.c:697
#, c-format
msgid "vectorsop: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:699
+#: Opcodes/gab/vectorial.c:702
#, c-format
msgid "vectorsop: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:738
+#: Opcodes/gab/vectorial.c:742
msgid "vcopy: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:756
+#: Opcodes/gab/vectorial.c:760
msgid "vcopy: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:783
+#: Opcodes/gab/vectorial.c:787
#, c-format
msgid "vcopy_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:788
+#: Opcodes/gab/vectorial.c:792
#, c-format
msgid "vcopy_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:810
+#: Opcodes/gab/vectorial.c:814
msgid "vcopy_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:827
+#: Opcodes/gab/vectorial.c:831
msgid "vcopy_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:866
+#: Opcodes/gab/vectorial.c:870
msgid "vaddv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:885
+#: Opcodes/gab/vectorial.c:889
msgid "vaddv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:911
+#: Opcodes/gab/vectorial.c:915
#, c-format
msgid "vaddv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:916
+#: Opcodes/gab/vectorial.c:920
#, c-format
msgid "vaddv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:938
+#: Opcodes/gab/vectorial.c:942
msgid "vaddv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:956
+#: Opcodes/gab/vectorial.c:960
msgid "vaddv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:987
+#: Opcodes/gab/vectorial.c:991
msgid "vsubv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1006
+#: Opcodes/gab/vectorial.c:1010
msgid "vsubv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1033
+#: Opcodes/gab/vectorial.c:1037
#, c-format
msgid "vsubv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1038
+#: Opcodes/gab/vectorial.c:1042
#, c-format
msgid "vsubv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1060
+#: Opcodes/gab/vectorial.c:1064
msgid "vsubv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1078
+#: Opcodes/gab/vectorial.c:1082
msgid "vsubv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1115
+#: Opcodes/gab/vectorial.c:1119
msgid "vmultv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1134
+#: Opcodes/gab/vectorial.c:1138
msgid "vmultv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1161
+#: Opcodes/gab/vectorial.c:1165
#, c-format
msgid "vmultv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1166
+#: Opcodes/gab/vectorial.c:1170
#, c-format
msgid "vmultv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1188
+#: Opcodes/gab/vectorial.c:1192
msgid "vmultv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1205
+#: Opcodes/gab/vectorial.c:1209
msgid "vmultv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1242
+#: Opcodes/gab/vectorial.c:1246
msgid "vdivv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1261
+#: Opcodes/gab/vectorial.c:1265
msgid "vdivv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1288
+#: Opcodes/gab/vectorial.c:1292
#, c-format
msgid "vdivv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1293
+#: Opcodes/gab/vectorial.c:1297
#, c-format
msgid "vdivv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1315
+#: Opcodes/gab/vectorial.c:1319
msgid "vdivv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1333
+#: Opcodes/gab/vectorial.c:1337
msgid "vdivv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1370
+#: Opcodes/gab/vectorial.c:1374
msgid "vpowv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1389
+#: Opcodes/gab/vectorial.c:1393
msgid "vpowv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1416
+#: Opcodes/gab/vectorial.c:1420
#, c-format
msgid "vpowv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1421
+#: Opcodes/gab/vectorial.c:1425
#, c-format
msgid "vpowv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1443
+#: Opcodes/gab/vectorial.c:1447
msgid "vpowv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1460
+#: Opcodes/gab/vectorial.c:1464
msgid "vpowv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1497
+#: Opcodes/gab/vectorial.c:1501
msgid "vexpv: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1516
+#: Opcodes/gab/vectorial.c:1520
msgid "vexpv: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1543
+#: Opcodes/gab/vectorial.c:1547
#, c-format
msgid "vexpv_i: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1548
+#: Opcodes/gab/vectorial.c:1552
#, c-format
msgid "vexpv_i: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1570
+#: Opcodes/gab/vectorial.c:1574
msgid "vexpv_i: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1588
+#: Opcodes/gab/vectorial.c:1592
msgid "vexpv_i: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1625
+#: Opcodes/gab/vectorial.c:1629
msgid "vmap: Error: ifn1 and ifn2 can not be the same"
msgstr ""
-#: Opcodes/gab/vectorial.c:1630
+#: Opcodes/gab/vectorial.c:1634
#, c-format
msgid "vmap: ifn1 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1635
+#: Opcodes/gab/vectorial.c:1639
#, c-format
msgid "vmap: ifn2 invalid table number %i"
msgstr ""
-#: Opcodes/gab/vectorial.c:1657
+#: Opcodes/gab/vectorial.c:1661
msgid "vmap: ifn1 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1674
+#: Opcodes/gab/vectorial.c:1678
msgid "vmap: ifn2 length exceeded"
msgstr ""
-#: Opcodes/gab/vectorial.c:1870
+#: Opcodes/gab/vectorial.c:1698
+#, fuzzy
+msgid "vectorop: invalid num of elements"
+msgstr "непÑавилÑнÑй ÑиÑло аÑгÑменÑов"
+
+#: Opcodes/gab/vectorial.c:1727
+msgid "vport: invalid table length or num of elements"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1730
+msgid "vport: invalid table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1735
+msgid "vport: invalid init table length or num of elements"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1738
+msgid "vport: invalid init table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1875
#, c-format
msgid "vrandh: Seeding from current time %lu\n"
msgstr ""
-#: Opcodes/gab/vectorial.c:1968
+#: Opcodes/gab/vectorial.c:1888
+msgid "vrandh: Invalid table."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1891
+msgid "vrandh: idstoffset is greater than table length."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1896
+msgid "randh: Table length exceeded, last elements discarded."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1975
#, c-format
msgid "vrandi: Seeding from current time %lu\n"
msgstr ""
-#: Opcodes/grain4.c:57
+#: Opcodes/gab/vectorial.c:1987
+msgid "vrandi: Invalid table."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1990
+msgid "vrandi: idstoffset is greater thantable length."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:1995
+msgid "vrandi: Table length exceeded, last elements discarded."
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2077 Opcodes/gab/vectorial.c:2084
+#: Opcodes/gab/vectorial.c:2091
+#, fuzzy
+msgid "vecdelay: invalid num of elements"
+msgstr "непÑавилÑнÑй ÑиÑло аÑгÑменÑов"
+
+#: Opcodes/gab/vectorial.c:2079
+msgid "vecdly: invalid output table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2086
+msgid "vecdly: invalid input table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2093
+msgid "vecdly: invalid delay table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2138
+#, fuzzy
+msgid "vecdly: not initialised"
+msgstr "%s: не вÑÑÑÑплено Ñ Ð¸Ð½Ð¸ÑиаÑивой"
+
+#: Opcodes/gab/vectorial.c:2181
+msgid "vlinseg/vexpseg: invalid num. of elements"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2223 Opcodes/vpvoc.c:118
+msgid "tableseg: not initialised"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2253 Opcodes/vpvoc.c:146
+msgid "tablexseg: not initialised"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2406
+#, fuzzy
+msgid "vdelayk: not initialised"
+msgstr "%s: не вÑÑÑÑплено Ñ Ð¸Ð½Ð¸ÑиаÑивой"
+
+#: Opcodes/gab/vectorial.c:2439 Opcodes/gab/vectorial.c:2445
+#, fuzzy
+msgid "cella: invalid num of elements"
+msgstr "непÑавилÑнÑй ÑиÑло аÑгÑменÑов"
+
+#: Opcodes/gab/vectorial.c:2441
+msgid "cella: invalid output table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2448
+msgid "cella: invalid initial state table"
+msgstr ""
+
+#: Opcodes/gab/vectorial.c:2452
+msgid "cella: invalid rule table"
+msgstr ""
+
+#: Opcodes/grain4.c:59
msgid "granule_set: Unable to find function table"
msgstr ""
-#: Opcodes/grain4.c:67
+#: Opcodes/grain4.c:69
msgid "granule_set: Unable to find function table for envelope"
msgstr ""
-#: Opcodes/grain4.c:73
+#: Opcodes/grain4.c:75
msgid "granule_set: Too many voices"
msgstr ""
-#: Opcodes/grain4.c:76
+#: Opcodes/grain4.c:78
msgid "granule_set: iratio must be greater then 0"
msgstr ""
-#: Opcodes/grain4.c:80
+#: Opcodes/grain4.c:82
msgid "granule_set: imode must be -1, 0 or +1"
msgstr ""
-#: Opcodes/grain4.c:84
+#: Opcodes/grain4.c:86
msgid "granule_set: Illegal ithd, must be greater than zero"
msgstr ""
-#: Opcodes/grain4.c:89
+#: Opcodes/grain4.c:91
msgid "granule_set: ipshift must be integer between 0 and 4"
msgstr ""
-#: Opcodes/grain4.c:94
+#: Opcodes/grain4.c:96
msgid "granule_set: Not enough voices for the number of pitches"
msgstr ""
-#: Opcodes/grain4.c:101
+#: Opcodes/grain4.c:103
msgid "granule_set: ipitch1 must be greater then zero"
msgstr ""
-#: Opcodes/grain4.c:106
+#: Opcodes/grain4.c:108
msgid "granule_set: ipitch2 must be greater then zero"
msgstr ""
-#: Opcodes/grain4.c:111
+#: Opcodes/grain4.c:113
msgid "granule_set: ipitch3 must be greater then zero"
msgstr ""
-#: Opcodes/grain4.c:116
+#: Opcodes/grain4.c:118
msgid "granule_set: ipitch4 must be greater then zero"
msgstr ""
-#: Opcodes/grain4.c:121
+#: Opcodes/grain4.c:123
msgid "granule_set: must be positive and less than function table length"
msgstr ""
-#: Opcodes/grain4.c:125
+#: Opcodes/grain4.c:127
msgid "granule_set: igskip_os must be greater then 0"
msgstr ""
-#: Opcodes/grain4.c:134
+#: Opcodes/grain4.c:136
msgid "granule_set: kgap must be greater then 0"
msgstr ""
-#: Opcodes/grain4.c:138
+#: Opcodes/grain4.c:140
#, c-format
msgid "granule_set: igap_os must be 0%% to 100%%"
msgstr ""
-#: Opcodes/grain4.c:142
+#: Opcodes/grain4.c:144
msgid "granule_set: kgsize must be greater then 0"
msgstr ""
-#: Opcodes/grain4.c:146
+#: Opcodes/grain4.c:148
#, c-format
msgid "granule_set: igsize_os must be 0%% to 100%%"
msgstr ""
-#: Opcodes/grain4.c:152
+#: Opcodes/grain4.c:154
msgid "granule_set: Illegal value of iatt and/or idec"
msgstr ""
-#: Opcodes/grain4.c:236
+#: Opcodes/grain4.c:238
msgid "granule_set: Illegal combination of igskip and ilength"
msgstr ""
-#: Opcodes/grain4.c:243
+#: Opcodes/grain4.c:245
#, c-format
msgid ""
"granule_set: WARNING * ilength may be too short * \n"
@@ -6638,7 +6525,7 @@ msgid ""
"ilength is %f Sec, kgsize is %f Sec\n"
msgstr ""
-#: Opcodes/grain4.c:418
+#: Opcodes/grain4.c:419
msgid "grain4: not initialised"
msgstr ""
@@ -6650,92 +6537,88 @@ msgstr ""
msgid "grain: not initialised"
msgstr ""
-#: Opcodes/harmon.c:224
+#: Opcodes/harmon.c:226
msgid "harm signal has positive lead\n"
msgstr ""
-#: Opcodes/harmon.c:231
+#: Opcodes/harmon.c:233
msgid "harm signal has negative lead\n"
msgstr ""
-#: Opcodes/harmon.c:361
+#: Opcodes/harmon.c:363
msgid "harmon234: out of range\n"
msgstr ""
-#: Opcodes/hrtferX.c:79
+#: Opcodes/hrtferX.c:81
#, c-format
msgid ""
"Orchestra sampling rate is not compatible with HRTF.\n"
"Should be %d...exiting."
msgstr ""
-#: Opcodes/hrtferX.c:87
+#: Opcodes/hrtferX.c:89
msgid ""
"\n"
"Last argument must be the string 'HRTFcompact' ...correcting.\n"
msgstr ""
-#: Opcodes/hrtferX.c:489
+#: Opcodes/hrtferX.c:494
msgid "hrtfer: not initialised"
msgstr ""
-#: Opcodes/hrtfopcodes.c:232
+#: Opcodes/hrtfopcodes.c:260 Opcodes/hrtfopcodes.c:1434
+#: Opcodes/hrtfearly.c:300 Opcodes/hrtfreverb.c:257
#, c-format
msgid ""
"\n"
-"Orchestra sampling rate is not compatible with HRTF data files\n"
-"Should be %.0f, see Csound help for object\n"
+"\n"
+"WARNING!!:\n"
+"Orchestra SR not compatible with HRTF processing SR of: %.0f\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:251 Opcodes/hrtfopcodes.c:275
-#: Opcodes/hrtfopcodes.c:298 Opcodes/hrtfopcodes.c:1257
-#: Opcodes/hrtfopcodes.c:1280 Opcodes/hrtfopcodes.c:1303
-#: Opcodes/hrtfopcodes.c:1854 Opcodes/hrtfopcodes.c:1876
-#: Opcodes/hrtfopcodes.c:1898
+#: Opcodes/hrtfopcodes.c:287 Opcodes/hrtfopcodes.c:1461
+#: Opcodes/hrtfopcodes.c:2071 Opcodes/hrtfearly.c:327 Opcodes/hrtfreverb.c:300
msgid ""
"\n"
"\n"
"\n"
-"cannot load left data file, exiting\n"
+"Cannot load left data file, exiting\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:259 Opcodes/hrtfopcodes.c:283
-#: Opcodes/hrtfopcodes.c:306 Opcodes/hrtfopcodes.c:1265
-#: Opcodes/hrtfopcodes.c:1288 Opcodes/hrtfopcodes.c:1311
-#: Opcodes/hrtfopcodes.c:1862 Opcodes/hrtfopcodes.c:1884
-#: Opcodes/hrtfopcodes.c:1906
+#: Opcodes/hrtfopcodes.c:294 Opcodes/hrtfopcodes.c:1468
+#: Opcodes/hrtfopcodes.c:2078 Opcodes/hrtfearly.c:334 Opcodes/hrtfreverb.c:306
msgid ""
"\n"
"\n"
"\n"
-"cannot load right data file, exiting\n"
+"Cannot load right data file, exiting\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:313 Opcodes/hrtfopcodes.c:1912
+#: Opcodes/hrtfopcodes.c:690 Opcodes/hrtfearly.c:1241
msgid ""
"\n"
-"\n"
-"\n"
-" Sampling rate not supported, exiting\n"
+"WARNING: fades are overlapping: this could lead to noise: reduce fade size "
+"or change trajectory\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:600
+#: Opcodes/hrtfopcodes.c:2052
+#, c-format
msgid ""
-"fades are overlapping: this could lead to noise: reduce fade size or change "
-"trajectory\n"
+"\n"
+"\n"
+"WARNING!!:\n"
+"Orchestra SR not compatiblewith HRTF processing SR of: %.0f\n"
"\n"
msgstr ""
-#: Opcodes/hrtfopcodes.c:1239 Opcodes/hrtfopcodes.c:1837
-#, c-format
+#: Opcodes/hrtfreverb.c:832
msgid ""
-"Orchestra sampling rate is not compatible with HRTF data files\n"
-"Should be %.0f, see Csound help for object\n"
"\n"
+"warning, approaching instability, fixed with a flat late reverb!"
msgstr ""
#: Opcodes/ifd.c:74
@@ -6761,10 +6644,9 @@ msgid "imageload: file %s is not in PNG format.\n"
msgstr ""
#: Opcodes/imageOpcodes.c:119 Opcodes/imageOpcodes.c:126
-#: Opcodes/imageOpcodes.c:134 Opcodes/imageOpcodes.c:165
-#: Opcodes/imageOpcodes.c:174 Opcodes/imageOpcodes.c:188
-#: Opcodes/imageOpcodes.c:291 Opcodes/imageOpcodes.c:298
-#: Opcodes/imageOpcodes.c:311
+#: Opcodes/imageOpcodes.c:165 Opcodes/imageOpcodes.c:174
+#: Opcodes/imageOpcodes.c:188 Opcodes/imageOpcodes.c:291
+#: Opcodes/imageOpcodes.c:298 Opcodes/imageOpcodes.c:311
msgid "imageload: out of memory.\n"
msgstr ""
@@ -6784,62 +6666,62 @@ msgid ""
"Status: %d\n"
msgstr ""
-#: Opcodes/jacko.cpp:543
+#: Opcodes/jacko.cpp:545
#, c-format
msgid "Created Jack client \"%s\" for Jack server \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:548
+#: Opcodes/jacko.cpp:551
#, c-format
msgid "Jack buffer size %d != Csound ksmps %d, exiting...\n"
msgstr ""
-#: Opcodes/jacko.cpp:556
+#: Opcodes/jacko.cpp:559
#, c-format
msgid "Jack sampling rate %d != Csound sr %d, exiting...\n"
msgstr ""
-#: Opcodes/jacko.cpp:567
+#: Opcodes/jacko.cpp:570
#, c-format
msgid "Activated Jack client \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:571
+#: Opcodes/jacko.cpp:574
#, c-format
msgid "Failed to activate Jack client \"%s\": status %d.\n"
msgstr ""
-#: Opcodes/jacko.cpp:586
+#: Opcodes/jacko.cpp:589
msgid "BEGAN JackoState::close()...\n"
msgstr ""
-#: Opcodes/jacko.cpp:622
+#: Opcodes/jacko.cpp:629
msgid "ENDED JackoState::close().\n"
msgstr ""
-#: Opcodes/jacko.cpp:876
+#: Opcodes/jacko.cpp:892
#, c-format
msgid "Failed to set Jack freewheeling mode to \"%s\": error %d.\n"
msgstr ""
-#: Opcodes/jacko.cpp:878
+#: Opcodes/jacko.cpp:895
#, c-format
msgid "Set Jack freewheeling mode to \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:893
+#: Opcodes/jacko.cpp:911
#, c-format
msgid "Turned Jack connections \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:934 Opcodes/jacko.cpp:1034 Opcodes/jacko.cpp:1134
-#: Opcodes/jacko.cpp:1200
+#: Opcodes/jacko.cpp:955 Opcodes/jacko.cpp:1062 Opcodes/jacko.cpp:1169
+#: Opcodes/jacko.cpp:1241
#, c-format
msgid "Could not create Jack port \"%s\".\n"
msgstr ""
-#: Opcodes/jacko.cpp:946 Opcodes/jacko.cpp:1046 Opcodes/jacko.cpp:1146
-#: Opcodes/jacko.cpp:1212
+#: Opcodes/jacko.cpp:969 Opcodes/jacko.cpp:1077 Opcodes/jacko.cpp:1184
+#: Opcodes/jacko.cpp:1255
#, c-format
msgid "Could not create Jack connection from \"%s\" to \"%s\": status %d.\n"
msgstr ""
@@ -6878,27 +6760,27 @@ msgstr ""
msgid "lorisread cannot load %s"
msgstr ""
-#: Opcodes/loscilx.c:74 Opcodes/loscilx.c:178
+#: Opcodes/loscilx.c:76 Opcodes/loscilx.c:180
#, c-format
msgid "could not load '%s'"
msgstr ""
-#: Opcodes/loscilx.c:88 Opcodes/loscilx.c:258
+#: Opcodes/loscilx.c:90 Opcodes/loscilx.c:260
#, c-format
msgid "invalid loop mode: %d"
msgstr ""
-#: Opcodes/loscilx.c:170
+#: Opcodes/loscilx.c:172
msgid "loscilx: invalid number of output arguments"
msgstr ""
-#: Opcodes/loscilx.c:190 Opcodes/loscilx.c:219 Opcodes/pvlock.c:94
-#: Opcodes/pvlock.c:296 Opcodes/pvsbasic.c:460
+#: Opcodes/loscilx.c:192 Opcodes/loscilx.c:221 Opcodes/pvlock.c:118
+#: Opcodes/pvlock.c:320 Opcodes/pvsbasic.c:460
msgid ""
"number of output arguments inconsistent with number of sound file channels"
msgstr ""
-#: Opcodes/loscilx.c:665
+#: Opcodes/loscilx.c:667
msgid "loscilx: not initialised"
msgstr ""
@@ -6906,11 +6788,11 @@ msgstr ""
msgid "illegal order num. (min 1, max 10)"
msgstr ""
-#: Opcodes/mandolin.c:80
+#: Opcodes/mandolin.c:81
msgid "No table for Mandolin"
msgstr ""
-#: Opcodes/mandolin.c:90
+#: Opcodes/mandolin.c:91
msgid "No base frequency for mandolin"
msgstr ""
@@ -6941,27 +6823,27 @@ msgstr ""
msgid "illegal lsb control number at position n.%d"
msgstr ""
-#: Opcodes/modal4.c:45
+#: Opcodes/modal4.c:46
msgid "No table for Modal4 case"
msgstr ""
-#: Opcodes/modal4.c:245
+#: Opcodes/modal4.c:246
msgid "No table for Marimba strike"
msgstr ""
-#: Opcodes/modal4.c:284
+#: Opcodes/modal4.c:285
msgid "striking three times here!!!\n"
msgstr ""
-#: Opcodes/modal4.c:289
+#: Opcodes/modal4.c:290
msgid "striking twice here!!\n"
msgstr ""
-#: Opcodes/modal4.c:359
+#: Opcodes/modal4.c:360
msgid "No table for Vibraphone strike"
msgstr ""
-#: Opcodes/modal4.c:440
+#: Opcodes/modal4.c:441
msgid "No table for Agogobell strike"
msgstr ""
@@ -6969,12 +6851,12 @@ msgstr ""
msgid "modmatrix: "
msgstr ""
-#: Opcodes/mp3in.c:92 Opcodes/mp3in.c:230
+#: Opcodes/mp3in.c:93 Opcodes/mp3in.c:231
#, c-format
msgid "mp3in: %s: failed to open file"
msgstr ""
-#: Opcodes/mp3in.c:139
+#: Opcodes/mp3in.c:140
#, c-format
msgid "mp3in: file sample rate (%d) != orchestra sr (%d)\n"
msgstr ""
@@ -7262,7 +7144,7 @@ msgstr ""
msgid "No open glove"
msgstr ""
-#: Opcodes/pan2.c:43
+#: Opcodes/pan2.c:45
msgid "Unknown panning type"
msgstr ""
@@ -7278,195 +7160,199 @@ msgstr ""
msgid "partikkelsync: could not find opcode id"
msgstr ""
-#: Opcodes/physmod.c:121
+#: Opcodes/physmod.c:122
msgid "No table for Clarinet"
msgstr ""
-#: Opcodes/physmod.c:129
+#: Opcodes/physmod.c:130
msgid "No base frequency for clarinet -- assuming 50Hz\n"
msgstr ""
-#: Opcodes/physmod.c:283
+#: Opcodes/physmod.c:284
msgid "No table for Flute"
msgstr ""
-#: Opcodes/physmod.c:291
+#: Opcodes/physmod.c:292
msgid "No base frequency for flute -- assumed to be 50Hz\n"
msgstr ""
-#: Opcodes/physmod.c:481
+#: Opcodes/physmod.c:482
msgid "No table for wgbow vibrato"
msgstr ""
-#: Opcodes/physmod.c:689
+#: Opcodes/physmod.c:490
+msgid "unknown lowest frequency for bowed string -- assuming 50Hz\n"
+msgstr ""
+
+#: Opcodes/physmod.c:690
msgid "DlineA not initialised"
msgstr ""
-#: Opcodes/physmod.c:756
+#: Opcodes/physmod.c:757
msgid "No table for Brass"
msgstr ""
-#: Opcodes/physmod.c:765
+#: Opcodes/physmod.c:766
msgid "No base frequency for brass -- assumed to be 50Hz\n"
msgstr ""
-#: Opcodes/physutil.c:137 Opcodes/physutil.c:312 Opcodes/physutil.c:324
-#: Opcodes/physutil.c:345
+#: Opcodes/physutil.c:138 Opcodes/physutil.c:313 Opcodes/physutil.c:325
+#: Opcodes/physutil.c:346
msgid "negative rates not allowed!!, correcting\n"
msgstr ""
-#: Opcodes/physutil.c:186
+#: Opcodes/physutil.c:187
#, c-format
msgid "Envelope: value=%f target=%f rate=%f state=%d\n"
msgstr ""
-#: Opcodes/physutil.c:335
+#: Opcodes/physutil.c:336
msgid "Sustain level out of range!!, correcting\n"
msgstr ""
-#: Opcodes/physutil.c:356 Opcodes/physutil.c:366 Opcodes/physutil.c:376
+#: Opcodes/physutil.c:357 Opcodes/physutil.c:367 Opcodes/physutil.c:377
msgid "negative times not allowed!!, correcting\n"
msgstr ""
-#: Opcodes/pitch0.c:37
+#: Opcodes/pitch0.c:38
#, c-format
msgid "Muting new instances of instr %d\n"
msgstr ""
-#: Opcodes/pitch0.c:40
+#: Opcodes/pitch0.c:41
#, c-format
msgid "Allowing instrument %d to start\n"
msgstr ""
-#: Opcodes/pitch.c:84 Opcodes/spectra.c:78
+#: Opcodes/pitch.c:85 Opcodes/spectra.c:80
msgid "illegal iocts"
msgstr ""
-#: Opcodes/pitch.c:86 Opcodes/spectra.c:80
+#: Opcodes/pitch.c:87 Opcodes/spectra.c:82
msgid "illegal ifrqs"
msgstr ""
-#: Opcodes/pitch.c:180 Opcodes/spectra.c:584
+#: Opcodes/pitch.c:181 Opcodes/spectra.c:586
msgid "illegal no of partials"
msgstr ""
-#: Opcodes/pitch.c:205
+#: Opcodes/pitch.c:206
msgid "per octave rolloff too steep"
msgstr ""
-#: Opcodes/pitch.c:219 Opcodes/spectra.c:625
+#: Opcodes/pitch.c:220 Opcodes/spectra.c:627
msgid "illegal lo-hi values"
msgstr ""
-#: Opcodes/pitch.c:454
+#: Opcodes/pitch.c:455
msgid "pitch: not initialised"
msgstr ""
-#: Opcodes/pitch.c:463
+#: Opcodes/pitch.c:464
msgid "Must have even number of arguments in mac\n"
msgstr ""
-#: Opcodes/pitch.c:552
+#: Opcodes/pitch.c:553
msgid "clockread: clock still running, call clockoff first"
msgstr ""
-#: Opcodes/pitch.c:578
+#: Opcodes/pitch.c:579
msgid "adsynt: wavetable not found!"
msgstr ""
-#: Opcodes/pitch.c:591
+#: Opcodes/pitch.c:592
msgid "adsynt: freqtable not found!"
msgstr ""
-#: Opcodes/pitch.c:596
+#: Opcodes/pitch.c:597
msgid "adsynt: partial count is greater than freqtable size!"
msgstr ""
-#: Opcodes/pitch.c:604
+#: Opcodes/pitch.c:605
msgid "adsynt: amptable not found!"
msgstr ""
-#: Opcodes/pitch.c:609
+#: Opcodes/pitch.c:610
msgid "adsynt: partial count is greater than amptable size!"
msgstr ""
-#: Opcodes/pitch.c:640
+#: Opcodes/pitch.c:641
msgid "adsynt: not initialised"
msgstr ""
-#: Opcodes/pitch.c:716
+#: Opcodes/pitch.c:717
msgid "hsboscil: not initialised"
msgstr ""
-#: Opcodes/pitch.c:799
+#: Opcodes/pitch.c:800
msgid "pitchamdf: maxcps must be > mincps !"
msgstr ""
-#: Opcodes/pitch.c:945
+#: Opcodes/pitch.c:946
msgid "pitchamdf: not initialised"
msgstr ""
-#: Opcodes/pitch.c:1125 Opcodes/pitch.c:1152
+#: Opcodes/pitch.c:1126 Opcodes/pitch.c:1153
msgid "phasorbnk: not initialised"
msgstr ""
-#: Opcodes/pitch.c:1214
+#: Opcodes/pitch.c:1215
msgid "pinkish: Invalid method code"
msgstr ""
-#: Opcodes/pitch.c:1225
+#: Opcodes/pitch.c:1226
msgid "pinkish: Filter method requires a-rate (noise) input"
msgstr ""
-#: Opcodes/pitch.c:1348
+#: Opcodes/pitch.c:1349
#, c-format
msgid ""
"pinkish: Gardner method requires 4-%d bands. Default %ld substituted for "
"%d.\n"
msgstr ""
-#: Opcodes/pitch.c:1731
+#: Opcodes/pitch.c:1733
msgid "Incorrect argument count in transeg"
msgstr ""
-#: Opcodes/pitch.c:1782
+#: Opcodes/pitch.c:1784
msgid "Incorrect argument count in transegb"
msgstr ""
-#: Opcodes/pitch.c:1832 Opcodes/pitch.c:1971
+#: Opcodes/pitch.c:1834 Opcodes/pitch.c:1977
#, fuzzy
msgid "Error: transeg not initialised (krate)\n"
msgstr "%s: не вÑÑÑÑплено Ñ Ð¸Ð½Ð¸ÑиаÑивой"
-#: Opcodes/pitch.c:1867 Opcodes/pitch.c:2013
+#: Opcodes/pitch.c:1869 Opcodes/pitch.c:2027
msgid "transeg: not initialised (arate)\n"
msgstr ""
-#: Opcodes/pitch.c:1921
+#: Opcodes/pitch.c:1924
msgid "Incorrect argument count in transegr"
msgstr ""
-#: Opcodes/pitch.c:2269
+#: Opcodes/pitch.c:2294
#, fuzzy
msgid "median: not initialised (arate)\n"
msgstr "%s: не вÑÑÑÑплено Ñ Ð¸Ð½Ð¸ÑиаÑивой"
-#: Opcodes/pitch.c:2273 Opcodes/pitch.c:2321
+#: Opcodes/pitch.c:2298 Opcodes/pitch.c:2345
#, c-format
msgid "median: window (%d)larger than maximum(%d); truncated"
msgstr ""
-#: Opcodes/pitch.c:2317
+#: Opcodes/pitch.c:2341
#, fuzzy
msgid "median: not initialised (krate)\n"
msgstr "%s: не вÑÑÑÑплено Ñ Ð¸Ð½Ð¸ÑиаÑивой"
-#: Opcodes/pitchtrack.c:369
+#: Opcodes/pitchtrack.c:370
#, c-format
msgid "ptrack: FFT size out of range; using %d\n"
msgstr ""
-#: Opcodes/pitchtrack.c:382
+#: Opcodes/pitchtrack.c:383
#, c-format
msgid "ptrack: FFT size not a power of 2; using %d\n"
msgstr ""
@@ -7484,7 +7370,7 @@ msgstr ""
msgid "Error: %s, %s"
msgstr ""
-#: Opcodes/ppp.c:20 Opcodes/pvlock.c:454 Opcodes/pvsband.c:46
+#: Opcodes/ppp.c:20 Opcodes/pvlock.c:478 Opcodes/pvsband.c:46
#: Opcodes/pvsbasic.c:575 Opcodes/pvsbasic.c:880 Opcodes/pvsbasic.c:1080
#: Opcodes/pvsbasic.c:1180 Opcodes/pvsbasic.c:1395 Opcodes/pvsbasic.c:1593
#: Opcodes/pvsbasic.c:1756 Opcodes/pvslock.c:20
@@ -7503,62 +7389,62 @@ msgstr ""
msgid "psynth: function table not found\n"
msgstr ""
-#: Opcodes/psynth.c:569 Opcodes/psynth.c:662
+#: Opcodes/psynth.c:567 Opcodes/psynth.c:660
msgid "Input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:767
+#: Opcodes/psynth.c:765
msgid "trsplit: input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:863 Opcodes/psynth.c:1027
+#: Opcodes/psynth.c:861 Opcodes/psynth.c:1023
msgid "trmix: first input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:868 Opcodes/psynth.c:1032
+#: Opcodes/psynth.c:866 Opcodes/psynth.c:1028
msgid "trmix: second input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:943
+#: Opcodes/psynth.c:939
msgid "trfil: input not in TRACKS format\n"
msgstr ""
-#: Opcodes/psynth.c:948
+#: Opcodes/psynth.c:944
msgid "trfil: could not find function table\n"
msgstr ""
-#: Opcodes/psynth.c:1135
+#: Opcodes/psynth.c:1131
msgid "binit: first input not in TRACKS format\n"
msgstr ""
-#: Opcodes/pvadd.c:153
+#: Opcodes/pvadd.c:150
msgid "PVADD ktimpnt truncated to last frame"
msgstr ""
-#: Opcodes/pvadd.c:191
+#: Opcodes/pvadd.c:188
msgid "pvadd: not initialised"
msgstr ""
-#: Opcodes/pvadd.c:193
+#: Opcodes/pvadd.c:190
msgid "PVADD timpnt < 0"
msgstr ""
-#: Opcodes/pvadd.c:201
+#: Opcodes/pvadd.c:198
#, c-format
msgid "PVADD cannot load %s"
msgstr ""
-#: Opcodes/pvadd.c:205 Opcodes/ugens8.c:223
+#: Opcodes/pvadd.c:202 Opcodes/ugens8.c:223
#, c-format
msgid "pvoc-ex file %s: FFT size %d too large for Csound"
msgstr ""
-#: Opcodes/pvadd.c:210
+#: Opcodes/pvadd.c:207
#, c-format
msgid "PV frame %ld seems too small in %s"
msgstr ""
-#: Opcodes/pvadd.c:215 Opcodes/pvread.c:115 Opcodes/ugens8.c:229
+#: Opcodes/pvadd.c:212 Opcodes/pvread.c:115 Opcodes/ugens8.c:229
#, c-format
msgid "pvoc-ex file %s is not mono"
msgstr ""
@@ -7568,98 +7454,98 @@ msgstr ""
msgid "PVBUFREAD cannot load %s"
msgstr ""
-#: Opcodes/pvinterp.c:76 Opcodes/vpvoc.c:206
+#: Opcodes/pvinterp.c:76 Opcodes/vpvoc.c:207
#, c-format
msgid "PVOC frame %ld bigger than %ld in %s"
msgstr ""
-#: Opcodes/pvinterp.c:81 Opcodes/vpvoc.c:211
+#: Opcodes/pvinterp.c:81 Opcodes/vpvoc.c:212
#, c-format
msgid "PVOC frame %ld seems too small in %s"
msgstr ""
-#: Opcodes/pvinterp.c:85 Opcodes/pvinterp.c:184 Opcodes/pvinterp.c:356
-#: Opcodes/vpvoc.c:215
+#: Opcodes/pvinterp.c:85 Opcodes/pvinterp.c:183 Opcodes/pvinterp.c:354
+#: Opcodes/vpvoc.c:216
#, c-format
msgid "%d chans (not 1) in PVOC file %s"
msgstr ""
-#: Opcodes/pvinterp.c:101 Opcodes/pvinterp.c:212 Opcodes/pvinterp.c:382
+#: Opcodes/pvinterp.c:100 Opcodes/pvinterp.c:210 Opcodes/pvinterp.c:379
#: Opcodes/ugens8.c:95 Opcodes/vpvoc.c:244
#, c-format
msgid "ksmps of %d needs wdw of %d, max is %d for pv %s"
msgstr ""
-#: Opcodes/pvinterp.c:122 Opcodes/pvinterp.c:256 Opcodes/pvinterp.c:431
+#: Opcodes/pvinterp.c:121 Opcodes/pvinterp.c:254 Opcodes/pvinterp.c:428
#: Opcodes/pvread.c:95 Opcodes/ugens8.c:156 Opcodes/vpvoc.c:297
msgid "PVOC ktimpnt truncated to last frame"
msgstr ""
-#: Opcodes/pvinterp.c:130
+#: Opcodes/pvinterp.c:129
msgid "pvbufread: not initialised"
msgstr ""
-#: Opcodes/pvinterp.c:132 Opcodes/pvinterp.c:306 Opcodes/pvinterp.c:492
+#: Opcodes/pvinterp.c:131 Opcodes/pvinterp.c:304 Opcodes/pvinterp.c:489
#: Opcodes/pvread.c:103 Opcodes/ugens8.c:206 Opcodes/vpvoc.c:361
msgid "PVOC timpnt < 0"
msgstr ""
-#: Opcodes/pvinterp.c:149
+#: Opcodes/pvinterp.c:148
msgid "pvinterp: associated pvbufread not found"
msgstr ""
-#: Opcodes/pvinterp.c:166
+#: Opcodes/pvinterp.c:165
#, c-format
msgid "PVINTERP cannot load %s"
msgstr ""
-#: Opcodes/pvinterp.c:179
+#: Opcodes/pvinterp.c:178
#, c-format
msgid "pvinterp: %s: frame size %d does not match pvbufread frame size %d\n"
msgstr ""
-#: Opcodes/pvinterp.c:300
+#: Opcodes/pvinterp.c:298
msgid "pvinterp: not initialised"
msgstr ""
-#: Opcodes/pvinterp.c:302 Opcodes/pvinterp.c:488 Opcodes/ugens8.c:202
+#: Opcodes/pvinterp.c:300 Opcodes/pvinterp.c:485 Opcodes/ugens8.c:202
#: Opcodes/vpvoc.c:357
msgid "PVOC transpose too low"
msgstr ""
-#: Opcodes/pvinterp.c:304 Opcodes/pvinterp.c:490 Opcodes/ugens8.c:204
+#: Opcodes/pvinterp.c:302 Opcodes/pvinterp.c:487 Opcodes/ugens8.c:204
#: Opcodes/vpvoc.c:359
msgid "PVOC transpose too high"
msgstr ""
-#: Opcodes/pvinterp.c:323
+#: Opcodes/pvinterp.c:321
msgid "pvcross: associated pvbufread not found"
msgstr ""
-#: Opcodes/pvinterp.c:339
+#: Opcodes/pvinterp.c:337
#, c-format
msgid "PVCROSS cannot load %s"
msgstr ""
-#: Opcodes/pvinterp.c:351
+#: Opcodes/pvinterp.c:349
#, c-format
msgid "pvcross: %s: frame size %d does not match pvbufread frame size %d\n"
msgstr ""
-#: Opcodes/pvinterp.c:454 Opcodes/vpvoc.c:322
+#: Opcodes/pvinterp.c:451 Opcodes/vpvoc.c:322
msgid "PVOC debug: one frame gets through\n"
msgstr ""
-#: Opcodes/pvinterp.c:486
+#: Opcodes/pvinterp.c:483
msgid "pvcross: not initialised"
msgstr ""
-#: Opcodes/pvlock.c:35 Opcodes/pvsbasic.c:380
+#: Opcodes/pvlock.c:59 Opcodes/pvsbasic.c:380
#, fuzzy
msgid "invalid number of output arguments"
msgstr "непÑавилÑнÑй ÑиÑло аÑгÑменÑов"
-#: Opcodes/pvlock.c:466
+#: Opcodes/pvlock.c:490
msgid "pvsfreeze: signal format must be amp-freq."
msgstr ""
@@ -7767,30 +7653,35 @@ msgstr ""
msgid "pvs2tab: signal format must be amp-phase or amp-freq."
msgstr ""
-#: Opcodes/pvsbasic.c:2151 Opcodes/pvsbasic.c:2190 Opcodes/tabvars.c:53
-#: Opcodes/tabvars.c:89 Opcodes/tabvars.c:131 Opcodes/tabvars.c:176
-#: Opcodes/tabvars.c:178
+#: Opcodes/pvsbasic.c:2151 Opcodes/pvsbasic.c:2189 Opcodes/tabvars.c:56
+#: Opcodes/tabvars.c:92 Opcodes/tabvars.c:134 Opcodes/tabvars.c:179
+#: Opcodes/tabvars.c:181
#, fuzzy
msgid "t-variable not initialised"
msgstr "%s: не вÑÑÑÑплено Ñ Ð¸Ð½Ð¸ÑиаÑивой"
-#: Opcodes/pvsbuffer.c:53 Opcodes/pvscent.c:164 Opcodes/pvsdemix.c:49
+#: Opcodes/pvsbuffer.c:56 Opcodes/pvscent.c:164 Opcodes/pvsdemix.c:49
msgid "SDFT case not implemented yet"
msgstr ""
-#: Opcodes/pvsbuffer.c:85
+#: Opcodes/pvsbuffer.c:89
msgid "error... could not create global var for handle\n"
msgstr ""
-#: Opcodes/pvsbuffer.c:143 Opcodes/pvsbuffer.c:190 Opcodes/pvsbuffer.c:258
+#: Opcodes/pvsbuffer.c:148 Opcodes/pvsbuffer.c:197 Opcodes/pvsbuffer.c:266
msgid "error... could not read handle from global variable\n"
msgstr ""
-#: Opcodes/pvsbuffer.c:238 Opcodes/pvsbuffer.c:306
+#: Opcodes/pvsbuffer.c:246 Opcodes/pvsbuffer.c:316
#, fuzzy
msgid "Invalid buffer handle"
msgstr "непÑавилÑнÑй ÑиÑло аÑгÑменÑов"
+#: Opcodes/pvsbuffer.c:285 Opcodes/pvsbuffer.c:291
+#, c-format
+msgid "table length too small: needed %d, got %d\n"
+msgstr ""
+
#: Opcodes/pvscent.c:42
msgid "pvscent: format must be amp-phase or amp-freq.\n"
msgstr ""
@@ -7981,48 +7872,48 @@ msgstr ""
msgid "seqtim: incorrect table number"
msgstr ""
-#: Opcodes/sfont.c:118
+#: Opcodes/sfont.c:121
#, c-format
msgid "sfload: cannot open SoundFont file \"%s\" (error %s)"
msgstr ""
-#: Opcodes/sfont.c:123
+#: Opcodes/sfont.c:126
msgid "Sfload: cannot use globals"
msgstr ""
-#: Opcodes/sfont.c:153
+#: Opcodes/sfont.c:156
msgid "sfload: could not open globals\n"
msgstr ""
-#: Opcodes/sfont.c:170
+#: Opcodes/sfont.c:173
msgid "Extending soundfonts"
msgstr ""
-#: Opcodes/sfont.c:201
+#: Opcodes/sfont.c:204
#, c-format
msgid ""
"\n"
"Preset list of \"%s\"\n"
msgstr ""
-#: Opcodes/sfont.c:204
+#: Opcodes/sfont.c:207
#, c-format
msgid "%3d) %-20s\tprog:%-3d bank:%d\n"
msgstr ""
-#: Opcodes/sfont.c:226
+#: Opcodes/sfont.c:229
#, c-format
msgid ""
"\n"
"Assigning all Presets of \"%s\" starting from %d (preset handle number)\n"
msgstr ""
-#: Opcodes/sfont.c:231
+#: Opcodes/sfont.c:234
#, c-format
msgid "%3d<--%-20s\t(prog:%-3d bank:%d)\n"
msgstr ""
-#: Opcodes/sfont.c:238
+#: Opcodes/sfont.c:241
#, c-format
msgid ""
"\n"
@@ -8030,38 +7921,38 @@ msgid ""
"\n"
msgstr ""
-#: Opcodes/sfont.c:251
+#: Opcodes/sfont.c:254
#, c-format
msgid ""
"\n"
"Instrument list of \"%s\"\n"
msgstr ""
-#: Opcodes/sfont.c:268
+#: Opcodes/sfont.c:271
#, c-format
msgid "sfpreset: preset handle too big (%d), max: %d"
msgstr ""
-#: Opcodes/sfont.c:284
+#: Opcodes/sfont.c:287
#, c-format
msgid ""
"sfpreset: cannot find any preset having prog number %d and bank number %d in "
"SoundFont file \"%s\""
msgstr ""
-#: Opcodes/sfont.c:306 Opcodes/sfont.c:2189
+#: Opcodes/sfont.c:309 Opcodes/sfont.c:2192
msgid "sfplay: invalid or out-of-range preset number"
msgstr ""
-#: Opcodes/sfont.c:633
+#: Opcodes/sfont.c:636
msgid "sfplaym: invalid or out-of-range preset number"
msgstr ""
-#: Opcodes/sfont.c:888 Opcodes/sfont.c:1150
+#: Opcodes/sfont.c:891 Opcodes/sfont.c:1153
msgid "sfinstr: instrument out of range"
msgstr ""
-#: Opcodes/sfont.c:1598 Opcodes/sfont.c:1835
+#: Opcodes/sfont.c:1601 Opcodes/sfont.c:1838
#, c-format
msgid ""
"SoundFont file \"%s\" contains ROM samples !\n"
@@ -8069,19 +7960,19 @@ msgid ""
"Session aborted !"
msgstr ""
-#: Opcodes/sfont.c:1987 Opcodes/sfont.c:1993
+#: Opcodes/sfont.c:1990 Opcodes/sfont.c:1996
msgid "Sfont: cannot use globals/"
msgstr ""
-#: Opcodes/sfont.c:1996
+#: Opcodes/sfont.c:1999
msgid "Sfont format not compatible"
msgstr ""
-#: Opcodes/sfont.c:2534
+#: Opcodes/sfont.c:2537
msgid "error... could not create sfont globals\n"
msgstr ""
-#: Opcodes/shape.c:49
+#: Opcodes/shape.c:51
msgid "powershape: ifullscale must be strictly positive"
msgstr ""
@@ -8093,25 +7984,25 @@ msgstr ""
msgid "ftgenonce error"
msgstr ""
-#: Opcodes/singwave.c:85
+#: Opcodes/singwave.c:86
msgid "No table for Modulatr"
msgstr ""
-#: Opcodes/singwave.c:127
+#: Opcodes/singwave.c:128
msgid "No table for Singwave"
msgstr ""
-#: Opcodes/singwave.c:207
+#: Opcodes/singwave.c:208
#, c-format
msgid "SingWave: rate=%f sweepRate=%f mytime=%f\n"
msgstr ""
-#: Opcodes/singwave.c:273
+#: Opcodes/singwave.c:280
#, c-format
msgid "Found Formant: %s (number %i)\n"
msgstr ""
-#: Opcodes/singwave.c:395
+#: Opcodes/singwave.c:397
#, c-format
msgid "Setting Phoneme: %d %f\n"
msgstr ""
@@ -8144,15 +8035,15 @@ msgstr ""
msgid "pvsarp: not initialised\n"
msgstr ""
-#: Opcodes/sndloop.c:995 Opcodes/sndloop.c:1092
+#: Opcodes/sndloop.c:995 Opcodes/sndloop.c:1091
msgid "signal format must be amp-phase or amp-freq.\n"
msgstr ""
-#: Opcodes/sndloop.c:1072
+#: Opcodes/sndloop.c:1071
msgid "pvsvoc: not initialised\n"
msgstr ""
-#: Opcodes/sndloop.c:1123
+#: Opcodes/sndloop.c:1122
msgid "pvsmorph: not initialised\n"
msgstr ""
@@ -8172,25 +8063,27 @@ msgstr ""
msgid "sndwarpst: not initialised"
msgstr ""
-#: Opcodes/sockrecv.c:123 Opcodes/sockrecv.c:213 Opcodes/sockrecv.c:300
-#: Opcodes/socksend.c:75 Opcodes/socksend.c:133 Opcodes/socksend.c:190
-msgid "creating socket"
+#: Opcodes/sockrecv.c:117 Opcodes/sockrecv.c:215 Opcodes/sockrecv.c:314
+#: Opcodes/socksend.c:73 Opcodes/socksend.c:157 Opcodes/socksend.c:252
+#, c-format
+msgid "Winsock2 failed to start: %d"
msgstr ""
-#: Opcodes/sockrecv.c:322
-msgid "connect failed"
+#: Opcodes/sockrecv.c:131 Opcodes/sockrecv.c:227 Opcodes/sockrecv.c:320
+#: Opcodes/socksend.c:86 Opcodes/socksend.c:171 Opcodes/socksend.c:259
+msgid "creating socket"
msgstr ""
-#: Opcodes/sockrecv.c:335
-msgid "read from socket failed"
+#: Opcodes/sockrecv.c:347
+#, c-format
+msgid "connect failed (%d)"
msgstr ""
-#: Opcodes/socksend.c:67 Opcodes/socksend.c:125
-#, c-format
-msgid "The buffersize must be <= %d samples to fit in a udp-packet."
+#: Opcodes/sockrecv.c:360
+msgid "read from socket failed"
msgstr ""
-#: Opcodes/socksend.c:107 Opcodes/socksend.c:169
+#: Opcodes/socksend.c:126 Opcodes/socksend.c:215
msgid "sendto failed"
msgstr ""
@@ -8210,199 +8103,199 @@ msgstr ""
msgid "spat3di: not initialised"
msgstr ""
-#: Opcodes/spectra.c:82
+#: Opcodes/spectra.c:84
msgid "illegal Q value"
msgstr ""
-#: Opcodes/spectra.c:84
+#: Opcodes/spectra.c:86
msgid "unknown dbout code"
msgstr ""
-#: Opcodes/spectra.c:104
+#: Opcodes/spectra.c:106
#, c-format
msgid "spectrum: %s window, %s out, making tables ...\n"
msgstr ""
-#: Opcodes/spectra.c:123
+#: Opcodes/spectra.c:125
#, c-format
msgid ""
"\thigh cps %7.1f\n"
"\t low cps %7.1f\n"
msgstr ""
-#: Opcodes/spectra.c:138
+#: Opcodes/spectra.c:140
#, c-format
msgid "\tQ %4.1f uses a %d sample window each octdown\n"
msgstr ""
-#: Opcodes/spectra.c:169
+#: Opcodes/spectra.c:171
msgid "spectrum windowed sines:"
msgstr ""
-#: Opcodes/spectra.c:187
+#: Opcodes/spectra.c:189
#, c-format
msgid "\t%d oct analysis window delay = %ld samples (%d msecs)\n"
msgstr ""
-#: Opcodes/spectra.c:195
+#: Opcodes/spectra.c:197
msgid "octdown buffers:"
msgstr ""
-#: Opcodes/spectra.c:513 Opcodes/spectra.c:553
+#: Opcodes/spectra.c:515 Opcodes/spectra.c:555
msgid "specdisp: not initialised"
msgstr ""
-#: Opcodes/spectra.c:523
+#: Opcodes/spectra.c:525
#, c-format
msgid "instr %d %s, dft (%s), %ld octaves (%d - %d Hz):"
msgstr ""
-#: Opcodes/spectra.c:530
+#: Opcodes/spectra.c:532
#, c-format
msgid "instr %d %s, dft (%s), %ld octaves (%3.1f - %3.1f Hz):"
msgstr ""
-#: Opcodes/spectra.c:611
+#: Opcodes/spectra.c:613
msgid "per oct rolloff too steep"
msgstr ""
-#: Opcodes/spectra.c:632
+#: Opcodes/spectra.c:634
#, c-format
msgid "specptrk: %d freqs, %d%s ptls at "
msgstr ""
-#: Opcodes/spectra.c:633
+#: Opcodes/spectra.c:635
msgid " odd"
msgstr ""
-#: Opcodes/spectra.c:637
+#: Opcodes/spectra.c:639
msgid ""
"\n"
"\t\trolloff vals:"
msgstr ""
-#: Opcodes/spectra.c:660
+#: Opcodes/spectra.c:662
#, c-format
msgid ""
"\n"
"\tdbthresh %4.1f: X-corr %s threshon %4.1f, threshoff %4.1f\n"
msgstr ""
-#: Opcodes/spectra.c:817
+#: Opcodes/spectra.c:819
msgid "specptrk: not initialised"
msgstr ""
-#: Opcodes/spectra.c:849
+#: Opcodes/spectra.c:851
msgid "specsum: not initialised"
msgstr ""
-#: Opcodes/spectra.c:860
+#: Opcodes/spectra.c:862
msgid "inputs have different sizes"
msgstr ""
-#: Opcodes/spectra.c:863
+#: Opcodes/spectra.c:865
msgid "inputs have diff. time periods"
msgstr ""
-#: Opcodes/spectra.c:867
+#: Opcodes/spectra.c:869
msgid "inputs have different freq resolution"
msgstr ""
-#: Opcodes/spectra.c:870
+#: Opcodes/spectra.c:872
msgid "inputs have different amptypes"
msgstr ""
-#: Opcodes/spectra.c:902
+#: Opcodes/spectra.c:904
msgid "specaddm: not initialised"
msgstr ""
-#: Opcodes/spectra.c:926
+#: Opcodes/spectra.c:928
msgid "specdiff: local buffers not initialised"
msgstr ""
-#: Opcodes/spectra.c:964
+#: Opcodes/spectra.c:966
msgid "specdiff: not initialised"
msgstr ""
-#: Opcodes/spectra.c:986
+#: Opcodes/spectra.c:988
msgid "specscal: local buffer not initialised"
msgstr ""
-#: Opcodes/spectra.c:991
+#: Opcodes/spectra.c:993
msgid "missing fscale table"
msgstr ""
-#: Opcodes/spectra.c:1057
+#: Opcodes/spectra.c:1059
msgid "specscal: not initialised"
msgstr ""
-#: Opcodes/spectra.c:1081
+#: Opcodes/spectra.c:1083
msgid "spechist: local buffers not intiialised"
msgstr ""
-#: Opcodes/spectra.c:1113
+#: Opcodes/spectra.c:1115
msgid "spechist: not initialised"
msgstr ""
-#: Opcodes/spectra.c:1134
+#: Opcodes/spectra.c:1136
msgid "specfilt: local buffers not initialised"
msgstr ""
-#: Opcodes/spectra.c:1142
+#: Opcodes/spectra.c:1144
msgid "missing htim ftable"
msgstr ""
-#: Opcodes/spectra.c:1165
+#: Opcodes/spectra.c:1167
msgid "htim ftable must be all-positive"
msgstr ""
-#: Opcodes/spectra.c:1169
+#: Opcodes/spectra.c:1171
#, c-format
msgid "coef range: %6.3f - %6.3f\n"
msgstr ""
-#: Opcodes/spectra.c:1201
+#: Opcodes/spectra.c:1203
msgid "specfilt: not initialised"
msgstr ""
-#: Opcodes/stackops.c:80
+#: Opcodes/stackops.c:81
msgid "fsig = : source signal is not initialised"
msgstr ""
-#: Opcodes/stackops.c:126
+#: Opcodes/stackops.c:125
msgid "stack overflow"
msgstr ""
-#: Opcodes/stackops.c:134
+#: Opcodes/stackops.c:131
msgid "cannot pop from empty stack"
msgstr ""
-#: Opcodes/stackops.c:142
+#: Opcodes/stackops.c:137
msgid "argument number or type mismatch"
msgstr ""
-#: Opcodes/stackops.c:150
+#: Opcodes/stackops.c:143
msgid "string argument is too long"
msgstr ""
-#: Opcodes/stackops.c:167
+#: Opcodes/stackops.c:160
msgid "Error allocating argument stack"
msgstr ""
-#: Opcodes/stackops.c:207 Top/argdecode.c:1212 util/envext.c:99
+#: Opcodes/stackops.c:200 Top/argdecode.c:1212 util/envext.c:99
#: util/scale.c:248
msgid "too many arguments"
msgstr ""
-#: Opcodes/stackops.c:286
+#: Opcodes/stackops.c:279
msgid "the stack is already allocated"
msgstr ""
-#: Opcodes/stackops.c:637
+#: Opcodes/stackops.c:630
msgid "number of arguments != nchnls"
msgstr ""
-#: Opcodes/stdopcod.c:36
+#: Opcodes/stdopcod.c:37
msgid "stdopcod.c: error: globals already allocated"
msgstr ""
@@ -8417,36 +8310,45 @@ msgstr ""
msgid "RAWWAVE_PATH: %s\n"
msgstr ""
-#: Opcodes/syncgrain.c:175 Opcodes/syncgrain.c:338 Opcodes/syncgrain.c:683
+#: Opcodes/syncgrain.c:176 Opcodes/syncgrain.c:339 Opcodes/syncgrain.c:684
msgid "grain size smaller than 1 sample\n"
msgstr ""
-#: Opcodes/syncgrain.c:387
+#: Opcodes/syncgrain.c:388
msgid "diskgrain: invalid number of channels"
msgstr ""
-#: Opcodes/syncgrain.c:419
+#: Opcodes/syncgrain.c:420
msgid "diskgrain: could not open file\n"
msgstr ""
-#: Opcodes/syncgrain.c:423
+#: Opcodes/syncgrain.c:424
msgid ""
"diskgrain: soundfile channel numbers do not match the number of outputs \n"
msgstr ""
-#: Opcodes/syncgrain.c:435
+#: Opcodes/syncgrain.c:436
msgid "diskgrain: could not read file \n"
msgstr ""
-#: Opcodes/tabsum.c:39
+#: Opcodes/tabsum.c:40
msgid "tabsum: No table"
msgstr ""
-#: Opcodes/tabsum.c:54
+#: Opcodes/tabsum.c:55
#, fuzzy
msgid "tabsum: Not initialised"
msgstr "%s: не вÑÑÑÑплено Ñ Ð¸Ð½Ð¸ÑиаÑивой"
+#: Opcodes/tabvars.c:201 Opcodes/tabvars.c:218
+#, fuzzy
+msgid "t-var not initialised"
+msgstr "%s: не вÑÑÑÑплено Ñ Ð¸Ð½Ð¸ÑиаÑивой"
+
+#: Opcodes/tabvars.c:203 Opcodes/tabvars.c:220
+msgid "No table for copy2ftab"
+msgstr ""
+
#: Opcodes/ugens7.c:46 Opcodes/ugensa.c:49
msgid "illegal value for iolaps"
msgstr ""
@@ -8592,17 +8494,17 @@ msgstr ""
msgid "table in iftfn for ftmorf does not exist"
msgstr ""
-#: Opcodes/ugnorman.c:120
+#: Opcodes/ugnorman.c:121
#, c-format
msgid "%s: Ats file %s not read (does it exist?)"
msgstr ""
-#: Opcodes/ugnorman.c:131
+#: Opcodes/ugnorman.c:132
#, c-format
msgid "%s: either %s is not an ATS file or the byte endianness is wrong"
msgstr ""
-#: Opcodes/ugnorman.c:139
+#: Opcodes/ugnorman.c:140
#, c-format
msgid ""
"%s: %s is byte-swapped\n"
@@ -8610,125 +8512,125 @@ msgid ""
"\twill not result in different audio, but they may slow down processing."
msgstr ""
-#: Opcodes/ugnorman.c:175
+#: Opcodes/ugnorman.c:176
msgid ""
"ATSINFO: location is out of bounds: 0-8 are the only possible selections"
msgstr ""
-#: Opcodes/ugnorman.c:265
+#: Opcodes/ugnorman.c:266
#, c-format
msgid "ATSREAD: partial %i out of range, max allowed is %i"
msgstr ""
-#: Opcodes/ugnorman.c:291
+#: Opcodes/ugnorman.c:292
msgid "Type not implemented"
msgstr ""
-#: Opcodes/ugnorman.c:310
+#: Opcodes/ugnorman.c:311
msgid "ATSREAD: only positive time pointer values allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:319
+#: Opcodes/ugnorman.c:320
msgid "ATSREAD: timepointer out of range, truncated to last frame\n"
msgstr ""
-#: Opcodes/ugnorman.c:332
+#: Opcodes/ugnorman.c:333
msgid "ATSREAD: not initialised"
msgstr ""
-#: Opcodes/ugnorman.c:394
+#: Opcodes/ugnorman.c:395
#, c-format
msgid "ATSREADNZ: band %i out of range, 1-25 are the valid band values"
msgstr ""
-#: Opcodes/ugnorman.c:412
+#: Opcodes/ugnorman.c:413
msgid "ATSREADNZ: Type either not implemented or does not contain noise"
msgstr ""
-#: Opcodes/ugnorman.c:431
+#: Opcodes/ugnorman.c:432
msgid "ATSREADNZ: only positive time pointer values allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:440
+#: Opcodes/ugnorman.c:441
msgid "ATSREADNZ: timepointer out of range, truncated to last frame\n"
msgstr ""
-#: Opcodes/ugnorman.c:449
+#: Opcodes/ugnorman.c:450
msgid "ATSREADNZ: not initialised"
msgstr ""
-#: Opcodes/ugnorman.c:467
+#: Opcodes/ugnorman.c:468
msgid "ATSADD: Function table number for synthesis waveform not valid"
msgstr ""
-#: Opcodes/ugnorman.c:475
+#: Opcodes/ugnorman.c:476
msgid "ATSADD: Gate Function table number not valid"
msgstr ""
-#: Opcodes/ugnorman.c:521
+#: Opcodes/ugnorman.c:522
#, c-format
msgid "ATSADD: Partial(s) out of range, max partial allowed is %i"
msgstr ""
-#: Opcodes/ugnorman.c:555
+#: Opcodes/ugnorman.c:556
msgid "ATSADD: Type not implemented"
msgstr ""
-#: Opcodes/ugnorman.c:585
+#: Opcodes/ugnorman.c:586
msgid ""
"ATSADD: only positive time pointer values are allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:594
+#: Opcodes/ugnorman.c:595
msgid "ATSADD: time pointer out of range, truncating to last frame\n"
msgstr ""
-#: Opcodes/ugnorman.c:638
+#: Opcodes/ugnorman.c:639
msgid "ATSADD: not initialised"
msgstr ""
-#: Opcodes/ugnorman.c:842
+#: Opcodes/ugnorman.c:845
msgid "ATSADDNZ: This file type contains no noise"
msgstr ""
-#: Opcodes/ugnorman.c:846
+#: Opcodes/ugnorman.c:849
msgid "ATSADDNZ: This file type has not been implemented in this code yet."
msgstr ""
-#: Opcodes/ugnorman.c:869
+#: Opcodes/ugnorman.c:872
msgid "ATSADDNZ: Band(s) out of range, max band allowed is 25"
msgstr ""
-#: Opcodes/ugnorman.c:886
+#: Opcodes/ugnorman.c:889
msgid ""
"ATSADDNZ: Type either has no noise or is not implemented (only type 3 and 4 "
"work now)"
msgstr ""
-#: Opcodes/ugnorman.c:1002
+#: Opcodes/ugnorman.c:1005
msgid ""
"ATSADDNZ: only positive time pointer values are allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:1011
+#: Opcodes/ugnorman.c:1014
msgid "ATSADDNZ: time pointer out of range, truncating to last frame\n"
msgstr ""
-#: Opcodes/ugnorman.c:1165
+#: Opcodes/ugnorman.c:1168
#, c-format
msgid "ATSSINNOI: Partial(s) out of range, max partial allowed is %i"
msgstr ""
-#: Opcodes/ugnorman.c:1202
+#: Opcodes/ugnorman.c:1205
msgid "ATSSINNOI: Type not implemented"
msgstr ""
-#: Opcodes/ugnorman.c:1315
+#: Opcodes/ugnorman.c:1316
msgid ""
"ATSSINNOI: only positive time pointer values are allowed, setting to zero\n"
msgstr ""
-#: Opcodes/ugnorman.c:1324
+#: Opcodes/ugnorman.c:1325
msgid "ATSSINNOI: time pointer out of range, truncating to last frame\n"
msgstr ""
@@ -8801,44 +8703,44 @@ msgstr ""
msgid "ATSCROSS: you must have an atsbufread before an atsinterpread"
msgstr ""
-#: Opcodes/ugsc.c:394
+#: Opcodes/ugsc.c:390
msgid "Phaser mode must be either 1 or 2"
msgstr ""
-#: Opcodes/vbap.c:57
+#: Opcodes/vbap.c:59
msgid "vbap: error allocating loudspeaker table"
msgstr ""
-#: Opcodes/vbap.c:264
+#: Opcodes/vbap.c:266
msgid ""
"Number of loudspeakers is zero\n"
"Exiting"
msgstr ""
-#: Opcodes/vbap.c:573
+#: Opcodes/vbap.c:575
msgid "Error in loudspeaker dimension."
msgstr ""
-#: Opcodes/vbap.c:596
+#: Opcodes/vbap.c:598
msgid "Too few loudspeakers"
msgstr ""
-#: Opcodes/vbap.c:622
+#: Opcodes/vbap.c:624
msgid "Not valid 3-D configuration"
msgstr ""
-#: Opcodes/vbap.c:668 Opcodes/vbap.c:767
+#: Opcodes/vbap.c:670 Opcodes/vbap.c:769
msgid ""
"\n"
"Configured loudspeakers\n"
msgstr ""
-#: Opcodes/vbap.c:670
+#: Opcodes/vbap.c:672
#, c-format
msgid "Triplet %d Loudspeakers: "
msgstr ""
-#: Opcodes/vbap.c:769
+#: Opcodes/vbap.c:771
#, c-format
msgid "Pair %d Loudspeakers: "
msgstr ""
@@ -8920,41 +8822,33 @@ msgstr ""
msgid "Have to have at least %d directions in vbapzmove"
msgstr ""
-#: Opcodes/Vosim.c:49
+#: Opcodes/Vosim.c:51
msgid "vosim: pulse table not found"
msgstr ""
-#: Opcodes/Vosim.c:72
+#: Opcodes/Vosim.c:74
msgid "vosim: zero kfund. 'Infinite' length event generated."
msgstr ""
-#: Opcodes/Vosim.c:80
+#: Opcodes/Vosim.c:82
#, c-format
msgid "vosim: kfund (%f) > sr. Generating ksmps silence."
msgstr ""
-#: Opcodes/Vosim.c:158
+#: Opcodes/Vosim.c:160
msgid "vosim: not initialised"
msgstr ""
-#: Opcodes/vpvoc.c:118
-msgid "tableseg: not initialised"
-msgstr ""
-
-#: Opcodes/vpvoc.c:146
-msgid "tablexseg: not initialised"
-msgstr ""
-
-#: Opcodes/vpvoc.c:172
+#: Opcodes/vpvoc.c:173
#, c-format
msgid "vpvoc: Could not find ifnmagctrl table %f"
msgstr ""
-#: Opcodes/vpvoc.c:178
+#: Opcodes/vpvoc.c:179
msgid "vpvoc: associated tableseg not found"
msgstr ""
-#: Opcodes/vpvoc.c:194
+#: Opcodes/vpvoc.c:195
#, c-format
msgid "VPVOC cannot load %s"
msgstr ""
@@ -9071,47 +8965,47 @@ msgstr ""
msgid "-B N\tsamples per hardware sound I/O buffer"
msgstr ""
-#: Top/argdecode.c:75 util/mixer.c:95 util/scale.c:46 util/srconv.c:739
+#: Top/argdecode.c:75 util/mixer.c:95 util/scale.c:46 util/srconv.c:738
msgid "-A\tcreate an AIFF format output soundfile"
msgstr ""
-#: Top/argdecode.c:76 util/mixer.c:96 util/scale.c:47 util/srconv.c:741
+#: Top/argdecode.c:76 util/mixer.c:96 util/scale.c:47 util/srconv.c:740
msgid "-W\tcreate a WAV format output soundfile"
msgstr ""
-#: Top/argdecode.c:77 util/srconv.c:740
+#: Top/argdecode.c:77 util/srconv.c:739
msgid "-J\tcreate an IRCAM format output soundfile"
msgstr ""
-#: Top/argdecode.c:78 util/mixer.c:97 util/scale.c:48 util/srconv.c:742
+#: Top/argdecode.c:78 util/mixer.c:97 util/scale.c:48 util/srconv.c:741
msgid "-h\tno header on output soundfile"
msgstr ""
-#: Top/argdecode.c:79 util/mixer.c:99 util/scale.c:49 util/srconv.c:743
+#: Top/argdecode.c:79 util/mixer.c:99 util/scale.c:49 util/srconv.c:742
msgid "-c\t8-bit signed_char sound samples"
msgstr ""
-#: Top/argdecode.c:81 util/mixer.c:101 util/scale.c:50 util/srconv.c:744
+#: Top/argdecode.c:81 util/mixer.c:101 util/scale.c:50 util/srconv.c:743
msgid "-a\talaw sound samples"
msgstr ""
-#: Top/argdecode.c:83 util/mixer.c:98 util/mixer.c:100 util/srconv.c:745
+#: Top/argdecode.c:83 util/mixer.c:98 util/mixer.c:100 util/srconv.c:744
msgid "-8\t8-bit unsigned_char sound samples"
msgstr ""
-#: Top/argdecode.c:84 util/mixer.c:102 util/scale.c:51 util/srconv.c:746
+#: Top/argdecode.c:84 util/mixer.c:102 util/scale.c:51 util/srconv.c:745
msgid "-u\tulaw sound samples"
msgstr ""
-#: Top/argdecode.c:85 util/mixer.c:103 util/scale.c:52 util/srconv.c:747
+#: Top/argdecode.c:85 util/mixer.c:103 util/scale.c:52 util/srconv.c:746
msgid "-s\tshort_int sound samples"
msgstr ""
-#: Top/argdecode.c:86 util/mixer.c:104 util/scale.c:53 util/srconv.c:748
+#: Top/argdecode.c:86 util/mixer.c:104 util/scale.c:53 util/srconv.c:747
msgid "-l\tlong_int sound samples"
msgstr ""
-#: Top/argdecode.c:87 util/mixer.c:105 util/scale.c:54 util/srconv.c:749
+#: Top/argdecode.c:87 util/mixer.c:105 util/scale.c:54 util/srconv.c:748
msgid "-f\tfloat sound samples"
msgstr ""
@@ -9119,7 +9013,7 @@ msgstr ""
msgid "-3\t24bit sound samples"
msgstr ""
-#: Top/argdecode.c:89 util/srconv.c:750
+#: Top/argdecode.c:89 util/srconv.c:749
msgid "-r N\torchestra srate override"
msgstr ""
@@ -9127,7 +9021,7 @@ msgstr ""
msgid "-k N\torchestra krate override"
msgstr ""
-#: Top/argdecode.c:91 util/srconv.c:751
+#: Top/argdecode.c:91 util/srconv.c:750
msgid "-K\tDo not generate PEAK chunks"
msgstr ""
@@ -9187,7 +9081,7 @@ msgstr ""
msgid "-F fnam\tread MIDIfile event stream from file 'fnam'"
msgstr ""
-#: Top/argdecode.c:107 util/mixer.c:106 util/scale.c:59 util/srconv.c:752
+#: Top/argdecode.c:107 util/mixer.c:106 util/scale.c:59 util/srconv.c:751
msgid "-R\tcontinually rewrite header while writing soundfile (WAV/AIFF)"
msgstr ""
@@ -9195,7 +9089,7 @@ msgstr ""
msgid "-H#\tprint heartbeat style 1, 2 or 3 at each soundfile write"
msgstr ""
-#: Top/argdecode.c:109 util/mixer.c:108 util/scale.c:61 util/srconv.c:754
+#: Top/argdecode.c:109 util/mixer.c:108 util/scale.c:61 util/srconv.c:753
msgid "-N\tnotify (ring the bell) when score or miditrack is done"
msgstr ""
@@ -9681,16 +9575,16 @@ msgid "-M: stdin not supported on this platform"
msgstr ""
#: Top/argdecode.c:668 Top/argdecode.c:959 util/envext.c:84 util/mixer.c:205
-#: util/scale.c:173 util/srconv.c:248 util/xtrct.c:116
+#: util/scale.c:173 util/srconv.c:247 util/xtrct.c:116
msgid "no outfilename"
msgstr ""
-#: Top/argdecode.c:671 Top/argdecode.c:963 util/scale.c:177 util/srconv.c:252
+#: Top/argdecode.c:671 Top/argdecode.c:963 util/scale.c:177 util/srconv.c:251
#: util/xtrct.c:120
msgid "-o cannot be stdin"
msgstr ""
-#: Top/argdecode.c:675 Top/argdecode.c:967 util/scale.c:180 util/srconv.c:257
+#: Top/argdecode.c:675 Top/argdecode.c:967 util/scale.c:180 util/srconv.c:256
#: util/xtrct.c:123
msgid "stdout audio not supported"
msgstr ""
@@ -9810,164 +9704,164 @@ msgstr ""
msgid "cscoreFileGetCurrent: no fp current"
msgstr ""
-#: Top/csmodule.c:192
+#: Top/csmodule.c:199
#, c-format
msgid "not loading '%s' (uses incompatible floating point type)"
msgstr ""
-#: Top/csmodule.c:201
+#: Top/csmodule.c:209
#, c-format
msgid ""
"not loading '%s' (incompatible with this version of Csound (%d.%d/%d.%d)"
msgstr ""
-#: Top/csmodule.c:244
+#: Top/csmodule.c:252
#, c-format
msgid "could not open library '%s' (%s)"
msgstr ""
-#: Top/csmodule.c:247
+#: Top/csmodule.c:255
#, c-format
msgid "could not open library '%s' (%d)"
msgstr ""
-#: Top/csmodule.c:303
+#: Top/csmodule.c:311
#, c-format
msgid "'%s' is not a Csound plugin library"
msgstr ""
-#: Top/csmodule.c:314
+#: Top/csmodule.c:322
msgid "csoundLoadExternal(): memory allocation failure"
msgstr ""
-#: Top/csmodule.c:328 Top/csmodule.c:336
+#: Top/csmodule.c:336 Top/csmodule.c:344
#, c-format
msgid "Error in pre-initialisation function of module '%s'"
msgstr ""
-#: Top/csmodule.c:599 Top/csmodule.c:605 Top/csmodule.c:616 Top/csmodule.c:623
-#: Top/csmodule.c:629 Top/csmodule.c:637
+#: Top/csmodule.c:608 Top/csmodule.c:614 Top/csmodule.c:625 Top/csmodule.c:632
+#: Top/csmodule.c:638 Top/csmodule.c:646
msgid "Error opening plugin directory\n"
msgstr ""
-#: Top/csmodule.c:687
+#: Top/csmodule.c:696
#, c-format
msgid "Error opening plugin directory '%s': %s"
msgstr ""
-#: Top/csmodule.c:722
+#: Top/csmodule.c:731
#, c-format
msgid "path name too long, skipping '%s'"
msgstr ""
-#: Top/csmodule.c:728
+#: Top/csmodule.c:737
#, c-format
msgid "Library %s omitted\n"
msgstr ""
-#: Top/csmodule.c:764
+#: Top/csmodule.c:773
msgid "Loading command-line libraries:\n"
msgstr ""
-#: Top/csmodule.c:787
+#: Top/csmodule.c:796
#, c-format
msgid " *** error loading '%s'"
msgstr ""
-#: Top/csmodule.c:810
+#: Top/csmodule.c:819
#, c-format
msgid "Error starting module '%s'"
msgstr ""
-#: Top/csmodule.c:907
+#: Top/csmodule.c:918
#, c-format
msgid "Error de-initialising module '%s'"
msgstr ""
-#: Top/csound.c:1606 Top/csound.c:1626
+#: Top/csound.c:1636 Top/csound.c:1656
msgid "Early return from csoundPerformKsmps().\n"
msgstr ""
-#: Top/csound.c:1612
+#: Top/csound.c:1642
msgid "Score finished in csoundPerformKsmps().\n"
msgstr ""
-#: Top/csound.c:1645
+#: Top/csound.c:1675
msgid "Early return from csoundPerformBuffer().\n"
msgstr ""
-#: Top/csound.c:1670
+#: Top/csound.c:1700
msgid "Early return from csoundPerform().\n"
msgstr ""
-#: Top/csound.c:1677
+#: Top/csound.c:1707
msgid "Score finished in csoundPerform().\n"
msgstr ""
-#: Top/csound.c:1697
+#: Top/csound.c:1727
msgid "csoundPerform(): stopped.\n"
msgstr ""
-#: Top/csound.c:1968
+#: Top/csound.c:1998
msgid "WARNING: "
msgstr "ÐÐ ÐÐУÐÐ ÐÐÐÐÐÐÐ:"
-#: Top/csound.c:2089
+#: Top/csound.c:2119
msgid "rtdummy: failed to allocate globals"
msgstr ""
-#: Top/csound.c:2090
+#: Top/csound.c:2120
msgid "rtaudio: dummy module enabled\n"
msgstr ""
-#: Top/csound.c:2119 Top/csound.c:2155
+#: Top/csound.c:2149 Top/csound.c:2185
msgid " *** error: rtaudio module set to empty string"
msgstr ""
-#: Top/csound.c:2123 Top/csound.c:2159
+#: Top/csound.c:2153 Top/csound.c:2189
#, c-format
msgid " *** error: unknown rtaudio module: '%s'"
msgstr ""
-#: Top/csound.c:2241
+#: Top/csound.c:2271
msgid "WARNING: real time midi input disabled, using dummy functions\n"
msgstr ""
-#: Top/csound.c:2246 Top/csound.c:2280
+#: Top/csound.c:2276 Top/csound.c:2310
msgid "error: -+rtmidi set to empty string"
msgstr ""
-#: Top/csound.c:2249 Top/csound.c:2283
+#: Top/csound.c:2279 Top/csound.c:2313
#, c-format
msgid "error: -+rtmidi='%s': unknown module"
msgstr ""
-#: Top/csound.c:2275
+#: Top/csound.c:2305
msgid "WARNING: real time midi output disabled, using dummy functions\n"
msgstr ""
-#: Top/csound.c:2297
+#: Top/csound.c:2327
msgid "Unknown MIDI error"
msgstr ""
-#: Top/csound.c:2415
+#: Top/csound.c:2445
msgid "xyin not supported. use invalue opcode instead."
msgstr ""
-#: Top/csound.c:2522
+#: Top/csound.c:2552
msgid "Failed to allocate new opcode entry."
msgstr ""
-#: Top/csound.c:2545
+#: Top/csound.c:2575
#, c-format
msgid "Failed to allocate opcode entry for %s."
msgstr ""
-#: Top/csound.c:2876
+#: Top/csound.c:2906
msgid "Cannot open /proc/cpuinfo. Support for RDTSC is not available.\n"
msgstr ""
-#: Top/csound.c:2927
+#: Top/csound.c:2957
msgid "No valid CPU frequency entry was found in /proc/cpuinfo.\n"
msgstr ""
@@ -9975,25 +9869,25 @@ msgstr ""
msgid "Error allocating opcode list"
msgstr ""
-#: Top/main.c:161
+#: Top/main.c:160
#, c-format
msgid "WARNING: cannot open csoundrc file %s\n"
msgstr ""
-#: Top/main.c:164
+#: Top/main.c:163
#, c-format
msgid "Reading options from $CSOUNDRC: %s \n"
msgstr ""
-#: Top/main.c:173
+#: Top/main.c:172
msgid "Reading options from $HOME/.csoundrc\n"
msgstr ""
-#: Top/main.c:200
+#: Top/main.c:199
msgid "no orchestra name"
msgstr ""
-#: Top/main.c:225
+#: Top/main.c:224
msgid "Reading CSD failed ... stopping"
msgstr ""
@@ -10005,7 +9899,7 @@ msgstr ""
msgid "error: multiple uses of stdout"
msgstr ""
-#: Top/main.c:260 util/dnoise.c:268
+#: Top/main.c:260 util/dnoise.c:264
#, c-format
msgid "%s not a recognised SFOUTYP env setting"
msgstr ""
@@ -10018,58 +9912,62 @@ msgstr ""
msgid "realtime performance using dummy numeric scorefile\n"
msgstr ""
-#: Top/main.c:319
+#: Top/main.c:314
#, c-format
msgid "orchname: %s\n"
msgstr ""
-#: Top/main.c:321
-#, c-format
-msgid "scorename: %s\n"
+#: Top/main.c:334
+msgid "Stopping on parser failure\n"
msgstr ""
-#: Top/main.c:353
+#: Top/main.c:352
msgid "end of orchestra compile"
msgstr ""
-#: Top/main.c:360
+#: Top/main.c:359
#, c-format
msgid "using previous %s\n"
msgstr ""
-#: Top/main.c:373
+#: Top/main.c:369
#, c-format
msgid "cannot open scorefile %s"
msgstr ""
-#: Top/main.c:378 Top/main.c:399
-#, c-format
-msgid "cannot open %s for writing"
+#: Top/main.c:371
+msgid "sorting score ...\n"
msgstr ""
#: Top/main.c:381
-msgid "sorting score ...\n"
+#, c-format
+msgid "cannot extract %s, name conflict"
+msgstr ""
+
+#: Top/main.c:384
+#, c-format
+msgid "cannot open extract file %s"
msgstr ""
#: Top/main.c:388
#, c-format
-msgid "cannot extract %s, name conflict"
+msgid "cannot reopen %s"
msgstr ""
-#: Top/main.c:391
+#: Top/main.c:392
#, c-format
-msgid "cannot open extract file %s"
+msgid "cannot open %s for writing"
msgstr ""
-#: Top/main.c:401
+#: Top/main.c:394
msgid " ... extracting ...\n"
msgstr ""
-#: Top/main.c:414
+#: Top/main.c:405
msgid "end of score sort"
msgstr ""
-#: Top/main.c:416
+#: Top/main.c:407
msgid "Syntax check completed.\n"
msgstr ""
@@ -10134,163 +10032,158 @@ msgstr ""
msgid " *** error setting option '%s' to '%s': %s\n"
msgstr ""
-#: Top/one_file.c:105 Top/one_file.c:113
+#: Top/one_file.c:110 Top/one_file.c:118
msgid " *** cannot create temporary file"
msgstr ""
-#: Top/one_file.c:198
+#: Top/one_file.c:203
#, c-format
msgid "Removing temporary file %s ...\n"
msgstr ""
-#: Top/one_file.c:202
+#: Top/one_file.c:207
#, c-format
msgid "WARNING: could not remove %s\n"
msgstr ""
-#: Top/one_file.c:268 Top/one_file.c:296
+#: Top/one_file.c:274 Top/one_file.c:302
#, c-format
msgid "More than %d arguments in <CsOptions>"
msgstr ""
-#: Top/one_file.c:313
+#: Top/one_file.c:319
#, c-format
msgid "Invalid arguments in <CsOptions>: %s"
msgstr ""
-#: Top/one_file.c:316
+#: Top/one_file.c:322
#, c-format
msgid "Invalid arguments in .csoundrc or -@ file: %s"
msgstr ""
-#: Top/one_file.c:322 Top/one_file.c:790
+#: Top/one_file.c:328 Top/one_file.c:744
msgid "Missing end tag </CsOptions>"
msgstr ""
-#: Top/one_file.c:340 Top/one_file.c:372 Top/one_file.c:420
-#, c-format
-msgid "Creating %s (%p)\n"
-msgstr ""
-
-#: Top/one_file.c:343
-#, c-format
-msgid "Failed to create %s"
-msgstr ""
-
-#: Top/one_file.c:356
+#: Top/one_file.c:354
msgid "Missing end tag </CsInstruments>"
msgstr ""
-#: Top/one_file.c:389 Top/one_file.c:442
+#: Top/one_file.c:376 Top/one_file.c:430
msgid "Missing end tag </CsScore>"
msgstr ""
-#: Top/one_file.c:403 Top/one_file.c:408
+#: Top/one_file.c:391 Top/one_file.c:396
msgid "Missing program in tag <CsScore>"
msgstr ""
-#: Top/one_file.c:433
+#: Top/one_file.c:408
+#, c-format
+msgid "Creating %s (%p)\n"
+msgstr ""
+
+#: Top/one_file.c:421
msgid "External generation failed"
msgstr ""
-#: Top/one_file.c:520
+#: Top/one_file.c:468
#, c-format
msgid "Non base64 character %c(%2x)"
msgstr ""
-#: Top/one_file.c:539
+#: Top/one_file.c:487
msgid "Truncated byte at end of base64 stream"
msgstr ""
-#: Top/one_file.c:554
+#: Top/one_file.c:503
#, c-format
msgid "Cannot open temporary file (%s) for MIDI subfile"
msgstr ""
-#: Top/one_file.c:571
+#: Top/one_file.c:520
msgid "Missing end tag </CsMidifileB>"
msgstr ""
-#: Top/one_file.c:586 Top/one_file.c:633
+#: Top/one_file.c:536 Top/one_file.c:584
#, c-format
msgid "File %s already exists"
msgstr ""
-#: Top/one_file.c:591
+#: Top/one_file.c:541
#, c-format
msgid "Cannot open sample file (%s) subfile"
msgstr ""
-#: Top/one_file.c:605
+#: Top/one_file.c:555
msgid "Missing end tag </CsSampleB>"
msgstr ""
-#: Top/one_file.c:638
+#: Top/one_file.c:589
#, c-format
msgid "Cannot open file (%s) subfile"
msgstr ""
-#: Top/one_file.c:653
+#: Top/one_file.c:604
msgid "Missing end tag </CsFileB>"
msgstr ""
-#: Top/one_file.c:672
+#: Top/one_file.c:624
#, c-format
msgid "This CSD file requires a version of Csound before %d.%02d"
msgstr ""
-#: Top/one_file.c:680 Top/one_file.c:687
+#: Top/one_file.c:632 Top/one_file.c:639
#, c-format
msgid "This CSD file requires a version of Csound after %d.%02d"
msgstr ""
-#: Top/one_file.c:693
+#: Top/one_file.c:645
msgid "Missing end tag </CsVersion>"
msgstr ""
-#: Top/one_file.c:702
+#: Top/one_file.c:655
msgid "**** Licence Information ****\n"
msgstr ""
-#: Top/one_file.c:708
+#: Top/one_file.c:661
msgid "**** End of Licence Information ****\n"
msgstr ""
-#: Top/one_file.c:719
+#: Top/one_file.c:672
msgid "Missing end tag </CsLicence>"
msgstr ""
-#: Top/one_file.c:749
+#: Top/one_file.c:703
#, c-format
msgid "Failed to open csd file: %s"
msgstr ""
-#: Top/one_file.c:764
+#: Top/one_file.c:718
msgid "STARTING FILE\n"
msgstr ""
-#: Top/one_file.c:780
+#: Top/one_file.c:734
msgid "Creating options\n"
msgstr ""
-#: Top/one_file.c:786
+#: Top/one_file.c:740
msgid "Skipping <CsOptions>\n"
msgstr ""
-#: Top/one_file.c:800
+#: Top/one_file.c:754
msgid "Creating orchestra\n"
msgstr ""
-#: Top/one_file.c:805
+#: Top/one_file.c:759
msgid "Creating score\n"
msgstr ""
-#: Top/one_file.c:839
+#: Top/one_file.c:793
#, c-format
msgid "unknown CSD tag: %s\n"
msgstr ""
-#: Top/one_file.c:844
+#: Top/one_file.c:798
msgid "Could not find <CsoundSynthesizer> tag in CSD file.\n"
msgstr ""
@@ -10464,15 +10357,15 @@ msgstr ""
#, c-format
msgid ""
"\n"
-" Could not open %s for writing, bye...\n"
+"Could not open %s for writing, bye...\n"
msgstr ""
#: util/atsa.c:544
msgid "saving ATS data..."
msgstr ""
-#: util/atsa.c:546 util/atsa.c:2344 util/atsa.c:2358 util/atsa.c:2368
-#: util/atsa.c:2548 util/atsa.c:2611 util/atsa.c:2699
+#: util/atsa.c:546 util/atsa.c:2354 util/atsa.c:2368 util/atsa.c:2387
+#: util/atsa.c:2567 util/atsa.c:2630 util/atsa.c:2718
msgid "done!\n"
msgstr ""
@@ -10580,181 +10473,181 @@ msgid ""
"\n"
msgstr ""
-#: util/atsa.c:1482
+#: util/atsa.c:1492
#, c-format
msgid "atsa: error opening residual file '%s'"
msgstr ""
-#: util/atsa.c:1486
+#: util/atsa.c:1496
#, c-format
msgid "atsa: residual file has %d channels, must be stereo !"
msgstr ""
-#: util/atsa.c:1813
+#: util/atsa.c:1823
#, c-format
msgid ""
"\n"
"ERROR: cannot open file %s for writing\n"
msgstr ""
-#: util/atsa.c:1908
+#: util/atsa.c:1918
msgid "Error: sound not optimised !"
msgstr ""
-#: util/atsa.c:2003
+#: util/atsa.c:2013
#, c-format
msgid "atsa: cannot open input file '%s'"
msgstr ""
-#: util/atsa.c:2010
+#: util/atsa.c:2020
#, c-format
msgid "atsa: file has %d channels, must be mono !"
msgstr ""
-#: util/atsa.c:2015
+#: util/atsa.c:2025
msgid "tracking...\n"
msgstr ""
-#: util/atsa.c:2024
+#: util/atsa.c:2034
#, c-format
msgid "start %f out of bounds, corrected to 0.0"
msgstr ""
-#: util/atsa.c:2034
+#: util/atsa.c:2044
#, c-format
msgid "duration %f out of bounds, limited to file duration"
msgstr ""
-#: util/atsa.c:2040
+#: util/atsa.c:2050
#, c-format
msgid "start: %f duration: %f file dur: %f\n"
msgstr ""
-#: util/atsa.c:2047
+#: util/atsa.c:2057
#, c-format
msgid "lowest freq. %f out of bounds, forced to default: %f"
msgstr ""
-#: util/atsa.c:2057
+#: util/atsa.c:2067
#, c-format
msgid "highest freq. %f out of bounds, forced to default: %f"
msgstr ""
-#: util/atsa.c:2064
+#: util/atsa.c:2074
#, c-format
msgid ""
"freq. dev. %f out of bounds, should be > 0.0 and <= 1.0, forced to default: "
"%f"
msgstr ""
-#: util/atsa.c:2072
+#: util/atsa.c:2082
#, c-format
msgid ""
"windows cycles %d out of bounds, should be between 1 and 8, forced to "
"default: %d"
msgstr ""
-#: util/atsa.c:2080
+#: util/atsa.c:2090
#, c-format
msgid ""
"window type %d out of bounds, should be between 0 and 3, forced to default: "
"%d"
msgstr ""
-#: util/atsa.c:2088
+#: util/atsa.c:2098
#, c-format
msgid ""
"hop size %f out of bounds, should be > 0.0 and <= 1.0, forced to default: %f"
msgstr ""
-#: util/atsa.c:2096
+#: util/atsa.c:2106
#, c-format
msgid ""
"lowest magnitude %f out of bounds, should be >= 0.0 and <= 1.0, forced to "
"default: %f"
msgstr ""
-#: util/atsa.c:2120
+#: util/atsa.c:2130
#, c-format
msgid "atsa: %d frames are not enough for analysis, need at least %d"
msgstr ""
-#: util/atsa.c:2129
+#: util/atsa.c:2139
#, c-format
msgid "track length %d out of bounds, forced to: %d"
msgstr ""
-#: util/atsa.c:2138
+#: util/atsa.c:2148
#, c-format
msgid "min. segment length %d out of bounds, forced to: %d"
msgstr ""
-#: util/atsa.c:2147
+#: util/atsa.c:2157
#, c-format
msgid "min. gap length %d out of bounds, forced to: %d"
msgstr ""
-#: util/atsa.c:2153
+#: util/atsa.c:2163
#, c-format
msgid ""
"SMR threshold %f out of bounds, should be >= 0.0 and < %f dB SPL, forced to "
"default: %f"
msgstr ""
-#: util/atsa.c:2164
+#: util/atsa.c:2174
#, c-format
msgid ""
"min. seg. SMR %f out of bounds, should be >= %f and < %f dB SPL, forced to "
"default: %f"
msgstr ""
-#: util/atsa.c:2172
+#: util/atsa.c:2182
#, c-format
msgid ""
"last peak contribution %f out of bounds, should be >= 0.0 and <= 1.0, forced "
"to default: %f"
msgstr ""
-#: util/atsa.c:2180
+#: util/atsa.c:2190
#, c-format
msgid ""
"SMR contribution %f out of bounds, should be >= 0.0 and <= 1.0, forced to "
"default: %f"
msgstr ""
-#: util/atsa.c:2325
+#: util/atsa.c:2335
msgid "Initializing ATS data..."
msgstr ""
-#: util/atsa.c:2355
+#: util/atsa.c:2365
msgid "Computing residual..."
msgstr ""
-#: util/atsa.c:2366
+#: util/atsa.c:2381 util/atsa.c:2384
msgid "Analysing residual..."
msgstr ""
-#: util/atsa.c:2370
+#: util/atsa.c:2389
msgid "tracking completed.\n"
msgstr ""
-#: util/atsa.c:2478
+#: util/atsa.c:2497
msgid "Filling sound gaps..."
msgstr ""
-#: util/atsa.c:2566
+#: util/atsa.c:2585
msgid "Trimming short partials..."
msgstr ""
-#: util/atsa.c:2662
+#: util/atsa.c:2681
msgid "Computing averages..."
msgstr ""
-#: util/atsa.c:2713
+#: util/atsa.c:2732
msgid "No partials to track -- stopping\n"
msgstr ""
-#: util/atsa.c:2813
+#: util/atsa.c:2832
msgid "Soundfile analysis for ATS opcodes"
msgstr ""
@@ -10786,8 +10679,8 @@ msgstr ""
msgid "illegal number of filenames"
msgstr ""
-#: util/cvanal.c:113 util/dnoise.c:456 util/lpanal.c:518 util/pvanal.c:258
-#: util/srconv.c:351
+#: util/cvanal.c:113 util/dnoise.c:445 util/lpanal.c:518 util/pvanal.c:258
+#: util/srconv.c:350
#, c-format
msgid "error while opening %s"
msgstr ""
@@ -10827,256 +10720,256 @@ msgstr ""
msgid "Soundfile analysis for convolve"
msgstr ""
-#: util/dnoise.c:285
+#: util/dnoise.c:281
msgid "-o cannot be stdin\n"
msgstr ""
-#: util/dnoise.c:297
+#: util/dnoise.c:293
msgid "-A overriding local default WAV out"
msgstr ""
-#: util/dnoise.c:302
+#: util/dnoise.c:298
msgid "-J overriding local default AIFF/WAV out"
msgstr ""
-#: util/dnoise.c:309
+#: util/dnoise.c:305
msgid "-W overriding local default AIFF out"
msgstr ""
-#: util/dnoise.c:356
+#: util/dnoise.c:345
msgid "no t argument"
msgstr ""
-#: util/dnoise.c:379
+#: util/dnoise.c:368
msgid "no n argument"
msgstr ""
-#: util/dnoise.c:384
+#: util/dnoise.c:373
msgid "no b argument"
msgstr ""
-#: util/dnoise.c:392
+#: util/dnoise.c:381
msgid "no B argument"
msgstr ""
-#: util/dnoise.c:404
+#: util/dnoise.c:393
msgid "no E argument"
msgstr ""
-#: util/dnoise.c:408
+#: util/dnoise.c:397
msgid "no N argument"
msgstr ""
-#: util/dnoise.c:412
+#: util/dnoise.c:401
msgid "no M argument"
msgstr ""
-#: util/dnoise.c:416
+#: util/dnoise.c:405
msgid "no L argument"
msgstr ""
-#: util/dnoise.c:420
+#: util/dnoise.c:409
msgid "no w argument"
msgstr ""
-#: util/dnoise.c:424
+#: util/dnoise.c:413
msgid "no D argument"
msgstr ""
-#: util/dnoise.c:431 util/srconv.c:328
+#: util/dnoise.c:420 util/srconv.c:327
#, c-format
msgid "Looking at %c\n"
msgstr ""
-#: util/dnoise.c:438 util/srconv.c:336
+#: util/dnoise.c:427 util/srconv.c:335
#, c-format
msgid "Infile set to %s\n"
msgstr ""
-#: util/dnoise.c:441 util/srconv.c:339
+#: util/dnoise.c:430 util/srconv.c:338
#, c-format
msgid "End with %s\n"
msgstr ""
-#: util/dnoise.c:447
+#: util/dnoise.c:436
msgid "dnoise: no input file\n"
msgstr ""
-#: util/dnoise.c:451
+#: util/dnoise.c:440
msgid "Must have an example noise file (-i name)\n"
msgstr ""
-#: util/dnoise.c:479
+#: util/dnoise.c:468
#, c-format
msgid "cannot open %s.\n"
msgstr ""
-#: util/dnoise.c:491 util/srconv.c:461 util/srconv.c:473
+#: util/dnoise.c:480 util/srconv.c:460 util/srconv.c:472
#, c-format
msgid "cannot open %s."
msgstr ""
-#: util/dnoise.c:510
+#: util/dnoise.c:499
msgid "dnoise: input MUST be mono or stereo\n"
msgstr ""
-#: util/dnoise.c:518
+#: util/dnoise.c:507
msgid "dnoise: cannot open noise reference file\n"
msgstr ""
-#: util/dnoise.c:523
+#: util/dnoise.c:512
msgid "Incompatible sample rates\n"
msgstr ""
-#: util/dnoise.c:542
+#: util/dnoise.c:531
#, c-format
msgid "dnoise: warning - N not a valid power of two; revised N = %d\n"
msgstr ""
-#: util/dnoise.c:552
+#: util/dnoise.c:541
msgid "dnoise: warning - do not specify both M and W\n"
msgstr ""
-#: util/dnoise.c:562
+#: util/dnoise.c:551
msgid "dnoise: warning - invalid W ignored\n"
msgstr ""
-#: util/dnoise.c:576
+#: util/dnoise.c:565
msgid "dnoise: warning - M is too small\n"
msgstr ""
-#: util/dnoise.c:586
+#: util/dnoise.c:575
msgid "dnoise: M too large\n"
msgstr ""
-#: util/dnoise.c:592
+#: util/dnoise.c:581
msgid "dnoise: L too large\n"
msgstr ""
-#: util/dnoise.c:602
+#: util/dnoise.c:591
#, c-format
msgid "writing %u-byte blks of %s to %s"
msgstr ""
-#: util/dnoise.c:627 util/dnoise.c:666 util/dnoise.c:721 util/dnoise.c:732
-#: util/dnoise.c:736 util/dnoise.c:743 util/dnoise.c:753 util/dnoise.c:758
-#: util/dnoise.c:762 util/dnoise.c:766 util/dnoise.c:770
+#: util/dnoise.c:616 util/dnoise.c:655 util/dnoise.c:710 util/dnoise.c:721
+#: util/dnoise.c:725 util/dnoise.c:732 util/dnoise.c:742 util/dnoise.c:747
+#: util/dnoise.c:751 util/dnoise.c:755 util/dnoise.c:759
msgid "dnoise: insufficient memory\n"
msgstr ""
-#: util/dnoise.c:779 util/dnoise.c:788
+#: util/dnoise.c:768 util/dnoise.c:777
msgid "dnoise: begin time is greater than EOF of noise file!"
msgstr ""
-#: util/dnoise.c:820
+#: util/dnoise.c:809
msgid "dnoise: not enough samples of noise reference\n"
msgstr ""
-#: util/dnoise.c:1118
+#: util/dnoise.c:1103
#, c-format
msgid "%5.1f seconds of input complete\n"
msgstr ""
-#: util/dnoise.c:1137
+#: util/dnoise.c:1122
msgid "processing complete\n"
msgstr ""
-#: util/dnoise.c:1147
+#: util/dnoise.c:1132
msgid "usage: dnoise [flags] input_file"
msgstr ""
-#: util/dnoise.c:1149
+#: util/dnoise.c:1134
msgid "flags:"
msgstr ""
-#: util/dnoise.c:1150
+#: util/dnoise.c:1135
msgid "i = noise reference soundfile"
msgstr ""
-#: util/dnoise.c:1151
+#: util/dnoise.c:1136
msgid "o = output file"
msgstr ""
-#: util/dnoise.c:1152
+#: util/dnoise.c:1137
msgid "N = # of bandpass filters (1024)"
msgstr ""
-#: util/dnoise.c:1153
+#: util/dnoise.c:1138
msgid "w = filter overlap factor: {0,1,(2),3} DON'T USE -w AND -M"
msgstr ""
-#: util/dnoise.c:1154
+#: util/dnoise.c:1139
msgid "M = analysis window length (N-1 unless -w is specified)"
msgstr ""
-#: util/dnoise.c:1155
+#: util/dnoise.c:1140
msgid "L = synthesis window length (M)"
msgstr ""
-#: util/dnoise.c:1156
+#: util/dnoise.c:1141
msgid "D = decimation factor (M/8)"
msgstr ""
-#: util/dnoise.c:1157
+#: util/dnoise.c:1142
msgid "b = begin time in noise reference soundfile (0)"
msgstr ""
-#: util/dnoise.c:1158
+#: util/dnoise.c:1143
msgid "B = starting sample in noise reference soundfile (0)"
msgstr ""
-#: util/dnoise.c:1159
+#: util/dnoise.c:1144
msgid "e = end time in noise reference soundfile (end)"
msgstr ""
-#: util/dnoise.c:1160
+#: util/dnoise.c:1145
msgid "E = final sample in noise reference soundfile (end)"
msgstr ""
-#: util/dnoise.c:1161
+#: util/dnoise.c:1146
msgid "t = threshold above noise reference in dB (30)"
msgstr ""
-#: util/dnoise.c:1162
+#: util/dnoise.c:1147
msgid "S = sharpness of noise-gate turnoff (1) (1 to 5)"
msgstr ""
-#: util/dnoise.c:1163
+#: util/dnoise.c:1148
msgid "n = number of FFT frames to average over (5)"
msgstr ""
-#: util/dnoise.c:1164
+#: util/dnoise.c:1149
msgid "m = minimum gain of noise-gate when off in dB (-40)"
msgstr ""
-#: util/dnoise.c:1165
+#: util/dnoise.c:1150
msgid "V : verbose - print status info"
msgstr ""
-#: util/dnoise.c:1166
+#: util/dnoise.c:1151
msgid "A : AIFF format output"
msgstr ""
-#: util/dnoise.c:1167
+#: util/dnoise.c:1152
msgid "W : WAV format output"
msgstr ""
-#: util/dnoise.c:1168
+#: util/dnoise.c:1153
msgid "J : IRCAM format output"
msgstr ""
-#: util/dnoise.c:1187
+#: util/dnoise.c:1172
#, c-format
msgid "soundfile write returned sample count of %d, not %d\n"
msgstr ""
-#: util/dnoise.c:1189
+#: util/dnoise.c:1174
msgid ""
"(disk may be full...\n"
" closing the file ...)\n"
msgstr ""
-#: util/dnoise.c:1257
+#: util/dnoise.c:1242
msgid "Removes noise from a sound file"
msgstr ""
@@ -11084,7 +10977,7 @@ msgstr ""
msgid "Usage:\tenvext [-flags] soundfile\n"
msgstr ""
-#: util/envext.c:54 util/srconv.c:738
+#: util/envext.c:54 util/srconv.c:737
msgid "-o fnam\tsound output filename\n"
msgstr ""
@@ -11118,7 +11011,7 @@ msgstr ""
msgid "enveloping %ld sample frames (%3.1f secs)\n"
msgstr ""
-#: util/envext.c:179
+#: util/envext.c:177
msgid "Create a text file of envelope"
msgstr ""
@@ -11532,7 +11425,7 @@ msgstr ""
msgid "Legal flags are:"
msgstr ""
-#: util/mixer.c:107 util/scale.c:60 util/srconv.c:753
+#: util/mixer.c:107 util/scale.c:60 util/srconv.c:752
msgid "-H#\tprint a heartbeat style 1, 2 or 3 at each soundfile write"
msgstr ""
@@ -11572,7 +11465,7 @@ msgstr ""
msgid "mixer: error: "
msgstr ""
-#: util/mixer.c:188 util/scale.c:161 util/srconv.c:232
+#: util/mixer.c:188 util/scale.c:161 util/srconv.c:231
#, c-format
msgid "%s not a recognized SFOUTYP env setting"
msgstr ""
@@ -11801,17 +11694,17 @@ msgstr ""
msgid "Soundfile analysis for pvoc"
msgstr ""
-#: util/pvanal.c:469
+#: util/pvanal.c:467
#, c-format
msgid "pvxanal: unable to create analysis file: %s"
msgstr ""
-#: util/pvanal.c:500 util/pvanal.c:532
+#: util/pvanal.c:498 util/pvanal.c:530
#, c-format
msgid "pvxanal: error writing analysis frames: %s\n"
msgstr ""
-#: util/pvanal.c:542
+#: util/pvanal.c:540
#, c-format
msgid ""
"\n"
@@ -11901,7 +11794,7 @@ msgstr ""
msgid "-P fpnum\tscale file to given percentage of full"
msgstr ""
-#: util/scale.c:62 util/srconv.c:755
+#: util/scale.c:62 util/srconv.c:754
msgid "-- fnam\tlog output to file"
msgstr ""
@@ -12052,75 +11945,75 @@ msgstr ""
msgid "Sound format -%c has been overruled by -%c"
msgstr ""
-#: util/srconv.c:299
+#: util/srconv.c:298
msgid "No Q argument"
msgstr ""
-#: util/srconv.c:304
+#: util/srconv.c:303
msgid "No P argument"
msgstr ""
-#: util/srconv.c:313
+#: util/srconv.c:312
msgid "No r argument"
msgstr ""
-#: util/srconv.c:322
+#: util/srconv.c:321
msgid "No break file"
msgstr ""
-#: util/srconv.c:345
+#: util/srconv.c:344
msgid "No input given\n"
msgstr ""
-#: util/srconv.c:362
+#: util/srconv.c:361
msgid "srconv: cannot specify both -r and -P"
msgstr ""
-#: util/srconv.c:373
+#: util/srconv.c:372
msgid "srconv: cannot open time-vary function file"
msgstr ""
-#: util/srconv.c:389
+#: util/srconv.c:388
msgid "srconv: too few x-y pairs in time-vary function file"
msgstr ""
-#: util/srconv.c:403
+#: util/srconv.c:402
msgid "srconv: first x value in time-vary function must be 0"
msgstr ""
-#: util/srconv.c:408
+#: util/srconv.c:407
msgid "srconv: invalid initial y value in time-vary function"
msgstr ""
-#: util/srconv.c:413 util/srconv.c:705
+#: util/srconv.c:412 util/srconv.c:704
msgid "srconv: invalid x values in time-vary function"
msgstr ""
-#: util/srconv.c:732
+#: util/srconv.c:731
msgid ""
"usage: srconv [flags] infile\n"
"\n"
"flags:"
msgstr ""
-#: util/srconv.c:733
+#: util/srconv.c:732
msgid ""
"-P num\tpitch transposition ratio (srate/r) [do not specify both P and r]"
msgstr ""
-#: util/srconv.c:735
+#: util/srconv.c:734
msgid "-Q num\tquality factor (1 to 8: default = 2)"
msgstr ""
-#: util/srconv.c:736
+#: util/srconv.c:735
msgid "-i filnam\tbreak file"
msgstr ""
-#: util/srconv.c:737
+#: util/srconv.c:736
msgid "-r num\toutput sample rate (must be specified)"
msgstr ""
-#: util/srconv.c:821
+#: util/srconv.c:820
msgid "Sample rate conversion"
msgstr ""
@@ -12271,5 +12164,13 @@ msgid "Extract part of a sound file"
msgstr ""
#, fuzzy
+#~ msgid "tableseg: not initialized"
+#~ msgstr "%s: не вÑÑÑÑплено Ñ Ð¸Ð½Ð¸ÑиаÑивой"
+
+#, fuzzy
+#~ msgid "tablexseg: not initialized"
+#~ msgstr "%s: не вÑÑÑÑплено Ñ Ð¸Ð½Ð¸ÑиаÑивой"
+
+#, fuzzy
#~ msgid "OSCrecv: OSC has not been initialised"
#~ msgstr "%s: не вÑÑÑÑплено Ñ Ð¸Ð½Ð¸ÑиаÑивой"
diff --git a/po/update b/po/update
old mode 100644
new mode 100755
diff --git a/readme-csound5-complete.txt b/readme-csound5-complete.txt
index daef7f5..f48d39c 100644
--- a/readme-csound5-complete.txt
+++ b/readme-csound5-complete.txt
@@ -1,5 +1,5 @@
CSOUND AND CSOUND VST
-Version 5.14.0
+Version 5.14.2
A user-programmable and user-extensible sound processing language
and software synthesizer.
diff --git a/readme-csound5.txt b/readme-csound5.txt
index b97cc47..ecb459d 100644
--- a/readme-csound5.txt
+++ b/readme-csound5.txt
@@ -1,5 +1,5 @@
CSOUND
-Version 5.14.0
+Version 5.14.2
A user-programmable and user-extensible sound processing language
and software synthesizer.
diff --git a/samples/hrtf-44100-left.dat b/samples/hrtf-44100-left.dat
index 19d7b72..19a2947 100644
Binary files a/samples/hrtf-44100-left.dat and b/samples/hrtf-44100-left.dat differ
diff --git a/samples/hrtf-44100-right.dat b/samples/hrtf-44100-right.dat
index 17e33d6..b9f7b05 100644
Binary files a/samples/hrtf-44100-right.dat and b/samples/hrtf-44100-right.dat differ
diff --git a/samples/hrtf-48000-left.dat b/samples/hrtf-48000-left.dat
index 95daad6..9281583 100644
Binary files a/samples/hrtf-48000-left.dat and b/samples/hrtf-48000-left.dat differ
diff --git a/samples/hrtf-48000-right.dat b/samples/hrtf-48000-right.dat
index 4a10a0c..039d879 100644
Binary files a/samples/hrtf-48000-right.dat and b/samples/hrtf-48000-right.dat differ
diff --git a/samples/hrtf-96000-left.dat b/samples/hrtf-96000-left.dat
index 3f3f8c2..fdcdf7e 100644
Binary files a/samples/hrtf-96000-left.dat and b/samples/hrtf-96000-left.dat differ
diff --git a/samples/hrtf-96000-right.dat b/samples/hrtf-96000-right.dat
index 237ea81..7327ba0 100644
Binary files a/samples/hrtf-96000-right.dat and b/samples/hrtf-96000-right.dat differ
diff --git a/tests/test1.csd b/tests/test1.csd
index 0bfaada..e50ef63 100644
--- a/tests/test1.csd
+++ b/tests/test1.csd
@@ -6,12 +6,6 @@ sr=44100
ksmps=1
nchnls=1
-
-
-
-
-
-
instr 1 ;untitled
aout vco2 10000, 440
@@ -22,14 +16,6 @@ aout vco2 10000, 440
</CsInstruments>
<CsScore>
-
-
-
-
-
-
-
-
i1 0.0 2
e
diff --git a/tests/test10.csd b/tests/test10.csd
index 1bcedf0..81ec71b 100644
--- a/tests/test10.csd
+++ b/tests/test10.csd
@@ -39,14 +39,6 @@ aout vco2 kenv, ifreq
</CsInstruments>
<CsScore>
-
-
-
-
-
-
-
-
i1 0.0 2 440
e
diff --git a/tests/test11.csd b/tests/test11.csd
index 21ea750..1b9fd5b 100644
--- a/tests/test11.csd
+++ b/tests/test11.csd
@@ -40,13 +40,6 @@ aout vco2 kenv, ifreq
<CsScore>
-
-
-
-
-
-
-
i1 0.0 2 440
e
diff --git a/tests/test12.csd b/tests/test12.csd
index e60ce3f..3129dc6 100644
--- a/tests/test12.csd
+++ b/tests/test12.csd
@@ -31,14 +31,6 @@ aout vco2 kenv, ifreq
</CsInstruments>
<CsScore>
-
-
-
-
-
-
-
-
i1 0.0 2 440
e
diff --git a/tests/test13.csd b/tests/test13.csd
index 3addd3f..66a7ada 100644
--- a/tests/test13.csd
+++ b/tests/test13.csd
@@ -24,8 +24,6 @@ aout vco2 kenv, ifreq
</CsInstruments>
<CsScore>
-
-
i1 0.0 2 440 80
e
diff --git a/tests/test14.csd b/tests/test14.csd
index b21645d..a5b9c72 100644
--- a/tests/test14.csd
+++ b/tests/test14.csd
@@ -27,8 +27,6 @@ aout vco2 kenv, ifreq
</CsInstruments>
<CsScore>
-
-
i1 0.0 2 440 80
e
diff --git a/tests/test16.csd b/tests/test16.csd
index b543add..c20f4a3 100644
--- a/tests/test16.csd
+++ b/tests/test16.csd
@@ -32,14 +32,6 @@ aout vco2 kenv, kfreq
</CsInstruments>
<CsScore>
-
-
-
-
-
-
-
-
i1 0.0 2 440
e
diff --git a/tests/test17.csd b/tests/test17.csd
index 6196060..87ac7f4 100644
--- a/tests/test17.csd
+++ b/tests/test17.csd
@@ -35,13 +35,6 @@ aout vco2 kenv, kfreq
<CsScore>
-
-
-
-
-
-
-
i1 0.0 2 440
e
diff --git a/tests/test18.csd b/tests/test18.csd
index 048a1ed..726427d 100644
--- a/tests/test18.csd
+++ b/tests/test18.csd
@@ -34,13 +34,6 @@ aout vco2 kenv, kfreq
<CsScore>
-
-
-
-
-
-
-
i1 0.0 2 440
e
diff --git a/tests/test19.csd b/tests/test19.csd
index 573a5ac..0337cec 100644
--- a/tests/test19.csd
+++ b/tests/test19.csd
@@ -35,14 +35,6 @@ aout vco2 kenv, kfreq
</CsInstruments>
<CsScore>
-
-
-
-
-
-
-
-
i1 0.0 2 440 0
i1 + . 440 1
i1 + . 440 2
diff --git a/tests/test2.csd b/tests/test2.csd
index d20d244..d02e8b0 100644
--- a/tests/test2.csd
+++ b/tests/test2.csd
@@ -7,11 +7,6 @@ ksmps=1
nchnls=2
-
-
-
-
-
instr 1 ;untitled
aout vco2 10000, 440
@@ -23,13 +18,6 @@ aout vco2 10000, 440
<CsScore>
-
-
-
-
-
-
-
i1 0.0 2
e
diff --git a/tests/test3.csd b/tests/test3.csd
index fc18deb..a7d9947 100644
--- a/tests/test3.csd
+++ b/tests/test3.csd
@@ -22,13 +22,6 @@ aout vco2 iamp, ifreq
<CsScore>
-
-
-
-
-
-
-
i1 0.0 2
e
diff --git a/tests/test31.csd b/tests/test31.csd
index eebe6b3..f30c742 100644
--- a/tests/test31.csd
+++ b/tests/test31.csd
@@ -15,6 +15,55 @@ endin
</CsInstruments>
<CsScore>
-i1 0 .1
+i1 0 0.1
</CsScore>
-</CsoundSynthesizer>
+</CsoundSynthesizer><bsbPanel>
+ <label>Widgets</label>
+ <objectName/>
+ <x>72</x>
+ <y>179</y>
+ <width>400</width>
+ <height>200</height>
+ <visible>true</visible>
+ <uuid/>
+ <bgcolor mode="nobackground">
+ <r>231</r>
+ <g>46</g>
+ <b>255</b>
+ </bgcolor>
+ <bsbObject version="2" type="BSBVSlider">
+ <objectName>slider1</objectName>
+ <x>5</x>
+ <y>5</y>
+ <width>20</width>
+ <height>100</height>
+ <uuid>{1ae23f3b-d446-4eda-a053-d2fa4589b5d4}</uuid>
+ <visible>true</visible>
+ <midichan>0</midichan>
+ <midicc>-3</midicc>
+ <minimum>0.00000000</minimum>
+ <maximum>1.00000000</maximum>
+ <value>0.00000000</value>
+ <mode>lin</mode>
+ <mouseControl act="jump">continuous</mouseControl>
+ <resolution>-1.00000000</resolution>
+ <randomizable group="0">false</randomizable>
+ </bsbObject>
+</bsbPanel>
+<bsbPresets>
+</bsbPresets>
+<MacOptions>
+Version: 3
+Render: Real
+Ask: Yes
+Functions: ioObject
+Listing: Window
+WindowBounds: 72 179 400 200
+CurrentView: io
+IOViewEdit: On
+Options:
+</MacOptions>
+<MacGUI>
+ioView nobackground {59367, 11822, 65535}
+ioSlider {5, 5} {20, 100} 0.000000 1.000000 0.000000 slider1
+</MacGUI>
diff --git a/tests/test32.csd b/tests/test32.csd
index 29d868b..7b206ac 100644
--- a/tests/test32.csd
+++ b/tests/test32.csd
@@ -9,8 +9,8 @@ if isrc \
== 1 \
goto noise
print isrc
-goto \
- next
+ goto \
+ next
noise: asig rand 1
next:
@@ -19,7 +19,56 @@ endin
</CsInstruments>
<CsScore>
-
+e
</CsScore>
-</CsoundSynthesizer>
+</CsoundSynthesizer><bsbPanel>
+ <label>Widgets</label>
+ <objectName/>
+ <x>72</x>
+ <y>179</y>
+ <width>400</width>
+ <height>200</height>
+ <visible>true</visible>
+ <uuid/>
+ <bgcolor mode="nobackground">
+ <r>231</r>
+ <g>46</g>
+ <b>255</b>
+ </bgcolor>
+ <bsbObject version="2" type="BSBVSlider">
+ <objectName>slider1</objectName>
+ <x>5</x>
+ <y>5</y>
+ <width>20</width>
+ <height>100</height>
+ <uuid>{dc77e3c0-5395-4507-ba10-c7b84f8be663}</uuid>
+ <visible>true</visible>
+ <midichan>0</midichan>
+ <midicc>-3</midicc>
+ <minimum>0.00000000</minimum>
+ <maximum>1.00000000</maximum>
+ <value>0.00000000</value>
+ <mode>lin</mode>
+ <mouseControl act="jump">continuous</mouseControl>
+ <resolution>-1.00000000</resolution>
+ <randomizable group="0">false</randomizable>
+ </bsbObject>
+</bsbPanel>
+<bsbPresets>
+</bsbPresets>
+<MacOptions>
+Version: 3
+Render: Real
+Ask: Yes
+Functions: ioObject
+Listing: Window
+WindowBounds: 72 179 400 200
+CurrentView: io
+IOViewEdit: On
+Options:
+</MacOptions>
+<MacGUI>
+ioView nobackground {59367, 11822, 65535}
+ioSlider {5, 5} {20, 100} 0.000000 1.000000 0.000000 slider1
+</MacGUI>
diff --git a/tests/test39.csd b/tests/test39.csd
index a1216da..9329a88 100644
--- a/tests/test39.csd
+++ b/tests/test39.csd
@@ -21,4 +21,55 @@ e
</CsScore>
-</CsoundSynthesizer>
\ No newline at end of file
+</CsoundSynthesizer>
+<bsbPanel>
+ <label>Widgets</label>
+ <objectName/>
+ <x>0</x>
+ <y>61</y>
+ <width>397</width>
+ <height>670</height>
+ <visible>true</visible>
+ <uuid/>
+ <bgcolor mode="nobackground">
+ <r>231</r>
+ <g>46</g>
+ <b>255</b>
+ </bgcolor>
+ <bsbObject version="2" type="BSBVSlider">
+ <objectName>slider1</objectName>
+ <x>5</x>
+ <y>5</y>
+ <width>20</width>
+ <height>100</height>
+ <uuid>{d7962195-d850-4007-966f-0a35711f7def}</uuid>
+ <visible>true</visible>
+ <midichan>0</midichan>
+ <midicc>-3</midicc>
+ <minimum>0.00000000</minimum>
+ <maximum>1.00000000</maximum>
+ <value>0.00000000</value>
+ <mode>lin</mode>
+ <mouseControl act="jump">continuous</mouseControl>
+ <resolution>-1.00000000</resolution>
+ <randomizable group="0">false</randomizable>
+ </bsbObject>
+</bsbPanel>
+<bsbPresets>
+</bsbPresets>
+<MacOptions>
+Version: 3
+Render: Real
+Ask: Yes
+Functions: ioObject
+Listing: Window
+WindowBounds: 0 61 397 670
+CurrentView: io
+IOViewEdit: On
+Options:
+</MacOptions>
+
+<MacGUI>
+ioView nobackground {59367, 11822, 65535}
+ioSlider {5, 5} {20, 100} 0.000000 1.000000 0.000000 slider1
+</MacGUI>
diff --git a/tests/test4.csd b/tests/test4.csd
index 2554bdb..47ff09f 100644
--- a/tests/test4.csd
+++ b/tests/test4.csd
@@ -23,13 +23,6 @@ aout vco2 kenv, ifreq
<CsScore>
-
-
-
-
-
-
-
i1 0.0 2
e
diff --git a/tests/test41.csd b/tests/test41.csd
index 84cef34..9280ddc 100644
--- a/tests/test41.csd
+++ b/tests/test41.csd
@@ -40,13 +40,6 @@ aout vco2 kenv, ifreq
<CsScore>
-
-
-
-
-
-
-
i1 0.0 2 440
e
diff --git a/tests/test5.csd b/tests/test5.csd
index 33d155a..1b8ff78 100644
--- a/tests/test5.csd
+++ b/tests/test5.csd
@@ -24,13 +24,6 @@ aout vco2 kenv, ifreq
<CsScore>
-
-
-
-
-
-
-
i1 0.0 2
e
diff --git a/tests/test6.csd b/tests/test6.csd
index c5bbfab..1094948 100644
--- a/tests/test6.csd
+++ b/tests/test6.csd
@@ -24,13 +24,6 @@ aout vco2 kenv, ifreq
<CsScore>
-
-
-
-
-
-
-
i1 0.0 2 440
e
diff --git a/tests/test7.csd b/tests/test7.csd
index 14e5d62..58f858d 100644
--- a/tests/test7.csd
+++ b/tests/test7.csd
@@ -26,13 +26,6 @@ aout vco2 kenv, ifreq
<CsScore>
-
-
-
-
-
-
-
i1 0.0 2 440
e
diff --git a/tests/test8.csd b/tests/test8.csd
index 0b864a0..47fd341 100644
--- a/tests/test8.csd
+++ b/tests/test8.csd
@@ -26,13 +26,6 @@ aout vco2 kenv, ifreq
<CsScore>
-
-
-
-
-
-
-
i1 0.0 2 440
e
diff --git a/tests/test9.csd b/tests/test9.csd
index 787dd78..00bcf28 100644
--- a/tests/test9.csd
+++ b/tests/test9.csd
@@ -29,13 +29,6 @@ aout vco2 kenv, ifreq
<CsScore>
-
-
-
-
-
-
-
i1 0.0 2 440
e
diff --git a/util/atsa.c b/util/atsa.c
index 3836b87..fcea3b7 100644
--- a/util/atsa.c
+++ b/util/atsa.c
@@ -98,7 +98,7 @@ typedef float mus_sample_t;
#if defined(LINUX) || defined(MACOSX)
# define ATSA_RES_FILE "/tmp/atsa_res.wav"
#else
-# define ATSA_RES_FILE "atsa_res.wav"
+# define ATSA_RES_FILE "/atsa_res.wav"
#endif
/* constants and macros */
@@ -534,7 +534,7 @@ static int main_anal(CSOUND *csound, char *soundfile, char *ats_outfile,
fd = csound->FileOpen2(csound, &outfile, CSFILE_STD, ats_outfile, "wb",
NULL, CSFTYPE_ATS, 0);
if (fd == NULL) {
- csound->Die(csound, Str("\n Could not open %s for writing, bye...\n"),
+ csound->Die(csound, Str("\nCould not open %s for writing, bye...\n"),
ats_outfile);
}
/* call tracker */
@@ -721,7 +721,17 @@ static int atsa_main(CSOUND *csound, int argc, char **argv)
soundfile == NULL || soundfile[0] == '\0' ||
ats_outfile == NULL || ats_outfile[0] == '\0')
usage(csound);
+#ifdef WIN32
+ {
+ char buffer[160];
+ char * tmp = getenv("TEMP");
+ strncpy(buffer, tmp, 160);
+ strncat(buffer, ATSA_RES_FILE, 160);
+ val = main_anal(csound, soundfile, ats_outfile, anargs, buffer);
+ }
+#else
val = main_anal(csound, soundfile, ats_outfile, anargs, ATSA_RES_FILE);
+#endif
csound->Free(csound, anargs);
return (val);
}
@@ -2363,8 +2373,17 @@ static ATS_SOUND *tracker(CSOUND *csound, ANARGS *anargs, char *soundfile,
csound->Free(csound, bufs);
/* analyse residual */
if (anargs->type == 3 || anargs->type == 4) {
+#ifdef WIN32
+ char buffer[160];
+ char * tmp = getenv("TEMP");
+ strncpy(buffer, tmp, 160);
+ strncat(buffer, ATSA_RES_FILE, 160);
+ csound->Message(csound, Str("Analysing residual..."));
+ residual_analysis(csound, buffer, sound);
+#else
csound->Message(csound, Str("Analysing residual..."));
residual_analysis(csound, ATSA_RES_FILE, sound);
+#endif
csound->Message(csound, Str("done!\n"));
}
csound->Message(csound, Str("tracking completed.\n"));
diff --git a/util/dnoise.c b/util/dnoise.c
index d36943a..6e34f10 100644
--- a/util/dnoise.c
+++ b/util/dnoise.c
@@ -203,8 +203,8 @@ static int dnoise(CSOUND *csound, int argc, char **argv)
MYFLT
Ninv, /* 1. / N */
- RoverTwoPi, /* R/D divided by 2*Pi */
- TwoPioverR, /* 2*Pi divided by R/I */
+ //RoverTwoPi, /* R/D divided by 2*Pi */
+ //TwoPioverR, /* 2*Pi divided by R/I */
sum, /* scale factor for renormalizing windows */
rIn, /* decimated sampling rate */
rOut, /* pre-interpolated sampling rate */
@@ -220,8 +220,6 @@ static int dnoise(CSOUND *csound, int argc, char **argv)
R = -FL(1.0); /* input sampling rate */
int i,j,k, /* index variables */
- Dd, /* number of new inputs to read (Dd <= D) */
- Ii, /* number of new outputs to write (Ii <= I) */
ibs, /* current starting location in input buffer */
ibc, /* current location in input buffer */
obs, /* current starting location in output buffer */
@@ -243,7 +241,6 @@ static int dnoise(CSOUND *csound, int argc, char **argv)
first = 0; /* first-time-thru flag */
SOUNDIN *p, *pn;
- void *dummy;
char *infile = NULL, *nfile = NULL;
SNDFILE *inf = NULL, *outfd = NULL;
char c, *s;
@@ -252,7 +249,6 @@ static int dnoise(CSOUND *csound, int argc, char **argv)
MYFLT beg_ntime = FL(0.0), input_ndur = FL(0.0), srn = FL(0.0);
const char *envoutyp = NULL;
unsigned int outbufsiz = 0U;
- char outformch = 's';
int nrecs = 0;
csound->e0dbfs = csound->dbfs_to_float = FL(1.0);
@@ -314,31 +310,24 @@ static int dnoise(CSOUND *csound, int argc, char **argv)
O->sfheader = 0; /* skip sfheader */
break;
case 'c':
- outformch = c;
O->outformat = AE_CHAR; /* 8-bit char soundfile */
break;
case '8':
- outformch = c;
O->outformat = AE_UNCH; /* 8-bit unsigned char file */
break;
case 'a':
- outformch = c;
O->outformat = AE_ALAW; /* a-law soundfile */
break;
case 'u':
- outformch = c;
O->outformat = AE_ULAW; /* mu-law soundfile */
break;
case 's':
- outformch = c;
O->outformat = AE_SHORT; /* short_int soundfile */
break;
case 'l':
- outformch = c;
O->outformat = AE_LONG; /* long_int soundfile */
break;
case 'f':
- outformch = c;
O->outformat = AE_FLOAT; /* float soundfile */
break;
case 'R':
@@ -492,8 +481,8 @@ static int dnoise(CSOUND *csound, int argc, char **argv)
return -1;
}
/* register file to be closed by csoundReset() */
- dummy = csound->CreateFileHandle(csound, &outfd, CSFILE_SND_W,
- O->outfilename);
+ (void)csound->CreateFileHandle(csound, &outfd, CSFILE_SND_W,
+ O->outfilename);
sf_command(outfd, SFC_SET_CLIPPING, NULL, SF_TRUE);
}
csound->esr = (MYFLT) p->sr;
@@ -846,12 +835,8 @@ static int dnoise(CSOUND *csound, int argc, char **argv)
rIn = ((MYFLT) R / D);
rOut = ((MYFLT) R / I);
invR = FL(1.0) / R;
- RoverTwoPi = rIn / TWOPI_F;
- TwoPioverR = TWOPI_F / rOut;
nI = -(aLen / D) * D; /* input time (in samples) */
nO = nI; /* output time (in samples) */
- Dd = aLen + nI + 1; /* number of new inputs to read */
- Ii = 0; /* number of new outputs to write */
ibs = ibuflen + Chans * (nI - aLen - 1); /* starting position in ib1 */
ib1 = ibuf1; /* filled with zeros to start */
ib2 = ibuf2; /* first buffer of speech */
@@ -1182,7 +1167,7 @@ static int dnoise_usage(CSOUND *csound, int exitcode)
/* report soundfile write(osfd) error */
/* called after chk of write() bytecnt */
-static void sndwrterr(CSOUND *csound, SNDFILE *outfd, int nret, int nput)
+static void sndwrterr(CSOUND *csound, int nret, int nput)
{
csound->Message(csound, Str("soundfile write returned sample count of %d, "
"not %d\n"), nret, nput);
@@ -1201,7 +1186,7 @@ static int writebuffer(CSOUND *csound, SNDFILE *outfd,
if (outfd == NULL) return 0;
n = sf_write_MYFLT(outfd, outbuf, nsmps);
if (n < nsmps) {
- sndwrterr(csound, outfd, n, nsmps);
+ sndwrterr(csound, n, nsmps);
return -1;
}
if (O->rewrt_hdr)
diff --git a/util/envext.c b/util/envext.c
index 695accd..6e97dfe 100644
--- a/util/envext.c
+++ b/util/envext.c
@@ -133,7 +133,6 @@ static void
FindEnvelope(CSOUND *csound, SNDFILE *infd, SOUNDIN *p,
double window, char *outname)
{
- int chans;
double tpersample;
double max, min;
long mxpos, minpos;
@@ -147,7 +146,6 @@ FindEnvelope(CSOUND *csound, SNDFILE *infd, SOUNDIN *p,
outfile = fopen((outname == NULL ? "newenv" : outname), "w");
bufferlen = (int)(window*(double)p->sr);
buffer = (MYFLT*) malloc(bufferlen*sizeof(MYFLT));
- chans = p->nchanls;
tpersample = 1.0/(double)p->sr;
fprintf(outfile, "%.3f\t%.3f\n", 0.0, 0.0);
while ((read_in = csound->getsndin(csound,infd,buffer,bufferlen,p)) > 0) {
diff --git a/util/lpanal.c b/util/lpanal.c
index cd03ef0..4dc0b34 100644
--- a/util/lpanal.c
+++ b/util/lpanal.c
@@ -72,9 +72,9 @@ typedef struct {
/* Forward declaration */
-static void alpol(CSOUND *, LPC *, MYFLT *,
- double *, double *, double *, double *);
-static void gauss(CSOUND *, LPC *, double (*)[MAXPOLES], double*, double*);
+static void alpol(LPC *, MYFLT *,
+ double *, double *, double *, double *);
+static void gauss(LPC *, double (*)[MAXPOLES], double*, double*);
static void quit(CSOUND *, char *), lpdieu(CSOUND *, char *);
static void usage(CSOUND *);
static void ptable(CSOUND *, MYFLT, MYFLT, MYFLT, int, LPANAL_GLOBALS*);
@@ -103,7 +103,7 @@ static MYFLT getpch(CSOUND *, MYFLT *, LPANAL_GLOBALS*);
*
*/
-static void polyzero(int nmax, int n, double *a, double *zerore, double *zeroim,
+static void polyzero(int n, double *a, double *zerore, double *zeroim,
int *pt, int itmax, int *indic, double *work)
{
double u, v, w, k, m, f, fm, fc, xm, ym, xr, yr, xc, yc;
@@ -120,9 +120,9 @@ static void polyzero(int nmax, int n, double *a, double *zerore, double *zeroim,
return;
}
- for (i=0; i<=n; i++)
- work[i+1] = a[i];
-
+ /* for (i=0; i<=n; i++) */
+ /* work[i+1] = a[i]; */
+ memcpy(work+1, a, (n+1)*sizeof(double));
*indic = 0;
*pt = 0;
n1 = n;
@@ -592,7 +592,7 @@ static int lpanal(CSOUND *csound, int argc, char **argv)
(csound, Str("Starting new frame...\n"));
#endif
counter++;
- alpol(csound, &lpc, sigbuf, &errn, &rms1, &rms2, filterCoef);
+ alpol(&lpc, sigbuf, &errn, &rms1, &rms2, filterCoef);
/* Transfer results */
coef[0] = (MYFLT)rms2;
coef[1] = (MYFLT)rms1;
@@ -627,7 +627,7 @@ static int lpanal(CSOUND *csound, int argc, char **argv)
/* Get the Filter Poles */
- polyzero(100,lpc.poleCount,filterCoef,polePart1,polePart2,
+ polyzero(lpc.poleCount,filterCoef,polePart1,polePart2,
&poleFound,2000,&indic,workArray1);
if (poleFound<lpc.poleCount) {
@@ -750,7 +750,7 @@ static void lpdieu(CSOUND *csound, char *msg)
*
*/
-static void alpol(CSOUND *csound, LPC *thislp, MYFLT *sig, double *errn,
+static void alpol(LPC *thislp, MYFLT *sig, double *errn,
double *rms1, double *rms2, double b[MAXPOLES])
/* sig now MYFLT */
/* b filled here */
@@ -794,7 +794,7 @@ static void alpol(CSOUND *csound, LPC *thislp, MYFLT *sig, double *errn,
}
/* Solves the system */
- gauss(csound, thislp, thislp->a, v, b);
+ gauss(thislp, thislp->a, v, b);
/* Compute associted parameters */
for (i=0; i < thislp->poleCount;++i) {
@@ -814,7 +814,7 @@ static void alpol(CSOUND *csound, LPC *thislp, MYFLT *sig, double *errn,
* Perform gauss elemination: Could be replaced by something more robust
*
*/
-static void gauss(CSOUND *csound, LPC* thislp,
+static void gauss(LPC* thislp,
double (*a/*old*/)[MAXPOLES], double *bold, double b[])
{
double amax, dum, pivot;
@@ -843,7 +843,7 @@ static void gauss(CSOUND *csound, LPC* thislp,
i, thislp->poleCount, amax);
csound->Die(csound, Str("gauss: ill-conditioned"));
*/
- for (ii=i; ii < thislp->poleCount;++ii) a[ii][i] = 1.0e-20; /* VL: fix for very low values */
+ for (ii=i; ii < thislp->poleCount;++ii) a[ii][i] = 1.0e-20; /* VL: fix for very low values */
}
if (i != istar) {
for (j=0; j < thislp->poleCount;++j) { /* switch rows */
@@ -879,7 +879,7 @@ static void gauss(CSOUND *csound, LPC* thislp,
csound->Message(csound,"Row %d or %d have maximum of %g\n",
thislp->poleCount-1, thislp->poleCount,
fabs(a[thislp->poleCount-1][thislp->poleCount-1]));
- csound->Die(csound, Str("gauss: ill-conditioned"));*/
+ csound->Die(csound, Str("gauss: ill-conditioned"));*/
}
b[thislp->poleCount-1] =
diff --git a/util/lpc_export.c b/util/lpc_export.c
index 6f1028d..575a035 100644
--- a/util/lpc_export.c
+++ b/util/lpc_export.c
@@ -76,7 +76,7 @@ static int lpc_export(CSOUND *csound, int argc, char **argv)
hdr.framrate, hdr.srate, hdr.duration);
str = (char *)csound->Malloc(csound,hdr.headersize-sizeof(LPHEADER)+4);
fread(&hdr, sizeof(char), hdr.headersize-sizeof(LPHEADER)+4, inf);
- for (i=0; i<hdr.headersize-sizeof(LPHEADER)+4; i++)
+ for (i=0; i<(signed int)hdr.headersize-sizeof(LPHEADER)+4; i++)
putc(str[i],outf);
putc('\n', outf);
coef = (MYFLT *)csound->Malloc(csound,(hdr.npoles+hdr.nvals)*sizeof(MYFLT));
diff --git a/util/lpc_import.c b/util/lpc_import.c
index 162a981..97aa125 100644
--- a/util/lpc_import.c
+++ b/util/lpc_import.c
@@ -72,7 +72,7 @@ static int lpc_import(CSOUND *csound, int argc, char **argv)
hdr.framrate, hdr.srate, hdr.duration);
str = (char *)csound->Malloc(csound,hdr.headersize-sizeof(LPHEADER)+4);
fread(&hdr, sizeof(char), hdr.headersize-sizeof(LPHEADER)+4, inf);
- for (i=0; i<hdr.headersize-sizeof(LPHEADER)+4; i++)
+ for (i=0; i<(signed int)hdr.headersize-sizeof(LPHEADER)+4; i++)
putc(str[i],outf);
putc('\n', outf);
coef = (MYFLT *)csound->Malloc(csound, (hdr.npoles+hdr.nvals)*sizeof(MYFLT));
diff --git a/util/pvanal.c b/util/pvanal.c
index 51a71b2..f9d0ce4 100644
--- a/util/pvanal.c
+++ b/util/pvanal.c
@@ -116,7 +116,7 @@ static int pvxanal(CSOUND *csound, SOUNDIN *p, SNDFILE *fd,
const char *fname,
long srate, long chans, long fftsize,
long overlap, long winsize,
- pv_wtype wintype, int verbose,
+ pv_wtype wintype, /*int verbose,*/
double beta);
static long generate_frame(CSOUND*, PVX *pvx, MYFLT *fbuf, float *outanal,
long samps, int frametype);
@@ -162,8 +162,8 @@ static int pvanal(CSOUND *csound, int argc, char **argv)
FILE *trfil = stdout;
pv_wtype WindowType = PVOC_HANN;
char err_msg[512];
- int verbose = 0;
double beta = 6.8;
+ int verbose = 0;
csound->oparms->displays = 0;
if (!(--argc))
@@ -299,7 +299,7 @@ static int pvanal(CSOUND *csound, int argc, char **argv)
if (pvxanal(csound, p, infd, outfilnam, p->sr,
((!channel || channel == ALLCHNLS) ? p->nchanls : 1),
frameSize, frameIncr, frameSize * 2,
- WindowType, verbose, beta) != 0) {
+ WindowType, /*verbose,*/ beta) != 0) {
csound->Message(csound, Str("error generating pvocex file.\n"));
return -1;
}
@@ -406,7 +406,7 @@ static void PVDisplay_Display(PVDISPLAY *p, int frame)
static int pvxanal(CSOUND *csound, SOUNDIN *p, SNDFILE *fd, const char *fname,
long srate, long chans, long fftsize, long overlap,
- long winsize, pv_wtype wintype, int verbose, double beta)
+ long winsize, pv_wtype wintype, /*int verbose,*/ double beta)
{
int i, k, pvfile = -1, rc = 0;
pv_stype stype = STYPE_16;
@@ -417,10 +417,8 @@ static int pvxanal(CSOUND *csound, SOUNDIN *p, SNDFILE *fd, const char *fname,
MYFLT *inbuf_c[MAXPVXCHANS];
float *frame_c[MAXPVXCHANS]; /* RWD : MUST be 32bit */
MYFLT *inbuf = NULL;
- MYFLT nyquist, chwidth;
float *frame; /* RWD : MUST be 32bit */
MYFLT *chanbuf;
- unsigned int nbins;
long total_sampsread = 0;
PVDISPLAY disp;
@@ -431,9 +429,9 @@ static int pvxanal(CSOUND *csound, SOUNDIN *p, SNDFILE *fd, const char *fname,
case AE_FLOAT: stype = STYPE_IEEE_FLOAT; break;
}
- nbins = (fftsize/2) + 1;
- nyquist = (MYFLT) srate * FL(0.5);
- chwidth = nyquist/(MYFLT)(nbins - 1);
+ //nbins = (fftsize/2) + 1;
+ //nyquist = (MYFLT) srate * FL(0.5);
+ // chwidth = nyquist/(MYFLT)(nbins - 1);
for (i = 0; i < MAXPVXCHANS; i++) {
pvx[i] = NULL;
inbuf_c[i] = NULL;
diff --git a/util/scale.c b/util/scale.c
index 524f707..943f9ac 100644
--- a/util/scale.c
+++ b/util/scale.c
@@ -73,7 +73,7 @@ static void usage(CSOUND *csound, char *mesg)
csound->Die(csound, "\n%s", mesg);
}
-static char set_output_format(CSOUND *csound, OPARMS *p, char c, char outformch)
+static char set_output_format(OPARMS *p, char c, char outformch)
{
switch (c) {
case 'a': p->outformat = AE_ALAW; /* a-law soundfile */
@@ -219,7 +219,7 @@ static int scale(CSOUND *csound, int argc, char **argv)
case '3':
case 'l':
case 'f':
- outformch = set_output_format(csound, O, c, outformch);
+ outformch = set_output_format(O, c, outformch);
break;
case 'R':
O->rewrt_hdr = 1;
@@ -463,7 +463,7 @@ static float FindAndReportMax(CSOUND *csound, SCALE *thissc, SNDFILE *infile)
double max, min;
long mxpos, minpos;
int maxtimes, mintimes;
- int i, j, chans = thissc->p->nchanls;
+ int i, chans = thissc->p->nchanls;
int block = 0;
int bufferLenFrames = (int) BUFFER_LEN / chans;
int bufferLenSamples = bufferLenFrames * chans;
@@ -474,7 +474,7 @@ static float FindAndReportMax(CSOUND *csound, SCALE *thissc, SNDFILE *infile)
while ((read_in = csound->getsndin(csound, infile, buffer,
bufferLenSamples, thissc->p)) > 0) {
for (i = 0; i < read_in; i++) {
- j = (i / chans) + (bufferLenFrames * block);
+ //j = (i / chans) + (bufferLenFrames * block);
if (buffer[i] >= max) ++maxtimes;
if (buffer[i] <= min) ++mintimes;
if (buffer[i] > max)
diff --git a/util/srconv.c b/util/srconv.c
index c61b202..9d84a7e 100644
--- a/util/srconv.c
+++ b/util/srconv.c
@@ -205,7 +205,6 @@ static int srconv(CSOUND *csound, int argc, char **argv)
FILE *tvfp = NULL; /* time-vary function file */
SOUNDIN *p;
- void *dummy;
int channel = ALLCHNLS;
MYFLT beg_time = FL(0.0), input_dur = FL(0.0), sr = FL(0.0);
char *infile = NULL, *bfile = NULL;
@@ -374,7 +373,7 @@ static int srconv(CSOUND *csound, int argc, char **argv)
goto err_rtn_msg;
}
/* register file to be closed by csoundReset() */
- dummy = csound->CreateFileHandle(csound, &tvfp, CSFILE_STD, bfile);
+ (void) csound->CreateFileHandle(csound, &tvfp, CSFILE_STD, bfile);
fscanf(tvfp, "%d", &tvlen);
fxval = (MYFLT*) csound->Malloc(csound, tvlen * sizeof(MYFLT));
fyval = (MYFLT*) csound->Malloc(csound, tvlen * sizeof(MYFLT));
@@ -474,8 +473,8 @@ static int srconv(CSOUND *csound, int argc, char **argv)
goto err_rtn_msg;
}
/* register file to be closed by csoundReset() */
- dummy = csound->CreateFileHandle(csound, &outfd, CSFILE_SND_W,
- O->outfilename);
+ (void) csound->CreateFileHandle(csound, &outfd, CSFILE_SND_W,
+ O->outfilename);
sf_command(outfd, SFC_SET_CLIPPING, NULL, SF_TRUE);
}
csound->esr = (MYFLT) p->sr;
--
csound packaging
More information about the pkg-multimedia-commits
mailing list