├── .gitignore ├── AUTHORS ├── COPYING ├── ChangeLog ├── CygwinPackageRequirements.txt ├── INSTALL ├── LICENSE ├── Makefile ├── Makefile.am ├── Makefile.in ├── NEWS ├── README.FIRST ├── README.md ├── TODO ├── aclocal.m4 ├── config.guess ├── config.h ├── config.h.in ├── config.status ├── config.sub ├── configure ├── configure.in ├── depcomp ├── diagnose-lib ├── doc ├── AdditionalInstallNotes.txt ├── ClassReference │ ├── Makefile │ ├── Makefile.am │ ├── Makefile.in │ ├── tao.doxy.cnf │ └── tao.doxy.cnf.in ├── Dependencies │ ├── Dependencies.tex │ ├── Makefile │ ├── Makefile.am │ ├── Makefile.in │ └── html │ │ ├── Dependencies.html │ │ ├── Dependencies_1.html │ │ ├── Dependencies_2.html │ │ ├── Dependencies_3.html │ │ ├── Dependencies_4.html │ │ ├── Dependencies_5.html │ │ ├── Dependencies_6.html │ │ ├── Dependencies_7.html │ │ ├── Makefile │ │ ├── Makefile.am │ │ ├── Makefile.in │ │ ├── back.gif │ │ ├── bg.gif │ │ ├── forward.gif │ │ ├── trans1x1.gif │ │ └── up.gif ├── Makefile ├── Makefile.am ├── Makefile.in ├── UserManual │ ├── Makefile │ ├── Makefile.am │ ├── Makefile.in │ ├── UserManual.tex │ ├── cells.eps │ ├── circle_example.eps │ ├── circle_waves.eps │ ├── closing_comments.tex │ ├── compound_example.eps │ ├── conceptual_overview.tex │ ├── getting_started.tex │ ├── html │ │ ├── Makefile │ │ ├── Makefile.am │ │ ├── Makefile.in │ │ ├── UserManual.html │ │ ├── UserManual_1.html │ │ ├── UserManual_10.html │ │ ├── UserManual_100.html │ │ ├── UserManual_101.html │ │ ├── UserManual_102.html │ │ ├── UserManual_103.html │ │ ├── UserManual_104.html │ │ ├── UserManual_105.html │ │ ├── UserManual_106.html │ │ ├── UserManual_107.html │ │ ├── UserManual_108.html │ │ ├── UserManual_109.html │ │ ├── UserManual_11.html │ │ ├── UserManual_110.html │ │ ├── UserManual_111.html │ │ ├── UserManual_112.html │ │ ├── UserManual_113.html │ │ ├── UserManual_114.html │ │ ├── UserManual_115.html │ │ ├── UserManual_116.html │ │ ├── UserManual_117.html │ │ ├── UserManual_118.html │ │ ├── UserManual_119.html │ │ ├── UserManual_12.html │ │ ├── UserManual_120.html │ │ ├── UserManual_121.html │ │ ├── UserManual_122.html │ │ ├── UserManual_123.html │ │ ├── UserManual_124.html │ │ ├── UserManual_125.html │ │ ├── UserManual_126.html │ │ ├── UserManual_127.html │ │ ├── UserManual_128.html │ │ ├── UserManual_129.html │ │ ├── UserManual_13.html │ │ ├── UserManual_130.html │ │ ├── UserManual_131.html │ │ ├── UserManual_132.html │ │ ├── UserManual_133.html │ │ ├── UserManual_134.html │ │ ├── UserManual_135.html │ │ ├── UserManual_136.html │ │ ├── UserManual_137.html │ │ ├── UserManual_138.html │ │ ├── UserManual_139.html │ │ ├── UserManual_14.html │ │ ├── UserManual_140.html │ │ ├── UserManual_141.html │ │ ├── UserManual_142.html │ │ ├── UserManual_143.html │ │ ├── UserManual_144.html │ │ ├── UserManual_145.html │ │ ├── UserManual_146.html │ │ ├── UserManual_147.html │ │ ├── UserManual_148.html │ │ ├── UserManual_149.html │ │ ├── UserManual_15.html │ │ ├── UserManual_150.html │ │ ├── UserManual_151.html │ │ ├── UserManual_152.html │ │ ├── UserManual_153.html │ │ ├── UserManual_154.html │ │ ├── UserManual_155.html │ │ ├── UserManual_156.html │ │ ├── UserManual_16.html │ │ ├── UserManual_17.html │ │ ├── UserManual_18.html │ │ ├── UserManual_19.html │ │ ├── UserManual_2.html │ │ ├── UserManual_20.html │ │ ├── UserManual_21.html │ │ ├── UserManual_22.html │ │ ├── UserManual_23.html │ │ ├── UserManual_24.html │ │ ├── UserManual_25.html │ │ ├── UserManual_26.html │ │ ├── UserManual_27.html │ │ ├── UserManual_28.html │ │ ├── UserManual_29.html │ │ ├── UserManual_3.html │ │ ├── UserManual_30.html │ │ ├── UserManual_31.html │ │ ├── UserManual_32.html │ │ ├── UserManual_33.html │ │ ├── UserManual_34.html │ │ ├── UserManual_35.html │ │ ├── UserManual_36.html │ │ ├── UserManual_37.html │ │ ├── UserManual_38.html │ │ ├── UserManual_39.html │ │ ├── UserManual_4.html │ │ ├── UserManual_40.html │ │ ├── UserManual_41.html │ │ ├── UserManual_42.html │ │ ├── UserManual_43.html │ │ ├── UserManual_44.html │ │ ├── UserManual_45.html │ │ ├── UserManual_46.html │ │ ├── UserManual_47.html │ │ ├── UserManual_48.html │ │ ├── UserManual_49.html │ │ ├── UserManual_5.html │ │ ├── UserManual_50.html │ │ ├── UserManual_51.html │ │ ├── UserManual_52.html │ │ ├── UserManual_53.html │ │ ├── UserManual_54.html │ │ ├── UserManual_55.html │ │ ├── UserManual_56.html │ │ ├── UserManual_57.html │ │ ├── UserManual_58.html │ │ ├── UserManual_59.html │ │ ├── UserManual_6.html │ │ ├── UserManual_60.html │ │ ├── UserManual_61.html │ │ ├── UserManual_62.html │ │ ├── UserManual_63.html │ │ ├── UserManual_64.html │ │ ├── UserManual_65.html │ │ ├── UserManual_66.html │ │ ├── UserManual_67.html │ │ ├── UserManual_68.html │ │ ├── UserManual_69.html │ │ ├── UserManual_7.html │ │ ├── UserManual_70.html │ │ ├── UserManual_71.html │ │ ├── UserManual_72.html │ │ ├── UserManual_73.html │ │ ├── UserManual_74.html │ │ ├── UserManual_75.html │ │ ├── UserManual_76.html │ │ ├── UserManual_77.html │ │ ├── UserManual_78.html │ │ ├── UserManual_79.html │ │ ├── UserManual_8.html │ │ ├── UserManual_80.html │ │ ├── UserManual_81.html │ │ ├── UserManual_82.html │ │ ├── UserManual_83.html │ │ ├── UserManual_84.html │ │ ├── UserManual_85.html │ │ ├── UserManual_86.html │ │ ├── UserManual_87.html │ │ ├── UserManual_88.html │ │ ├── UserManual_89.html │ │ ├── UserManual_9.html │ │ ├── UserManual_90.html │ │ ├── UserManual_91.html │ │ ├── UserManual_92.html │ │ ├── UserManual_93.html │ │ ├── UserManual_94.html │ │ ├── UserManual_95.html │ │ ├── UserManual_96.html │ │ ├── UserManual_97.html │ │ ├── UserManual_98.html │ │ ├── UserManual_99.html │ │ ├── back.gif │ │ ├── bg.gif │ │ ├── cells.gif │ │ ├── circle_example.gif │ │ ├── circle_waves.gif │ │ ├── compound_example.gif │ │ ├── forward.gif │ │ ├── instrument_coord_system.gif │ │ ├── joining.gif │ │ ├── new.gif │ │ ├── trans1x1.gif │ │ ├── up.gif │ │ └── xandyfreqs.gif │ ├── installation.tex │ ├── instrument_coord_system.eps │ ├── instrvis.eps │ ├── introduction.tex │ ├── introduction.tex.in │ ├── joining.eps │ ├── new.eps │ ├── script_language.tex │ ├── script_reference.tex │ ├── tutorial.tex │ ├── user_interface.tex │ └── xandyfreqs.eps └── taomanual.css ├── examples ├── Makefile ├── Makefile.am ├── Makefile.in ├── accesspoint1.tao ├── accesspoint2.tao ├── bow.tao ├── circle.tao ├── circle2.tao ├── connector.tao ├── damp.tao ├── diffraction.tao ├── ellipse.tao ├── ellipse2.tao ├── hammer.tao ├── lock.tao ├── outputarray.tao ├── outputs.tao ├── pitches.tao ├── rectangle.tao ├── rectangle2.tao ├── stop.tao ├── string.tao └── test.tao ├── include ├── Makefile ├── Makefile.am ├── Makefile.in ├── Tao.h ├── TaoAccessPoint.h ├── TaoBow.h ├── TaoCell.h ├── TaoCircle.h ├── TaoConnector.h ├── TaoDevice.h ├── TaoEllipse.h ├── TaoGraphicsEngine.h ├── TaoHammer.h ├── TaoInstrument.h ├── TaoOutput.h ├── TaoPitch.h ├── TaoRGBColor.h ├── TaoRectangle.h ├── TaoStop.h ├── TaoString.h ├── TaoSynthEngine.h ├── TaoTriangle.h ├── taodefs.h └── test.cc ├── install-sh ├── libtao ├── .deps │ ├── Tao.Plo │ ├── TaoAccessPoint.Plo │ ├── TaoBow.Plo │ ├── TaoCell.Plo │ ├── TaoCircle.Plo │ ├── TaoConnector.Plo │ ├── TaoDevice.Plo │ ├── TaoEllipse.Plo │ ├── TaoGraphicsEngine.Plo │ ├── TaoHammer.Plo │ ├── TaoInstrument.Plo │ ├── TaoOutput.Plo │ ├── TaoPitch.Plo │ ├── TaoRectangle.Plo │ ├── TaoStop.Plo │ ├── TaoString.Plo │ ├── TaoSynthEngine.Plo │ └── TaoTriangle.Plo ├── Makefile ├── Makefile.am ├── Makefile.in ├── Tao.cc ├── TaoAccessPoint.cc ├── TaoBow.cc ├── TaoCell.cc ├── TaoCircle.cc ├── TaoConnector.cc ├── TaoDevice.cc ├── TaoEllipse.cc ├── TaoGraphicsEngine.cc ├── TaoHammer.cc ├── TaoInstrument.cc ├── TaoOutput.cc ├── TaoPitch.cc ├── TaoRectangle.cc ├── TaoStop.cc ├── TaoString.cc ├── TaoSynthEngine.cc └── TaoTriangle.cc ├── libtool ├── ltconfig ├── ltmain.sh ├── missing ├── mkinstalldirs ├── stamp-h1 ├── tao2aiff ├── .deps │ └── tao2aiff.Po ├── Makefile ├── Makefile.am ├── Makefile.in ├── README.audiofile ├── audiofile.h ├── aupvlist.h ├── tao2aiff ├── tao2aiff.cc └── tao2aiff.h ├── tao2wav ├── .deps │ └── tao2wav.Po ├── Makefile ├── Makefile.am ├── Makefile.in ├── README.audiofile ├── audiofile.h ├── aupvlist.h ├── tao2wav ├── tao2wav.cc └── tao2wav.h ├── taoparse ├── .deps │ ├── taoparser.Po │ └── taoscanner.Po ├── Makefile ├── Makefile.am ├── Makefile.in ├── taoparse ├── taoparser.cc ├── taoparser.h ├── taoparser.yy ├── taoparserdefs.h ├── taoscanner.cc └── taoscanner.ll └── user-scripts ├── Makefile ├── Makefile.am ├── Makefile.in ├── error.parse ├── tao ├── tao-config ├── tao-config.in ├── tao.in └── taosf /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files 2 | *.slo 3 | *.lo 4 | *.o 5 | *.obj 6 | 7 | # Precompiled Headers 8 | *.gch 9 | *.pch 10 | 11 | # Compiled Dynamic libraries 12 | *.so 13 | *.dylib 14 | *.dll 15 | 16 | # Fortran module files 17 | *.mod 18 | 19 | # Compiled Static libraries 20 | *.lai 21 | *.la 22 | *.a 23 | *.lib 24 | 25 | # Executables 26 | *.exe 27 | *.out 28 | *.app 29 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | Tao was conceived and developed by Mark Pearson, initially 2 | as part of a PhD at the University of York (1993-1996) then 3 | subsequently at the Australian Centre for the Arts and 4 | Technology, who kindly provided equipment and an office for 5 | a year (1997-1998). Since then Tao has been developed mainly 6 | at home when time permits. -------------------------------------------------------------------------------- /ChangeLog: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /CygwinPackageRequirements.txt: -------------------------------------------------------------------------------- 1 | Cygwin package requirements: 2 | 3 | - The default cygwin stuff, to start with. 4 | 5 | ::Audio:: 6 | - libaudiofile0 7 | - libaudiofile-devel 8 | 9 | ::Devel:: 10 | - bison 11 | - flex 12 | - gcc 13 | - make 14 | 15 | ::Graphics:: 16 | - freeglut 17 | - opengl 18 | 19 | ::X11:: 20 | - xorg-x11-devel 21 | - XFree86-lib-compat 22 | 23 | (not entirely sure about that last one - you may be able to get away without 24 | it?) 25 | 26 | You may also have to run the configure script as: 27 | ./configure --prefix=/usr 28 | to install it into the /usr directory. For some reason, I was unable to get any 29 | executables built via the tao script to link against libtao when it's in 30 | /usr/local/lib. I don't know if this is just down to my not knowing the correct 31 | environment variable to use (PATH & LD_LIBRARY_PATH didn't seem to work), or if 32 | it's a bug in cygwin, since it definitely worked before. 33 | -------------------------------------------------------------------------------- /Makefile.am: -------------------------------------------------------------------------------- 1 | ## Process this file with automake to produce Makefile.in 2 | 3 | SRC_SUBDIRS = libtao include taoparse tao2aiff tao2wav 4 | SUBDIRS = $(SRC_SUBDIRS) user-scripts doc examples 5 | 6 | EXTRA_DIST = TODO \ 7 | README.FIRST \ 8 | diagnose-lib \ 9 | CygwinPackageRequirements.txt 10 | 11 | docs: 12 | cd doc && $(MAKE) docs 13 | 14 | alldocs: 15 | cd doc && $(MAKE) alldocs 16 | -------------------------------------------------------------------------------- /NEWS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MindBuffer/tao/2b0941882bd51598a5bd6a08f02a7927f13615dc/NEWS -------------------------------------------------------------------------------- /README.FIRST: -------------------------------------------------------------------------------- 1 | Tao version 1.0-beta 2 | -------------------- 3 | 4 | 10 May 2006 5 | ----------- 6 | 7 | This release includes a small optimisation to the position calculations for 8 | the individual cells in an instrument which should speed up the simulation/ 9 | generation of samples a bit (on my machine, the pitches example goes down to 10 | 9s from 13s before). I've also added some documentation (what packages you 11 | need on cygwin: CygwinPackageRequirements.txt, and a hand-holding walkthrough 12 | of how to install it on OSX: doc/AdditionalInstallNotes.txt), and tidied up 13 | the configure script a bit. 14 | 15 | - Niall. 16 | 17 | 31 August 2005 18 | -------------- 19 | 20 | Sorry, that was stupid... The previous version would only have compiled 21 | on OS X if you had X11 (and possibly Fink) installed. I've updated the 22 | configure script so that it should compile on a stock mac now. 23 | 24 | - Niall. 25 | 26 | 27 August 2005 27 | ------------- 28 | 29 | I've updated the configure script and user-scripts/tao.in so that it'll 30 | now compile on OS X, as well as cygwin (without alteration - all the steps 31 | that were outlined in CygwinNotes.txt are now automated). 32 | 33 | - Niall Moody. 34 | 35 | 8 February 2005 36 | --------------- 37 | 38 | This is a (very) slightly updated version of Tao, made so it'll compile with 39 | more recent versions of g++ (it really just replaces the use of the deprecated 40 | strstream with the more recent sstream header). I've also added some notes on 41 | how to get it running under Cygwin (it's really not that hard) - I would have 42 | automated this in the configure script, but me and configure scripts just 43 | don't seem to get along... 44 | 45 | - Niall Moody at CMT (Centre for Music Technology), Glasgow University. 46 | 47 | 26 April 2000 48 | ------------- 49 | 50 | Please note: this is a beta release of Tao and as such there may still 51 | be errors in the configure and build process or undiscovered bugs in 52 | the software. The documentation is still very much a work in progress 53 | and as such is likely to change quite a bit at the moment. However, even 54 | in its present state it should tell you enough to get going. 55 | 56 | The User Manual states that Tao's C++ API is fully documented. This will 57 | eventually be true but at the moment it is most certainly not! 58 | 59 | Please note also that the new 'diagnose-lib' shell script provided 60 | for diagnosing configuration problems relating to dynamic link 61 | libraries is not guaranteed to give correct results. It may be useful 62 | but as with anything else in the Tao package, is not guaranteed to 63 | be so. 64 | 65 | I hope you can get Tao to work and find it useful. 66 | 67 | Mark Pearson. 68 | -------------------------------------------------------------------------------- /TODO: -------------------------------------------------------------------------------- 1 | The Software 2 | ------------ 3 | 4 | Make the synthesis engine more efficient. 5 | 6 | Start designing a GUI with gtk+ or Qt. 7 | 8 | Figure out how a scripting language such as Python 9 | could be used to provide better encapsulation for 10 | Tao without slowing down what is already a very 11 | computationally expensive technique. This would 12 | require replacing Tao's current method of executing 13 | a script i.e. Tao script -> C++ program -> Link 14 | with libtao -> Executable -> Launch, with scripts 15 | which were truly interpreted. The biggest problem 16 | here is in still being able to express model-rate 17 | interactions between instuments and devices. One 18 | solution might be to allow expressions to be 19 | implemented on the fly as efficient signal flow 20 | networks as in Csound until no longer needed at which 21 | point they would be dismantled. 22 | 23 | Design table generator/reader classes. 24 | 25 | Encapsulation 26 | o Instruments (constructed from re-usable 27 | components). 28 | o Performance Techniques (parametric 29 | algorithms for re-use within a score). 30 | 31 | Develop self-tests for configuration and installation 32 | including Tao scripts which test every feature for 33 | correct operation. 34 | 35 | Improve syntax and run-time error handling. At the 36 | moment, many script errors just lead to an unhelpful 37 | 'Parse failed' message. Compilation errors generated 38 | by g++ could be parsed and used to give the user 39 | more feedback about where an error occurred in 40 | the original script. 41 | 42 | 43 | The Documentation 44 | ----------------- 45 | 46 | Take all example scripts in User Manual and put them 47 | in the examples directory, sensibly named. 48 | 49 | Remove Dependencies document and either put everything 50 | in it into the User Manual, or take all the installation 51 | instructions out of the User Manual and put them into 52 | a separate Install Guide. Probably best to put everything 53 | into one document. 54 | 55 | Tidy up typographical conventions used. Things are a bit 56 | of a mess at the moment. This needs to be coordinated 57 | with LaTeX macros for index entries, most of which also 58 | format their arguments in some way both in the main 59 | text and index. 60 | 61 | Re-write old sections such as 'Information Needed 62 | to Create an Instrument'. 63 | 64 | 65 | Tutorial 66 | -------- 67 | 68 | Write a set of useful tutorial scripts and document 69 | them in the tutorial section of the User Manual. -------------------------------------------------------------------------------- /config.h: -------------------------------------------------------------------------------- 1 | /* config.h. Generated by configure. */ 2 | /* config.h.in. Generated from configure.in by autoheader. */ 3 | 4 | /* Define to 1 if you have the header file. */ 5 | #define HAVE_DLFCN_H 1 6 | 7 | /* Define to 1 if you have the header file. */ 8 | #define HAVE_INTTYPES_H 1 9 | 10 | /* Define to 1 if you have the `audiofile' library (-laudiofile). */ 11 | #define HAVE_LIBAUDIOFILE 1 12 | 13 | /* Define to 1 if you have the `glut' library (-lglut). */ 14 | /* #undef HAVE_LIBGLUT */ 15 | 16 | /* Define to 1 if you have the `m' library (-lm). */ 17 | #define HAVE_LIBM 1 18 | 19 | /* Define to 1 if you have the header file. */ 20 | #define HAVE_MEMORY_H 1 21 | 22 | /* Define to 1 if you have the header file. */ 23 | #define HAVE_STDINT_H 1 24 | 25 | /* Define to 1 if you have the header file. */ 26 | #define HAVE_STDLIB_H 1 27 | 28 | /* Define to 1 if you have the header file. */ 29 | #define HAVE_STRINGS_H 1 30 | 31 | /* Define to 1 if you have the header file. */ 32 | #define HAVE_STRING_H 1 33 | 34 | /* Define to 1 if you have the header file. */ 35 | #define HAVE_SYS_STAT_H 1 36 | 37 | /* Define to 1 if you have the header file. */ 38 | #define HAVE_SYS_TYPES_H 1 39 | 40 | /* Define to 1 if you have the header file. */ 41 | #define HAVE_UNISTD_H 1 42 | 43 | /* Define to the address where bug reports for this package should be sent. */ 44 | #define PACKAGE_BUGREPORT "" 45 | 46 | /* Define to the full name of this package. */ 47 | #define PACKAGE_NAME "" 48 | 49 | /* Define to the full name and version of this package. */ 50 | #define PACKAGE_STRING "" 51 | 52 | /* Define to the one symbol short name of this package. */ 53 | #define PACKAGE_TARNAME "" 54 | 55 | /* Define to the version of this package. */ 56 | #define PACKAGE_VERSION "" 57 | 58 | /* Define to 1 if you have the ANSI C header files. */ 59 | #define STDC_HEADERS 1 60 | 61 | /* Define to 1 if the X Window System is missing or not being used. */ 62 | #define X_DISPLAY_MISSING 1 63 | 64 | /* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a 65 | `char[]'. */ 66 | /* #undef YYTEXT_POINTER */ 67 | -------------------------------------------------------------------------------- /config.h.in: -------------------------------------------------------------------------------- 1 | /* config.h.in. Generated from configure.in by autoheader. */ 2 | 3 | /* Define to 1 if you have the header file. */ 4 | #undef HAVE_DLFCN_H 5 | 6 | /* Define to 1 if you have the header file. */ 7 | #undef HAVE_INTTYPES_H 8 | 9 | /* Define to 1 if you have the `audiofile' library (-laudiofile). */ 10 | #undef HAVE_LIBAUDIOFILE 11 | 12 | /* Define to 1 if you have the `glut' library (-lglut). */ 13 | #undef HAVE_LIBGLUT 14 | 15 | /* Define to 1 if you have the `m' library (-lm). */ 16 | #undef HAVE_LIBM 17 | 18 | /* Define to 1 if you have the header file. */ 19 | #undef HAVE_MEMORY_H 20 | 21 | /* Define to 1 if you have the header file. */ 22 | #undef HAVE_STDINT_H 23 | 24 | /* Define to 1 if you have the header file. */ 25 | #undef HAVE_STDLIB_H 26 | 27 | /* Define to 1 if you have the header file. */ 28 | #undef HAVE_STRINGS_H 29 | 30 | /* Define to 1 if you have the header file. */ 31 | #undef HAVE_STRING_H 32 | 33 | /* Define to 1 if you have the header file. */ 34 | #undef HAVE_SYS_STAT_H 35 | 36 | /* Define to 1 if you have the header file. */ 37 | #undef HAVE_SYS_TYPES_H 38 | 39 | /* Define to 1 if you have the header file. */ 40 | #undef HAVE_UNISTD_H 41 | 42 | /* Define to the address where bug reports for this package should be sent. */ 43 | #undef PACKAGE_BUGREPORT 44 | 45 | /* Define to the full name of this package. */ 46 | #undef PACKAGE_NAME 47 | 48 | /* Define to the full name and version of this package. */ 49 | #undef PACKAGE_STRING 50 | 51 | /* Define to the one symbol short name of this package. */ 52 | #undef PACKAGE_TARNAME 53 | 54 | /* Define to the version of this package. */ 55 | #undef PACKAGE_VERSION 56 | 57 | /* Define to 1 if you have the ANSI C header files. */ 58 | #undef STDC_HEADERS 59 | 60 | /* Define to 1 if the X Window System is missing or not being used. */ 61 | #undef X_DISPLAY_MISSING 62 | 63 | /* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a 64 | `char[]'. */ 65 | #undef YYTEXT_POINTER 66 | -------------------------------------------------------------------------------- /doc/ClassReference/Makefile.am: -------------------------------------------------------------------------------- 1 | EXTRA_DIST = tao.doxy.cnf 2 | -------------------------------------------------------------------------------- /doc/Dependencies/Makefile.am: -------------------------------------------------------------------------------- 1 | SUBDIRS = html 2 | HTMLARNAME = tao-${TAO_VERSION}-dependencies-html 3 | PSFILENAME = tao-${TAO_VERSION}-dependencies.ps 4 | GZIP_ENV = --best 5 | 6 | EXTRA_DIST = Dependencies.tex 7 | 8 | CLEANFILES = \ 9 | Dependencies.dvi \ 10 | Dependencies.ps \ 11 | Dependencies.log \ 12 | Dependencies.idx \ 13 | Dependencies.ind \ 14 | Dependencies.toc \ 15 | Dependencies.lof \ 16 | Dependencies.aux \ 17 | ${HTMLARNAME}.tgz \ 18 | Dependencies.ps.gz 19 | 20 | html: html/Dependencies.html 21 | 22 | ps: Dependencies.ps 23 | 24 | html-archive: html/Dependencies.html 25 | mkdir /tmp/${HTMLARNAME} 26 | cp html/*.html html/*.gif /tmp/${HTMLARNAME} 27 | cd /tmp ; ${TAR} czvf ${HTMLARNAME}.tar.gz ${HTMLARNAME} 28 | mv /tmp/${HTMLARNAME}.tar.gz . 29 | rm -rf /tmp/${HTMLARNAME} 30 | 31 | psgzip: Dependencies.ps 32 | gzip ${GZIP_ENV} Dependencies.ps 33 | mv Dependencies.ps.gz ${PSFILENAME}.gz 34 | 35 | html/Dependencies.html: ${EXTRA_DIST} 36 | hyperlatex Dependencies 37 | 38 | Dependencies.dvi: ${EXTRA_DIST} 39 | latex Dependencies 40 | latex Dependencies 41 | makeindex Dependencies 42 | latex Dependencies 43 | 44 | Dependencies.ps: Dependencies.dvi 45 | allneeded Dependencies.dvi 46 | dvips -f Dependencies.ps 47 | 48 | 49 | downloads: psgzip html-archive 50 | 51 | .PHONY: html ps html-archive psgzip 52 | 53 | -------------------------------------------------------------------------------- /doc/Dependencies/html/Dependencies.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao Dependencies 8 | 9 | 10 | 11 | 12 | 13 | 38 | 39 |


20 | 21 |

Tao Dependencies

22 |

Mark Pearson

23 |

15 December 1999

24 |

25 |

26 |
  • Introduction 27 |
  • Dependencies 28 |
  • 29 | 30 |
    ©1999,2000 Mark Pearson 40 | m.pearson@ukonline.co.uk April 30, 2000

    41 | -------------------------------------------------------------------------------- /doc/Dependencies/html/Dependencies_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao Dependencies -- Dependencies 8 | 9 | 10 | 11 | 12 | 13 | 37 | 38 |


    20 |

    Dependencies

    21 | The main programs, libraries and header files you need to build Tao are 22 | described below. 23 |

    24 |
  • Libraries and Headers 25 |
  • Tools used to build the programs and libraries 26 |
  • Tools used to build the documentation 27 |
  • 28 | 29 |
    ©1999,2000 Mark Pearson 39 | m.pearson@ukonline.co.uk April 30, 2000

    40 | -------------------------------------------------------------------------------- /doc/Dependencies/html/Dependencies_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao Dependencies -- Libraries and Headers 8 | 9 | 10 | 11 | 12 | 13 | 43 | 44 |


    20 |

    Libraries and Headers

    21 |
    • OpenGL or Mesa3D (3-D graphics library) 22 |
      • libGL or libMesaGL and GL/gl.h 23 |
      • libGLU or libMesaGLU and GL/glu.h 24 |
      • libglut and glut.h 25 |
      26 |
    • lex or GNU flex (Lexical analyser generator) 27 |
    • yacc or GNU bison (Parser generator) 28 |
    • audiofile library (used to write .aiff format sound files) 29 |
      • libaudiofile 30 |
      • aupvlist.h 31 |
      • audiofile.h 32 |
      33 |
    34 |

    35 |

    ©1999,2000 Mark Pearson 45 | m.pearson@ukonline.co.uk April 30, 2000

    46 | -------------------------------------------------------------------------------- /doc/Dependencies/html/Dependencies_7.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao Dependencies -- Hyperlatex 8 | 9 | 10 | 11 | 12 | 13 | 38 | 39 |


    20 |

    Hyperlatex

    21 | Hyperlatex is a tool for producing high quality printed and 22 | hypertext documentation from a single set of sources. Hyperlatex 23 | uses a language which is a subset of LaTeX. It requires 24 | the inclusion of some usepackage directives in the LaTeXsources and for best results some rewriting of existing LaTeXsources, but it is very flexible and configurable. 25 |

    Hyperlatex is available at the time of writing from: 26 |

    ftp://ftp.cs.ust.hk/pub/ipe 27 |

    or 28 |

    ftp://ftp.cs.uni-magdeburg.de/pub/ipe 29 |

    30 |

    ©1999,2000 Mark Pearson 40 | m.pearson@ukonline.co.uk April 30, 2000

    41 | -------------------------------------------------------------------------------- /doc/Dependencies/html/Makefile.am: -------------------------------------------------------------------------------- 1 | HTMLFILES = \ 2 | Dependencies.html \ 3 | Dependencies_1.html \ 4 | Dependencies_2.html \ 5 | Dependencies_3.html \ 6 | Dependencies_4.html \ 7 | Dependencies_5.html \ 8 | Dependencies_6.html \ 9 | Dependencies_7.html 10 | 11 | 12 | EXTRA_DIST = ${HTMLFILES} \ 13 | back.gif \ 14 | bg.gif \ 15 | forward.gif \ 16 | trans1x1.gif \ 17 | up.gif 18 | 19 | MAINTAINERCLEANFILES = ${HTMLFILES} 20 | 21 | Dependencies.html: ../Dependencies.tex 22 | cd .. && $(MAKE) html 23 | -------------------------------------------------------------------------------- /doc/Dependencies/html/back.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MindBuffer/tao/2b0941882bd51598a5bd6a08f02a7927f13615dc/doc/Dependencies/html/back.gif -------------------------------------------------------------------------------- /doc/Dependencies/html/bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MindBuffer/tao/2b0941882bd51598a5bd6a08f02a7927f13615dc/doc/Dependencies/html/bg.gif -------------------------------------------------------------------------------- /doc/Dependencies/html/forward.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MindBuffer/tao/2b0941882bd51598a5bd6a08f02a7927f13615dc/doc/Dependencies/html/forward.gif -------------------------------------------------------------------------------- /doc/Dependencies/html/trans1x1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MindBuffer/tao/2b0941882bd51598a5bd6a08f02a7927f13615dc/doc/Dependencies/html/trans1x1.gif -------------------------------------------------------------------------------- /doc/Dependencies/html/up.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MindBuffer/tao/2b0941882bd51598a5bd6a08f02a7927f13615dc/doc/Dependencies/html/up.gif -------------------------------------------------------------------------------- /doc/Makefile.am: -------------------------------------------------------------------------------- 1 | SUBDIRS = UserManual Dependencies ClassReference 2 | 3 | EXTRA_DIST = taomanual.css \ 4 | AdditionalInstallNotes.txt 5 | 6 | html: 7 | cd UserManual && make html 8 | cd Dependencies && make html 9 | 10 | html-archives: 11 | cd UserManual && make html-archive 12 | cd Dependencies && make html-archive 13 | 14 | ps: 15 | cd UserManual && make ps 16 | cd Dependencies && make ps 17 | 18 | psgzips: 19 | cd UserManual && make psgzip 20 | cd Dependencies && make psgzip 21 | 22 | download-docs: html-archives psgzips 23 | 24 | docs: ps html 25 | 26 | alldocs: docs download-docs 27 | 28 | 29 | -------------------------------------------------------------------------------- /doc/UserManual/Makefile.am: -------------------------------------------------------------------------------- 1 | SUBDIRS = html 2 | HTMLARNAME = tao-${TAO_VERSION}-usermanual-html 3 | PSFILENAME = tao-${TAO_VERSION}-usermanual.ps 4 | GZIPENV = --best 5 | 6 | EXTRA_DIST = \ 7 | UserManual.tex \ 8 | closing_comments.tex \ 9 | conceptual_overview.tex \ 10 | getting_started.tex \ 11 | installation.tex \ 12 | introduction.tex \ 13 | script_language.tex \ 14 | script_reference.tex \ 15 | tutorial.tex \ 16 | user_interface.tex \ 17 | cells.eps \ 18 | circle_example.eps \ 19 | circle_waves.eps \ 20 | compound_example.eps \ 21 | instrument_coord_system.eps \ 22 | instrvis.eps \ 23 | joining.eps \ 24 | new.eps \ 25 | xandyfreqs.eps 26 | 27 | CLEANFILES = \ 28 | UserManual.bbl \ 29 | UserManual.ilg \ 30 | UserManual.blg \ 31 | UserManual.dvi \ 32 | UserManual.ps \ 33 | UserManual.log \ 34 | UserManual.idx \ 35 | UserManual.ind \ 36 | UserManual.toc \ 37 | UserManual.lof \ 38 | UserManual.aux \ 39 | ${HTMLARNAME}.tgz \ 40 | ${PSFILENAME}.gz 41 | 42 | MAINTAINERCLEANFILES = introduction.tex 43 | 44 | html: html/UserManual.html 45 | 46 | ps: UserManual.ps 47 | 48 | html-archive: html/UserManual.html 49 | mkdir /tmp/${HTMLARNAME} 50 | cp html/*.html html/*.gif /tmp/${HTMLARNAME} 51 | cd /tmp ; ${TAR} czvf ${HTMLARNAME}.tar.gz ${HTMLARNAME} 52 | mv /tmp/${HTMLARNAME}.tar.gz . 53 | rm -rf /tmp/${HTMLARNAME} 54 | 55 | psgzip: UserManual.ps 56 | gzip ${GZIP_ENV} UserManual.ps 57 | mv UserManual.ps.gz ${PSFILENAME}.gz 58 | 59 | html/UserManual.html: ${EXTRA_DIST} 60 | hyperlatex UserManual 61 | 62 | UserManual.dvi: ${EXTRA_DIST} 63 | latex UserManual 64 | latex UserManual 65 | makeindex UserManual 66 | latex UserManual 67 | 68 | UserManual.ps: UserManual.dvi 69 | allneeded UserManual.dvi 70 | dvips -f UserManual.ps 71 | 72 | downloads: psgzip html-archive 73 | 74 | .PHONY: html ps html-archive psgzip -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual 8 | 9 | 10 | 11 | 12 | 13 | 47 | 48 |


    20 | 21 |

    Tao User Manual

    22 |

    Mark Pearson
    m.pearson@ukonline.co.uk

    23 |

    April 30, 2000

    24 |

    25 |

    26 |
  • Introduction 27 |
  • Building and Installing Tao 28 |
  • Conceptual Overview 29 |
  • Getting Started 30 |
  • Tao's User Interface 31 |
  • Tao's Synthesis Language in Detail 32 |
  • Object Method Reference 33 |
  • Tutorial 34 |
  • Closing Comments 35 |
  • Index 36 |
  • Footnotes 37 |
  • 38 | 39 |
    ©1999,2000 Mark Pearson 49 | m.pearson@ukonline.co.uk April 30, 2000

    50 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_101.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- Pitch Methods 8 | 9 | 10 | 11 | 12 | 13 | 30 | 31 |


    20 |

    Pitch Methods

    21 |

    22 |

    ©1999,2000 Mark Pearson 32 | m.pearson@ukonline.co.uk April 30, 2000

    33 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_106.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- Producing harmonics from the string 8 | 9 | 10 | 11 | 12 | 13 | 30 | 31 |


    20 |

    Producing harmonics from the string

    21 | 22 |
    ©1999,2000 Mark Pearson 32 | m.pearson@ukonline.co.uk April 30, 2000

    33 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_107.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- Coupling two strings together 8 | 9 | 10 | 11 | 12 | 13 | 30 | 31 |


    20 |

    Coupling two strings together

    21 | 22 |
    ©1999,2000 Mark Pearson 32 | m.pearson@ukonline.co.uk April 30, 2000

    33 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_108.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- An instrument with an array of pitched strings 8 | 9 | 10 | 11 | 12 | 13 | 30 | 31 |


    20 |

    An instrument with an array of pitched strings

    21 | 22 |
    ©1999,2000 Mark Pearson 32 | m.pearson@ukonline.co.uk April 30, 2000

    33 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_109.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- Coupling the strings together 8 | 9 | 10 | 11 | 12 | 13 | 30 | 31 |


    20 |

    Coupling the strings together

    21 | 22 |
    ©1999,2000 Mark Pearson 32 | m.pearson@ukonline.co.uk April 30, 2000

    33 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_110.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- A rectangular sheet with locked corners and local damping 8 | 9 | 10 | 11 | 12 | 13 | 30 | 31 |


    20 |

    A rectangular sheet with locked corners and local damping

    21 | 22 |
    ©1999,2000 Mark Pearson 32 | m.pearson@ukonline.co.uk April 30, 2000

    33 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_111.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- Bowed and stopped strings 8 | 9 | 10 | 11 | 12 | 13 | 30 | 31 |


    20 |

    Bowed and stopped strings

    21 | 22 |
    ©1999,2000 Mark Pearson 32 | m.pearson@ukonline.co.uk April 30, 2000

    33 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_112.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- Moving access points 8 | 9 | 10 | 11 | 12 | 13 | 30 | 31 |


    20 |

    Moving access points

    21 | 22 |
    ©1999,2000 Mark Pearson 32 | m.pearson@ukonline.co.uk April 30, 2000

    33 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_113.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- Using the Connector device 8 | 9 | 10 | 11 | 12 | 13 | 30 | 31 |


    20 |

    Using the Connector device

    21 | 22 |
    ©1999,2000 Mark Pearson 32 | m.pearson@ukonline.co.uk April 30, 2000

    33 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_114.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- Using the Hammer device 8 | 9 | 10 | 11 | 12 | 13 | 30 | 31 |


    20 |

    Using the Hammer device

    21 | 22 |
    ©1999,2000 Mark Pearson 32 | m.pearson@ukonline.co.uk April 30, 2000

    33 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_115.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- Using the Output device 8 | 9 | 10 | 11 | 12 | 13 | 30 | 31 |


    20 |

    Using the Output device

    21 | 22 |
    ©1999,2000 Mark Pearson 32 | m.pearson@ukonline.co.uk April 30, 2000

    33 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_116.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- Output Expressions 8 | 9 | 10 | 11 | 12 | 13 | 30 | 31 |


    20 |

    Output Expressions

    21 | 22 |
    ©1999,2000 Mark Pearson 32 | m.pearson@ukonline.co.uk April 30, 2000

    33 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_117.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- Controlling the graphical layout of instruments 8 | 9 | 10 | 11 | 12 | 13 | 30 | 31 |


    20 |

    Controlling the graphical layout of instruments

    21 |

    22 |

    ©1999,2000 Mark Pearson 32 | m.pearson@ukonline.co.uk April 30, 2000

    33 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_118.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- Combining the techniques to make interesting sounds 8 | 9 | 10 | 11 | 12 | 13 | 36 | 37 |


    20 |

    Combining the techniques to make interesting sounds

    21 | 22 |
  • Tips for bowing strings 23 |
  • Effective uses of damping 24 |
  • Using Connector devices and anchor points 25 |
  • Rules of thumb for effective instrument design 26 |
  • 27 | 28 |
    ©1999,2000 Mark Pearson 38 | m.pearson@ukonline.co.uk April 30, 2000

    39 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_119.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- Tips for bowing strings 8 | 9 | 10 | 11 | 12 | 13 | 30 | 31 |


    20 |

    Tips for bowing strings

    21 | 22 |
    ©1999,2000 Mark Pearson 32 | m.pearson@ukonline.co.uk April 30, 2000

    33 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_120.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- Effective uses of damping 8 | 9 | 10 | 11 | 12 | 13 | 30 | 31 |


    20 |

    Effective uses of damping

    21 | 22 |
    ©1999,2000 Mark Pearson 32 | m.pearson@ukonline.co.uk April 30, 2000

    33 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_121.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- Using Connector devices and anchor points 8 | 9 | 10 | 11 | 12 | 13 | 30 | 31 |


    20 |

    Using Connector devices and anchor points

    21 | 22 |
    ©1999,2000 Mark Pearson 32 | m.pearson@ukonline.co.uk April 30, 2000

    33 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_123.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- Using access points 8 | 9 | 10 | 11 | 12 | 13 | 34 | 35 |


    20 |

    Using access points

    21 | 22 |
  • Example 1 - accesspoint1.tao 23 |
  • Example 2 - accesspoint2.tao 24 |
  • 25 | 26 |
    ©1999,2000 Mark Pearson 36 | m.pearson@ukonline.co.uk April 30, 2000

    37 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_127.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- Using the Bow device - bow.tao 8 | 9 | 10 | 11 | 12 | 13 | 32 | 33 |


    20 |

    Using the Bow device - bow.tao

    21 |
    22 | 
    23 |

    24 |

    ©1999,2000 Mark Pearson 34 | m.pearson@ukonline.co.uk April 30, 2000

    35 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_128.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- Creating a circular sheet 8 | 9 | 10 | 11 | 12 | 13 | 34 | 35 |


    20 |

    Creating a circular sheet

    21 | 22 |
  • Example 1 - circle.tao 23 |
  • Example 2 - circle2.tao 24 |
  • 25 | 26 |
    ©1999,2000 Mark Pearson 36 | m.pearson@ukonline.co.uk April 30, 2000

    37 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_134.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- Creating an elliptical sheet 8 | 9 | 10 | 11 | 12 | 13 | 34 | 35 |


    20 |

    Creating an elliptical sheet

    21 | 22 |
  • Example 1 - ellipse.tao 23 |
  • Example 2 - ellipse2.tao 24 |
  • 25 | 26 |
    ©1999,2000 Mark Pearson 36 | m.pearson@ukonline.co.uk April 30, 2000

    37 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_142.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- Creating a rectangular sheet 8 | 9 | 10 | 11 | 12 | 13 | 34 | 35 |


    20 |

    Creating a rectangular sheet

    21 | 22 |
  • Example 1 - rectangle.tao 23 |
  • Example 2 - rectangle2.tao 24 |
  • 25 | 26 |
    ©1999,2000 Mark Pearson 36 | m.pearson@ukonline.co.uk April 30, 2000

    37 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_151.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- New Devices 8 | 9 | 10 | 11 | 12 | 13 | 33 | 34 |


    20 |

    New Devices

    21 | As it stands there are only a handful of devices available for use. A 22 | long term goal is to expand this set of available devices in order to 23 | make Taoa more powerful and enticing environment for sound design. 24 |

    25 |

    ©1999,2000 Mark Pearson 35 | m.pearson@ukonline.co.uk April 30, 2000

    36 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_152.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- Parallel Processing 8 | 9 | 10 | 11 | 12 | 13 | 36 | 37 |


    20 |

    Parallel Processing

    21 | I did carry out some initial investigations into how Taocould be 22 | parallelised whilst at the Australian Centre for the Arts and Technology 23 | during 1997-8 and came up with the idea of using Posix threads (pthreads) 24 | to split the number crunching performed by the synthesis engine up into 25 | separate threads. Unfortunately the work went no further than that but 26 | will be resumed one day if I have access to a multi-processor machine. 27 |

    28 |

    ©1999,2000 Mark Pearson 38 | m.pearson@ukonline.co.uk April 30, 2000

    39 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_17.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- Key bindings 8 | 9 | 10 | 11 | 12 | 13 | 40 | 41 |


    20 |

    Key bindings

    21 | 22 | 23 |
    Down-arrow
    Reduce the visible amplitude of the vibrations. 24 |
    Up-arrow
    Increase the visible amplitude of the vibrations. 25 |
    Left-arrow
    Decrease the number of ticks between displayed frames 26 | i.e. make the animation slower but smoother. 27 |
    Right-arrow
    Increase the number of ticks between displayed frames 28 | i.e. make the animation faster but more jerky. 29 |
    Esc
    Exit and close the graphics window. 30 |
    31 |

    32 |

    ©1999,2000 Mark Pearson 42 | m.pearson@ukonline.co.uk April 30, 2000

    43 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_18.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- Mouse bindings 8 | 9 | 10 | 11 | 12 | 13 | 37 | 38 |


    20 |

    Mouse bindings

    21 | 22 | In addition there are a number of mouse functions which work when the 23 | appropriate button is held down and the mouse is moved: 24 |

    Left-mouse
    Translate the image. 25 |
    Middle-mouse
    Zoom in/out. 26 |
    Right-mouse
    Rotate the image. 27 |
    28 |

    29 |

    ©1999,2000 Mark Pearson 39 | m.pearson@ukonline.co.uk April 30, 2000

    40 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- Where to find <B>Tao</B> 8 | 9 | 10 | 11 | 12 | 13 | 32 | 33 |


    20 |

    Where to find Tao

    21 | Tao is available from the download section of the Tao home page

    This user manual is also available for separate download either as a 22 | tar'd gzip'd archive of HTML files or a gzip'd postscript file. 23 |

    24 |

    ©1999,2000 Mark Pearson 34 | m.pearson@ukonline.co.uk April 30, 2000

    35 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_33.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- Parameters 8 | 9 | 10 | 11 | 12 | 13 | 37 | 38 |


    20 |

    Parameters

    21 | 22 | The term parameter is used as a generic term to refer to all 23 | numerical variables in Tao. There are floating point and integer parameters 24 | and the latter are declared as either being of type Integer, 25 | Counter or Flag. These types are only used to make the 26 | intended function of a particular integer variable clear to the human reader. 27 | As far as the system is concerned they are functionally identical. 28 |

    29 |

    ©1999,2000 Mark Pearson 39 | m.pearson@ukonline.co.uk April 30, 2000

    40 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_40.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- Quitting the synthesis before the performance finishes 8 | 9 | 10 | 11 | 12 | 13 | 34 | 35 |


    20 |

    Quitting the synthesis before the performance finishes

    21 | If you want to quit the synthesis before the performance completes 22 | either type [Ctrl-C] in the shell window you launched Tao from or 23 | press the [Esc] key whilst the instrument visualisation window is the 24 | active window. 25 |

    26 |

    ©1999,2000 Mark Pearson 36 | m.pearson@ukonline.co.uk April 30, 2000

    37 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_42.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- <B>Tao</B>'s User Interface 8 | 9 | 10 | 11 | 12 | 13 | 39 | 40 |


    20 |

    Tao's User Interface

    21 | 22 |

    This section describes Tao's user interface in detail and includes 23 | shell commands, and mouse and key bindings for the visualization 24 | window. 25 |

    26 |
  • Shell commands 27 |
  • Mouse bindings in the visualisation window 28 |
  • Key bindings in the visualisation window 29 |
  • 30 | 31 |
    ©1999,2000 Mark Pearson 41 | m.pearson@ukonline.co.uk April 30, 2000

    42 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_44.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- Mouse bindings in the visualisation window 8 | 9 | 10 | 11 | 12 | 13 | 38 | 39 |


    20 |

    Mouse bindings in the visualisation window

    21 | 22 | Moving the mouse whilst holding one of the mouse buttons down in the 23 | instrument visualisation window causes the image to be zoomed, translated 24 | or rotated. The mouse bindings are as follows: 25 |

    Left button
    - translate the image. 26 |
    Middle button
    - zoom the image. 27 |
    Right button
    - rotate the image. 28 |
    29 |

    30 |

    ©1999,2000 Mark Pearson 40 | m.pearson@ukonline.co.uk April 30, 2000

    41 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_57.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- At 8 | 9 | 10 | 11 | 12 | 13 | 36 | 37 |


    20 |

    At

    21 | This control structure takes the following form: 22 |

    23 |     At <t>: <body> ...
    24 | 
    25 |

    The <body> is executed if the value of Time is equal to 26 | the value <t>. 27 |

    28 |

    ©1999,2000 Mark Pearson 38 | m.pearson@ukonline.co.uk April 30, 2000

    39 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_58.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- At..for 8 | 9 | 10 | 11 | 12 | 13 | 36 | 37 |


    20 |

    At..for

    21 | This control structure repeatedly executes the instructions contained 22 | in the body on every tick from time <t1> to <t1>+<t2> 23 | inclusively: 24 |

    25 |     At <t1> for <t2>: <body> ...
    26 | 
    27 |

    28 |

    ©1999,2000 Mark Pearson 38 | m.pearson@ukonline.co.uk April 30, 2000

    39 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_59.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- From..to 8 | 9 | 10 | 11 | 12 | 13 | 35 | 36 |


    20 |

    From..to

    21 | This control structure repeatedly executes the body on every tick from 22 | <t1> to <t2> inclusively: 23 |

    24 |     From <t1> for <t2>: <body> ...
    25 | 
    26 |

    27 |

    ©1999,2000 Mark Pearson 37 | m.pearson@ukonline.co.uk April 30, 2000

    38 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_60.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- Every 8 | 9 | 10 | 11 | 12 | 13 | 35 | 36 |


    20 |

    Every

    21 | This control structure repeatedly executes the body every <t> 22 | seconds starting at 0.0 seconds: 23 |

    24 |     Every <t>: <body> ...
    25 | 
    26 |

    27 |

    ©1999,2000 Mark Pearson 37 | m.pearson@ukonline.co.uk April 30, 2000

    38 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_61.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- ControlRate 8 | 9 | 10 | 11 | 12 | 13 | 35 | 36 |


    20 |

    ControlRate

    21 | This control structure repeatedly executes the body once every 22 | <k> ticks starting at tick zero: 23 |

    24 |     ControlRate <k>: <body> ...
    25 | 
    26 |

    27 |

    ©1999,2000 Mark Pearson 37 | m.pearson@ukonline.co.uk April 30, 2000

    38 | -------------------------------------------------------------------------------- /doc/UserManual/html/UserManual_79.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | Tao User Manual -- Expressions 8 | 9 | 10 | 11 | 12 | 13 | 39 | 40 |


    20 |

    Expressions

    21 | 22 | This section describes Tao's expression syntax. If you have 23 | experience of a programming language such as C or C++ then there 24 | should be no surprises here. 25 |

    26 |
  • Operators 27 |
  • Mathematical Functions 28 |
  • The time-varying functions linear and expon 29 |
  • 30 | 31 |
    ©1999,2000 Mark Pearson 41 | m.pearson@ukonline.co.uk April 30, 2000

    42 | -------------------------------------------------------------------------------- /doc/UserManual/html/back.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MindBuffer/tao/2b0941882bd51598a5bd6a08f02a7927f13615dc/doc/UserManual/html/back.gif -------------------------------------------------------------------------------- /doc/UserManual/html/bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MindBuffer/tao/2b0941882bd51598a5bd6a08f02a7927f13615dc/doc/UserManual/html/bg.gif -------------------------------------------------------------------------------- /doc/UserManual/html/cells.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MindBuffer/tao/2b0941882bd51598a5bd6a08f02a7927f13615dc/doc/UserManual/html/cells.gif -------------------------------------------------------------------------------- /doc/UserManual/html/circle_example.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MindBuffer/tao/2b0941882bd51598a5bd6a08f02a7927f13615dc/doc/UserManual/html/circle_example.gif -------------------------------------------------------------------------------- /doc/UserManual/html/circle_waves.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MindBuffer/tao/2b0941882bd51598a5bd6a08f02a7927f13615dc/doc/UserManual/html/circle_waves.gif -------------------------------------------------------------------------------- /doc/UserManual/html/compound_example.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MindBuffer/tao/2b0941882bd51598a5bd6a08f02a7927f13615dc/doc/UserManual/html/compound_example.gif -------------------------------------------------------------------------------- /doc/UserManual/html/forward.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MindBuffer/tao/2b0941882bd51598a5bd6a08f02a7927f13615dc/doc/UserManual/html/forward.gif -------------------------------------------------------------------------------- /doc/UserManual/html/instrument_coord_system.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MindBuffer/tao/2b0941882bd51598a5bd6a08f02a7927f13615dc/doc/UserManual/html/instrument_coord_system.gif -------------------------------------------------------------------------------- /doc/UserManual/html/joining.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MindBuffer/tao/2b0941882bd51598a5bd6a08f02a7927f13615dc/doc/UserManual/html/joining.gif -------------------------------------------------------------------------------- /doc/UserManual/html/new.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MindBuffer/tao/2b0941882bd51598a5bd6a08f02a7927f13615dc/doc/UserManual/html/new.gif -------------------------------------------------------------------------------- /doc/UserManual/html/trans1x1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MindBuffer/tao/2b0941882bd51598a5bd6a08f02a7927f13615dc/doc/UserManual/html/trans1x1.gif -------------------------------------------------------------------------------- /doc/UserManual/html/up.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MindBuffer/tao/2b0941882bd51598a5bd6a08f02a7927f13615dc/doc/UserManual/html/up.gif -------------------------------------------------------------------------------- /doc/UserManual/html/xandyfreqs.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MindBuffer/tao/2b0941882bd51598a5bd6a08f02a7927f13615dc/doc/UserManual/html/xandyfreqs.gif -------------------------------------------------------------------------------- /doc/taomanual.css: -------------------------------------------------------------------------------- 1 | body 2 | { 3 | margin-left: 2cm; 4 | } 5 | 6 | h1,h2,h3,h4 7 | { 8 | color: #336699; 9 | font-family: arial, helvetica, sans-serif; 10 | margin-top: 0cm; 11 | } 12 | 13 | h1 { 14 | font-size: 170%; 15 | text-align: right; 16 | } 17 | h2 { 18 | font-size: 115%; 19 | text-align: left; 20 | } 21 | h3 { 22 | font-size: 105%; 23 | text-align: left; 24 | } 25 | h4 { 26 | font-size: 100%; 27 | text-align: left; 28 | } 29 | 30 | pre,code 31 | { 32 | color: #666666; 33 | font-family: "courier new", courier; 34 | font-size: 12pt; 35 | } 36 | 37 | .main 38 | { 39 | font-family: "times new roman", times; 40 | font-size: 14pt; 41 | } 42 | 43 | td.main 44 | { 45 | font-family: "times new roman", times; 46 | font-size: 14pt; 47 | text-align: justify; 48 | } 49 | td.nav 50 | { 51 | font-family: tahoma, arial, times; 52 | font-size: 10pt; 53 | background-color: #FFCCCC 54 | } 55 | 56 | table { 57 | } -------------------------------------------------------------------------------- /examples/Makefile.am: -------------------------------------------------------------------------------- 1 | EXTRA_DIST= \ 2 | accesspoint1.tao \ 3 | accesspoint2.tao \ 4 | bow.tao \ 5 | circle.tao \ 6 | circle2.tao \ 7 | connector.tao \ 8 | damp.tao \ 9 | diffraction.tao \ 10 | ellipse.tao \ 11 | ellipse2.tao \ 12 | hammer.tao \ 13 | lock.tao \ 14 | outputarray.tao \ 15 | outputs.tao \ 16 | pitches.tao \ 17 | rectangle.tao \ 18 | rectangle2.tao \ 19 | stop.tao \ 20 | string.tao \ 21 | test.tao 22 | 23 | 24 | -------------------------------------------------------------------------------- /examples/accesspoint1.tao: -------------------------------------------------------------------------------- 1 | // accesspoint1.tao 2 | // 3 | // Shows how to create and initialise two AccessPoint objects and then use 4 | // them to specify where to take output from a string. 5 | 6 | Audio rate: 44100; 7 | 8 | String s1(100 Hz, 20 secs); 9 | 10 | AccessPoint l=s1(0.1), r=s1(0.9); 11 | 12 | Output out(2); 13 | 14 | Init: 15 | s1.lockEnds(); 16 | ... 17 | 18 | Score 5.0 secs: 19 | At 0 secs for 0.1 msecs: 20 | s1(0.05).applyForce(1.0); 21 | ... 22 | 23 | Every 0.1 secs: 24 | Print Time, " ", l, " ", r, newline; 25 | ... 26 | 27 | out.chL: l; 28 | out.chR: r; 29 | ... 30 | 31 | -------------------------------------------------------------------------------- /examples/accesspoint2.tao: -------------------------------------------------------------------------------- 1 | // accesspoint2.tao 2 | // 3 | // Shows how to create two AccessPoint objects, assign them positions on two 4 | // strings and then use them to implement a connection between the two strings. 5 | 6 | Audio rate: 44100; 7 | 8 | String string1(200 Hz, 20 secs); 9 | String string2(200 Hz, 20 secs); 10 | 11 | AccessPoint point1, point2; 12 | 13 | Connector connector; 14 | 15 | Output out(2); 16 | 17 | Init: 18 | string1.lockEnds(); 19 | string2.lockEnds(); 20 | ... 21 | 22 | Score 5.0 secs: 23 | At 0 secs for 0.1 msecs: 24 | string1(0.05).applyForce(1.0); 25 | ... 26 | 27 | ControlRate 100: 28 | point1=string1(linear(0,1)); 29 | point2=string2(linear(1,0)); 30 | ... 31 | 32 | point1 -- connector -- point2; 33 | out.ch1: point1; 34 | out.ch2: point2; 35 | ... 36 | 37 | -------------------------------------------------------------------------------- /examples/bow.tao: -------------------------------------------------------------------------------- 1 | Audio rate: 44100; 2 | 3 | String string(200 Hz, 30 secs); 4 | 5 | Bow bow; 6 | 7 | 8 | Output outputs(mono)[5]; 9 | 10 | Init: 11 | string.lockEnds(); 12 | ... 13 | 14 | Score 30 secs: 15 | At start for 0.1 secs: 16 | string(0.1).applyForce(1.0); 17 | ... 18 | 19 | outputs[0].ch1: string(0.1); 20 | outputs[1].ch1: string(0.3); 21 | outputs[2].ch1: string(0.5); 22 | outputs[3].ch1: string(0.7); 23 | outputs[4].ch1: string(0.9); 24 | ... 25 | -------------------------------------------------------------------------------- /examples/circle.tao: -------------------------------------------------------------------------------- 1 | Audio rate: 44100; 2 | 3 | Circle circle(300 Hz, 20 secs); 4 | 5 | Init: 6 | circle.lockPerimeter(); 7 | ... 8 | 9 | Score 5 secs: 10 | At 0 secs for 1 msecs: 11 | circle(0.3,0.3).applyForce(linear(40,0)); 12 | ... 13 | ... -------------------------------------------------------------------------------- /examples/circle2.tao: -------------------------------------------------------------------------------- 1 | Audio rate: 44100; 2 | 3 | Circle circle(300 Hz, 20 secs); 4 | 5 | Init: 6 | circle.lockLeft().lockRight(); 7 | ... 8 | 9 | Score 5 secs: 10 | At 0 secs for 1 msecs: 11 | circle(0.3,0.3).applyForce(linear(30,0)); 12 | ... 13 | ... 14 | 15 | -------------------------------------------------------------------------------- /examples/connector.tao: -------------------------------------------------------------------------------- 1 | Audio rate: 44100; 2 | 3 | String string1(200 Hz, 30 secs); 4 | String string2(200 Hz, 30 secs); 5 | 6 | Connector conn; 7 | 8 | Param x1,x2; 9 | 10 | Init: 11 | string1.lockEnds(); 12 | string2.lockEnds(); 13 | ... 14 | 15 | Score 1 secs: 16 | At start for 1 msecs: 17 | string1(0.1).applyForce(1.0); 18 | ... 19 | 20 | x1 = linear(0,1); 21 | x2 = linear(1,0); 22 | 23 | string1(x1) -- conn -- string2(x2); 24 | ... 25 | -------------------------------------------------------------------------------- /examples/damp.tao: -------------------------------------------------------------------------------- 1 | Audio rate: 44100; 2 | 3 | String string1(300 Hz, 20 secs); 4 | String string2(300 Hz, 20 secs); 5 | String string3(300 Hz, 20 secs); 6 | String string4(300 Hz, 20 secs); 7 | String string5(300 Hz, 20 secs); 8 | String string6(300 Hz, 20 secs); 9 | String string7(300 Hz, 20 secs); 10 | String string8(300 Hz, 20 secs); 11 | String string9(300 Hz, 20 secs); 12 | String string10(300 Hz, 20 secs); 13 | 14 | Init: 15 | string1.lockEnds().setDamping(left,1/20,0.0); 16 | string2.lockEnds().setDamping(left,1/20,0.1); 17 | string3.lockEnds().setDamping(left,1/20,0.2); 18 | string4.lockEnds().setDamping(left,1/20,0.3); 19 | string5.lockEnds().setDamping(left,1/20,0.4); 20 | string6.lockEnds().setDamping(left,1/20,0.5); 21 | string7.lockEnds().setDamping(left,1/20,0.6); 22 | string8.lockEnds().setDamping(left,1/20,0.7); 23 | string9.lockEnds().setDamping(left,1/20,0.8); 24 | string10.lockEnds().setDamping(left,1/20,0.8); 25 | ... 26 | 27 | Score 5 secs: 28 | At 0 secs for 0.1 msecs: 29 | string1(0.1).applyForce(10); 30 | string2(0.1).applyForce(10); 31 | string3(0.1).applyForce(10); 32 | string4(0.1).applyForce(10); 33 | string5(0.1).applyForce(10); 34 | string6(0.1).applyForce(10); 35 | string7(0.1).applyForce(10); 36 | string8(0.1).applyForce(10); 37 | string9(0.1).applyForce(10); 38 | string10(0.1).applyForce(10); 39 | ... 40 | 41 | Every 0.1 secs: Print Time, newline; ... 42 | ... -------------------------------------------------------------------------------- /examples/diffraction.tao: -------------------------------------------------------------------------------- 1 | Audio rate: 44100; 2 | 3 | Rectangle source(150 Hz, 300 Hz, 20 secs); 4 | Rectangle dest(150 Hz, 300 Hz, 20 secs); 5 | 6 | Init: 7 | source.lockCorners(); 8 | dest.lockCorners(); 9 | 10 | source.lock(0.000000, 0.050000, top, top); 11 | source.lock(0.070000, 0.120000, top, top); 12 | source.lock(0.140000, 0.190000, top, top); 13 | source.lock(0.210000, 0.260000, top, top); 14 | source.lock(0.280000, 0.330000, top, top); 15 | source.lock(0.350000, 0.400000, top, top); 16 | source.lock(0.420000, 0.470000, top, top); 17 | source.lock(0.490000, 0.540000, top, top); 18 | source.lock(0.560000, 0.610000, top, top); 19 | source.lock(0.630000, 0.680000, top, top); 20 | source.lock(0.700000, 0.750000, top, top); 21 | source.lock(0.770000, 0.820000, top, top); 22 | source.lock(0.840000, 0.890000, top, top); 23 | source.lock(0.910000, 0.960000, top, top); 24 | source.lock(0.980000, 1.000000, top, top); 25 | 26 | Join source(centre, top) to dest(centre, bottom); 27 | 28 | dest.setMagnification(5.0); 29 | ... 30 | 31 | Score 5 secs: 32 | At 0 secs for 0.1 msecs: 33 | source(0.5,bottom).applyForce(50); 34 | ... 35 | ... 36 | -------------------------------------------------------------------------------- /examples/ellipse.tao: -------------------------------------------------------------------------------- 1 | Audio rate: 44100; 2 | 3 | Ellipse ellipse(200 Hz, 400 Hz, 20 secs); 4 | 5 | Init: 6 | ellipse.lockPerimeter(); 7 | ... 8 | 9 | Score 5 secs: 10 | At 0 secs for 0.5 msecs: 11 | ellipse(0.15,0.5).applyForce(linear(30,0)); 12 | ... 13 | ... -------------------------------------------------------------------------------- /examples/ellipse2.tao: -------------------------------------------------------------------------------- 1 | Audio rate: 44100; 2 | 3 | Ellipse ellipse2(200 Hz, 400 Hz, 20 secs); 4 | 5 | Init: 6 | ellipse2.lock(left, 0.8, centre, centre); 7 | ... 8 | 9 | Score 5 secs: 10 | At 0 secs for 0.5 msecs: 11 | ellipse2(0.3,0.2).applyForce(linear(30,0)); 12 | ... 13 | ... -------------------------------------------------------------------------------- /examples/hammer.tao: -------------------------------------------------------------------------------- 1 | Audio rate: 44100; 2 | 3 | String string(200 Hz, 30 secs); 4 | 5 | Hammer hammer; 6 | 7 | Init: 8 | string.lockEnds(); 9 | string(0.7) -- hammer; 10 | hammer.setGravity(0.0001).setMass(200.0); 11 | ... 12 | 13 | Score 10 secs: 14 | At 0 secs: 15 | hammer.drop(); 16 | ... 17 | ... 18 | -------------------------------------------------------------------------------- /examples/lock.tao: -------------------------------------------------------------------------------- 1 | Audio rate: 44100; 2 | 3 | Rectangle rect1(500 Hz, 600 Hz, 20 secs); 4 | Rectangle rect2(500 Hz, 600 Hz, 20 secs); 5 | Rectangle rect3(500 Hz, 600 Hz, 20 secs); 6 | Rectangle rect4(500 Hz, 600 Hz, 20 secs); 7 | Rectangle rect5(500 Hz, 600 Hz, 20 secs); 8 | Rectangle rect6(500 Hz, 600 Hz, 20 secs); 9 | 10 | Init: 11 | rect1.lockCorners(); 12 | rect2.lockLeft().lockRight(); 13 | rect3.lockTop().lockBottom(); 14 | rect4.lockPerimeter(); 15 | rect5.lock(0.2,0.4); 16 | rect6.lock(0.7, right, 0.7, top); 17 | ... 18 | 19 | Score 5 secs: 20 | At 0 secs for 1 msecs: 21 | rect1(0.1,0.1).applyForce(linear(30,0)); 22 | rect2(0.1,0.1).applyForce(linear(50,0)); 23 | rect3(0.1,0.1).applyForce(linear(50,0)); 24 | rect4(0.1,0.1).applyForce(linear(50,0)); 25 | rect5(0.1,0.1).applyForce(linear(20,0)); 26 | rect6(0.1,0.1).applyForce(linear(30,0)); 27 | ... 28 | ... -------------------------------------------------------------------------------- /examples/outputarray.tao: -------------------------------------------------------------------------------- 1 | Audio rate: 44100; 2 | 3 | String string(200 Hz, 30 secs); 4 | 5 | Output outputs(mono)[5]; 6 | 7 | Init: 8 | string.lockEnds(); 9 | ... 10 | 11 | Score 30 secs: 12 | At start for 0.1 secs: 13 | string(0.1).applyForce(1.0); 14 | ... 15 | 16 | outputs[0].ch1: string(0.1); 17 | outputs[1].ch1: string(0.3); 18 | outputs[2].ch1: string(0.5); 19 | outputs[3].ch1: string(0.7); 20 | outputs[4].ch1: string(0.9); 21 | ... 22 | -------------------------------------------------------------------------------- /examples/outputs.tao: -------------------------------------------------------------------------------- 1 | Audio rate: 44100; 2 | 3 | String string(100 Hz, 30 secs); 4 | 5 | Output out1(stereo), out2(mono); 6 | 7 | Init: 8 | string.lockEnds(); 9 | ... 10 | 11 | Score 30 secs: 12 | At start for 0.1 msecs: 13 | string(0.9).applyForce(1.0); 14 | ... 15 | 16 | out1.chL: string(0.1); 17 | out1.chR: string(0.9); 18 | 19 | out2.ch1: string(0.5); 20 | 21 | Every 0.1 secs: Print Time, newline; ... 22 | ... 23 | -------------------------------------------------------------------------------- /examples/pitches.tao: -------------------------------------------------------------------------------- 1 | Audio rate: 44100; 2 | 3 | String array1[]= 4 | { 5 | (200 Hz, 20 secs), 6 | (220 Hz, 20 secs), 7 | (240 Hz, 20 secs), 8 | (260 Hz, 20 secs) 9 | }; 10 | 11 | String array2[]= 12 | { 13 | (8.00 pch, 20 secs), 14 | (8.04 pch, 20 secs), 15 | (8.06 pch, 20 secs), 16 | (8.08 pch, 20 secs) 17 | }; 18 | 19 | String array3[]= 20 | { 21 | (8.0 oct, 20 secs), 22 | (8.2 oct, 20 secs), 23 | (8.4 oct, 20 secs), 24 | (8.6 oct, 20 secs) 25 | }; 26 | 27 | Counter n; 28 | 29 | Init: 30 | For n = 0 to 3: 31 | array1[n].lockEnds(); 32 | array2[n].lockEnds(); 33 | array3[n].lockEnds(); 34 | ... 35 | ... 36 | 37 | Score 5 secs: 38 | Label(array1[0], 1.0, 1.0, -1.0, "User-defined label!", 0.0, 1.0, 0.0); 39 | 40 | At start for 0.1 msecs: 41 | For n = 0 to 3: 42 | array1[n](0.1).applyForce(1.0); 43 | array2[n](0.1).applyForce(1.0); 44 | array3[n](0.1).applyForce(1.0); 45 | ... 46 | ... 47 | ... 48 | -------------------------------------------------------------------------------- /examples/rectangle.tao: -------------------------------------------------------------------------------- 1 | Audio rate: 44100; 2 | 3 | Rectangle rectangle(300 Hz, 400 Hz, 20 secs); 4 | 5 | Init: 6 | rectangle.lockCorners(); 7 | ... 8 | 9 | Score 5 secs: 10 | At 0 secs for 1 msecs: 11 | rectangle(0.1,0.1).applyForce(linear(30,0)); 12 | ... 13 | ... -------------------------------------------------------------------------------- /examples/rectangle2.tao: -------------------------------------------------------------------------------- 1 | Audio rate: 44100; 2 | 3 | Rectangle rectangle2(150 Hz, 800 Hz, 20 secs); 4 | 5 | Init: 6 | rectangle2.lockLeft().lockRight(); 7 | ... 8 | 9 | Score 5 secs: 10 | At 0 secs for 1 msecs: 11 | rectangle2(0.1,0.1).applyForce(linear(30,0)); 12 | ... 13 | ... -------------------------------------------------------------------------------- /examples/stop.tao: -------------------------------------------------------------------------------- 1 | // stop.tao - a simple Tao script illustrating the use of the Stop device. 2 | // 3 | // This script creates a single string and a Stop device. It applies the 4 | // Stop device at a position which traverses the string over the duration 5 | // of the performance. In addition the `amount' attribute of the Stop 6 | // device is changed gradually from 0 to 1 near the beginning of the 7 | // performance and then back from 1 to 0 near the end. Watch for the 8 | // effect this has on the amount of movement the Stop device allows. When 9 | // amount=0, the string is restrained at the stop positio but nowhere near 10 | // as much as when amount=1. 11 | 12 | Audio rate: 44100; 13 | 14 | String string(200 Hz, 40 secs); 15 | 16 | Stop stop; 17 | 18 | Param position, amount=0.0; 19 | 20 | Init: 21 | string.lockEnds(); 22 | ... 23 | 24 | Score 0.3 secs: 25 | At 0 secs for 0.1 msecs: 26 | string(0.9).applyForce(10.0); 27 | ... 28 | 29 | position=linear(0.1, 0.9); 30 | 31 | string(position) -- stop; 32 | 33 | From 0.05 secs to 0.1 secs: 34 | amount=linear(0,1); 35 | stop.setAmount(linear(0,1)); 36 | ... 37 | 38 | From 0.20 to 0.25 secs: 39 | amount=linear(1,0); 40 | stop.setAmount(linear(1,0)); 41 | ... 42 | 43 | Every 0.005 secs: 44 | Print Time, " ", amount, newline; ... 45 | ... 46 | -------------------------------------------------------------------------------- /examples/string.tao: -------------------------------------------------------------------------------- 1 | Audio rate: 44100; 2 | 3 | String string(200 Hz, 20 secs); 4 | 5 | Init: 6 | string.lockEnds(); 7 | ... 8 | 9 | Score 5 secs: 10 | At 0 secs for 1 msecs: 11 | string(0.1).applyForce(linear(1,0)); 12 | ... 13 | ... 14 | -------------------------------------------------------------------------------- /examples/test.tao: -------------------------------------------------------------------------------- 1 | Audio rate: 44100; 2 | 3 | Circle c(800 Hz, 20 secs); 4 | String strings[4]= 5 | { 6 | (800 Hz, 20 secs), 7 | (810 Hz, 20 secs), 8 | (820 Hz, 20 secs), 9 | (830 Hz, 20 secs) 10 | }; 11 | Rectangle r(800 Hz, 900 Hz, 20 secs); 12 | Triangle t(800 Hz, 900 Hz, 20 secs); 13 | Connector conn1, conn2, conn3, conn4; 14 | Counter s; 15 | 16 | Init: 17 | For s = 0 to 3: 18 | strings[s].lockEnds(); 19 | ... 20 | 21 | c.lockPerimeter(); 22 | r.lockCorners(); 23 | t.lockLeft().lockRight(); 24 | 25 | strings[0](0.1) -- conn1 -- strings[1](0.1); 26 | strings[1](0.9) -- conn2 -- strings[2](0.9); 27 | strings[2](0.1) -- conn3 -- strings[3](0.1); 28 | 29 | r(0.6,0.2) -- conn4 -- 0.0; 30 | 31 | r.placeRightOf(c,20); 32 | t.placeAbove(r); 33 | ... 34 | 35 | Score 20 secs: 36 | At start for 0.1 msecs: 37 | strings[0](0.1).applyForce(1.0); 38 | strings[1](0.1).applyForce(1.0); 39 | strings[2](0.1).applyForce(1.0); 40 | strings[3](0.1).applyForce(1.0); 41 | 42 | c(0.1,0.5).applyForce(10.0); 43 | r(0.7,0.8).applyForce(10.0); 44 | t(0.8,0.6).applyForce(10.0); 45 | ... 46 | ... 47 | -------------------------------------------------------------------------------- /include/Makefile.am: -------------------------------------------------------------------------------- 1 | EXTRA_DIST=\ 2 | Tao.h \ 3 | TaoAccessPoint.h \ 4 | TaoBow.h \ 5 | TaoCell.h \ 6 | TaoCircle.h \ 7 | TaoConnector.h \ 8 | TaoDevice.h \ 9 | TaoEllipse.h \ 10 | TaoGraphicsEngine.h \ 11 | TaoHammer.h \ 12 | TaoInstrument.h \ 13 | TaoOutput.h \ 14 | TaoPitch.h \ 15 | TaoRGBColor.h \ 16 | TaoRectangle.h \ 17 | TaoStop.h \ 18 | TaoString.h \ 19 | TaoSynthEngine.h \ 20 | TaoTriangle.h \ 21 | taodefs.h 22 | -------------------------------------------------------------------------------- /include/TaoBow.h: -------------------------------------------------------------------------------- 1 | /* Tao - A software package for sound synthesis with physical models 2 | * Copyright (C) 1993-1999 Mark Pearson 3 | * 4 | * This program is free software; you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation; either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program; if not, write to the Free Software 16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 | */ 18 | 19 | #ifndef BOW_H 20 | #define BOW_H 21 | 22 | #include "TaoDevice.h" 23 | #include "TaoAccessPoint.h" 24 | 25 | #ifdef WIN32 26 | #define DLLEXPORT __declspec(dllexport) 27 | #else 28 | #define DLLEXPORT 29 | #endif 30 | 31 | class TaoInstrument; 32 | 33 | class DLLEXPORT TaoBow : public TaoDevice 34 | { 35 | public: 36 | TaoBow(); 37 | TaoBow(const char *bowName); 38 | TaoBow &setForce(float force); 39 | TaoBow &setVelocity(float velocity); 40 | float getForce(); 41 | float getVelocity(); 42 | void operator()(TaoAccessPoint &a); 43 | void operator()(TaoInstrument &instr, float x); 44 | void operator()(TaoInstrument &instr, float x, float y); 45 | void update(); 46 | void display(); 47 | 48 | private: 49 | enum BowMode {stick, slip}; 50 | BowMode mode; 51 | float maxVelocity; 52 | float bowVelocity, downwardForce; 53 | float stickingForce, slippingForce, forceExerted; 54 | float relativeVelocity, instrAcceleration; 55 | float instrForce, instrVelocity; 56 | float bowPointPosition; 57 | }; 58 | 59 | #endif 60 | -------------------------------------------------------------------------------- /include/TaoCell.h: -------------------------------------------------------------------------------- 1 | /* Tao - A software package for sound synthesis with physical models 2 | * Copyright (C) 1993-1999 Mark Pearson 3 | * 4 | * This program is free software; you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation; either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program; if not, write to the Free Software 16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 | */ 18 | 19 | #ifndef TAO_CELL_H 20 | #define TAO_CELL_H 21 | 22 | #ifdef WIN32 23 | #define DLLEXPORT __declspec(dllexport) 24 | #else 25 | #define DLLEXPORT 26 | #endif 27 | 28 | #define TAO_CELL_LOCK_MODE 0x0001 29 | #define TAO_CELL_SLAVE_MODE 0x0002 30 | #define TAO_CELL_MASTER_MODE 0x0004 31 | #define TAO_CELL_BOW_STICK_MODE 0x0008 32 | 33 | #define TAO_CELL_HAS_8_NEIGHBOURS 0x0010 34 | 35 | #define TAO_CELL_NORTH 0x0100 36 | #define TAO_CELL_NWEST 0x0200 37 | #define TAO_CELL_WEST 0x0400 38 | #define TAO_CELL_SWEST 0x0800 39 | #define TAO_CELL_SOUTH 0x1000 40 | #define TAO_CELL_SEAST 0x2000 41 | #define TAO_CELL_EAST 0x4000 42 | #define TAO_CELL_NEAST 0x8000 43 | 44 | class TaoInstrument; 45 | class TaoAccessPoint; 46 | class TaoConnector; 47 | class TaoGraphicsEngine; 48 | 49 | class DLLEXPORT TaoCell 50 | { 51 | friend class TaoInstrument; 52 | friend class TaoAccessPoint; 53 | friend class TaoConnector; 54 | friend class TaoGraphicsEngine; 55 | 56 | private: 57 | int mode; 58 | TaoCell *north, *south, *east, *west; 59 | TaoCell *neast, *nwest, *seast, *swest; 60 | TaoCell *companion; 61 | float mass, velocityMultiplier; // simulates losses 62 | float inverseMass; 63 | float position, velocity, force; 64 | void applyForce(float F); 65 | void bow(float f_bow, float v_bow); 66 | void lock() {mode |= TAO_CELL_LOCK_MODE;} 67 | operator float() {return position;} 68 | }; 69 | 70 | #endif 71 | -------------------------------------------------------------------------------- /include/TaoCircle.h: -------------------------------------------------------------------------------- 1 | /* Tao - A software package for sound synthesis with physical models 2 | * Copyright (C) 1993-1999 Mark Pearson 3 | * 4 | * This program is free software; you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation; either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program; if not, write to the Free Software 16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 | */ 18 | 19 | #ifndef CIRCLE_H 20 | #define CIRCLE_H 21 | 22 | #include "TaoCell.h" 23 | #include "TaoInstrument.h" 24 | 25 | #ifdef WIN32 26 | #define DLLEXPORT __declspec(dllexport) 27 | #else 28 | #define DLLEXPORT 29 | #endif 30 | 31 | class DLLEXPORT TaoCircle : public TaoInstrument 32 | { 33 | public: 34 | TaoCircle(const TaoPitch &pitch, float decay); 35 | TaoCircle(const char *name, const TaoPitch &pitch, float decay); 36 | void createTheMaterial(); 37 | }; 38 | 39 | #endif 40 | -------------------------------------------------------------------------------- /include/TaoConnector.h: -------------------------------------------------------------------------------- 1 | /* Tao - A software package for sound synthesis with physical models 2 | * Copyright (C) 1993-1999 Mark Pearson 3 | * 4 | * This program is free software; you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation; either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program; if not, write to the Free Software 16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 | */ 18 | 19 | #ifndef CONNECTOR_H 20 | #define CONNECTOR_H 21 | 22 | #include "TaoDevice.h" 23 | #include "TaoAccessPoint.h" 24 | 25 | #ifdef WIN32 26 | #define DLLEXPORT __declspec(dllexport) 27 | #else 28 | #define DLLEXPORT 29 | #endif 30 | 31 | class DLLEXPORT TaoConnector : public TaoDevice 32 | { 33 | public: 34 | TaoConnector(void); 35 | ~TaoConnector(); 36 | TaoConnector(const char *connectorName); 37 | TaoConnector(const char *connectorName, TaoAccessPoint &ap1, TaoAccessPoint &ap2); 38 | TaoConnector(const char *connectorName, TaoAccessPoint &ap1, TaoAccessPoint &ap2, 39 | float connectionStrength); 40 | TaoConnector(const char *connectorName, TaoAccessPoint &ap, float anchor); 41 | TaoConnector(const char *connectorName, TaoAccessPoint &ap, float anchor, 42 | float connectionStrength); 43 | TaoConnector(const char *connectorName, float anchor, TaoAccessPoint &ap); 44 | TaoConnector(const char *connectorName, float anchor, TaoAccessPoint &ap, 45 | float connectionStrength); 46 | void operator()(TaoAccessPoint &ap1, TaoAccessPoint &ap2); 47 | void operator()(TaoAccessPoint &ap1, TaoAccessPoint &ap2, float connectionStrength); 48 | void operator()(TaoAccessPoint &ap, float anchor); 49 | void operator()(TaoAccessPoint &ap, float anchor, float connectionStrength); 50 | void operator()(float anchor, TaoAccessPoint &ap); 51 | void operator()(float anchor, TaoAccessPoint &ap, float connectionStrength); 52 | void update(); 53 | 54 | void display(); 55 | 56 | private: 57 | TaoAccessPoint accessPoint1, accessPoint2; 58 | float anchorPoint1, anchorPoint2; // If one or both ends of the connector 59 | // are connected to constants rather 60 | // than real access points, these 61 | // variables store the z-coordinates 62 | // for the anchor points. 63 | float strength; 64 | void updateAccessToAccess(); 65 | void updateAccessToAnchor(); 66 | void updateAnchorToAccess(); 67 | }; 68 | 69 | #endif 70 | -------------------------------------------------------------------------------- /include/TaoDevice.h: -------------------------------------------------------------------------------- 1 | /* Tao - A software package for sound synthesis with physical models 2 | * Copyright (C) 1993-1999 Mark Pearson 3 | * 4 | * This program is free software; you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation; either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program; if not, write to the Free Software 16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 | */ 18 | 19 | #ifndef TAODEVICE_H 20 | #define TAODEVICE_H 21 | 22 | #ifndef NULL 23 | #define NULL 0 24 | #endif 25 | 26 | #ifndef FALSE 27 | #define FALSE 0 28 | #endif 29 | 30 | #ifndef TRUE 31 | #define TRUE 1 32 | #endif 33 | 34 | #include "TaoAccessPoint.h" 35 | 36 | #ifdef WIN32 37 | #define DLLEXPORT __declspec(dllexport) 38 | #else 39 | #define DLLEXPORT 40 | #endif 41 | 42 | class TaoSynthEngine; 43 | class Instrument; 44 | 45 | class DLLEXPORT TaoDevice 46 | { 47 | friend class TaoSynthEngine; 48 | friend class TaoGraphicsEngine; 49 | 50 | public: 51 | TaoDevice(); 52 | ~TaoDevice(); 53 | TaoDevice(const char *deviceName); 54 | char *getName(); 55 | float getX(); 56 | float getY(); 57 | virtual void apply(TaoAccessPoint &a); 58 | void remove(); 59 | float x, y; 60 | 61 | protected: 62 | void addToSynthesisEngine(); 63 | void removeFromSynthesisEngine(); 64 | void activate(); 65 | void deactivate(); 66 | virtual void update()=0; 67 | virtual void display()=0; 68 | 69 | enum 70 | { 71 | BOW, 72 | HAMMER, 73 | CONNECTOR, 74 | STOP, 75 | OUTPUT 76 | }; 77 | 78 | int deviceType; 79 | int active; 80 | char name[30]; 81 | TaoInstrument *targetInstrument; 82 | TaoAccessPoint interfacePoint; 83 | TaoDevice *next; 84 | }; 85 | 86 | #endif 87 | -------------------------------------------------------------------------------- /include/TaoEllipse.h: -------------------------------------------------------------------------------- 1 | /* Tao - A software package for sound synthesis with physical models 2 | * Copyright (C) 1993-1999 Mark Pearson 3 | * 4 | * This program is free software; you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation; either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program; if not, write to the Free Software 16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 | */ 18 | 19 | #ifndef ELLIPSE_H 20 | #define ELLIPSE_H 21 | 22 | #include "TaoCell.h" 23 | #include "TaoInstrument.h" 24 | 25 | #ifdef WIN32 26 | #define DLLEXPORT __declspec(dllexport) 27 | #else 28 | #define DLLEXPORT 29 | #endif 30 | 31 | class DLLEXPORT TaoEllipse : public TaoInstrument 32 | { 33 | public: 34 | TaoEllipse(const TaoPitch &xpitch, const TaoPitch &ypitch, float decay); 35 | TaoEllipse(const char *name, const TaoPitch &xpitch, 36 | const TaoPitch &ypitch, float decay); 37 | void createTheMaterial(); 38 | }; 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /include/TaoHammer.h: -------------------------------------------------------------------------------- 1 | /* Tao - A software package for sound synthesis with physical models 2 | * Copyright (C) 1993-1999 Mark Pearson 3 | * 4 | * This program is free software; you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation; either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program; if not, write to the Free Software 16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 | */ 18 | 19 | #ifndef HAMMER_H 20 | #define HAMMER_H 21 | 22 | #include "TaoDevice.h" 23 | 24 | #ifdef WIN32 25 | #define DLLEXPORT __declspec(dllexport) 26 | #else 27 | #define DLLEXPORT 28 | #endif 29 | 30 | class DLLEXPORT TaoHammer : public TaoDevice 31 | { 32 | public: 33 | TaoHammer(); 34 | TaoHammer(const char *hammerName); 35 | void update(); 36 | void display(); 37 | void reset(); 38 | void drop(); 39 | void operator()(TaoAccessPoint &a); 40 | void operator()(TaoInstrument &instr, float x); 41 | void operator()(TaoInstrument &instr, float x, float y); 42 | TaoHammer &setMass(float m); 43 | TaoHammer &setPosition(float p); 44 | TaoHammer &setInitVelocity(float v); 45 | TaoHammer &setGravity(float g); 46 | TaoHammer &setHeight(float h); 47 | TaoHammer &setDamping(float d); 48 | TaoHammer &setHardness(float h); 49 | TaoHammer &setMaxImpacts(int maxImpacts); 50 | float getMass(); 51 | float getPosition(); 52 | float getVelocity(); 53 | float getInitVelocity(); 54 | float getGravity(); 55 | float getHeight(); 56 | float getDamping(); 57 | float getHardness(); 58 | int numberOfImpacts(); 59 | int getMaxImpacts(); 60 | 61 | private: 62 | enum TaoHammerMode {contact, nocontact}; 63 | TaoHammerMode mode; 64 | float height; 65 | float position; 66 | float initVelocity; 67 | float velocity; 68 | float mass; 69 | float force; 70 | float damping; 71 | float size; 72 | float gravity; 73 | float hardness; 74 | float collisionForce; 75 | int numImpacts; 76 | int maxImpacts; 77 | }; 78 | 79 | #endif 80 | -------------------------------------------------------------------------------- /include/TaoOutput.h: -------------------------------------------------------------------------------- 1 | /* Tao - A software package for sound synthesis with physical models 2 | * Copyright (C) 1993-1999 Mark Pearson 3 | * 4 | * This program is free software; you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation; either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program; if not, write to the Free Software 16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 | */ 18 | 19 | #ifndef OUTPUT_H 20 | #define OUTPUT_H 21 | 22 | #include 23 | #include 24 | #include "TaoDevice.h" 25 | 26 | #ifdef WIN32 27 | #define DLLEXPORT __declspec(dllexport) 28 | #else 29 | #define DLLEXPORT 30 | #endif 31 | 32 | class TaoSynthEngine; 33 | 34 | #define stereo 2 35 | #define mono 1 36 | 37 | class TaoDevice; 38 | 39 | class DLLEXPORT TaoOutput : public TaoDevice 40 | { 41 | friend class TaoSynthEngine; 42 | 43 | public: 44 | TaoOutput(); 45 | ~TaoOutput(); 46 | TaoOutput(const char *filename, int channels); 47 | TaoOutput(const char *outputName, const char *filename, int channels); 48 | inline void ch1(float value) {samples[0]=value;} 49 | inline void ch2(float value) {samples[1]=value;} 50 | inline void ch3(float value) {samples[2]=value;} 51 | inline void ch4(float value) {samples[3]=value;} 52 | inline void chL(float value) {samples[0]=value;} 53 | inline void chR(float value) {samples[1]=value;} 54 | void update(); 55 | void display(); 56 | 57 | private: 58 | static const int buffersize; 59 | int first_write; 60 | int index, numChannels; 61 | float *buffer; 62 | char *fullfilename; 63 | std::ofstream *outputfile; 64 | float *samples; 65 | float maxSample; 66 | char *displayString; 67 | std::ostringstream *displayStream; 68 | static float displayPosition; 69 | float myDisplayPosition; 70 | }; 71 | 72 | #endif 73 | -------------------------------------------------------------------------------- /include/TaoPitch.h: -------------------------------------------------------------------------------- 1 | /* Tao - A software package for sound synthesis with physical models 2 | * Copyright (C) 1993-1999 Mark Pearson 3 | * 4 | * This program is free software; you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation; either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program; if not, write to the Free Software 16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 | */ 18 | 19 | #ifndef TAOPITCH_H 20 | #define TAOPITCH_H 21 | 22 | #ifdef WIN32 23 | #define DLLEXPORT __declspec(dllexport) 24 | #else 25 | #define DLLEXPORT 26 | #endif 27 | 28 | class DLLEXPORT TaoPitch 29 | { 30 | public: 31 | TaoPitch(); 32 | ~TaoPitch(); 33 | TaoPitch(const char *name); 34 | TaoPitch(float pitch); 35 | enum TaoPitchFormat {oct, frq, pch}; 36 | TaoPitch(float value, TaoPitchFormat format); 37 | TaoPitch(const TaoPitch&); 38 | TaoPitch &operator=(const TaoPitch&); 39 | float asPitch() const; 40 | const char *asName() const; 41 | float asOctave() const; 42 | float asFrequency() const; 43 | 44 | private: 45 | void createName(); 46 | char *name; 47 | double pitchVersion; 48 | double octaveVersion; 49 | double frequencyVersion; 50 | }; 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /include/TaoRectangle.h: -------------------------------------------------------------------------------- 1 | /* Tao - A software package for sound synthesis with physical models 2 | * Copyright (C) 1993-1999 Mark Pearson 3 | * 4 | * This program is free software; you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation; either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program; if not, write to the Free Software 16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 | */ 18 | 19 | #ifndef RECTANGLE_H 20 | #define RECTANGLE_H 21 | 22 | #include "TaoInstrument.h" 23 | #include "TaoCell.h" 24 | 25 | #ifdef WIN32 26 | #define DLLEXPORT __declspec(dllexport) 27 | #else 28 | #define DLLEXPORT 29 | #endif 30 | 31 | class DLLEXPORT TaoRectangle : public TaoInstrument 32 | { 33 | public: 34 | TaoRectangle(const TaoPitch &xpitch, const TaoPitch &ypitch, float decay); 35 | TaoRectangle(const char *name, const TaoPitch &xpitch, 36 | const TaoPitch &ypitch, float decay); 37 | inline TaoCell &at(float x, float y) { 38 | return rows[(int)(ymax*y)].cells[(int)(xmax*x)]; 39 | } 40 | 41 | void createTheMaterial(); 42 | }; 43 | 44 | #endif 45 | -------------------------------------------------------------------------------- /include/TaoStop.h: -------------------------------------------------------------------------------- 1 | /* Tao - A software package for sound synthesis with physical models 2 | * Copyright (C) 1993-1999 Mark Pearson 3 | * 4 | * This program is free software; you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation; either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program; if not, write to the Free Software 16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 | */ 18 | 19 | #ifndef STOP_H 20 | #define STOP_H 21 | 22 | #include "TaoDevice.h" 23 | #include "TaoPitch.h" 24 | #include "TaoString.h" 25 | #include "TaoAccessPoint.h" 26 | 27 | #ifdef WIN32 28 | #define DLLEXPORT __declspec(dllexport) 29 | #else 30 | #define DLLEXPORT 31 | #endif 32 | 33 | class DLLEXPORT TaoStop : public TaoDevice 34 | { 35 | public: 36 | TaoStop(const char *stopName); 37 | ~TaoStop(); 38 | TaoStop &dampModeOn(); 39 | TaoStop &dampModeOff(); 40 | TaoStop &setAmount(float amount); 41 | TaoStop &setDamping(float damping); 42 | void operator()(TaoAccessPoint &a); 43 | void operator()(TaoInstrument &instr, float x); 44 | void operator()(TaoInstrument &instr, float x, float y); 45 | void operator()(TaoString &string, TaoPitch &stoppedPitch); 46 | void update(); 47 | void display(); 48 | private: 49 | float maxDampingCoefficient; 50 | float currentDampingCoefficient; 51 | int dampMode; 52 | float amount; 53 | }; 54 | 55 | #endif 56 | -------------------------------------------------------------------------------- /include/TaoString.h: -------------------------------------------------------------------------------- 1 | /* Tao - A software package for sound synthesis with physical models 2 | * Copyright (C) 1993-1999 Mark Pearson 3 | * 4 | * This program is free software; you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation; either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program; if not, write to the Free Software 16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 | */ 18 | 19 | #ifndef STRING_H 20 | #define STRING_H 21 | 22 | #include "TaoCell.h" 23 | #include "TaoInstrument.h" 24 | 25 | #ifdef WIN32 26 | #define DLLEXPORT __declspec(dllexport) 27 | #else 28 | #define DLLEXPORT 29 | #endif 30 | 31 | class DLLEXPORT TaoString : public TaoInstrument 32 | { 33 | public: 34 | TaoString(const TaoPitch &pitch, float decay); 35 | TaoString(const char *name, const TaoPitch &pitch, float decay); 36 | void createTheMaterial(); 37 | }; 38 | 39 | #endif 40 | -------------------------------------------------------------------------------- /include/TaoSynthEngine.h: -------------------------------------------------------------------------------- 1 | /* Tao - A software package for sound synthesis with physical models 2 | * Copyright (C) 1993-1999 Mark Pearson 3 | * 4 | * This program is free software; you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation; either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program; if not, write to the Free Software 16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 | */ 18 | 19 | #ifndef TAOSYNTHENGINE_H 20 | #define TAOSYNTHENGINE_H 21 | 22 | //#include 23 | //#include 24 | //#include 25 | //#include 26 | 27 | #ifdef WIN32 28 | #define DLLEXPORT __declspec(dllexport) 29 | #else 30 | #define DLLEXPORT 31 | #endif 32 | 33 | class TaoInstrument; 34 | class TaoDevice; 35 | 36 | class DLLEXPORT TaoSynthEngine 37 | { 38 | friend class TaoGraphicsEngine; 39 | friend class Tao; 40 | 41 | public: 42 | TaoInstrument *instrumentList, *currentInstrument; 43 | TaoDevice *deviceList, *currentDevice; 44 | 45 | float time; 46 | long tick; 47 | long numSamples; 48 | float scoreDuration; 49 | int audioSampleRate; 50 | const int throwAway; 51 | int modelSampleRate; 52 | float Decay2VelocityMultiplierConst; 53 | float Hz2CellConst; 54 | 55 | TaoSynthEngine(); 56 | void pause(); 57 | void unpause(); 58 | int isActive(); 59 | int done(); 60 | void Tick(); 61 | unsigned int getTime(); 62 | void seedRandomNumGen(); 63 | void setAudioRate(int audioRate); 64 | void makeTheInstruments(); 65 | void addInstrument(TaoInstrument &instr); 66 | void removeInstrument(TaoInstrument &instr); 67 | void addInstrument(TaoInstrument *instr); 68 | void removeInstrument(TaoInstrument *instr); 69 | void addDevice(TaoDevice &device); 70 | void removeDevice(TaoDevice &device); 71 | void addDevice(TaoDevice *device); 72 | void removeDevice(TaoDevice *device); 73 | void calculateInstrumentForces(); 74 | void calculateInstrumentPositions(); 75 | void updateDevices(); 76 | 77 | private: 78 | int active; 79 | }; 80 | 81 | extern int randomi(int low, int high); 82 | extern float randomf(float low, float high); 83 | 84 | #endif 85 | -------------------------------------------------------------------------------- /include/TaoTriangle.h: -------------------------------------------------------------------------------- 1 | /* Tao - A software package for sound synthesis with physical models 2 | * Copyright (C) 1993-1999 Mark Pearson 3 | * 4 | * This program is free software; you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation; either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program; if not, write to the Free Software 16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 | */ 18 | 19 | #ifndef TRIANGLE_H 20 | #define TRIANGLE_H 21 | 22 | #include "TaoCell.h" 23 | #include "TaoInstrument.h" 24 | 25 | #ifdef WIN32 26 | #define DLLEXPORT __declspec(dllexport) 27 | #else 28 | #define DLLEXPORT 29 | #endif 30 | 31 | class DLLEXPORT TaoTriangle : public TaoInstrument 32 | { 33 | public: 34 | TaoTriangle(const TaoPitch &xpitch, const TaoPitch &ypitch, float decay); 35 | TaoTriangle(const char *name, const TaoPitch &xpitch, 36 | const TaoPitch &ypitch, float decay); 37 | void createTheMaterial(); 38 | }; 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /libtao/.deps/TaoCell.Plo: -------------------------------------------------------------------------------- 1 | TaoCell.lo: TaoCell.cc ../include/TaoCell.h \ 2 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cmath \ 3 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__config \ 4 | /usr/include/math.h /usr/include/sys/cdefs.h \ 5 | /usr/include/sys/_symbol_aliasing.h \ 6 | /usr/include/sys/_posix_availability.h /usr/include/Availability.h \ 7 | /usr/include/AvailabilityInternal.h \ 8 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits \ 9 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstddef \ 10 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/include/stddef.h 11 | 12 | ../include/TaoCell.h: 13 | 14 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cmath: 15 | 16 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__config: 17 | 18 | /usr/include/math.h: 19 | 20 | /usr/include/sys/cdefs.h: 21 | 22 | /usr/include/sys/_symbol_aliasing.h: 23 | 24 | /usr/include/sys/_posix_availability.h: 25 | 26 | /usr/include/Availability.h: 27 | 28 | /usr/include/AvailabilityInternal.h: 29 | 30 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/type_traits: 31 | 32 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstddef: 33 | 34 | /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/include/stddef.h: 35 | -------------------------------------------------------------------------------- /libtao/Makefile.am: -------------------------------------------------------------------------------- 1 | ## Process this file with automake to produce Makefile,in 2 | 3 | INCLUDES = -I@top_srcdir@/include 4 | 5 | lib_LTLIBRARIES = libtao.la 6 | 7 | libtao_la_SOURCES = \ 8 | Tao.cc \ 9 | TaoGraphicsEngine.cc \ 10 | TaoSynthEngine.cc \ 11 | TaoAccessPoint.cc \ 12 | TaoInstrument.cc \ 13 | TaoString.cc \ 14 | TaoRectangle.cc \ 15 | TaoCircle.cc \ 16 | TaoTriangle.cc \ 17 | TaoEllipse.cc \ 18 | TaoDevice.cc \ 19 | TaoBow.cc \ 20 | TaoHammer.cc \ 21 | TaoConnector.cc \ 22 | TaoStop.cc \ 23 | TaoOutput.cc \ 24 | TaoPitch.cc \ 25 | TaoCell.cc 26 | -------------------------------------------------------------------------------- /libtao/TaoCell.cc: -------------------------------------------------------------------------------- 1 | /* Tao - A software package for sound synthesis with physical models 2 | * Copyright (C) 1993-1999 Mark Pearson 3 | * 4 | * This program is free software; you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation; either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program; if not, write to the Free Software 16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 | */ 18 | 19 | #include "TaoCell.h" 20 | #include 21 | 22 | #ifndef TRUE 23 | #define TRUE 1 24 | #endif 25 | 26 | #ifndef FALSE 27 | #define FALSE 0 28 | #endif 29 | 30 | void TaoCell::applyForce(float F) 31 | { 32 | force+=F; 33 | 34 | if (north) north->force+=F/2.0f; 35 | if (south) south->force+=F/2.0f; 36 | if (east) east->force+=F/2.0f; 37 | if (west) west->force+=F/2.0f; 38 | if (neast) neast->force+=F/2.82f; 39 | if (seast) seast->force+=F/2.82f; 40 | if (nwest) nwest->force+=F/2.82f; 41 | if (swest) swest->force+=F/2.82f; 42 | } 43 | 44 | void TaoCell::bow(float f_bow, float v_bow) 45 | { 46 | static float f_stick, f_slip, force_exerted=0.0; 47 | static float v_relative, a_cell; 48 | 49 | v_relative=a_cell=v_bow-velocity; // a=dv/dt but dt=1 so a=dv. 50 | 51 | if (mode & TAO_CELL_BOW_STICK_MODE) // if in `stick' mode. 52 | { 53 | f_stick=mass*a_cell-force; 54 | if (f_stick>f_bow) mode&=!TAO_CELL_BOW_STICK_MODE; // if static frictional 55 | else force_exerted=f_stick; // force required is too 56 | } // great, change to 57 | // `slip' mode. 58 | 59 | else // if in `slip' mode. 60 | { 61 | f_slip=(float)(f_bow/(1.0f+fabs(v_relative))); 62 | if (velocity>=0.0) mode|=TAO_CELL_BOW_STICK_MODE; // if the cell starts 63 | else force_exerted=f_slip; // travelling in the same 64 | } // (positive) direction 65 | // `stick' mode. 66 | applyForce(force_exerted); // apply the approriate 67 | } // frictional force. 68 | -------------------------------------------------------------------------------- /libtao/TaoCircle.cc: -------------------------------------------------------------------------------- 1 | /* Tao - A software package for sound synthesis with physical models 2 | * Copyright (C) 1993-1999 Mark Pearson 3 | * 4 | * This program is free software; you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation; either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program; if not, write to the Free Software 16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 | */ 18 | 19 | #include "TaoInstrument.h" 20 | #include "TaoCircle.h" 21 | #include 22 | 23 | TaoCircle::TaoCircle(const TaoPitch &pitch, float decay) 24 | : TaoInstrument(pitch, pitch, decay) 25 | { 26 | createTheMaterial(); 27 | } 28 | 29 | 30 | TaoCircle::TaoCircle(const char *name, const TaoPitch &pitch, float decay) 31 | : TaoInstrument(name, pitch, pitch, decay) 32 | { 33 | createTheMaterial(); 34 | } 35 | 36 | void TaoCircle::createTheMaterial() 37 | { 38 | register int j; 39 | float x, y, radius; 40 | int local_xmax, offset; 41 | 42 | int xsize, ysize=ymax+1; 43 | 44 | rows=new Row[ysize]; // create the right number of rows 45 | 46 | radius=ysize/2.0f; 47 | 48 | for (j=0;j 22 | 23 | TaoEllipse::TaoEllipse( 24 | const TaoPitch &xpitch, 25 | const TaoPitch &ypitch, 26 | float decay) : TaoInstrument(xpitch, ypitch, decay) 27 | { 28 | createTheMaterial(); 29 | } 30 | 31 | TaoEllipse::TaoEllipse( 32 | const char *name, 33 | const TaoPitch &xpitch, 34 | const TaoPitch &ypitch, 35 | float decay) : TaoInstrument(name, xpitch, ypitch, decay) 36 | { 37 | createTheMaterial(); 38 | } 39 | 40 | void TaoEllipse::createTheMaterial() 41 | { 42 | register int j; 43 | float x, y, xradius, yradius; 44 | float a, b; 45 | int local_xmax, local_xsize, offset; 46 | int xsize=xmax+1, ysize=ymax+1; 47 | 48 | rows=new Row[ysize]; 49 | 50 | xradius=xsize/2.0f;a=xradius*xradius; 51 | yradius=ysize/2.0f;b=yradius*yradius; 52 | 53 | for (j=0;jxmax) xmax=local_xmax; 60 | offset=(xsize-local_xsize)/2; 61 | rows[j].xmax=local_xmax; 62 | rows[j].offset=offset; 63 | if(xmax < local_xmax+offset) xmax=local_xmax+offset; 64 | rows[j].cells=new TaoCell[xsize]; 65 | } 66 | 67 | initialiseCells(); 68 | linkCells(); 69 | } 70 | -------------------------------------------------------------------------------- /libtao/TaoRectangle.cc: -------------------------------------------------------------------------------- 1 | /* Tao - A software package for sound synthesis with physical models 2 | * Copyright (C) 1993-1999 Mark Pearson 3 | * 4 | * This program is free software; you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation; either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program; if not, write to the Free Software 16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 | */ 18 | 19 | #include "TaoInstrument.h" 20 | #include "TaoRectangle.h" 21 | 22 | TaoRectangle::TaoRectangle( 23 | const TaoPitch &xpitch, 24 | const TaoPitch &ypitch, 25 | float decay) : TaoInstrument(xpitch, ypitch, decay) 26 | { 27 | createTheMaterial(); 28 | } 29 | 30 | TaoRectangle::TaoRectangle( 31 | const char *name, 32 | const TaoPitch &xpitch, 33 | const TaoPitch &ypitch, 34 | float decay) : TaoInstrument(name, xpitch, ypitch, decay) 35 | { 36 | createTheMaterial(); 37 | } 38 | 39 | void TaoRectangle::createTheMaterial() 40 | { 41 | register int j; 42 | 43 | int xsize=xmax+1, ysize=ymax+1; 44 | 45 | rows=new Row[ysize]; 46 | 47 | for (j=0;j 22 | 23 | TaoString::TaoString(const TaoPitch &pitch, float decay) 24 | : TaoInstrument(pitch, TaoPitch(0.0), decay) 25 | { 26 | createTheMaterial(); 27 | } 28 | 29 | TaoString::TaoString(const char *name, const TaoPitch &pitch, float decay) 30 | : TaoInstrument(name, pitch, TaoPitch(0.0), decay) 31 | { 32 | createTheMaterial(); 33 | } 34 | 35 | void TaoString::createTheMaterial() 36 | { 37 | int xsize=xmax+1, ysize=ymax+1; 38 | 39 | rows=new Row[ysize]; 40 | 41 | rows[0].xmax=xsize-1; 42 | rows[0].offset=0; 43 | rows[0].cells=new TaoCell[xsize]; 44 | 45 | assert(rows[0].cells != 0); 46 | 47 | initialiseCells(); 48 | linkCells(); 49 | } 50 | -------------------------------------------------------------------------------- /libtao/TaoTriangle.cc: -------------------------------------------------------------------------------- 1 | /* Tao - A software package for sound synthesis with physical models 2 | * Copyright (C) 1993-1999 Mark Pearson 3 | * 4 | * This program is free software; you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation; either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program; if not, write to the Free Software 16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 | */ 18 | 19 | #include "TaoInstrument.h" 20 | #include "TaoTriangle.h" 21 | 22 | TaoTriangle::TaoTriangle( 23 | const TaoPitch &xpitch, 24 | const TaoPitch &ypitch, 25 | float decay) : TaoInstrument(xpitch, ypitch, decay) 26 | { 27 | createTheMaterial(); 28 | } 29 | 30 | TaoTriangle::TaoTriangle( 31 | const char *name, 32 | const TaoPitch &xpitch, 33 | const TaoPitch &ypitch, 34 | float decay) 35 | : TaoInstrument(name, xpitch, ypitch, decay) 36 | { 37 | createTheMaterial(); 38 | } 39 | 40 | void TaoTriangle::createTheMaterial() 41 | { 42 | register int j; 43 | float x; 44 | int local_xsize, local_xmax, offset; 45 | 46 | int xsize=xmax+1, ysize=ymax+1; 47 | 48 | rows=new Row[ysize]; 49 | 50 | for (j=0;j=ysize/2) x=xsize*2.0f*(ysize/2.0f-(j-ysize/2.0f))/ysize; 54 | local_xsize=(int)(x+0.5); 55 | local_xmax=local_xsize-1; 56 | offset=xsize-local_xmax; 57 | rows[j].xmax=local_xmax; 58 | rows[j].offset=offset; 59 | if(xmax < local_xmax+offset) xmax=local_xmax+offset; 60 | rows[j].cells=new TaoCell[local_xsize]; 61 | } 62 | 63 | initialiseCells(); 64 | linkCells(); 65 | } 66 | -------------------------------------------------------------------------------- /stamp-h1: -------------------------------------------------------------------------------- 1 | timestamp for config.h 2 | -------------------------------------------------------------------------------- /tao2aiff/Makefile.am: -------------------------------------------------------------------------------- 1 | AM_LDFLAGS = 2 | LIBS = 3 | bin_PROGRAMS = tao2aiff 4 | tao2aiff_SOURCES = tao2aiff.cc tao2aiff.h aupvlist.h audiofile.h 5 | tao2aiff_LDADD = -laudiofile 6 | EXTRA_DIST = README.audiofile 7 | -------------------------------------------------------------------------------- /tao2aiff/README.audiofile: -------------------------------------------------------------------------------- 1 | Local copies of the audiofile library headers audiofile.h and 2 | aupvlist.h are included here since the version of aupvlist.h 3 | which comes with Red Hat 6.0 contains a syntax error, which 4 | has been corrected for the local version. -------------------------------------------------------------------------------- /tao2aiff/aupvlist.h: -------------------------------------------------------------------------------- 1 | /* 2 | Audio File Library 3 | 4 | Copyright (C) 1998, Michael Pruett 5 | 6 | This library is free software; you can redistribute it and/or 7 | modify it under the terms of the GNU Library General Public 8 | License as published by the Free Software Foundation; either 9 | version 2 of the License, or (at your option) any later version. 10 | 11 | This library is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | Library General Public License for more details. 15 | 16 | You should have received a copy of the GNU Library General Public 17 | License along with this library; if not, write to the 18 | Free Software Foundation, Inc., 59 Temple Place - Suite 330, 19 | Boston, MA 02111-1307 USA. 20 | */ 21 | 22 | /* 23 | aupv.h 24 | 25 | This file contains the interface to the parameter value list data 26 | structures and routines. 27 | */ 28 | 29 | #ifndef AUPVLIST_H 30 | #define AUPVLIST_H 31 | 32 | #ifdef __cplusplus 33 | extern "C" 34 | { 35 | #endif 36 | 37 | 38 | enum 39 | { 40 | AU_PVTYPE_LONG = 1, 41 | AU_PVTYPE_DOUBLE = 2, 42 | AU_PVTYPE_PTR = 3 43 | }; 44 | 45 | typedef struct _AUpvlist *AUpvlist; 46 | 47 | #define AU_NULL_PVLIST ((struct _AUpvlist *) 0) 48 | 49 | AUpvlist AUpvnew (int maxItems); 50 | int AUpvgetmaxitems (AUpvlist); 51 | int AUpvfree (AUpvlist); 52 | int AUpvsetparam (AUpvlist, int item, int param); 53 | int AUpvsetvaltype (AUpvlist, int item, int type); 54 | int AUpvsetval (AUpvlist, int item, void *val); 55 | int AUpvgetparam (AUpvlist, int item, int *param); 56 | int AUpvgetvaltype (AUpvlist, int item, int *type); 57 | int AUpvgetval (AUpvlist, int item, void *val); 58 | 59 | #ifdef __cplusplus 60 | } 61 | #endif /* __cplusplus */ 62 | 63 | #endif /* AUPVLIST_H */ 64 | -------------------------------------------------------------------------------- /tao2aiff/tao2aiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MindBuffer/tao/2b0941882bd51598a5bd6a08f02a7927f13615dc/tao2aiff/tao2aiff -------------------------------------------------------------------------------- /tao2aiff/tao2aiff.h: -------------------------------------------------------------------------------- 1 | /* Tao - A software package for sound synthesis with physical models 2 | * Copyright (C) 1993-1999 Mark Pearson 3 | * 4 | * This program is free software; you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation; either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program; if not, write to the Free Software 16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 | */ 18 | 19 | #define MONO 1 20 | #define STEREO 2 21 | 22 | #define FLOAT sizeof(float) 23 | #define LONG sizeof(long) 24 | #define SHORT sizeof(short) 25 | #define CHAR sizeof(char) 26 | #define INT sizeof(int) 27 | -------------------------------------------------------------------------------- /tao2wav/Makefile.am: -------------------------------------------------------------------------------- 1 | AM_LDFLAGS = 2 | LIBS = 3 | bin_PROGRAMS = tao2wav 4 | tao2wav_SOURCES = tao2wav.cc tao2wav.h aupvlist.h audiofile.h 5 | tao2wav_LDADD = -laudiofile 6 | EXTRA_DIST = README.audiofile 7 | -------------------------------------------------------------------------------- /tao2wav/README.audiofile: -------------------------------------------------------------------------------- 1 | Local copies of the audiofile library headers audiofile.h and 2 | aupvlist.h are included here since the version of aupvlist.h 3 | which comes with Red Hat 6.0 contains a syntax error, which 4 | has been corrected for the local version. -------------------------------------------------------------------------------- /tao2wav/aupvlist.h: -------------------------------------------------------------------------------- 1 | /* 2 | Audio File Library 3 | 4 | Copyright (C) 1998, Michael Pruett 5 | 6 | This library is free software; you can redistribute it and/or 7 | modify it under the terms of the GNU Library General Public 8 | License as published by the Free Software Foundation; either 9 | version 2 of the License, or (at your option) any later version. 10 | 11 | This library is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | Library General Public License for more details. 15 | 16 | You should have received a copy of the GNU Library General Public 17 | License along with this library; if not, write to the 18 | Free Software Foundation, Inc., 59 Temple Place - Suite 330, 19 | Boston, MA 02111-1307 USA. 20 | */ 21 | 22 | /* 23 | aupv.h 24 | 25 | This file contains the interface to the parameter value list data 26 | structures and routines. 27 | */ 28 | 29 | #ifndef AUPVLIST_H 30 | #define AUPVLIST_H 31 | 32 | #ifdef __cplusplus 33 | extern "C" 34 | { 35 | #endif 36 | 37 | 38 | enum 39 | { 40 | AU_PVTYPE_LONG = 1, 41 | AU_PVTYPE_DOUBLE = 2, 42 | AU_PVTYPE_PTR = 3 43 | }; 44 | 45 | typedef struct _AUpvlist *AUpvlist; 46 | 47 | #define AU_NULL_PVLIST ((struct _AUpvlist *) 0) 48 | 49 | AUpvlist AUpvnew (int maxItems); 50 | int AUpvgetmaxitems (AUpvlist); 51 | int AUpvfree (AUpvlist); 52 | int AUpvsetparam (AUpvlist, int item, int param); 53 | int AUpvsetvaltype (AUpvlist, int item, int type); 54 | int AUpvsetval (AUpvlist, int item, void *val); 55 | int AUpvgetparam (AUpvlist, int item, int *param); 56 | int AUpvgetvaltype (AUpvlist, int item, int *type); 57 | int AUpvgetval (AUpvlist, int item, void *val); 58 | 59 | #ifdef __cplusplus 60 | } 61 | #endif /* __cplusplus */ 62 | 63 | #endif /* AUPVLIST_H */ 64 | -------------------------------------------------------------------------------- /tao2wav/tao2wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MindBuffer/tao/2b0941882bd51598a5bd6a08f02a7927f13615dc/tao2wav/tao2wav -------------------------------------------------------------------------------- /tao2wav/tao2wav.h: -------------------------------------------------------------------------------- 1 | /* Tao - A software package for sound synthesis with physical models 2 | * Copyright (C) 1993-1999 Mark Pearson 3 | * 4 | * This program is free software; you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation; either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program; if not, write to the Free Software 16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 | */ 18 | 19 | #define MONO 1 20 | #define STEREO 2 21 | 22 | #define FLOAT sizeof(float) 23 | #define LONG sizeof(long) 24 | #define SHORT sizeof(short) 25 | #define CHAR sizeof(char) 26 | #define INT sizeof(int) 27 | -------------------------------------------------------------------------------- /taoparse/Makefile.am: -------------------------------------------------------------------------------- 1 | # g++ 3.3 crashes through excessive memory usage when compiling bison output. 2 | # Tweek the inline function size limit below as you see fit. 3 | # Nick Bailey, Niall Moody. http://cmt.gla.ac.uk 4 | 5 | AM_CXXFLAGS = -g -finline-limit=100 6 | AM_YFLAGS = -d -y 7 | AM_LDFLAGS = 8 | LIBS = 9 | 10 | bin_PROGRAMS = taoparse 11 | 12 | taoparse_SOURCES = taoparser.yy taoscanner.ll taoparserdefs.h 13 | 14 | CLEANFILES = \ 15 | taoscanner.cc \ 16 | taoparser.cc \ 17 | taoparser.h \ 18 | y.tab.c \ 19 | y.tab.h \ 20 | *~ 21 | 22 | taoscanner.ll: 23 | taoparser.cc taoparser.yy taoparser.h 24 | 25 | dist-hook: 26 | $(RM) -f $(distdir)/*.cc 27 | 28 | -------------------------------------------------------------------------------- /taoparse/taoparse: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MindBuffer/tao/2b0941882bd51598a5bd6a08f02a7927f13615dc/taoparse/taoparse -------------------------------------------------------------------------------- /taoparse/taoparserdefs.h: -------------------------------------------------------------------------------- 1 | /* Tao - A software package for sound synthesis with physical models 2 | * Copyright (C) 1993-1999 Mark Pearson 3 | * 4 | * This program is free software; you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation; either version 2 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program; if not, write to the Free Software 16 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 | */ 18 | 19 | class node 20 | { 21 | public: 22 | char *s; 23 | int i; 24 | float f; 25 | int t; 26 | }; 27 | 28 | #define YYSTYPE node 29 | 30 | #define INT 0x01 31 | #define FLT 0x02 32 | #define NUM 0x03 33 | #define STR 0x04 34 | #define ACC 0x08 35 | #define PCH 0x10 36 | #define INS 0x20 37 | #define DEV 0x40 38 | 39 | -------------------------------------------------------------------------------- /user-scripts/Makefile.am: -------------------------------------------------------------------------------- 1 | bin_SCRIPTS = tao tao-config taosf 2 | 3 | EXTRA_DIST = error.parse taosf 4 | 5 | CLEANFILES = tao tao-config 6 | -------------------------------------------------------------------------------- /user-scripts/error.parse: -------------------------------------------------------------------------------- 1 | s/^[^:]*:\([0-9]*\): warning: implicit declaration of function `int \([A-Za-z_0-9]*\)(\.\.\.)'/ERRORline \1: function `\2(...)' unrecognised/g 2 | s/^[^:]*:\([0-9]*\): `\([A-Za-z_0-9]*\)' undeclared (first use this function)/ERRORline \1: parameter `\2' undeclared/g 3 | s/^[^:]*:\([0-9]*\): `\([A-Za-z_0-9]*\)' cannot be used as a function/ERRORline \1: parameter `\2' cannot be used as a function/g 4 | s/^[^:]*:\([0-9]*\): `\([A-Za-z_0-9]*\)' was not declared in this scope/ERRORline \1: parameter `\2' undeclared/g 5 | s/^[^:]*: In function `void taoScore()':/ERRORErrors found in Score section:/g 6 | s/^[^:]*: In function `void taoInit()':/ERRORErrors found in Init section:/g 7 | /ERROR/!d 8 | s/ERROR//g -------------------------------------------------------------------------------- /user-scripts/tao-config: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | # user-scripts/tao-config. Generated from tao-config.in by configure. 3 | # 4 | # Tao - A software package for sound synthesis with physical models 5 | # Copyright (C) 1993-1999 Mark Pearson 6 | # 7 | # This program is free software; you can redistribute it and/or modify 8 | # it under the terms of the GNU General Public License as published by 9 | # the Free Software Foundation; either version 2 of the License, or 10 | # (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program; if not, write to the Free Software 19 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 | 21 | tao_version="1.0-beta-04Mar2015" 22 | tao_cflags="-I/Users/Mitch/Downloads/tao-1.0-beta-10May2006/include -DHAVE_OSX" 23 | tao_libs="-ltao -framework OpenGL -lpthread -framework GLUT -lm -lobjc" 24 | tao_distdir="/Users/Mitch/Downloads/tao-1.0-beta-10May2006" 25 | prefix=/usr/local 26 | exec_prefix=${prefix} 27 | exec_prefix_set=no 28 | 29 | usage() 30 | { 31 | cat <&2 45 | fi 46 | 47 | while test $# -gt 0; do 48 | case "$1" in 49 | -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; 50 | *) optarg= ;; 51 | esac 52 | 53 | case $1 in 54 | --prefix=*) 55 | prefix=$optarg 56 | if test $exec_prefix_set = no ; then 57 | exec_prefix=$optarg 58 | fi 59 | ;; 60 | --prefix) 61 | echo_prefix=yes 62 | ;; 63 | --exec-prefix=*) 64 | exec_prefix=$optarg 65 | exec_prefix_set=yes 66 | ;; 67 | --exec-prefix) 68 | echo_exec_prefix=yes 69 | ;; 70 | --version) 71 | echo $tao_version 72 | ;; 73 | --cflags) 74 | echo $tao_cflags 75 | ;; 76 | --libs) 77 | echo $tao_libs 78 | ;; 79 | --distdir) 80 | echo $tao_distdir 81 | ;; 82 | *) 83 | usage 1 1>&2 84 | ;; 85 | esac 86 | shift 87 | done 88 | 89 | if test "$echo_prefix" = "yes"; then 90 | echo $prefix 91 | fi 92 | 93 | if test "$echo_exec_prefix" = "yes"; then 94 | echo $exec_prefix 95 | fi 96 | 97 | if test "$echo_cflags" = "yes"; then 98 | echo $tao_cflags 99 | fi 100 | 101 | if test "$echo_libs" = "yes"; then 102 | echo "$tao_libs" 103 | fi 104 | 105 | 106 | -------------------------------------------------------------------------------- /user-scripts/tao-config.in: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | # @configure_input@ 3 | # 4 | # Tao - A software package for sound synthesis with physical models 5 | # Copyright (C) 1993-1999 Mark Pearson 6 | # 7 | # This program is free software; you can redistribute it and/or modify 8 | # it under the terms of the GNU General Public License as published by 9 | # the Free Software Foundation; either version 2 of the License, or 10 | # (at your option) any later version. 11 | # 12 | # This program is distributed in the hope that it will be useful, 13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | # GNU General Public License for more details. 16 | # 17 | # You should have received a copy of the GNU General Public License 18 | # along with this program; if not, write to the Free Software 19 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 | 21 | tao_version="@TAO_VERSION@" 22 | tao_cflags="@CPPFLAGS@" 23 | tao_libs="-ltao @LDFLAGS@" 24 | tao_distdir="@TAODIR@" 25 | prefix=@prefix@ 26 | exec_prefix=@exec_prefix@ 27 | exec_prefix_set=no 28 | 29 | usage() 30 | { 31 | cat <&2 45 | fi 46 | 47 | while test $# -gt 0; do 48 | case "$1" in 49 | -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; 50 | *) optarg= ;; 51 | esac 52 | 53 | case $1 in 54 | --prefix=*) 55 | prefix=$optarg 56 | if test $exec_prefix_set = no ; then 57 | exec_prefix=$optarg 58 | fi 59 | ;; 60 | --prefix) 61 | echo_prefix=yes 62 | ;; 63 | --exec-prefix=*) 64 | exec_prefix=$optarg 65 | exec_prefix_set=yes 66 | ;; 67 | --exec-prefix) 68 | echo_exec_prefix=yes 69 | ;; 70 | --version) 71 | echo $tao_version 72 | ;; 73 | --cflags) 74 | echo $tao_cflags 75 | ;; 76 | --libs) 77 | echo $tao_libs 78 | ;; 79 | --distdir) 80 | echo $tao_distdir 81 | ;; 82 | *) 83 | usage 1 1>&2 84 | ;; 85 | esac 86 | shift 87 | done 88 | 89 | if test "$echo_prefix" = "yes"; then 90 | echo $prefix 91 | fi 92 | 93 | if test "$echo_exec_prefix" = "yes"; then 94 | echo $exec_prefix 95 | fi 96 | 97 | if test "$echo_cflags" = "yes"; then 98 | echo $tao_cflags 99 | fi 100 | 101 | if test "$echo_libs" = "yes"; then 102 | echo "$tao_libs" 103 | fi 104 | 105 | 106 | -------------------------------------------------------------------------------- /user-scripts/taosf: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | # 3 | # Tao - A software package for sound synthesis with physical models 4 | # Copyright (C) 1993-1999 Mark Pearson 5 | # 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 2 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program; if not, write to the Free Software 18 | # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 19 | # 20 | # 21 | # taosf - normalise the sample data in a Tao output file (.dat) to 22 | # fit the maximum sample range and add a WAVE (M$ RIFF) header. 23 | # Call the new file .wav. 24 | 25 | # Re-written by Niall Moody, 9/3/06. 26 | 27 | TAOSF="tao2wav" 28 | TAOEXT=".wav" 29 | DATFILE="" 30 | 31 | # Check if we should display the help. 32 | if [ ${1} = "-h" ]; then 33 | echo "Usage: taosf [-a|-h] " 34 | echo 35 | echo " -a Output to .aiff. Otherwise output to .wav." 36 | echo " -h Display this help." 37 | echo 38 | echo "e.g. \"taosf -a outputs_out1\"" 39 | echo " generates a file outputs_out1.aiff from the outputs_out1.dat file." 40 | echo 41 | exit 42 | # Check if we should output an aiff. Stick with .wav otherwise. 43 | elif [ ${1} = "-a" ]; then 44 | TAOSF="tao2aiff" 45 | TAOEXT=".aiff" 46 | DATFILE=${2} 47 | else 48 | DATFILE=${1} 49 | fi 50 | 51 | # Generate audio. 52 | if [ -f ${DATFILE}.dat ]; then 53 | ${TAOSF} ${DATFILE}.dat ${DATFILE}${TAOEXT} 54 | else 55 | echo "taosf: failed, couldn't find Tao output file ${1}.dat" 56 | fi 57 | 58 | 59 | 60 | # if !test -f tao2wav; 61 | # then 62 | # echo 'taosf: failed, couldn't find the tao2wav program'; 63 | # elif !test -f $1.dat; 64 | # then 65 | # echo 'taosf: failed, couldn't find Tao output file ' $1.dat 66 | # else 67 | # tao2wav $1.dat $1.wav 68 | # fi 69 | --------------------------------------------------------------------------------