From 4b6500d3de195b2cbffe142324f5c22748871842 Mon Sep 17 00:00:00 2001 From: Gary Scavone Date: Wed, 25 Sep 2013 14:44:17 +0200 Subject: [PATCH] Version 3.1 --- Hierarchy.txt | 8 +- README-Linux.txt | 8 +- README-SGI.txt | 12 +- README-Win.txt | 15 +- README.txt | 12 +- ReleaseNotes.txt | 31 +- STK/BowTabl.cpp | 42 +- STK/BowTabl.h | 23 +- STK/DLineA.cpp | 2 +- STK/Debug/.placeholder | 0 STK/FMVoices.cpp | 4 +- STK/JCRev.cpp | 2 +- STK/JCRev.h | 2 +- STK/JetTabl.cpp | 29 +- STK/JetTabl.h | 15 +- STK/LipFilt.cpp | 72 ++- STK/LipFilt.h | 40 +- STK/MD2SKINI.cpp | 75 ++- STK/MIDIIO.cpp | 18 +- STK/NRev.cpp | 2 + STK/Noise.cpp | 19 +- STK/Object.h | 40 +- STK/Plucked.cpp | 9 +- STK/RTDuplex.h | 5 +- STK/RTSoundIO.cpp | 190 +++---- STK/RTWvIn.cpp | 8 +- STK/RTWvOut.h | 3 +- STK/ReedTabl.cpp | 21 +- STK/ReedTabl.h | 23 +- STK/Release/.placeholder | 0 STK/Reverb.cpp | 4 + STK/Reverb.h | 5 +- STK/SKINI11.cpp | 2 +- STK/Shakers.cpp | 153 +++++- STK/Shakers.h | 4 + STK/Simple.h | 2 +- STK/VoicForm.cpp | 6 +- STK/WvIn.h | 2 +- STK/mandplyr.h | 38 +- effects/Makefile | 4 +- effects/effects.cpp | 26 +- effects/threads.cpp | 79 ++- effects/threads.h | 3 + mus151/MUS151.cpp | 66 +-- mus151/Makefile | 2 +- mus151/tcl/TwoWaves.tcl | 2 +- mus151/threads.cpp | 79 ++- mus151/threads.h | 3 + ragamatic/GUIRaga | 1 + ragamatic/Makefile | 70 +++ ragamatic/README-raga.txt | 23 + ragamatic/Sitar1.cpp | 100 ++++ ragamatic/Sitar1.h | 43 ++ ragamatic/StrDrone.cpp | 77 +++ ragamatic/StrDrone.h | 40 ++ ragamatic/Tabla.cpp | 155 ++++++ ragamatic/Tabla.h | 46 ++ ragamatic/VoicDrum.cpp | 152 ++++++ ragamatic/VoicDrum.h | 46 ++ ragamatic/miditabl.h | 19 + ragamatic/ragamat.cpp | 262 ++++++++++ ragamatic/ragamat.dsp | 306 +++++++++++ ragamatic/ragamat.plg | 53 ++ ragamatic/ragamatic.dsw | 29 ++ ragamatic/rawwaves/DrDoi1.raw | Bin 0 -> 19752 bytes ragamatic/rawwaves/DrDoi2.raw | Bin 0 -> 19752 bytes ragamatic/rawwaves/DrTak1.raw | Bin 0 -> 9792 bytes ragamatic/rawwaves/DrTak2.raw | Bin 0 -> 9792 bytes ragamatic/rawwaves/Drdak2.raw | Bin 0 -> 2438 bytes ragamatic/rawwaves/Drdak3.raw | Bin 0 -> 4706 bytes ragamatic/rawwaves/Drdak4.raw | Bin 0 -> 3782 bytes ragamatic/rawwaves/Drddak1.raw | Bin 0 -> 5294 bytes ragamatic/rawwaves/Drdee1.raw | Bin 0 -> 9242 bytes ragamatic/rawwaves/Drdee2.raw | Bin 0 -> 9326 bytes ragamatic/rawwaves/Drdoo1.raw | Bin 0 -> 2018 bytes ragamatic/rawwaves/Drdoo2.raw | Bin 0 -> 2774 bytes ragamatic/rawwaves/Drdoo3.raw | Bin 0 -> 7310 bytes ragamatic/rawwaves/Drjun1.raw | Bin 0 -> 4538 bytes ragamatic/rawwaves/Drjun2.raw | Bin 0 -> 4790 bytes ragamatic/rawwaves/ahh.raw | Bin 0 -> 184 bytes ragamatic/rawwaves/bassdrum.raw | Bin 0 -> 4288 bytes ragamatic/rawwaves/bee1.raw | Bin 0 -> 4192 bytes ragamatic/rawwaves/britestk.raw | Bin 0 -> 4096 bytes ragamatic/rawwaves/cowbell1.raw | Bin 0 -> 6438 bytes ragamatic/rawwaves/dee1.raw | Bin 0 -> 4650 bytes ragamatic/rawwaves/dee2.raw | Bin 0 -> 8800 bytes ragamatic/rawwaves/din1.raw | Bin 0 -> 3654 bytes ragamatic/rawwaves/fwavblnk.raw | Bin 0 -> 512 bytes ragamatic/rawwaves/gun1.raw | Bin 0 -> 4152 bytes ragamatic/rawwaves/halfwave.raw | Bin 0 -> 512 bytes ragamatic/rawwaves/hihatcym.raw | Bin 0 -> 4976 bytes ragamatic/rawwaves/impuls10.raw | Bin 0 -> 512 bytes ragamatic/rawwaves/impuls20.raw | Bin 0 -> 512 bytes ragamatic/rawwaves/impuls40.raw | Bin 0 -> 512 bytes ragamatic/rawwaves/jun1.raw | Bin 0 -> 14776 bytes ragamatic/rawwaves/jun2.raw | Bin 0 -> 5646 bytes ragamatic/rawwaves/makefunc.c | 55 ++ ragamatic/rawwaves/makemidi.c | 33 ++ ragamatic/rawwaves/makewavs.c | 116 +++++ ragamatic/rawwaves/mand1.raw | Bin 0 -> 2048 bytes ragamatic/rawwaves/mand10.raw | Bin 0 -> 2048 bytes ragamatic/rawwaves/mand11.raw | Bin 0 -> 2048 bytes ragamatic/rawwaves/mand12.raw | Bin 0 -> 2048 bytes ragamatic/rawwaves/mand2.raw | Bin 0 -> 2048 bytes ragamatic/rawwaves/mand3.raw | Bin 0 -> 2048 bytes ragamatic/rawwaves/mand4.raw | Bin 0 -> 2048 bytes ragamatic/rawwaves/mand5.raw | Bin 0 -> 2048 bytes ragamatic/rawwaves/mand6.raw | Bin 0 -> 2048 bytes ragamatic/rawwaves/mand7.raw | Bin 0 -> 2048 bytes ragamatic/rawwaves/mand8.raw | Bin 0 -> 2048 bytes ragamatic/rawwaves/mand9.raw | Bin 0 -> 2048 bytes ragamatic/rawwaves/silence.raw | Bin 0 -> 448 bytes ragamatic/rawwaves/tak1.raw | Bin 0 -> 4816 bytes ragamatic/rawwaves/tak2.raw | Bin 0 -> 3986 bytes ragamatic/rawwaves/tak3.raw | Bin 0 -> 7472 bytes ragamatic/rawwaves/tak4.raw | Bin 0 -> 7638 bytes ragamatic/tcl/TCLRaga.tcl | 304 +++++++++++ ragamatic/tcl/bitmaps/prc.xbm | 101 ++++ ragamatic/tcl/bitmaps/prcFunny.xbm | 60 +++ ragamatic/tcl/bitmaps/ragamat.bmp | Bin 0 -> 91598 bytes ragamatic/tcl/bitmaps/ragamat.xbm | 768 ++++++++++++++++++++++++++++ ragamatic/tcl/bitmaps/ragamat2.bmp | Bin 0 -> 24018 bytes ragamatic/tcl/bitmaps/ragamat2.xbm | 200 ++++++++ ragamatic/threads.cpp | 279 ++++++++++ ragamatic/threads.h | 30 ++ syntmono/Makefile | 6 +- syntmono/syntmono.cpp | 67 ++- syntmono/tcl/TCLDemo.tcl | 70 ++- syntmono/tcl/TCLStruk.tcl | 14 +- syntmono/tcl/bitmaps/bamboo.xbm | 138 +++++ syntmono/tcl/bitmaps/cabasa.xbm | 138 +++++ syntmono/tcl/bitmaps/guiro.xbm | 138 +++++ syntmono/tcl/bitmaps/maraca.xbm | 138 +++++ syntmono/tcl/bitmaps/rachet.xbm | 138 +++++ syntmono/tcl/bitmaps/sleighbell.xbm | 138 +++++ syntmono/tcl/bitmaps/tambourine.xbm | 138 +++++ syntmono/threads.cpp | 79 ++- syntmono/threads.h | 3 + syntmono/utilities.cpp | 18 +- syntmono/utilities.h | 2 +- 140 files changed, 5171 insertions(+), 632 deletions(-) delete mode 100644 STK/Debug/.placeholder delete mode 100644 STK/Release/.placeholder create mode 100755 ragamatic/GUIRaga create mode 100644 ragamatic/Makefile create mode 100644 ragamatic/README-raga.txt create mode 100644 ragamatic/Sitar1.cpp create mode 100644 ragamatic/Sitar1.h create mode 100644 ragamatic/StrDrone.cpp create mode 100644 ragamatic/StrDrone.h create mode 100644 ragamatic/Tabla.cpp create mode 100644 ragamatic/Tabla.h create mode 100644 ragamatic/VoicDrum.cpp create mode 100644 ragamatic/VoicDrum.h create mode 100644 ragamatic/miditabl.h create mode 100644 ragamatic/ragamat.cpp create mode 100755 ragamatic/ragamat.dsp create mode 100755 ragamatic/ragamat.plg create mode 100755 ragamatic/ragamatic.dsw create mode 100644 ragamatic/rawwaves/DrDoi1.raw create mode 100644 ragamatic/rawwaves/DrDoi2.raw create mode 100644 ragamatic/rawwaves/DrTak1.raw create mode 100644 ragamatic/rawwaves/DrTak2.raw create mode 100644 ragamatic/rawwaves/Drdak2.raw create mode 100644 ragamatic/rawwaves/Drdak3.raw create mode 100644 ragamatic/rawwaves/Drdak4.raw create mode 100644 ragamatic/rawwaves/Drddak1.raw create mode 100644 ragamatic/rawwaves/Drdee1.raw create mode 100644 ragamatic/rawwaves/Drdee2.raw create mode 100644 ragamatic/rawwaves/Drdoo1.raw create mode 100644 ragamatic/rawwaves/Drdoo2.raw create mode 100644 ragamatic/rawwaves/Drdoo3.raw create mode 100644 ragamatic/rawwaves/Drjun1.raw create mode 100644 ragamatic/rawwaves/Drjun2.raw create mode 100644 ragamatic/rawwaves/ahh.raw create mode 100644 ragamatic/rawwaves/bassdrum.raw create mode 100644 ragamatic/rawwaves/bee1.raw create mode 100644 ragamatic/rawwaves/britestk.raw create mode 100644 ragamatic/rawwaves/cowbell1.raw create mode 100644 ragamatic/rawwaves/dee1.raw create mode 100644 ragamatic/rawwaves/dee2.raw create mode 100644 ragamatic/rawwaves/din1.raw create mode 100644 ragamatic/rawwaves/fwavblnk.raw create mode 100644 ragamatic/rawwaves/gun1.raw create mode 100644 ragamatic/rawwaves/halfwave.raw create mode 100644 ragamatic/rawwaves/hihatcym.raw create mode 100644 ragamatic/rawwaves/impuls10.raw create mode 100644 ragamatic/rawwaves/impuls20.raw create mode 100644 ragamatic/rawwaves/impuls40.raw create mode 100644 ragamatic/rawwaves/jun1.raw create mode 100644 ragamatic/rawwaves/jun2.raw create mode 100644 ragamatic/rawwaves/makefunc.c create mode 100644 ragamatic/rawwaves/makemidi.c create mode 100644 ragamatic/rawwaves/makewavs.c create mode 100644 ragamatic/rawwaves/mand1.raw create mode 100644 ragamatic/rawwaves/mand10.raw create mode 100644 ragamatic/rawwaves/mand11.raw create mode 100644 ragamatic/rawwaves/mand12.raw create mode 100644 ragamatic/rawwaves/mand2.raw create mode 100644 ragamatic/rawwaves/mand3.raw create mode 100644 ragamatic/rawwaves/mand4.raw create mode 100644 ragamatic/rawwaves/mand5.raw create mode 100644 ragamatic/rawwaves/mand6.raw create mode 100644 ragamatic/rawwaves/mand7.raw create mode 100644 ragamatic/rawwaves/mand8.raw create mode 100644 ragamatic/rawwaves/mand9.raw create mode 100644 ragamatic/rawwaves/silence.raw create mode 100644 ragamatic/rawwaves/tak1.raw create mode 100644 ragamatic/rawwaves/tak2.raw create mode 100644 ragamatic/rawwaves/tak3.raw create mode 100644 ragamatic/rawwaves/tak4.raw create mode 100644 ragamatic/tcl/TCLRaga.tcl create mode 100644 ragamatic/tcl/bitmaps/prc.xbm create mode 100644 ragamatic/tcl/bitmaps/prcFunny.xbm create mode 100644 ragamatic/tcl/bitmaps/ragamat.bmp create mode 100644 ragamatic/tcl/bitmaps/ragamat.xbm create mode 100644 ragamatic/tcl/bitmaps/ragamat2.bmp create mode 100644 ragamatic/tcl/bitmaps/ragamat2.xbm create mode 100644 ragamatic/threads.cpp create mode 100644 ragamatic/threads.h create mode 100644 syntmono/tcl/bitmaps/bamboo.xbm create mode 100644 syntmono/tcl/bitmaps/cabasa.xbm create mode 100644 syntmono/tcl/bitmaps/guiro.xbm create mode 100644 syntmono/tcl/bitmaps/maraca.xbm create mode 100644 syntmono/tcl/bitmaps/rachet.xbm create mode 100644 syntmono/tcl/bitmaps/sleighbell.xbm create mode 100644 syntmono/tcl/bitmaps/tambourine.xbm 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 0000000000000000000000000000000000000000..12e35a39b19b7eb3e25bdebecfc6c6643647573f GIT binary patch literal 19752 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 literal 0 HcmV?d00001 diff --git a/ragamatic/rawwaves/DrTak2.raw b/ragamatic/rawwaves/DrTak2.raw new file mode 100644 index 0000000000000000000000000000000000000000..6ccbc8b76403065971767a73c9fb6da89f17bbc6 GIT binary patch literal 9792 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 bV<_&eL>?*CKDu!j%1*#Dc!h=JcijI2CL6hD literal 0 HcmV?d00001 diff --git a/ragamatic/rawwaves/Drdak2.raw b/ragamatic/rawwaves/Drdak2.raw new file mode 100644 index 0000000000000000000000000000000000000000..5e931913b2013b5a8e7f646c20c2f1b0963ff2ae GIT binary patch literal 2438 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 tnD4*fyF literal 0 HcmV?d00001 diff --git a/ragamatic/rawwaves/Drdak4.raw b/ragamatic/rawwaves/Drdak4.raw new file mode 100644 index 0000000000000000000000000000000000000000..10635f61a2ca13ec156894967baca59c70cd57cd GIT binary patch literal 3782 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 literal 0 HcmV?d00001 diff --git a/ragamatic/rawwaves/Drddak1.raw b/ragamatic/rawwaves/Drddak1.raw new file mode 100644 index 0000000000000000000000000000000000000000..f65d132c45ccd057c3452585ad4110af1166226b GIT binary patch literal 5294 zcmWNV2Y*z>8i!}*%xT+q(`Zq86D6TZFA9ia0zrfza_J(G5_+#fki?4^x1`b+{m3ttVa+CW0Y^$qTDz=jdROxW zIR!%~2n%5gl#2_QW$Zib6!tNDfjh(p>|Jdo{I7h4ZIcc2o!By53cn-OqyS`5o7gtC zdbS((WV?g!$)($T_B-|>$5H1f=Q7tA=PVa=9d#wR{&qcgcI5wJI?ygkMhB1$PJ$nR zFUc)%nEYuRQ!BJV=DXxFs6ffM5z~oz$z|}Gtq1=d=cVUU$*3)APd%kgb|Bl1p>P>? zQAeqVxH&3`NvShiRJr0pCJTKo#+WLbMwHL2sZJ;pNmw>QhR@UP?lB z%^wv}Ivm{_sTCGR=7r~mE5frwrJ;?1c{RgBK*U-C+(A!)&5SOFoe1DOn1Ir754IKM zmWo27#U1);YX-bT>IpY1t~}dV^}4#+>L3V>FV&J3gv+DbMNfEq;Ea08Y$WcD zyiv2drYN-2{6jr0v`{(F+R8Vs7&p{k#rFkcuc%`!5{ zIMe{uVBL1e`LkmfSIgwk5_R7wlahrN$`Ojjh13))Pu>w7D)=MKMZa`TpuudEU zx@PcNsq(!JjbPJJQk3J31*XX?5bb z#1h|R`&PV7cPO8m828~DI}_~x*m7(uY-1eDopJWlJfYttP2}`oab%_PxjtICD|D#! z)fPqnHV#l1nNs!y`+ys3YiwWRoZ}eF?W5XRJFOJUWo|Rmfe+q99NpU9**iLJqW7d{ zvZuLcuv_traOt*POkK*)?RT~JZBLluDdWB)ZRD)T{qU0LA+;O1LHFSI+qN^8kcG1F zSb8VTQ68|Dl#$=8{)Vg!7S;r>)t;&)!KBcZNF$+h4@sYNL>_)p#AM%N@Ngt-) zv}(a>xDZd``r2z8S6#h4=e^0Eho0Wf2DT>57I??JWz5huWslNNO_BX#UO2CM-YcWx zs|r{(z2>#Rw18f-C-6^ba`=_dR_GJ{I{0pFbub~4Aa~TZXq)6#!cD1}^)dZ1Kh(a; zIo$Py>qF;C_ppSM4aUEAx86P98k@!5V{^F_Hiw>ryHQi%ad;Rtv`%X6rRhTV$ff9g zaZscv#Mj;k_6i?~Yzm(dvc>;Ib0Sy6UxZ#oTWbxhV_+MAR*t?y|H)F|Sd<8}z$|i` zEQHPQS!O?zLTRX+T91lB3yU?Hs@3Xn)h(@(ddc0R2g4IXiM0=En+Cd6TfutaTansm zd!e=Xo3;^rg1?~wwVYhHwt^zq7bV12ZUToQ4zI!m)HA#lkD_U`4ob26tKb?k)!bA@ z=l*uAaYENk=N0D!r`y@Yb=SSim+JF-kZZlGqmyzDbT+d$V2kMU%uEj3OxGWtJuWxD zj`2^fvH=j_?e1nR-e0W}dTe z(7W+{W(2?1ZnqC{X1K1q-L4kS6OK>q&+I;a9ygAz#!k44^al%}f`*`5$OOZUUfN0Z znDnNwBwQ8D2$qDF1(O4f{VyxGR}S`Xsa{CEK1%DZRI5{s?&d2XVT~TkTwn~w%PeL;<%V$c*>t)-$|n0Qx3R|n z`b9mWk5#X#v~pBAt%TJ#w1vi9tANZSe^@|Us&-O~wA1EOat0)WS11k%R1KX;zl-(&G(k)>1FoWh@lhHS5Kj^agm_RTcb);UQ&8P^qH6?O{ zUeDjQXF5B$mpZ1{JM#k}W&LV-jduFC`YLUZJV)7~>{ZkBK4u@#80J}vqw)T3FHeQC zlr_nYyP_H)kjo{k@%xH#dYx5jWn z8Tyj=*IOKHCNu&GpV>ub9obo3@NnYOff0!rOFC}U3 zlV-3O_QIdrC)iT(GSep|iTTkh!qAANEI`}X4oqX*iaYKeXkQNU^i0U`DclLP7AEp@ z;tT4INgCmN23h&6TxMpNsbZ(V)ZhZ+Dch9Y0N0o)X103as06D}NByl(mOno*T1qlM0)4C$t=KS(U)2nC zrc@ox7oUo>v_cu6jL?d;Udm)GT{~nl0Fe%aBX_}A^ptt%9O9i2S1-w%Nc(R2hI;<; zbns$#(3|9Y%c~}q)VZ0|HL)^5tb>#KxaV^9DU1Fudyo#|uJ}Gz=wxjr)GOdd1^73V zV?NeC(pYkx`JMAKn_(U6R?Lj1!+8BuCEpy5y-YC^kCvk(^aVT!lg(=Vp7}qkr}0E9 zQ}c`y=q;v*d5p7Be`|@pNnfS6msR135HC$sI?FfY$7+4;ZN0lbQ?3l32_1?)604(2 zg>E4&%!GdpqtNxp8fm(!Yn|n}(RD&|ffs)leUZ09Uj`og4^^s_;fk#s$bnbv8vn7WCsf+$%Jnu5z@K3M_!gGF!voCUvypTcz54|SjuxcB+rZ6Ddz@HXyG z{(Js~W1Ks~`zXF~LR?}(oo@AP4U&@wCWCt6#PxAod|&x~NO-?aR{i|fGG9xp8%@OV zTjFW&F!y+Gjjt?je*D=45Wm42a>uz=Iycy_+rPA}=kwT>Fl_ZQ9}t>+MJ`!)i~>DX zE6_IU>y2D%BU(YH&^BrrEPzK4L-y%4+SdjIPRdQCz*}G|%%lLdlJetXd^VQdzREo@ zBF$GuDVNnbO19W9k{UW3JXO2T@2_b8vcW5{dSUJSusb9M9|Tv_P7F*Bei#}WycFo> zPp#@vm0UTr>P}6AK#x$X@XJX1NIM}TdO&=lY|szuJG4CglCj=ssXmjZOKDP-;?<#b z-O4sX+H+-$I50X+`b8<0%cG(2%G%w*c9C}CE;%e$OX=bVQXjdEQlmFiUns9Dxyl1| zmeC&Uqoz(`tTS2cbG{+hfC;h5{92dKN5`*^PxV}LK61}UNJ=VB8k(4uFgUSy z;wN$aT$5~9xRh8OUSfvQ<74IlxTd!5_QCw$Tp_>3jvR*_W9(np%N_OY4|$Dm;%Mkj z^?2QjoISX5dI-7#?@>$X)yyt-3fGQb<>=|W=csGz#SO!!(IOyOcde2b!{32<@E*7W zE&-@tlsXIbgf7CPXp?AE8n3*k?omsm4Ut#jlJHL9nUbWxuKl9U&>9}Dzl90Na4UD==Qm5!A*Kz{}1n)OZ2d}J;(64ff@y!x7wCf$?=DBI*b;b8Du z;Cjv3>PddVKhNL2Wszi0b4ze4(ZsqFT)J5uMjaT21W=1kuf`+6&Y>rH2)%JQGJ|- zBX~5tV7+4wFsE5-V-AJvob@mC#tojdJY`FnQO5pn$E{LDSxebv3xb3d*$ z@#mzB#Jh<@;-i{w1WhM`z@ zoR3CWbB%0W&{CCDdAj0L@9F8P$pPYnU!OvDt{gHmvoJ2aI zDfBTWpKg!dx1Ny&P^MPkYU&o?&9BWYD@-nsP2??-4~~(mW*K=K_JD)o3KWlu@I2-T zS7B>!N45ieKA&!DX}{>)==#R7mj8+C%!lkp>;?9)BgZ*9=B$St-`f}R^I~)BGOoTY z)4tJG#S83wyaC>~a?MueNwN+dLQP43{Rerx6wsy_v#l%Ob90?OTF;Jo-As}LCdLfn zQ!`orNZ)1%U^?{xXW}}rocsg6z`yc+`2*ZV=5zX6_N23g=N{BYGawh1tmrW0o@wsmEv#6wyMwfH}`rvY*j&&_pVe z^|9mW9w?XWuv(HNkOzuMfGi{tFdwGDyjTtf&<*K)Tmi2FCrE}86~y=PVmgI+%mz4y zS&#c57QBr8GVDSB(reiLd@FW4F2ReLGmH-x(_NVVFyoj^`T+G`@IUik^9G>MN;Dj1 zk?UrGaXn_=_27E60FJPBSt`kidEaI;U@GQX)3i1c1`LEQw1g@_r=Sajp&w0vdq5-W zy!8`gsd{u1<_>cRpF&e$XSkkfO}W5*;02SwJXnrK!xt}0&q3gZ0m-<|7m^NCI^*_usO9IWn zX=0K*BEUl^9DCIncpSZlc{@hDoj8>l!K!Q({RZkt`kGGTS96J3Zr(7*7;}sS(`J1W z<7Ji=iKX>2Oo2Rf!*9`U`V(594=}~-Ze}x%qC03BDxdwEC&(~@T3;<$A7%V#W?PBIzv?;pO)09RXzv-x z#t^;Km}2FEULXgK!FxD2KZ7ge+Or=rZMmuTH2YxNIes=*X`5$v^4GY@%pdqqCYjr6 z`_6vTwv3&Ihf}GT!4|!Ux&!&xF4`))a zfpOdDOome5;pd1VE5Tm8m3zWFn0jaooJbAB$EmvTHyA|asH+vH%#_w?&0`bSBWosk zhEv%RW(M43^)w%VYxFJV9R8geLA}I3p>pT}+t6sbh<(IVQ03r5bEMIYw5GBdiqR@_T*cPsA22~dg^C&gWgO9Bb; zOvbJq`R;R{`FrJ@z4v<8Iztv(EiJ;P(-Ne<)!VGD4-Os)Is!Wa^|U17V?&L%p;KCU zU9lob7I{j#nYU>ITqv}~32ZoPO*6?D>w9ww5lJob+H4Zy-QrY<5$nVCa#8uNcuzvgzwUp*%)rs? zJ88+eURomVRtcY@0&W^u8k|J;oAES?#`|st+E5AZLTyZqY_XU>F?cbs&YM;+A-{Z1 zcW%1}B99zB*$9S7`}~7xC~q{!%{=|1 zevd&hB@6u%*(7RMbn}Qfbu}z%g?MA-m?t&jobw~fx1N~4lG@hK{vKJIzb^T@EB)TL zGG8a84F2@}yM$LaUR`^g|M_)6EilySakX|-ch8A@5mh#Nc9a#q$GyZo$Q=;jtMQzGyZh%)!=5UqxFC$ z0+nxORY`%l%*td=Qp}p9e-3sH{OC^!o-`9cRh%mBz;9V%=wV*1%<-8AvNOD|^n=*r z-c#sYbY@K7nB>^@#qX3HSkh6VQQYd-3b7}OUM=!(%%RAVF2BM>C+J55*67d`U-{fB z*=zE;_@cc+`s{b(pWb~aKDqfuO4*z-J2yV>lW&#r0OTvD!c(G1%pXNM#np{XEjqU7 z&bX}aKuH?E^SgxDsgZM(J8YdlG5bLV`WDJ*;7#^_^zZNuE4b^M8|r3t2UzGLJ(u3e zRpm69Dbeb1=LyfT$gdGQJ)>N|s5{kF&h4H_k<|)yjA)`B2Tr|`|E~X|{xccD+QDWp z9}eQJ=sLa<|0tY8H|Y%>`z{rH@#O}p24h3Jv=91>&~d-u9hAE}2WLIVcIH<1l`u!b zTyc>UFRxbHJ2!{BBbP)SFS4)L#1f^7&5MnT`97j**l<@Zc^`JLc>TZNQSX?nn_25~ zYvyESJxH(nQG2!VWt*2JUYQ@KrnSwf?;od^CV$|{$|zU8h{UK%QA;BihQ&KNI>KFJ z!q$fOizpm%)RW}+Dh64}P~ZG9IgN5_R(s^=Z^&IyLh z)s~OUr9;34X^87hp~i)eMJGgp$SL8sqsA637S}s=PK+zOgF-+%^N!I`quO+Bs(y=H zg>k|QNsz8dJLUfJ8fl#H2*tBU=2oqHkOiLj^8;6diGc~e6L~|kHfEm4o|0cZ=(eVU zW$+YE5N}Eyw^!avA4h#Ul-efE$O`%#=6KjaDy#g@aVLC!%(q1v&E>&%{e{>`B(TBVStoz-%*A))!fhuTdmhg|>z&Iyyr6?n zNiM67b$nFQl^61DaWP&1lj$`r%s18hL;iJNZw=_BeXFu>q_<1`EoEw2pUnKc2=5br zLg0O{zWsdJ_(XT(osQw*W1@!@8CEp2$c(6eBC^7oIO-^KWldPcYUl|CY7Wo4SMbSy z$JaAAE^YIt74OXtBR(sFqMp{?qy1eZv)S zmX%WAQT`WA)(`v2<;=~nvio~?`KuQk&s~?{PtW-lm$^Q7b;0vcEu(>Tg^dPn;4O4T zIH=5Z&yBbfwI+Ib^o!^>(Kn(RMhpw(4VPQth9 zDfDxZ&u_nY(*F9^E=$bM4{f6zaHg8)X;Elz^yC;GW5f)Ko>z!RybABb`I#mci0zztragF;{Nv78`xl6`V9yK|o_CmoH{W>RS! zkH+FA;v@Nnyj(7=Y;*kW#Euo}U}-%r180MLI2g~AW+{W!b&h0*-w|@OQno17#m8Wl z!Tr1QZsh!w7oLC2+b{oQ){V4ZQfGb+`;?gS)7P(==d%ARK>Bp+Az5V|1AF(o9ybD<tTZ;4i;(TOk?`r7rxhgq4$^}Wm>97mCX&R4HWZ!&V813Br7p{NY3oMXzwrn-l0wAIQki8U_m0kDBMqaL;sYQ!<3}XgazG&XBpXa_8HS+{@m*z6yZ}dJ2{4bGnWVgV$uman^mnlNnyub299kTXTgu+Nd#dA#{*v zx~Uxu-42Zk`SpRu8|wxgWEz2+`D*so?6`a}kYXL-m-!oj&}2cCCa5lFdDjZ(6qP8Y zBuzQ$`Z?^g=bmSj`=q)8`&pt{S-Tga`T{G3-Q*9!d(fNBq914za)cJ8huCb;6K)2d zKr~z~yb)AThWuv@H@N<{)+Bf|*ij!tYk*~VvNTaHBXs3u%`m-@S%n+|jfKNXA;(XS zL5`j3ZMm-S1@8i_ttMKxP@^CT9kRb5DNxOqRd6$ZRo3rm{7crCw6roAzvq_>m8RWc zJX=f-(gFN;d|K}AEag7z`4Vw9Dk^$Q^wg*Z5n*Bd+=Y~H_!>CEs*uV?w!IF`tbME; zXhlzi+T<_ExnV0{hMq$qo544Muc*GTQNHKc>U631e z8pz4QF1Us-;MVzMOA>SI{wBUucDA!gHWAuT4MF+SYu1 zPpEFNd2nm+Vd!stEm1)%?j#~~nvJ!p7(>j`yuMV)S;A8|;(kPJPlCIqW0O2qoG8S? zyOf$~#=%gfU`?Z;*-%>+{MkRz`!+W!bAS4>Z^4{b!ASZRCc^?ABp(Q-FF6yYc}RJK?>-|-jlxibl;@h8aYD?is_R{ ze>MT^U@fgvJVIQrPFIG?n`I&g)S}9K>8!Xw`s}Fe?&oRg+$DDB56qs%P|^ubmTRgp zN>Jf)Q(TjsVTX7}UI(NL^Tc!L1O&V-X=40q%&=;if9OfUkY6omRnW$E9V0@UtcCEs z)J?3(dl}z{ZtK(O4IxGu;_$e_TvODe;tMn%_C~*nh2>@9SpLeqp_K}*3oZ{@p=zN! zAuBLA*Gl^(1*KNYnC#WGLPor{C3q-!Rx4``0mY?K>KEtAuz6v@uoIp;?n&whC0^#r zDs_mXgH(xqGS3;hb(5dP&&A>5L$NcgX6^_)3RKW;lWguoDjoc+IkUn?RjBN9Lr=bh|UwlDm8= z??=|^C-iydk2D*_$m5-7oO>Ou)TwfHDN^3$DCXSn?&zr#=2BY;UE%la8+XD-;sIr? zdR)GT1{-Sw;elSdN`B!BL4bc{%V|f;BExwr^ox)rTtge-Xs{oo!4SSItPo1!mS`<* z3JEP{WSe1RGUMp7NTqy9Mrk~SzeZ)nx>A4fCjJ+^rlx~xn>tEgf|nBT}aveq)KD6^xsG!RqZ_XZ384P+YS$Xd39=8^BLzi1DB z5B5hN#2WH4Ww)FwwuZxaHGU4Q5Rb~kq;e>kueKhW)2sp33{u4knn0TtSmm2hfD2Ce z@&jIdf+bsmQC5ox_1CA7KY>^L&7nFEJI6R9l{MleVTU}(73XOYzR`2tc~`oLkHE8V zj!;KT5@jI~H(|rf80~K@$+*Cp;Uu9xtixTj8#!W4HCE|==*z51d?+l=s+%W`F;*mN z&qk78%}wSz`jG#}Rr0`EXPu(u>|Xj6{eZ`#C2%B{*fw|$|Ba`j4d8}dU2CnmW>?)X zwpxuzHRG3H1>eU?`Jr-8{wgd7Q^^kc1DuDB@%3gWtwOM0a82k?Fef-ExH$CQIBwk_59kK&#fzlF z>S#x4Ws9xqeT1@jkl05Nm3*~`@=pEF5unX9{Eni8aR>74$N}O`*Mp z&+KK@q7mc`I}h`O5z+%SLQ!QwDK53fKL`m@f&7D9RvskP5*iCw94;jZu{_Be6bQg`P=^OWVfxzq$=G4*esewE>|$-98h8eK zvNpzReVwt%%%C;dXtG`Z6bb~NgF@0K1|Ef6f#d!mff|90A%heJ%Y;&rE-#YY!Xn|S zG+5T8B+-Ef;BXv?F5@wH6q*h$S_eWo+G9I;84f%&-LOKFgXwxFbEfr-v>=`B8f?wJ zv)S$y+zBV6hG@NTTy5-}>Np|yfL>OU$KYG?P}QLhk=nt^^ov!@YDZH*X`sP{aDwd? zhV#a#izI<{)>ak+dyq-SQu>+|=e^Kcu+p4n-hzqn6j`UQ*T<6#oFYCYFTGE5E)`^I z`^a82TpA&J@IQE@@EHqBbGtL{%z(e2Gf|K4k-ctny=Q%re@(DOXtcgt-=Up1_L6^Wj#z@G zpm%T{Kggo^-$FCFxZFj|!-rsR@D3Fd{*>lR8^ytBBe|Az+`@jgc<3!ex!!3guJ%%yJ8)+_v;6;*D7gN zxBIvQ>LRufcZ(mT^1`3EFuo?-l>SoII)*uqsRv|9>?{TxHYG=~L!)Rg*C(}@Q;TWz8?y?mmo%CSS zcs7#7x#D>AjDKcpK`WRAKf)kBEIbnTicip7_K;rVc{V$yi!QVhRJ6JFxi!Q(Nvpzm zbRJ0LlUYRX8hql*3PfrfNCV!Fui%4i2F+(HZ53`TT#+tH<#9*!8ubD?e2ylfX+m?k zuxP=D>^w~*3FH&+iE7{h!a|`RNF`H@^=4nvoy~!xU_Q8HlgoHElxA@U%9V6wr|^Z3 zv}Y+`WqC(5NUo(0QY*-{gt1^Y6r=RFq z;v|b~k1g>HU>A2=6+#^fmggCELRTd;-t1)kW>zsgTDF#?GpmT*X)Zfwxr;Wz-s~Xx z**eSmp=`+`_C!;_CsvkpCK>cKuMPhblY~V8lecv>fIY>j*s$9-~*NKlhPh<{fgM8RWT2w37KwU@KMW3=+O{7~GEqY%cU#UGUx zj*aRkCC08-Dy@=wiU{`w_2_lhm?l~6jO)fTvpsppUF@mVNgET$^QHL*1jYvobYlHO zS28~zZByDy_z4fkskk}niT2?jzJ_W*7c7n=#2Ml&AsKDq{jIZRc`J>sf$_q8oP-9V zSP)JltZwES^Ciimne+i!OvmwQT!Ro*K>J}$UK<=ksVEV3fQ`T?@GGt^d4#%XD69%% z`AXh^J6V8j<4tVdYsgE{>9hygPG5rAhzS#LPoB@pu$yowo+S2{4oGLDLBb+9lcboF z$uaP^Py_!08-p_JC`(|US!*)Qd}i*qCeq?|z4f6p`2g?<&arc|s^&F4MPFxDw!Bsg zd!?(BZLBX#Bg^$Gp;y5Of5$+pprL&=E|YQe7~9AxEMj-ZU~rC)VEg%G{)8{&uV6de zU7RCj%R|K-Fps6vo@9eP*(;L))=D$W_+S(_Zd-fImwJgH4;?hO@_pzrS_rz*QluRF zjLu6#RyZ8j6dK?Jo4vMx$~aaM|n6BBzakS`WR2e$75x5m^HK5%snG!(ZqGI**p3CBQ-h z1w~jORaOSd`vm~=xz6hG6?VtGAsdZ2V+$F=%h_H2$l7OBw11<`N?Oz4i#CThU8+ocEwhStIb?PPcy-w&FiwHh;`x zK?RV>vgt9pn--(1*f2ccmrY~scww6eKJv*-2f1i7`Um~Q7t>N!Ybt?~ zU>NF$X9@#xd(edsrCaGfx{b^tqD|iOK}qy0+GwA$q!Vb}qp$cb_zIZ3I^}l1zt#_i ziiZyB6ODO#n%yCD3mo~63flU;x@slZZ~2Awwe!muzK-X@v-k(}pZ(6ogq~%6b`@NPLE*4CT&MwOun?8V zUN(rw@qBO?K0u975nNk{wVmg8D3SHEH2WT_X$Kl_5u>+ufs}#Ggz;i=yaZ)|O02p) zU)r&~{5+bE-wHV*z*8Y*f6y&t8o9&X!6rgGo6cIpcXlT7D{014Y?tj7RJ0kiBBibF zw#SMANr3U~WQQeL^+^@J7F`er3h6i-pF>ZCO;U{57q#d8SRzTbF6u9X(*qzdFQgkk znqGTqFVgD=ol1){rEH9imycJav}AI+FYuR8=#WV zvMY45J?kp+Eo?3uVo$poB;BfIRk4PX8T2i8fPMTe@PH*?0k{Fj!v*{rU2U~C_M3v0 z!J5!%)<pVX|d4q+`_sY(aoGahf#NHf7NIi*-} zvQQ89;`hlnYbCA5tKwOBKbiw7Sr7Ezw12JsU^2Q3dr`Of)tG2@pc21?GVIASo6qJR zFdt3A@vs~FpLM~K=2kYd|_04{bI-s8=`t zM{e@U;0|=Kq1IY$r50@#fZoz-d9Ba}Jb^iqTYf3Ow)t$T5RHf8V&Ik)6RhSd5vZ-T zG=8`8XeW|k^bfQwnCY(;{9bQPJM&@O!_Lsvq&sZ~+F>VZ#!_huW-~uXrhiy<%^tK8 zpAN(9M0OJ2Z0n{@`=BafhBCuWrMfv{#2#Rky*txwBJ<(e;0fQ#-V%#6rYB)NEW<8* zEV*P8(INIXU(ENy=Ym(>p-d5%@-#A+OyaYJ4vJ45BiBS*$#pZCRz&ZW(GE%Jg`3fN zdUtJrRf6vpx{G6lc6P<4z!%^PJ83&fr}dG~65WpJ&ecjsw1b?m8Zkj|%Ks>Cu@x-K zB1j8%5H-Y$@dPk|#+f(L<0rVSk-B3=z8HMnuCuE^Q0?EZ)rAO%SxGLw0+t@W0`TmDq`i4 zDXbr*w%(s7EsR~pcVsbmfFr;sT3}w(uNpFKVN=8ste}PV{x=2}Sv}&XZRrKj7!87l z*gNaAS;oXx5%aZ`WUpX-s}re9w^Nf!Ruki~*_(v38E~CY1;2q72*EUAjxZ1%V7b-= zL((Y`=w{x5?_-l`Pr4c8;{Vz6CmAmk1#zyjz_H6QPOTw!!?n;$p^sP^?*u0Mfn$(` z-`Oc*D@hSf!jmk?uC@;39c#_&f>Y>=a7auRo}yjojeVl=N?3=Vz!&T|ElO6~ezqN% z%gWmn_nhpvzwe`7Q4hB;m?v1BS=`)C98=H>v_6WqcTaSFPEKj1{H;(VctaKcuN zF2Yi@2bBUc-wdw84$#Gq+4Vfq9A!n%nh7`a7c9sud{|!yZ@`)Ml61Y49VM2nz8EY#33kab~LV&Nywn hx2tP7yJf%cN7R&G1-%ilPlc<1`{-w!jBnvv{|BFT{?q^f literal 0 HcmV?d00001 diff --git a/ragamatic/rawwaves/Drdee2.raw b/ragamatic/rawwaves/Drdee2.raw new file mode 100644 index 0000000000000000000000000000000000000000..3ca7c6af023897fb538fbaa0807e13ca19d8ddb5 GIT binary patch literal 9326 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 literal 0 HcmV?d00001 diff --git a/ragamatic/rawwaves/Drdoo1.raw b/ragamatic/rawwaves/Drdoo1.raw new file mode 100644 index 0000000000000000000000000000000000000000..5b17c9f01db6528df57bbbb1c521589d91e79156 GIT binary patch literal 2018 zcmWNRX;f2Z0*1fuuDKx_5C|xWI*JP_xFGJRGbmM|wOF)0w2Fm}2;)*^L{Z$ewk{(| zT{@1-;C3n+Eme!!Dzze_q9X_*6hR;cl8~F5kV9j1)H@w=VV zg!Q&#bdmFo>v~wQx>%ZHjG_1UWVpU~-M49^ZDn^3qvAHtB0%|)i{0etn+dC0~(EAV;hM+ zMo*u&rd@)aUL_W*^}b5GzL{MWAK2r&Cpiu|s~z9ljAzedzquf_1rnydDEHq-fF+%`A)P+UZ1VU&K!}H0KV^r0dGRL!6(ckr_Py3TYUw- zR9AGz*tV-Shs#QL(GT6n=|S$l`J>cAlGJ9Caaaia9~z>GFuE;emPYfvpoE|erVs;W zNegrIPw5Bxw3uH|M^RbK?#ZxqbnLe+w5@16|E{$=*i-1=B;~9 zi7;$3SBK3AZZ$UHQ@D@#&!ySYYsD%g`g55rbPInHXEamMO7Uy&@19~NiHqmE1%8RJmh1L_{WnOvw{qYnz67Ni(|B{+E-e}d`oBrpSewmW%844oyF z5r?&jL^ie@Df05^ll>Z5PMH!1H zk%wV3Kitzv593U*icBLLumvC-)=;sg?dF!yH6fRRZ=1RTzQMbY9Y`gSL)L5Ju^Y+- z!R9+m|4g@eIy~RHBi$(DV8;tVVj+LopUlpa@2Cq@voum#4sXhXz*cIrzB5RxKacE^ z?yHfo4h~h9%U0oI-%h5^f0tdt#PpQ7Ry(fu)OthwOC%R~rT!$vbN}Jb!9Cd!rM!{b%TE-nVm0p*hba{x4GfU?3N?Hlm(Sf5QrKd5i?gruhNrLZF}sMHE8hop zkgqg}cZL4K6-a1yX(5?}SYVl&#i{;-T#A3OcMUU!8S7ifuaNtLP*{U*#H^ZS+AM90 z7A22i3Z{}5sWaN&s9WehkgiTriU5kuCN%i>_#@(ZfKy*%Fi;0@f}DrP!&>AJ{7ogL z&BAm3SFu#t33p)o5Jgqg=@6h3u!WcfucSWGG66}{da|Cd5 zfCRW7c7kzgHu4mINT!luNSBf;m#evGC2^Dpz;e+rtQ7kbvmw#Ipq420Fc-T`=4hAd zyYwjK&?J&8$=!H>x<>?D30EbYQxBoh2m^}LP0Av9G6=bw8)zT*8J*8pZ9!+YO)8{E&Gbv;AetLZ4W&QW1E+jiI^9CO@L=^5_NdVgWB zCxof?I(w_!#?}d6iM2{OI);3$+o^j;wUK%FGxQ*|Vigog-oQn~sVZQQ+#sD&5T!`j zDeskHh5w3KQoa-`Ka|tOQG6P^z<1nR&){y^wZM6{=b;Dlo7j`wQm%r(E1T78FbkX6zY0iI`6fqrBPyR3h;dkwFzu;Ar?Q90Af`40;kPM-r4N z;t6TGdI?R#WNbeYqdb!LCjr9a36dCR>Ga|JNN)C$38|rg{0~S)6f+BNUy;;N}_O<8_VYlt3|z> eArBXJ2y3MX(IbDN4p%dk2cQ*JA%8_Ih~@t;O!`~^ literal 0 HcmV?d00001 diff --git a/ragamatic/rawwaves/Drdoo2.raw b/ragamatic/rawwaves/Drdoo2.raw new file mode 100644 index 0000000000000000000000000000000000000000..5d2eb82e2711b2dcc80ad4eed8bde21bd4886dee GIT binary patch literal 2774 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 literal 0 HcmV?d00001 diff --git a/ragamatic/rawwaves/Drdoo3.raw b/ragamatic/rawwaves/Drdoo3.raw new file mode 100644 index 0000000000000000000000000000000000000000..4e45989c4c4e91fee5c2af9123a746a5901b7fec GIT binary patch literal 7310 zcmWNVRbW)t8ikMBcqRr3gy2>rIF#VhAPrL78YC1i5UfxnNU+jEfuMmvgL5fP@!}K+ zP^`Gb$LF~1edp~w9ozrE*7_Ew8_A7qAR=1(wN;vUnFUKBz}o_MI6DKqpRQxuo^Z4)3kHSDXpe{R*%;j zMecP-KW*kgCsGQYsR>F?^j~(3@>qRLxO_w9X-0jXLDw5MnctY|bX&(V{f0>TI{Mqn zJ=NMojHSMFa@>=IfIH3A$k~be#Er6J=rV7t7N!39#rc0s#-L+!*{1Bbi~eQm^5Qph|0_4o(K zqi0{*sjINRk>&bsJq7#;v(?JJtkS3cUyT1zr#afv##J@;O?)fY5YRu6Tk*QY_35kE zwcdxyla=!pA%1n`3kmCL(AE@-Aw_+)`Dhnj{AFc5-u1Nzt8>p}{|pGaR&xVT!4N)J@WF`H7in*3feF zWU9nnEwO)HPeXgdT}e}EC~qw-`PB5y_1Er_i=h=p5#hEBbn?;1;x0LUrg?Ld!iU;> zkL%aiIaSZqd)c5)(oSn%WSsh!NrF1WKlZ22tI@NgvbfI(CcF)F3&sbURQytUy0~Sj zt74wgn9OyYh}RMm<3~FKmVxwGIA857?KO6gey2Tda$Mu+8IDg}bK-)&HXICJQA^P@ z>QBe+nEjP*R2fl4j2%K=Hd;u#_$1-FI9r)Rf*ZQdK?ef;PC<(Ji3T(I)KWHHH~kQUw8dV_6FHzLdFOSVz2 zSl4bR!#zZX1b2Qq`8?*qru+F1Dm@|Jo%Zh0GU?IIPf;@*g>-@WM!7BIgpLMJ%G0o! z%x23B%Vhcpc?x?8S{bAC&nlr{k)7D7Wyxi7e?`|=#m~R@+$ePw`Mzu|LP~dg4+wM3 zl_X|MbIh{dAeX_mCS`0i2f+=hudv2nHa2=78`Vw%`Ey*`Z_>JSx5%=Z`8rK z^RbdU)v^!GQTGWu`D4;S^C>0Rn%kanw}}ihp!`oa7#gq6=N0+%scW#PgNV_z#tbB&5Vm zbFLuIE5pj)e009kKEjfl-qArrXeFQ2-Wyl+-g<^3LK(!C`60B6ES%$CLbN z=iAiRt6zWoP_wwZXPAGGZ>oQ7;H^Q!Ku4VhdS<435_UJslo61V>0*}gjm9#4D>`moYY5UM^@WYMCTQ!7 zzmWi~I#c7RDzg%Y#J6(SwN58%An8aId@4&?hH*u77VlhU1BBQF!c#qxVlI*LU9bE~o!H%`8Ml^&IjN9gW7{XA@29Fu9 z^mgi1DUrv6dBNrWGkz>MRh(y5COR`U>1^TvvK>Bw0pw4VM=#@c@)Dz1#@Rc)IknPONE*Nudj#iAD`yC<=-D3rWAnN#9T|ZbBC*+y$4f( zXP8^m8uAoLS1#+b%}kI9R+$;vI%yp54iyGx2M+s-1Lyg*%0~T!dCWYiFW0Y`dqF?= z6)Z<)V(rL-mW!@fcUAXMcd;9|>pI(7|6z~PONbTNC1O7_#nQ$ykjK#YykCxvPHETVa!iR_zUb2Jfj~_x(N*e!#x+vU1j$2 z9FHD|4Ydnj3aY*w&w0;(zD0p8VhiIMS>Jlmxx+mmW^(kcD7)jSwHNItR-kcUfH}h4 z4>{x_Qp>z=kVSPBFo4-WCp#O-o?gn zdA2pK2~h!|zeKR2L$dcufo-uQNv(ooPz+27jw7g{vVtP{Y@&Vt9G8ite7L-en%acgDZj zKPEUWRE=M)HGqGhZSV@Re`KasaT6>(m`CJ4L>jWvC^Zg%#po&`hH5}3QFC#JSy?Gl zddiBlKxw7bG6UE`Y&D*aza^I9Ww=C-VNv=vb(862?e5wdV~f_KEv`b_D@$YgEqV>q z0YB&&YOuMb5?+fsx8(v2u7% zPzn9a=SzE~2mJIf&F|yO!X@Ef!{fshLOt=QG)rx%|7X-UXT#Gl$?Rs_ja-pPJ@g-3 zBw~nB7(`BkmHJ|NS9pE!kU!ruyJAcEThAWf9{&(uCtqA}dib#Pm71wuhfVM?L>dj* zpRJps{)j&8*4^pOzpOUqCe@d4kryH-JcFrBPbIz}U5%eX4`iI#S}oJ-n_q)da5D@L zb*SsiNOl`LmYZfdZk=q+unF*jvQMqyOJ@PSo$6vV$N9_TYs^>wWe9R zTCCg!3vci2_|e(IS?tPmjd!kalsGe^s=85Ecl%uK0n?iz(Rt=-eNDu5b#1JsDSwEA zg1dcTui~reZ{nNbb$V;~*N3u&sdAb2Sf8&c+EYE&IBWh6cA?YpYWOI$5GLxTwq0Ey zJqeap3@PhVdbsRI&v9SA@2>AZU&tr=p9c>Kb(L&A$7rL~kZJjYu@jp{eNAm4PGIX$ z3o-d8KvMyjnZ$lG;cbE;3>ZakJnO;>Eh6CNs(n{WWZd-J_0h(`-Yn zb1mnrA=_{EMEhIkSm#Vfx!r5+&X&=im`}_T@*MUWDMH?2v+(BlM4|~7%2=1g(U zb*^=!+v6OlGm?0 zXJxQvI5CvTd)4;FAg~cjARaQqIE_2TUZww|ThcwLKX3|Z47UST->3ed^bl@@nnu)i zn18o_p0BUBvA-jKSUF;>K}>8Gx*qusJxh!xJ}`T@ClyXl&ukuO@YVIjpQ8W4O32JMU-*`R*fc@heSSnZ0yxfD4)exeuq#Y zk2Ma$6UYQ)HgX9|z^>shC@br?7rA^?ge&@!Y9s3xx6QAcRA zz<6vFF%*wSCYpEkR1KOd(T#*g{YKZNzoS?z8>WH+Bm*tQim~Nr7vu@rDB_NGbAjP9 zMjPwZ8)BuvGq2%|_Ad6}-Uog&bWmb+53rf-jFm8lNT6%8Z!8&>FI*uF$;-r4%mE!> z3j7^5F-NPrMKoL({*F%;TT08+8OA%4)bz-_Noo*RDg zlkKuC*V2#*BJa&}un1p@3y7>g(wD({=y+^5dJuV!ren$2XtX~v8hL_!roLg5*|lst zHrJADU1(Xry|q@grCKLh3~m@@MZbWpMyBr3vgOV~%LpfI@bB|BtY}nG%`@9O%Uk4s z5*o&*N-tGJ{h*IAY1BrIppQqCcO`CMt&kpICg4CVvu-4bOp;6GOl7l@FYl8VYp0FI zTAaFGnjypr^M$8UC;5r;Nqwt!l1+7-aR+i(3#yo%#SUb~(-;*^J)}2~ap)I#5==As z2tTAKH>5bRs?<|`WS&QUL=F5g{tIp)zR-_tbQBZ4)IHo*%&a70&^)v+nvFFAM za&@45NZzPaXjApI+C_Dnx?MYGT!FWd`^YTx5mAlogD;BYfyTxXV+(kLNt9@*W@$`K zL>?NtK2kfSiOOzaVz9G!YQ=HSMSl(dIsZ^^h4)U75(LH2=Niq;YDfyX+sZh*Mzx3< z?D%Ab+#q^1@dghQad;__j<3X;U_W9N_*}FfJOjsp0iZpoZgw}k<|bfbE^-#rg3~R1 z=)u@uNFJJrBUC0=VC!w0VX-jd=%e)45xwD&9*_nLU;|hH!cfDGl3i&BbA#=`TqH}0 zspPH5JhrpuI`gC3#8h`@+H={4bTu*yZ-rKZTj4w;5&mFG<_S0oc?vh{syv0C6z|hMG0$+`P#CE{juqj#vQIJ%yT|ck`f{P+XfdJJN3m{Nck+a6gfEvh7ix_d&~`{1HKCM2Sbs+vHtj4d>*z9-%8G4S}<>^ z{kVcmHSe44jU(Exayx+#Fqu;`m7m1p{PIv$zv4d{7#8$~i-e%OPkUolAp1z1nZ(|u z=MsA{h_R8s5+J-p2Xv@8R*%!#D-J;n!B9eIKu`^SADj_hC8g-!gHZ^Mjz>JmIK%-@ z!AfvCat0lQpQpAkB-4#)PCmm1VNH?SP=G0*p;^^Lfj4q8=}1SAZ1}Vn${b~;wia|m z8xUQXN7h;PZFa@}t?jX6jH{`$x4p4#m3@u_x)|5*&Vh~sdzz&QyOeD}@1ZU1JqvHc z?ay8H96swVO9s1>8A%-{+Y&Fxh2$4fk0g>Z?mRo3+JUvyzeGsnkZ?<^BtBAlNHJ2h ztgELKSttvh@fCSic;bBr0@Hay_Uehq8mgPMr+t}yp*1d&EKgCZNDiBX9znXoj^MK~ zPaVg92-OM>^IN^Qy$gLGf*$du@>$OTG+1a>j%@otCEA$$n)!*_%WkCX)DO%z%yGIN-V(_&j_6jUw&Yh_@K;nu*N8>> zVZ4-UXMbqB$+jlDM3|%+*@D5ihU^SxA$^tEKtE$V>|nY-`6oUG*U52oDzlaPL=46* zU=xV7^h4G`E`j~^?rM&ni+Y#}+cd`sXBXFa_vh#u(Wv`gR9(kEwgRpp`32vAO+{}& zX!KLJDPNTCGAVTvYKMD-lli@JqTUA%K)vV-xHjUeUG>FA6SF&TfVJ>F(i${2F@3g@ zDmDw}hZgd^#Q&6D%0cP9v`ATD)I_HcJF)Rbip)fOz%DTI41FIug6_gWTV;E?W3RK& zX}71akPP89k*7#Qumbi&6Om?MlrdCmrmR=%Mc#cbbfHiYzSDQ&r=RbnNp!FsKeEz@)7ZbG)%2!EHY;pthz+HFa9eP zX!l?*yaoL&^ME^M8*E=-Tg9!QU*Q!n&Y-m_>Syf_BgtF|rhsTo7mtOLL$mqH(sJzp z+=O+(@=+abG@qLTK@;dfhokS2n+OVD!A{^hdWg74R>fz7n_3^ajd+(o9Lf$?<0)aI zTwndD4>i{zm(gF5L0~cLj}cTu&dsH9+pRAgTV2(hxsK-6b8K7ujCo5rB1y^#P1m#4 zu}VuRLORk0X{t;qCFXW)JYEM)2HnirNF1&ch1h7g3-kk*A|zPF41%xVe)KP*Ds_Zz zjgJQ1wUd#}*`dUXqrxM@dBQBtEy${KJynK!=_*lNRE8# z6YLoAJ9U{>nRMDk<&zvy6>o)YCA!e@Y%+bCI!qjhxcEJ^E=)JJsdJ>6f*>3gVNw+stlSo^)Q^C5FVm#OabnPLtP4al&SP zs?bTAq;50r0yjuCL^IWV17!3Ed;)o&>P;qL#pr2b9*t7{sS}LEEs2m7%Zwq{V_m^9 zeUY|MbEu27dRh%_oE`_};cKYP^m2MSm5OIXTqm3CN`=^$)Glx2kU4}i( zfo5%!)9X_TC*AZi=Uu5Sk4Lznr+P>o~8bs(a{@g{f~^1D7tNmdB8i9Rjj zSe(x2R%0tz0=ns~C5e9*Y8Pl6m>Rqj{!dJotxAltQLU^!2Px5_C!NSSF{qAgQrATyDt7W-ZqkaW>FpJK5QM%WY5!M$#_!W(j2j_ zBd$u0T-#mCZ|qY#M14zz>8o^Gd>(QaDKXMYuF*B4b z{@<`q7$fc%FYt%M^}=E4gnkZ|<8#T;R1VdO{2u=Y`wJh63z5n8kZs83cmaAJ+KmkD zD|wSpCpaR|A~;_-q*j0|^k2LR_8CP$qV}DXE4GTHcE54VJPVqbQ$Px`5c_~vL8ck2 zWnP@izYmuRqvTimXS1Q+O+FjW3KoQhhWiL(gdO2a(CZ*w-=h91 zyG2^GN?+6^+Or5-H-sBZoUU!w8IUr3@^TkEApiXpj3eX1Ags`(k) z!kluBi`g5S?w)HuYOQWr&s||ZvK!e!9A~X-duQ)x_t{L#3HDP&mv;~dagkcgM6$0n zY@h0w>9Rysch__M>Tuc{M!fcg3)M^FI1`)KYt~>Xa5gq*FDAn literal 0 HcmV?d00001 diff --git a/ragamatic/rawwaves/Drjun1.raw b/ragamatic/rawwaves/Drjun1.raw new file mode 100644 index 0000000000000000000000000000000000000000..598bf863c9aa5113246438cfab8ec415782b3766 GIT binary patch literal 4538 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 F{s%JAh^7Dl literal 0 HcmV?d00001 diff --git a/ragamatic/rawwaves/ahh.raw b/ragamatic/rawwaves/ahh.raw new file mode 100644 index 0000000000000000000000000000000000000000..dda5f557f55beb212e4d1561e29ec0bef5577a1c GIT binary patch literal 184 zcmV;p07w7*m-&VAgX=x#J>~M~!}VDT103`#-8qaw2R$pwOYkS>qvBxVZs?-$L-wuwRR2%^&;kPm zy$HJw{Ta9*ups;%T^KM81^+PfL+uXjkn?E#TLy~|Bo>wzJrarxiU+m?1p$lz`U5=% mjRznE&H`Qlll}VpCHsK@5(Q8P`3RZ{O$ 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 literal 0 HcmV?d00001 diff --git a/ragamatic/rawwaves/dee2.raw b/ragamatic/rawwaves/dee2.raw new file mode 100644 index 0000000000000000000000000000000000000000..b7cd77c9db46c1a2aad9c931a772fb8036d04e34 GIT binary patch literal 8800 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 literal 0 HcmV?d00001 diff --git a/ragamatic/rawwaves/fwavblnk.raw b/ragamatic/rawwaves/fwavblnk.raw new file mode 100644 index 0000000000000000000000000000000000000000..14da0748110b02d3f8acff38c37b3948cdc42d55 GIT binary patch literal 512 zcmZQzU~}i`7CJ8RLtauFB zGKY%hs+t;D6BV%?nD&Kk|Cnu_K!hvKaT4|7ju<)ocU`WSaDsxkCS ops|m=yNu&mn=rGT2EVoCRMq7rC4LAU=jmp1XBcq%8Adb!00;GMEdT%j literal 0 HcmV?d00001 diff --git a/ragamatic/rawwaves/gun1.raw b/ragamatic/rawwaves/gun1.raw new file mode 100644 index 0000000000000000000000000000000000000000..d5ef089711ddf4b7703ca5ad1d9b68642f41c5ea GIT binary patch literal 4152 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 literal 0 HcmV?d00001 diff --git a/ragamatic/rawwaves/halfwave.raw b/ragamatic/rawwaves/halfwave.raw new file mode 100644 index 0000000000000000000000000000000000000000..b34639b0be745e0779f14f7afd5a93398ba73310 GIT binary patch literal 512 zcmZQzU{+ys=gi{i=3gyzT=b#D4;gNGNhM`fbqzIbIXwY`-^TaMc3Sq>gxQNZo^`2m zm+{=}WAC>=&^UNj=$8nmsK%Jhan}-FCw)wLo^~!{X;w~-a_-6exPpg8A;nuunado? zvn!e_JF9A{V`?;O9@Tc%$<)oM=crGtUsiv;{%iezAifS{C)RV+&8d^A?W}oJqgfqO zRa4nn(OjNg=1|I9ytOE#;9-7T?#UeGtelLcY3EX&Cw)wK9d|8eb5vu5Q|OoAS%JoW z`+e*^H@nNYR5_lt7qbbo>@nMEe9z#wo`ANThMKCnlCr#{47bD&(T76E`B(FFb7rx* KGpjI+Z~y@L*J#TC literal 0 HcmV?d00001 diff --git a/ragamatic/rawwaves/hihatcym.raw b/ragamatic/rawwaves/hihatcym.raw new file mode 100644 index 0000000000000000000000000000000000000000..f61389ec8eb6b5e14b9b3967b03bee47c680d7bd GIT binary patch literal 4976 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 literal 0 HcmV?d00001 diff --git a/ragamatic/rawwaves/impuls20.raw b/ragamatic/rawwaves/impuls20.raw new file mode 100644 index 0000000000000000000000000000000000000000..9d89aec1040720ac5d9cb26d74fce5cf04c7cbb6 GIT binary patch literal 512 zcmWNOJxC)_6ouc*7>O{kkQ9Phf2u5+N`}~p7@JiQM6{GeK|~CKg@Vl@SSVtlSS66y zSt>@>Mr6Q3(ghI_Z5Cpum>H9odH24*o&Lag&UgOko&7a7cQWGkEJpginziG9*_!w) z1-rD~aUI{bYq3(K6TK$$m%ZmkIw;6GeTt^re?{Z;L%EP|ZLxNC5Il%pU8d*Olr>3j zOq+OzWU$a;+`?h$nIpOyNzhGGR@3;xeIDbpa49M}K?v=pNz$dqWj{Kc@e5c-lnwn# zGUP8A)xH`K6HtX8Fpn$JR&QpBjFGI#sc-4v8RX$N7%?NcJ~g-Gr*U;r*&>H2ID|XA zl7p&ZQpPjB8B$f5!FzawB06G25xr*$gqVWfQ$%c_14Vemdzn#HGZf}MlTsBqh*xk2 zhnNyMW$U7GL&mK>m0Zk#3E6o(laBf}Ig%w~W=XwC8&_aH>{}HRYC!vBG~AKVud;y% z>->TH*NIBnzW|q zxh{*|;DH^m_SP2Ul}kUO@$io{eUkN{&`5jF{&JI{7wL?Z>{@)g&|;Vyt}hF&vSm~dGb7U+z*k=$55qH??q$rVx&dazBhGMRU0-O z7d<`jH_NWmzSga%q1Yx7U-DkY1YvkdK3y=XF?t z0+(>X)aU{_R9v?3(`M(%jv9qUDw;|2!Y3-H=J?R8*57DNB|

qiqiiGvTzlMn7n+ qhos$!I!)~U&FTU49JgUZRdv;NT8p&Ai_w_gt8{)0MKb*`b^H&@0XE41 literal 0 HcmV?d00001 diff --git a/ragamatic/rawwaves/jun1.raw b/ragamatic/rawwaves/jun1.raw new file mode 100644 index 0000000000000000000000000000000000000000..82105e524424643a115d6da29b54e4757ef6b6e0 GIT binary patch literal 14776 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 UsQ^a$1@?`^>nf`FB%<{6e~Pdx9{>OV literal 0 HcmV?d00001 diff --git a/ragamatic/rawwaves/jun2.raw b/ragamatic/rawwaves/jun2.raw new file mode 100644 index 0000000000000000000000000000000000000000..ba5f53b982aa985e732deec9814150f37e40d4a8 GIT binary patch literal 5646 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 literal 0 HcmV?d00001 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;i4U<*XzxtyK?6J+I&Ux_18)`^~w3xXyj9>%Kmp>-v0d0Q|+;t90|t zRWD2Z2E6Yduvb~vZfD>cuPi0TG{rJdOEb0U7}D)Uk4uKqdjGmq+j!Fj!*+7EENxuf zvOw%|4Q~!_N^2Nqb=u1G^Y-6re|m)V_n^00(3;!u%6hoj;)a8bcdWY_-mQJBHrl%Q_0(6Rn}Z!8&P6Ym)*fw~X8XqFYnyEU z8KO-YZ3@f-Ob1juXNs*DIn3had%VLHi*6{_5=>Q|S)#5r)>&`3 zWqD}Y#JgN2?j7W$P!Rxr$_7;^NA$;z+xE5&v-@k&TW`^KayuNtjiN-{pc9~}gN^xy zKWM+B%uz`N%C9(`m%(=Rsh*BpR=NTV(bT=iNjvKpbUfOWO zWy53bOG8_a3eVRb<=PbWjM2v<-q=U8Yf;JsDig~o9!iy7fO@ODST7La`WbhQbA`Rd zk>;Ktz?E;Wu{Ss`y9PU+JEC1)`exy&57HM1IS-k|Hk!$4e4A^a0cSul?8ax>YU5>( zRmLWxmsYHd^JzwuHX46%U=RMFJeuuwc zDEm-Pu~>hg7wSiJtMC^|;+j~dKh;m_6=JMtp%qlcV|Xdm(kYJM3ck*{5Qx*1wQ65A zLhU4Z>)KN7n3gX2C#c?PKXr+ksSZ;fDy8aY8mKSSP{kXENVGWU%sSWbez^%>`j#|t zTI>`FqNi@xAM0229eSo@SR?w0d1AXL6)u`c#XOd)pd0veJ)f2D+EWSbrE~O>!}v55 z;wB`lz(ni@MKFk+@D41J^X`L6jKD11iHk4_$KotZ#>v`AZ5A| zuZ&Q-pi}XdF-GyjBAL&^5-h_^w7_B50NIcPA3#?KfI#q+O04H`+>!1{q%~5d6pEu! z6hdJ%myXd>s;4S?!Ui768@W){PUJp3m_O%C-p3dCCO_m_c0&+Mg%pT~DA_p#!XOet zW%myy)?KKELWwvBHp-X}UqLG5z(ug(0GugVhoTvz?cpCd2P+^N2Ek}ZlkO{m^YUDj zF5CjiFad@@ko0s3=Wqgl$|HC@C-HZDh!1cU&*3N@$bC78J*Zml^cK~#g@dKGVH_@V ziM)>UWL*v)=1S@5NSF+BB}zKvNi7RtuT=UZ+?SjX9MA$n{)k|yT`<0lCiFyK?1U;j Og7P=#%?AFz4g3d5T&>dp literal 0 HcmV?d00001 diff --git a/ragamatic/rawwaves/mand10.raw b/ragamatic/rawwaves/mand10.raw new file mode 100644 index 0000000000000000000000000000000000000000..4b35376aeacdfc50cbef89ea76259403ac542b69 GIT binary patch literal 2048 zcmeHF`BRov6h8O9tA4nYpkfT8d@_h;peUoc1nLk$8n}R?;*ySNpbai#iA#!!1}bXm zFp7+rVkRy)WT-(z>P*r&G^hxfD2igEv3%S6-uJzy`%m@qeR<*-8@Dpx8UT7Vp)^wZ|a8MKt_fo^yp{irU{gL>rYL)91Rc6kgP%^k)C zGt`*mE%TmnZ|hpr-Q>yleD9jmS=I5PE6IJ&9pEyoNmM59*y+{{s8)*fMAct@OPlD3 zaCAEKp01v44%zQ^pAo$q93!-!)I#;KR-iKJ8ie3VI3i7uyCi}atN`1 z1Q?8MGuzDmzD}><`ObaXRprX^NWNCKkY$@qb}teq=PQ*;rt(1jTB(s6XdPUF0 ztRyHWmGjDOHCQXrB9-GxfaIe0>F?4rxkOqHQ|%5r-tt-%qRu^5YJG0)WOZhZQD-bP zf_;_|0M()u~s|V&cGD1n3l;%IG@Fbf-$CDS-%Q^KZ@ag_+v2VD2701B zC0@gHSkvvtSVS`DCp4B`mCniMl^iuxEmk^}Xf;f0*RScD^elac9<3c!)0HTBhvbs> zORFR&O(zo|3a{Zj9%B8#?yyvr!E)IZ##j@pXKpJ{_;Az3X0iFEX+C7l_Brf>9dL=n zkWHkNj-n4}H!YwG=oP6iMOrQ<2%+ILltzLYcH{H*cMObRX7eSAP_c!kK~ee8buT7Y?@4y=yrOVmeGAQQ=B5HA9+ol zkUOM?ToidJq&M7!n{Wj(@ii{xjJNQoyn)}~ukc-*kLehLL(m@`+~m*r-@KmRMGdE8 z5xx?=Cc|nd7yV?YgF{dNr=SM@5cTfDW!Md$!cc6+ay*JT0+ETR^G06A5AtLDrohqU zh&np3FAhK_j=@-*himbG$gjoc5Co~P70$wQ5=17DSTd7*MmCVI$Zk?XD#&q?MP`#E zl1{dhy<`vBO45iETHpj^!28e(pWqo>ff3y1&0>>Uep?`UlrQGvxRZzS(R>n56sOJn zqYFd0u$Ne0OzbID{fj0_+;xS$a##J1~UE=+|8 z2!{U916_jcdi+f={w?mu!*~pfu~ewC5nZ5(n&A)$qlArx@h}mlz(+6xk|6=6i5edW z9H+p?;wE1BI7ops5sw0Yw6Fz##)D#)M8QK0j>j+@C@fUW8-c@we-Ec&8m<<4+lV^_ z(pT}3=r>aQUjdt7k3i%)Gz*6O$RH9zoC3{$#6c85@IouxhDs=dlW-XFAqO_VQkW?w zih@A&U;|#py_kt9n2bsIp-^?0;3*uV1e5VNN3gY6s3Q~C;TGJ5`69Ov%Y^Fd@dfl0 s+a?GG)5H`T1dm%_t%#PwN?0S}Z{Psz6FvhLh>Tf~^v2#G@P8ukAJ5hp%>V!Z literal 0 HcmV?d00001 diff --git a/ragamatic/rawwaves/mand11.raw b/ragamatic/rawwaves/mand11.raw new file mode 100644 index 0000000000000000000000000000000000000000..94889be6f0d6dfeaa63449e06a39df1356508dac GIT binary patch literal 2048 zcmeH``EyTa6vm(P-ft2imKrLUPLYXff1tHjky?sQgrI62YY|(SAf(oIbc$+4Ofb|^ zBGQsB7!{&w9W6nW+DRp?C2do!toQrAPfz>}{n0#g-@D8`=RWV}ITv88{mZrr&h+b7 z`mU3=BT$Yw2NMXr6H;oD%z%*akn3hMZhEakhlSjfbUQIP(&b^iOZP|lbNI--&D6?6 zWfRIb`v1B@oU?N)QC_XAU&TWIt{d&T*noe}o-uvAp%TXrINvl35+?Z7bkR>HmZq16Lfxa}&~2tLx>tl+%hKI>eJjrV6&3@KY) zp6CR~z;lee$|w@|=Tx5g#27B{+V8|M4gv*os%KdCZ0*v^$Q$NlWm@T(W= zEioB#N+OYqBe*G_m@@CWcf-3EXdf6BXzk54ZKXDrVH3_ueaVy*Sljl5FN_g0&74_>mDWU`G&vFT+B%w9PlJ!O??XL?Fs^ko4vIEVe&lH%68Np7b* zuiEYE*c6-R2D^Q(#1**9F2lvUsV>#!y0b2uk=%n$B$sh2i?IhKIEsmA%ODT)LvBNT zBw-$+c$F7nSjKe5v4`$(GbgjFer+~~>$(<#mdxi4UO+3vBLXe37C{*-{iUCbl&;4>vx~Ha_L{wD zkJ`ibq&;gNIB_-YW1DBsxezzUopSjMa2aX}Ew{W>u z#&e_+T*+-br0-v55uQOi-9djO;A3pZ0i6MnX3}0>f1()W6))W-TEfMX0E%!3tFREs z%5EH9LnJGBhv%5h?b>w)W7*VIxEt=G=3eN0He@??VH-AMV@9(B`*IW$bXO~McB&j) zXNe}>9M7Syo}vTou%LF6BRb45;6lst8n9MWBJQ?tm`JDHd^0 P99Ox1s;310cLM(bY{@Uw literal 0 HcmV?d00001 diff --git a/ragamatic/rawwaves/mand12.raw b/ragamatic/rawwaves/mand12.raw new file mode 100644 index 0000000000000000000000000000000000000000..a128642bf6de4fdac74a1fa03bf32bc6003bb685 GIT binary patch literal 2048 zcmeH``BPR^7{|ZQ``*hwfI=>$Ah<atq$A=ExTNBe8y2P`3QlM>BW-H# zD`{%DP`RW|7AlG(I)UOOxgd(5rYyeid+#|<&-6F+qx1dYo^#K==lMRL^F08n?Gvv1 z9%tj;`a&zm$2;(=z-s?<&Jy-;r7nWuw2W*oZ|^9t0_RXWR~74Hjt|TTdRgcJ{JZ0|9R+=?ey+*?* zLC>~B+{fJc?%u9KPl~<8?%_&*neOgkC0O@7yFFo6KP%Dp;VU#vKd^GF?s|iBy!T4q zOa62G-ZFx?t^S>UFiMS`G@S1`CL529SnN>StuIufexxt*UbMis80|Y$EP*HlLpuXd?2wbpi6 zBkeprm}g)Db|L|tv6C7cb&mOtAZM5nYs5QGJGU80W{P>;JZgSt&N1#eD;!&BG4^0G z>gXcfq_xxr1-xIC+l%e)_I=f;r-~kME4@~S>r8!8N2@(5&d##RtQyrxSMY6Kq0ey~ zR-qPMIUm6kO!2sf8@Nv)xQ!S-&82(?2F4->tJuZqynxs7e!j&w`2cT|@p$gRgV=?K zG>t~$3I4$MSdD@5t&5*Z&G5HWTzDovO2SF%x&@6yA>z zER_09BAY^G&(XAlDyfvx$zQ515=Kq*Gv$h#4Dy$*+i?>s^u|1?nVG4$z8M_gNQCNWKvR5el_$B|wnLL3< zaW8J6EnTIH^*+5tAJCQDio1#10P!5m?Rg-l@p`_%FQocdakNVqoI)8a3Y0Ex;3}@8 z5-w^-skD){(#Jw>BF&^UN}y0w;V`nL?hK3*-)UHZZ?Fc5Z1YK8!&A8rhiKLfTC+c! z`nj&qMf$9GxvB5U_^dvm%e9AFipwOt1hAerBiwcW@Q>T@s>ebH6^ z?IN87Nd00y%-e#Fdvy%CW*=vEtg6w<+(((5Hm4JGBXqdg~gk~qJt#h4Pn_{Mv;=IPy~wt Nh1x5M-Jr8-F<{I8I-o3?rz|+Pvsm0Gd+jB?t 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 Pta~8a3%pR^e^cN;QOOs4 literal 0 HcmV?d00001 diff --git a/ragamatic/rawwaves/mand5.raw b/ragamatic/rawwaves/mand5.raw new file mode 100644 index 0000000000000000000000000000000000000000..9b308a860b4966a4bfa6148f01bdfa70fdc99495 GIT binary patch literal 2048 zcmeH``Bzm{6vy{I_ulv5f%s4asiXP`OQ&HN9)y>(#z(WkOzxv6K%7#F#GwIY{zs6mEKVe z>I-(m=;J-ZHznY?B`7f8T;ByP2ZP@W85=yWd%ITJ9&=W<~_^&&^MsNBClUNBzYZC zx~Pxr)$Sr9QKT*6o%jK_r7hXk%eh~@?!4RfXWIkUPHxmH)fHN>7*BC97!z?gJ1%cA zY&E7S9hEg6#iny!Zm+jI5)9$WXyt;ECm)k@DmXH3VYZ?tfPUd(O%q| zYm0Xdb+@=avpelMj%AL}wxn0i=6Y*>YoE55_7jfl?r7Cl9iuj@bG1&CrwsQ5k5Ww9SN=`EnM5Go>9}aHu1CIB1goKCv=CkFdjNW z8M~)+HTWtgp@gF#o@yW#cQ7B=F7&++ipUpXJenV&M6f|E zM1mh37fx}S{>B1!oP~lD=D~UlWA93{q+02;++Qg)WGd&SMyaPHM7^ud(uVO#JW7+?SKKGnB(+X`tTAn_mZbTsC)8psLc7N& z3KRw6mRKRuX$gFb+t?6xN*X4GvnQ-kx+>Qw8ohDYKiW1#)obVH7v5NZAS#r}ON}U08*j&0)t_IjdpStVuFU5mKZyL^81gHX6%t9~RG9QxBO zohpPpb%xEt!f*3Kd>=o`Pw|6%6`#)I_%i+x@1eD6cJ8C+2h=;uhBzxKMYAC4NP*Oi2G9grK+9mLLUBmsiG$*Xa8Pd=M{{TmWzl}xOU2Xx78nN$V5d&= z0Lr0M->g!ofNI@OEm*;c2JDO$^hZzqHX5M}3LzI#V5xp5Nw5j_!(RR6b-gz5KN$EA DK%KG2 literal 0 HcmV?d00001 diff --git a/ragamatic/rawwaves/mand6.raw b/ragamatic/rawwaves/mand6.raw new file mode 100644 index 0000000000000000000000000000000000000000..05f083d8912b7622d17e058ced75e9c06d65f25d GIT binary patch literal 2048 zcmeHG`%_g_82!F|&OLB17mO>$wa{qtL8j&tA3YFi%v2P`C+ZNHWh(eWv!c;LkwnLV zP|-3;F>8!;G##HMY7fh_2P%wd778e+TsW6|&pmtZul+~#qqAoJvS;>Q>sxDm0I(tW z?%f~j`M-neUTPZRG#i^uFI}&&J$9#qHFaaksCxEU#aFJ?47C?PcbGfDstnQrZw*cdMb!cb4Z_ zFZxQ_t{BgF@;dB@A=ZHgV}DfGU>>SUf=!Q-=A719( z#RiGRatF-kZS9Bd*WA0=KA0bca?OxcZLc)0t6y_>vTwxwtb3DvlLD_=qg#hI^=b}l zIpV+JZ}DyQ75j68cPyuU(48KRFV7p z@a-&#mcYj>7J69Krq|bO9toyeaaMj10+)l|23|6=S}WUoTIqI}=mRfky;!DtiW`w`)x)rg+IojCe*yz};Wzi}A zuC+Ii?XNT2%qo9E`&)r6?Y3W->)U#?o@(W7d(4IAY;&Z)EU+)6+lkx|{iq}S2q$r> zHq)`hm}L}(EpWPBc@g{F+afcgDmxsHYIPU8E=Bwtnc@D_wLE-h*g<2sHXp{yw?&S< z)zSiATFLfA`;*nWroK zHeM^7yox_zPYe}>%Iq)1bTS|u_FxP?iL0;zccaM$uzanvc2w`Hr|W5Yv*9&P8)FCv=7yp(9L#3aEz5@F#k3HQH4d_58X*^n3h_9vQTb%@QG6!P;~()8yj{eL-oh(7 zi&0{esF!`@GFe3qdX`oy_8hp6$(WAMVLW!mZkULfSdOsks%{4e3yTETy z02weD-h@?93ZK9_m<9bImO}Ikt*2Qug%;3z>d$plLdCS27E=zrO@*{Y&ACb8W7?%u zo}{1YGTop%WPuyHLlTUGm*Hs$r#d=Id)3AhYjK@A`O3`?a4Am3q4*fO;2!(|-#{_s z!fcoT10e=bsc)p8sDkn+Rc%O({7R*ir#R;-<}{UEmRu|gWraK@f0h48zw#}Xdee)P zN%?e;>Y)P+fHat=JSkF2N}(L~!7;Vd)o=yQ!wJ=~L+~~1P;TYIRCpfxDI_ZH9uN&q S#cxrAO7P4BJaFLuao|5Krp?L# literal 0 HcmV?d00001 diff --git a/ragamatic/rawwaves/mand7.raw b/ragamatic/rawwaves/mand7.raw new file mode 100644 index 0000000000000000000000000000000000000000..64941e9f98421aa1b2b353abbfa5a25cd9942295 GIT binary patch literal 2048 zcmeH``E!m}6vxlG&-+>;jiiJS6U3S-(ay9|RHLnF2vW4QG}hQ=q)|$0i#=#8iO|Fn zV(FwxFoM=rOJf@ojZqB}OU)Evm@u?S-uJoZ+w(v4S99jvXSvV4_j^9y^AO>Y?6DDU zg>`F5c#bSL@> zd`o?mz6#%JUk5irqTE_vbj_{WyY2$9SS#)9I}&VfN(e^sY0m)fQg2shzZ37ttkcxH z-8-x9?)vfdCe?eh&JpLH)6m>BPt0A-i=2wh2$H>0BvsPc7P~LpZvJSW_3!pi@ZI-^ zxu4oJyV@P@Hgm7p`fi-R%En5u%(G+dN!dy9CeFF)`NI=nGEJa~<#am3lbn{G8qY%~ znKSVcE#)@G;C&e@lO^1iN*7yd6Kr>RK*Mka5i&d=5T(S6DbP`5@V;jcicw)9=;l1x#kVu zO26?Ra#P%eZnk~hCfZ8z*yqw*#>qW|V?D*Nm%rp-`in|OaNAV}zkn$-K>*aAKB00Y9E17rpSB_|O0yFaifqf*lwvw`8d- zl47vDl%29nE+P)ch^Y&GPPz1$J8~2o0{7%Ke3;j968GcDe1fY@ePg&<jT6o6k*sPQ9~V;p*;u2e{#d@RORY1Y^>yWeKn44Y#wNu*4dgF0U>mt~ja z%Vp)a7&oXH^`%iXfu>P9?V&pyzzyhMxBq%0rdE^gxq)uC`| z1s~2~502m(E-0^Mn2Q-0jsA$m2k3`kn23>h4mv9h>7J7P;R<=UxT#G#H*MFdz8tFb^6r>e-DS#SN z6ve8l>8fj`p0-YX&Q*0=C{M>+^)5r{Eu;mSX_QPus26qC9U4&+YO8(m21QZ}^`?ow z3Ds)^wb2MurB9VzCH_VQO7RUOq{={hr;zE$5R z&cRmQ-D)7+N71r5h#D zMp8);npoPXE`({Qs=c;hR2ze7g_6lV=RAGoZ|INiJLjJ7J@?%AJkRHS&joma!ETg2 zXj5HpUc@bl^(a))s?dw@s`U)**IKPbu`1Hlbv~=pMW6RFR0zvls<~m3O@TROd)QUB zSsL+FZ-7GuK9}fQT^cc zleW6Q7pfA~I2DUduFAEurFNVRHRa}rv9_)qWK-;TyWO6%o9$fp1P7uSlF$_kR8Lju z#i@I0pW3CqQCF4ox_Z+*zc<87kdt1O+=<=*m8JTq(L$gA#rRXjsUBFuGPZUlu8~c% zkC?3{-Hb9DY^beocA4P7AEuv4GpS~zDX@|DJzMI+T`n7Q0?UvBs)=f~y6L5OrQQy2 zp0~oQ(o^&by;|q%lfF~+?vdisu z7vcuFSU1$=xyy{@3Z6q_bihE OuR0QK$HzhzV#4`G?c4&m8r5-j>=b?)OO*w zUtN*D@YH>EQ+=-%sdU*9g3BmECWfOu?{T-}eVOC=BBNY|Tkc+SX>OXE>_)pd7wr;V zf{SrUZmKJCm*m7)rt+0qZ69zis}PFTh{r@MlURx@%!ePd@Q%!@kc(~j8I>wXHC9bj zePIlxRf?ea0-`j1!qx?9oUGK;&80=YHxJJW1_uU za-HRV7V;A=<2<1=jB$)%Pj+G}>9FQ(!${GS#4&uGe({#i67J(sR!YSip$#I@Numon zOU5X)MLU_}B!4&Qng~S8dbG@uayxpWNA0IB=!3yR;%VvK6nRe;J^hi0r_f6{b(4;2 zfhIz>6|0LU&*DyatRlSkC}Xf8A2|d zljJFr3&h>W!n%k%#qCL6<6R-xTq>A^QJ5foJyR+_2XD(f9W!LSDZ`HicvsdkWXEU> zmAds32T|gut>_5_gx_7>mKtA`9ylSlYCrdgny-Xsk&I1p;zo%a>56sCl^)q9-|mqr z9u?geqvA*aNS^`oREM`{dQ`sVDzBt?{Jj=`8FX L#zO-C1A+elz2fQ< literal 0 HcmV?d00001 diff --git a/ragamatic/rawwaves/mand9.raw b/ragamatic/rawwaves/mand9.raw new file mode 100644 index 0000000000000000000000000000000000000000..9e88a0c91317db8a3f2ba7969fe7aa0e0b2e029f GIT binary patch literal 2048 zcmeHF`%_g_7+w3EdoSSSDJY5g7{y0HC|V?z!eA;E8kJ+FH7a6^`AU0eXg*4-8D}(8 z(@e(@b(#t%9YIQL98yC=bbR0ogz$l>sDoFz+;h%eeeyr_oA;YN_w4=cy}oa)^#SPX z>}tIgNYzUi??2*8YprmHc`tiQLVO``?M9;UdQd}fi6_&hss7?O_)<5xT+{Xq;AS(MQd9Pxt)bicmdO zym>HaLeOS+llxN-f@8g%y)7X%K~)~Fdy8wQ*~5%9maDJT5Vct4bE$LD4p@T%hXXZM zcp%;XdCLlaxm~1BJ2mzy`=;*hT(b{Y8CIOL7F|>{k~l+ecPgB5R;ks=KEj{P1lJ`q zTaChTb=bIITsJ4W4|p!PGt61WEwjOO*fqpVGWWVRnN`?pSGR6xIqKgWsI*7e@z#6x z82y~C*DpI4^+s$kGL0-%t_I>7erGd3!ycp5+-8)jT&%@AC|2WDmC@cE(J0 zUF@un>2hY{MU|n>sT-#G3dMZh zW)T;$tDfS_w2SOsw%2~&u5(5^cl8PSuoK@R2Lmt`g(_6#r~xSBMMmhO`UVrI^lfJG z3?HzB3A#wvGY4T4Wxt`^S!xHSr z-zda9yhNM(IhF0TPdgkYH@@dq)?+xn!4A2Rj|}vLqQ)TXQr*>5HC837B=w4#tNP)8yi@Nu(=*Lh$1 zYe({5>G3QtOD-JU(F=XhA48EYIw#6khIlnuRw6CIt6&}dXeSCkk8zkTnKW@g^S+>5 z=UvJ4#(329wy0U6{y`%oPt;a24Y!ug&k7%X^E@;Xj<^lXb>;@2Zay``59XfOFliSV|%rs(zf L_gI1dL4p4OW?%Wt literal 0 HcmV?d00001 diff --git a/ragamatic/rawwaves/silence.raw b/ragamatic/rawwaves/silence.raw new file mode 100644 index 0000000000000000000000000000000000000000..4b8a1b3e49c7b867bb4cb3d412403b88b765c9de GIT binary patch literal 448 NcmZQz7zIN)1ONfR00961 literal 0 HcmV?d00001 diff --git a/ragamatic/rawwaves/tak1.raw b/ragamatic/rawwaves/tak1.raw new file mode 100644 index 0000000000000000000000000000000000000000..53edc1effc78036d263eaa8b604236b3cb1f43e0 GIT binary patch literal 4816 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 +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 0000000000000000000000000000000000000000..54e2023231255f8d7913863282cf7cff9c1d0f55 GIT binary patch literal 91598 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..8c54e6fd33cabd10e438146ab084140b67a6b2df GIT binary patch literal 24018 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 literal 0 HcmV?d00001 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[]);