00001 /* 00002 Copyright (C) 2005 Victor Lazzarini 00003 00004 This file is part of Csound. 00005 00006 The Csound Library is free software; you can redistribute it 00007 and/or modify it under the terms of the GNU Lesser General Public 00008 License as published by the Free Software Foundation; either 00009 version 2.1 of the License, or (at your option) any later version. 00010 00011 Csound is distributed in the hope that it will be useful, 00012 but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 GNU Lesser General Public License for more details. 00015 00016 You should have received a copy of the GNU Lesser General Public 00017 License along with Csound; if not, write to the Free Software 00018 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 00019 02111-1307 USA 00020 */ 00021 00022 #ifndef TCLCSOUND_H 00023 #define TCLCSOUND_H 00024 00025 #include <stdio.h> 00026 #include <string.h> 00027 #include <csound.h> 00028 #include <string.h> 00029 #include <stdlib.h> 00030 #include <tcl.h> 00031 #include <tk.h> 00032 00033 /* Csound performance status 00034 00035 CS_READY: ready for compilation, effectively stopped 00036 CS_COMPILED: ready for performance, but not yet running 00037 CS_RUNNING: running, producing audio 00038 CS_PAUSED: paused, but ready for performance 00039 00040 Csound will switch from CS_RUNNING to CS_COMPILED once 00041 the loaded score has finished playing. 00042 */ 00043 00044 typedef struct __ctlchn { 00045 char *name; 00046 double value; 00047 struct __ctlchn *next; 00048 } ctlchn; 00049 00050 typedef struct __pvsctlchn { 00051 int n; 00052 PVSDATEXT data; 00053 struct __pvsctlchn *next; 00054 } pvsctlchn; 00055 00056 typedef struct __csdata { 00057 CSOUND *instance; /* csound object */ 00058 int result; /* action result */ 00059 void *threadID; /* processing thread ID */ 00060 int status; /* perf status */ 00061 ctlchn *inchan; 00062 ctlchn *outchan; 00063 Tcl_Interp *interp; 00064 char *mbuf; /* message buffer */ 00065 char mess[50]; /* message recipient name */ 00066 pvsctlchn *pvsinchan; 00067 pvsctlchn *pvsoutchan; 00068 void *threadlock; 00069 void *messlock; 00070 } csdata; 00071 00072 extern int tclcsound_initialise(Tcl_Interp * interp); 00073 00074 #endif 00075