diff --git a/Hierarchy.txt b/Hierarchy.txt index 3d00c19..532de88 100644 --- a/Hierarchy.txt +++ b/Hierarchy.txt @@ -1,10 +1,10 @@ STK: A ToolKit of Audio Synthesis Classes and Instruments in C++ -Version 3.0 +Version 3.1 -By Perry R. Cook, 1995-99 -and Gary P. Scavone, 1997-99. +By Perry R. Cook, 1995-2000 +and Gary P. Scavone, 1997-2000. -STK Classes, Version 3.0 +STK Classes, Version 3.1 Please read README.txt for more information. <--------Building Blocks---------->|<----------------Instruments------------------> diff --git a/README-Linux.txt b/README-Linux.txt index 2ed7c15..1551f91 100644 --- a/README-Linux.txt +++ b/README-Linux.txt @@ -1,12 +1,12 @@ STK: A ToolKit of Audio Synthesis Classes and Instruments in C++ -Version 3.0 +Version 3.1 -By Perry R. Cook, 1995-99 -and Gary P. Scavone, 1997-99. +By Perry R. Cook, 1995-2000 +and Gary P. Scavone, 1997-2000. Please read the file README.txt for more general STK information. -STK for Linux is currently using the OSS sound and MIDI API. The free version of OSS will probably work, though it doesn't work with as many soundcards as the commercial version (which costs about $20). +STK for Linux is currently using the OSS sound and MIDI API. The free version of OSS will probably work, though it doesn't work with as many soundcards as the commercial version (which costs about $20). The Advanced Linux Sound Architecture (ALSA) drivers seem to perform well, though I've done only minimal testing with them. You'll need to install the OSS compatability library. You can read more about ALSA at http://www.alsa-project.org/. ALSA is open source and holds great promise for audio under Linux. STK should compile without much trouble under Linux. Since all Linux distributions typically include the GNU makefile utilities, you should be able to use the default Makefile. Typing "make" will initiate the compilation process. diff --git a/README-SGI.txt b/README-SGI.txt index 72bd887..c0cde62 100644 --- a/README-SGI.txt +++ b/README-SGI.txt @@ -1,11 +1,15 @@ STK: A ToolKit of Audio Synthesis Classes and Instruments in C++ -Version 3.0 +Version 3.1 -By Perry R. Cook, 1995-99 -and Gary P. Scavone, 1997-99. +By Perry R. Cook, 1995-2000 +and Gary P. Scavone, 1997-2000. Please read the file README.txt for more general STK information. It seems that SGI systems are not distributed with the GNU Makefile utilities. The default Make utility has very limited functionality, so your safest bet is to download the GNU Makefile utilities from the Internet and use STK's default Makefile. If this is not possible, try using Makefile.sgi (make -f Makefile.sgi). -Aside from the Makefile issues, STK should compile and run on SGI platforms without any problems. \ No newline at end of file +Aside from the Makefile issues, STK should compile and run on SGI platforms without any problems. + +NOTE REGARDING PTHREADS: + +With release 3.1, STK is now using the pthread API under Irix. It appears that pthread functionality is standard on SGI, so this change shouldn't cause any problems. If I'm wrong, let me know! diff --git a/README-Win.txt b/README-Win.txt index f8cca0d..81323a9 100644 --- a/README-Win.txt +++ b/README-Win.txt @@ -1,15 +1,15 @@ STK: A ToolKit of Audio Synthesis Classes and Instruments in C++ -Version 3.0 +Version 3.1 -By Perry R. Cook, 1995-99 -and Gary P. Scavone, 1997-99. +By Perry R. Cook, 1995-2000 +and Gary P. Scavone, 1997-2000. Please read the file README.txt for more general STK information. DirectX and WindowsNT Issues: ----------------------------- -The newly offered STK realtime sound input capabilities under Windoze are only supported using the DirectSoundCapture API. The latency is pretty horrendous, but what do you expect? Also, there is a good chance you don't have DirectSoundCapture support on your computer. You should download the DirectX 6.0 (or higher) runtime libraries from Microsoft's WWW site (http://www.microsoft.com/directx/download.asp) in order to run the pre-compiled STK executables for Windoze. HOWEVER, there is no DirectSoundCapture support for WindowsNT at this time ... you'll have to wait for Windows 2000. If you wish to compile STK under WindowsNT (without realtime audio input support), you'll have to uncomment the __WINMM_API_ flag (and comment out the __WINDS_API flag) in Object.h and recompile the source code. +The newly offered STK realtime sound input capabilities under Windoze are only supported using the DirectSoundCapture API. The latency is pretty horrendous, but what do you expect? Also, there is a good chance you don't have DirectSoundCapture support on your computer. You should download the DirectX 6.0 (or higher) runtime libraries from Microsoft's WWW site (http://www.microsoft.com/directx/download.asp) in order to run the pre-compiled STK executables for Windoze. There is no DirectSoundCapture support for WindowsNT ... you'll have to switch to Windows 2000. If you wish to compile STK under WindowsNT (without realtime audio input support), you'll have to uncomment the __WINMM_API_ flag (and comment out the __WINDS_API flag) in Object.h and recompile the source code. Realtime sound output under Windoze is supported using either the DirectSound (dsound.lib) API or the old WinMM (winmm.lib) API. The DirectSound version appears to well out-perform the older API. All new versions of Win95/98/NT come with the DirectSound library, but early versions did not. If you have trouble running the distributed executables (compiled for DirectSound API), then you probably don't have DirectSound installed on your system. You can download the necessary DirectSound stuff from Microsoft's WWW pages (http://www.microsoft.com/directx/download.asp). If all else fails, you should be able to compile using the winmm.lib routines ... more latency, but at least it will work. @@ -63,4 +63,9 @@ USE REALTIME MIDI INPUT FOR CONTROL: WINDOWS NT ONLY: -Realtime piping seems to work under WindowsNT in much the same way as on Unix platforms. Thus, it is possible to pipe realtime control data to syntmono under WindowsNT as well. \ No newline at end of file +Realtime piping seems to work under WindowsNT in much the same way as on Unix platforms. Thus, it is possible to pipe realtime control data to syntmono under WindowsNT as well. + + +WINDOWS 2000: + +I don't have Windows 2000 and I don't expect to get it anytime soon. Things should work under 2000 at least as well as they do using NT. Since 2000 is supposed to ship with DirectX 7.0, the DirectSoundCapture functionality should work as well. \ No newline at end of file diff --git a/README.txt b/README.txt index bfdb2c4..bfd45e0 100644 --- a/README.txt +++ b/README.txt @@ -1,8 +1,8 @@ STK: A ToolKit of Audio Synthesis Classes and Instruments in C++ -Version 3.0 +Version 3.1 -By Perry R. Cook, 1995-99 -and Gary P. Scavone, 1997-99. +By Perry R. Cook, 1995-2000 +and Gary P. Scavone, 1997-2000. Please read the Legal and Ethical notes near the bottom of this document. @@ -23,14 +23,14 @@ WHAT'S NEW: STK has undergone several key revisions, changes, and additions since its last release in 1998. Despite being available in one form or another since 1996, we still consider STK to be alpha software. Thus, backward compatability has not been a priority. Please read the ReleaseNotes to see what has changed since the last release. -Realtime audio input capabilities have now been added to STK, though the behavior of such is very hardware dependent. Under Linux and Irix, audio input and output are possible with very low latency. Using the Windoze DirectSound API, minimum dependable output sound latency seems to be around 15 milliseconds, while input sound latency is on the order of several hundred milliseconds! It is also possible to generate simultaneous .snd, .wav, .raw, and .mat (Matlab MAT-file) output file types, as well as SKINI scorefiles using MD2SKINI. Finally, STK should compile with non-realtime functionality on any platform with a generic C++ compiler. +Realtime audio input capabilities were added to STK with release 3.0, though the behavior of such is very hardware dependent. Under Linux and Irix, audio input and output are possible with very low latency. Using the Windoze DirectSound API, minimum dependable output sound latency seems to be around 15 milliseconds, while input sound latency is on the order of several hundred milliseconds! It is also possible to generate simultaneous .snd, .wav, .raw, and .mat (Matlab MAT-file) output file types, as well as SKINI scorefiles using MD2SKINI. Finally, STK should compile with non-realtime functionality on any platform with a generic C++ compiler. -Socketing capabilities have been extended in this release to function under Unix platforms, as well as Windoze platforms. Further, the socket server thread has been updated to accept multiple simultaneous socket connections. Thus, it is now possible to have several different socket clients sending SKINI control messages to the server at the same time. Under Linux and Irix, it is also possible to pipe GUI messages through MD2SKINI, enabling both MIDI and GUI control via piping at the same time. +Socketing capabilities were extended in release 3.0 to function under Unix platforms, as well as Windoze platforms. Further, the socket server thread was updated to accept multiple simultaneous socket connections. Thus, it is now possible to have several different socket clients sending SKINI control messages to the server at the same time. Under Linux and Irix, it is also possible to pipe GUI messages through MD2SKINI, enabling both MIDI and GUI control via piping at the same time. GETTING STARTED: -A number of example executables are provided with this distribution. The effects directory contains a program that demonstrates realtime duplex mode (simultaneous audio input and output) operation, as well as several simple delay-line based effects algorithms. The MUS151 directory contains a simple two-oscillator program that can be used to demonstrate psychoacoustic masking effects. The syntmono directory offers a program for monophonic STK instrument playback and manipulation. Syntmono is the primary STK synthesis server and is used to demonstrate all the current STK instruments. MD2SKINI is an executable (currently compiles from the syntmono project) which takes raw MIDI input, converts it to SKINI format, and outputs the result to stdout or any socket host and port ID. Control data (in the form of SKINI messages) can be fed to syntmono through three principal means - SKINI scorefiles, MD2SKINI output, and Tcl/Tk GUIs. A variety of SKINI scorefiles are distributed with STK and can be found in the "scores" directory of the syntmono project. +A number of example executables are provided with this distribution. The effects directory contains a program that demonstrates realtime duplex mode (simultaneous audio input and output) operation, as well as several simple delay-line based effects algorithms. The MUS151 directory contains a simple two-oscillator program that can be used to demonstrate psychoacoustic masking effects. RagaMatic is a totally cool application for achieving inner piece. The syntmono directory offers a program for monophonic STK instrument playback and manipulation. Syntmono is the primary STK synthesis server and is used to demonstrate all the current STK instruments. MD2SKINI is an executable (currently compiles from the syntmono project) which takes raw MIDI input, converts it to SKINI format, and outputs the result to stdout or any socket host and port ID. Control data (in the form of SKINI messages) can be fed to syntmono through three principal means - SKINI scorefiles, MD2SKINI output, and Tcl/Tk GUIs. A variety of SKINI scorefiles are distributed with STK and can be found in the "scores" directory of the syntmono project. Unless you downloaded the distribution with precompiled Windoze binaries, it is necessary to first compile the sources. Under Linux or Irix, simply typing "make" in any of the particular project directories will begin the compilation process. If your Unix system does not have the GNU Makefile utilities, you will have to use one of the platform specific Makefiles (eg. make -f Makefile.sgi). To compile the projects under Windoze, you should use the VC++ project files provided with the STK distribution. diff --git a/ReleaseNotes.txt b/ReleaseNotes.txt index 57d161b..b96219b 100644 --- a/ReleaseNotes.txt +++ b/ReleaseNotes.txt @@ -1,10 +1,24 @@ STK: A ToolKit of Audio Synthesis Classes and Instruments in C++ -Release 3.0 +Release 3.1 -By Perry R. Cook, 1995-99 -and Gary P. Scavone, 1997-99 +By Perry R. Cook, 1995-2000 +and Gary P. Scavone, 1997-2000 -v3.0 +v3.1: (13 March 2000) +- new RagaMatic project!!! +- added "microphone position" to Mandolin in STKdemo +- fixed MIDI system message exclusion under Irix +- added a few bitmaps for the Shaker instruments +- made destructors virtual for Reverb.h, WvIn.h and Simple.h +- fixed bug setting delay length in DLineA when value too big +- fixed bug in WinMM realtime code (RTSoundIO) +- added tick() method to BowTabl, JetTabl, and ReedTabl (same as lookup) +- switched to pthread API on SGI platforms +- added some defines to Object.h for random number generation, FPU overflow checking, etc... +- a lot of minor changes, some bug fixes ... can't remember all of them + + +v3.0: (10 October 1999) - new #define flags for OS and realtime dependencies (this will probably cause problems for most everyone, but it was necessary to make future ports easier) - fixed Linux MIDI input bug - fixed MIDI status masking problem in Windows @@ -29,8 +43,7 @@ v3.0 - pulled various utility and thread functions out of syntmono.cpp (to aid readability of the code) -v2.02: -- 16 November 1998 +v2.02: (16 November 1998) - created RawWave abstract class, with subclasses of RawLoop (looping rawwave oscillator), RawShot (non-looping, non-interpolating rawwave player ... used to be RawWvIn), and RawInterp (looping or non-looping, interpolating rawwave player ... used to be RawWave). - modified DrumSynt to correctly handle sample rates different than 22050 Hz. - modified syntmono parsing vs. tick routine so that some ticking occurs between each message. When multiple messages are waiting to be processed, the time between message updates is inversely proportional to the number of messages in the buffer. @@ -38,13 +51,11 @@ v2.02: - fixed bug in MD2SKINI which prevented some NoteOff statements from being output. -v2.01: -- 27 July 1998 +v2.01: (27 July 1998) - Corrected extraneous ^M line return characters that were incompatible with SGI. -v2.0: -- 20 July 1998 +v2.0: (20 July 1998) - The first true release by Gary, with unified capabilities across SGI, Linux, and Win platforms. See WWW pages (http://www-ccrma.stanford.edu/CCRMA/Software/STK/) for more info. diff --git a/STK/BowTabl.cpp b/STK/BowTabl.cpp index 030a484..6082f5b 100644 --- a/STK/BowTabl.cpp +++ b/STK/BowTabl.cpp @@ -7,10 +7,11 @@ BowTabl :: BowTabl() { - offSet = (MY_FLOAT) 0.0; /* offset is a bias, really not needed unless */ - /* friction is different in each direction */ - slope = (MY_FLOAT) 0.1; /* controls width of friction pulse, */ - /* related to bowForce */ + /* offset is a bias, really not needed unless */ + /* friction is different in each direction */ + offSet = (MY_FLOAT) 0.0; + slope = (MY_FLOAT) 0.1; /* controls width of friction pulse, */ + /* related to bowForce */ } BowTabl :: ~BowTabl() @@ -19,28 +20,33 @@ BowTabl :: ~BowTabl() void BowTabl :: setOffset(MY_FLOAT aValue) { - offSet = aValue; + offSet = aValue; } void BowTabl :: setSlope(MY_FLOAT aValue) { - slope = aValue; + slope = aValue; } -MY_FLOAT BowTabl :: lookup(MY_FLOAT sample) /* Perform Table Lookup */ -{ /* sample is differential */ - /* string vs. bow velocity */ - MY_FLOAT input; - input = sample + offSet; /* add bias to sample */ - input *= slope; /* scale it */ - lastOutput = (MY_FLOAT) fabs((double) input) + (MY_FLOAT) 0.75; /* below min delta, friction = 1 */ - lastOutput = (MY_FLOAT) pow(lastOutput,(MY_FLOAT) -4.0); -// if (lastOutput < 0.0 ) lastOutput = 0.0; /* minimum friction is 0.0 */ - if (lastOutput > 1.0 ) lastOutput = (MY_FLOAT) 1.0; /* maximum friction is 1.0 */ - return lastOutput; +MY_FLOAT BowTabl :: lookup(MY_FLOAT sample) +{ + return this->tick(sample); +} + +MY_FLOAT BowTabl :: tick(MY_FLOAT sample) /* Perform Table Lookup */ +{ /* sample is differential */ + /* string vs. bow velocity */ + MY_FLOAT input; + input = sample + offSet; /* add bias to sample */ + input *= slope; /* scale it */ + lastOutput = (MY_FLOAT) fabs((double) input) + (MY_FLOAT) 0.75; /* below min delta, friction = 1 */ + lastOutput = (MY_FLOAT) pow(lastOutput,(MY_FLOAT) -4.0); + // if (lastOutput < 0.0 ) lastOutput = 0.0; /* minimum friction is 0.0 */ + if (lastOutput > 1.0 ) lastOutput = (MY_FLOAT) 1.0; /* maximum friction is 1.0 */ + return lastOutput; } MY_FLOAT BowTabl :: lastOut() { - return lastOutput; + return lastOutput; } diff --git a/STK/BowTabl.h b/STK/BowTabl.h index 7899b91..f418213 100644 --- a/STK/BowTabl.h +++ b/STK/BowTabl.h @@ -10,17 +10,18 @@ class BowTabl : public Object { - protected: - MY_FLOAT offSet; - MY_FLOAT slope; - MY_FLOAT lastOutput; - public: - BowTabl(); - ~BowTabl(); - void setOffset(MY_FLOAT aValue); - void setSlope(MY_FLOAT aValue); - MY_FLOAT lookup(MY_FLOAT sample); - MY_FLOAT lastOut(); +protected: + MY_FLOAT offSet; + MY_FLOAT slope; + MY_FLOAT lastOutput; +public: + BowTabl(); + ~BowTabl(); + void setOffset(MY_FLOAT aValue); + void setSlope(MY_FLOAT aValue); + MY_FLOAT lookup(MY_FLOAT sample); + MY_FLOAT tick(MY_FLOAT sample); + MY_FLOAT lastOut(); }; #endif diff --git a/STK/DLineA.cpp b/STK/DLineA.cpp index d6993c4..90cb8e5 100644 --- a/STK/DLineA.cpp +++ b/STK/DLineA.cpp @@ -61,7 +61,7 @@ void DLineA :: setDelay(MY_FLOAT lag) if (lag > length-1) { // if delay is too big, printf("DLineA: Delay length too big.\n"); printf("Setting to maximum length of %ld.\n",length-1); - outPointer = inPoint - 18.0; // force delay to max_length + outPointer = inPoint + 1.0; // force delay to max_length } else if (lag < 0.1) { printf("DLineA: Delays < 0.1 not possible with current structure.\n"); diff --git a/STK/Debug/.placeholder b/STK/Debug/.placeholder deleted file mode 100644 index e69de29..0000000 diff --git a/STK/FMVoices.cpp b/STK/FMVoices.cpp index 950cd69..0ffcff2 100644 --- a/STK/FMVoices.cpp +++ b/STK/FMVoices.cpp @@ -58,8 +58,8 @@ extern char phonemes[32][4]; void FMVoices :: setFreq(MY_FLOAT frequency) { - MY_FLOAT temp,temp2; - int tempi,tempi2; + MY_FLOAT temp, temp2 = 0.0; + int tempi, tempi2 = 0; if (currentVowel < 32) { tempi2 = currentVowel; diff --git a/STK/JCRev.cpp b/STK/JCRev.cpp index fd46e0c..89c2c16 100644 --- a/STK/JCRev.cpp +++ b/STK/JCRev.cpp @@ -6,7 +6,7 @@ /* */ /* This is based on some of the famous */ /* Stanford CCRMA reverbs (NRev, KipRev) */ -/* all based on the the Chowning/Moorer/ */ +/* all based on the Chowning/Moorer/ */ /* Schroeder reverberators, which use */ /* networks of simple allpass and comb */ /* delay filters. This particular */ diff --git a/STK/JCRev.h b/STK/JCRev.h index fa32a5f..78bff08 100644 --- a/STK/JCRev.h +++ b/STK/JCRev.h @@ -6,7 +6,7 @@ /* */ /* This is based on some of the famous */ /* Stanford CCRMA reverbs (NRev, KipRev) */ -/* all based on the the Chowning/Moorer/ */ +/* all based on the Chowning/Moorer/ */ /* Schroeder reverberators, which use */ /* networks of simple allpass and comb */ /* delay filters. This particular */ diff --git a/STK/JetTabl.cpp b/STK/JetTabl.cpp index 99754b3..dc906ab 100644 --- a/STK/JetTabl.cpp +++ b/STK/JetTabl.cpp @@ -11,26 +11,33 @@ JetTabl :: JetTabl() { - lastOutput = (MY_FLOAT) 0.0; + lastOutput = (MY_FLOAT) 0.0; } JetTabl :: ~JetTabl() { } -MY_FLOAT JetTabl :: lookup(MY_FLOAT sample) /* Perform "Table Lookup" */ -{ /* By Polynomial Calculation */ - lastOutput = sample * - (sample*sample - (MY_FLOAT) 1.0); /* (x^3 - x) approximates sigmoid of jet */ - if (lastOutput > 1.0) - lastOutput = (MY_FLOAT) 1.0; /* Saturation at +/- 1.0 */ - if (lastOutput < -1.0) - lastOutput = (MY_FLOAT) -1.0; - return lastOutput; +MY_FLOAT JetTabl :: lookup(MY_FLOAT sample) +{ + return this->tick(sample); +} + +MY_FLOAT JetTabl :: tick(MY_FLOAT sample) + // Perform "Table Lookup" + // By Polynomial Calculation +{ + // (x^3 - x) approximates sigmoid of jet + lastOutput = sample * (sample*sample - (MY_FLOAT) 1.0); + if (lastOutput > 1.0) + lastOutput = (MY_FLOAT) 1.0; // Saturation at +/- 1.0 + if (lastOutput < -1.0) + lastOutput = (MY_FLOAT) -1.0; + return lastOutput; } MY_FLOAT JetTabl :: lastOut() { - return lastOutput; + return lastOutput; } diff --git a/STK/JetTabl.h b/STK/JetTabl.h index 931de3a..72cfece 100644 --- a/STK/JetTabl.h +++ b/STK/JetTabl.h @@ -14,13 +14,14 @@ class JetTabl : public Object { - protected: - MY_FLOAT lastOutput; - public: - JetTabl(); - ~JetTabl(); - MY_FLOAT lookup(MY_FLOAT deltaP); - MY_FLOAT lastOut(); +protected: + MY_FLOAT lastOutput; +public: + JetTabl(); + ~JetTabl(); + MY_FLOAT lookup(MY_FLOAT deltaP); + MY_FLOAT tick(MY_FLOAT deltaP); + MY_FLOAT lastOut(); }; #endif diff --git a/STK/LipFilt.cpp b/STK/LipFilt.cpp index a3659ef..babff04 100644 --- a/STK/LipFilt.cpp +++ b/STK/LipFilt.cpp @@ -1,67 +1,65 @@ -/**********************************************/ -/* Lip Filter Object by Perry R. Cook, 1995-96*/ -/* The lip of the brass player has dynamics */ -/* which are controlled by the mass, spring */ -/* constant, and damping of the lip. This */ -/* filter simulates that behavior and the */ -/* transmission/reflection properties as */ -/* well. See Cook TBone and HosePlayer */ -/* instruments and articles. */ -/**********************************************/ +/************************************************/ +/* Lip Filter Object by Perry R. Cook, 1995-96 */ +/* The lip of the brass player has dynamics */ +/* which are controlled by the mass, spring */ +/* constant, and damping of the lip. This */ +/* filter simulates that behavior and the */ +/* transmission/reflection properties as */ +/* well. See Cook TBone and HosePlayer */ +/* instruments and articles. */ +/************************************************/ #include "LipFilt.h" LipFilt :: LipFilt() { - MY_FLOAT coeffs[2]; - filter = new BiQuad; - coeffs[0] = (MY_FLOAT) 0.0; - coeffs[1] = (MY_FLOAT) 0.0; - filter->setZeroCoeffs(coeffs); - this->clear(); + MY_FLOAT coeffs[2]; + filter = new BiQuad; + coeffs[0] = (MY_FLOAT) 0.0; + coeffs[1] = (MY_FLOAT) 0.0; + filter->setZeroCoeffs(coeffs); + this->clear(); } LipFilt :: ~LipFilt() { - delete filter; + delete filter; } void LipFilt :: clear() { - filter->clear(); - lastOutput = (MY_FLOAT) 0.0; + filter->clear(); + lastOutput = (MY_FLOAT) 0.0; } void LipFilt :: setFreq(MY_FLOAT frequency) { - MY_FLOAT coeffs[2]; - coeffs[0] = (MY_FLOAT) 2.0 * (MY_FLOAT) 0.997 * + MY_FLOAT coeffs[2]; + coeffs[0] = (MY_FLOAT) 2.0 * (MY_FLOAT) 0.997 * (MY_FLOAT) cos(TWO_PI * frequency / SRATE); /* damping should change with */ - coeffs[1] = (MY_FLOAT) (-0.997 * 0.997); /* lip parameters, but not yet.*/ - filter->setPoleCoeffs(coeffs); - filter->setGain((MY_FLOAT) 0.03); + coeffs[1] = (MY_FLOAT) (-0.997 * 0.997); /* lip parameters, but not yet.*/ + filter->setPoleCoeffs(coeffs); + filter->setGain((MY_FLOAT) 0.03); } -/* NOTE: Here we should add lip tension */ -/* settings based on Mass/Spring/Damping */ -/* Maybe in TookKit97 */ +/* NOTE: Here we should add lip tension */ +/* settings based on Mass/Spring/Damping */ MY_FLOAT LipFilt :: tick(MY_FLOAT mouthSample,MY_FLOAT boreSample) /* Perform "Table Lookup" By Polynomial Calculation */ { - MY_FLOAT temp; - temp = mouthSample - boreSample; /* Differential pressure */ - temp = filter->tick(temp); /* Force -> position */ - temp = temp*temp; /* Simple position to area mapping */ - if (temp > 1.0) temp = (MY_FLOAT) 1.0; /* Saturation at + 1.0 */ - lastOutput = temp * mouthSample; /* Assume mouth input = area */ - lastOutput += ((MY_FLOAT) 1.0 - temp) - * boreSample; /* and Bore reflection is compliment. */ - return lastOutput; + MY_FLOAT temp; + temp = mouthSample - boreSample; /* Differential pressure */ + temp = filter->tick(temp); /* Force -> position */ + temp = temp*temp; /* Simple position to area mapping */ + if (temp > 1.0) temp = (MY_FLOAT) 1.0; /* Saturation at + 1.0 */ + lastOutput = temp * mouthSample; /* Assume mouth input = area */ + lastOutput += ((MY_FLOAT) 1.0 - temp) * boreSample; /* and Bore reflection is compliment. */ + return lastOutput; } MY_FLOAT LipFilt :: lastOut() { - return lastOutput; + return lastOutput; } diff --git a/STK/LipFilt.h b/STK/LipFilt.h index 23a891e..24bb5d4 100644 --- a/STK/LipFilt.h +++ b/STK/LipFilt.h @@ -1,28 +1,28 @@ -/**********************************************/ -/* Lip Filter Object by Perry R. Cook, 1995-96*/ -/* The lip of the brass player has dynamics */ -/* which are controlled by the mass, spring */ -/* constant, and damping of the lip. This */ -/* filter simulates that behavior and the */ -/* transmission/reflection properties as */ -/* well. See Cook TBone and HosePlayer */ -/* instruments and articles. */ -/**********************************************/ +/************************************************/ +/* Lip Filter Object by Perry R. Cook, 1995-96 */ +/* The lip of the brass player has dynamics */ +/* which are controlled by the mass, spring */ +/* constant, and damping of the lip. This */ +/* filter simulates that behavior and the */ +/* transmission/reflection properties as */ +/* well. See Cook TBone and HosePlayer */ +/* instruments and articles. */ +/************************************************/ #include "Object.h" #include "BiQuad.h" class LipFilt : public Object { - protected: - BiQuad *filter; - MY_FLOAT lastOutput; - public: - LipFilt(); - ~LipFilt(); - void clear(); - void setFreq(MY_FLOAT frequency); - MY_FLOAT tick(MY_FLOAT mouthSample,MY_FLOAT boreSample); - MY_FLOAT lastOut(); +protected: + BiQuad *filter; + MY_FLOAT lastOutput; +public: + LipFilt(); + ~LipFilt(); + void clear(); + void setFreq(MY_FLOAT frequency); + MY_FLOAT tick(MY_FLOAT mouthSample,MY_FLOAT boreSample); + MY_FLOAT lastOut(); }; diff --git a/STK/MD2SKINI.cpp b/STK/MD2SKINI.cpp index a63c3c7..765bdc7 100644 --- a/STK/MD2SKINI.cpp +++ b/STK/MD2SKINI.cpp @@ -18,26 +18,14 @@ int outAHere = 0; // Do OS dependent declarations and includes -#if defined(__OS_IRIX_) - +#if (defined(__OS_IRIX_) || defined(__OS_Linux_)) #include -#include -#include #include +#include #include #include #include - -pid_t exit_thread; - -#elif defined(__OS_Linux_) - #include -#include -#include -#include -#include -#include pthread_t exit_thread; @@ -50,13 +38,9 @@ unsigned long exit_thread; #endif -// The thread function definition protocols are slightly -// different under Irix, Linux, and Windoze. -#if defined(__OS_IRIX_) - -void monitorStdin(void *) - -#elif defined(__OS_Linux_) +// The thread function protocols are slightly different +// under Windoze ... but of course! +#if (defined(__OS_IRIX_) || defined(__OS_Linux_)) void *monitorStdin(void *) @@ -80,10 +64,17 @@ void monitorStdin(void *) fflush(stdout); } } + +#if (defined(__OS_IRIX_) || defined(__OS_Linux_)) + pthread_exit(NULL); + return NULL; +#elif defined(__OS_Win_) + _endthread(); +#endif } -void errorf(void) { +void usage(void) { printf("useage: MD2SKINI \n\n"); printf(" With no arguments, MD2SKINI converts MIDI input to SKINI\n"); printf(" format and sends the output directly to stdout.\n"); @@ -95,23 +86,24 @@ void errorf(void) { exit(0); } -void main(int argc,char *argv[]) +int main(int argc,char *argv[]) { long j, i = 1; MY_FLOAT byte2, byte3; int channel; int firstMessage = 1; int writeFileOut = 0; - FILE *fileOut; + FILE *fileOut = NULL; MIDIIO *controller; char hostName[256]; char fileName[256]; int useSocket = 0; - int theSocket; + int theSocket = 0; struct sockaddr_in saServer; + static struct timeval timeout = {0, 10000}; // ten millisecond if (argc>5) { - errorf(); + usage(); } // Parse the command-line arguments. @@ -140,11 +132,11 @@ void main(int argc,char *argv[]) break; default: - errorf(); + usage(); break; } } - else errorf(); + else usage(); i++; } @@ -198,22 +190,14 @@ void main(int argc,char *argv[]) } // Setup the exit thread. -#if defined(__OS_IRIX_) - exit_thread = sproc(monitorStdin, PR_SALL); - if (exit_thread == -1) { - fprintf(stderr, "Unable to create exit thread ... aborting.\n"); - exit(0); - } -#elif defined(__OS_Linux_) - int err = 0; - err = pthread_create(&exit_thread, NULL, monitorStdin, NULL); - if (err) { +#if (defined(__OS_IRIX_) || defined(__OS_Linux_)) + if (pthread_create(&exit_thread, NULL, monitorStdin, NULL)) { fprintf(stderr, "Unable to create exit thread ... aborting.\n"); exit(0); } #elif defined(__OS_Win_) exit_thread = _beginthread(monitorStdin, 0, NULL); - if (exit_thread == -1) { + if (exit_thread == -1) { fprintf(stderr, "Unable to create exit thread ... aborting.\n"); exit(0); } @@ -380,11 +364,19 @@ void main(int argc,char *argv[]) fflush(stdout); } memset(s, 0, sizeof(s)); + } else { + // With Irix 5.3, you can no longer use the usleep() + // function. And in Windoze, you can't use the select() + // function to do timings. I love supporting multiple + // platforms! #if defined(__OS_Win_) - } else Sleep ( (DWORD) 2); + Sleep ( (DWORD) 5); #else - } else usleep( (unsigned long) 2000); + timeout.tv_sec = 0; + timeout.tv_usec = 10000; // 0.01 seconds + select(0, NULL, NULL, NULL, &timeout); #endif + } } sprintf(s,"Exiting MD2SKINI process ... bye!\n"); @@ -406,6 +398,7 @@ void main(int argc,char *argv[]) fclose(fileOut); } delete controller; + return 0; } #endif diff --git a/STK/MIDIIO.cpp b/STK/MIDIIO.cpp index 0c57f61..fb6eb58 100644 --- a/STK/MIDIIO.cpp +++ b/STK/MIDIIO.cpp @@ -33,18 +33,18 @@ int readOffset; /* SGI MIDI INPUT */ /*************************************/ +#include #include #include -#include #include MDport inport; MDevent *midiBuffer; -pid_t midi_input_pid; +pthread_t midi_input_thread; -void midiInputThread(void *) +void *midiInputThread(void *) { MDevent newMessage; int status; @@ -53,8 +53,9 @@ void midiInputThread(void *) mdReceive(inport, &newMessage, 1); status = (newMessage.msg[0] & MD_STATUSMASK); - // Ignore Active Sensing messages - if (!((status & 0xff) == 0xfe || (status & 0xff) == 0xf8)) { + // Ignore all system messages + //if (!((status & 0xff) == 0xfe || (status & 0xff) == 0xf8)) { + if (status != 0xf0) { midiBuffer[writeOffset] = newMessage; writeOffset++; @@ -83,16 +84,15 @@ MIDIIO :: MIDIIO() readOffset = 0; writeOffset = 0; - midi_input_pid = sproc(midiInputThread, PR_SALL); - if (midi_input_pid == -1) { - fprintf(stderr, "unable to create MIDI input thread...aborting.\n"); + if (pthread_create(&midi_input_thread, NULL, midiInputThread, NULL)) { + fprintf(stderr, "unable to create MIDI input thread ... aborting.\n"); exit(0); } } MIDIIO :: ~MIDIIO() { - kill (midi_input_pid, SIGKILL); + pthread_cancel(midi_input_thread); mdClosePort(inport); delete [] midiBuffer; } diff --git a/STK/NRev.cpp b/STK/NRev.cpp index 7f351ed..2d8b54c 100644 --- a/STK/NRev.cpp +++ b/STK/NRev.cpp @@ -93,6 +93,8 @@ MY_FLOAT NRev :: lastOutputR() MY_FLOAT NRev :: tick(MY_FLOAT input) { + // FPU underflow checks seem to make things much + // worse here, so I won't do them. MY_FLOAT temp,temp0,temp1,temp2,temp3; int i; diff --git a/STK/Noise.cpp b/STK/Noise.cpp index d978ec3..4feebcc 100644 --- a/STK/Noise.cpp +++ b/STK/Noise.cpp @@ -9,12 +9,6 @@ #include #endif -#if defined(__OS_Win_) /* For Windoze */ - #define ONE_OVER_RANDLIMIT 0.00006103516 -#else /* This is for Linux, NeXT and SGI */ - #define ONE_OVER_RANDLIMIT 0.00000000093132258 -#endif - Noise :: Noise() : Object() { lastOutput = (MY_FLOAT) 0.0; @@ -27,9 +21,9 @@ Noise :: ~Noise() MY_FLOAT Noise :: tick() { #if defined(__OS_Win_) /* For Windoze */ - lastOutput = (MY_FLOAT) (rand() - 16383); + lastOutput = (MY_FLOAT) (rand() - (int)RANDLIMIT_OVER_TWO); #else /* This is for Linux, NeXT and SGI */ - lastOutput = (MY_FLOAT) random() - 1073741823.0; + lastOutput = (MY_FLOAT) (random() - (int)RANDLIMIT_OVER_TWO); #endif lastOutput *= (MY_FLOAT) ONE_OVER_RANDLIMIT; @@ -41,12 +35,3 @@ MY_FLOAT Noise :: lastOut() return lastOutput; } -/************ Test Main ************************/ -/* -void main() -{ - long i; - Noise test; - for (i=0;i<20;i++) printf("%lf\n",test.tick()); -} -*/ diff --git a/STK/Object.h b/STK/Object.h index 6607c1c..68ea5a3 100644 --- a/STK/Object.h +++ b/STK/Object.h @@ -26,27 +26,34 @@ class Object /* The OS type definitions are made in the Makefile */ #if defined(__OS_NeXT_) /* For NeXTStep - Black or White Hardware */ -// No special defines at this time + #define RANDLIMIT 2147483647 #elif defined(__OS_IRIX_) /* For SGI */ #define __STK_REALTIME_ + #define RANDLIMIT 2147483647 #elif defined(__OS_Linux_) /* For Linux */ #define __STK_REALTIME_ #define __OSS_API_ /* Use OSS API */ #define __LITTLE_ENDIAN__ + #define RANDLIMIT 2147483647 #elif defined(__OS_Win_) /* For WindowsXX or NT */ #define __STK_REALTIME_ #define __WINDS_API_ /* For DirectSound API */ // #define __WINMM_API_ /* For Win MM API */ #define __LITTLE_ENDIAN__ + #define RANDLIMIT 32767 #endif -/* Real-time output buffer size. If clicks are occuring in the - * output sound stream, a larger buffer size may help. Larger - * buffer sizes, however, produce more latency between input and - * output. - * NOTE FOR WINDOZE USERS: Given inherent delays in the sound - * output mechanism under Windoze, there is a trade-off between - * smoothness of fast SKINI parameter updates and input/output +/* Real-time audio input and output buffer size. The value of + * this buffer should be an integer multiple of the number of + * channels your application plans to support, in order that + * multi-channel data is not split across multiple buffers. If + * clicks are occuring in the input or output sound stream, a + * larger buffer size may help. Larger buffer sizes, however, + * produce more latency between input and output. + * + * NOTE FOR WINDOZE USERS: Given inherent delays in the audio + * input and output mechanism under Windoze, there is a trade-off + * between smoothness of fast SKINI parameter updates and input/output * latency as discussed above. You can use buffer sizes as low * as 100 (maybe lower) for delay critical applications, but in * this case SKINI parameter updates will be clumped together @@ -93,6 +100,23 @@ class Object #define ONE_OVER_TWO_PI (MY_FLOAT) 0.15915494309 #define SQRT_TWO 1.414213562 +/* Useful random number generator values */ +#define ONE_OVER_RANDLIMIT (1.0/RANDLIMIT) +#define RANDLIMIT_OVER_TWO (int)(RANDLIMIT/2) + +/* FPU Underflow Limit + * The IEEE specification doesn't call for automatic + * zeroing of floating-point values when they reach + * their numerical limits. Instead, most processors + * switch to a much more computation-intensive mode + * when a FPU underflow occurs. We set a lower limit + * here for our own (not so efficient) checks. Here's + * a useful macro for limiting MY_FLOATs. At this time, + * no FPU underflow checks are being performed. + */ +#define FPU_UFLOW_LIMIT 0.0000000001 +#define LIMIT_MY_FLOAT(j) ((((j)<(MY_FLOAT)FPU_UFLOW_LIMIT)&&((j)>(MY_FLOAT)-FPU_UFLOW_LIMIT))?(MY_FLOAT)0.0:(j)) + /* States for Envelopes, etc. */ #define ATTACK 0 #define DECAY 1 diff --git a/STK/Plucked.cpp b/STK/Plucked.cpp index 20f9e99..97c3630 100644 --- a/STK/Plucked.cpp +++ b/STK/Plucked.cpp @@ -49,10 +49,11 @@ void Plucked :: pluck(MY_FLOAT amplitude) long i; pickFilt->setPole((MY_FLOAT) 0.999 - (amplitude * (MY_FLOAT) 0.15)); pickFilt->setGain(amplitude * (MY_FLOAT) 0.5); - for (i=0;itick(delayLine->lastOut() * (MY_FLOAT) 0.6 /* fill delay with noise */ - + pickFilt->tick(noise->tick())); /* additively with current */ - /* contents */ + for (i=0;itick(delayLine->lastOut() * (MY_FLOAT) 0.6 + + pickFilt->tick(noise->tick())); + } void Plucked :: noteOn(MY_FLOAT freq, MY_FLOAT amp) diff --git a/STK/RTDuplex.h b/STK/RTDuplex.h index 16f804f..0f95785 100644 --- a/STK/RTDuplex.h +++ b/STK/RTDuplex.h @@ -21,8 +21,9 @@ class RTDuplex : public Object { protected: RTSoundIO *soundIO; - short indata[RT_BUFFER_SIZE]; - short outdata[RT_BUFFER_SIZE]; + // Add an extra 10 samples to indata[] and outdata[] just to be safe + short indata[RT_BUFFER_SIZE+10]; + short outdata[RT_BUFFER_SIZE+10]; long readCounter; long writeCounter; int channels; diff --git a/STK/RTSoundIO.cpp b/STK/RTSoundIO.cpp index d2b7e0e..4f73734 100644 --- a/STK/RTSoundIO.cpp +++ b/STK/RTSoundIO.cpp @@ -382,6 +382,8 @@ int RTSoundIO :: recordBuffer(short *buf, int bufsize) * capabilities. */ +#define DS_WRITE_METHOD 1 + #include RTSoundIO :: RTSoundIO(MY_FLOAT srate, int channels, char *mode) @@ -414,8 +416,8 @@ RTSoundIO :: RTSoundIO(MY_FLOAT srate, int channels, char *mode) // Define a maximum distance that the write pointer is // allowed to lead safePos. The size of this zone is // fairly critical to the behavior of this scheme. The - // value below is set for a 10 millisecond region. - zoneSize = (DWORD) (0.01 * srate * sizeof(short)); // bytes + // value below is set for a 15 millisecond region. + zoneSize = (DWORD) (0.015 * srate * sizeof(short)); // bytes // Create the DS object if ((result = DirectSoundCreate(NULL, &lpDirectSound, NULL)) != DS_OK) { @@ -651,110 +653,110 @@ int RTSoundIO :: playBuffer(short *buf, int bufsize) hr = lpDSBuffer->GetCurrentPosition(&playPos, &safePos); if (hr != DS_OK) return -1; - // METHOD 1: Keep write pointer in front of read pointer. - // - // Microsloth says that the safePos is about 15 ms ahead of - // playPos. I think this figure is somewhat hardware related, - // especially if you are writing to the primary buffer. With - // my shit-blaster 16, I found the safePos to be about 10 ms - // ahead of playPos. If you really need to reduce delay, you - // can try moving your "safePos" closer to the play pointer. - // You'll be treading on dangerous ground, but then again, - // you're obviously using Windoze so you're already familiar - // with such uncertainty! I've been able to lop off 2-5 ms - // in some circumstances. - //static DWORD backup = (DWORD) (0.005 * SRATE * sizeof(short)); - //safePos = (safePos + dwDSBufSize - backup) % dwDSBufSize; + // METHOD 1: Keep write pointer in front of read pointer. + // + // Microsloth says that the safePos is about 15 ms ahead of + // playPos. I think this figure is somewhat hardware related, + // especially if you are writing to the primary buffer. With + // my shit-blaster 16, I found the safePos to be about 10 ms + // ahead of playPos. If you really need to reduce delay, you + // can try moving your "safePos" closer to the play pointer. + // You'll be treading on dangerous ground, but then again, + // you're obviously using Windoze so you're already familiar + // with such uncertainty! I've been able to lop off 2-5 ms + // in some circumstances. + //static DWORD backup = (DWORD) (0.005 * SRATE * sizeof(short)); + //safePos = (safePos + dwDSBufSize - backup) % dwDSBufSize; - // Assume that the next write position is always in front - // of safePos. If not, the write pointer must have wrapped. - // NOTE: If safePos somehow gets ahead of the write pointer, - // then an underrun has occurred and there's not much we can - // do anyway. - DWORD deltaPos; - if( safePos > nextWritePos ) - deltaPos = nextWritePos + dwDSBufSize - safePos; - else - deltaPos = nextWritePos - safePos; + // Assume that the next write position is always in front + // of safePos. If not, the write pointer must have wrapped. + // NOTE: If safePos somehow gets ahead of the write pointer, + // then an underrun has occurred and there's not much we can + // do anyway. + DWORD deltaPos; + if( safePos > nextWritePos ) + deltaPos = nextWritePos + dwDSBufSize - safePos; + else + deltaPos = nextWritePos - safePos; - // Check whether the write pointer is in the allowed region. - while ( deltaPos > zoneSize ) { - // If we are here, then we must wait until the write pointer - // is in the allowed region. For this, we can either - // continuously check the pointer positions until they are - // OK or we can use the Sleep() function to pause operations - // for a certain amount of time. Use of the Sleep() function - // would seem to be the better choice, however, there are - // reports that Sleep() often "sleeps" for much longer than - // requested. I'll let you choose which method to use. - static int sleep = 1; // 1 = sleep, 0 = don't sleep + // Check whether the write pointer is in the allowed region. + while ( deltaPos > zoneSize ) { + // If we are here, then we must wait until the write pointer + // is in the allowed region. For this, we can either + // continuously check the pointer positions until they are + // OK or we can use the Sleep() function to pause operations + // for a certain amount of time. Use of the Sleep() function + // would seem to be the better choice, however, there are + // reports that Sleep() often "sleeps" for much longer than + // requested. I'll let you choose which method to use. + static int sleep = 1; // 1 = sleep, 0 = don't sleep - if (sleep) { - // Sleep until safePos catches up. Calculate number of - // milliseconds to wait as: - // time = distance * (milliseconds/second) * fudgefactor / - // ((bytes/sample) * (samples/second)) - // A "fudgefactor" less than 1 is used because it was found - // that sleeping too long was MUCH worse than sleeping for - // several shorter periods. - DWORD millis = (DWORD) ((deltaPos * 200.0) / ( sizeof(short) * SRATE)); + if (sleep) { + // Sleep until safePos catches up. Calculate number of + // milliseconds to wait as: + // time = distance * (milliseconds/second) * fudgefactor / + // ((bytes/sample) * (samples/second)) + // A "fudgefactor" less than 1 is used because it was found + // that sleeping too long was MUCH worse than sleeping for + // several shorter periods. + DWORD millis = (DWORD) ((deltaPos * 200.0) / ( sizeof(short) * SRATE)); - // Sleep for that long - Sleep( millis ); - } + // Sleep for that long + Sleep( millis ); + } - // Wake up, find out where we are now - hr = lpDSBuffer->GetCurrentPosition( &playPos, &safePos ); - if( hr != DS_OK ) return -1; + // Wake up, find out where we are now + hr = lpDSBuffer->GetCurrentPosition( &playPos, &safePos ); + if( hr != DS_OK ) return -1; - // Backup safePos? (See above) - //safePos = (safePos + dwDSBufSize - backup) % dwDSBufSize; + // Backup safePos? (See above) + //safePos = (safePos + dwDSBufSize - backup) % dwDSBufSize; - if( safePos > nextWritePos ) - deltaPos = nextWritePos + dwDSBufSize - safePos; - else - deltaPos = nextWritePos - safePos; - } - // End of Method 1 + if( safePos > nextWritePos ) + deltaPos = nextWritePos + dwDSBufSize - safePos; + else + deltaPos = nextWritePos - safePos; + } + // End of Method 1 - /* - // METHOD 2: Keep write region behind of play pointer. - if( playPos < nextWritePos ) playPos += dwDSBufSize; // unwrap offset - DWORD endWrite = nextWritePos + bufsize * sizeof(short); + /* + // METHOD 2: Keep write region behind of play pointer. + if( playPos < nextWritePos ) playPos += dwDSBufSize; // unwrap offset + DWORD endWrite = nextWritePos + bufsize * sizeof(short); - // Check whether the write region is behind the play pointer. - while ( playPos < endWrite ) { - // If we are here, then we must wait until the play pointer - // gets beyond the write region. For this, we can either - // continuously check the pointer positions until they are - // OK or we can use the Sleep() function to pause operations - // for a certain amount of time. Use of the Sleep() function - // would seem to be the better choice, however, there are - // reports that Sleep() often "sleeps" for much longer than - // requested. I'll let you choose which method to use. - static int sleep = 1; // 1 = sleep, 0 = don't sleep + // Check whether the write region is behind the play pointer. + while ( playPos < endWrite ) { + // If we are here, then we must wait until the play pointer + // gets beyond the write region. For this, we can either + // continuously check the pointer positions until they are + // OK or we can use the Sleep() function to pause operations + // for a certain amount of time. Use of the Sleep() function + // would seem to be the better choice, however, there are + // reports that Sleep() often "sleeps" for much longer than + // requested. I'll let you choose which method to use. + static int sleep = 1; // 1 = sleep, 0 = don't sleep - if (sleep) { - // Sleep until safePos catches up. Calculate number of - // milliseconds to wait as: - // time = distance * (milliseconds/second) * fudgefactor / - // ((bytes/sample) * (samples/second)) - // A "fudgefactor" less than 1 is used because it was found - // that sleeping too long was MUCH worse than sleeping for - // several shorter periods. - DWORD millis = (DWORD) (((endWrite - playPos) * 200.0) / ( sizeof(short) * SRATE)); + if (sleep) { + // Sleep until safePos catches up. Calculate number of + // milliseconds to wait as: + // time = distance * (milliseconds/second) * fudgefactor / + // ((bytes/sample) * (samples/second)) + // A "fudgefactor" less than 1 is used because it was found + // that sleeping too long was MUCH worse than sleeping for + // several shorter periods. + DWORD millis = (DWORD) (((endWrite - playPos) * 200.0) / ( sizeof(short) * SRATE)); - // Sleep for that long - Sleep( millis ); - } + // Sleep for that long + Sleep( millis ); + } - // Wake up, find out where we are now - hr = lpDSBuffer->GetCurrentPosition( &playPos, &safePos ); - if( hr != DS_OK ) return -1; - if( playPos < nextWritePos ) playPos += dwDSBufSize; // unwrap offset - } - // End of Method 2. - */ + // Wake up, find out where we are now + hr = lpDSBuffer->GetCurrentPosition( &playPos, &safePos ); + if( hr != DS_OK ) return -1; + if( playPos < nextWritePos ) playPos += dwDSBufSize; // unwrap offset + } + // End of Method 2. + */ // Lock free space in the DS hr = lpDSBuffer->Lock (nextWritePos, bufsize * sizeof(short), &lpbuf1, &dwsize1, &lpbuf2, &dwsize2, 0); diff --git a/STK/RTWvIn.cpp b/STK/RTWvIn.cpp index 1e7b190..194fb12 100644 --- a/STK/RTWvIn.cpp +++ b/STK/RTWvIn.cpp @@ -22,10 +22,10 @@ RTWvIn :: RTWvIn(MY_FLOAT srate, short chans) { soundIO = new RTSoundIO(srate, chans, "record"); - length = RT_BUFFER_SIZE; channels = chans; + length = RT_BUFFER_SIZE/channels; data = 0; - rtdata = (short *) new short[channels*(RT_BUFFER_SIZE+1)]; + rtdata = (short *) new short[RT_BUFFER_SIZE+channels]; this->getMoreData(); @@ -78,8 +78,8 @@ void RTWvIn :: setLooping(int aLoopStatus) void RTWvIn :: getMoreData() { - soundIO->recordBuffer(rtdata,(RT_BUFFER_SIZE)*channels); - long temp = channels*(RT_BUFFER_SIZE); + soundIO->recordBuffer(rtdata,RT_BUFFER_SIZE); + long temp = RT_BUFFER_SIZE; for (int i=0;itick(deltaP); +} + +MY_FLOAT ReedTabl :: tick(MY_FLOAT deltaP) /* Perform "Table Lookup" by direct clipped */ /* linear function calculation */ { /* deltaP is differential reed pressure */ - lastOutput = offSet + (slope * deltaP); /* compute basic non-linearity */ - if (lastOutput > 1.0) lastOutput = (MY_FLOAT) 1.0; /* if other way, reed slams shut */ - if (lastOutput < -1.0) lastOutput = (MY_FLOAT) -1.0; /* if all the way open, acts like open end */ - return lastOutput; + lastOutput = offSet + (slope * deltaP); /* compute basic non-linearity */ + if (lastOutput > 1.0) lastOutput = (MY_FLOAT) 1.0; /* if other way, reed slams shut */ + if (lastOutput < -1.0) lastOutput = (MY_FLOAT) -1.0; /* if all the way open, acts like open end */ + return lastOutput; } MY_FLOAT ReedTabl :: lastOut() diff --git a/STK/ReedTabl.h b/STK/ReedTabl.h index da695e7..f7f4b73 100644 --- a/STK/ReedTabl.h +++ b/STK/ReedTabl.h @@ -13,17 +13,18 @@ class ReedTabl : public Object { - protected: - MY_FLOAT offSet; - MY_FLOAT slope; - MY_FLOAT lastOutput; - public: - ReedTabl(); - ~ReedTabl(); - void setOffset(MY_FLOAT aValue); - void setSlope(MY_FLOAT aValue); - MY_FLOAT lookup(MY_FLOAT deltaP); - MY_FLOAT lastOut(); +protected: + MY_FLOAT offSet; + MY_FLOAT slope; + MY_FLOAT lastOutput; +public: + ReedTabl(); + ~ReedTabl(); + void setOffset(MY_FLOAT aValue); + void setSlope(MY_FLOAT aValue); + MY_FLOAT lookup(MY_FLOAT deltaP); + MY_FLOAT tick(MY_FLOAT deltaP); + MY_FLOAT lastOut(); }; #endif diff --git a/STK/Release/.placeholder b/STK/Release/.placeholder deleted file mode 100644 index e69de29..0000000 diff --git a/STK/Reverb.cpp b/STK/Reverb.cpp index c42ec36..cb60eb7 100644 --- a/STK/Reverb.cpp +++ b/STK/Reverb.cpp @@ -12,6 +12,10 @@ Reverb :: Reverb() { } +Reverb :: ~Reverb() +{ +} + MY_FLOAT Reverb :: tick(MY_FLOAT sample) { printf("Warning: Using virtual function Reverb :: tick()\n"); diff --git a/STK/Reverb.h b/STK/Reverb.h index 68a8e78..0121a92 100644 --- a/STK/Reverb.h +++ b/STK/Reverb.h @@ -14,10 +14,11 @@ class Reverb : public Object { public: - Reverb(); + Reverb(); + virtual ~Reverb(); virtual MY_FLOAT tick(MY_FLOAT sample); virtual void setEffectMix(MY_FLOAT mix); - int isprime(int val); + int isprime(int val); }; #endif // defined(__Reverb_h) diff --git a/STK/SKINI11.cpp b/STK/SKINI11.cpp index 598f87f..365f14f 100644 --- a/STK/SKINI11.cpp +++ b/STK/SKINI11.cpp @@ -140,7 +140,7 @@ long SKINI11 :: parseThis(char* aString) int somePointrs[__SK_MAX_FIELDS_]; temp = nextChar(aString); - if (which = ignore(aString[temp])) { + if ((which = ignore(aString[temp]))) { if (which == 2) printf("// CommentLine: %s\n",aString); messageType = 0; return messageType; diff --git a/STK/Shakers.cpp b/STK/Shakers.cpp index 9c288b3..16e39ac 100644 --- a/STK/Shakers.cpp +++ b/STK/Shakers.cpp @@ -60,34 +60,39 @@ MY_FLOAT noise_tick() // Return random MY_FLOAT float between -1.0 and 1.0 /************************* MARACA *****************************/ #define MARA_SOUND_DECAY 0.95 #define MARA_SYSTEM_DECAY 0.999 -#define MARA_GAIN 25.0 +//#define MARA_GAIN 25.0 +#define MARA_GAIN 20.0 #define MARA_NUM_BEANS 25 #define MARA_CENTER_FREQ 3200.0 #define MARA_RESON 0.96 /*********************** SEKERE *****************************/ #define SEKE_SOUND_DECAY 0.96 #define SEKE_SYSTEM_DECAY 0.999 -#define SEKE_GAIN 30.0 +//#define SEKE_GAIN 30.0 +#define SEKE_GAIN 20.0 #define SEKE_NUM_BEANS 64 #define SEKE_CENTER_FREQ 5500.0 #define SEKE_RESON 0.6 /*********************** SANDPAPER **************************/ #define SANDPAPR_SOUND_DECAY 0.999 #define SANDPAPR_SYSTEM_DECAY 0.999 -#define SANDPAPR_GAIN 1.0 +//#define SANDPAPR_GAIN 1.0 +#define SANDPAPR_GAIN 0.5 #define SANDPAPR_NUM_GRAINS 128 #define SANDPAPR_CENTER_FREQ 4500.0 #define SANDPAPR_RESON 0.6 /************************ CABASA *****************************/ #define CABA_SOUND_DECAY 0.96 #define CABA_SYSTEM_DECAY 0.997 -#define CABA_GAIN 150.0 +//#define CABA_GAIN 150.0 +#define CABA_GAIN 40.0 #define CABA_NUM_BEADS 512 #define CABA_CENTER_FREQ 3000.0 #define CABA_RESON 0.7 /************************ Bamboo Wind Chimes *****************/ #define BAMB_SOUND_DECAY 0.95 -#define BAMB_SYSTEM_DECAY 0.99995 +//#define BAMB_SYSTEM_DECAY 0.99995 +#define BAMB_SYSTEM_DECAY 0.9999 #define BAMB_GAIN 2.0 #define BAMB_NUM_TUBES 1.25 #define BAMB_CENTER_FREQ0 2800.0 @@ -96,9 +101,11 @@ MY_FLOAT noise_tick() // Return random MY_FLOAT float between -1.0 and 1.0 #define BAMB_RESON 0.995 /******************* Water Drops ****************************/ #define WUTR_SOUND_DECAY 0.95 -#define WUTR_SYSTEM_DECAY 0.999 +//#define WUTR_SYSTEM_DECAY 0.999 +#define WUTR_SYSTEM_DECAY 0.996 #define WUTR_GAIN 1.0 -#define WUTR_NUM_SOURCES 4 +//#define WUTR_NUM_SOURCES 4 +#define WUTR_NUM_SOURCES 10 #define WUTR_CENTER_FREQ0 450.0 #define WUTR_CENTER_FREQ1 600.0 #define WUTR_CENTER_FREQ2 750.0 @@ -107,7 +114,8 @@ MY_FLOAT noise_tick() // Return random MY_FLOAT float between -1.0 and 1.0 /****************** TAMBOURINE *****************************/ #define TAMB_SOUND_DECAY 0.95 #define TAMB_SYSTEM_DECAY 0.9985 -#define TAMB_GAIN 10.0 +//#define TAMB_GAIN 10.0 +#define TAMB_GAIN 5.0 #define TAMB_NUM_TIMBRELS 32 #define TAMB_SHELL_FREQ 2300 #define TAMB_SHELL_GAIN 0.1 @@ -118,7 +126,8 @@ MY_FLOAT noise_tick() // Return random MY_FLOAT float between -1.0 and 1.0 /********************** SLEIGHBELLS *************************/ #define SLEI_SOUND_DECAY 0.97 #define SLEI_SYSTEM_DECAY 0.9994 -#define SLEI_GAIN 2.0 +//#define SLEI_GAIN 2.0 +#define SLEI_GAIN 1.0 #define SLEI_NUM_BELLS 32 #define SLEI_CYMB_FREQ0 2500 #define SLEI_CYMB_FREQ1 5300 @@ -145,7 +154,8 @@ MY_FLOAT noise_tick() // Return random MY_FLOAT float between -1.0 and 1.0 /************************ COKECAN **************************/ #define COKECAN_SOUND_DECAY 0.97 #define COKECAN_SYSTEM_DECAY 0.999 -#define COKECAN_GAIN 1.0 +//#define COKECAN_GAIN 1.0 +#define COKECAN_GAIN 0.8 #define COKECAN_NUM_PARTS 48 #define COKECAN_HELMFREQ 370 #define COKECAN_HELM_RES 0.99 @@ -169,7 +179,8 @@ MY_FLOAT noise_tick() // Return random MY_FLOAT float between -1.0 and 1.0 /************************ Crunch1 ***************************/ #define CRUNCH1_SOUND_DECAY 0.95 #define CRUNCH1_SYSTEM_DECAY 0.99806 -#define CRUNCH1_GAIN 30.0 +//#define CRUNCH1_GAIN 30.0 +#define CRUNCH1_GAIN 20.0 #define CRUNCH1_NUM_BEADS 7 #define CRUNCH1_CENTER_FREQ 800.0 #define CRUNCH1_RESON 0.95 @@ -270,12 +281,16 @@ int Shakers :: setFreqAndReson(int which, MY_FLOAT freq, MY_FLOAT reson) { int Shakers :: setupNum(int inst) { - int i; + int i, rv = 0; MY_FLOAT temp; if (inst==1) { // cabasa_setup(); + rv = inst; num_objects = CABA_NUM_BEADS; + defObjs[inst] = CABA_NUM_BEADS; setDecays(CABA_SOUND_DECAY, CABA_SYSTEM_DECAY); + defDecays[inst] = CABA_SYSTEM_DECAY; + decayScale[inst] = 0.97; num_freqs = 1; baseGain = CABA_GAIN; temp = log(num_objects) * baseGain / (MY_FLOAT) num_objects; @@ -285,8 +300,12 @@ int Shakers :: setupNum(int inst) setFinalZs(1.0,-1.0,0.0); } else if (inst==2) { // sekere_setup(); + rv = inst; num_objects = SEKE_NUM_BEANS; + defObjs[inst] = SEKE_NUM_BEANS; this->setDecays(SEKE_SOUND_DECAY,SEKE_SYSTEM_DECAY); + defDecays[inst] = SEKE_SYSTEM_DECAY; + decayScale[inst] = 0.94; num_freqs = 1; baseGain = SEKE_GAIN; temp = log(num_objects) * baseGain / (MY_FLOAT) num_objects; @@ -296,8 +315,12 @@ int Shakers :: setupNum(int inst) this->setFinalZs(1.0, 0.0, -1.0); } else if (inst==3) { // guiro_setup(); + rv = inst; num_objects = GUIR_NUM_PARTS; + defObjs[inst] = GUIR_NUM_PARTS; setDecays(GUIR_SOUND_DECAY,1.0); + defDecays[inst] = 0.9999; + decayScale[inst] = 1.0; num_freqs = 2; baseGain = GUIR_GAIN; temp = log(num_objects) * baseGain / (MY_FLOAT) num_objects; @@ -313,8 +336,12 @@ int Shakers :: setupNum(int inst) ratchetPos = 10; } else if (inst==4) { // wuter_setup(); + rv = inst; num_objects = WUTR_NUM_SOURCES; + defObjs[inst] = WUTR_NUM_SOURCES; setDecays(WUTR_SOUND_DECAY,WUTR_SYSTEM_DECAY); + defDecays[inst] = WUTR_SYSTEM_DECAY; + decayScale[inst] = 0.8; num_freqs = 3; baseGain = WUTR_GAIN; temp = log(num_objects) * baseGain / (MY_FLOAT) num_objects; @@ -333,8 +360,12 @@ int Shakers :: setupNum(int inst) setFinalZs(1.0,0.0,0.0); } else if (inst==5) { // bamboo_setup(); + rv = inst; num_objects = BAMB_NUM_TUBES; + defObjs[inst] = BAMB_NUM_TUBES; setDecays(BAMB_SOUND_DECAY, BAMB_SYSTEM_DECAY); + defDecays[inst] = BAMB_SYSTEM_DECAY; + decayScale[inst] = 0.7; num_freqs = 3; baseGain = BAMB_GAIN; temp = log(num_objects) * baseGain / (MY_FLOAT) num_objects; @@ -353,8 +384,12 @@ int Shakers :: setupNum(int inst) setFinalZs(1.0,0.0,0.0); } else if (inst==6) { // tambourine_setup(); + rv = inst; num_objects = TAMB_NUM_TIMBRELS; + defObjs[inst] = TAMB_NUM_TIMBRELS; setDecays(TAMB_SOUND_DECAY,TAMB_SYSTEM_DECAY); + defDecays[inst] = TAMB_SYSTEM_DECAY; + decayScale[inst] = 0.95; num_freqs = 3; baseGain = TAMB_GAIN; temp = log(num_objects) * baseGain / (MY_FLOAT) num_objects; @@ -373,8 +408,12 @@ int Shakers :: setupNum(int inst) setFinalZs(1.0,0.0,-1.0); } else if (inst==7) { // sleighbell_setup(); + rv = inst; num_objects = SLEI_NUM_BELLS; + defObjs[inst] = SLEI_NUM_BELLS; setDecays(SLEI_SOUND_DECAY,SLEI_SYSTEM_DECAY); + defDecays[inst] = SLEI_SYSTEM_DECAY; + decayScale[inst] = 0.9; num_freqs = 5; baseGain = SLEI_GAIN; temp = log(num_objects) * baseGain / (MY_FLOAT) num_objects; @@ -395,8 +434,12 @@ int Shakers :: setupNum(int inst) setFinalZs(1.0,0.0,-1.0); } else if (inst==8) { // stix1_setup(); + rv = inst; num_objects = STIX1_NUM_BEANS; + defObjs[inst] = STIX1_NUM_BEANS; setDecays(STIX1_SOUND_DECAY,STIX1_SYSTEM_DECAY); + defDecays[inst] = STIX1_SYSTEM_DECAY; + decayScale[inst] = 0.96; num_freqs = 1; baseGain = STIX1_GAIN; temp = log(num_objects) * baseGain / (MY_FLOAT) num_objects; @@ -406,8 +449,12 @@ int Shakers :: setupNum(int inst) setFinalZs(1.0,0.0,-1.0); } else if (inst==9) { // crunch1_setup(); + rv = inst; num_objects = CRUNCH1_NUM_BEADS; + defObjs[inst] = CRUNCH1_NUM_BEADS; setDecays(CRUNCH1_SOUND_DECAY,CRUNCH1_SYSTEM_DECAY); + defDecays[inst] = CRUNCH1_SYSTEM_DECAY; + decayScale[inst] = 0.96; num_freqs = 1; baseGain = CRUNCH1_GAIN; temp = log(num_objects) * baseGain / (MY_FLOAT) num_objects; @@ -417,8 +464,12 @@ int Shakers :: setupNum(int inst) setFinalZs(1.0,-1.0,0.0); } else if (inst==10) { // wrench_setup(); + rv = inst; num_objects = WRENCH_NUM_PARTS; + defObjs[inst] = WRENCH_NUM_PARTS; setDecays(WRENCH_SOUND_DECAY,1.0); + defDecays[inst] = 0.9999; + decayScale[inst] = 0.98; num_freqs = 2; baseGain = WRENCH_GAIN; temp = log(num_objects) * baseGain / (MY_FLOAT) num_objects; @@ -434,8 +485,12 @@ int Shakers :: setupNum(int inst) ratchetPos = 10; } else if (inst==11) { // sandpapr_setup(); + rv = inst; num_objects = SANDPAPR_NUM_GRAINS; + defObjs[inst] = SANDPAPR_NUM_GRAINS; this->setDecays(SANDPAPR_SOUND_DECAY,SANDPAPR_SYSTEM_DECAY); + defDecays[inst] = SANDPAPR_SYSTEM_DECAY; + decayScale[inst] = 0.97; num_freqs = 1; baseGain = SANDPAPR_GAIN; temp = log(num_objects) * baseGain / (MY_FLOAT) num_objects; @@ -445,8 +500,12 @@ int Shakers :: setupNum(int inst) this->setFinalZs(1.0, 0.0, -1.0); } else if (inst==12) { // cokecan_setup(); + rv = inst; num_objects = COKECAN_NUM_PARTS; + defObjs[inst] = COKECAN_NUM_PARTS; setDecays(COKECAN_SOUND_DECAY,COKECAN_SYSTEM_DECAY); + defDecays[inst] = COKECAN_SYSTEM_DECAY; + decayScale[inst] = 0.95; num_freqs = 5; baseGain = COKECAN_GAIN; temp = log(num_objects) * baseGain / (MY_FLOAT) num_objects; @@ -469,7 +528,10 @@ int Shakers :: setupNum(int inst) } else { // maraca_setup(); inst == 0 or other num_objects = MARA_NUM_BEANS; + defObjs[0] = MARA_NUM_BEANS; setDecays(MARA_SOUND_DECAY,MARA_SYSTEM_DECAY); + defDecays[0] = MARA_SYSTEM_DECAY; + decayScale[inst] = 0.9; num_freqs = 1; baseGain = MARA_GAIN; temp = log(num_objects) * baseGain / (MY_FLOAT) num_objects; @@ -478,7 +540,7 @@ int Shakers :: setupNum(int inst) setFreqAndReson(0,MARA_CENTER_FREQ,MARA_RESON); setFinalZs(1.0,-1.0,0.0); } - return inst; + return rv; } void Shakers :: noteOn(MY_FLOAT freq, MY_FLOAT amp) @@ -486,7 +548,8 @@ void Shakers :: noteOn(MY_FLOAT freq, MY_FLOAT amp) // Yep ... pretty kludgey, but it works! int noteNum = (int) ((12*log(freq/220)/log(2)) + 57.01) % 32; if (instType != noteNum) instType = this->setupNum(noteNum); - shakeEnergy = amp * MAX_SHAKE * 0.1; + //shakeEnergy = amp * MAX_SHAKE * 0.1; + shakeEnergy += amp * MAX_SHAKE * 0.1; if (shakeEnergy > MAX_SHAKE) shakeEnergy = MAX_SHAKE; if (instType==10 || instType==3) ratchetPos += 1; #if defined(_debug_) @@ -497,6 +560,7 @@ void Shakers :: noteOn(MY_FLOAT freq, MY_FLOAT amp) void Shakers :: noteOff(MY_FLOAT amp) { shakeEnergy = 0.0; + if (instType==10 || instType==3) ratchetPos = 0; } #define MIN_ENERGY 0.3 @@ -510,6 +574,7 @@ MY_FLOAT Shakers :: tick() if (instType==4) { if (shakeEnergy > MIN_ENERGY) { lastOutput = wuter_tick(); + lastOutput *= 0.0001; } else { lastOutput = 0.0; @@ -524,6 +589,7 @@ MY_FLOAT Shakers :: tick() } totalEnergy = ratchet; lastOutput = ratchet_tick(); + lastOutput *= 0.0001; } else lastOutput = 0.0; } @@ -560,13 +626,11 @@ MY_FLOAT Shakers :: tick() data += finalZCoeffs[2] * finalZ[2]; // Extra zero(s) for shape if (data > 10000.0) data = 10000.0; if (data < -10000.0) data = -10000.0; - lastOutput = data; + lastOutput = data * 0.0001; } else lastOutput = 0.0; } - lastOutput *= 0.0001; - return lastOutput; } @@ -593,23 +657,64 @@ void Shakers :: controlChange(int number, MY_FLOAT value) #if defined(_debug_) printf("setting decay\n"); #endif - systemDecay = 0.998 + (value * NORM_7 * 0.002); + //systemDecay = 0.998 + (value * NORM_7 * 0.002); + if (instType != 3 && instType != 10) { + systemDecay = defDecays[instType] + ((value - 64.0) * decayScale[instType] * (1.0 - defDecays[instType]) / 64.0 ); + gains[0] = log(num_objects) * baseGain / (MY_FLOAT) num_objects; + for (i=1;isetUnVoiced((MY_FLOAT) 0.01 * value * (MY_FLOAT) NORM_7); } else if (number == __SK_FootControl_) { - tempi = (int) value; + MY_FLOAT temp = 0.0; + int tempi = (int) value; if (tempi < 32) { tempi = tempi; temp = (MY_FLOAT) 0.9; diff --git a/STK/WvIn.h b/STK/WvIn.h index 1fbda9e..6334c3e 100644 --- a/STK/WvIn.h +++ b/STK/WvIn.h @@ -28,7 +28,7 @@ class WvIn : public Object MY_FLOAT *lastOutput; public: WvIn(); - ~WvIn(); + virtual ~WvIn(); void reset(); void normalize(); void normalize(MY_FLOAT newPeak); diff --git a/STK/mandplyr.h b/STK/mandplyr.h index 6dc0246..e4c58be 100644 --- a/STK/mandplyr.h +++ b/STK/mandplyr.h @@ -15,25 +15,25 @@ class MandPlyr : public Instrmnt { - protected: - VoicMang *strings; - Noise *noise; - short strumming; - long strumRate; - long strumCount; - MY_FLOAT skill; - short nums[NUM_STRINGS]; // For Now Integer Note Nums - MY_FLOAT amps[NUM_STRINGS]; - long tags[NUM_STRINGS]; - public: - MandPlyr(); - ~MandPlyr(); - virtual void noteOnN(short num, MY_FLOAT amp); - virtual void noteOffN(short num, MY_FLOAT amp); - virtual MY_FLOAT tick(); - MY_FLOAT special_tick(); - virtual void controlChange(int number, MY_FLOAT value); - virtual void playChord(MY_FLOAT amp, char* chordString); +protected: + VoicMang *strings; + Noise *noise; + short strumming; + long strumRate; + long strumCount; + MY_FLOAT skill; + short nums[NUM_STRINGS]; // For Now Integer Note Nums + MY_FLOAT amps[NUM_STRINGS]; + long tags[NUM_STRINGS]; +public: + MandPlyr(); + ~MandPlyr(); + virtual void noteOnN(short num, MY_FLOAT amp); + virtual void noteOffN(short num, MY_FLOAT amp); + virtual MY_FLOAT tick(); + MY_FLOAT special_tick(); + virtual void controlChange(int number, MY_FLOAT value); + virtual void playChord(MY_FLOAT amp, char* chordString); }; #endif diff --git a/effects/Makefile b/effects/Makefile index 63239f3..f8c2fb0 100644 --- a/effects/Makefile +++ b/effects/Makefile @@ -18,12 +18,12 @@ RM = /bin/rm ifeq ($(OS),IRIX) # These are for SGI INSTR = effects CC = CC -O2 -D__OS_IRIX_ # -g -fullwarn -D__SGI_CC__ - LIBRARY = -L/usr/sgitcl/lib -laudio -lmd -lm + LIBRARY = -L/usr/sgitcl/lib -laudio -lmd -lm -lpthread endif ifeq ($(OS),Linux) # These are for Linux INSTR = effects - CC = g++ -O3 -D__OS_Linux_ # -g + CC = g++ -O3 -Wall -D__OS_Linux_ # -g LIBRARY = -lpthread -lm endif diff --git a/effects/effects.cpp b/effects/effects.cpp index 70ebbf1..cbd2574 100644 --- a/effects/effects.cpp +++ b/effects/effects.cpp @@ -19,7 +19,7 @@ int numStrings = 0; int notDone = 1; char **inputString; -void errorfun(void) { +void usage(void) { /* Error function in case of incorrect command-line argument specifications */ printf("\nuseage: effects flag \n"); printf(" where flag = -ip for realtime SKINI input by pipe\n"); @@ -28,7 +28,7 @@ void errorfun(void) { exit(0); } -void main(int argc,char *argv[]) +int main(int argc,char *argv[]) { MY_FLOAT inSample = 0.0; MY_FLOAT lastSample = 0.0; @@ -36,12 +36,12 @@ void main(int argc,char *argv[]) long i, synlength; int type, j, outOne = 0, effect = 0, useSocket = 0; - if (argc != 2) errorfun(); + if (argc != 2) usage(); if (!strcmp(argv[1],"-is") ) useSocket = 1; else if (strcmp(argv[1],"-ip")) { - errorfun(); + usage(); } RTDuplex *inout = new RTDuplex(SRATE,1); @@ -85,21 +85,25 @@ void main(int argc,char *argv[]) score->parseThis(inputString[outOne]); type = score->getType(); if (type > 0) { - if (type == __SK_NoteOn_ ) { + switch(type) { + case __SK_NoteOn_: + // check to see if velocity is zero ... really a NoteOff if (( byte3 = score->getByteThree() ) == 0) { // NoteOff envelope->setRate(0.001); envelope->setTarget(0.0); } - else { // Really a NoteOn + else { // really a NoteOn envelope->setRate(0.001); envelope->setTarget(1.0); } - } - else if (type == __SK_NoteOff_) { + break; + + case __SK_NoteOff_: envelope->setRate(0.001); envelope->setTarget(0.0); - } - else if (type == __SK_ControlChange_) { + break; + + case __SK_ControlChange_: j = (int) score->getByteTwo(); byte3 = score->getByteThree(); if (j == 20) effect = (int) byte3; // effect change @@ -119,6 +123,7 @@ void main(int argc,char *argv[]) else if (j == 23) { // effect1 parameter change chorus->setModDepth(byte3*NORM_7*0.2); } + break; } } outOne += 1; @@ -156,4 +161,5 @@ void main(int argc,char *argv[]) delete envelope; printf("effects finished ... goodbye.\n"); + return 0; } diff --git a/effects/threads.cpp b/effects/threads.cpp index 7e7d640..4313af0 100644 --- a/effects/threads.cpp +++ b/effects/threads.cpp @@ -1,26 +1,28 @@ // Thread functions for use with syntmono. // -// Gary P. Scavone, 1999. +// No mutexes are currently being used when accessing +// the global variables shared between these threads +// and the main() routine. In a single processor +// environment, no problems have resulted from such data +// sharing. However, if STK is to be run on a true parallel +// processing platform, it is likely that mutexes will be +// necessary. While the mutex calls are simple to code, I +// am trying to keep the code as generic as possible. A +// quick investigation of threads under Windoze indicates +// that mutex functionality is not available, at least with +// the standard libraries. +// +// Gary P. Scavone, 2000. #include "threads.h" #if defined(__STK_REALTIME_) -#define SERVICE_PORT 2001 // Socket Port ID number +// Default STK socket port ID number +#define SERVICE_PORT 2001 // Do OS dependent declarations and includes -#if defined(__OS_IRIX_) -#include -#include -#include -#include -#include -#include -#include - -pid_t string_thread; - -#elif defined(__OS_Linux_) +#if (defined(__OS_IRIX_) || defined(__OS_Linux_)) #include #include #include @@ -39,13 +41,10 @@ unsigned long string_thread; #endif -// The thread function definition protocols are slightly -// different under Irix, Linux, and Windoze. -#if defined(__OS_IRIX_) +// The thread function protocols are slightly different +// under Windoze ... but of course! -void newStringByPipe(void *) - -#elif defined(__OS_Linux_) +#if (defined(__OS_IRIX_) || defined(__OS_Linux_)) void *newStringByPipe(void *) @@ -86,14 +85,15 @@ void newStringByPipe(void *) // Free inputString. for ( i=0;iparseThis(inputString[outOne]); type = score->getType(); - if (type > 0) { - if (type == __SK_NoteOn_ ) { + if (type > 0) { + switch(type) { + + case __SK_NoteOn_: + // check to see if velocity is zero ... really a NoteOff if (( byte3 = score->getByteThree() ) == 0) - instrument->noteOff(byte3*NORM_7); - else { + instrument->noteOff(0.0); + else { // really a NoteOn j = (int) score->getByteTwo(); - temp = __MIDI_To_Pitch[j]; - lastPitch = temp; - instrument->noteOn(temp,byte3*NORM_7); + lastPitch = __MIDI_To_Pitch[j]; + instrument->noteOn(lastPitch,byte3*NORM_7); } - } - else if (type == __SK_NoteOff_) { - byte3 = score->getByteThree(); - instrument->noteOff(byte3*NORM_7); - } - else if (type == __SK_ControlChange_) { - j = (int) score->getByteTwo(); - byte3 = score->getByteThree(); - instrument->controlChange(j,byte3); - } - else if (type == __SK_AfterTouch_) { - j = (int) score->getByteTwo(); - instrument->controlChange(128,j); - } - else if (type == __SK_PitchBend_) { + break; + + case __SK_NoteOff_: + instrument->noteOff(NORM_7*score->getByteThree()); + break; + + case __SK_ControlChange_: + instrument->controlChange((int)score->getByteTwo(), + score->getByteThree()); + break; + + case __SK_AfterTouch_: + instrument->controlChange(128,score->getByteTwo()); + break; + + case __SK_PitchBend_: temp = score->getByteTwo(); j = (int) temp; - temp -= j; + temp -= j; // floating-point remainder lastPitch = __MIDI_To_Pitch[j] * pow(2.0,temp / 12.0) ; instrument->setFreq(1, lastPitch); /* change osc1 pitch for now */ - } - else if (type == __SK_ProgramChange_) { + break; } } outOne += 1; @@ -102,6 +104,7 @@ void main(int argc,char *argv[]) numStrings--; } } + for (i=0;itick(instrument->tick()); } @@ -111,4 +114,5 @@ void main(int argc,char *argv[]) delete instrument; printf("MUS151 finished.\n"); + return 0; } diff --git a/mus151/Makefile b/mus151/Makefile index 2ba3df1..ed3f757 100644 --- a/mus151/Makefile +++ b/mus151/Makefile @@ -26,7 +26,7 @@ RM = /bin/rm ifeq ($(OS),IRIX) # These are for SGI INSTR = MUS151 CC = CC -O2 -D__OS_IRIX_ # -g -fullwarn -D__SGI_CC__ - LIBRARY = -L/usr/sgitcl/lib -laudio -lmd -lm + LIBRARY = -L/usr/sgitcl/lib -laudio -lm -lpthread endif ifeq ($(OS),Linux) # These are for Linux diff --git a/mus151/tcl/TwoWaves.tcl b/mus151/tcl/TwoWaves.tcl index dcc48ae..e8a41e8 100644 --- a/mus151/tcl/TwoWaves.tcl +++ b/mus151/tcl/TwoWaves.tcl @@ -102,7 +102,7 @@ bind . +myExit proc myExit {} { global outID - puts $outID [format "NoteOff 0.0 1 64 127" ] + puts $outID [format "NoteOff 0.0 1 64.0 127.0" ] flush $outID puts $outID [format "ExitProgram"] flush $outID diff --git a/mus151/threads.cpp b/mus151/threads.cpp index 7e7d640..4313af0 100644 --- a/mus151/threads.cpp +++ b/mus151/threads.cpp @@ -1,26 +1,28 @@ // Thread functions for use with syntmono. // -// Gary P. Scavone, 1999. +// No mutexes are currently being used when accessing +// the global variables shared between these threads +// and the main() routine. In a single processor +// environment, no problems have resulted from such data +// sharing. However, if STK is to be run on a true parallel +// processing platform, it is likely that mutexes will be +// necessary. While the mutex calls are simple to code, I +// am trying to keep the code as generic as possible. A +// quick investigation of threads under Windoze indicates +// that mutex functionality is not available, at least with +// the standard libraries. +// +// Gary P. Scavone, 2000. #include "threads.h" #if defined(__STK_REALTIME_) -#define SERVICE_PORT 2001 // Socket Port ID number +// Default STK socket port ID number +#define SERVICE_PORT 2001 // Do OS dependent declarations and includes -#if defined(__OS_IRIX_) -#include -#include -#include -#include -#include -#include -#include - -pid_t string_thread; - -#elif defined(__OS_Linux_) +#if (defined(__OS_IRIX_) || defined(__OS_Linux_)) #include #include #include @@ -39,13 +41,10 @@ unsigned long string_thread; #endif -// The thread function definition protocols are slightly -// different under Irix, Linux, and Windoze. -#if defined(__OS_IRIX_) +// The thread function protocols are slightly different +// under Windoze ... but of course! -void newStringByPipe(void *) - -#elif defined(__OS_Linux_) +#if (defined(__OS_IRIX_) || defined(__OS_Linux_)) void *newStringByPipe(void *) @@ -86,14 +85,15 @@ void newStringByPipe(void *) // Free inputString. for ( i=0;i make + +to compile and then + +> GUIRaga + +to have fun and achieve inner peace. + +If you ask me, I think this band needs a flute player too. If you like, team up and see if you can add the flute model to the project. This requires adding a few files to the Makefile, a few lines to the ragamat.cpp file (including how the flute player should play, etc.), and another slider to the TCL script to control the flute's contributions. This might only run on the fastest machines once you've added the flute. + +Since latency isn't much of an issue in raga-land, you might bump up the RT_BUFFER_SIZE in Object.h to something around 1024, depending on the speed of your machine. If you don't have the GNU makefile utilities on your system, take a look at one of the system-specific makefiles (example: Makefile.sgi) in the syntmono directory to see what changes you need to make. + +All is Bliss... +All is Bliss... diff --git a/ragamatic/Sitar1.cpp b/ragamatic/Sitar1.cpp new file mode 100644 index 0000000..1ed7ede --- /dev/null +++ b/ragamatic/Sitar1.cpp @@ -0,0 +1,100 @@ + /******************************************/ +/* Karplus-Strong Sitar1 string model */ +/* by Perry Cook, 1995-96 */ +/* */ +/* There exist at least two patents, */ +/* assigned to Stanford, bearing the */ +/* names of Karplus and/or Strong. */ +/******************************************/ + +#include "Sitar1.h" + +Sitar1 :: Sitar1(MY_FLOAT lowestFreq) +{ + length = (long) (SRATE / lowestFreq + 1); + loopGain = (MY_FLOAT) 0.999; + loopFilt = new OneZero(); + loopFilt->setCoeff(0.01); + delayLine = new DLineA(length); + delay = length/2; + delayTarg = delay; + envelope = new ADSR(); + noise = new Noise; + envelope->setAllTimes(0.001,0.04,0.0,0.5); + this->clear(); +} + +Sitar1 :: ~Sitar1() +{ + delete loopFilt; + delete delayLine; + delete envelope; + delete noise; +} + +void Sitar1 :: clear() +{ + loopFilt->clear(); + delayLine->clear(); +} + +void Sitar1 :: setFreq(MY_FLOAT frequency) +{ + delayTarg = (SRATE / frequency); + delay = delayTarg * (1.0 + (0.05 * noise->tick())); + delayLine->setDelay(delay); + loopGain = (MY_FLOAT) 0.995 + (frequency * (MY_FLOAT) 0.000001); + if (loopGain>1.0) loopGain = (MY_FLOAT) 0.9995; +} + +void Sitar1 :: pluck(MY_FLOAT amplitude) +{ + envelope->keyOn(); +} + +void Sitar1 :: noteOn(MY_FLOAT freq, MY_FLOAT amp) +{ + this->setFreq(freq); + this->pluck(amp); + amPluck = 0.05 * amp; +#if defined(_debug_) + printf("Sitar1 : NoteOn: Freq=%lf Amp=%lf\n",freq,amp); +#endif +} + +void Sitar1 :: noteOff(MY_FLOAT amp) +{ + loopGain = (MY_FLOAT) 1.0 - amp; +#if defined(_debug_) + printf("Sitar1 : NoteOff: Amp=%lf\n",amp); +#endif +} + +MY_FLOAT Sitar1 :: tick() +{ + MY_FLOAT temp; + + temp = delayLine->lastOut(); + if (fabs(temp) > 1.0) { + loopGain = 0.1; + this->noteOff(0.9); + delay = delayTarg; + delayLine->setDelay(delay); + } + + temp *= loopGain; + + if (fabs(delayTarg - delay) > 0.001) { + if (delayTarg < delay) + delay *= 0.99999; + else + delay *= 1.00001; + delayLine->setDelay(delay); + } + + lastOutput = delayLine->tick(loopFilt->tick(temp) + + (amPluck * envelope->tick() * noise->tick())); + + return lastOutput; +} + diff --git a/ragamatic/Sitar1.h b/ragamatic/Sitar1.h new file mode 100644 index 0000000..10cca20 --- /dev/null +++ b/ragamatic/Sitar1.h @@ -0,0 +1,43 @@ +/******************************************/ +/* Karplus-Strong Sitar1 string model */ +/* by Perry Cook, 1995-96 */ +/* */ +/* There exist at least two patents, */ +/* assigned to Stanford, bearing the */ +/* names of Karplus and/or Strong. */ +/******************************************/ + +#if !defined(__Sitar1_h) +#define __Sitar1_h + +#include "../STK/Instrmnt.h" +#include "../STK/DLineA.h" +#include "../STK/OneZero.h" +#include "../STK/ADSR.h" +#include "../STK/Noise.h" + +class Sitar1 : public Instrmnt +{ +protected: + DLineA *delayLine; + OneZero *loopFilt; + ADSR *envelope; + Noise *noise; + long length; + MY_FLOAT loopGain; + MY_FLOAT amPluck; + MY_FLOAT delay; + MY_FLOAT delayTarg; +public: + Sitar1(MY_FLOAT lowestFreq); + ~Sitar1(); + void clear(); + virtual void setFreq(MY_FLOAT frequency); + void pluck(MY_FLOAT amplitude); + virtual void noteOn(MY_FLOAT freq, MY_FLOAT amp); + virtual void noteOff(MY_FLOAT amp); + virtual MY_FLOAT tick(); +}; + +#endif + diff --git a/ragamatic/StrDrone.cpp b/ragamatic/StrDrone.cpp new file mode 100644 index 0000000..5310048 --- /dev/null +++ b/ragamatic/StrDrone.cpp @@ -0,0 +1,77 @@ + /******************************************/ +/* Karplus-Strong StrDrone string model */ +/* by Perry Cook, 1995-96 */ +/* */ +/* There exist at least two patents, */ +/* assigned to Stanford, bearing the */ +/* names of Karplus and/or Strong. */ +/******************************************/ + +#include "StrDrone.h" + +StrDrone :: StrDrone(MY_FLOAT lowestFreq) +{ + length = (long) (SRATE / lowestFreq + 1); + loopGain = (MY_FLOAT) 0.999; + loopFilt = new OneZero(); + delayLine = new DLineA(length); + envelope = new ADSR(); + noise = new Noise; + envelope->setAllTimes(2.0,0.5,0.0,0.5); + this->clear(); +} + +StrDrone :: ~StrDrone() +{ + delete loopFilt; + delete delayLine; + delete envelope; + delete noise; +} + +void StrDrone :: clear() +{ + loopFilt->clear(); + delayLine->clear(); +} + +void StrDrone :: setFreq(MY_FLOAT frequency) +{ + MY_FLOAT delay; + delay = (SRATE / frequency); + delayLine->setDelay(delay - 0.5); + loopGain = (MY_FLOAT) 0.997 + (frequency * (MY_FLOAT) 0.000002); + if (loopGain>1.0) loopGain = (MY_FLOAT) 0.99999; +} + +void StrDrone :: pluck(MY_FLOAT amplitude) +{ + envelope->keyOn(); +} + +void StrDrone :: noteOn(MY_FLOAT freq, MY_FLOAT amp) +{ + this->setFreq(freq); + this->pluck(amp); +#if defined(_debug_) + printf("StrDrone : NoteOn: Freq=%lf Amp=%lf\n",freq,amp); +#endif +} + +void StrDrone :: noteOff(MY_FLOAT amp) +{ + loopGain = (MY_FLOAT) 1.0 - amp; +#if defined(_debug_) + printf("StrDrone : NoteOff: Amp=%lf\n",amp); +#endif +} + +MY_FLOAT StrDrone :: tick() +{ + /* check this out */ + /* here's the whole inner loop of the instrument!! */ + lastOutput = delayLine->tick(loopFilt->tick((delayLine->lastOut() * loopGain)) + + (0.005 * envelope->tick() * noise->tick())); + return lastOutput; +} + diff --git a/ragamatic/StrDrone.h b/ragamatic/StrDrone.h new file mode 100644 index 0000000..4e7c062 --- /dev/null +++ b/ragamatic/StrDrone.h @@ -0,0 +1,40 @@ +/******************************************/ +/* Karplus-Strong StrDrone string model */ +/* by Perry Cook, 1995-96 */ +/* */ +/* There exist at least two patents, */ +/* assigned to Stanford, bearing the */ +/* names of Karplus and/or Strong. */ +/******************************************/ + +#if !defined(__StrDrone_h) +#define __StrDrone_h + +#include "../STK/Instrmnt.h" +#include "../STK/DLineA.h" +#include "../STK/OneZero.h" +#include "../STK/ADSR.h" +#include "../STK/Noise.h" + +class StrDrone : public Instrmnt +{ +protected: + DLineA *delayLine; + ADSR *envelope; + Noise *noise; + OneZero *loopFilt; + long length; + MY_FLOAT loopGain; +public: + StrDrone(MY_FLOAT lowestFreq); + ~StrDrone(); + void clear(); + virtual void setFreq(MY_FLOAT frequency); + void pluck(MY_FLOAT amplitude); + virtual void noteOn(MY_FLOAT freq, MY_FLOAT amp); + virtual void noteOff(MY_FLOAT amp); + virtual MY_FLOAT tick(); +}; + +#endif + diff --git a/ragamatic/Tabla.cpp b/ragamatic/Tabla.cpp new file mode 100644 index 0000000..4d99146 --- /dev/null +++ b/ragamatic/Tabla.cpp @@ -0,0 +1,155 @@ +/*******************************************/ +/* Master Class for Drum Synthesizer */ +/* by Perry R. Cook, 1995-96 */ +/* */ +/* This instrument contains a bunch of */ +/* RawWvIn objects, run through a bunch */ +/* of one-pole filters. All the */ +/* corresponding rawwave files have been */ +/* sampled at 22050 Hz. Thus, if the */ +/* compile-time SRATE = 22050, then */ +/* no interpolation is used. Otherwise, */ +/* the rawwave data is appropriately */ +/* interpolated for the current SRATE. */ +/* You can specify the maximum Polyphony */ +/* (maximum number of simultaneous voices)*/ +/* in a #define in the .h file. */ +/* */ +/* Modified for RawWvIn class */ +/* by Gary P. Scavone (4/99) */ +/*******************************************/ + +#include "Tabla.h" +#include + +Tabla :: Tabla() : Instrmnt() +{ + int i; + + for (i=0;iclear(); /* then */ + tempWv = waves[0]; + tempFilt = filters[0]; + for (i=0;isetRate((MY_FLOAT) (22050.0/SRATE)); + } + waves[numSounding-1]->normalize((MY_FLOAT) 0.4); + filters[numSounding-1]->setPole((MY_FLOAT) 0.999 - ((MY_FLOAT) vel * NORM_7 * 0.6)); + filters[numSounding-1]->setGain(vel / (MY_FLOAT) 128.0); + } + else { + waves[notDone]->reset(); + filters[notDone]->setPole((MY_FLOAT) 0.999 - ((MY_FLOAT) vel * NORM_7 * 0.6)); + filters[notDone]->setGain(vel / (MY_FLOAT) 128.0); + } + +#if defined(_debug_) + printf("Number Sounding = %i\n",numSounding); + for (i=0;itick(waves[i]->lastOut()); + if (waves[i]->informTick() == 1) { + delete waves[i]; + tempFilt = filters[i]; + + for (j=i;jclear(); + sounding[j] = -1; + numSounding -= 1; + i -= 1; + } + i++; + } + return output; +} diff --git a/ragamatic/Tabla.h b/ragamatic/Tabla.h new file mode 100644 index 0000000..5a7102d --- /dev/null +++ b/ragamatic/Tabla.h @@ -0,0 +1,46 @@ +/*******************************************/ +/* Master Class for Drum Synthesizer */ +/* by Perry R. Cook, 1995-96 */ +/* */ +/* This instrument contains a bunch of */ +/* RawWvIn objects, run through a bunch */ +/* of one-pole filters. All the */ +/* corresponding rawwave files have been */ +/* sampled at 22050 Hz. Thus, if the */ +/* compile-time SRATE = 22050, then */ +/* no interpolation is used. Otherwise, */ +/* the rawwave data is appropriately */ +/* interpolated for the current SRATE. */ +/* You can specify the maximum Polyphony */ +/* (maximum number of simultaneous voices)*/ +/* in a #define in the .h file. */ +/* */ +/* Modified for RawWvIn class */ +/* by Gary P. Scavone (4/99) */ +/*******************************************/ + +#if !defined(__Tabla_h) +#define __Tabla_h + +#include "../STK/Instrmnt.h" +#include "../STK/RawWvIn.h" +#include "../STK/OnePole.h" + +#define TABLA_NUMWAVES 15 +#define TABLA_POLYPHONY 4 + +class Tabla : public Instrmnt +{ +protected: + RawWvIn *waves[TABLA_POLYPHONY]; + OnePole *filters[TABLA_POLYPHONY]; + int sounding[TABLA_POLYPHONY]; + int numSounding; +public: + Tabla(); + ~Tabla(); + virtual void noteOn(MY_FLOAT freq, MY_FLOAT amp); + virtual MY_FLOAT tick(); +}; + +#endif diff --git a/ragamatic/VoicDrum.cpp b/ragamatic/VoicDrum.cpp new file mode 100644 index 0000000..a68201c --- /dev/null +++ b/ragamatic/VoicDrum.cpp @@ -0,0 +1,152 @@ +/*******************************************/ +/* Master Class for Drum Synthesizer */ +/* by Perry R. Cook, 1995-96 */ +/* */ +/* This instrument contains a bunch of */ +/* RawWvIn objects, run through a bunch */ +/* of one-pole filters. All the */ +/* corresponding rawwave files have been */ +/* sampled at 22050 Hz. Thus, if the */ +/* compile-time SRATE = 22050, then */ +/* no interpolation is used. Otherwise, */ +/* the rawwave data is appropriately */ +/* interpolated for the current SRATE. */ +/* You can specify the maximum Polyphony */ +/* (maximum number of simultaneous voices)*/ +/* in a #define in the .h file. */ +/* */ +/* Modified for RawWvIn class */ +/* by Gary P. Scavone (4/99) */ +/*******************************************/ + +#include "VoicDrum.h" +#include + +VoicDrum :: VoicDrum() : Instrmnt() +{ + int i; + + for (i=0;iclear(); /* then */ + tempWv = waves[0]; + tempFilt = filters[0]; + for (i=0;isetRate((MY_FLOAT) (22050.0/SRATE)); + } + waves[numSounding-1]->normalize((MY_FLOAT) 0.4); + filters[numSounding-1]->setPole((MY_FLOAT) 0.999 - ((MY_FLOAT) vel * NORM_7 * 0.6)); + filters[numSounding-1]->setGain(vel / (MY_FLOAT) 128.0); + } + else { + waves[notDone]->reset(); + filters[notDone]->setPole((MY_FLOAT) 0.999 - ((MY_FLOAT) vel * NORM_7 * 0.6)); + filters[notDone]->setGain(vel / (MY_FLOAT) 128.0); + } + +#if defined(_debug_) + printf("Number Sounding = %i\n",numSounding); + for (i=0;itick(waves[i]->lastOut()); + if (waves[i]->informTick() == 1) { + delete waves[i]; + tempFilt = filters[i]; + + for (j=i;jclear(); + sounding[j] = -1; + numSounding -= 1; + i -= 1; + } + i++; + } + return output; +} diff --git a/ragamatic/VoicDrum.h b/ragamatic/VoicDrum.h new file mode 100644 index 0000000..103d477 --- /dev/null +++ b/ragamatic/VoicDrum.h @@ -0,0 +1,46 @@ +/*******************************************/ +/* Master Class for Drum Synthesizer */ +/* by Perry R. Cook, 1995-96 */ +/* */ +/* This instrument contains a bunch of */ +/* RawWvIn objects, run through a bunch */ +/* of one-pole filters. All the */ +/* corresponding rawwave files have been */ +/* sampled at 22050 Hz. Thus, if the */ +/* compile-time SRATE = 22050, then */ +/* no interpolation is used. Otherwise, */ +/* the rawwave data is appropriately */ +/* interpolated for the current SRATE. */ +/* You can specify the maximum Polyphony */ +/* (maximum number of simultaneous voices)*/ +/* in a #define in the .h file. */ +/* */ +/* Modified for RawWvIn class */ +/* by Gary P. Scavone (4/99) */ +/*******************************************/ + +#if !defined(__VoicDrum_h) +#define __VoicDrum_h + +#include "../STK/Instrmnt.h" +#include "../STK/RawWvIn.h" +#include "../STK/OnePole.h" + +#define DRUM_NUMWAVES 11 +#define DRUM_POLYPHONY 4 + +class VoicDrum : public Instrmnt +{ +protected: + RawWvIn *waves[DRUM_POLYPHONY]; + OnePole *filters[DRUM_POLYPHONY]; + int sounding[DRUM_POLYPHONY]; + int numSounding; +public: + VoicDrum(); + ~VoicDrum(); + virtual void noteOn(MY_FLOAT freq, MY_FLOAT amp); + virtual MY_FLOAT tick(); +}; + +#endif diff --git a/ragamatic/miditabl.h b/ragamatic/miditabl.h new file mode 100644 index 0000000..8938646 --- /dev/null +++ b/ragamatic/miditabl.h @@ -0,0 +1,19 @@ +#include "../STK/Object.h" + +double __MIDI_To_Pitch[128] = { +8.18,8.66,9.18,9.72,10.30,10.91,11.56,12.25, +12.98,13.75,14.57,15.43,16.35,17.32,18.35,19.45, +20.60,21.83,23.12,24.50,25.96,27.50,29.14,30.87, +32.70,34.65,36.71,38.89,41.20,43.65,46.25,49.00, +51.91,55.00,58.27,61.74,65.41,69.30,73.42,77.78, +82.41,87.31,92.50,98.00,103.83,110.00,116.54,123.47, +130.81,138.59,146.83,155.56,164.81,174.61,185.00,196.00, +207.65,220.00,233.08,246.94,261.63,277.18,293.66,311.13, +329.63,349.23,369.99,392.00,415.30,440.00,466.16,493.88, +523.25,554.37,587.33,622.25,659.26,698.46,739.99,783.99, +830.61,880.00,932.33,987.77,1046.50,1108.73,1174.66,1244.51, +1318.51,1396.91,1479.98,1567.98,1661.22,1760.00,1864.66,1975.53, +2093.00,2217.46,2349.32,2489.02,2637.02,2793.83,2959.96,3135.96, +3322.44,3520.00,3729.31,3951.07,4186.01,4434.92,4698.64,4978.03, +5274.04,5587.65,5919.91,6271.93,6644.88,7040.00,7458.62,7902.13, +8372.02,8869.84,9397.27,9956.06,10548.08,11175.30,11839.82,12543.85}; diff --git a/ragamatic/ragamat.cpp b/ragamatic/ragamat.cpp new file mode 100644 index 0000000..7b18d6a --- /dev/null +++ b/ragamatic/ragamat.cpp @@ -0,0 +1,262 @@ +/************** Test Main Program Individual Voice *********************/ + +#include "../STK/WvOut.h" +#include "../STK/RTWvOut.h" +#include "../STK/SKINI11.h" +#include "../STK/SKINI11.msg" +#include "../STK/Instrmnt.h" +#include "../STK/Reverb.h" +#include "../STK/NRev.h" +#include "../STK/PRCRev.h" +#include "../STK/JCRev.h" +#include "StrDrone.h" +#include "Sitar1.h" +#include "Tabla.h" +#include "VoicDrum.h" +#include "miditabl.h" + +#define RATE_NORM (MY_FLOAT) (22050.0/SRATE) + +int numStrings = 0; +int notDone = 1; +char **inputString; + +// The input command pipe and socket threads are defined in threads.cpp. +#include "threads.h" + +// Return random float between 0.0 and max +MY_FLOAT float_random(MY_FLOAT max) { + MY_FLOAT temp; +#if defined(__OS_Win_) /* For Windoze */ + temp = (MY_FLOAT) (rand() * max); + temp *= ONE_OVER_RANDLIMIT; +#else /* This is for unix */ + temp = (MY_FLOAT) (random() * max); + temp *= ONE_OVER_RANDLIMIT; +#endif + return temp; +} + +void usage(void) { + /* Error function in case of incorrect command-line argument specifications */ + printf("\nuseage: ragamat flag \n"); + printf(" where flag = -ip for realtime SKINI input by pipe\n"); + printf(" (won't work under Win95/98),\n"); + printf(" and flag = -is for realtime SKINI input by socket.\n"); + exit(0); +} + +int main(int argc,char *argv[]) +{ + long i, j, synlength; + int type, outOne = 0, useSocket = 0; + MY_FLOAT reverbTime = 5.0; /* in seconds */ + MY_FLOAT byte3, outSample, temp; + MY_FLOAT drone_prob = 0.01, note_prob = 0.0; + MY_FLOAT drum_prob = 0.0, voic_prob = 0.0; + MY_FLOAT droneFreqs[3] = {55.0,82.5,220.0}; + int tempo = 3000; + int counter = 3000; + int key = 0; + int ragaStep, ragaPoint = 6, voicNote; + int ragaUp[2][13] = {{57, 60, 62, 64, 65, 68, 69, 71, 72, 76, 77, 81}, + {52, 54, 55, 57, 59, 60, 63, 64, 66, 67, 71, 72}}; + int ragaDown[2][13] = {{57, 60, 62, 64, 65, 67, 69, 71, 72, 76, 79, 81}, + {48, 52, 53, 55, 57, 59, 60, 64, 66, 68, 70, 72}}; + WvOut *output; + Instrmnt *drones[3]; + Instrmnt *sitar; + Instrmnt *voicDrums; + Instrmnt *drums; + Reverb *reverbs[2]; + SKINI11 *score; + + if (argc != 2) usage(); + + if (!strcmp(argv[1],"-is") ) + useSocket = 1; + else if (strcmp(argv[1],"-ip")) { + usage(); + } + + output = new RTWvOut(SRATE,1); + + drones[0] = new StrDrone(50.0); + drones[1] = new StrDrone(50.0); + drones[2] = new StrDrone(50.0); + sitar = new Sitar1(50.0); + voicDrums = new VoicDrum(); + drums = new Tabla(); + + score = new SKINI11(); + reverbs[0] = new JCRev(reverbTime); + reverbs[0]->setEffectMix(0.5); + reverbs[1] = new JCRev(2.0); + reverbs[1]->setEffectMix(0.2); + + // Start the input thread + if (useSocket) + startSocketThread(); + else + startPipeThread(); + + drones[0]->noteOn(droneFreqs[0],0.1); + drones[1]->noteOn(droneFreqs[1],0.1); + drones[2]->noteOn(droneFreqs[2],0.1); + + for (i=0;itick(); + output->tick(reverbs[0]->tick(outSample)); + } + + /* Finally ... the runtime loop begins! */ + notDone = 1; + synlength = RT_BUFFER_SIZE; + while(notDone || numStrings) { + if (numStrings > 1) synlength = (long) RT_BUFFER_SIZE / numStrings; + else synlength = RT_BUFFER_SIZE; + for ( i=0; itick(); + outSample -= sitar->tick(); + output->tick(reverbs[0]->tick(outSample) + + reverbs[1]->tick(voicDrums->tick() + drums->tick())); + counter -= 1; + if (counter == 0) { + counter = (int) (tempo / RATE_NORM); + if (float_random(1.0) < drone_prob) + drones[0]->noteOn(droneFreqs[0],0.1); + if (float_random(1.0) < drone_prob) + drones[1]->noteOn(droneFreqs[1],0.1); + if (float_random(1.0) < drone_prob) + drones[2]->noteOn(droneFreqs[2],0.1); + if (float_random(1.0) < note_prob) { + if ((temp = float_random(1.0)) < 0.1) + ragaStep = 0; + else if (temp < 0.5) + ragaStep = 1; + else + ragaStep = -1; + ragaPoint += ragaStep; + if (ragaPoint < 0) + ragaPoint -= (2*ragaStep); + if (ragaPoint > 11) + ragaPoint = 11; + if (ragaStep > 0) + sitar->noteOn(__MIDI_To_Pitch[ragaUp[key][ragaPoint]] + ,0.05 + float_random(0.3)); + else + sitar->noteOn(__MIDI_To_Pitch[ragaDown[key][ragaPoint]] + ,0.05 + float_random(0.3)); + } + if (float_random(1.0) < voic_prob) { + voicNote = (int) float_random(11); + voicDrums->noteOn(voicNote,0.3 + (0.4 * drum_prob) + + float_random(0.9 * voic_prob)); + } + if (float_random(1.0) < drum_prob) { + voicNote = (int) float_random(TABLA_NUMWAVES); + drums->noteOn(voicNote,0.2 + (0.2 * drum_prob) + + float_random(0.7 * drum_prob)); + } + } + } + if (numStrings) { + score->parseThis(inputString[outOne]); + type = score->getType(); + if (type > 0) { + if (type == __SK_ControlChange_) { + j = (int) score->getByteTwo(); + byte3 = score->getByteThree(); + if (j == 1) { + drone_prob = byte3 * NORM_7; + } + else if (j == 2) { + note_prob = byte3 * NORM_7; + } + else if (j == 4) { + voic_prob = byte3 * NORM_7; + } + else if (j == 11) { + drum_prob = byte3 * NORM_7; + } + else if (j == 7) { + tempo = (int) (11025 - (byte3 * 70)); + } + else if (j == 64) { + if (byte3 == 0) { + key = 1; + droneFreqs[0] = 55.0; + droneFreqs[1] = 82.5; + droneFreqs[2] = 220.0; + } + else { + key = 0; + droneFreqs[0] = 82.5; + droneFreqs[1] = 123.5; + droneFreqs[2] = 330.0; + } + } + } + } + outOne += 1; + if (outOne == MAX_IN_STRINGS) outOne = 0; + numStrings--; + } + } + + printf("What Need Have I for This?\n"); + drones[1]->noteOn(droneFreqs[1],0.1); + for (i=0;itick(); + output->tick(reverbs[0]->tick(outSample)); + } + printf("What Need Have I for This?\n"); + drones[2]->noteOn(droneFreqs[2],0.1); + for (i=0;itick(); + output->tick(reverbs[0]->tick(outSample)); + } + printf("RagaMatic finished ... \n"); + drones[0]->noteOn(droneFreqs[0],0.1); + for (i=0;itick(); + output->tick(reverbs[0]->tick(outSample)); + } + printf("All is Bliss ...\n"); + for (i=0;itick(); + output->tick(reverbs[0]->tick(outSample)); + } + printf("All is Bliss ...\n"); + for (i=0;itick(); + output->tick(reverbs[0]->tick(outSample)); + } + + delete output; + delete score; + delete drones[0]; + delete drones[1]; + delete drones[2]; + delete sitar; + delete drums; + delete voicDrums; + delete reverbs[0]; + delete reverbs[1]; + + return 0; +} diff --git a/ragamatic/ragamat.dsp b/ragamatic/ragamat.dsp new file mode 100755 index 0000000..b31e8a0 --- /dev/null +++ b/ragamatic/ragamat.dsp @@ -0,0 +1,306 @@ +# Microsoft Developer Studio Project File - Name="ragamatic" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 5.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=ragamatic - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "ragamat.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "ragamat.mak" CFG="ragamatic - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "ragamatic - Win32 Release" (based on\ + "Win32 (x86) Console Application") +!MESSAGE "ragamatic - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "ragamatic - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "__OS_Win_" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib dsound.lib winmm.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "ragamatic - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /Gm /GX /Zi /Od /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "__OS_Win_" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib dsound.lib winmm.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "ragamatic - Win32 Release" +# Name "ragamatic - Win32 Debug" +# Begin Source File + +SOURCE=..\Stk\ADSR.cpp +# End Source File +# Begin Source File + +SOURCE=..\Stk\ADSR.h +# End Source File +# Begin Source File + +SOURCE=..\Stk\DLineA.cpp +# End Source File +# Begin Source File + +SOURCE=..\Stk\DLineA.h +# End Source File +# Begin Source File + +SOURCE=..\Stk\DLineL.cpp +# End Source File +# Begin Source File + +SOURCE=..\Stk\DLineL.h +# End Source File +# Begin Source File + +SOURCE=..\Stk\DLineN.cpp +# End Source File +# Begin Source File + +SOURCE=..\Stk\DLineN.h +# End Source File +# Begin Source File + +SOURCE=..\Stk\Envelope.cpp +# End Source File +# Begin Source File + +SOURCE=..\Stk\Envelope.h +# End Source File +# Begin Source File + +SOURCE=..\Stk\Filter.cpp +# End Source File +# Begin Source File + +SOURCE=..\Stk\Filter.h +# End Source File +# Begin Source File + +SOURCE=..\Stk\Instrmnt.cpp +# End Source File +# Begin Source File + +SOURCE=..\Stk\Instrmnt.h +# End Source File +# Begin Source File + +SOURCE=..\Stk\JCRev.cpp +# End Source File +# Begin Source File + +SOURCE=..\Stk\JCRev.h +# End Source File +# Begin Source File + +SOURCE=..\Stk\Noise.cpp +# End Source File +# Begin Source File + +SOURCE=..\Stk\Noise.h +# End Source File +# Begin Source File + +SOURCE=..\Stk\NRev.cpp +# End Source File +# Begin Source File + +SOURCE=..\Stk\NRev.h +# End Source File +# Begin Source File + +SOURCE=..\Stk\Object.cpp +# End Source File +# Begin Source File + +SOURCE=..\Stk\Object.h +# End Source File +# Begin Source File + +SOURCE=..\Stk\OnePole.cpp +# End Source File +# Begin Source File + +SOURCE=..\Stk\OnePole.h +# End Source File +# Begin Source File + +SOURCE=..\Stk\OneZero.cpp +# End Source File +# Begin Source File + +SOURCE=..\Stk\OneZero.h +# End Source File +# Begin Source File + +SOURCE=..\Stk\PRCRev.cpp +# End Source File +# Begin Source File + +SOURCE=..\Stk\PRCRev.h +# End Source File +# Begin Source File + +SOURCE=.\ragamat.cpp +# End Source File +# Begin Source File + +SOURCE=..\Stk\RawWvIn.cpp +# End Source File +# Begin Source File + +SOURCE=..\Stk\RawWvIn.h +# End Source File +# Begin Source File + +SOURCE=..\Stk\Reverb.cpp +# End Source File +# Begin Source File + +SOURCE=..\Stk\Reverb.h +# End Source File +# Begin Source File + +SOURCE=..\Stk\RTSoundIO.cpp +# End Source File +# Begin Source File + +SOURCE=..\Stk\RTSoundIO.h +# End Source File +# Begin Source File + +SOURCE=..\Stk\RTWvOut.cpp +# End Source File +# Begin Source File + +SOURCE=..\Stk\RTWvOut.h +# End Source File +# Begin Source File + +SOURCE=.\Sitar1.cpp +# End Source File +# Begin Source File + +SOURCE=.\Sitar1.h +# End Source File +# Begin Source File + +SOURCE=..\Stk\SKINI11.cpp +# End Source File +# Begin Source File + +SOURCE=..\Stk\SKINI11.h +# End Source File +# Begin Source File + +SOURCE=.\StrDrone.cpp +# End Source File +# Begin Source File + +SOURCE=.\StrDrone.h +# End Source File +# Begin Source File + +SOURCE=..\Stk\swapstuf.cpp +# End Source File +# Begin Source File + +SOURCE=..\Stk\swapstuf.h +# End Source File +# Begin Source File + +SOURCE=.\Tabla.cpp +# End Source File +# Begin Source File + +SOURCE=.\Tabla.h +# End Source File +# Begin Source File + +SOURCE=.\threads.cpp +# End Source File +# Begin Source File + +SOURCE=.\threads.h +# End Source File +# Begin Source File + +SOURCE=.\VoicDrum.cpp +# End Source File +# Begin Source File + +SOURCE=.\VoicDrum.h +# End Source File +# Begin Source File + +SOURCE=..\Stk\WvIn.cpp +# End Source File +# Begin Source File + +SOURCE=..\Stk\WvIn.h +# End Source File +# Begin Source File + +SOURCE=..\Stk\WvOut.cpp +# End Source File +# Begin Source File + +SOURCE=..\Stk\WvOut.h +# End Source File +# End Target +# End Project diff --git a/ragamatic/ragamat.plg b/ragamatic/ragamat.plg new file mode 100755 index 0000000..c872352 --- /dev/null +++ b/ragamatic/ragamat.plg @@ -0,0 +1,53 @@ +--------------------Configuration: ragamatic - Win32 Release-------------------- +Begining build with project "C:\gary\STKRelease\ragamatic\ragamat.dsp", at root. +Active configuration is Win32 (x86) Console Application (based on Win32 (x86) Console Application) + +Project's tools are: + "32-bit C/C++ Compiler for 80x86" with flags "/nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "__OS_Win_" /Fp"Release/ragamat.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c " + "Win32 Resource Compiler" with flags "/l 0x409 /d "NDEBUG" " + "Browser Database Maker" with flags "/nologo /o"ragamat.bsc" " + "COFF Linker for 80x86" with flags "kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib Wsock32.lib dsound.lib winmm.lib /nologo /subsystem:console /incremental:no /pdb:"ragamat.pdb" /machine:I386 /out:"ragamat.exe" " + "Custom Build" with flags "" + "" with flags "" + +Creating temp file "C:\WINDOWS\TEMP\RSP53A0.TMP" with contents +Creating command line "cl.exe @C:\WINDOWS\TEMP\RSP53A0.TMP" +Creating temp file "C:\WINDOWS\TEMP\RSP53A1.TMP" with contents +Creating command line "link.exe @C:\WINDOWS\TEMP\RSP53A1.TMP" +Compiling... +RTWvOut.cpp +Linking... + + + +ragamat.exe - 0 error(s), 0 warning(s) diff --git a/ragamatic/ragamatic.dsw b/ragamatic/ragamatic.dsw new file mode 100755 index 0000000..648f733 --- /dev/null +++ b/ragamatic/ragamatic.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 5.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "ragamatic"=.\ragamatic.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/ragamatic/rawwaves/DrDoi1.raw b/ragamatic/rawwaves/DrDoi1.raw new file mode 100644 index 0000000..12e35a3 Binary files /dev/null and b/ragamatic/rawwaves/DrDoi1.raw differ diff --git a/ragamatic/rawwaves/DrDoi2.raw b/ragamatic/rawwaves/DrDoi2.raw new file mode 100644 index 0000000..64f81cd Binary files /dev/null and b/ragamatic/rawwaves/DrDoi2.raw differ diff --git a/ragamatic/rawwaves/DrTak1.raw b/ragamatic/rawwaves/DrTak1.raw new file mode 100644 index 0000000..38d8301 Binary files /dev/null and b/ragamatic/rawwaves/DrTak1.raw differ diff --git a/ragamatic/rawwaves/DrTak2.raw b/ragamatic/rawwaves/DrTak2.raw new file mode 100644 index 0000000..6ccbc8b Binary files /dev/null and b/ragamatic/rawwaves/DrTak2.raw differ diff --git a/ragamatic/rawwaves/Drdak2.raw b/ragamatic/rawwaves/Drdak2.raw new file mode 100644 index 0000000..5e93191 Binary files /dev/null and b/ragamatic/rawwaves/Drdak2.raw differ diff --git a/ragamatic/rawwaves/Drdak3.raw b/ragamatic/rawwaves/Drdak3.raw new file mode 100644 index 0000000..a5e2c1c Binary files /dev/null and b/ragamatic/rawwaves/Drdak3.raw differ diff --git a/ragamatic/rawwaves/Drdak4.raw b/ragamatic/rawwaves/Drdak4.raw new file mode 100644 index 0000000..10635f6 Binary files /dev/null and b/ragamatic/rawwaves/Drdak4.raw differ diff --git a/ragamatic/rawwaves/Drddak1.raw b/ragamatic/rawwaves/Drddak1.raw new file mode 100644 index 0000000..f65d132 Binary files /dev/null and b/ragamatic/rawwaves/Drddak1.raw differ diff --git a/ragamatic/rawwaves/Drdee1.raw b/ragamatic/rawwaves/Drdee1.raw new file mode 100644 index 0000000..c658936 Binary files /dev/null and b/ragamatic/rawwaves/Drdee1.raw differ diff --git a/ragamatic/rawwaves/Drdee2.raw b/ragamatic/rawwaves/Drdee2.raw new file mode 100644 index 0000000..3ca7c6a Binary files /dev/null and b/ragamatic/rawwaves/Drdee2.raw differ diff --git a/ragamatic/rawwaves/Drdoo1.raw b/ragamatic/rawwaves/Drdoo1.raw new file mode 100644 index 0000000..5b17c9f Binary files /dev/null and b/ragamatic/rawwaves/Drdoo1.raw differ diff --git a/ragamatic/rawwaves/Drdoo2.raw b/ragamatic/rawwaves/Drdoo2.raw new file mode 100644 index 0000000..5d2eb82 Binary files /dev/null and b/ragamatic/rawwaves/Drdoo2.raw differ diff --git a/ragamatic/rawwaves/Drdoo3.raw b/ragamatic/rawwaves/Drdoo3.raw new file mode 100644 index 0000000..4e45989 Binary files /dev/null and b/ragamatic/rawwaves/Drdoo3.raw differ diff --git a/ragamatic/rawwaves/Drjun1.raw b/ragamatic/rawwaves/Drjun1.raw new file mode 100644 index 0000000..598bf86 Binary files /dev/null and b/ragamatic/rawwaves/Drjun1.raw differ diff --git a/ragamatic/rawwaves/Drjun2.raw b/ragamatic/rawwaves/Drjun2.raw new file mode 100644 index 0000000..26e69e2 Binary files /dev/null and b/ragamatic/rawwaves/Drjun2.raw differ diff --git a/ragamatic/rawwaves/ahh.raw b/ragamatic/rawwaves/ahh.raw new file mode 100644 index 0000000..dda5f55 Binary files /dev/null and b/ragamatic/rawwaves/ahh.raw differ diff --git a/ragamatic/rawwaves/bassdrum.raw b/ragamatic/rawwaves/bassdrum.raw new file mode 100644 index 0000000..16b1ece Binary files /dev/null and b/ragamatic/rawwaves/bassdrum.raw differ diff --git a/ragamatic/rawwaves/bee1.raw b/ragamatic/rawwaves/bee1.raw new file mode 100644 index 0000000..74571b2 Binary files /dev/null and b/ragamatic/rawwaves/bee1.raw differ diff --git a/ragamatic/rawwaves/britestk.raw b/ragamatic/rawwaves/britestk.raw new file mode 100644 index 0000000..4bf9ba6 Binary files /dev/null and b/ragamatic/rawwaves/britestk.raw differ diff --git a/ragamatic/rawwaves/cowbell1.raw b/ragamatic/rawwaves/cowbell1.raw new file mode 100644 index 0000000..4cd641f Binary files /dev/null and b/ragamatic/rawwaves/cowbell1.raw differ diff --git a/ragamatic/rawwaves/dee1.raw b/ragamatic/rawwaves/dee1.raw new file mode 100644 index 0000000..ff2932a Binary files /dev/null and b/ragamatic/rawwaves/dee1.raw differ diff --git a/ragamatic/rawwaves/dee2.raw b/ragamatic/rawwaves/dee2.raw new file mode 100644 index 0000000..b7cd77c Binary files /dev/null and b/ragamatic/rawwaves/dee2.raw differ diff --git a/ragamatic/rawwaves/din1.raw b/ragamatic/rawwaves/din1.raw new file mode 100644 index 0000000..82a0bbc Binary files /dev/null and b/ragamatic/rawwaves/din1.raw differ diff --git a/ragamatic/rawwaves/fwavblnk.raw b/ragamatic/rawwaves/fwavblnk.raw new file mode 100644 index 0000000..14da074 Binary files /dev/null and b/ragamatic/rawwaves/fwavblnk.raw differ diff --git a/ragamatic/rawwaves/gun1.raw b/ragamatic/rawwaves/gun1.raw new file mode 100644 index 0000000..d5ef089 Binary files /dev/null and b/ragamatic/rawwaves/gun1.raw differ diff --git a/ragamatic/rawwaves/halfwave.raw b/ragamatic/rawwaves/halfwave.raw new file mode 100644 index 0000000..b34639b Binary files /dev/null and b/ragamatic/rawwaves/halfwave.raw differ diff --git a/ragamatic/rawwaves/hihatcym.raw b/ragamatic/rawwaves/hihatcym.raw new file mode 100644 index 0000000..f61389e Binary files /dev/null and b/ragamatic/rawwaves/hihatcym.raw differ diff --git a/ragamatic/rawwaves/impuls10.raw b/ragamatic/rawwaves/impuls10.raw new file mode 100644 index 0000000..e18689d Binary files /dev/null and b/ragamatic/rawwaves/impuls10.raw differ diff --git a/ragamatic/rawwaves/impuls20.raw b/ragamatic/rawwaves/impuls20.raw new file mode 100644 index 0000000..9d89aec Binary files /dev/null and b/ragamatic/rawwaves/impuls20.raw differ diff --git a/ragamatic/rawwaves/impuls40.raw b/ragamatic/rawwaves/impuls40.raw new file mode 100644 index 0000000..9a3619b Binary files /dev/null and b/ragamatic/rawwaves/impuls40.raw differ diff --git a/ragamatic/rawwaves/jun1.raw b/ragamatic/rawwaves/jun1.raw new file mode 100644 index 0000000..82105e5 Binary files /dev/null and b/ragamatic/rawwaves/jun1.raw differ diff --git a/ragamatic/rawwaves/jun2.raw b/ragamatic/rawwaves/jun2.raw new file mode 100644 index 0000000..ba5f53b Binary files /dev/null and b/ragamatic/rawwaves/jun2.raw differ diff --git a/ragamatic/rawwaves/makefunc.c b/ragamatic/rawwaves/makefunc.c new file mode 100644 index 0000000..9148919 --- /dev/null +++ b/ragamatic/rawwaves/makefunc.c @@ -0,0 +1,55 @@ +/**********************************************/ +/** Utility to make various functions **/ +/** like exponential and log gain curves. **/ +/** **/ +/** Included here: **/ +/** Yamaha TX81Z curves for master gain, **/ +/** Envelope Rates (in normalized units), **/ +/** envelope sustain level, and more.... **/ +/**********************************************/ + +#include +#include +#include + +void main() +{ + int i,j; + double temp; + double data[128]; + +/*************** TX81Z Master Gain *************/ + for (i=0;i<100;i++) { + data[i] = pow(2.0,-(99-i)/10.0); + } + data[0] = 0.0; + printf("double __FM4Op_gains[99] = {"); + for (i=0;i<100;i++) { + if (i%8 == 0) printf("\n"); + printf("%lf,",data[i]); + } + printf("};\n"); +/*************** TX81Z Sustain Level ***********/ + for (i=0;i<16;i++) { + data[i] = pow(2.0,-(15-i)/2.0); + } + data[0] = 0.0; + printf("double __FM4Op_susLevels[16] = {"); + for (i=0;i<16;i++) { + if (i%8 == 0) printf("\n"); + printf("%lf,",data[i]); + } + printf("};\n"); +/****************** Attack Rate ***************/ + for (i=0;i<32;i++) { + data[i] = 6.0 * pow(5.7,-(i-1)/5.0); + } + printf("double __FM4Op_attTimes[16] = {"); + for (i=0;i<32;i++) { + if (i%8 == 0) printf("\n"); + printf("%lf,",data[i]); + } + printf("};\n"); + exit(1); +} + diff --git a/ragamatic/rawwaves/makemidi.c b/ragamatic/rawwaves/makemidi.c new file mode 100644 index 0000000..de68d25 --- /dev/null +++ b/ragamatic/rawwaves/makemidi.c @@ -0,0 +1,33 @@ +/**********************************************/ +/** Utility to make various functions **/ +/** like exponential and log gain curves. **/ +/** Specifically for direct MIDI parameter **/ +/** conversions. **/ +/** Included here: **/ +/** A440 Referenced Equal Tempered Pitches **/ +/** as a function of MIDI note number. **/ +/** **/ +/**********************************************/ + +#include +#include +#include + +void main() +{ + int i,j; + double temp; + double data[128]; + +/********* Pitch as fn. of MIDI Note **********/ + + printf("double __MIDI_To_Pitch[128] = {"); + for (i=0;i<128;i++) { + if (i%8 == 0) printf("\n"); + temp = 220.0 * pow(2.0,((double) i - 57) / 12.0); + printf("%.2lf,",temp); + } + printf("};\n"); + exit(1); +} + diff --git a/ragamatic/rawwaves/makewavs.c b/ragamatic/rawwaves/makewavs.c new file mode 100644 index 0000000..ab52ed3 --- /dev/null +++ b/ragamatic/rawwaves/makewavs.c @@ -0,0 +1,116 @@ +/**********************************************/ +/** Utility to make various flavors of **/ +/** sine wave (rectified, etc), and **/ +/** other commonly needed waveforms, like **/ +/** triangles, ramps, etc. **/ +/** The files generated are all 16 bit **/ +/** linear signed integer, of length **/ +/** as defined by LENGTH below **/ +/**********************************************/ + +#include +#include +#include + +#define LENGTH 256 +#define PI 3.14159265358979323846 + +void main() +{ + int i,j; + double temp; + short data[LENGTH + 2]; + FILE *fd; + + /////////// Yer Basic TX81Z Waves, Including Sine /////////// + fd = fopen("halfwave.raw","wb"); + for (i=0;i +myExit + +proc myExit {} { + global outID + puts $outID [format "NoteOff 0.0 1 60 127"] + flush $outID + puts $outID [format "ExitProgram"] + flush $outID + close $outID + exit +} + +proc mellow {} { + global cont1 cont2 cont4 cont7 cont11 + set cont1 10.0 + set cont2 7.0 + set cont4 0.0 + set cont11 10.0 + set cont7 3.0 + printWhatz "ControlChange 0.0 1 " 1 $cont1 + printWhatz "ControlChange 0.0 1 " 2 $cont2 + printWhatz "ControlChange 0.0 1 " 4 $cont4 + printWhatz "ControlChange 0.0 1 " 7 $cont7 + printWhatz "ControlChange 0.0 1 " 11 $cont11 +} + +proc nicevibe {} { + global cont1 cont2 cont4 cont7 cont11 + set cont1 6.0 + set cont2 72.0 + set cont4 21.0 + set cont11 50.0 + set cont7 60.0 + printWhatz "ControlChange 0.0 1 " 1 $cont1 + printWhatz "ControlChange 0.0 1 " 2 $cont2 + printWhatz "ControlChange 0.0 1 " 4 $cont4 + printWhatz "ControlChange 0.0 1 " 7 $cont7 + printWhatz "ControlChange 0.0 1 " 11 $cont11 +} + +proc voicSolo {} { + global cont1 cont2 cont4 cont7 cont11 + set cont1 2.0 + set cont2 37.0 + set cont4 90.0 + set cont11 10.0 + set cont7 120.0 + printWhatz "ControlChange 0.0 1 " 1 $cont1 + printWhatz "ControlChange 0.0 1 " 2 $cont2 + printWhatz "ControlChange 0.0 1 " 4 $cont4 + printWhatz "ControlChange 0.0 1 " 7 $cont7 + printWhatz "ControlChange 0.0 1 " 11 $cont11 +} + +proc drumSolo {} { + global cont1 cont2 cont4 cont7 cont11 + set cont1 3.0 + set cont2 37.0 + set cont4 0.0 + set cont11 100.0 + set cont7 120.0 + printWhatz "ControlChange 0.0 1 " 1 $cont1 + printWhatz "ControlChange 0.0 1 " 2 $cont2 + printWhatz "ControlChange 0.0 1 " 4 $cont4 + printWhatz "ControlChange 0.0 1 " 7 $cont7 + printWhatz "ControlChange 0.0 1 " 11 $cont11 +} + +proc rockOut {} { + global cont1 cont2 cont4 cont7 cont11 + set cont1 1.0 + set cont2 97.0 + set cont4 52.0 + set cont11 120.0 + set cont7 123.0 + printWhatz "ControlChange 0.0 1 " 1 $cont1 + printWhatz "ControlChange 0.0 1 " 2 $cont2 + printWhatz "ControlChange 0.0 1 " 4 $cont4 + printWhatz "ControlChange 0.0 1 " 7 $cont7 + printWhatz "ControlChange 0.0 1 " 11 $cont11 +} + +proc raga {scale} { + global outID + puts $outID [format "ControlChange 0.0 1 64 %f" $scale] + flush $outID +} + +proc noteOn {pitchVal pressVal} { + global outID + puts $outID [format "NoteOn 0.0 1 %f %f" $pitchVal $pressVal] + flush $outID +} + +proc noteOff {pitchVal pressVal} { + global outID + puts $outID [format "NoteOff 0.0 1 %f %f" $pitchVal $pressVal] + flush $outID +} + +proc printWhatz {tag value1 value2 } { + global outID + puts $outID [format "%s %i %f" $tag $value1 $value2] + flush $outID +} + +frame .banner.butts -bg black + +frame .banner.butts.ragas -bg black +button .banner.butts.ragas.raga0 -text "Raga1" \ + -bg grey66 -command {raga 0} +button .banner.butts.ragas.raga1 -text "Raga2" \ + -bg grey66 -command {raga 1} + +frame .banner.butts.presets1 -bg black +button .banner.butts.presets1.warmup -text "Warmup" \ + -bg grey66 -command mellow +button .banner.butts.presets1.nicevibe -text "NiceVibe" \ + -bg grey66 -command nicevibe + +frame .banner.butts.presets2 -bg black +button .banner.butts.presets2.voicsolo -text "VoiceSolo" \ + -bg grey66 -command voicSolo +button .banner.butts.presets2.drumsolo -text "DrumSolo" \ + -bg grey66 -command drumSolo + +button .banner.butts.rockout -text "RockOut" \ + -bg grey66 -command rockOut + +button .banner.butts.noteOn -text "Cease Meditations and Exit" \ + -bg grey66 -command myExit + +frame .controls -bg black + +scale .controls.cont1 -from 0 -to 128 -length 300 \ +-command {printWhatz "ControlChange 0.0 1 " 1} \ +-orient horizontal -label "Drone Probability" \ +-tickinterval 32 -showvalue true -bg grey66 \ +-variable cont1 + +scale .controls.cont2 -from 0 -to 128 -length 300 \ +-command {printWhatz "ControlChange 0.0 1 " 2} \ +-orient horizontal -label "Sitar Probability" \ +-tickinterval 32 -showvalue true -bg grey66 \ +-variable cont2 + +scale .controls.cont4 -from 0 -to 128 -length 300 \ +-command {printWhatz "ControlChange 0.0 1 " 4} \ +-orient horizontal -label "Voice Drum Probability" \ +-tickinterval 32 -showvalue true -bg grey66 \ +-variable cont4 + +scale .controls.cont11 -from 0 -to 128 -length 300 \ +-command {printWhatz "ControlChange 0.0 1 " 11} \ +-orient horizontal -label "Tabla Probability" \ +-tickinterval 32 -showvalue true -bg grey66 \ +-variable cont11 + +scale .controls.cont7 -from 0 -to 128 -length 300 \ +-command {printWhatz "ControlChange 0.0 1 " 7} \ +-orient horizontal -label "Tempo" \ +-tickinterval 32 -showvalue true -bg grey66 \ +-variable cont7 + +pack .banner.top -pady 10 -padx 10 +pack .banner.bottom.ragamat -padx 5 -pady 5 +pack .banner.bottom -pady 10 + +pack .banner.butts.ragas.raga0 -side left +pack .banner.butts.ragas.raga1 -side left +pack .banner.butts.ragas +pack .banner.butts.presets1.warmup -side left +pack .banner.butts.presets1.nicevibe -side left +pack .banner.butts.presets1 +pack .banner.butts.presets2.voicsolo -side left +pack .banner.butts.presets2.drumsolo -side left +pack .banner.butts.presets2 +pack .banner.butts.rockout +pack .banner.butts.noteOn +pack .banner.butts -side left -padx 5 -pady 10 +pack .banner -side left + +pack .controls.cont1 -padx 10 -pady 10 +pack .controls.cont2 -padx 10 -pady 10 +pack .controls.cont4 -padx 10 -pady 10 +pack .controls.cont11 -padx 10 -pady 10 +pack .controls.cont7 -padx 10 -pady 10 + +pack .controls -side left -padx 10 -pady 10 + +# Socket connection procedure +set d .socketdialog + +proc setComm {} { + global outID + global commtype + global d + if {$commtype == "stdout"} { + if { [string compare "stdout" $outID] } { + set i [tk_dialog .dialog "Break Socket Connection?" {You are about to break an existing socket connection ... is this what you want to do?} "" 0 Cancel OK] + switch $i { + 0 {set commtype "socket"} + 1 {close $outID + set outID "stdout"} + } + } + } elseif { ![string compare "stdout" $outID] } { + set sockport 2001 + set sockhost localhost + toplevel $d + wm title $d "STK Client Socket Connection" + wm resizable $d 0 0 + grab $d + label $d.message -text "Specify a socket host and port number below (if different than the STK defaults shown) and then click the \"Connect\" button to invoke a socket-client connection attempt to the STK socket server." \ + -background white -font {Helvetica 10 bold} \ + -wraplength 3i -justify left + frame $d.sockhost + entry $d.sockhost.entry -width 15 + label $d.sockhost.text -text "Socket Host:" \ + -font {Helvetica 10 bold} + frame $d.sockport + entry $d.sockport.entry -width 15 + label $d.sockport.text -text "Socket Port:" \ + -font {Helvetica 10 bold} + pack $d.message -side top -padx 5 -pady 10 + pack $d.sockhost.text -side left -padx 1 -pady 2 + pack $d.sockhost.entry -side right -padx 5 -pady 2 + pack $d.sockhost -side top -padx 5 -pady 2 + pack $d.sockport.text -side left -padx 1 -pady 2 + pack $d.sockport.entry -side right -padx 5 -pady 2 + pack $d.sockport -side top -padx 5 -pady 2 + $d.sockhost.entry insert 0 $sockhost + $d.sockport.entry insert 0 $sockport + frame $d.buttons + button $d.buttons.cancel -text "Cancel" -bg grey66 \ + -command { set commtype "stdout" + set outID "stdout" + destroy $d } + button $d.buttons.connect -text "Connect" -bg grey66 \ + -command { + set sockhost [$d.sockhost.entry get] + set sockport [$d.sockport.entry get] + set err [catch {socket $sockhost $sockport} outID] + + if {$err == 0} { + destroy $d + } else { + tk_dialog $d.error "Socket Error" {Error: Unable to make socket connection. Make sure the STK socket server is first running and that the port number is correct.} "" 0 OK + } } + pack $d.buttons.cancel -side left -padx 5 -pady 10 + pack $d.buttons.connect -side right -padx 5 -pady 10 + pack $d.buttons -side bottom -padx 5 -pady 10 + } +} + diff --git a/ragamatic/tcl/bitmaps/prc.xbm b/ragamatic/tcl/bitmaps/prc.xbm new file mode 100644 index 0000000..e86d614 --- /dev/null +++ b/ragamatic/tcl/bitmaps/prc.xbm @@ -0,0 +1,101 @@ +#define prc_width 100 +#define prc_height 112 +static char prc_bits[] = { + 0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xb5,0x6a, + 0xad,0x55,0xfd,0xff,0xff,0xbf,0xaa,0x6a,0x6d,0x55,0xfd,0xff,0xff,0xff,0xff, + 0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd5,0xb6,0xb5,0xd5,0xff,0xff, + 0xff,0xff,0x6f,0xad,0xb5,0x6d,0xfb,0xbf,0xdf,0xdf,0xff,0xff,0xff,0x7f,0xff, + 0xff,0xff,0xff,0xbf,0xff,0xf6,0x75,0x7d,0xf5,0xff,0xff,0xf7,0xfb,0xff,0xd5, + 0xda,0xea,0xfd,0xbd,0xfe,0xef,0xff,0xff,0x7b,0xdf,0xae,0xff,0xff,0xff,0xbf, + 0xfe,0xef,0x57,0xbb,0xff,0xff,0xde,0xf5,0x75,0xfd,0xdb,0xb6,0xed,0xfb,0xbb, + 0xfd,0xef,0xff,0x57,0xab,0x2e,0x5b,0xf5,0xbf,0xff,0xdf,0xfe,0xee,0x57,0xfd, + 0x7f,0xab,0x6a,0x55,0xad,0xaa,0xff,0x6a,0xf5,0xfb,0x7b,0xfd,0xf7,0xff,0x75, + 0xad,0x6a,0xb5,0xa5,0xff,0xff,0x5f,0xff,0xde,0x57,0xfd,0x3f,0x95,0x55,0xab, + 0xd5,0xaa,0xfe,0x6f,0xfb,0xfd,0xb7,0xfd,0xff,0xaf,0x5a,0x55,0x55,0x55,0xab, + 0xfe,0xfb,0x6e,0xff,0xfb,0xaf,0xfe,0x5b,0x55,0x55,0x55,0x55,0xad,0xfa,0xbf, + 0xbb,0xfb,0xae,0xf5,0xff,0x6b,0x55,0x55,0xa9,0xaa,0x6a,0xf5,0xef,0xef,0xfd, + 0xfb,0xbf,0x7f,0xad,0x55,0x52,0x4a,0x55,0xb5,0xf6,0xbf,0xba,0xfe,0x6f,0xed, + 0xff,0x55,0xa5,0x4a,0xa5,0xaa,0x56,0xeb,0xff,0xef,0xfb,0xfb,0xf7,0x5f,0x5b, + 0x95,0x2a,0x29,0x55,0xd5,0xda,0xff,0xdd,0xfe,0xad,0xfd,0xbf,0x55,0x55,0x52, + 0xa5,0x54,0x55,0x6d,0xbf,0xbb,0xfb,0xff,0xef,0xef,0x56,0xaa,0x4a,0x95,0xaa, + 0xaa,0xb5,0xff,0xef,0xfe,0xd5,0xfa,0x5f,0x55,0x49,0xaa,0x54,0x55,0xb5,0xda, + 0xfe,0x7b,0xff,0xff,0xff,0xbf,0x55,0x55,0x55,0xaa,0xa4,0xaa,0x6d,0xff,0xaf, + 0xfb,0xd5,0xfa,0xef,0xaa,0xaa,0x24,0x45,0xaa,0xaa,0xd6,0xfe,0xfb,0xfe,0xff, + 0xff,0xbf,0xad,0x92,0xaa,0x28,0xa5,0xaa,0x7a,0xff,0xae,0xfb,0xda,0xfa,0xdf, + 0xaa,0x4a,0x45,0x55,0x29,0x55,0xd5,0xfe,0xfb,0xfe,0xf7,0xff,0x6f,0x55,0x55, + 0x28,0x82,0x94,0xaa,0xaa,0xff,0xaf,0xfb,0x7d,0xfd,0xbf,0x55,0x55,0x93,0x54, + 0x52,0xaa,0xf6,0xfe,0xff,0xfe,0xd7,0xff,0xdf,0xea,0x57,0x49,0x22,0xd5,0x75, + 0xab,0xff,0xb7,0xfb,0xfd,0xfd,0x6f,0xfd,0xff,0x2b,0x95,0x74,0xff,0x7d,0xff, + 0xef,0xff,0x6f,0xff,0xbf,0x6e,0x7f,0x95,0x40,0xda,0xff,0xaf,0xff,0xbf,0xfa, + 0xf5,0xfd,0x6f,0xff,0xef,0x5b,0x94,0xea,0xff,0x6f,0xff,0xef,0xff,0xbf,0xff, + 0xdf,0xba,0x7a,0xab,0x4a,0x74,0xbd,0xbf,0xff,0xff,0xfa,0xea,0xfd,0x6f,0xd7, + 0xaa,0x2a,0x21,0x95,0x67,0x7d,0xff,0xaf,0xff,0x7f,0xff,0xbf,0xad,0x5d,0xab, + 0x94,0xea,0xba,0xb6,0xff,0xf7,0xfb,0xda,0xfd,0xaf,0xf7,0xff,0x5d,0xaa,0x7a, + 0xdf,0xfb,0xfe,0xaf,0xfe,0x7d,0xff,0x6f,0x79,0xf7,0x6f,0x45,0xdf,0x77,0xad, + 0xff,0xff,0xfb,0xef,0xfb,0xdf,0xee,0x7f,0xbb,0x52,0xf7,0xfe,0xf7,0xff,0xaf, + 0xfe,0xf5,0xfe,0xaf,0xbe,0xbf,0xaf,0xaa,0xff,0xff,0xaf,0xfe,0xfb,0xfb,0xbf, + 0xff,0x77,0xfb,0xbe,0xf5,0xda,0xb6,0xff,0xdf,0xff,0xaf,0xfe,0xf5,0xf5,0xaf, + 0xbd,0x7f,0x5f,0xb7,0xdf,0xbe,0xaf,0xfe,0xfa,0xfb,0x7f,0xef,0xaf,0xd6,0xd4, + 0xb5,0xd9,0x75,0x6b,0x7b,0xff,0xaf,0xfe,0xd5,0xdf,0xb7,0x2a,0x6b,0xdf,0x6e, + 0xdf,0xad,0xad,0xbf,0xfa,0xfb,0x7e,0x6b,0x5f,0x55,0xbd,0xb5,0xaa,0xfb,0xb6, + 0xd6,0x7e,0x6f,0xff,0xeb,0xdd,0xaa,0xd5,0x52,0xd5,0x75,0xad,0xdb,0x5a,0xdb, + 0xbb,0xfb,0xff,0x6b,0xb7,0x6a,0x5f,0xad,0xae,0xf7,0x6e,0xab,0x76,0xed,0xfe, + 0x6a,0xaf,0x5d,0xb5,0x55,0x75,0xb3,0x95,0xb5,0x75,0xbb,0xbf,0xfb,0xff,0xbb, + 0xb6,0xda,0xaa,0xda,0xaa,0x5e,0xda,0xaa,0xd7,0xea,0xfe,0xdb,0xae,0xdb,0x4a, + 0x55,0xad,0xaa,0xb6,0xaa,0xaa,0x6e,0xbf,0xfb,0xf6,0xdb,0x56,0x55,0x8a,0x56, + 0xa5,0x7a,0x51,0x55,0xad,0xeb,0xfe,0xbf,0xbf,0x5b,0x55,0x51,0x55,0xa9,0xca, + 0xaa,0x6a,0xff,0xfe,0xfb,0xf5,0xd5,0x6f,0xab,0x8a,0xeb,0xa6,0xbf,0x45,0xad, + 0x5a,0x57,0xff,0xdf,0xff,0x5a,0x55,0x68,0xfd,0xfb,0x7f,0x93,0x6a,0xef,0xfb, + 0xfd,0x7b,0xb5,0x6e,0x95,0xaa,0xfe,0xef,0xdf,0x4d,0x52,0xbb,0xae,0xff,0xfe, + 0xdf,0xba,0x25,0x69,0xff,0xff,0xff,0x26,0xea,0xed,0xfb,0xfa,0x6b,0x75,0x5d, + 0x95,0xb4,0xff,0xff,0xff,0x5f,0xa9,0xd6,0xde,0xff,0xff,0x7f,0x6b,0x55,0xea, + 0xff,0xff,0xff,0x4f,0x6a,0xfb,0xfb,0xfd,0xb6,0xda,0xbd,0x2b,0xfd,0xff,0xff, + 0xff,0x7f,0xd5,0x6d,0x5f,0xff,0xdf,0xff,0xd6,0x94,0xfe,0xff,0xff,0xff,0xbf, + 0x6a,0xfb,0xf5,0xfb,0xf5,0xda,0x7d,0xab,0xfe,0xff,0xff,0xff,0xff,0xb4,0xbf, + 0xdf,0xfe,0x5f,0x7f,0xd7,0xaa,0xff,0xff,0xff,0xff,0xff,0xd6,0xfa,0xfb,0xff, + 0xfb,0xf7,0x7f,0xd5,0xff,0xff,0xff,0xff,0xff,0xe9,0xef,0x5e,0xfb,0x5f,0xbd, + 0xed,0xd5,0xff,0xff,0xff,0xff,0xff,0x5a,0xbf,0xf7,0xff,0xf6,0xef,0xbe,0xd6, + 0xff,0x7f,0x55,0xfd,0xff,0xea,0xfd,0xdf,0xfe,0xdf,0xfe,0x6b,0xd3,0xff,0xaa, + 0xb7,0xb7,0xff,0xb6,0xff,0xfa,0xff,0xfb,0x6b,0xff,0xda,0x5f,0xb7,0xd4,0xea, + 0x7e,0xea,0xdb,0x6f,0xfb,0x5f,0xff,0xad,0xd7,0xbf,0xfd,0xff,0xff,0xff,0xfd, + 0x7e,0xff,0xff,0xfb,0xd7,0xff,0xa9,0xd7,0xfe,0xff,0x5f,0x7d,0xd5,0xf7,0xbb, + 0xfd,0x6e,0xfb,0xb6,0xd6,0x6f,0xff,0xff,0xff,0x7e,0x7b,0xff,0xef,0xff,0xfb, + 0xaf,0xfb,0xdf,0xbf,0xfe,0xff,0xbf,0xfe,0xee,0xdd,0x7e,0xff,0x5f,0xfb,0xdf, + 0xea,0xbf,0xff,0xff,0xdf,0x7e,0xfb,0xfb,0xfb,0xfd,0xf7,0xdf,0xf6,0xbf,0xff, + 0xfe,0xff,0xaf,0xff,0xdd,0xff,0xdf,0xff,0xdf,0xf6,0xff,0xab,0xff,0xff,0xff, + 0xff,0x7f,0xff,0xbf,0xfd,0xfe,0xfb,0xbb,0xdb,0xfe,0xfe,0xfe,0xff,0xef,0xff, + 0xee,0xf6,0xef,0xff,0xdf,0xef,0xff,0xaf,0xff,0xff,0xff,0xff,0xff,0xf7,0xff, + 0xbe,0xfb,0xfd,0xfd,0xf6,0xfb,0xff,0xff,0xff,0xff,0x7f,0x5f,0xf7,0xfb,0xff, + 0xb7,0xd7,0xff,0xae,0xfe,0xff,0xff,0xff,0xff,0xbb,0xde,0xef,0xfe,0xff,0xff, + 0x9b,0xfa,0xff,0xff,0xff,0xff,0xbf,0xbd,0x7e,0xff,0xff,0xdb,0xf6,0x4f,0xef, + 0xfe,0xff,0xff,0xff,0xff,0xff,0xfa,0xbb,0xfd,0xfe,0xdf,0xe2,0xb7,0xff,0xff, + 0xff,0xff,0x5f,0xf5,0xfc,0xff,0xff,0xef,0x7b,0xf9,0xf7,0xfe,0xff,0xff,0xff, + 0xff,0xfd,0xd9,0xdd,0xff,0xbd,0x3f,0xfe,0xab,0xfd,0xff,0xff,0xff,0x6f,0xfb, + 0xf8,0xf7,0xfd,0xff,0x9d,0xff,0xff,0xfb,0xff,0xff,0xff,0xbb,0xfd,0xf9,0xbf, + 0xff,0xed,0xcf,0xff,0x57,0xef,0xff,0xff,0xff,0xef,0xf6,0x70,0xff,0xff,0xff, + 0xdd,0xff,0xaf,0xbd,0xff,0xff,0x7f,0x5b,0xfb,0xfa,0xdb,0xfd,0xb7,0xcf,0xff, + 0xf7,0x76,0xdd,0xff,0xd7,0x6e,0xfd,0xd0,0xff,0xff,0xfe,0xcb,0xff,0x5b,0xef, + 0xb6,0xd4,0x7a,0xb7,0xfe,0x01,0xfa,0xfe,0xff,0x8e,0xff,0xaf,0xba,0xdb,0x56, + 0xd5,0xda,0x7b,0x84,0xd0,0xff,0xed,0xa7,0xff,0x7b,0xdb,0xaa,0xaa,0xae,0x55, + 0x3f,0x10,0x82,0xfe,0xff,0x8b,0xff,0xaf,0x6d,0x55,0xd5,0x6a,0xab,0xbf,0x40, + 0x10,0xf8,0xf7,0x0a,0xfe,0xbf,0xb6,0xb7,0x55,0x55,0xd5,0x1f,0x02,0x40,0xf2, + 0x7e,0x41,0xfe,0xdb,0xda,0x54,0xaa,0xaa,0xfa,0x0f,0x20,0x05,0xf0,0x17,0x00, + 0xfc,0x7f,0x6b,0x55,0x55,0x55,0xd5,0x01,0x04,0x10,0xf2,0x47,0x12,0xfc,0xdf, + 0xaa,0x56,0xa9,0xaa,0xfe,0x00,0x20,0x81,0xf0,0x00,0x80,0xf8,0xff,0xd7,0x52, + 0xa5,0xaa,0x7d,0x22,0x01,0x08,0xf2,0x00,0x08,0xf0,0x7f,0xad,0xaa,0x2a,0x55, + 0x2f,0x00,0x24,0x02,0xf0,0x24,0x21,0xf0,0xff,0x57,0x15,0x49,0xe9,0x0f,0x00, + 0x00,0x48,0xf0,0x00,0x00,0xe1,0xff,0x7d,0xa5,0x24,0xf6,0x03,0x42,0x90,0x00, + 0xf2,0x92,0x08,0xa0,0xff,0xaf,0x12,0x49,0x7d,0x01,0x00,0x02,0x04,0xf0,0x00, + 0x42,0x80,0xff,0xff,0xaa,0x24,0x57,0x40,0x08,0x08,0x90,0xf0,0x08,0x08,0x04, + 0xff,0xb7,0x4a,0xd2,0x00,0x09,0x20,0x80,0x00,0xf2,0x40,0x40,0x01,0xfe,0xff, + 0x55,0xa9,0x40,0x02,0x00,0x11,0x02,0xf0,0x02,0x01,0x10,0xfc,0x7f,0xaf,0x6a, + 0x28,0x50,0x02,0x00,0x48,0xf0,0x08,0x24,0x42,0xe4,0xff,0x5d,0x3b,0x82,0x00, + 0x08,0x42,0x00,0xf2,0x20,0x80,0x00,0x8a,0xfe,0xff,0x7d,0x00,0x52,0x40,0x08, + 0x20,0xf0,0x01,0x01,0x08,0x34,0xfc,0xff,0x3f,0x00,0x48,0x00,0x20,0x82,0xf0, + 0x08,0x10,0x82,0xf4,0xf1,0xfe,0x3f,0x49,0x20,0x84,0x00,0x00,0xf2,0x40,0x42, + 0x10,0xe0,0xd3,0x60,0x7f,0x00,0x52,0x10,0x82,0x08,0xf0,0x02,0x00,0x42,0x84, + 0x87,0xc1,0xff,0x25,0x00,0x00,0x08,0x20,0xf0,0x48,0x08,0x10,0x00,0x0a,0x80, + 0xff,0x81,0x28,0x01,0x20,0x00,0xf2,0x00,0x21,0x81,0x10,0x24,0x84,0xff,0x07, + 0x00,0x48,0x00,0x42,0xf0,0x00,0x00,0x10,0x00,0x10,0x00,0xfe,0x07,0x92,0x01, + 0x81,0x00,0xf1,0x24,0x09,0x40,0x42,0x48,0x00,0xfc,0x27,0x88,0x05,0x08,0x08, + 0xf0}; diff --git a/ragamatic/tcl/bitmaps/prcFunny.xbm b/ragamatic/tcl/bitmaps/prcFunny.xbm new file mode 100644 index 0000000..31e09c2 --- /dev/null +++ b/ragamatic/tcl/bitmaps/prcFunny.xbm @@ -0,0 +1,60 @@ +#define prcFunny_width 100 +#define prcFunny_height 65 +static char prcFunny_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xf0,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0x07,0xf0,0x00,0xa8,0xea,0x7d,0xef,0x7f,0xfb,0xdb,0xb5,0x5e,0x55,0x05, + 0xf0,0x00,0xfc,0xff,0xf7,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0x07,0xf0,0x00, + 0x58,0xd5,0x5f,0x5f,0xf7,0xff,0xdb,0xbb,0x7f,0x55,0x05,0xf0,0x00,0xf4,0x7f, + 0x01,0x39,0x76,0xbc,0x91,0x13,0xe3,0xff,0x07,0xf0,0x00,0xbc,0xed,0x01,0x39, + 0x76,0xb2,0x11,0x12,0xe3,0x6d,0x05,0xf0,0x00,0xd8,0xfb,0x00,0x00,0xf6,0xb3, + 0x0d,0x62,0x83,0xdf,0x07,0xf0,0x00,0xec,0xfe,0x00,0x00,0x80,0x0f,0x0c,0x00, + 0x83,0x77,0x05,0xf0,0x00,0x7c,0x1f,0x00,0x00,0x80,0x0f,0xe0,0x0f,0x00,0xdf, + 0x07,0xf0,0x00,0xd4,0x03,0x00,0xff,0x07,0x02,0x1e,0xf0,0x00,0x7f,0x05,0xf0, + 0x00,0x7c,0x03,0xf8,0x00,0x78,0xc0,0x01,0x00,0x03,0xec,0x07,0xf0,0x00,0xd4, + 0x03,0x1f,0x00,0x80,0x73,0x00,0x00,0x04,0x7c,0x05,0xf0,0x00,0xfc,0x03,0x00, + 0x00,0x00,0x3e,0x00,0x00,0x18,0xd8,0x07,0xf0,0x00,0xa8,0x00,0xc0,0xff,0x3f, + 0x8e,0xff,0x7f,0x60,0x78,0x05,0xf0,0x00,0xfc,0x00,0x20,0x00,0x70,0x40,0x00, + 0x80,0x00,0xe0,0x07,0xf0,0x00,0xd8,0x00,0x1e,0x00,0xc0,0x31,0x00,0x00,0x07, + 0x40,0x05,0xf0,0x00,0xec,0x00,0x07,0x00,0x00,0x0e,0x00,0x08,0x1c,0xe0,0x07, + 0xf0,0x00,0xfc,0x00,0x01,0x00,0x00,0x02,0x00,0x00,0x78,0x60,0x05,0xf0,0x00, + 0xe4,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x07,0xf0,0x00,0x64,0xe4, + 0x80,0x02,0x08,0x10,0x00,0x00,0x80,0x23,0x04,0xf0,0x00,0x64,0x24,0x00,0x00, + 0x00,0x00,0x00,0x00,0x80,0x20,0x04,0xf0,0x00,0x60,0x38,0x00,0x00,0x00,0x10, + 0x04,0x00,0x80,0x20,0x04,0xf0,0x00,0x60,0x38,0x00,0x00,0x00,0x02,0x00,0x00, + 0x80,0x20,0x04,0xf0,0x00,0x60,0x18,0x08,0x00,0x00,0x00,0x04,0x00,0x81,0x00, + 0x04,0xf0,0x00,0x60,0x18,0x00,0x00,0x3f,0x04,0x00,0x20,0x00,0xc0,0x04,0xf0, + 0x00,0x64,0x18,0x00,0x00,0x3f,0x00,0x00,0x00,0x00,0xc3,0x04,0xf0,0x00,0x64, + 0x18,0x00,0x00,0x3f,0x00,0x00,0x00,0x00,0xc3,0x04,0xf0,0x00,0xe4,0x18,0x00, + 0x00,0x0e,0x80,0x03,0x00,0x00,0xc3,0x07,0xf0,0x00,0xfc,0x38,0x00,0x00,0x00, + 0xc0,0x0f,0x00,0x80,0xc3,0x07,0xf0,0x00,0xfc,0x23,0x00,0x00,0x00,0xc0,0x0f, + 0x00,0x80,0x00,0x05,0xf0,0x00,0xa8,0xe3,0x80,0x00,0x00,0x80,0x03,0x00,0x80, + 0x00,0x07,0xf0,0x00,0xfc,0xc3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05, + 0xf0,0x00,0xac,0x03,0x40,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x06,0xf0,0x00, + 0xf8,0x03,0x01,0x00,0x02,0x02,0x00,0x00,0x78,0xc0,0x07,0xf0,0x00,0xac,0x03, + 0x07,0x00,0x00,0x0e,0x80,0x00,0x1c,0x60,0x03,0xf0,0x00,0xfc,0x03,0x20,0x00, + 0x72,0x40,0x00,0x80,0x00,0xc0,0x06,0xf0,0x00,0xa8,0x03,0xc0,0xff,0x3f,0x80, + 0x7f,0x7f,0x00,0xc0,0x07,0xf0,0x00,0xfc,0x03,0x00,0x00,0x80,0x31,0x00,0x00, + 0x00,0x40,0x05,0xf0,0x00,0x58,0x03,0x00,0x00,0x80,0x31,0x00,0x00,0x00,0xc0, + 0x07,0xf0,0x00,0xf4,0x03,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x40,0x05,0xf0, + 0x00,0xbc,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x07,0xf0,0x00,0xd8, + 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x05,0xf0,0x00,0x74,0x1d,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x07,0xf0,0x00,0xdc,0x37,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x60,0x05,0xf0,0x00,0x78,0xfd,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x07,0xf0,0x00,0xdc,0xd7,0x00,0x07,0x81,0x03,0x10,0x00,0x00, + 0x40,0x05,0xf0,0x00,0xf4,0xfd,0xc0,0xf8,0xff,0x3f,0xfe,0x0f,0x00,0xfc,0x07, + 0xf0,0x00,0x5c,0xaf,0x00,0x00,0x70,0xc0,0xed,0x0f,0x00,0x6c,0x05,0xf0,0x00, + 0xf4,0xf5,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0xdc,0x07,0xf0,0x00,0x5c,0xbf, + 0x1e,0x00,0x00,0x00,0x00,0x00,0x80,0x77,0x05,0xf0,0x00,0xf4,0xd6,0x3b,0x00, + 0x00,0x00,0x00,0x00,0x80,0xdd,0x07,0xf0,0x00,0xdc,0xfd,0xfe,0x01,0x00,0x00, + 0x00,0x80,0xff,0x77,0x05,0xf0,0x00,0xb8,0xb7,0xd7,0x0f,0x00,0x00,0x00,0xf0, + 0xaf,0xde,0x07,0xf0,0x00,0xec,0xee,0x7a,0xff,0xff,0xff,0x9f,0xff,0xfb,0x7b, + 0x05,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xf0}; diff --git a/ragamatic/tcl/bitmaps/ragamat.bmp b/ragamatic/tcl/bitmaps/ragamat.bmp new file mode 100644 index 0000000..54e2023 Binary files /dev/null and b/ragamatic/tcl/bitmaps/ragamat.bmp differ diff --git a/ragamatic/tcl/bitmaps/ragamat.xbm b/ragamatic/tcl/bitmaps/ragamat.xbm new file mode 100644 index 0000000..7d20f4b --- /dev/null +++ b/ragamatic/tcl/bitmaps/ragamat.xbm @@ -0,0 +1,768 @@ +#define ragamat_width 290 +#define ragamat_height 310 +static char ragamat_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x3f,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xc0,0x7b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x77,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, + 0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xdf,0xaa, + 0xe9,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x3f,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x80,0x1f,0x01,0x00,0x02,0x03,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xc0,0x7d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x04,0x00,0x10,0x88, + 0x60,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xef,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x0b,0x40,0x48,0x02,0x20,0x02,0x28,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xc0,0x6b,0xbf,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc8,0x40,0x08,0x52,0xf5,0x07,0x00, + 0xb0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xef,0xff,0x16,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x26,0x10,0x61,0x04,0x00,0xd0,0x08,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00, + 0x80,0xf8,0xef,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, + 0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x81,0x84,0x08,0x51,0x25,0x01,0x30,0x00, + 0x18,0x00,0x00,0x00,0x00,0x80,0x03,0x40,0xdf,0x7d,0x0f,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0xb0,0x00, + 0x50,0x04,0x00,0x10,0x48,0xc2,0x01,0xd0,0x00,0x00,0x00,0x00,0xc0,0x03,0x40, + 0xf7,0xef,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00, + 0x00,0x00,0x00,0x00,0x00,0x38,0x40,0x0a,0x51,0xa5,0x44,0x22,0x00,0x04,0x60, + 0x00,0x00,0x00,0x00,0xc0,0x07,0x80,0xde,0xbe,0x17,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x12,0x48, + 0x48,0x88,0x8a,0x08,0x09,0x60,0x00,0x02,0x00,0x00,0x00,0xc0,0xbe,0x2a,0xff, + 0xfe,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00, + 0x00,0x00,0x00,0x40,0x82,0x88,0x92,0x02,0x51,0x20,0x40,0x20,0x80,0x22,0x0e, + 0x00,0x00,0x00,0xe0,0xf7,0xbf,0xf6,0xb7,0x17,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x20,0x25,0x20,0x04,0x54, + 0x00,0x84,0x12,0x04,0x05,0x81,0x10,0x00,0x00,0x00,0x70,0xff,0x3f,0xdf,0xff, + 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00, + 0x00,0x00,0x58,0x00,0x85,0x50,0x11,0x55,0x11,0x00,0x41,0x10,0x08,0x50,0x00, + 0x00,0x00,0xc0,0xfd,0x5f,0x7d,0xb5,0x2d,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x20,0x91,0x08,0x41,0x84,0x00, + 0xa2,0x54,0x12,0x41,0x40,0x12,0x00,0x00,0x00,0xc0,0x07,0x40,0xef,0xf3,0x27, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00, + 0x00,0x36,0x04,0x22,0x0a,0x51,0x94,0x08,0x41,0x08,0x04,0x09,0x60,0x00,0x00, + 0x00,0xc0,0x07,0x40,0xfb,0xba,0x2f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x09,0x20,0x88,0x28,0x84,0x22,0x01, + 0x14,0xa1,0x00,0x44,0x49,0x01,0x00,0x00,0xe0,0x1f,0x40,0xdf,0xf7,0x2e,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x80, + 0x2e,0x81,0x22,0x42,0x21,0x08,0x54,0x41,0x02,0x22,0x10,0x40,0x01,0x00,0x00, + 0xe0,0xfe,0xbf,0xbf,0xd2,0x2f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xfc,0x00,0x00,0x00,0x00,0x80,0x0a,0x10,0x08,0x11,0x94,0xa2,0x04,0x08, + 0x08,0x88,0x04,0x92,0x00,0x00,0x00,0xd0,0xfb,0xbf,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x26, + 0x45,0x45,0xa4,0x82,0x5e,0xbb,0x22,0x21,0x01,0xa0,0x04,0x02,0x00,0x00,0xf0, + 0xff,0x3f,0xd2,0x96,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xfc,0x00,0x00,0x00,0x00,0x20,0x0a,0x00,0x90,0x14,0x70,0xab,0x6d,0x09,0x04, + 0x48,0x22,0x00,0x02,0x00,0x00,0x40,0x2f,0x80,0x01,0x00,0x20,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x50,0x42,0x01, + 0x22,0x91,0xde,0xd5,0x56,0x53,0x49,0x02,0x40,0x12,0x09,0x00,0x00,0xe0,0x07, + 0x10,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, + 0x00,0x00,0x00,0x00,0xf0,0x1a,0x98,0x08,0x89,0x6a,0x7b,0xbb,0x9d,0x00,0x90, + 0x48,0x00,0x21,0x00,0x00,0xe0,0x06,0x02,0x40,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x58,0x84,0x20,0x44, + 0x54,0xbd,0xd7,0xea,0x16,0x94,0x00,0xa2,0x84,0xb8,0x00,0x00,0xe0,0xff,0x00, + 0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00, + 0x00,0x00,0x00,0xd8,0x16,0x01,0x91,0xa2,0xee,0xde,0x5f,0x57,0x22,0x48,0x00, + 0x10,0x19,0x00,0x00,0xb0,0xff,0x28,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0xb8,0x0b,0x84,0x04,0x94, + 0xbb,0x77,0xb5,0x3b,0x81,0x12,0x90,0x44,0x42,0x00,0x00,0xf0,0xfe,0xb2,0x46, + 0x3f,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00, + 0x00,0x00,0xf4,0x56,0x20,0xa8,0xc2,0xee,0xdd,0xef,0x16,0x14,0x00,0x11,0x81, + 0xc1,0x00,0x00,0xe0,0x17,0x00,0xf8,0xff,0x43,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0xb4,0x17,0x01,0x01,0xa8,0x7b, + 0x77,0xbb,0x3d,0x01,0x24,0x20,0x00,0xa8,0x01,0x00,0xe0,0x07,0x80,0xff,0xff, + 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00, + 0x00,0x6a,0xad,0x14,0x24,0x85,0xac,0xdb,0xed,0x06,0x28,0x01,0x04,0x6a,0x38, + 0x02,0x00,0xe0,0x03,0xc0,0xbf,0xed,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0xfb,0x54,0xa2,0x40,0x50,0xff,0xbd, + 0x7f,0x93,0x02,0x04,0x82,0x10,0x79,0x00,0x00,0xc0,0x03,0x40,0xfb,0xff,0xdf, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00, + 0xc9,0x1c,0x48,0x8a,0x04,0x74,0xf7,0xab,0x41,0xa4,0x90,0x28,0x60,0xf8,0x01, + 0x00,0x00,0x00,0x80,0xf6,0xf6,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x06,0xeb,0x02,0x11,0x91,0x08,0xdf,0x9e, + 0x28,0x01,0x40,0x00,0x04,0x50,0x02,0x00,0x80,0x03,0x80,0xdf,0xbd,0x1f,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x80,0x46, + 0x25,0x29,0x00,0x04,0x81,0x20,0x21,0x45,0x24,0x11,0xaa,0x04,0x71,0x05,0x00, + 0xc0,0x03,0xc0,0x7a,0xef,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xfc,0x00,0x00,0x00,0x80,0x83,0x9f,0x07,0x49,0x50,0x54,0x54,0x4a,0x08, + 0x02,0x84,0x00,0x21,0x23,0x08,0x00,0xc0,0x07,0x60,0xef,0xbf,0xbf,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0xc0,0xa0,0xbb, + 0x69,0x02,0x02,0x20,0x92,0x04,0x91,0x90,0x20,0x42,0x44,0xe1,0x01,0x00,0xc0, + 0x07,0xa0,0xfe,0xfb,0xb1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xfc,0x00,0x00,0x00,0xc0,0xa0,0xfe,0x8c,0xa8,0x90,0x0a,0x45,0x44,0x04,0x44, + 0x92,0x20,0x12,0xa3,0x02,0x00,0x40,0xff,0x9f,0x5b,0xed,0x1f,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0xe0,0xe7,0xb7,0x6e, + 0x12,0x05,0xa0,0x10,0x12,0x51,0x28,0x21,0x1a,0x42,0x42,0x05,0x00,0xe0,0xff, + 0xff,0xef,0xbf,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, + 0x00,0x00,0x00,0xf0,0xbe,0xff,0x58,0x4d,0x68,0x12,0x40,0x41,0x08,0x85,0x04, + 0x40,0x48,0x4e,0x01,0x00,0xf0,0xff,0x3f,0xbd,0xf7,0x7b,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0xf0,0x9f,0xff,0xe2,0x10, + 0x81,0x84,0x0a,0x92,0xa2,0x28,0x78,0x05,0x40,0x84,0x15,0x00,0xa0,0xfd,0xaf, + 0xfe,0xfe,0x37,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00, + 0x00,0x00,0xb0,0xfa,0x37,0xfd,0xd6,0x14,0x50,0xa4,0x00,0x12,0x42,0x50,0x92, + 0xd0,0x84,0x02,0x00,0xc0,0x07,0x40,0xdf,0xab,0x2e,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x70,0xdf,0xff,0x5e,0x37,0xa2, + 0x0a,0x11,0x5a,0x14,0xc0,0x12,0xe9,0xa0,0x48,0x2b,0x00,0xc0,0x07,0xc0,0x6b, + 0x7f,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00, + 0x00,0xd0,0xdf,0x3b,0x7b,0x6d,0x11,0xa8,0x4c,0x21,0x80,0xc0,0x47,0xf5,0xa8, + 0x58,0x07,0x00,0xe0,0x0f,0x80,0xfd,0x3d,0xfa,0x01,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0xb0,0xdd,0x7f,0xed,0xdf,0xdb,0x01, + 0x40,0x00,0x42,0x0b,0x01,0xd0,0xa0,0xca,0x41,0x00,0xa0,0x0d,0x20,0xef,0xff, + 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00, + 0xf0,0xdf,0xbf,0xde,0xf7,0x74,0x76,0x39,0x7d,0x15,0x09,0x10,0x90,0x40,0x91, + 0x11,0x00,0xe0,0xff,0xbf,0x7e,0xdb,0x71,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x70,0xef,0xf7,0xfe,0xad,0xe0,0xad,0x1a, + 0x7c,0x45,0x0a,0x08,0x90,0x50,0xb5,0x05,0x00,0xf0,0xed,0x9f,0xeb,0x1f,0x4e, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x30, + 0xd9,0x7d,0x7e,0x7f,0xba,0x6a,0x2d,0xbd,0x93,0x10,0x00,0x90,0x50,0x31,0x05, + 0x00,0xd8,0xff,0x7f,0x7f,0x15,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xfc,0x00,0x00,0x00,0x70,0xdc,0xbf,0x5f,0x7b,0xd5,0x2e,0x31,0x44, + 0x58,0x1a,0x00,0x00,0x41,0x23,0x08,0x00,0xe0,0xff,0xdf,0xd6,0x7f,0x7f,0x03, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x70,0xcc, + 0xb7,0xff,0x6c,0x51,0xd9,0x2a,0x34,0xa5,0x1a,0x08,0x00,0xa1,0x22,0x09,0x00, + 0xe0,0x0f,0x20,0xff,0xef,0x6b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xfc,0x00,0x00,0x00,0x70,0xec,0x5e,0x5f,0x65,0xbc,0x6f,0x25,0xd0,0x5b, + 0x1a,0x00,0x00,0x21,0x0a,0x0b,0x00,0xe0,0x0e,0xa0,0x7f,0x0d,0x5f,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x70,0xd4,0x7f, + 0xaf,0xb7,0xba,0xb4,0x3f,0x0c,0x80,0x3a,0x40,0x22,0xa3,0x41,0x0a,0x00,0xc0, + 0xfb,0xff,0xda,0x4f,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xfc,0x00,0x00,0x00,0x70,0xee,0x5d,0xff,0xaa,0x59,0x59,0x3a,0x0a,0x24,0x18, + 0x00,0x20,0x83,0x44,0x08,0x00,0xe0,0xff,0x7f,0x6f,0x9b,0xff,0x03,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0xc0,0xee,0x3f,0xaf, + 0xbd,0x6a,0x6d,0x3d,0xc4,0x02,0x3c,0x00,0x20,0x27,0x55,0x08,0x00,0x00,0xf7, + 0x87,0xfa,0xff,0xb5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, + 0x00,0x00,0x00,0xb0,0xef,0xae,0x5b,0xab,0x1a,0x42,0x3f,0x76,0x02,0x34,0x00, + 0x20,0x86,0xa2,0x0b,0x00,0x00,0x0e,0x20,0xbf,0x87,0xcf,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0xa0,0xb5,0xaf,0xef,0x6d, + 0xd9,0x5a,0x3f,0x9a,0x08,0x33,0x00,0x20,0x06,0x89,0x0a,0x00,0x00,0xdf,0xdf, + 0xdd,0x27,0x7b,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00, + 0x00,0x00,0xa0,0xf7,0xdd,0xbb,0xb6,0x5a,0x6d,0x1d,0x6c,0x2a,0x38,0x00,0x20, + 0x86,0x14,0x08,0x00,0x80,0xff,0xff,0x77,0x85,0xff,0x03,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0xa0,0xef,0xaf,0xef,0x6d,0x6a, + 0xaa,0x3f,0x56,0x05,0x26,0x01,0x42,0x48,0x14,0x01,0x00,0x80,0xfb,0x1f,0xdb, + 0xeb,0xff,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00, + 0x00,0xa0,0xf6,0xaf,0xb5,0x5b,0xa9,0xf5,0x3f,0x5c,0x4d,0x3c,0x10,0x40,0x08, + 0x32,0x04,0x00,0x00,0x9f,0x22,0x77,0xd3,0xda,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0xe0,0xb7,0xad,0xef,0x76,0x5d,0x55, + 0x1f,0xdc,0x10,0x24,0x40,0x40,0x0c,0x29,0x00,0x00,0x80,0x6d,0x80,0xdf,0xc3, + 0xf7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00, + 0x40,0xfb,0xaf,0xb5,0x9d,0x4a,0xd5,0x2b,0x6c,0x02,0x05,0x00,0x49,0x98,0x24, + 0x02,0x00,0x80,0xff,0x9f,0x7a,0xd7,0xdf,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x40,0x7a,0xd3,0xdf,0x6e,0xba,0xaa,0x5f, + 0xb8,0x49,0x24,0x04,0x40,0x90,0x92,0x0a,0x00,0xe0,0xff,0x9f,0xfd,0xff,0xfd, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x40, + 0xf5,0xdf,0x6a,0x5b,0x4a,0x55,0x4f,0xa8,0x4a,0x49,0x00,0x40,0x10,0xa8,0x0a, + 0x00,0x80,0xef,0x0d,0xbf,0xe1,0xd7,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xfc,0x00,0x00,0x00,0x40,0xbf,0xeb,0xb7,0x55,0x2d,0xd2,0x6e,0xb8, + 0x44,0x54,0x10,0x82,0x00,0xa2,0x00,0x00,0x00,0x0e,0xe0,0xd7,0xa9,0x7f,0x05, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x40,0xf9, + 0x49,0xdd,0x5e,0xa4,0x6a,0x49,0xd4,0x2a,0x41,0x40,0x88,0x00,0x25,0x04,0x00, + 0x00,0xf6,0x6f,0xfb,0xff,0xfa,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xfc,0x00,0x00,0x00,0x40,0xfe,0x7d,0xef,0x65,0x5d,0xd5,0x4c,0x78,0x4b, + 0x42,0x00,0xa0,0x08,0x31,0x01,0x00,0xc0,0xff,0xaf,0xbe,0xe1,0xcf,0x07,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x40,0xeb,0xcb, + 0xb5,0x4e,0xa5,0x6a,0x48,0x58,0x25,0x40,0x08,0x80,0x20,0x44,0x05,0x00,0x80, + 0xff,0xdf,0xef,0x50,0xff,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xfc,0x00,0x00,0x00,0xc0,0xba,0xb7,0x5e,0x5b,0x55,0xb5,0x4a,0xe0,0xaa,0x4a, + 0x00,0x81,0x20,0x2a,0x01,0x00,0x00,0x00,0x70,0xdb,0xff,0xdb,0x03,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0xc0,0xfd,0x9b,0xeb, + 0xa5,0x55,0x5b,0x49,0x88,0x23,0x62,0x20,0xa0,0x20,0xa2,0x00,0x00,0x00,0x00, + 0xa0,0xfd,0xff,0xf7,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, + 0x00,0x00,0x00,0x80,0xee,0xd5,0xb6,0xaa,0xae,0x6d,0xc5,0x00,0xb8,0x80,0x80, + 0x80,0x40,0x94,0x00,0x00,0x00,0x00,0x00,0x5f,0x50,0x3d,0x01,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x80,0xba,0x96,0x5b,0x67, + 0xa7,0xd6,0x84,0xa8,0x00,0x81,0x00,0x88,0x50,0x50,0x00,0x00,0x00,0x02,0xe0, + 0x75,0xb0,0xef,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00, + 0x00,0x00,0x80,0xfd,0xfd,0xd6,0xaa,0xa5,0xf5,0x87,0x00,0x48,0x84,0x00,0x01, + 0x40,0xac,0x08,0x00,0x80,0x2f,0x70,0xdf,0xff,0xdd,0x07,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x80,0xfe,0xd6,0x6d,0x27,0x5b, + 0xdb,0x47,0xb2,0x42,0x91,0x40,0x20,0x88,0x24,0x01,0x00,0xe0,0xff,0x9f,0xfb, + 0xfb,0x77,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00, + 0x00,0x00,0xf5,0xb5,0xb7,0xa9,0x6b,0xd5,0x57,0x80,0x14,0x80,0x00,0x02,0xa0, + 0x54,0x01,0x00,0xe0,0xff,0x8f,0x6e,0xa9,0x5e,0x03,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0xbe,0xea,0xda,0x66,0xab,0x6a, + 0x47,0xb0,0xca,0x82,0x20,0x54,0x88,0x48,0x02,0x00,0xc0,0xfd,0xef,0x3b,0xdc, + 0xf5,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00, + 0x00,0xf5,0xd7,0x4e,0x29,0x57,0xb5,0x67,0x72,0x55,0x81,0x81,0x00,0x88,0x20, + 0x01,0x00,0x80,0x0f,0xb0,0xee,0x7f,0xbf,0x07,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0xfe,0xea,0xfb,0x52,0xd3,0xde,0x97, + 0xb0,0x8b,0x04,0x09,0x4a,0xa0,0xa8,0x02,0x00,0x00,0x00,0x80,0x7b,0xf5,0xc7, + 0x1b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00, + 0x5b,0x5b,0x5d,0x23,0x5b,0xa5,0xc6,0xf4,0x77,0x8b,0x21,0x20,0x00,0x90,0x00, + 0x00,0x00,0x00,0x10,0x1f,0xdc,0x7e,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0xfd,0xde,0xf7,0xd6,0xaa,0xfa,0x07,0x71, + 0xab,0x00,0x01,0x89,0xa1,0xa8,0x00,0x00,0xc0,0x07,0xe0,0x9b,0xb6,0xff,0x03, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x7a, + 0x75,0xad,0x43,0xd3,0x4e,0x87,0xf0,0xad,0x02,0xa1,0x24,0x25,0x20,0x01,0x00, + 0xe0,0xfd,0xb9,0xf5,0xff,0xe5,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xfc,0x00,0x00,0x00,0x00,0xfe,0xdb,0xfb,0xaa,0xaa,0xf5,0xa7,0xc8,0x36, + 0x85,0x01,0x90,0x51,0x58,0x01,0x00,0x70,0xff,0x83,0x7e,0xb4,0x1f,0x1b,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x68,0xb6, + 0x5e,0x83,0x5b,0x5b,0x97,0x64,0x97,0x02,0x41,0xab,0x10,0x40,0x01,0x00,0xe0, + 0xff,0x87,0x0b,0xfe,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xfc,0x00,0x00,0x00,0x00,0xf4,0x6b,0xeb,0x56,0xea,0xee,0x96,0xf0,0x6b,0x05, + 0x25,0x84,0x41,0x58,0x01,0x00,0xc0,0x07,0xe8,0xcf,0xae,0xf5,0x07,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x58,0xdd,0x6e, + 0x43,0x5b,0xdb,0x87,0x65,0x55,0x81,0x40,0x51,0x21,0x28,0x02,0x00,0x40,0xfb, + 0x27,0x4d,0xf4,0xdf,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, + 0x00,0x00,0x00,0x00,0xf0,0x66,0xdb,0x96,0xea,0xfa,0x15,0xe9,0x57,0x25,0x00, + 0x8e,0x51,0x50,0x00,0x00,0xe0,0xff,0x8f,0xcf,0x5f,0xfd,0x16,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x68,0x5b,0xed,0x93, + 0x6e,0x6f,0x27,0xb1,0x5a,0x05,0x51,0xa1,0x11,0x90,0x00,0x00,0xd0,0xff,0x8f, + 0xfa,0xff,0xc7,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00, + 0x00,0x00,0x00,0xf8,0xb6,0x7d,0xa5,0xda,0xdd,0x07,0xd1,0xad,0x92,0x40,0xad, + 0x21,0x10,0x01,0x00,0x60,0xfd,0x8f,0x0f,0xb5,0x3e,0x06,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x50,0xf6,0xa6,0x4b,0xf5, + 0xf7,0x56,0xc1,0x56,0x83,0x40,0x52,0x41,0x28,0x01,0x00,0xe0,0xf7,0xef,0x85, + 0xdf,0xfb,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00, + 0x00,0x00,0x70,0x5b,0xdd,0xa5,0xbb,0xba,0x27,0x51,0x6b,0x05,0xa1,0xc4,0xa1, + 0x80,0x00,0x00,0xf0,0xdf,0x3f,0xff,0x7f,0xdb,0x0f,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x60,0x77,0xb7,0x8a,0xda,0xad, + 0x0d,0xf3,0xb6,0x92,0x05,0xd2,0x29,0x90,0x00,0x00,0xa0,0xf7,0x9f,0xbc,0xe5, + 0xaf,0x77,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00, + 0x00,0xe0,0xaa,0xaa,0xc3,0x6f,0xeb,0x46,0x51,0xad,0x05,0xc1,0xd4,0x50,0x48, + 0x00,0x00,0xc0,0x07,0xc0,0x83,0xbe,0xfe,0x0c,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0xc0,0x5c,0xbf,0x55,0xb2,0xf7,0x66, + 0xc1,0x2a,0x15,0x21,0xd5,0x88,0x00,0x00,0x00,0xe0,0xf7,0xff,0xc3,0xf7,0xbb, + 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00, + 0xc0,0xfb,0xa5,0xa1,0xee,0x5d,0x2d,0x31,0x55,0x85,0x84,0xd4,0xa0,0x00,0x00, + 0x00,0xe0,0xff,0xb7,0xfb,0xff,0xc7,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x80,0xb6,0xba,0x4b,0xbb,0xae,0x63,0x85, + 0xaa,0x86,0x22,0xe5,0x88,0x34,0x00,0x00,0xa8,0xfe,0x0d,0x4e,0xd5,0x3e,0x76, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x80, + 0xad,0xd7,0x94,0xf4,0xd5,0x8a,0x71,0x55,0x12,0x88,0xea,0xa0,0x14,0x00,0x00, + 0xe0,0xfd,0xef,0xc9,0xbf,0xfd,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0xf5,0xae,0x25,0xbb,0x5e,0x35,0x85,0x8a, + 0x42,0x41,0xea,0x90,0x08,0x00,0x00,0xe0,0x97,0xb0,0xf5,0xf7,0xcf,0x0f,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x2e, + 0x7b,0xd5,0x6a,0xab,0xc5,0xb1,0x54,0x92,0x40,0xf5,0x91,0x00,0x00,0x00,0x70, + 0xff,0x5f,0x4f,0xdd,0x7d,0x3e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xfc,0x00,0x00,0x00,0x00,0x00,0xd2,0x8d,0x4b,0x55,0xdb,0x1a,0x91,0x2a,0x43, + 0xa0,0x72,0x48,0x04,0x00,0x00,0xf8,0xff,0xcf,0xe9,0x77,0xd7,0x59,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0xb4,0xb6, + 0x91,0x6a,0xd5,0x8a,0x11,0xa5,0x22,0x05,0x78,0x52,0x02,0x00,0x00,0xf0,0xfe, + 0xef,0x60,0xb5,0xbd,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, + 0x00,0x00,0x00,0x00,0x00,0x18,0x6b,0xa9,0xba,0x5a,0x55,0x51,0x55,0x82,0x40, + 0x6b,0x48,0x01,0x00,0x00,0xe0,0x13,0xb0,0xec,0xff,0x77,0x7b,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x60,0xaf,0xa5, + 0x6c,0xeb,0x2e,0x23,0xa5,0x0a,0x20,0x3d,0x24,0x00,0x00,0x00,0xc0,0x01,0x80, + 0x36,0x57,0xfd,0x5e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00, + 0x00,0x00,0x00,0x00,0xf0,0xaa,0xb5,0x56,0xad,0x95,0xa2,0x2a,0x43,0xa5,0xba, + 0x2a,0x00,0x00,0x00,0x80,0x00,0x10,0xf4,0xff,0x8f,0x0f,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0xa0,0xac,0xa2,0xd4, + 0xd5,0x4a,0x49,0x55,0x02,0x80,0x1c,0x08,0x00,0x00,0x00,0xe0,0x03,0x80,0x5f, + 0xb5,0x7d,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00, + 0x00,0x00,0x00,0xa0,0xfe,0x6a,0x6a,0xad,0x4a,0x91,0xaa,0x92,0x91,0x9e,0x12, + 0x00,0x00,0x00,0xf0,0xff,0xdf,0xf5,0x77,0xf7,0x13,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x70,0x4d,0x23,0x55,0xd5, + 0x66,0x45,0x95,0x49,0xe1,0x16,0x0d,0x00,0x00,0x00,0xb0,0xff,0x77,0xb8,0xda, + 0xdd,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00, + 0x00,0x00,0xd0,0x7b,0xe9,0xd6,0x6a,0x89,0x30,0x55,0x01,0x21,0x4f,0x02,0x00, + 0x00,0x00,0xf0,0xfe,0x37,0xd5,0x7f,0x7b,0x7d,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0xf4,0xee,0xc6,0x72,0xad,0x22, + 0xc1,0xaa,0x91,0xa1,0x87,0x02,0x00,0x00,0x00,0xf0,0xf7,0x8f,0xfa,0xd6,0x8f, + 0xf7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00, + 0x00,0x5a,0x7f,0x49,0x95,0xd5,0xa2,0x15,0x55,0x42,0xad,0x40,0x01,0x00,0x00, + 0x00,0xc0,0x03,0x00,0x5f,0x77,0x7d,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0xf4,0xbf,0x53,0xed,0x6a,0x97,0xc0, + 0xaa,0x48,0x91,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xf4,0xda,0xf7,0x13, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00, + 0x5e,0xfb,0x8d,0x2a,0x5b,0x55,0x4a,0xd5,0x88,0x50,0xbd,0x00,0x00,0x00,0x00, + 0x00,0x00,0xb8,0xbc,0x6f,0xfd,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x75,0xff,0x5f,0x55,0xa5,0x3a,0xa1,0xaa, + 0xa1,0x42,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xd5,0xda,0xb7,0x7b,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0xbb, + 0xef,0x1f,0xd2,0xda,0x4a,0x51,0xab,0xd0,0x38,0x23,0x00,0x00,0x00,0x00,0x00, + 0x00,0x80,0x7e,0xef,0xee,0xde,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xfc,0x00,0x00,0x00,0x00,0x00,0xed,0xec,0xbf,0x46,0x6d,0xad,0x01,0xfa,0xed, + 0xa8,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xd6,0xb5,0xbb,0x1b,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x56,0xbf, + 0x7f,0xd4,0xda,0x36,0x92,0xf6,0x51,0x52,0x09,0x00,0x00,0x00,0x00,0x00,0x00, + 0x20,0xfa,0xfe,0x7f,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, + 0x00,0x00,0x00,0x00,0x00,0xfb,0xf5,0xff,0xab,0xaa,0xd5,0x43,0xed,0x2a,0x38, + 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xae,0x0f,0xff,0x2b,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x95,0xde,0xfe, + 0xb3,0xfd,0xeb,0x45,0x15,0x38,0xed,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x50, + 0x75,0x10,0xd8,0x3d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00, + 0x00,0x00,0x00,0x00,0x6d,0xab,0xfe,0x77,0x6a,0x1d,0x2c,0x3c,0x0d,0xf7,0x81, + 0x02,0x00,0x00,0x00,0x00,0x00,0x30,0x5f,0x82,0xe2,0x77,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0xd7,0x5d,0xef,0xdf, + 0xd5,0x27,0x87,0x92,0xcc,0x59,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x43, + 0x20,0x0d,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00, + 0x00,0x00,0x00,0xb3,0x6a,0xf5,0xff,0xae,0x4f,0x44,0x0f,0x7b,0x56,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0xc0,0x08,0x8b,0x20,0x3c,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x55,0x55,0xbb,0xff,0xfd, + 0x4e,0x2f,0xd5,0xfd,0x2b,0x10,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x04, + 0x14,0x39,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00, + 0x00,0x00,0xad,0x56,0x6d,0xfd,0xbf,0xbf,0xde,0xe7,0xee,0xd5,0x04,0x04,0x00, + 0x00,0x00,0x00,0x00,0x40,0x2c,0x41,0x40,0x22,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0xa5,0x6a,0xa5,0x55,0xff,0x7f, + 0x7b,0xf3,0x6b,0x0a,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x14,0x2a, + 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00, + 0x00,0x5a,0xa9,0x5a,0xeb,0xfb,0xff,0xd5,0x5d,0xd7,0x24,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x40,0x90,0x01,0x58,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x4a,0xa5,0x55,0xb5,0xac,0x6a,0x55, + 0xef,0x95,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x20,0x82,0x02,0x20, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00, + 0xa8,0x5a,0x4a,0x95,0xda,0xbe,0xbb,0x2a,0x2a,0x10,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x84,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0xac,0xa4,0x92,0xa4,0xaa,0x52,0x4a,0x95, + 0x02,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x50,0x02,0x52,0x22,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0xa8, + 0x2a,0x09,0x15,0x44,0x4a,0x55,0xc5,0x88,0x04,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x80,0x08,0xa0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xfc,0x00,0x00,0x00,0x00,0x00,0xa0,0x52,0x44,0x42,0x21,0xa1,0x20,0x00,0x20, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x52,0x89,0x18,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x50,0x4a, + 0x29,0x14,0x08,0x0a,0x82,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x42,0xa0,0x16,0x20,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, + 0x00,0x00,0x00,0x00,0x00,0x60,0xa9,0x92,0x42,0x22,0x01,0x00,0x00,0x00,0x00, + 0x80,0x04,0x00,0x00,0x00,0x00,0x00,0x82,0x48,0x00,0x80,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x80,0x2a,0x25, + 0x89,0x00,0x48,0x10,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41, + 0x91,0x80,0x02,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00, + 0x00,0x00,0x00,0x00,0xc0,0x4a,0x89,0x00,0x82,0x00,0x82,0x00,0x00,0x00,0x02, + 0x00,0x00,0x00,0x00,0x00,0x00,0x41,0xa9,0x0a,0x28,0x44,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x80,0xa9,0x22,0x55, + 0x10,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xa7,0x10, + 0x51,0x10,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00, + 0x00,0x00,0x00,0x00,0x2a,0x49,0x00,0x41,0x85,0x10,0x20,0x00,0x82,0x00,0x01, + 0x00,0x00,0x00,0x00,0x40,0xfb,0x82,0x4a,0x80,0x60,0x02,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x94,0x04,0x12,0x04, + 0x00,0x00,0x00,0x01,0x10,0x02,0x00,0x00,0x00,0x00,0x00,0x60,0xab,0x42,0x91, + 0x08,0xd4,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00, + 0x00,0x00,0x00,0x48,0x52,0x81,0x10,0x11,0x42,0x00,0x08,0x10,0x80,0x00,0x00, + 0x00,0x00,0x00,0x78,0xfd,0x0f,0x48,0x12,0xb8,0x0f,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x05,0x14,0x81,0x40, + 0x00,0x02,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0xba,0x57,0x75,0x04,0x81, + 0xfc,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00, + 0x00,0x00,0xc0,0x50,0x09,0x48,0x02,0x11,0x00,0x00,0x04,0x00,0x00,0x00,0x00, + 0x00,0x80,0x6f,0xbb,0xda,0x21,0xc0,0x7f,0x1b,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0a,0x42,0x02,0x04,0x80, + 0x00,0x10,0x00,0x08,0x00,0x00,0x00,0x00,0xf0,0xf7,0xdd,0x6b,0x0f,0x60,0xed, + 0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x4c,0x91,0x48,0x11,0x04,0x24,0x00,0x01,0x02,0x00,0x00,0x00,0x00, + 0x7c,0x7d,0x77,0x75,0x3b,0xff,0xbf,0xf5,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x04,0x12,0x40,0x20,0x00, + 0x42,0x90,0x00,0x00,0x00,0x00,0x00,0xd7,0x6d,0x5b,0xd7,0xf6,0xff,0x77,0xdf, + 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xa0,0x52,0x20,0x05,0x02,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0xe0,0x6e, + 0xff,0xfa,0x6b,0xdf,0x7f,0xfd,0xbb,0x4e,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xb0,0x04,0x10,0x90,0x52,0x04, + 0x0a,0x00,0x00,0x00,0x00,0xf8,0xdb,0x76,0xaf,0xba,0xd5,0xed,0xd7,0xff,0x7e, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x80,0x51,0x41,0x04,0x00,0x22,0x01,0x00,0x00,0x00,0x80,0x4e,0xed,0xdf, + 0x5b,0xd7,0xb6,0xfe,0x7f,0xf5,0xf3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x04,0x00,0x10,0x10,0x00, + 0x00,0x00,0x00,0x80,0xff,0xb6,0xf6,0xfe,0xea,0xde,0xb7,0xfa,0x7f,0xef,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xc0,0x04,0xc1,0x15,0x00,0x00,0x00,0x00,0x00,0x70,0x95,0xdb,0xff,0x5a, + 0xbf,0x76,0xff,0x7f,0xdb,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x3f,0x00,0x00,0x00,0x00, + 0x00,0x00,0xfd,0xed,0xfe,0xdb,0xff,0xd5,0xd6,0xfd,0xef,0xff,0x75,0x0f,0x00, + 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4e,0xbb,0x15,0xfd,0x5a,0xef, + 0xdf,0xb7,0xfd,0x77,0xff,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xd0,0xbb,0x15,0x92,0xe8,0xef,0xab,0x72,0xff,0xb7,0xde,0xef,0x77,0x00,0x00, + 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xd7,0x7e,0xa9,0x3a,0xda,0xff,0xdf, + 0x6d,0xfd,0xfb,0xff,0xee,0x09,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x5d, + 0x5e,0x87,0x50,0x38,0x00,0x00,0x00,0xf2,0xdf,0x03,0xf0,0xbf,0x23,0x00,0x00, + 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x80,0xd6,0x6e,0xf9,0x3f,0x1e,0x20,0x00,0x00,0x00, + 0x78,0x01,0xc0,0xf6,0x0e,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x64,0xef,0x6b, + 0xd8,0xee,0x1f,0x20,0x02,0x00,0x00,0xf0,0xa1,0xe6,0xdf,0x5d,0x00,0x00,0x00, + 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xb8,0xf5,0x76,0xae,0xfb,0x0d,0x00,0x40,0x00,0x00,0xd0, + 0x13,0x50,0x7b,0x7b,0x01,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00, + 0x00,0x1d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xd4,0x2f,0xdb,0xfb, + 0x5e,0x1f,0x00,0x02,0x40,0x04,0xb0,0x9f,0x7f,0xec,0xbd,0x06,0x00,0x00,0x00, + 0x00,0xfc,0x00,0x00,0x00,0x00,0xc0,0xb8,0xa0,0x0d,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x20,0x6b,0xda,0x5a,0xdb,0xef,0x0d,0x00,0x80,0x00,0x21,0xf0,0xfd, + 0xff,0xfb,0xf7,0x09,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x4c,0xaa, + 0x56,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd0,0xba,0xb7,0xed,0xba,0xbb, + 0x0f,0x00,0x02,0x04,0xf8,0xff,0xff,0xff,0x71,0xbd,0xb7,0x00,0x00,0x00,0x00, + 0xfc,0x00,0x00,0x00,0x20,0x55,0x45,0x00,0xb8,0x04,0x00,0x00,0x00,0x00,0x00, + 0x00,0xa0,0xf6,0xda,0x6e,0x77,0xf7,0x0e,0x00,0x00,0x00,0x00,0xf1,0x7f,0xab, + 0xe7,0xd7,0x4e,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0xd0,0x10,0x00,0x1a, + 0x82,0xa0,0x00,0x00,0x00,0x00,0x00,0x00,0xaa,0x7a,0xad,0xb5,0xbd,0xff,0x4f, + 0x6d,0x52,0x51,0x12,0xb0,0xd6,0xbd,0x9e,0xde,0x5e,0x01,0x00,0x00,0x00,0xfc, + 0x00,0x00,0x00,0x4c,0x41,0x44,0x94,0x24,0x0c,0x1a,0x00,0x00,0x00,0x00,0x80, + 0x58,0xb7,0xb5,0x56,0xad,0xd6,0xae,0x90,0x6d,0x55,0xed,0xf3,0x6e,0xf7,0xf5, + 0x77,0xa9,0x12,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x67,0x41,0xf1,0xf7,0x83, + 0x52,0x08,0x00,0x00,0x00,0x00,0x00,0x56,0x6b,0xd5,0xda,0xdb,0xfb,0x0f,0x01, + 0x00,0x80,0x08,0xb2,0x7b,0x7f,0xfa,0x7d,0x7d,0x0b,0x00,0x00,0x00,0xfc,0x00, + 0x00,0x80,0x57,0x05,0xbe,0xd5,0x1e,0x49,0x29,0x00,0x00,0x00,0x00,0x20,0xb5, + 0xdd,0xaa,0x6e,0xd6,0x6d,0xfb,0xff,0xff,0x5f,0x00,0xf0,0xbe,0xe5,0xba,0xd7, + 0x9a,0x14,0x00,0x00,0x00,0xfc,0x00,0x00,0xa0,0x12,0xc4,0xaa,0xaa,0xfb,0xa0, + 0xc0,0x02,0x00,0x00,0x00,0x90,0xda,0xf5,0x6f,0xb5,0xfb,0xfe,0xff,0xdb,0xff, + 0xff,0xff,0xdb,0xef,0xaf,0xed,0x76,0xfb,0x2a,0x00,0x00,0x00,0xfc,0x00,0x00, + 0xf0,0x0a,0x61,0x55,0xbb,0xd6,0x15,0x4a,0x00,0x00,0x00,0x00,0xc8,0x55,0xab, + 0xfe,0xdf,0x7c,0xbf,0xef,0xfe,0xff,0xfe,0xff,0xff,0x7b,0xef,0xff,0xdb,0x5a, + 0xab,0x00,0x00,0x00,0xfc,0x00,0x00,0xf8,0x92,0xf0,0x56,0xad,0x5a,0x01,0xd1, + 0x03,0x00,0x00,0x00,0x44,0xea,0xee,0xaa,0xfa,0xef,0xeb,0xff,0xdb,0xff,0xef, + 0xff,0xdb,0xde,0xdb,0xdd,0x76,0x75,0x51,0x01,0x00,0x00,0xfc,0x00,0x00,0xa8, + 0xaa,0x5c,0xeb,0xd6,0xda,0x5b,0x04,0x09,0x00,0x00,0x00,0xb2,0x56,0x5b,0xd5, + 0xfe,0xff,0xbf,0xff,0xfe,0xff,0xff,0xff,0xff,0x7b,0x5f,0xaf,0xdd,0x56,0xad, + 0x02,0x00,0x00,0xfc,0x00,0x00,0x94,0x2a,0x6a,0xb5,0x75,0x5b,0x87,0x12,0x06, + 0x00,0x00,0x00,0x54,0x5b,0xb5,0xbe,0xde,0xab,0xfd,0xef,0xfb,0xff,0xff,0xff, + 0x6f,0xef,0x7f,0xff,0x3e,0x5d,0x55,0x25,0x00,0x00,0xfc,0x00,0x00,0xda,0x8a, + 0x58,0xd7,0xaa,0xaa,0x13,0x29,0x12,0x00,0x00,0x80,0x6a,0xb5,0x5a,0xf3,0x7f, + 0xb6,0xf7,0xfd,0xdf,0xdf,0xff,0xff,0xff,0xbf,0xfb,0xf9,0xf7,0xa5,0x4a,0x05, + 0x00,0x00,0xfc,0x00,0x00,0x7b,0x55,0xf1,0xba,0xb7,0xef,0x48,0x82,0x04,0x00, + 0x00,0x40,0xaa,0xaa,0xad,0x6d,0xd2,0xed,0xfe,0xff,0xfa,0xff,0xef,0xff,0xf7, + 0xfb,0xee,0xd7,0x5f,0x1b,0x63,0x55,0x00,0x00,0xfc,0x00,0x00,0x19,0x95,0xa2, + 0xd5,0xda,0x55,0x30,0x95,0x16,0x00,0x00,0x40,0xb6,0x5a,0x77,0xb7,0x6d,0xf7, + 0xff,0xff,0xff,0xdf,0xff,0xff,0x77,0xef,0xff,0xff,0x5a,0xcd,0xb6,0x8a,0x00, + 0x00,0xfc,0x00,0x80,0xf7,0x2a,0x0c,0xbb,0xd5,0x1b,0x85,0x42,0x2b,0x00,0x00, + 0x20,0x55,0xab,0xd9,0xfa,0xd6,0x5d,0xbb,0xf7,0xdb,0xff,0xef,0xff,0xdf,0xbf, + 0x6d,0x7f,0xaf,0xb2,0x4a,0x15,0x00,0x00,0xfc,0x00,0x00,0x5b,0x55,0x68,0xce, + 0x77,0x26,0x50,0xc8,0x0c,0x00,0x00,0x40,0xa9,0xad,0x56,0x5d,0x6b,0xf7,0xfe, + 0xff,0xff,0xfe,0xef,0xff,0xff,0xfa,0xff,0xfb,0xe9,0x6a,0x55,0x55,0x02,0x00, + 0xfc,0x00,0x80,0x6f,0xaa,0x42,0xf8,0xff,0x89,0x24,0x05,0x21,0x00,0x00,0x10, + 0xb8,0x6a,0xb5,0xa5,0xba,0xda,0xf7,0xdd,0xfa,0xff,0xef,0xff,0xff,0xdf,0x6d, + 0xdf,0x9e,0xaa,0xaa,0x2a,0x00,0x00,0xfc,0x00,0xc0,0xfa,0xb5,0x84,0x04,0x10, + 0x12,0x92,0xd0,0x33,0x00,0x00,0x08,0x64,0x55,0xab,0xb6,0xd5,0xf7,0x7e,0xff, + 0xff,0xdb,0xbf,0xdd,0xee,0x77,0xff,0x7d,0xd5,0x54,0xad,0xd5,0x04,0x00,0xfc, + 0x00,0x40,0xce,0xaa,0x36,0x10,0xa1,0x64,0x49,0x74,0x25,0x00,0x00,0xa0,0x80, + 0x6e,0xad,0xda,0xea,0xda,0xfb,0x6f,0xba,0xdf,0xed,0xff,0xfb,0xfe,0xbb,0xf7, + 0xaf,0x6b,0x55,0x55,0x00,0x00,0xfc,0x00,0x40,0xd4,0x55,0xa9,0xa1,0x06,0x82, + 0x34,0x1b,0x63,0x00,0x00,0x14,0x4c,0xb5,0xda,0xaa,0xae,0x7f,0xbf,0xfd,0xef, + 0xdf,0xef,0x6e,0xbf,0xdf,0xfe,0xde,0xd7,0xae,0xaa,0xaa,0x02,0x00,0xfc,0x00, + 0x60,0x6a,0xbf,0x2a,0xad,0x68,0xb5,0x67,0xfe,0xca,0x02,0x00,0x44,0xa2,0xd5, + 0x6d,0xf5,0xd5,0xfa,0xf7,0x5f,0xfb,0xf9,0xf6,0xfb,0xef,0xf7,0xdf,0xff,0x5e, + 0xa5,0xaa,0x56,0x15,0x00,0xfc,0x00,0x70,0xb3,0x96,0x52,0xb5,0x36,0x55,0xa0, + 0xa2,0x57,0x00,0x00,0x00,0x7a,0x55,0x55,0x5b,0xea,0xde,0xfe,0x76,0xbb,0xbf, + 0xbf,0x7f,0xbb,0x7e,0x7b,0xdb,0xab,0x5a,0x55,0x55,0x00,0x00,0xfc,0x00,0x70, + 0xfb,0x7b,0xa5,0xaa,0x4a,0x4a,0x59,0xc1,0x06,0x01,0x00,0xf2,0xac,0xab,0x56, + 0x55,0xaf,0xf7,0xff,0x7f,0xef,0xd6,0xf5,0xdf,0xff,0xdb,0xff,0xff,0xae,0xaa, + 0xaa,0x8a,0x20,0x00,0xfc,0x00,0xb0,0x72,0xcf,0xff,0x54,0x80,0x74,0xa6,0xc3, + 0x1e,0x02,0x00,0x12,0xaa,0x5a,0xb5,0xbd,0x59,0x7d,0x7f,0x7b,0xbb,0xdb,0xdd, + 0xf6,0xed,0xff,0xd6,0xbb,0x57,0x55,0x55,0x29,0x08,0x00,0xfc,0x00,0x18,0xfa, + 0xb6,0xb5,0x8b,0xe8,0x4e,0x7b,0xcd,0x19,0x02,0x00,0x84,0x55,0xd5,0x56,0x55, + 0xfb,0xef,0xed,0x7f,0xff,0xd7,0xf7,0x7f,0xff,0xde,0xff,0xee,0x55,0xd5,0x56, + 0x05,0x02,0x00,0xfc,0x00,0x58,0xea,0xdb,0xaa,0xd5,0x6b,0xd9,0xbd,0xc6,0xa5, + 0x00,0x00,0xc2,0xb6,0xb7,0xad,0xdd,0xaa,0xbd,0xff,0xf7,0x75,0xeb,0x7f,0xeb, + 0xff,0xff,0xb6,0xff,0x6b,0x55,0x55,0x65,0x00,0x00,0xfc,0x00,0x6c,0xec,0x4b, + 0xfd,0xbd,0xab,0xdf,0xf0,0xcb,0x58,0x07,0x00,0x56,0xd5,0xaa,0xb6,0x56,0xd7, + 0xf6,0xbb,0x7e,0xdb,0xdf,0xd7,0xbf,0xdb,0xbb,0xff,0xbb,0xb6,0xaa,0xaa,0x0a, + 0x11,0x00,0xfc,0x00,0xac,0x7b,0xd3,0xff,0xe1,0xea,0x77,0x61,0x87,0x63,0x05, + 0x00,0xa8,0x5a,0xad,0xda,0xaa,0x7a,0xbf,0xff,0xef,0x77,0x6b,0xfd,0xfd,0xff, + 0xef,0xdb,0xfe,0x55,0x5b,0x55,0x15,0x50,0x00,0xfc,0x00,0xfa,0xf4,0x6b,0x9b, + 0xba,0x57,0xde,0x91,0x9e,0x32,0x06,0x00,0xc6,0x56,0xd5,0xaa,0x56,0xbd,0xfb, + 0xfe,0x7b,0xfb,0xd7,0x77,0xef,0xdd,0xbe,0xfe,0xf7,0xaf,0xaa,0x6a,0x55,0x02, + 0x00,0xfc,0x00,0xf6,0xfe,0xf7,0xff,0x20,0x51,0xfd,0xe1,0x86,0x6f,0x14,0x00, + 0x22,0xb5,0xb5,0xda,0xed,0x75,0xef,0x6b,0x7f,0xf7,0x5a,0xf6,0xbd,0xff,0xff, + 0xef,0xde,0x7a,0x55,0x55,0xd5,0x14,0x00,0xfc,0x00,0x7e,0x75,0xeb,0xfd,0xf4, + 0xab,0xb7,0xd3,0x1c,0x6e,0x1c,0x00,0xc4,0xae,0x5b,0xab,0x36,0xef,0xfd,0xff, + 0xed,0xb7,0xd7,0xdf,0xff,0x77,0xdb,0xbb,0xff,0x5f,0x55,0xab,0x12,0x91,0x00, + 0xfc,0x00,0x79,0xfd,0xd3,0xfb,0x91,0xc3,0xfa,0xc3,0x0d,0xcd,0x2c,0x00,0x06, + 0x6d,0xd5,0xba,0xab,0xb5,0x6f,0xff,0x7f,0xff,0x7b,0x76,0xdb,0xfe,0x7f,0xff, + 0x76,0xbb,0x6a,0x55,0x65,0x02,0x00,0xfc,0x00,0xd6,0xfe,0xe9,0xdf,0xd0,0xa3, + 0xe9,0xe2,0x19,0x9d,0x58,0x00,0x30,0xab,0xad,0xaa,0x5c,0x5d,0xff,0xdd,0xfb, + 0xf7,0xce,0xf7,0xff,0xdf,0xfe,0xed,0xdf,0x7f,0xad,0x2a,0x9b,0x04,0x00,0xfc, + 0x00,0x7f,0xed,0xf9,0x6f,0xf8,0xcd,0xfb,0xa3,0x1d,0x9e,0x60,0x00,0xc4,0x6e, + 0x6d,0xab,0xb6,0xee,0xfb,0x7f,0xef,0xb6,0xd7,0xbf,0xdb,0xf6,0xef,0xff,0xfd, + 0xed,0x55,0xd5,0xa4,0x14,0x00,0xfc,0x00,0xef,0xfe,0xaa,0xbe,0xf4,0x85,0x72, + 0xe3,0x19,0xbc,0x31,0x00,0x14,0xd5,0x56,0x6d,0xdb,0x7d,0xbf,0xff,0xff,0xbe, + 0xdf,0xf5,0xfe,0xdf,0xfb,0xb6,0x77,0xff,0xaa,0x56,0xab,0x26,0x00,0xfc,0xc0, + 0x7f,0xfd,0xf4,0xb7,0xf0,0xa5,0x7d,0xc2,0x39,0x7e,0xa9,0x00,0xa6,0xb8,0xda, + 0xd6,0xa9,0xee,0xef,0xee,0xfb,0xf7,0xe6,0xfb,0x6f,0x7f,0xbf,0xff,0xdf,0xb7, + 0x55,0x55,0xb5,0x48,0x00,0xfc,0xc0,0x7e,0xef,0xf6,0xbf,0xd4,0xa5,0x76,0xc7, + 0x3b,0x7e,0x62,0x00,0x1a,0x63,0x5b,0x5b,0xd6,0xb3,0xfd,0xff,0xde,0xf6,0x77, + 0xbf,0xfb,0xf7,0xef,0xd7,0xfd,0xfd,0x56,0x55,0x95,0x0a,0x00,0xfc,0xc0,0xbb, + 0xfe,0xdc,0xb7,0xf0,0x93,0xff,0x86,0x3b,0x7e,0xf2,0x00,0x6e,0xab,0x6a,0xb5, + 0x6d,0xfe,0xff,0xed,0xff,0xff,0xaf,0xeb,0xdf,0xdf,0x7d,0x7f,0x6f,0xef,0xda, + 0xaa,0x6a,0x65,0x00,0xfc,0xe0,0x2a,0x7f,0xf9,0x7e,0xf9,0xa5,0xf5,0x8c,0x33, + 0xfe,0x84,0x00,0x5a,0xa4,0xaf,0xd5,0x55,0x5b,0xdf,0xff,0xfb,0xb6,0x6e,0xf9, + 0x7d,0xfb,0xf7,0xfb,0xfd,0xfb,0xaa,0x56,0xad,0x12,0x00,0xfc,0x60,0xd7,0x7f, + 0xfd,0x5b,0x70,0xc5,0xfe,0x84,0x33,0xfa,0xa4,0x00,0xbc,0x4a,0xa9,0x6e,0xba, + 0xfd,0x7b,0x7f,0xef,0xf7,0x6b,0x68,0xef,0xdf,0xbf,0xdf,0xef,0x5e,0xab,0xaa, + 0xaa,0x00,0x00,0xfc,0xa0,0x5a,0xff,0xfe,0xbf,0xf0,0x86,0xef,0x8d,0x37,0xfe, + 0x85,0x00,0xef,0x2a,0xb5,0xb5,0xeb,0xd6,0xff,0xf7,0xff,0xb6,0xbf,0xc0,0xbd, + 0x7f,0xff,0xf6,0xbd,0xf7,0x56,0x55,0x55,0x04,0x00,0xfc,0xa0,0x5d,0x3f,0xfd, + 0xaf,0xf2,0xb2,0xbb,0x0d,0x27,0xec,0xeb,0x00,0x79,0x95,0xba,0xb6,0x34,0xeb, + 0xee,0xdf,0xff,0xf7,0x4f,0x80,0xff,0xf7,0xf5,0x7f,0xff,0xbd,0x6a,0xb5,0xaa, + 0xd0,0x00,0xfc,0xe0,0x6e,0x1b,0xfd,0x7f,0xf2,0x86,0xff,0x0d,0x67,0xfc,0x03, + 0x00,0xef,0x56,0xe9,0x6a,0xd7,0xed,0xff,0xfe,0xfb,0xbe,0x3b,0x80,0xdb,0xfd, + 0xdf,0xdb,0xb7,0xdf,0xaa,0x55,0x15,0xaa,0x00,0xfc,0xa0,0x4b,0x5b,0xdd,0xbf, + 0xf0,0xf5,0xff,0x19,0x67,0xbc,0xd3,0x00,0xfb,0x5b,0xa5,0xd7,0x6a,0x5e,0xdf, + 0x7f,0xdf,0xb7,0x47,0x02,0xfe,0xbf,0x7f,0xff,0xfd,0x76,0xab,0xaa,0x85,0x84, + 0x00,0xfc,0xa0,0xba,0x59,0xfd,0xbf,0xf0,0x8a,0xff,0x1b,0x47,0x54,0x27,0x00, + 0xbd,0x2f,0xb3,0x7c,0xbb,0xf3,0xff,0xf5,0xff,0xfe,0x15,0x02,0x7c,0xf7,0xf7, + 0x75,0xdf,0x5f,0x55,0xb5,0x02,0x62,0x00,0xfc,0x60,0xab,0xfc,0xfe,0xdf,0xf8, + 0xc5,0xdd,0x13,0x47,0x6c,0x85,0x00,0xef,0xeb,0x44,0xaa,0xbb,0xbd,0xfe,0xff, + 0xfb,0xb7,0x15,0x02,0xd8,0x7f,0xdf,0xdf,0xf7,0xf6,0xaa,0xd6,0x64,0x51,0x01, + 0xfc,0xe0,0x55,0x2c,0xfe,0xbf,0xe2,0x66,0x76,0x13,0x47,0xf8,0xd8,0x00,0xbb, + 0xdf,0x43,0x41,0xef,0xee,0xbf,0xff,0xff,0xfe,0x11,0xfd,0xff,0xf5,0xfd,0xff, + 0xbe,0xdf,0xad,0xea,0xff,0xff,0x01,0xfc,0xc0,0xa6,0x8f,0xff,0x9f,0xb0,0x84, + 0xfe,0x03,0xcb,0x99,0x8b,0x00,0xff,0x7f,0x9f,0x2c,0xcc,0xf7,0xfb,0xee,0xff, + 0x77,0x16,0x04,0xf4,0xdf,0xef,0xef,0xf7,0xfb,0x6a,0x15,0x42,0xac,0x00,0xfc, + 0xc0,0xd5,0x95,0x5f,0xdf,0x78,0x47,0x7f,0x23,0x8e,0x68,0xd5,0x00,0xf5,0xff, + 0xff,0x8e,0xa1,0x79,0xef,0xff,0xef,0x3e,0x10,0x61,0xe8,0xff,0xbf,0xbd,0xdd, + 0xbe,0x5d,0x13,0x10,0x52,0x01,0xfc,0xc0,0xd5,0xaa,0xd5,0x9e,0xe4,0xa4,0xfb, + 0x27,0x8e,0x50,0xcf,0x00,0x7f,0xff,0xb7,0xe7,0x3a,0x96,0xff,0xde,0xff,0x56, + 0xec,0x26,0xc0,0xf6,0xff,0x77,0xff,0x6f,0x6b,0x90,0x24,0x5b,0x01,0xfc,0xc0, + 0xea,0x96,0x62,0xcd,0x78,0x8a,0xef,0x65,0x0c,0x61,0xd9,0x00,0xfd,0xff,0xff, + 0x2a,0x95,0xea,0xae,0xff,0xfd,0x3e,0x6f,0x26,0x80,0xbf,0xfd,0xff,0xb7,0xfd, + 0x17,0x00,0xc1,0x4d,0x01,0xfc,0xc0,0x52,0x53,0xab,0x9f,0x72,0x46,0x7d,0x47, + 0x1c,0x51,0x55,0x00,0xef,0xff,0xff,0xf7,0xba,0xf4,0xd6,0x22,0xff,0x06,0xac, + 0xc6,0x85,0xff,0xbf,0x6f,0xfd,0x5f,0xa4,0x51,0x78,0x6a,0x01,0xfc,0x80,0xa5, + 0xd9,0xd6,0xca,0x64,0xd5,0xf7,0xc7,0x18,0xf0,0x4d,0x00,0xfb,0x7f,0xff,0x6f, + 0xf7,0x59,0x59,0x6a,0x81,0x80,0xe8,0xaa,0x47,0xdb,0xf7,0xfe,0xff,0x4b,0x49, + 0x86,0xba,0x95,0x02,0xfc,0x80,0x65,0xe5,0xab,0x6f,0x74,0x24,0xbf,0x07,0x30, + 0x70,0x55,0x00,0xff,0xfb,0xff,0xff,0xfc,0x97,0xb7,0x7b,0x49,0x6f,0x29,0x16, + 0x11,0xfe,0xfe,0xff,0x0f,0x0a,0x84,0x18,0xdf,0x6a,0x01,0xfc,0x80,0xb4,0x09, + 0xf5,0x8e,0x70,0x48,0xfe,0x8d,0x38,0x90,0x4b,0x00,0xdb,0xff,0xff,0xff,0xff, + 0x7f,0x15,0x96,0x1a,0x48,0xf4,0xab,0x04,0xfe,0xff,0x80,0x12,0xb4,0x35,0x55, + 0x6b,0xad,0x02,0xfc,0x00,0xa5,0xea,0x52,0xcb,0xf0,0xa2,0xfa,0x0f,0x30,0xf0, + 0x26,0x00,0xff,0xff,0xfd,0xff,0xbf,0xff,0xef,0xd7,0x34,0xd0,0x56,0x29,0xb0, + 0x65,0x21,0x05,0x90,0x16,0xd0,0xf6,0x56,0x55,0x01,0xfc,0x00,0x65,0x29,0x65, + 0xcd,0x5e,0x91,0x7e,0x0f,0x30,0x60,0x27,0x00,0xfd,0xff,0xf7,0xff,0xff,0xff, + 0xff,0xff,0xd3,0x5e,0x54,0x96,0x4e,0x16,0x09,0x28,0x27,0x89,0xad,0xfc,0xad, + 0xaa,0x02,0xfc,0x00,0x64,0xa9,0xd6,0xd7,0xf0,0x4c,0xf5,0x1b,0x00,0x23,0x35, + 0x00,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x7e,0x40,0xad,0x12,0xe9,0x58, + 0xaf,0xa4,0x4a,0x60,0xa4,0xff,0xef,0xaa,0x02,0xfc,0x00,0x69,0xdb,0x2a,0x97, + 0xa8,0x40,0xfa,0x1f,0x08,0x66,0x37,0x00,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff, + 0xff,0x9f,0x40,0x48,0xf1,0x52,0x35,0x96,0x12,0xa0,0x3a,0xfd,0xd7,0x7d,0x55, + 0x01,0xfc,0x00,0xe5,0xa8,0x53,0x97,0x50,0x44,0xfa,0x1e,0x21,0x80,0x12,0x00, + 0xf7,0xfb,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0x4b,0x14,0xec,0xef,0xf7,0x7f, + 0xc8,0x55,0xd5,0xff,0x6f,0x97,0xad,0x02,0xfc,0x00,0x8b,0x94,0xff,0x95,0x64, + 0x20,0xfa,0x1b,0x41,0x04,0x04,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0x5f,0x97,0x58,0x7f,0xed,0xbb,0x57,0xeb,0xfe,0xed,0xff,0x7d,0x55,0x01, + 0xfc,0x00,0xad,0xa9,0xff,0x97,0x60,0x89,0x74,0x9f,0x41,0x44,0x15,0x00,0xfb, + 0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0x53,0xaf,0xa5,0xfa,0x77,0xbf, + 0xff,0xff,0xff,0xff,0x5f,0xab,0x02,0xfc,0x00,0x99,0xa5,0xbf,0x82,0x74,0x60, + 0xf9,0x3b,0x51,0x14,0x0c,0x00,0xef,0xbf,0xff,0xfe,0xff,0xff,0xff,0xff,0xff, + 0xf5,0xef,0x7a,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xb5,0x02,0xfc, + 0x00,0xc6,0xd5,0xff,0xda,0x60,0x8c,0xf9,0x0e,0x41,0x44,0x1d,0x00,0xfd,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xf7,0xff,0x7f,0xff,0xff,0xef,0xef, + 0xff,0xff,0xff,0xff,0x56,0x01,0xfc,0x00,0xc2,0xdb,0xbd,0xc5,0x70,0xd5,0xff, + 0x1b,0x51,0x54,0x16,0x00,0xf7,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0x7f, + 0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xdf,0xb7,0xab,0x02,0xfc,0x00, + 0xde,0x53,0xb7,0x92,0x61,0x94,0xef,0x1f,0x41,0x44,0x0a,0x00,0xde,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef, + 0x7f,0xff,0xff,0x54,0x01,0xfc,0x00,0x0e,0x2b,0x3f,0xc5,0xf0,0xc4,0xfe,0x1f, + 0x71,0xc4,0x17,0x00,0xfd,0x7b,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xfb,0xfb, + 0xfd,0x7f,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0x7f,0xdb,0x02,0xfc,0x00,0x36, + 0x85,0x7f,0x95,0x64,0x84,0xfb,0x1f,0x31,0xc4,0x0f,0x00,0xf6,0xff,0xff,0xff, + 0xfd,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd, + 0xff,0xff,0x57,0x01,0xfc,0x00,0x1c,0x8b,0x7e,0x95,0x70,0xb7,0xde,0x5e,0x31, + 0x84,0x0a,0x00,0xde,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xaf,0x55,0x01,0xfc,0x00,0x14,0x81, + 0xff,0x8d,0xb1,0x0c,0xff,0x1f,0x39,0xd6,0x0f,0x00,0xfa,0xff,0xff,0xff,0xdf, + 0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf, + 0xff,0x55,0x01,0xfc,0x00,0xdc,0x5a,0xfd,0xa6,0x71,0x25,0xff,0x0b,0x38,0xc6, + 0x05,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfb,0xff, + 0xbf,0xef,0xef,0xef,0xff,0xff,0xff,0x7f,0x56,0x01,0xfc,0x00,0xac,0x0e,0xff, + 0x9a,0x74,0x84,0xff,0x0f,0xb8,0xd2,0x0b,0x00,0xea,0xfe,0xef,0xff,0xff,0xff, + 0xff,0xf7,0xfe,0xef,0xef,0xf7,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf, + 0x55,0x01,0xfc,0x00,0x38,0xb3,0xfd,0xab,0x71,0x87,0xed,0x0f,0x38,0xc6,0x07, + 0x00,0xfc,0xbb,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xf7,0xff,0xd7,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xab,0x00,0xfc,0x00,0x28,0x67,0xef,0xaf, + 0x71,0xaa,0x7f,0x0f,0x38,0xd2,0x05,0x00,0xf4,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x5f,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0x54, + 0x01,0xfc,0x00,0x28,0x35,0xbf,0x95,0xe1,0x8d,0xd6,0x8f,0x78,0xc6,0x07,0x00, + 0xdc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0xff,0xd7,0xff,0xff,0xff, + 0xff,0xff,0xff,0xf7,0xff,0xbf,0xaf,0x00,0xfc,0x00,0x58,0x97,0xfe,0xa7,0x71, + 0x08,0xff,0x8f,0x18,0xe2,0x01,0x00,0xf4,0xff,0xbf,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xdb,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xdf,0xef,0xb5,0x00, + 0xfc,0x00,0x68,0x26,0xfb,0xb6,0xf1,0x2a,0xef,0x8d,0xb8,0xea,0x02,0x00,0xfc, + 0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xdf, + 0xbf,0xff,0xff,0xff,0xff,0xca,0x00,0xfc,0x00,0x10,0xb7,0xef,0x8d,0x23,0x79, + 0xfd,0x87,0x19,0xe2,0x01,0x00,0xac,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xdf, + 0xff,0xff,0xff,0xf7,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x7f,0x5d,0x00,0xfc, + 0x00,0x50,0x56,0xfe,0xd7,0x61,0xc9,0xb7,0x8f,0x58,0xeb,0x01,0x00,0xf8,0xde, + 0xff,0xff,0xff,0xff,0xdd,0xff,0xff,0xff,0x6f,0xff,0xbf,0xfb,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0x55,0x00,0xfc,0x00,0x30,0x65,0x7d,0xa7,0xe1,0x0a,0xfe, + 0x85,0x18,0x63,0x01,0x00,0xa8,0x7f,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff, + 0xd7,0xff,0xff,0xff,0xde,0xff,0xff,0xfe,0xff,0xfd,0xff,0x55,0x00,0xfc,0x00, + 0x30,0x5e,0xdd,0xad,0x69,0xad,0xee,0xc7,0x18,0xeb,0x01,0x00,0x78,0xff,0xff, + 0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xf7, + 0xff,0xdf,0xff,0x6a,0x00,0xfc,0x00,0x30,0x6c,0xfd,0x87,0x65,0x4a,0xba,0xc7, + 0x09,0x73,0x00,0x00,0xb8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xef, + 0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x55,0x00,0xfc,0x00,0xb0, + 0xaa,0xbe,0xb5,0x69,0x09,0xff,0x46,0x18,0x73,0x03,0x00,0xe8,0xfe,0x7f,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xf7,0x2a,0x00,0xfc,0x00,0x60,0x5c,0xfd,0x87,0xe3,0x2a,0xd6,0xc7,0xa8, + 0xf3,0x02,0x00,0xd8,0xfd,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xef,0xff,0xff, + 0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x17,0x00,0xfc,0x00,0xe0,0xac, + 0xfd,0xa6,0x61,0xa9,0xfe,0xc3,0x88,0x71,0x03,0x00,0xb0,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0x7b,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff, + 0xff,0x29,0x00,0xfc,0x00,0xf0,0xff,0xbd,0x97,0xf2,0xa2,0xda,0x43,0xa8,0x71, + 0x02,0x00,0xf0,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7e,0xff, + 0xff,0xfe,0xfb,0xff,0xbf,0xff,0xff,0x4f,0x36,0x00,0xfc,0x00,0xe0,0xbc,0xfe, + 0x85,0x63,0x15,0x7e,0xeb,0x88,0x75,0x01,0x00,0x50,0xf7,0xff,0xff,0xf7,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff, + 0x1a,0x00,0xfc,0x00,0x40,0xdd,0xdd,0x97,0x73,0x55,0xea,0x63,0xd4,0x71,0x01, + 0x00,0xa0,0xff,0xff,0xff,0xff,0xfb,0xff,0xfe,0xff,0xff,0xff,0xff,0xef,0xff, + 0xff,0x7f,0xff,0xff,0xff,0xdf,0x5f,0x0b,0x00,0xfc,0x00,0x40,0x59,0xfc,0x86, + 0x63,0x52,0xf6,0x63,0xc4,0x75,0x01,0x00,0x60,0xfd,0xff,0xff,0xff,0xdf,0xff, + 0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xef,0x15, + 0x00,0xfc,0x00,0x40,0xbd,0xfe,0x8f,0xe3,0x92,0xbc,0x63,0xc4,0x71,0x01,0x00, + 0x60,0xf7,0xfd,0xff,0xff,0xff,0xfe,0xef,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xbf,0xff,0x3f,0x15,0x00,0xfc,0x00,0xc0,0xdc,0xb8,0x85,0x67, + 0xb0,0xec,0x63,0xe4,0x37,0x03,0x00,0xc0,0xfd,0xf7,0xfb,0xff,0xff,0xfb,0xff, + 0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x0b,0x00, + 0xfc,0x00,0xc0,0x3a,0xf9,0xc6,0x73,0x16,0xf7,0x6b,0xd4,0x71,0x01,0x00,0x40, + 0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbd,0xff,0xff,0xff,0xf7,0xff,0xff, + 0xff,0xff,0xff,0x7f,0xdf,0x0a,0x00,0xfc,0x00,0xc0,0x5e,0xbd,0xa7,0x63,0x15, + 0xbd,0x63,0xcc,0xb5,0x02,0x00,0x80,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xf7, + 0xff,0xfe,0xff,0xff,0xff,0xff,0xff,0xf7,0xff,0xff,0xff,0xbd,0x05,0x00,0xfc, + 0x00,0x80,0x58,0xd5,0xa5,0xf7,0xb0,0xd6,0x23,0xd4,0xd3,0x1a,0x00,0x80,0xfe, + 0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xfb,0xfe,0xff,0xff,0xfe,0xff,0xff, + 0xff,0xff,0xff,0x7f,0x05,0x00,0xfc,0x00,0x80,0xb3,0xf9,0xd7,0xa2,0x16,0xba, + 0x6b,0xd4,0x9b,0x0a,0x00,0x00,0xfb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xff,0xef,0x06,0x00,0xfc,0x00, + 0x80,0x98,0xb5,0xc5,0xe7,0x18,0xd6,0x23,0xcd,0xd9,0x15,0x00,0x00,0xff,0xff, + 0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x5f,0x01,0x00,0xfc,0x00,0x80,0x91,0xf9,0xc7,0xa7,0x90,0xaa,0x29, + 0xae,0x79,0x2a,0x00,0x00,0xda,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xf7,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0x7f,0x03,0x00,0xfc,0x00,0x00, + 0xd1,0xb5,0xd6,0xa6,0x08,0xee,0x21,0xc6,0xa8,0x5a,0x00,0x00,0x76,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0xff,0xff,0xff,0xff,0xff,0x7f, + 0xff,0x5f,0x01,0x00,0xfc,0x00,0xc0,0x33,0xf7,0xe5,0xa7,0x8b,0xaa,0x31,0xf2, + 0xa9,0x55,0x00,0x00,0xfc,0xff,0xff,0x7f,0xff,0xf7,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xff,0xbf,0x01,0x00,0xfc,0x00,0x40,0xae, + 0x6b,0xd7,0xb7,0x09,0xdc,0x35,0xea,0x5a,0x55,0x00,0x00,0xf8,0xf7,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x57,0x00,0x00,0xfc,0x00,0xb0,0x45,0xab,0x57,0xad,0x8d,0xeb,0x51,0xa6,0xa9, + 0xaa,0x00,0x00,0x88,0xdf,0x7d,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xbf, + 0xef,0xff,0xff,0xff,0xff,0xff,0xbf,0xaf,0x00,0x00,0xfc,0x00,0xa8,0xae,0xf7, + 0xce,0xe7,0x00,0xae,0x14,0xea,0xda,0xb6,0x00,0x00,0x70,0xff,0xff,0xfd,0xfb, + 0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xfd,0xfb,0xff,0xff,0xff,0xff,0xb6, + 0x00,0x00,0xfc,0x00,0xa8,0x2a,0xeb,0xe7,0xad,0x4d,0xd2,0xb2,0xe2,0xad,0x55, + 0x00,0x00,0xb0,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xfe,0xff,0xff,0xff,0xff, + 0xff,0xef,0xff,0xff,0xff,0xfd,0x57,0x00,0x00,0xfc,0x00,0xa8,0xbd,0xf7,0x6f, + 0xef,0x21,0xae,0x14,0xbb,0xaa,0xaa,0x00,0x00,0xe0,0xfd,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xbf,0xff,0xff,0xf7,0xff,0x35,0x00, + 0x00,0xfc,0x00,0xd4,0x3a,0xca,0xcd,0xaf,0x25,0xfe,0x10,0xe9,0x57,0xd5,0x00, + 0x00,0xc0,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xfb,0xff,0xff,0xff,0x16,0x00,0x00,0xfc,0x00,0x5a,0xf5,0x97,0xe6,0xef, + 0x29,0xbc,0x88,0xf7,0x5a,0x55,0x01,0x00,0x80,0xef,0xff,0xff,0xef,0xff,0xf7, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2b,0x00,0x00, + 0xfc,0x00,0xab,0xee,0x14,0xcd,0xad,0x2d,0x52,0x1c,0x69,0xa5,0x5a,0x01,0x00, + 0x00,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfb,0xff,0xff,0xff,0xff, + 0xbf,0xff,0xff,0xef,0x1c,0x00,0x00,0xfc,0x00,0xf9,0xbb,0x5b,0x77,0xaf,0xa9, + 0x74,0x5a,0xbd,0xaf,0xaa,0x00,0x00,0x00,0xf6,0xfb,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0x3f,0x07,0x00,0x00,0xfc, + 0x00,0xaf,0x7a,0x6f,0xcf,0xea,0x35,0x3e,0x5d,0x6e,0xa9,0x54,0x00,0x00,0x00, + 0xfe,0xef,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, + 0xff,0xbf,0xdf,0x02,0x00,0x00,0xfc,0x00,0x51,0xed,0x5e,0xb7,0x3f,0xa3,0x58, + 0x95,0xbf,0x2a,0xbb,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xbf,0xff,0xef,0xff,0xff,0xff,0xff,0xff,0x53,0x05,0x00,0x00,0xfc,0x00, + 0xad,0xaa,0x7b,0xa7,0xae,0x3d,0x6d,0xe5,0x5f,0xab,0xca,0x00,0x00,0x00,0xd8, + 0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xfe,0xbf,0x02,0x00,0x00,0xfc,0x00,0xab,0xb5,0x56,0xce,0x6f,0x27,0xbd,0xfe, + 0xa5,0xaa,0x32,0x00,0x00,0x00,0xb0,0xff,0xbf,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0x6b,0x01,0x00,0x00,0xfc,0x00,0x6a, + 0xd5,0xad,0x3d,0x2b,0x35,0x5d,0x75,0x75,0x55,0x4a,0x00,0x00,0x00,0x60,0xbf, + 0xff,0xfe,0xef,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xfd,0xff,0xfb,0xfe,0xff, + 0xaa,0x00,0x00,0x00,0xfc,0x00,0xaa,0xaa,0x3e,0xdf,0xbf,0xb6,0xed,0xbf,0x55, + 0x25,0x71,0x00,0x00,0x00,0x40,0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xf7,0xff,0xff,0xfb,0xbf,0xd5,0x00,0x00,0x00,0xfc,0x00,0xaa,0x55, + 0xc9,0x7a,0xff,0xf7,0xd7,0xd5,0xaa,0x92,0x52,0x00,0x00,0x00,0x80,0xfe,0xff, + 0xff,0xff,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdd,0xff,0xff,0xff,0x3f, + 0x00,0x00,0x00,0xfc,0x00,0x54,0xad,0xd6,0xe2,0xff,0xeb,0x7b,0xaf,0x55,0x40, + 0x2c,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0x7f,0x6b,0x05,0x00,0x00,0x00,0xfc,0x00,0x54,0xd5,0xca, + 0xfa,0xbe,0x7e,0x75,0xa9,0x0a,0x89,0x2a,0x00,0x00,0x00,0x00,0xfe,0xff,0xff, + 0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x0d,0x00, + 0x00,0x00,0xfc,0x00,0x58,0x55,0x35,0x2d,0xeb,0xd5,0x56,0x55,0x29,0xa0,0x14, + 0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xfe, + 0xff,0xff,0xff,0xff,0xda,0x06,0x00,0x00,0x00,0xfc,0x00,0x50,0xab,0xda,0xaa, + 0x35,0xae,0xaa,0x2a,0x01,0x40,0x0a,0x00,0x00,0x00,0x00,0xf0,0xfe,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xfb,0xfb,0xff,0xff,0xee,0x47,0x4b,0x01,0x00,0x00, + 0x00,0xfc,0x00,0xa0,0xaa,0x52,0xb5,0xc4,0x32,0xab,0x14,0x84,0x04,0x0d,0x00, + 0x00,0x00,0x00,0xe0,0xff,0x7f,0xff,0xff,0xfd,0xfb,0x7f,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xb5,0x00,0x00,0x00,0x00,0xfc,0x00,0x50,0x95,0xaa,0xaa,0x9a, + 0x8a,0x14,0x44,0x00,0x10,0x05,0x00,0x00,0x00,0x00,0x80,0xf5,0xff,0xef,0xff, + 0xf7,0xff,0xff,0xff,0xff,0xff,0xdf,0xfb,0xff,0xff,0x56,0x00,0x00,0x00,0x00, + 0xfc,0x00,0xa0,0xaa,0x52,0x55,0x01,0x91,0x02,0x11,0x20,0xc0,0x00,0x00,0x00, + 0x00,0x00,0x00,0xdf,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x7f,0x5f,0x15,0x00,0x00,0x00,0x00,0xfc,0x00,0x40,0x55,0xaa,0x4a,0x01,0x48, + 0x29,0x98,0x84,0x24,0x01,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xab,0x0a,0x00,0x00,0x00,0x00,0xfc, + 0x00,0x80,0x55,0xa9,0xaa,0x01,0x20,0x41,0x00,0x00,0xa0,0x00,0x00,0x00,0x00, + 0x00,0x00,0xf8,0xff,0x7f,0xff,0xff,0xdf,0xff,0xff,0xff,0xbf,0xff,0xef,0xff, + 0x6d,0x03,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x55,0x52,0x65,0x92,0x50,0x08, + 0x00,0x10,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0xff,0xff,0xff,0xff,0xff, + 0xfb,0xff,0xff,0xff,0xff,0xff,0x6e,0xab,0x00,0x00,0x00,0x00,0x00,0xfc,0x00, + 0x00,0x54,0x5b,0x05,0x02,0x84,0x00,0x92,0x02,0x14,0x00,0x00,0x00,0x00,0x00, + 0x00,0xc0,0x7b,0xff,0xff,0xdf,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xbf,0x55, + 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0xaa,0x48,0x32,0x21,0x04,0x42,0x00, + 0x80,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfd,0xff,0xf7,0xff,0xff,0xff, + 0xff,0xff,0xff,0xde,0xff,0xbf,0x1a,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00, + 0xac,0x4a,0x49,0x89,0x84,0x08,0x11,0x10,0x05,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x68,0xfb,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0x7f,0xff,0xca,0x06,0x00, + 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x40,0x8a,0x12,0x20,0x4a,0x00,0xa0,0x22, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0xdf,0xbf,0xff,0xfe,0xff,0xbf, + 0xfb,0xff,0xff,0xff,0x6b,0x01,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0xc0, + 0x62,0x05,0x11,0x00,0x82,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xf6,0xff,0xff,0xef,0xf7,0xff,0xef,0xff,0xff,0xbf,0x55,0x00,0x00,0x00, + 0x00,0x00,0x00,0xfc,0x00,0x00,0x80,0x1a,0x65,0xc4,0x52,0x18,0x50,0x18,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe8,0xfc,0xfe,0xff,0xff,0xff,0xbf, + 0xff,0xff,0xad,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x50, + 0x8a,0xa2,0x54,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x5f,0xf3,0xff,0xff,0xff,0xff,0xfe,0xff,0x5b,0x03,0x00,0x00,0x00,0x00, + 0x00,0x00,0xfc,0x00,0x00,0x00,0x40,0x2a,0x42,0x02,0x40,0x61,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xfb, + 0xef,0xeb,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x13, + 0x8a,0x10,0x05,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xdf,0xff,0xff,0x7f,0x7f,0x1f,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xfc,0x00,0x00,0x00,0x00,0xf8,0x35,0x4e,0x74,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xf5, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0xe8, + 0xa2,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xc0,0xff,0xff,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xfc,0x00,0x00,0x00,0x00,0x00,0x20,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc}; diff --git a/ragamatic/tcl/bitmaps/ragamat2.bmp b/ragamatic/tcl/bitmaps/ragamat2.bmp new file mode 100644 index 0000000..8c54e6f Binary files /dev/null and b/ragamatic/tcl/bitmaps/ragamat2.bmp differ diff --git a/ragamatic/tcl/bitmaps/ragamat2.xbm b/ragamatic/tcl/bitmaps/ragamat2.xbm new file mode 100644 index 0000000..8715997 --- /dev/null +++ b/ragamatic/tcl/bitmaps/ragamat2.xbm @@ -0,0 +1,200 @@ +#define ragamat2_width 145 +#define ragamat2_height 155 +static char ragamat2_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00, + 0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x80,0x0f,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00, + 0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00, + 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x70,0x01,0x10,0x00,0x00,0x00, + 0x00,0x80,0x0f,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x03,0x00, + 0x04,0x00,0x00,0x00,0x00,0xb8,0x6b,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00, + 0x00,0x20,0xc0,0x54,0x08,0x10,0x00,0x00,0x00,0xc8,0x5f,0x00,0x00,0x00,0x00, + 0x00,0xfe,0x00,0x00,0x00,0x0c,0x08,0x00,0x91,0xc1,0x00,0x00,0x18,0xf0,0x3b, + 0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x81,0xa2,0x5a,0x04,0x08,0x01, + 0x00,0xb8,0xea,0x3e,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x01,0x10, + 0x00,0x20,0x10,0x04,0x00,0xfc,0xb7,0x7f,0x00,0x00,0x00,0x00,0x00,0xfe,0x00, + 0x00,0x40,0xa0,0x4a,0xa5,0x8a,0x02,0x05,0x00,0x38,0xf8,0x35,0x00,0x00,0x00, + 0x00,0x00,0xfe,0x00,0x00,0x10,0x12,0x00,0x00,0x00,0x48,0x18,0x00,0x78,0xd1, + 0x3f,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x50,0x40,0xaa,0x2a,0x55,0x20, + 0x00,0x00,0xec,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x20,0x92, + 0x85,0x77,0x01,0x01,0x02,0x00,0x38,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0xfe, + 0x00,0x00,0x8c,0x00,0xe8,0x5a,0x2b,0x88,0x10,0x00,0x28,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xfe,0x00,0x00,0x2c,0xa4,0x6a,0xb7,0x07,0x01,0x42,0x00,0xfc, + 0x02,0x80,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0xbe,0x40,0xb0,0xdd,0x46, + 0xd4,0x90,0x00,0x78,0xe0,0x1f,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x58, + 0x12,0xea,0xbf,0x13,0x00,0x40,0x00,0x18,0xf8,0xff,0x00,0x00,0x00,0x00,0x00, + 0xfe,0x00,0x00,0x69,0x88,0x50,0x7b,0x89,0x20,0xc8,0x01,0x00,0xe0,0x5f,0x00, + 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0xab,0x11,0x44,0x08,0x20,0x44,0x52,0x02, + 0x18,0xb8,0xfa,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x80,0x70,0x8a,0x00,0xa5, + 0x8a,0x10,0x31,0x01,0x38,0xe0,0x5f,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x80, + 0xeb,0x53,0x25,0x08,0x20,0x44,0x8a,0x01,0xf8,0xff,0xf7,0x00,0x00,0x00,0x00, + 0x00,0xfe,0x00,0xc0,0xf7,0x4c,0x80,0x42,0x09,0x15,0x28,0x02,0xf8,0xd3,0x5f, + 0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0xc0,0x7e,0xff,0x2a,0x10,0x84,0xd4,0x88, + 0x01,0x38,0x70,0xfd,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0xc0,0xff,0xee,0x1d, + 0x4a,0x50,0xc2,0x88,0x09,0x38,0xd0,0xef,0x00,0x00,0x00,0x00,0x00,0xfe,0x00, + 0x40,0xdb,0xbe,0x78,0xe5,0x2b,0x40,0x74,0x03,0xf4,0xff,0x67,0x01,0x00,0x00, + 0x00,0x00,0xfe,0x00,0xc0,0x7a,0xf7,0xae,0xa2,0x4c,0x00,0x11,0x00,0xf8,0xaf, + 0xff,0x01,0x00,0x00,0x00,0x00,0xfe,0x00,0xc0,0xfe,0x9f,0xb4,0x83,0x62,0x00, + 0x11,0x01,0x38,0xf0,0xb2,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0xc0,0x7a,0xeb, + 0x46,0x25,0x44,0x00,0xa9,0x00,0xf8,0xb7,0xf7,0x01,0x00,0x00,0x00,0x00,0xfe, + 0x00,0x00,0x6b,0x9f,0x5c,0xe7,0x61,0x00,0x12,0x01,0x20,0xf0,0xb2,0x00,0x00, + 0x00,0x00,0x00,0xfe,0x00,0x00,0x7d,0xeb,0xac,0x47,0x54,0x00,0x42,0x00,0xf0, + 0xdf,0xf3,0x01,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0xbf,0xbd,0xd2,0x67,0x63, + 0x84,0x68,0x02,0x70,0x71,0xfd,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x80,0x35, + 0x6b,0x29,0xa7,0x20,0x90,0x10,0x00,0xf0,0xd7,0xd9,0x00,0x00,0x00,0x00,0x00, + 0xfe,0x00,0x80,0xdf,0x77,0x55,0xcb,0x9a,0x80,0x44,0x00,0xb0,0xf3,0xb9,0x01, + 0x00,0x00,0x00,0x00,0xfe,0x00,0x80,0xbf,0xad,0xd6,0xa8,0xa2,0x00,0x50,0x02, + 0xe0,0xdb,0xff,0x01,0x00,0x00,0x00,0x00,0xfe,0x00,0x80,0xbc,0x37,0xab,0xca, + 0x82,0x10,0x80,0x03,0xf0,0xf7,0xd8,0x02,0x00,0x00,0x00,0x00,0xfe,0x00,0x80, + 0x5d,0xad,0xdb,0x08,0xa9,0x00,0x40,0x00,0x00,0xd0,0xff,0x03,0x00,0x00,0x00, + 0x00,0xfe,0x00,0x00,0xad,0xb7,0xd6,0x02,0x00,0x84,0x28,0x00,0x00,0xd8,0xac, + 0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0xee,0x2d,0xb9,0x4b,0x15,0x10,0x60, + 0x01,0xf8,0xf7,0xdd,0x03,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x9d,0x56,0xcb, + 0x8b,0x12,0x40,0x80,0x00,0xf8,0x5b,0xfe,0x00,0x00,0x00,0x00,0x00,0xfe,0x00, + 0x00,0xae,0x5b,0x75,0xcf,0x0b,0x81,0x44,0x00,0x00,0xf0,0xba,0x05,0x00,0x00, + 0x00,0x00,0xfe,0x00,0x00,0xef,0x96,0x8d,0x53,0x2b,0x29,0x88,0x00,0x38,0x6c, + 0xee,0x01,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0xdc,0x5b,0xf4,0xc3,0x15,0xc1, + 0x45,0x01,0xfc,0xf1,0x76,0x05,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x6e,0x17, + 0xb5,0x46,0x2b,0x29,0x81,0x00,0x38,0x28,0xba,0x03,0x00,0x00,0x00,0x00,0xfe, + 0x00,0x00,0x3c,0x5b,0xd5,0x93,0x15,0x21,0x8d,0x00,0xf0,0xb3,0xef,0x07,0x00, + 0x00,0x00,0x00,0xfe,0x00,0x00,0xc8,0x5d,0xfd,0x93,0x2b,0xa8,0x41,0x01,0xf8, + 0x33,0x6b,0x02,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0xec,0x2e,0x5d,0x5b,0x35, + 0x48,0x05,0x00,0xec,0xef,0xdf,0x03,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x58, + 0x95,0xad,0x52,0x2b,0xd1,0x80,0x00,0x38,0x58,0xfb,0x02,0x00,0x00,0x00,0x00, + 0xfe,0x00,0x00,0xd8,0x1b,0xf5,0x52,0x35,0xa1,0x08,0x00,0xf8,0xd7,0xbf,0x07, + 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x70,0xee,0xbc,0x95,0x4a,0xd0,0x64,0x00, + 0xf8,0xbb,0xd6,0x01,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0xa0,0x2b,0xab,0x9a, + 0x06,0xa9,0x01,0x00,0xdc,0x27,0xff,0x06,0x00,0x00,0x00,0x00,0xfe,0x00,0x00, + 0x40,0x55,0xaa,0x55,0x51,0xc2,0x0c,0x00,0xfc,0xcb,0x55,0x03,0x00,0x00,0x00, + 0x00,0xfe,0x00,0x00,0x80,0xb7,0xda,0x12,0x0d,0x60,0x02,0x00,0x18,0x68,0xff, + 0x0e,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x4a,0xaa,0x5a,0x15,0x68,0x00, + 0x00,0x18,0xf0,0xe7,0x02,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0xc0,0x96,0xaa, + 0x12,0x95,0x71,0x03,0x00,0xfc,0x8f,0xba,0x03,0x00,0x00,0x00,0x00,0xfe,0x00, + 0x00,0xe0,0xaf,0x5d,0xa5,0x55,0x35,0x00,0x00,0xfc,0xe3,0x7f,0x0f,0x00,0x00, + 0x00,0x00,0xfe,0x00,0x00,0xa0,0xb6,0xaa,0x15,0x8a,0x49,0x00,0x00,0x00,0x68, + 0xb5,0x05,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0xd0,0x7f,0xb6,0x16,0x45,0x2a, + 0x00,0x00,0x00,0xe4,0xff,0x0f,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0xf0,0x7a, + 0xaa,0x59,0xbe,0x44,0x00,0x00,0x00,0x40,0x55,0x05,0x00,0x00,0x00,0x00,0xfe, + 0x00,0x00,0x50,0xff,0xaa,0x16,0x4b,0x36,0x00,0x00,0x00,0xe0,0xf7,0x07,0x00, + 0x00,0x00,0x00,0xfe,0x00,0x00,0x60,0xeb,0xcb,0x2b,0x56,0x1f,0x00,0x00,0x00, + 0x74,0x90,0x05,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0xb0,0xf5,0x6f,0xbb,0xda, + 0x4a,0x00,0x00,0x00,0x10,0x01,0x06,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x50, + 0xad,0x7f,0xa7,0xe9,0x0b,0x02,0x00,0x00,0x20,0x89,0x00,0x00,0x00,0x00,0x00, + 0xfe,0x00,0x00,0xa0,0xaa,0xfa,0x6f,0xbf,0x00,0x00,0x00,0x00,0x88,0x40,0x00, + 0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x80,0x54,0x4b,0xb5,0x25,0x04,0x00,0x00, + 0x00,0x20,0x12,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x80,0x12,0x24,0x49, + 0x88,0x00,0x00,0x00,0x00,0x0a,0x80,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00, + 0xc0,0x54,0x11,0x01,0x01,0x00,0x00,0x00,0x00,0x80,0x0a,0x02,0x00,0x00,0x00, + 0x00,0xfe,0x00,0x00,0x00,0x15,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x58,0x00, + 0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x49,0x91,0x40,0x80,0x00,0x00, + 0x00,0x00,0xc3,0x4d,0x08,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x26,0x02, + 0x01,0x00,0x10,0x00,0x00,0x80,0x1b,0x09,0x3e,0x00,0x00,0x00,0x00,0xfe,0x00, + 0x00,0x00,0x90,0x24,0x08,0x01,0x00,0x00,0x00,0xe0,0xef,0x02,0x6e,0x00,0x00, + 0x00,0x00,0xfe,0x00,0x00,0x00,0x40,0x82,0x22,0x00,0x00,0x00,0x00,0xbc,0x5b, + 0x83,0x5f,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x21,0x00,0x92,0x10, + 0x00,0x00,0xdb,0xf5,0xfe,0xfb,0x03,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00, + 0x14,0x41,0x20,0x02,0x00,0xc0,0xff,0x5e,0xff,0xfe,0x0a,0x00,0x00,0x00,0xfe, + 0x00,0x00,0x00,0x00,0x20,0x04,0x44,0x00,0x00,0xf0,0xea,0xb6,0xb5,0xdf,0x0f, + 0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0xae,0xde, + 0xdd,0xfe,0xf5,0x3d,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x80,0x6b,0xe8,0x6e,0xed,0x7f,0xff,0x00,0x00,0x00,0xfe,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe8,0x36,0x4d,0x00,0x40,0x1b,0x7c,0x03,0x00,0x00, + 0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xb8,0xcb,0x7e,0x00,0x10,0x1c, + 0xea,0x0d,0x00,0x00,0xfe,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0xba,0xfe, + 0x3b,0x80,0x80,0x74,0xbf,0x27,0x00,0x00,0xfe,0x00,0x00,0xa2,0x14,0x00,0x00, + 0x00,0xc0,0x4d,0x4b,0x3f,0x00,0xc0,0xff,0xdf,0x5f,0x00,0x00,0xfe,0x00,0xc0, + 0x04,0x44,0x01,0x00,0x00,0x40,0xb6,0xfd,0xaf,0x8a,0x14,0xfc,0xee,0x6a,0x01, + 0x00,0xfe,0x00,0x70,0xc9,0x1d,0x0c,0x00,0x00,0x50,0xdb,0x5a,0x3d,0x00,0x42, + 0xdc,0xaf,0xef,0x02,0x00,0xfe,0x00,0x08,0x6a,0xf5,0xa1,0x00,0x00,0xac,0xbd, + 0xf6,0xf6,0xfe,0xff,0xf5,0xf3,0xdb,0x04,0x00,0xfe,0x00,0x5c,0xbc,0xaa,0x82, + 0x01,0x00,0xaa,0x57,0xdd,0xdf,0xfd,0xff,0x5f,0xdb,0xee,0x15,0x00,0xfe,0x00, + 0x24,0xd4,0x5e,0x33,0x00,0x00,0xb4,0xda,0xbe,0xff,0xff,0xff,0xff,0x7f,0xab, + 0x2a,0x00,0xfe,0x00,0xad,0x6d,0xeb,0x48,0x02,0x00,0x55,0x75,0xfd,0xbe,0xfd, + 0xfb,0xef,0xfb,0x57,0xa9,0x00,0xfe,0x00,0x57,0xd2,0x3b,0x84,0x01,0x00,0xb7, + 0xd5,0xb6,0xff,0xfe,0xff,0x7f,0xef,0xbb,0x56,0x00,0xfe,0x00,0x4d,0x88,0x8f, + 0x29,0x01,0x00,0x54,0xad,0xd5,0xed,0xfd,0xfb,0xdb,0xbf,0xaa,0xaa,0x00,0xfe, + 0x80,0x7a,0x45,0x30,0xca,0x03,0x40,0xb0,0xd5,0x6d,0x7f,0xfd,0xef,0xfe,0xfd, + 0xb7,0xaa,0x00,0xfe,0x80,0x2a,0xb5,0xad,0xea,0x08,0xa0,0xd8,0x6a,0xdd,0xef, + 0x5d,0xbd,0x77,0xef,0x56,0x55,0x05,0xfe,0xc0,0xdd,0xaa,0xaa,0x98,0x12,0xc0, + 0x52,0xb7,0xf5,0xbf,0xf7,0xfe,0xdd,0xbb,0xab,0x2a,0x00,0xfe,0x40,0x3c,0x2f, + 0xe8,0xbe,0x05,0x00,0xbd,0xaa,0xb6,0xfd,0xdd,0xef,0x7f,0xff,0xaa,0x15,0x01, + 0xfe,0xa0,0xda,0xeb,0xb1,0xac,0x34,0xc0,0x4d,0xed,0xea,0xef,0xbd,0x7f,0xff, + 0xed,0xad,0x2a,0x04,0xfe,0xe0,0x9e,0x4f,0xef,0x24,0x0a,0xa0,0xb6,0x35,0x77, + 0xff,0xdd,0xef,0xed,0xff,0x55,0xad,0x00,0xfe,0xf0,0xdd,0xce,0xf5,0x69,0x6b, + 0xa0,0xda,0x56,0xdf,0xbb,0xf7,0xbe,0x7f,0xb7,0xaf,0xaa,0x05,0xfe,0xe0,0x9e, + 0x5f,0xd1,0x79,0xc7,0x00,0xab,0xda,0xfa,0xff,0xbf,0xfe,0xdf,0xfd,0xdb,0x2a, + 0x02,0xfe,0xf0,0xdf,0xe7,0xcb,0x58,0x56,0x40,0xdb,0x5a,0xef,0xdb,0xf6,0x6d, + 0xf7,0x6f,0xaf,0xaa,0x02,0xfe,0xe8,0xea,0xce,0xf3,0x5a,0x8e,0x20,0x54,0xb5, + 0xfa,0xff,0xbe,0xfd,0xbd,0xfe,0x5d,0x55,0x01,0xfe,0x28,0xcf,0xd7,0xf1,0x52, + 0x2e,0xe0,0xb5,0xd6,0xbe,0xdf,0xb7,0xed,0xf7,0xef,0xaf,0xaa,0x04,0xfe,0xb0, + 0xf7,0xcb,0xf2,0x53,0xbe,0x50,0xe0,0xaa,0xf5,0xfe,0x5e,0x78,0xbf,0x7b,0xdb, + 0x56,0x01,0xfe,0x28,0xe5,0xc7,0xfb,0x33,0x9a,0xf0,0x97,0xb5,0xfa,0xff,0xb7, + 0xd0,0xff,0xee,0xaf,0x5a,0x08,0xfe,0xb0,0xfd,0xcf,0xb4,0xb5,0x16,0xf0,0x55, + 0xde,0xfe,0xdb,0x5e,0xe2,0xfd,0xbf,0xad,0x0a,0x04,0xfe,0x58,0xe2,0xcf,0xea, + 0xb5,0xcc,0xb0,0x1f,0xd9,0xbb,0xff,0x56,0xfe,0xef,0xff,0x5f,0xfd,0x1f,0xfe, + 0xb8,0x5b,0xcf,0xf2,0x21,0xb4,0xf0,0xff,0x12,0xfe,0xfe,0x26,0x89,0xff,0xdb, + 0x6a,0xc1,0x14,0xfe,0x90,0x95,0xc7,0xda,0x2a,0xd5,0xd0,0xff,0x75,0xa9,0xff, + 0xb6,0x02,0x7b,0xff,0xbf,0x92,0x0b,0xfe,0xa0,0xda,0xe8,0xf5,0x6b,0x2c,0xf0, + 0xff,0xeb,0xdd,0x08,0xc8,0x3a,0xff,0xed,0x13,0xc9,0x14,0xfe,0x70,0xa1,0x83, + 0xe8,0x41,0x9c,0xd0,0xff,0xff,0x77,0xce,0xa8,0x03,0xfe,0x41,0x64,0x3b,0x0b, + 0xfe,0x20,0xb9,0xeb,0xe5,0x03,0x30,0xf0,0xff,0xff,0xff,0xaf,0x54,0xae,0x02, + 0x30,0xa1,0xbe,0x15,0xfe,0xb0,0x95,0x86,0xd2,0x07,0x52,0xf0,0xff,0xff,0xff, + 0xff,0x2a,0xcd,0x67,0x04,0xf5,0x7f,0x0d,0xfe,0x10,0xf5,0xc5,0xc0,0x96,0x62, + 0xb0,0xfb,0xff,0xff,0xff,0x57,0x74,0xfd,0xb7,0x7e,0x6f,0x15,0xfe,0x90,0x75, + 0xa3,0xd8,0x97,0x2a,0xf0,0xff,0xff,0xff,0xff,0xfd,0xde,0xff,0xff,0xff,0xff, + 0x0a,0xfe,0xa0,0xfd,0xca,0xf6,0x97,0x6a,0xd0,0xff,0xff,0xff,0xff,0xdf,0xff, + 0xff,0xff,0xff,0x7f,0x15,0xfe,0x60,0x71,0xc2,0xb2,0xd7,0x7a,0x60,0xff,0xff, + 0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,0x0b,0xfe,0xe0,0xf1,0xc5,0xee,0x56, + 0x12,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x15,0xfe,0x60, + 0xf6,0xd3,0xf3,0x43,0x1a,0xe0,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff, + 0xff,0x16,0xfe,0x00,0xf3,0x92,0xf2,0x43,0x3a,0xa0,0xfb,0xff,0xff,0xff,0xff, + 0x7b,0xff,0xff,0xff,0xff,0x0a,0xfe,0x40,0xf7,0xdb,0xf2,0x43,0x3a,0xe0,0xef, + 0xff,0xff,0xfd,0xfb,0xfd,0xff,0xff,0xef,0xff,0x0a,0xfe,0x80,0xb2,0xd7,0xb0, + 0xc3,0x18,0xa0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0x05,0xfe, + 0xc0,0xee,0x95,0xf9,0x43,0x09,0xc0,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff, + 0xff,0xfb,0x0a,0xfe,0x40,0x6a,0x97,0xa2,0x4b,0x19,0x40,0xff,0xff,0xff,0xff, + 0xdf,0xff,0xbf,0xff,0xff,0xff,0x0d,0xfe,0x40,0xfa,0x93,0xe9,0x09,0x0d,0x40, + 0xff,0xfe,0xff,0xff,0xff,0xff,0xfd,0xde,0xff,0xff,0x05,0xfe,0x80,0xe6,0x93, + 0xe4,0x49,0x1d,0x40,0xff,0xff,0xfb,0xf7,0xff,0xf7,0xff,0xff,0xff,0x7f,0x02, + 0xfe,0x80,0xf6,0x96,0xa5,0x29,0x1d,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0x05,0xfe,0x80,0xee,0x93,0xed,0x89,0x1d,0x00,0xff,0xf7,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x03,0xfe,0x80,0x45,0x93,0xe4,0xa9,0x15, + 0x80,0xfd,0xdf,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0xfe,0x80,0xde, + 0x9b,0x76,0xad,0x07,0x00,0xf7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x02,0xfe,0x00,0x74,0xbb,0xa4,0xe9,0x5d,0x00,0xfe,0xff,0xff,0x7e,0xff,0xff, + 0xff,0xff,0xff,0xff,0x02,0xfe,0x00,0xdd,0x3b,0x85,0xa1,0x54,0x00,0xfc,0xff, + 0xff,0xff,0xff,0xff,0xff,0xf7,0xbf,0x7f,0x01,0xfe,0x80,0xd5,0x3b,0x60,0xa5, + 0x55,0x00,0xfe,0xff,0xff,0xff,0xff,0xdf,0xff,0xbf,0xff,0xfd,0x01,0xfe,0xc0, + 0x3a,0x3f,0xb3,0x05,0xa9,0x00,0xb4,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,0xff, + 0x3f,0x00,0xfe,0x80,0xd2,0xbb,0xa2,0xa6,0xae,0x00,0xf4,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xbf,0x00,0xfe,0x60,0xa5,0x3b,0xe5,0xd0,0xab,0x00,0xd8, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0x00,0xfe,0xb0,0x5a,0x2a,0x83, + 0xb6,0x4a,0x01,0xf0,0xff,0xff,0xff,0xf7,0xff,0xef,0xff,0xff,0x3f,0x00,0xfe, + 0xb0,0xbd,0xbf,0xe5,0xee,0xe2,0x00,0xe0,0xff,0xff,0xff,0xdf,0xff,0xff,0xff, + 0xfe,0x25,0x00,0xfe,0x90,0xd6,0x53,0x75,0xbb,0x52,0x00,0xc0,0xee,0xfe,0xff, + 0xff,0xff,0xff,0xff,0xff,0x17,0x00,0xfe,0xc0,0x5a,0x37,0x67,0xaf,0xaa,0x00, + 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0a,0x00,0xfe,0x60,0xaa,0xfe, + 0xfb,0x5b,0x85,0x00,0x80,0xfe,0xf7,0xfe,0xff,0xff,0x7f,0xff,0xff,0x07,0x00, + 0xfe,0x80,0xd5,0xed,0xbe,0xaa,0x40,0x00,0x00,0xfe,0xff,0xfb,0xff,0xff,0xff, + 0xfb,0xef,0x01,0x00,0xfe,0x80,0x56,0x55,0x54,0x15,0x30,0x00,0x00,0xfc,0xff, + 0xff,0xff,0xff,0xff,0xef,0x33,0x00,0x00,0xfe,0x40,0x55,0x4a,0x55,0x0a,0x28, + 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xcf,0x00,0x00,0xfe,0x00,0x55, + 0x19,0x10,0x80,0x14,0x00,0x00,0x60,0xff,0xff,0xff,0xfd,0xff,0xff,0x35,0x00, + 0x00,0xfe,0x00,0x95,0x12,0x0c,0x04,0x08,0x00,0x00,0x80,0xff,0xff,0xff,0xff, + 0xfe,0xdf,0x0f,0x00,0x00,0xfe,0x00,0xca,0x14,0x42,0x20,0x02,0x00,0x00,0x00, + 0xfe,0xff,0xff,0xff,0xff,0xff,0x04,0x00,0x00,0xfe,0x00,0x90,0x44,0x08,0x04, + 0x00,0x00,0x00,0x00,0xe8,0xff,0xef,0xff,0xff,0x5f,0x01,0x00,0x00,0xfe,0x00, + 0x50,0x92,0x05,0x48,0x00,0x00,0x00,0x00,0x80,0xde,0xff,0xff,0xf7,0x2b,0x00, + 0x00,0x00,0xfe,0x00,0x80,0x15,0x20,0x09,0x00,0x00,0x00,0x00,0x00,0xf0,0xff, + 0xfb,0xbf,0x0d,0x00,0x00,0x00,0xfe,0x00,0x00,0x7c,0xaa,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x80,0xff,0xef,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xfe}; diff --git a/ragamatic/threads.cpp b/ragamatic/threads.cpp new file mode 100644 index 0000000..4313af0 --- /dev/null +++ b/ragamatic/threads.cpp @@ -0,0 +1,279 @@ +// Thread functions for use with syntmono. +// +// No mutexes are currently being used when accessing +// the global variables shared between these threads +// and the main() routine. In a single processor +// environment, no problems have resulted from such data +// sharing. However, if STK is to be run on a true parallel +// processing platform, it is likely that mutexes will be +// necessary. While the mutex calls are simple to code, I +// am trying to keep the code as generic as possible. A +// quick investigation of threads under Windoze indicates +// that mutex functionality is not available, at least with +// the standard libraries. +// +// Gary P. Scavone, 2000. + +#include "threads.h" + +#if defined(__STK_REALTIME_) + +// Default STK socket port ID number +#define SERVICE_PORT 2001 + +// Do OS dependent declarations and includes +#if (defined(__OS_IRIX_) || defined(__OS_Linux_)) +#include +#include +#include +#include +#include +#include + +pthread_t string_thread; + +#elif defined(__OS_Win_) +#include +#include + +unsigned long string_thread; + +#endif + + +// The thread function protocols are slightly different +// under Windoze ... but of course! + +#if (defined(__OS_IRIX_) || defined(__OS_Linux_)) + +void *newStringByPipe(void *) + +#elif defined(__OS_Win_) + +void newStringByPipe(void *) + +#endif + +{ + extern int numStrings, notDone; + extern char **inputString; + int i; + + // Malloc inputString. + inputString = (char **) malloc(MAX_IN_STRINGS * sizeof(char *)); + for ( i=0;i MAX_IN_STRINGS) { + fprintf(stderr,"Losing MIDI data ... try increasing MAX_IN_STRINGS.\n"); + numStrings--; + } + inOne++; + if (inOne == MAX_IN_STRINGS) inOne = 0; + } + } + + // Free inputString. + for ( i=0;i maxfd) maxfd = accept_id; + FD_CLR(soc_id, &rmask); + } + for (fd=0;fd<=maxfd;fd++) { // look for other sockets with data + if (FD_ISSET(fd, &rmask)) { // process the data + parsing = 1; + while (parsing) { + i = recv(fd, socBuf, STRING_LEN,0); + if (i==0) { + printf("Closing a socket connection.\n"); + FD_CLR(fd, &mask); +#if defined(__OS_Win_) + closesocket(fd); +#else + close(fd); +#endif + parsing = 0; + } + n = 0; + while (n < i) { + inputString[inOne][m++] = socBuf[n]; + if (socBuf[n++] == '\n') { + if (inputString[inOne][2] == 'i' && inputString[inOne][3] == 't' + && inputString[inOne][1] == 'x' && inputString[inOne][0] == 'E') { + notDone = 0; + n = i; + parsing = 0; + } + else { + m = 0; + if (n >= i) parsing = 0; + numStrings++; + if (numStrings > MAX_IN_STRINGS) { + fprintf(stderr,"Losing MIDI data ... try increasing MAX_IN_STRINGS.\n"); + numStrings--; + } + inOne++; + if (inOne == MAX_IN_STRINGS) inOne = 0; + memset(inputString[inOne], 0, STRING_LEN); + } + } + } + } + } + } + } +#if defined(__OS_Win_) // Stupid Windoze only stuff + closesocket(soc_id); + WSACleanup(); +#else + shutdown(soc_id,0); +#endif + + // Free inputString. + for ( i=0;iparseThis(inputString[outOne]); type = score->getType(); if (type > 0) { - if (temp = score->getDelta()) { /* SKINI score file */ + // All realtime control messages should have a delta time = 0. + // If we find a non-zero delta time, we're assuming control is + // coming from a score file. + if ((temp = score->getDelta())) { /* SKINI score file */ synlength = (long) (temp * SRATE); for ( i=0; itick(instrument->tick()); @@ -96,40 +99,46 @@ void main(int argc,char *argv[]) } synlength = 0; } - if (type == __SK_NoteOn_ ) { + + switch(type) { + + case __SK_NoteOn_: + // check to see if velocity is zero ... really a NoteOff if (( byte3 = score->getByteThree() ) == 0) - instrument->noteOff(byte3*NORM_7); - else { + instrument->noteOff(0.0); + else { // really a NoteOn j = (int) score->getByteTwo(); - temp = __MIDI_To_Pitch[j]; - lastPitch = temp; - instrument->noteOn(temp,byte3*NORM_7); + lastPitch = __MIDI_To_Pitch[j]; + instrument->noteOn(lastPitch,byte3*NORM_7); } - } - else if (type == __SK_NoteOff_) { - byte3 = score->getByteThree(); - instrument->noteOff(byte3*NORM_7); - } - else if (type == __SK_ControlChange_) { - j = (int) score->getByteTwo(); - byte3 = score->getByteThree(); - instrument->controlChange(j,byte3); - } - else if (type == __SK_AfterTouch_) { - j = (int) score->getByteTwo(); - instrument->controlChange(128,j); - } - else if (type == __SK_PitchBend_) { + break; + + case __SK_NoteOff_: + instrument->noteOff(NORM_7*score->getByteThree()); + break; + + case __SK_ControlChange_: + instrument->controlChange((int)score->getByteTwo(), + score->getByteThree()); + break; + + case __SK_AfterTouch_: + instrument->controlChange(128,score->getByteTwo()); + break; + + case __SK_PitchBend_: temp = score->getByteTwo(); j = (int) temp; - temp -= j; + temp -= j; // floating-point remainder lastPitch = __MIDI_To_Pitch[j] * pow(2.0,temp / 12.0) ; instrument->setFreq(lastPitch); - } - else if (type == __SK_ProgramChange_) { + break; + + case __SK_ProgramChange_: j = (int) score->getByteTwo(); if (j != instNum) { instrument->noteOff(1.0); + // let the old instrument settle a little for (i=0;i<4096;i++) { outSample = reverb->tick(instrument->tick()); for ( int k=0; ktick(outSample); @@ -141,6 +150,7 @@ void main(int argc,char *argv[]) } instrument->noteOn(lastPitch, 0.2); } + break; } } if (rtInput) { @@ -167,4 +177,5 @@ void main(int argc,char *argv[]) delete reverb; printf("syntmono finished ... goodbye.\n"); + return 0; } diff --git a/syntmono/tcl/TCLDemo.tcl b/syntmono/tcl/TCLDemo.tcl index 208df20..4d8ac1a 100644 --- a/syntmono/tcl/TCLDemo.tcl +++ b/syntmono/tcl/TCLDemo.tcl @@ -103,6 +103,7 @@ if {[file isdirectory bitmaps]} { } else { set bitmappath tcl/bitmaps } + button .pretty -bitmap @$bitmappath/prcFunny.xbm \ -background white -foreground black .pretty config -bitmap @$bitmappath/prc.xbm @@ -286,7 +287,7 @@ proc patchChange {value} { } if {$value==5} { # Mandolin .pretty config -bitmap @$bitmappath/KPluk.xbm - .left.bPressure config -state disabled -label "Disabled" + .left.bPressure config -state normal -label "Microphone Position" .left.pitch config -state normal -label "MIDI Note Number" .left.cont2 config -state normal -label "Mandolin Body Size" .right.cont4 config -state normal -label "Pick Position" @@ -296,10 +297,12 @@ proc patchChange {value} { set cont2 64.0 set cont4 64.0 set cont11 96.0 + set press 64.0 printWhatz "ControlChange 0.0 1 " 1 $cont1 printWhatz "ControlChange 0.0 1 " 2 $cont2 printWhatz "ControlChange 0.0 1 " 4 $cont4 printWhatz "ControlChange 0.0 1 " 11 $cont11 + changePress $press } if {$value>=6 && $value<=8 } { # Modal Instruments .pretty config -bitmap @$bitmappath/KModal.xbm @@ -413,19 +416,46 @@ proc patchChange {value} { .right.cont4 config -state normal -label "(<--High) Damping (Low-->)" .right.cont11 config -state normal -label "Number of Objects" .right.cont1 config -state normal -label "Resonance Center Frequency" - if {$value==19} {set pitch 0} - if {$value==20} {set pitch 2} - if {$value==21} {set pitch 1} - if {$value==22} {set pitch 5} - if {$value==23} {set pitch 4} - if {$value==24} {set pitch 6} - if {$value==25} {set pitch 7} - if {$value==26} {set pitch 3} - if {$value==27} {set pitch 8} - if {$value==28} {set pitch 9} - if {$value==29} {set pitch 10} - if {$value==30} {set pitch 11} - if {$value==31} {set pitch 12} + switch $value { + 19 { + set pitch 0 + .pretty config -bitmap @$bitmappath/maraca.xbm + } + 20 {set pitch 2} + 21 { + set pitch 1 + .pretty config -bitmap @$bitmappath/cabasa.xbm + } + 22 { + set pitch 5 + .pretty config -bitmap @$bitmappath/bamboo.xbm + } + 23 {set pitch 4} + 24 { + set pitch 6 + .pretty config -bitmap @$bitmappath/tambourine.xbm + } + 25 { + set pitch 7 + .pretty config -bitmap @$bitmappath/sleighbell.xbm + } + 26 { + set pitch 3 + .pretty config -bitmap @$bitmappath/guiro.xbm + } + 27 {set pitch 8} + 28 {set pitch 9} + 29 { + set pitch 10 + .pretty config -bitmap @$bitmappath/rachet.xbm + } + 30 {set pitch 11} + 31 {set pitch 12} + } + set cont1 64.0 + set cont2 64.0 + set cont4 64.0 + set cont11 64.0 puts $outID [format "NoteOn 0.0 1 %3.2f %3.2f" $pitch $press] flush $outID } @@ -453,8 +483,12 @@ proc printWhatz {tag value1 value2 } { } proc changePress {value} { - global outID - puts $outID [format "AfterTouch 0.0 1 %3.2f" $value] + global outID patchnum + if { $patchnum == 5} { + puts $outID [format "ControlChange 0.0 1 411 %3.2f" $value] + } else { + puts $outID [format "AfterTouch 0.0 1 %3.2f" $value] + } flush $outID } @@ -468,9 +502,7 @@ proc changePitch {value} { set d .socketdialog proc setComm {} { - global outID - global commtype - global d + global outID commtype d if {$commtype == "stdout"} { if { [string compare "stdout" $outID] } { set i [tk_dialog .dialog "Break Socket Connection?" {You are about to break an existing socket connection ... is this what you want to do?} "" 0 Cancel OK] diff --git a/syntmono/tcl/TCLStruk.tcl b/syntmono/tcl/TCLStruk.tcl index 0e7f39d..0ea7d94 100644 --- a/syntmono/tcl/TCLStruk.tcl +++ b/syntmono/tcl/TCLStruk.tcl @@ -141,8 +141,7 @@ bind . { bind . +myExit proc myExit {} { - global pitch - global outID + global pitch outID puts $outID [format "NoteOff 0.0 1 %f 127" $pitch ] flush $outID puts $outID [format "ExitProgram"] @@ -164,12 +163,7 @@ proc noteOff {pitchVal pressVal} { } proc patchChange {value} { - global outID - global bitmappath - global cont1 - global cont2 - global cont4 - global cont11 + global outID bitmappath cont1 cont2 cont4 cont11 puts $outID [format "ProgramChange 0.0 1 %i" $value] if {$value==4} { .pretty config -bitmap @$bitmappath/KPluk.xbm @@ -224,9 +218,7 @@ proc changePitch {value} { set d .socketdialog proc setComm {} { - global outID - global commtype - global d + global outID commtype d if {$commtype == "stdout"} { if { [string compare "stdout" $outID] } { set i [tk_dialog .dialog "Break Socket Connection?" {You are about to break an existing socket connection ... is this what you want to do?} "" 0 Cancel OK] diff --git a/syntmono/tcl/bitmaps/bamboo.xbm b/syntmono/tcl/bitmaps/bamboo.xbm new file mode 100644 index 0000000..cf91ed5 --- /dev/null +++ b/syntmono/tcl/bitmaps/bamboo.xbm @@ -0,0 +1,138 @@ +#define bamboo_width 125 +#define bamboo_height 126 +static char bamboo_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x24,0x00,0x04,0xe0,0x00,0x00,0x00,0x00,0x22,0x40,0x04,0x88, + 0x00,0x19,0x20,0x03,0x24,0x80,0x04,0xe0,0x00,0x00,0x88,0x01,0x22,0x40,0x04, + 0x88,0x00,0x11,0x20,0x02,0x64,0x80,0x04,0xe0,0x00,0x00,0x88,0x00,0x22,0x40, + 0x04,0x98,0x00,0x11,0x20,0x02,0x24,0x80,0x04,0xe0,0x00,0x00,0x08,0x01,0x22, + 0x40,0x04,0x88,0x00,0x11,0x60,0x02,0x24,0x80,0x04,0xe0,0x00,0x00,0x88,0x00, + 0x22,0x40,0x02,0x88,0x00,0x09,0x00,0x01,0x44,0x80,0x04,0xe0,0x00,0x00,0x08, + 0x01,0x22,0x40,0x04,0x88,0x00,0x11,0x20,0x02,0x24,0x80,0x04,0xe0,0x00,0x00, + 0x08,0x01,0x22,0x40,0x04,0x88,0x00,0x11,0x20,0x02,0x64,0x80,0x04,0xe0,0x00, + 0x00,0x88,0x00,0x22,0x40,0x04,0x88,0x00,0x11,0x60,0x02,0x24,0x80,0x04,0xe0, + 0x00,0x00,0x08,0x01,0x22,0x40,0x04,0x88,0x00,0x11,0x20,0x02,0x24,0x80,0x04, + 0xe0,0x00,0x00,0x08,0x01,0x22,0x40,0x04,0x88,0x00,0x11,0x20,0x02,0x44,0x80, + 0x04,0xe0,0x00,0x00,0x88,0x00,0x22,0x40,0x04,0x88,0x00,0x11,0x20,0x02,0x24, + 0x80,0x04,0xe0,0x00,0x00,0x08,0x01,0x22,0x40,0x04,0x98,0x00,0x13,0x40,0x02, + 0x64,0x80,0x04,0xe0,0x00,0x00,0x08,0x01,0x22,0x40,0x04,0x88,0x00,0x11,0x20, + 0x02,0x24,0x80,0x04,0xe0,0x00,0x00,0x08,0x01,0x22,0x40,0x04,0x88,0x00,0x11, + 0x40,0x00,0x24,0x80,0x04,0xe0,0x00,0x00,0x88,0x00,0x22,0x40,0x04,0x88,0x00, + 0x12,0x60,0x03,0x68,0x80,0x04,0xe0,0x00,0x00,0xf8,0x01,0x76,0xc0,0x07,0xf8, + 0x01,0x3f,0xe0,0x0f,0xfe,0xc0,0x1f,0xe0,0x00,0x00,0xf8,0x03,0xfe,0xe0,0x1f, + 0xfc,0xc7,0xff,0xf0,0x1e,0xef,0xf3,0x3f,0xe0,0x00,0x00,0x5e,0x87,0xab,0xf1, + 0x3a,0x9e,0xc6,0xd3,0xf8,0x9a,0x5f,0xf3,0x75,0xe0,0x00,0x00,0xbe,0x8e,0xb7, + 0xf3,0x77,0x7a,0x4d,0xaf,0xe9,0xb6,0x7d,0xd3,0x6a,0xe0,0x00,0x00,0x5a,0x8d, + 0xaf,0xf3,0x74,0xbf,0xe7,0xf5,0x78,0x3d,0xaf,0xf3,0x7f,0xe0,0x00,0x00,0xfe, + 0x8f,0xff,0xf3,0x3f,0xfe,0xcf,0xff,0xf9,0xaf,0xff,0xd2,0x5f,0xe0,0x00,0x00, + 0xfa,0x8b,0x7e,0xc2,0x4f,0xda,0x44,0x97,0x68,0x23,0x2c,0x92,0x40,0xe0,0x00, + 0x00,0x0a,0x88,0x00,0x52,0x40,0x09,0x28,0x01,0x21,0xa0,0x04,0x92,0x40,0xe0, + 0x00,0x00,0x0a,0x88,0x02,0x52,0x20,0x0a,0x44,0x01,0x49,0xa0,0x04,0x92,0x40, + 0xe0,0x00,0x00,0x0a,0x88,0x02,0x52,0x40,0x12,0x48,0x02,0x29,0xa0,0x04,0x92, + 0x40,0xe0,0x00,0x00,0x0a,0x88,0x02,0x42,0x40,0x0a,0x48,0x01,0x49,0xa0,0x2c, + 0x92,0x47,0xe0,0x00,0x00,0x08,0x80,0x02,0x52,0x40,0x12,0x48,0x02,0x49,0x91, + 0x78,0x12,0x4d,0xe0,0x00,0x00,0x12,0x88,0x02,0x52,0x40,0x0a,0x4c,0x01,0xc9, + 0xa3,0xd8,0x12,0x49,0xe0,0x00,0x00,0x0a,0x08,0x02,0x92,0x40,0xd2,0x44,0x1e, + 0xc9,0xa6,0x50,0x12,0x4f,0xe0,0x00,0x00,0x0a,0x88,0x14,0x92,0x47,0xf2,0x48, + 0x36,0x89,0x22,0x21,0x12,0x40,0xe0,0x00,0x00,0x52,0x88,0x3c,0x92,0x4d,0x22, + 0x49,0xb4,0x08,0xa1,0x00,0x12,0x40,0xe0,0x00,0x00,0xf2,0x88,0x24,0x92,0x44, + 0xe2,0x48,0x0c,0x09,0x20,0x01,0x12,0x40,0xe0,0x00,0x00,0xb2,0x89,0x38,0x12, + 0x43,0x42,0x48,0x00,0x09,0xa0,0x00,0x12,0x40,0xe0,0x00,0x00,0xa2,0x88,0x11, + 0x12,0x40,0x02,0x4c,0x80,0x08,0x20,0x01,0x12,0x40,0xe0,0x00,0x00,0xc2,0x88, + 0x00,0x12,0x40,0x02,0x40,0x00,0x09,0xa0,0x00,0x12,0x40,0xe0,0x00,0x00,0x02, + 0x88,0x00,0x12,0x40,0x02,0x4c,0x00,0x09,0x20,0x01,0x12,0x40,0xe0,0x00,0x00, + 0x02,0x88,0x00,0x12,0x40,0x02,0x48,0x00,0x09,0xa0,0x00,0x12,0x40,0xe0,0x00, + 0x00,0x02,0x88,0x00,0x12,0x40,0x02,0x48,0x80,0x08,0x20,0x01,0x12,0x40,0xe0, + 0x00,0x00,0x02,0x88,0x00,0x12,0x40,0x02,0x48,0x00,0x09,0xa0,0x00,0x12,0x40, + 0xe0,0x00,0x00,0x02,0x88,0x00,0x12,0x40,0x02,0x48,0x00,0x09,0x20,0x01,0x12, + 0x40,0xe0,0x00,0x00,0x02,0x88,0x00,0x12,0x40,0x02,0x48,0x00,0x09,0xa0,0x00, + 0x12,0x40,0xe0,0x00,0x00,0x02,0x88,0x00,0x12,0x00,0x02,0x48,0x80,0x08,0x20, + 0x01,0x12,0x40,0xe0,0x00,0x00,0x02,0x88,0x00,0x12,0x40,0x02,0x48,0x00,0x09, + 0x20,0x01,0x12,0x40,0xe0,0x00,0x00,0x02,0x88,0x00,0x12,0x40,0x02,0x48,0x00, + 0x09,0xa0,0x00,0x12,0x40,0xe0,0x00,0x00,0x02,0x88,0x00,0x12,0x40,0x02,0x48, + 0x00,0x09,0x20,0x01,0x12,0x40,0xe0,0x00,0x00,0x02,0x88,0x00,0x12,0x40,0x02, + 0x48,0x00,0x09,0x20,0x01,0x12,0x40,0xe0,0x00,0x00,0x02,0x88,0x00,0x12,0x40, + 0x02,0x48,0x00,0x09,0xa0,0x00,0x12,0x40,0xe0,0x00,0x00,0x02,0x88,0x00,0x12, + 0x40,0x02,0x44,0x00,0x09,0x20,0x01,0x12,0x40,0xe0,0x00,0x00,0x02,0x88,0x00, + 0x12,0x40,0x02,0x48,0x00,0x09,0x20,0x01,0x32,0x40,0xe0,0x00,0x00,0x02,0x88, + 0x00,0x12,0x40,0x02,0x48,0x80,0x08,0x20,0x01,0x12,0x40,0xe0,0x00,0x00,0x02, + 0x88,0x00,0x12,0x40,0x02,0x48,0x00,0x09,0xa0,0x00,0x12,0x40,0xe0,0x00,0x00, + 0x02,0x88,0x00,0x12,0x40,0x02,0x40,0x00,0x09,0x20,0x01,0x12,0x40,0xe0,0x00, + 0x00,0x02,0x88,0x00,0x12,0x40,0x02,0x48,0x00,0x09,0x20,0x01,0x12,0x40,0xe0, + 0x00,0x00,0x02,0x88,0x00,0x12,0x00,0x02,0x48,0x00,0x09,0x20,0x01,0x12,0x40, + 0xe0,0x00,0x00,0x02,0x88,0x00,0x12,0x40,0x02,0x48,0x00,0x09,0x20,0x01,0x12, + 0x40,0xe0,0x00,0x00,0x02,0x08,0x01,0x12,0x40,0x02,0x48,0x00,0x09,0x20,0x01, + 0x22,0x40,0xe0,0x00,0x00,0x02,0x88,0x00,0x12,0x40,0x02,0x48,0x00,0x09,0x20, + 0x01,0x12,0x40,0xe0,0x00,0x00,0x02,0x88,0x00,0x12,0x40,0x02,0x40,0x00,0x09, + 0x20,0x01,0x12,0x40,0xe0,0x00,0x00,0x02,0x88,0x00,0x12,0x40,0x02,0x48,0x00, + 0x09,0x20,0x01,0x24,0x40,0xe0,0x00,0x00,0x02,0x08,0x01,0x12,0x40,0x02,0x48, + 0x00,0x09,0x20,0x01,0x32,0x40,0xe0,0x00,0x00,0x02,0x88,0x00,0x12,0x40,0x02, + 0x48,0x00,0x09,0x20,0x01,0xc2,0x72,0xe0,0x00,0x00,0x04,0x88,0x00,0x12,0x40, + 0x02,0x48,0x00,0x11,0x20,0x03,0x83,0x0e,0xe0,0x00,0x00,0x02,0x08,0x01,0x12, + 0x40,0x02,0x48,0x00,0x09,0x20,0xfc,0x01,0x00,0xe0,0x00,0x00,0x02,0x88,0x00, + 0x12,0x40,0x02,0x48,0x00,0x19,0x20,0x00,0x00,0x00,0xe0,0x00,0x00,0x04,0x08, + 0x01,0x12,0x40,0x02,0x40,0x00,0xe1,0x1c,0x00,0x00,0x00,0xe0,0x00,0x00,0x02, + 0x88,0x00,0x12,0x40,0x06,0x48,0x00,0x01,0x07,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x02,0x88,0x00,0x12,0x40,0x02,0x48,0x00,0x01,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x04,0x08,0x01,0x32,0x40,0x02,0x88,0x81,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x02,0x88,0x00,0x12,0x40,0x02,0x08,0x7e,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x04,0x18,0x01,0x12,0x40,0x06,0x08,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x02,0x88,0x00,0x12,0x40,0x9c,0x06,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x04,0x08,0x01,0x62,0x60,0xf0,0x03,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x02,0x88,0x00,0x86,0x1f,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x04,0x08,0x01,0x02,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x02,0x08,0x01,0x02,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x04,0x08,0xae,0x01,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x02,0x10,0x50,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x04,0x08,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x0c,0x0c,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0xf0,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0}; diff --git a/syntmono/tcl/bitmaps/cabasa.xbm b/syntmono/tcl/bitmaps/cabasa.xbm new file mode 100644 index 0000000..858461c --- /dev/null +++ b/syntmono/tcl/bitmaps/cabasa.xbm @@ -0,0 +1,138 @@ +#define cabasa_width 125 +#define cabasa_height 126 +static char cabasa_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x54,0xbb,0xff,0x4a, + 0x01,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0xc0,0x0f,0x00,0x00, + 0xa0,0x3f,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x3c,0x00,0x00, + 0x00,0x00,0xc0,0x0f,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x80,0x03,0x00, + 0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0xc0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x20, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x10,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0xc0,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x10,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x80,0x01,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x38,0x00,0x00,0x00,0xd8,0x01,0x00,0x00,0x00,0x03,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x90,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x30,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x02,0x00,0xe0,0x00,0x00,0x00,0x00,0x60,0x0c,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x03,0x00,0xe0,0x00,0x00,0x00,0x00,0xa0,0x71,0x00,0x00,0x00,0x00,0x00, + 0x00,0xc0,0x02,0x00,0xe0,0x00,0x00,0x00,0x00,0x30,0x04,0x07,0x00,0x00,0x00, + 0x00,0x00,0x30,0x01,0x00,0xe0,0x00,0x00,0x00,0x00,0xd8,0x50,0x90,0x02,0x00, + 0x00,0x00,0x00,0xc6,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x50,0xc1,0x04,0x0a, + 0x05,0x00,0x00,0x95,0xd1,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x70,0x06,0x3c, + 0x01,0xfd,0xaa,0xda,0x05,0xdc,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0xe8,0x1d, + 0x80,0x3e,0x00,0x00,0x00,0xe0,0xcf,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x80, + 0x67,0x00,0x80,0xf4,0xb6,0xf6,0x13,0x7b,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0xb8,0x9c,0x01,0x00,0x00,0x49,0x02,0xd0,0xcc,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0xf0,0xf2,0x0b,0x00,0x00,0x00,0x80,0x98,0xeb,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0xa0,0xdb,0xdb,0x00,0x00,0x00,0x90,0x53,0x63,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0xb8,0x0d,0x47,0x97,0x00,0x00,0x6e,0x2f,0x7c,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0xe8,0x72,0x7c,0x6b,0xef,0xbf,0x09,0xa5,0xee,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0xa8,0xc7,0xa1,0x5b,0x2d,0xa9,0xee,0xa4,0x61,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0xb0,0x6e,0xab,0xd5,0xb5,0xcd,0x96,0x96,0x6c, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0xf8,0x5c,0x99,0xd4,0x9a,0x5a,0x72,0xaf, + 0x6f,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0xa0,0x33,0xcf,0xaf,0x4a,0xf3,0xbe, + 0x99,0x60,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0xb8,0xdd,0x54,0x99,0xd3,0xae, + 0x25,0x75,0x7e,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0xe8,0xf4,0xf5,0x6b,0x3d, + 0x6d,0xdd,0xc4,0x6b,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x94,0xe7,0xb5,0x69, + 0xa5,0x51,0xb3,0xeb,0x63,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x18,0x3e,0xae, + 0xf4,0x5b,0x96,0x26,0xb7,0x6c,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0xf8,0xb4, + 0xd2,0x17,0xb5,0xbd,0xed,0x2c,0x7f,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0xcc, + 0xc3,0x1b,0xbb,0xa6,0xed,0xbf,0xe9,0x71,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x58,0x0f,0x5d,0xe6,0xfb,0x3f,0x57,0xfa,0x7c,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x3c,0x74,0xf2,0x99,0x56,0xd0,0xfa,0x9f,0x56,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0xec,0xb5,0x4b,0xfe,0xf3,0xbf,0xfd,0xe5,0x6b,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0xa6,0x96,0x7c,0x91,0x6e,0x69,0x4b,0xfb,0x7c,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0xb6,0xfd,0xf4,0x9e,0xb6,0xd6,0xea,0x2f,0x7e,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0xca,0xe0,0x93,0x3f,0xf7,0xfa,0xef,0xeb,0x2f,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x36,0x87,0xef,0xd2,0xff,0xdb,0xb5,0xfa,0x79, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x84,0x51,0x74,0x9f,0x84,0x2d,0xe5,0x9f, + 0x6e,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x18,0xa4,0x36,0xf9,0xbd,0xed,0x7e, + 0xa5,0x68,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0xf0,0x18,0xa9,0xd6,0xff,0xfe, + 0xbf,0x6c,0x6d,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x80,0xc3,0x43,0xb7,0xa0, + 0x2d,0x45,0x0b,0x33,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x0e,0x70,0x03, + 0xbf,0xf6,0x3a,0x3a,0x18,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0xf0,0x01, + 0xd0,0xff,0x96,0xde,0x80,0x07,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x80, + 0xae,0x00,0x50,0xb5,0x02,0xda,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x00,0xf0,0x5f,0x04,0x00,0x48,0x1f,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0xff,0xff,0x57,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x40,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x60,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x40,0x04,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x60,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x40,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x60,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x40,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x60,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40, + 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20, + 0x60,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x20,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x60,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x20,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x20,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x40,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x40,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x60,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x40, + 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10, + 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x10,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x10,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x10,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x10,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x08,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xc0,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x40,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xc0,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xc0,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0xc0,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x80,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, + 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04, + 0x80,0x01,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x04,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x04,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x04,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0xc0,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0xc0,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x40,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x40,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x40,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x60, + 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08, + 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x10,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x10,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x20,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x60,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0}; diff --git a/syntmono/tcl/bitmaps/guiro.xbm b/syntmono/tcl/bitmaps/guiro.xbm new file mode 100644 index 0000000..de7abf1 --- /dev/null +++ b/syntmono/tcl/bitmaps/guiro.xbm @@ -0,0 +1,138 @@ +#define guiro_width 125 +#define guiro_height 126 +static char guiro_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf4,0x0f,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa8,0x05,0x50,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x1f,0x00,0x40,0x01,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf4,0x20,0x00,0x00,0x05, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x0b,0x29,0x00,0x00, + 0xf0,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x00,0x00,0x00, + 0x00,0x00,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd0,0x40,0x02,0x40, + 0x00,0x00,0x84,0x01,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x08, + 0x40,0x00,0x00,0xe0,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x20,0x09, + 0x00,0x00,0x00,0x00,0x30,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x00, + 0x00,0x00,0x80,0x00,0x00,0x10,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x05, + 0x09,0x02,0x00,0x08,0x04,0x21,0x1a,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x80, + 0x00,0x00,0x20,0x04,0x00,0x01,0x00,0x08,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x60,0x40,0x10,0x00,0x00,0x00,0x00,0x80,0x04,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x10,0x01,0x00,0x00,0x00,0x00,0x01,0x10,0x06,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x0a,0x04,0x00,0x01,0x00,0x00,0x40,0x00,0x02,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x10,0x00,0x89,0x01,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x01,0x20,0x00,0x00,0x00,0x00,0x12,0xc0,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x80,0x05,0x00,0x00,0x00,0x04,0x04,0x41,0x30,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x60,0x20,0x02,0x00,0x00,0x00,0x40,0x00,0x1c,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x10,0x02,0x00,0x00,0x20,0x00,0x00,0x02,0x07, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x0c,0x90,0x00,0x00,0x00,0x00,0x29,0xe1, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x03,0x06,0x00,0x00,0x01,0x11,0x80, + 0x3c,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x60,0x00,0x04,0x00,0x00,0x00,0x80, + 0x64,0x07,0x00,0x00,0x00,0xe0,0x00,0x00,0x80,0x0e,0x00,0x04,0x88,0x08,0x00, + 0x10,0xf2,0x00,0x00,0x00,0x00,0xe0,0x00,0xaa,0x7a,0x00,0x00,0x08,0x00,0x00, + 0x09,0x44,0x0d,0x00,0x00,0x00,0x00,0xe0,0x00,0x4d,0x05,0x00,0x00,0x48,0x02, + 0x40,0x80,0xd0,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x22,0x05, + 0x04,0x10,0x10,0x2c,0x00,0x00,0x00,0x00,0x00,0xe0,0x80,0x04,0x00,0xa0,0x04, + 0x24,0x88,0x0a,0x42,0x07,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x80,0x0a, + 0x90,0x4c,0x20,0x20,0x39,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x80,0x08,0x10, + 0x40,0xfb,0x06,0x08,0xd5,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x81, + 0x44,0xb4,0x02,0xb4,0xea,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x10,0x92,0x07,0x00,0x40,0x0d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x80,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x20,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x02,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0xd2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0}; diff --git a/syntmono/tcl/bitmaps/maraca.xbm b/syntmono/tcl/bitmaps/maraca.xbm new file mode 100644 index 0000000..3284471 --- /dev/null +++ b/syntmono/tcl/bitmaps/maraca.xbm @@ -0,0 +1,138 @@ +#define maraca_width 125 +#define maraca_height 126 +static char maraca_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xdf,0x03,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x0c,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x0e,0x00,0x28,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x40,0x00,0x40,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x01,0x80,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00, + 0x01,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x8c,0x00,0x00, + 0x02,0x01,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00, + 0x00,0x40,0x01,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x80,0x03, + 0x00,0x20,0x08,0x01,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0xc0, + 0x00,0x00,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x30,0x10,0x02,0x04,0x84,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x0e,0x00,0x08,0x80,0x90,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0xc0,0x01,0x00,0x00,0x10,0x81,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x1f,0x40,0x20,0x00,0x00,0x64,0x00,0x00,0xaa,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x7a,0x00,0x00,0x04,0xa2,0x24,0x30,0x00,0xe0,0xd5,0x07,0x00,0xe0, + 0x00,0x00,0xa8,0x00,0x00,0x00,0x92,0x08,0x00,0x09,0x00,0x1a,0x00,0x38,0x00, + 0xe0,0x00,0x00,0x06,0x00,0x00,0xfd,0x05,0x02,0x82,0x06,0x00,0x03,0x00,0xe0, + 0x00,0xe0,0x00,0xc0,0x01,0x00,0x74,0x57,0x7b,0x20,0xa8,0x01,0xc0,0x00,0x02, + 0x80,0x00,0xe0,0x00,0x14,0x00,0x80,0x0a,0x00,0x80,0x97,0x3e,0x00,0x20,0x02, + 0x08,0x00,0x03,0xe0,0x00,0x02,0x00,0x50,0x01,0x00,0x00,0xfc,0x03,0x00,0x10, + 0x10,0x00,0x00,0x02,0xe0,0x80,0x00,0x00,0x2a,0x00,0x00,0x00,0x00,0x00,0x00, + 0x0c,0x00,0x00,0x00,0x00,0xe0,0x80,0x00,0xf4,0x01,0x00,0x00,0x00,0x00,0x00, + 0x00,0x03,0x00,0x40,0x00,0x04,0xe0,0x00,0x54,0x0f,0x00,0x00,0x00,0x00,0x00, + 0x00,0xc0,0x00,0x00,0x00,0x00,0x02,0xe0,0x00,0x03,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x68,0x00,0x01,0x00,0x04,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x15,0x00,0x00,0x00,0x40,0x02,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x10,0xa0,0x00,0x08,0x20,0x00,0x00,0x03,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0xa0,0x87,0x00,0x40,0x00,0x00,0x00,0x00,0x01,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x40,0x04,0x89,0xc8,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x58,0x00,0x00,0x02,0x21,0x00,0x00,0x20,0x60,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x07,0x00,0x00,0xc0,0xff,0x17,0x49,0x00,0x39,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x84,0x3a,0x80,0x5a,0x80,0x24,0x0e,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x71,0x00,0x00,0xe0,0x15,0xd0,0x02, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x80,0x28,0xa9,0x04,0x00,0x00,0x00,0xde,0x6f, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x42,0x04,0x00,0x00,0x00,0x00,0x20, + 0x09,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0}; diff --git a/syntmono/tcl/bitmaps/rachet.xbm b/syntmono/tcl/bitmaps/rachet.xbm new file mode 100644 index 0000000..58be7b6 --- /dev/null +++ b/syntmono/tcl/bitmaps/rachet.xbm @@ -0,0 +1,138 @@ +#define rachet_width 125 +#define rachet_height 126 +static char rachet_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0xfa, + 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x01,0x0e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x00,0xb4,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x11,0x67,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x50,0x00,0xc9,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x04,0x41,0x88,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0xf0,0x23,0x08,0x38,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x1a,0x1d,0x00,0x22,0x03,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x94,0x00,0x20,0x06,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x01,0x70,0x20,0xe0,0x04,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x80,0x00,0x80,0x04,0x90,0x05,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x80,0x81,0x0a,0x04,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xc1,0x0c,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x80,0x00,0x00,0x52,0x10,0x05, + 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x85, + 0x09,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x40,0x00,0x00,0x0c, + 0xe0,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x80,0x01, + 0x08,0xa8,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x40,0x50, + 0x03,0x8c,0x86,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x80, + 0x20,0x06,0xe8,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x10,0x05,0x18,0xd0,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x80,0x30,0x06,0x08,0x80,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x80,0x40,0x05,0x08,0x42,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x91,0x02,0x50,0x68,0x0a,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x04,0x00,0x08,0x20,0x12,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x01,0x01,0x88,0x1a,0x26,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x01,0x01,0x0c,0x0a,0x42,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x82,0x00,0xac,0x01,0x46,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x6d,0x00,0x08,0x10,0x0c,0x01, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x28,0x00,0x18,0x00,0x14, + 0x01,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x80,0x02,0x48,0x10, + 0x2c,0x02,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x6a,0x08,0x08, + 0x00,0x4c,0x04,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x80,0x10,0x0a, + 0x18,0x20,0x88,0x08,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0xc0,0x82, + 0x09,0x80,0x00,0x18,0x11,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x60,0x08,0x10,0x40,0x18,0x22,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x80,0x00,0x10,0x10,0x00,0x10,0x44,0x00,0x00,0x80,0x03,0x00,0xe0,0x00,0x00, + 0x00,0x80,0x20,0x08,0x10,0x00,0x30,0x88,0x00,0x00,0x60,0x00,0x00,0xe0,0x00, + 0x02,0x00,0x40,0x20,0x09,0x30,0x01,0x30,0x08,0x01,0x00,0x18,0x06,0x00,0xe0, + 0x00,0x08,0x00,0x80,0x20,0x14,0x20,0x00,0x20,0x10,0x01,0x00,0x04,0x01,0x00, + 0xe0,0x00,0x00,0x00,0x80,0x20,0x07,0x20,0x80,0x60,0x20,0x04,0x80,0xc1,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x20,0xc7,0x1d,0x20,0x02,0x60,0x40,0x04,0x40,0x20, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0xb8,0x00,0x60,0x00,0x40,0x80,0x08,0x10, + 0x0c,0x00,0x00,0xe0,0x00,0x00,0x00,0x20,0x40,0x08,0x40,0x00,0xc1,0x00,0x11, + 0x0c,0x07,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x04,0x19,0x40,0x04,0x40,0x00, + 0x62,0x83,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x20,0x01,0x0a,0xc0,0x00,0x80, + 0x00,0x04,0x60,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x07,0x2c,0x80,0x00, + 0x82,0x01,0x0c,0x18,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x10,0xa8,0x23,0x80, + 0x00,0x80,0x00,0x30,0x06,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x10,0xd0,0x20, + 0x80,0x09,0x80,0x01,0xc0,0x01,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x40,0x00,0x01,0x04,0x03,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x10, + 0x80,0x40,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x40,0x40,0x00,0x11,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x08,0x40,0x40,0x00,0x03,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x60,0x80,0x00,0x02,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x08,0x20,0xa0,0x00,0x02,0x00,0x04,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x40,0x80,0x00,0x06,0x10,0x06,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x04,0x20,0x00,0x01,0x44,0x00,0x0c,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x20,0x10,0x01,0x04,0x00,0x08,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x04,0x20,0x00,0x01,0x0c,0x00,0x0c,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x30,0x00,0x02,0x08,0x00,0x08, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x04,0x10,0x80,0x02,0x88,0x40, + 0x18,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x10,0x88,0x03,0x18, + 0x00,0x10,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x02,0x10,0x80,0x04, + 0x10,0x01,0x10,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x10,0x80, + 0x00,0x10,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x02,0x18, + 0xc8,0x04,0x10,0x80,0x20,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x08,0x80,0x08,0x30,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x08,0x40,0x00,0x20,0x02,0x60,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x01,0x08,0xc4,0x08,0x20,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x08,0x40,0x08,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x01,0x0c,0x60,0x10,0x40,0x00,0xc2,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x04,0x40,0x10,0x40,0x00,0x80,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x01,0x04,0x22,0x00,0xc0,0x00,0x80,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x84,0x22,0x20,0x80,0x08,0x84,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x80,0x00,0x26,0x24,0x20,0x80,0x00,0x80,0x01, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x0e,0x38,0x00,0x80,0x01,0x00, + 0x01,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x80,0x00,0x02,0x30,0x40,0x00,0x11, + 0x08,0x03,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x02,0x11,0x40,0x00, + 0x01,0x00,0x02,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x02,0x10,0x40, + 0x00,0x01,0x08,0x03,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x40,0x00,0x0b,0x10, + 0x00,0x00,0x23,0x00,0x02,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x01, + 0x18,0x80,0x00,0x02,0x10,0x06,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x40,0x00, + 0x01,0x18,0x80,0x00,0x26,0x00,0x04,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x01,0x08,0x80,0x00,0x06,0x20,0x04,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x80,0x01,0x08,0x00,0x01,0x04,0x00,0x0c,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x20,0x80,0x00,0x0c,0x00,0x01,0x04,0x60,0x0c,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x80,0x00,0x0c,0x00,0x01,0x0c,0x10,0x0b,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x20,0x80,0x00,0x0c,0x00,0x02,0x08,0x84,0x18,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x80,0x00,0x0c,0x00,0x02,0x0c,0x21,0x10,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x20,0x40,0x00,0x04,0x00,0x02,0x58,0x08,0x18,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x40,0x40,0x00,0x04,0x00,0x00,0x18,0x02,0x30, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x80,0x40,0x00,0x03,0x00,0x04,0x30,0x01, + 0x10,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x41,0x80,0x00,0x00,0x04,0x70, + 0x00,0x20,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x42,0x30,0x00,0x00,0x04, + 0x10,0x00,0x60,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x64,0x08,0x00,0x00, + 0x08,0x10,0x00,0x40,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x28,0x03,0x00, + 0x00,0x08,0x20,0x00,0x60,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0xf0,0x00, + 0x00,0x00,0x00,0x20,0x00,0xc0,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x10,0x40,0x00,0x80,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x10,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x10,0x40,0x00,0x80,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x80,0x01,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x80,0x00,0x00,0x01,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x80,0x00,0x00,0x01,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x00,0x00,0x03,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x01,0x00,0x03, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x01,0x00, + 0x02,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x01, + 0x00,0x06,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00, + 0x02,0x80,0x01,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, + 0x00,0x02,0x40,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x80,0x00,0x02,0x30,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x01,0x06,0x0c,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x01,0x84,0x01,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x01,0x44,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x6a,0x3f,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0}; diff --git a/syntmono/tcl/bitmaps/sleighbell.xbm b/syntmono/tcl/bitmaps/sleighbell.xbm new file mode 100644 index 0000000..bbd0008 --- /dev/null +++ b/syntmono/tcl/bitmaps/sleighbell.xbm @@ -0,0 +1,138 @@ +#define sleighbell_width 125 +#define sleighbell_height 126 +static char sleighbell_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x04,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11, + 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x08,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x40,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x88,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x82,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x82,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xfe,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x8e,0x3d,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x30,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x82,0x10,0x04,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xc5,0x08,0x06,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x3d,0x89,0xa4,0x10,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x1b,0xc1,0x63,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x28,0x6c, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x00, + 0x68,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd9, + 0x04,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x80,0x40, + 0xc1,0x24,0x40,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x82,0x43,0x28,0x20,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x00,0x6a,0xd2,0x32,0x20,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xd6,0x1c,0x09,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x80,0x80,0x43,0x90,0x0d,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x1f,0xc1,0x54,0x10,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0xc0,0x1a,0x43,0x34,0x20,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0xc4,0x24,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x11,0x7c,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0xe5,0x04,0x40,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x80,0xa0,0x48,0x30,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0x44,0x24,0x20,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x41,0x20,0x30, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xf6,0x95, + 0x0a,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x6f, + 0x8f,0x0d,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x40,0x00, + 0x41,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0xc0, + 0x8f,0x41,0x30,0x20,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x40,0x08,0x42,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x80,0x64,0x12,0x6c,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x40,0xa0,0xd0,0x10,0x24,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x80,0xa0,0x62,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x81,0x28,0x11,0x20,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x2a,0x22,0x20,0x18,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x61,0x44,0x08,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x80,0x20,0xff,0x09,0x01,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x21,0x0e,0x02,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x20,0x48,0x08,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0xe0,0x87,0x21,0x38,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0xa0,0x8c,0x32,0x0e, + 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x30, + 0x01,0x3c,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x20,0xe0, + 0xb2,0x02,0x34,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x40, + 0x40,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x80,0x20,0xe9,0x1a,0x20,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x14,0x42,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x82,0x40,0x48,0x08,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x80,0x20,0xce,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x40,0x40,0xf7,0x0b,0x04,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x40,0x2e,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x60,0x07,0x40,0x18,0x10,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0xe0,0x85,0x62,0x08,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x44,0x0e,0x3e,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x70,0x09,0x34,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x40,0x08,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0xa1,0x08, + 0x10,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x15,0x6a, + 0x11,0x08,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x4a, + 0x60,0x84,0x06,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x80, + 0x40,0x22,0xc0,0x03,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x20,0x42,0xef,0x28,0x08,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x40,0xf1,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x43,0x21,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x20,0x46,0x20,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x40,0x22,0x06,0x14,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x20,0x60,0x64,0x09,0x20,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0xa1,0x08,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x40,0x10,0x00,0x08,0x18,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x01,0x84,0x06,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x01,0x01,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x04, + 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x12, + 0x06,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x80, + 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x55,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x81,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x81,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x81,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x81,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x80, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x80,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x80,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x40, + 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x20,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x20,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x35,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0}; diff --git a/syntmono/tcl/bitmaps/tambourine.xbm b/syntmono/tcl/bitmaps/tambourine.xbm new file mode 100644 index 0000000..466b723 --- /dev/null +++ b/syntmono/tcl/bitmaps/tambourine.xbm @@ -0,0 +1,138 @@ +#define tambourine_width 125 +#define tambourine_height 126 +static char tambourine_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x20,0x09,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe8,0xaf,0xf4,0x0b,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x00,0xa0,0x0b,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x03, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00, + 0x0e,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x18,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x60,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xc0,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0xe0,0x00,0x00,0x00,0x80,0x01,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0xe0,0x00,0x00,0x00,0x40,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0xe0,0x00,0x00,0x00,0x20,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0xe0,0x00,0x00,0x00,0x18, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x01,0xe0,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x01,0xe0,0x00,0x00, + 0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x02,0xe0,0x00, + 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x02,0xe0, + 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x03, + 0xe0,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x03,0xe0,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x03,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xc0,0x03,0xe0,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x02,0xe0,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x60,0x01,0xe0,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xc0,0x00,0xe0,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xe0,0x00,0x00,0x08,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xe0,0x00,0x00,0x08,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd0,0x07,0xe0,0x00,0x00,0x06,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x0d,0xe0,0x00,0x00,0x0e,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x17,0xe0,0x00,0x00,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5a,0x3e,0xe0,0x00,0x80, + 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x2e,0xe0,0x00, + 0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x34,0xe0, + 0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x1c, + 0xe0,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f, + 0x3c,0xe0,0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x3b,0x2f,0xe0,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x40,0x59,0x27,0xe0,0x00,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x80,0xd8,0x28,0xe0,0x00,0x00,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x64,0x30,0x30,0xe0,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x60,0x34,0x30,0xe0,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xd8,0x1e,0x1e,0xe0,0x00,0x00,0x38,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x40,0xec,0xf9,0x0e,0xe0,0x00,0x00,0x78,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x86,0x90,0x06,0xe0,0x00,0x00,0xf8,0x08,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xc1,0xf9,0x00,0xe0,0x00,0x00,0xa2,0x21, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x60,0x69,0x00,0xe0,0x00,0x00,0x62, + 0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xb0,0x79,0x00,0xe0,0x00,0x00, + 0xd5,0x06,0x10,0x00,0x40,0x00,0x00,0x00,0x00,0xfa,0xfc,0x40,0x00,0xe0,0x00, + 0x00,0xe1,0x0d,0x00,0x10,0x00,0x00,0x00,0x00,0x81,0x66,0xfe,0x21,0x00,0xe0, + 0x00,0x00,0xb6,0x3f,0x40,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x07,0x23,0x00, + 0xe0,0x00,0x00,0x6e,0xc6,0x00,0x00,0x00,0x00,0x00,0x80,0x70,0xc0,0x84,0x13, + 0x00,0xe0,0x00,0x00,0xfe,0x0e,0x03,0x00,0x00,0x00,0x08,0x10,0x5e,0x70,0x86, + 0x08,0x00,0xe0,0x00,0x00,0x5c,0x3d,0x8c,0x80,0x00,0x00,0x80,0x84,0xe3,0x3c, + 0xe0,0x0b,0x00,0xe0,0x00,0x00,0xe1,0x91,0x76,0x02,0x84,0x20,0x02,0x7c,0xe0, + 0x1f,0xf0,0x05,0x00,0xe0,0x00,0x00,0x8a,0x14,0x07,0x15,0x00,0x02,0xb0,0x0f, + 0xe0,0xef,0xfd,0x03,0x00,0xe0,0x00,0x00,0xa6,0x0b,0x04,0xe8,0x12,0x40,0x7d, + 0x04,0x38,0x79,0xfb,0x03,0x00,0xe0,0x00,0x00,0xfe,0x03,0x3f,0x0c,0xfd,0xff, + 0x03,0x0e,0x07,0xcf,0xff,0x01,0x00,0xe0,0x00,0x00,0xbc,0x86,0xec,0x1e,0x20, + 0x40,0x00,0xfc,0x01,0x12,0xfc,0x00,0x00,0xe0,0x00,0x00,0x70,0x8d,0xfa,0x3f, + 0x70,0x60,0x40,0x7f,0x00,0x58,0xfa,0x00,0x00,0xe0,0x00,0x00,0x00,0x0a,0x73, + 0xff,0xff,0xea,0xff,0x9f,0x00,0xfc,0x3f,0x00,0x00,0xe0,0x00,0x00,0x00,0x0e, + 0x24,0xe4,0x03,0xfd,0xff,0xb7,0x00,0xc4,0x05,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x06,0x84,0xe0,0x02,0xfc,0x07,0xd8,0x00,0x14,0x02,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x04,0x5f,0xfb,0x02,0x34,0x78,0x7c,0x00,0x2c,0x02,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x90,0x7f,0x7d,0x03,0xb4,0xa0,0x0f,0x00,0x80,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0xa0,0xfc,0x0b,0x00,0x78,0xaf,0xc7,0x00,0x60,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0xc0,0xbf,0x07,0x00,0xc0,0xaa,0x7f,0x01,0x08,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x7d,0xf8,0x01,0x00,0x7f,0x6e,0x01,0x06,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x2c,0xe0,0x07,0xe0,0x02,0xf2,0xc1,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0xf8,0x7a,0x04,0xf8,0xe7,0x38,0x28, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0xf0,0xbe,0x04,0xc8,0x11,0x9f, + 0x06,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x80,0x07,0x03,0xd0,0xff, + 0x47,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x20, + 0xfe,0x03,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0xb4, + 0xaa,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xe0}; diff --git a/syntmono/threads.cpp b/syntmono/threads.cpp index 7e7d640..4313af0 100644 --- a/syntmono/threads.cpp +++ b/syntmono/threads.cpp @@ -1,26 +1,28 @@ // Thread functions for use with syntmono. // -// Gary P. Scavone, 1999. +// No mutexes are currently being used when accessing +// the global variables shared between these threads +// and the main() routine. In a single processor +// environment, no problems have resulted from such data +// sharing. However, if STK is to be run on a true parallel +// processing platform, it is likely that mutexes will be +// necessary. While the mutex calls are simple to code, I +// am trying to keep the code as generic as possible. A +// quick investigation of threads under Windoze indicates +// that mutex functionality is not available, at least with +// the standard libraries. +// +// Gary P. Scavone, 2000. #include "threads.h" #if defined(__STK_REALTIME_) -#define SERVICE_PORT 2001 // Socket Port ID number +// Default STK socket port ID number +#define SERVICE_PORT 2001 // Do OS dependent declarations and includes -#if defined(__OS_IRIX_) -#include -#include -#include -#include -#include -#include -#include - -pid_t string_thread; - -#elif defined(__OS_Linux_) +#if (defined(__OS_IRIX_) || defined(__OS_Linux_)) #include #include #include @@ -39,13 +41,10 @@ unsigned long string_thread; #endif -// The thread function definition protocols are slightly -// different under Irix, Linux, and Windoze. -#if defined(__OS_IRIX_) +// The thread function protocols are slightly different +// under Windoze ... but of course! -void newStringByPipe(void *) - -#elif defined(__OS_Linux_) +#if (defined(__OS_IRIX_) || defined(__OS_Linux_)) void *newStringByPipe(void *) @@ -86,14 +85,15 @@ void newStringByPipe(void *) // Free inputString. for ( i=0;i 10) errorfun(args[0]); + if (numArgs < 3 || numArgs > 10) usage(args[0]); while (i < numArgs) { if (args[i][0] == '-') { @@ -146,9 +146,9 @@ int checkArgs(int numArgs, char *args[]) (args[i][1] == 'w') || (args[i][1] == 'm') ) numOutputs++; else if (args[i][1] == 'i') { - if ( (args[i][2] != 's') && (args[i][2] != 'p') ) errorfun(args[0]); + if ( (args[i][2] != 's') && (args[i][2] != 'p') ) usage(args[0]); } - else errorfun(args[0]); + else usage(args[0]); flags[j] = args[i][1]; j++; } @@ -161,14 +161,14 @@ int checkArgs(int numArgs, char *args[]) while (w <= j) { if (flags[i] == flags[w]) { printf("\nError: Multiple command line flags of the same type specified.\n\n"); - errorfun(args[0]); + usage(args[0]); } w++; } } /* Make sure we have at least one output type */ - if (numOutputs < 1) errorfun(args[0]); + if (numOutputs < 1) usage(args[0]); return numOutputs; } @@ -190,7 +190,7 @@ int parseArgs(int numArgs, char *args[]) else realtime = 1; break; #else - errorfun(args[0]); + usage(args[0]); #endif case 'r': @@ -199,7 +199,7 @@ int parseArgs(int numArgs, char *args[]) j++; break; #else - errorfun(args[0]); + usage(args[0]); #endif case 'w': @@ -233,7 +233,7 @@ int parseArgs(int numArgs, char *args[]) break; default: - errorfun(args[0]); + usage(args[0]); break; } } diff --git a/syntmono/utilities.h b/syntmono/utilities.h index 45bf16c..bc8f833 100644 --- a/syntmono/utilities.h +++ b/syntmono/utilities.h @@ -8,7 +8,7 @@ int newInstByNum(int instNum); int newInstByName(char *instName); -void errorfun(char *func); +void usage(char *func); int checkArgs(int numArgs, char *args[]);