├── .gitignore ├── Makefile ├── README.md ├── UnitySAM ├── .gitignore ├── Assets │ ├── Icons.meta │ ├── Icons │ │ ├── gravatar_kurtdekker.png │ │ └── gravatar_kurtdekker.png.meta │ ├── SAMCSourceCode.meta │ ├── SAMCSourceCode │ │ ├── src.meta │ │ └── src │ │ │ ├── Buffer.cs │ │ │ ├── Buffer.cs.meta │ │ │ ├── Modernity.cs │ │ │ ├── Modernity.cs.meta │ │ │ ├── ReciterTabs_h.cs │ │ │ ├── ReciterTabs_h.cs.meta │ │ │ ├── RenderTabs_h.cs │ │ │ ├── RenderTabs_h.cs.meta │ │ │ ├── SamDebug.cs │ │ │ ├── SamDebug.cs.meta │ │ │ ├── SamTabs_h.cs │ │ │ ├── SamTabs_h.cs.meta │ │ │ ├── readme.txt │ │ │ ├── readme.txt.meta │ │ │ ├── reciter_c.cs │ │ │ ├── reciter_c.cs.meta │ │ │ ├── render_c.cs │ │ │ ├── render_c.cs.meta │ │ │ ├── sam_c.cs │ │ │ └── sam_c.cs.meta │ ├── Test1.meta │ └── Test1 │ │ ├── Test1.cs │ │ ├── Test1.cs.meta │ │ ├── Test1.unity │ │ └── Test1.unity.meta └── ProjectSettings │ ├── AudioManager.asset │ ├── ClusterInputManager.asset │ ├── DynamicsManager.asset │ ├── EditorBuildSettings.asset │ ├── EditorSettings.asset │ ├── GraphicsSettings.asset │ ├── InputManager.asset │ ├── NavMeshAreas.asset │ ├── NetworkManager.asset │ ├── Physics2DSettings.asset │ ├── ProjectSettings.asset │ ├── ProjectVersion.txt │ ├── QualitySettings.asset │ ├── TagManager.asset │ ├── TimeManager.asset │ └── UnityConnectSettings.asset ├── demos ├── Guess Number.bat ├── demo1.bat ├── demo2.bat ├── demo3.bat ├── demo4.bat ├── demo5.bat ├── demo6.bat ├── demo7.bat ├── demo8.bat ├── demo9.bat ├── demoA.bat ├── demoB.bat ├── demoC.bat └── demoD.bat ├── demos_bash ├── demo1.sh ├── demo2.sh ├── demo3.sh ├── demo4.sh ├── demo5.sh ├── demo6.sh ├── demo7.sh ├── demo8.sh ├── demo9.sh ├── demoA.sh ├── demoB.sh ├── demoC.sh └── demoD.sh ├── mk └── src ├── ReciterTabs.h ├── RenderTabs.h ├── SamTabs.h ├── debug.c ├── debug.h ├── main.c ├── reciter.c ├── reciter.h ├── render.c ├── render.h ├── sam.c └── sam.h /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.o 3 | /sam 4 | 5 | # for the Unity iOS project export 6 | samxc 7 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | OBJS = reciter.o sam.o render.o main.o debug.o 2 | 3 | CC = gcc 4 | 5 | # libsdl present 6 | CFLAGS = -Wall -Os -DUSESDL `sdl-config --cflags` 7 | LFLAGS = `sdl-config --libs` 8 | 9 | # no libsdl present 10 | #CFLAGS = -Wall -Os 11 | #LFLAGS = 12 | 13 | sam: $(OBJS) 14 | $(CC) -o sam $(OBJS) $(LFLAGS) 15 | 16 | %.o: src/%.c 17 | $(CC) $(CFLAGS) -c $< 18 | 19 | package: 20 | tar -cvzf sam.tar.gz README.md Makefile sing src/ 21 | 22 | clean: 23 | rm -f *.o 24 | 25 | archive: 26 | rm -f sam_windows.zip 27 | cd ..; zip SAM/sam_windows.zip SAM/sam.exe SAM/SDL.dll SAM/README.md SAM/demos/*.bat 28 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | SAM 2 | === 3 | 4 | Software Automatic Mouth - Tiny Speech Synthesizer 5 | 6 | 7 | What is SAM? 8 | ============ 9 | 10 | Sam is a very small Text-To-Speech (TTS) program written in C, that runs on most popular platforms. 11 | It is an adaption to C of the speech software SAM (Software Automatic Mouth) for the Commodore C64 published 12 | in the year 1982 by Don't Ask Software (now SoftVoice, Inc.). It includes a Text-To-Phoneme converter called reciter and a Phoneme-To-Speech routine for the 13 | final output. It is so small that it will work also on embedded computers. On my computer it takes 14 | less than 39KB (much smaller on embedded devices as the executable-overhead is not necessary) of disk space and is a fully stand alone program. 15 | For immediate output it uses the SDL-library, otherwise it can save .wav files. 16 | 17 | An online version and executables for Windows can be found on the web site: http://simulationcorner.net/index.php?page=sam 18 | 19 | Compile 20 | ======= 21 | 22 | Simply type "make" in your command prompt. 23 | In order to compile without SDL remove the SDL statements from the CFLAGS and LFLAGS variables in the file "Makefile". 24 | 25 | It should compile on every UNIX-like operating system. For Windows you need Cygwin or MinGW( + libsdl). 26 | 27 | Fork 28 | ==== 29 | 30 | Take a look at https://github.com/vidarh/SAM for a more refactored and cleaner version of the code. 31 | 32 | Usage 33 | ===== 34 | 35 | type 36 | 37 | ./sam I am Sam 38 | 39 | for the first output. 40 | 41 | If you have disabled SDL try 42 | 43 | ./sam -wav i_am_sam.wav I am Sam 44 | 45 | to get a wav file. This file can be played by many media players available for the PC. 46 | 47 | you can try other options like 48 | -pitch number 49 | -speed number 50 | -throat number 51 | -mouth number 52 | 53 | Some typical values written in the original manual are: 54 | 55 | DESCRIPTION SPEED PITCH THROAT MOUTH 56 | Elf 72 64 110 160 57 | Little Robot 92 60 190 190 58 | Stuffy Guy 82 72 110 105 59 | Little Old Lady 82 32 145 145 60 | Extra-Terrestrial 100 64 150 200 61 | SAM 72 64 128 128 62 | 63 | 64 | It can even sing 65 | look at the file "sing" 66 | for a small example. 67 | 68 | For the phoneme input table look in the Wiki. 69 | 70 | 71 | A description of additional features can be found in the original manual at 72 | http://www.retrobits.net/atari/sam.shtml 73 | or in the manual of the equivalent Apple II program 74 | http://www.apple-iigs.info/newdoc/sam.pdf 75 | 76 | 77 | Adaption To C 78 | ============= 79 | 80 | This program (disassembly at http://hitmen.c02.at/html/tools_sam.html) was converted semi-automatic into C by converting each assembler opcode. 81 | e. g. 82 | 83 | lda 56 => A = mem[56]; 84 | jmp 38018 => goto pos38018; 85 | inc 38 => mem[38]++; 86 | . . 87 | . . 88 | 89 | Then it was manually rewritten to remove most of the 90 | jumps and register variables in the code and rename the variables to proper names. 91 | Most of the description below is a result of this rewriting process. 92 | 93 | Unfortunately it is still unreadable. But you should see from where I started :) 94 | 95 | 96 | Short description 97 | ================= 98 | 99 | First of all I will limit myself here to a very coarse description. 100 | There are very many exceptions defined in the source code that I will not explain. 101 | Also a lot of code is unknown for me e. g. Code47503. 102 | For a complete understanding of the code I need more time and especially more eyes have a look on the code. 103 | 104 | Reciter 105 | ------- 106 | 107 | It changes the english text to phonemes by a ruleset shown in the wiki. 108 | 109 | The rule 110 | " ANT(I)", "AY", 111 | means that if he find an "I" with previous letters " ANT", exchange the I by the phoneme "AY". 112 | 113 | There are some special signs in this rules like 114 | # 115 | & 116 | @ 117 | ^ 118 | + 119 | : 120 | % 121 | which can mean e. g. that there must be a vocal or a consonant or something else. 122 | 123 | With the -debug option you will get the corresponding rules and the resulting phonemes. 124 | 125 | 126 | Output 127 | ------ 128 | 129 | Here is the full tree of subroutine calls: 130 | 131 | SAMMain() 132 | Parser1() 133 | Parser2() 134 | Insert() 135 | CopyStress() 136 | SetPhonemeLength() 137 | Code48619() 138 | Code41240() 139 | Insert() 140 | Code48431() 141 | Insert() 142 | 143 | Code48547 144 | Code47574 145 | Special1 146 | Code47503 147 | Code48227 148 | 149 | 150 | SAMMain() is the entry routine and calls all further routines. 151 | Parser1 transforms the phoneme input and transforms it to three tables 152 | phonemeindex[] 153 | stress[] 154 | phonemelength[] (zero at this moment) 155 | 156 | This tables are now changed: 157 | 158 | Parser2 exchanges some phonemes by others and inserts new. 159 | CopyStress adds 1 to the stress under some circumstances 160 | SetPhonemeLength sets phoneme lengths. 161 | Code48619 changes the phoneme lengths 162 | Code41240 adds some additional phonemes 163 | Code48431 has some extra rules 164 | 165 | 166 | The wiki shows all possible phonemes and some flag fields. 167 | The final content of these tables can be seen with the -debug command. 168 | 169 | 170 | In the function PrepareOutput() these tables are partly copied into the small tables: 171 | phonemeindexOutput[] 172 | stressOutput[] 173 | phonemelengthOutput[] 174 | for output. 175 | 176 | Final Output 177 | ------------ 178 | 179 | Except of some special phonemes the output is build by a linear combination: 180 | 181 | A = A1 * sin ( f1 * t ) + 182 | A2 * sin ( f2 * t ) + 183 | A3 * rect( f3 * t ) 184 | 185 | where rect is a rectangular function with the same periodicity like sin. 186 | It seems really strange, but this is really enough for most types of phonemes. 187 | 188 | Therefore the above phonemes are converted with some tables to 189 | pitches[] 190 | frequency1[] = f1 191 | frequency2[] = f2 192 | frequency3[] = f3 193 | amplitude1[] = A1 194 | amplitude2[] = A2 195 | amplitude3[] = A3 196 | 197 | Above formula is calculated in one very good omptimized routine. 198 | It only consist of 26 commands: 199 | 200 | 48087: LDX 43 ; get phase 201 | CLC 202 | LDA 42240,x ; load sine value (high 4 bits) 203 | ORA TabAmpl1,y ; get amplitude (in low 4 bits) 204 | TAX 205 | LDA 42752,x ; multiplication table 206 | STA 56 ; store 207 | 208 | LDX 42 ; get phase 209 | LDA 42240,x ; load sine value (high 4 bits) 210 | ORA TabAmpl2,y ; get amplitude (in low 4 bits) 211 | TAX 212 | LDA 42752,x ; multiplication table 213 | ADC Var56 ; add with previous values 214 | STA 56 ; and store 215 | 216 | LDX 41 ; get phase 217 | LDA 42496,x ; load rect value (high 4 bits) 218 | ORA TabAmpl3,y ; get amplitude (in low 4 bits) 219 | TAX 220 | LDA 42752,x ; multiplication table 221 | ADC 56 ; add with previous values 222 | 223 | ADC #136 224 | LSR A ; get highest 4 bits 225 | LSR A 226 | LSR A 227 | LSR A 228 | STA 54296 ;SID main output command 229 | 230 | 231 | The rest is handled in a special way. At the moment I cannot figure out in which way. 232 | But it seems that it uses some noise (e. g. for "s") using a table with random values. 233 | 234 | License 235 | ======= 236 | 237 | The software is a reverse-engineered version of a software 238 | published more than 34 years ago by "Don't ask Software". 239 | 240 | The company no longer exists. Any attempt to contact the original 241 | authors failed. Hence S.A.M. can be best described as Abandonware 242 | (http://en.wikipedia.org/wiki/Abandonware) 243 | 244 | As long this is the case I cannot put my code under any specific open 245 | source software license. However the software might be used under the 246 | "Fair Use" act (https://en.wikipedia.org/wiki/FAIR_USE_Act) in the USA. 247 | 248 | Contact 249 | ======= 250 | 251 | If you have questions don' t hesitate to ask me. 252 | If you discovered some new knowledge about the code please mail me. 253 | 254 | Sebastian Macke 255 | Email: sebastian@macke.de 256 | -------------------------------------------------------------------------------- /UnitySAM/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | Library/ 3 | Temp/ 4 | Obj/ 5 | Build/ 6 | 7 | # Visual Studio cache directory 8 | .vs/ 9 | 10 | # Autogenerated VS/MD solution and project files 11 | *.csproj 12 | *.unityproj 13 | *.sln 14 | *.suo 15 | *.tmp 16 | *.user 17 | *.userprefs 18 | *.pidb 19 | *.booproj 20 | 21 | # Unity3D generated meta files 22 | *.pidb.meta 23 | 24 | # Unity3D Generated File On Crash Reports 25 | sysinfo.txt 26 | 27 | # macintosh crap 28 | .DS_Store 29 | .DSStore 30 | 31 | # actual client stuff: 32 | x.x 33 | -------------------------------------------------------------------------------- /UnitySAM/Assets/Icons.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: aca8467edb8d14db396f2d4f02da1c7e 3 | folderAsset: yes 4 | timeCreated: 1556244518 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /UnitySAM/Assets/Icons/gravatar_kurtdekker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kurtdekker/UnitySAM/32d24815b51850042513e0b48b1715888e3f3772/UnitySAM/Assets/Icons/gravatar_kurtdekker.png -------------------------------------------------------------------------------- /UnitySAM/Assets/Icons/gravatar_kurtdekker.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: df939540fc3314a778f035de90bdda34 3 | timeCreated: 1556244529 4 | licenseType: Pro 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | serializedVersion: 4 8 | mipmaps: 9 | mipMapMode: 0 10 | enableMipMap: 1 11 | sRGBTexture: 1 12 | linearTexture: 0 13 | fadeOut: 0 14 | borderMipMap: 0 15 | mipMapFadeDistanceStart: 1 16 | mipMapFadeDistanceEnd: 3 17 | bumpmap: 18 | convertToNormalMap: 0 19 | externalNormalMap: 0 20 | heightScale: 0.25 21 | normalMapFilter: 0 22 | isReadable: 0 23 | grayScaleToAlpha: 0 24 | generateCubemap: 6 25 | cubemapConvolution: 0 26 | seamlessCubemap: 0 27 | textureFormat: 1 28 | maxTextureSize: 2048 29 | textureSettings: 30 | filterMode: -1 31 | aniso: -1 32 | mipBias: -1 33 | wrapMode: -1 34 | nPOTScale: 1 35 | lightmap: 0 36 | compressionQuality: 50 37 | spriteMode: 0 38 | spriteExtrude: 1 39 | spriteMeshType: 1 40 | alignment: 0 41 | spritePivot: {x: 0.5, y: 0.5} 42 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 43 | spritePixelsToUnits: 100 44 | alphaUsage: 1 45 | alphaIsTransparency: 0 46 | spriteTessellationDetail: -1 47 | textureType: 0 48 | textureShape: 1 49 | maxTextureSizeSet: 0 50 | compressionQualitySet: 0 51 | textureFormatSet: 0 52 | platformSettings: 53 | - buildTarget: DefaultTexturePlatform 54 | maxTextureSize: 2048 55 | textureFormat: -1 56 | textureCompression: 0 57 | compressionQuality: 50 58 | crunchedCompression: 0 59 | allowsAlphaSplitting: 0 60 | overridden: 0 61 | - buildTarget: Standalone 62 | maxTextureSize: 2048 63 | textureFormat: -1 64 | textureCompression: 0 65 | compressionQuality: 50 66 | crunchedCompression: 0 67 | allowsAlphaSplitting: 0 68 | overridden: 0 69 | - buildTarget: iPhone 70 | maxTextureSize: 2048 71 | textureFormat: -1 72 | textureCompression: 0 73 | compressionQuality: 50 74 | crunchedCompression: 0 75 | allowsAlphaSplitting: 0 76 | overridden: 0 77 | - buildTarget: Android 78 | maxTextureSize: 2048 79 | textureFormat: -1 80 | textureCompression: 0 81 | compressionQuality: 50 82 | crunchedCompression: 0 83 | allowsAlphaSplitting: 0 84 | overridden: 0 85 | - buildTarget: WebGL 86 | maxTextureSize: 2048 87 | textureFormat: -1 88 | textureCompression: 0 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | spriteSheet: 94 | serializedVersion: 2 95 | sprites: [] 96 | outline: [] 97 | spritePackingTag: 98 | userData: 99 | assetBundleName: 100 | assetBundleVariant: 101 | -------------------------------------------------------------------------------- /UnitySAM/Assets/SAMCSourceCode.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 39f30e4e2cd7b4ce6a1a483a360f424b 3 | folderAsset: yes 4 | timeCreated: 1556137947 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /UnitySAM/Assets/SAMCSourceCode/src.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 29261bbd84227453aa4abc500c286e5d 3 | folderAsset: yes 4 | timeCreated: 1556137974 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /UnitySAM/Assets/SAMCSourceCode/src/Buffer.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class Buffer 6 | { 7 | List Data; 8 | 9 | public Buffer() 10 | { 11 | Data = new List(); 12 | } 13 | 14 | public int[] Get() 15 | { 16 | return Data.ToArray(); 17 | } 18 | 19 | public int GetSize() 20 | { 21 | return Data.Count; 22 | } 23 | 24 | public void Set( int position, int data) 25 | { 26 | while( position >= Data.Count) 27 | { 28 | Data.Add( 0); 29 | } 30 | Data[position] = data; 31 | } 32 | 33 | public float[] GetFloats() 34 | { 35 | float[] floats = new float[GetSize()]; 36 | 37 | for (int i = 0; i < Data.Count; i++) 38 | { 39 | floats[i] = (Data[i] - 127) / 255.0f; 40 | } 41 | 42 | return floats; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /UnitySAM/Assets/SAMCSourceCode/src/Buffer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ab249e533211a41b48dbb87e18272c99 3 | timeCreated: 1556229093 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /UnitySAM/Assets/SAMCSourceCode/src/Modernity.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | public static partial class UnitySAM 4 | { 5 | public static int[] IntArray(string s) 6 | { 7 | s = s.ToUpper(); 8 | 9 | int x = s.Length; 10 | 11 | var bytes = System.Text.Encoding.UTF8.GetBytes(s); 12 | 13 | int[] intarray = new int[256]; 14 | for (int i = 0; i < bytes.Length; i++) 15 | { 16 | intarray[i] = bytes[i]; 17 | } 18 | return intarray; 19 | } 20 | 21 | public static string TextToPhonemes(string s, out int[] ints) 22 | { 23 | var ia = IntArray( s); 24 | 25 | bool success = TextToPhonemes(ref ia); 26 | 27 | Debug.Log( "success = " + success); 28 | 29 | var what = ia; 30 | 31 | ints = what; 32 | var bytes = new byte[ what.Length]; 33 | for (int i = 0; i < what.Length; i++) 34 | { 35 | if (what[i] == 0) 36 | { 37 | var copy = new int[i]; 38 | System.Array.Copy( what, copy, i); 39 | what = copy; 40 | break; 41 | } 42 | bytes[i] = (byte)what[i]; 43 | } 44 | 45 | string result = System.Text.Encoding.UTF8.GetString(bytes); 46 | 47 | return result; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /UnitySAM/Assets/SAMCSourceCode/src/Modernity.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 52465410a651d4c3eb67affd47f1283a 3 | timeCreated: 1556217173 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /UnitySAM/Assets/SAMCSourceCode/src/ReciterTabs_h.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a6ca72ace135448cdb05232c1791bb60 3 | timeCreated: 1556138293 4 | licenseType: Pro 5 | PluginImporter: 6 | serializedVersion: 2 7 | iconMap: {} 8 | executionOrder: {} 9 | isPreloaded: 0 10 | isOverridable: 0 11 | platformData: 12 | data: 13 | first: 14 | Any: 15 | second: 16 | enabled: 1 17 | settings: {} 18 | data: 19 | first: 20 | Editor: Editor 21 | second: 22 | enabled: 0 23 | settings: 24 | DefaultValueInitialized: true 25 | userData: 26 | assetBundleName: 27 | assetBundleVariant: 28 | -------------------------------------------------------------------------------- /UnitySAM/Assets/SAMCSourceCode/src/RenderTabs_h.cs: -------------------------------------------------------------------------------- 1 | 2 | public static partial class UnitySAM 3 | { 4 | readonly static int[] tab48426 = new [] { 0x18, 0x1A, 0x17, 0x17, 0x17 }; 5 | 6 | readonly static int[] tab47492 = new int[] 7 | { 8 | 0 , 0 , 0xE0 , 0xE6 , 0xEC , 0xF3 , 0xF9 , 0 , 9 | 6 , 0xC , 6 10 | }; 11 | 12 | 13 | readonly static int[] amplitudeRescale = new int[] 14 | { 15 | 0 , 1 , 2 , 2 , 2 , 3 , 3 , 4 , 16 | 4 , 5 , 6 , 8 , 9 ,0xB ,0xD ,0xF, 0 //17 elements? 17 | }; 18 | 19 | // Used to decide which phoneme's blend lengths. The candidate with the lower score is selected. 20 | // tab45856 21 | readonly static int[] blendRank = new int[] 22 | { 23 | 0 , 0x1F , 0x1F , 0x1F , 0x1F , 2 , 2 , 2 , 24 | 2 , 2 , 2 , 2 , 2 , 2 , 5 , 5 , 25 | 2 ,0xA , 2 , 8 , 5 , 5 ,0xB ,0xA , 26 | 9 , 8 , 8 , 0xA0 , 8 , 8 , 0x17 , 0x1F , 27 | 0x12 , 0x12 , 0x12 , 0x12 , 0x1E , 0x1E , 0x14 , 0x14 , 28 | 0x14 , 0x14 , 0x17 , 0x17 , 0x1A , 0x1A , 0x1D , 0x1D , 29 | 2 , 2 , 2 , 2 , 2 , 2 , 0x1A , 0x1D , 30 | 0x1B , 0x1A , 0x1D , 0x1B , 0x1A , 0x1D , 0x1B , 0x1A , 31 | 0x1D , 0x1B , 0x17 , 0x1D , 0x17 , 0x17 , 0x1D , 0x17 , 32 | 0x17 , 0x1D , 0x17 , 0x17 , 0x1D , 0x17 , 0x17 , 0x17 33 | }; 34 | 35 | 36 | // Number of frames at the end of a phoneme devoted to interpolating to next phoneme's final value 37 | //tab45696 38 | readonly static int[] outBlendLength = new int[] 39 | { 40 | 0 , 2 , 2 , 2 , 2 , 4 , 4 , 4 , 41 | 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 42 | 4 , 4 , 3 , 2 , 4 , 4 , 2 , 2 , 43 | 2 , 2 , 2 , 1 , 1 , 1 , 1 , 1 , 44 | 1 , 1 , 1 , 1 , 1 , 1 , 2 , 2 , 45 | 2 , 1 , 0 , 1 , 0 , 1 , 0 , 5 , 46 | 5 , 5 , 5 , 5 , 4 , 4 , 2 , 0 , 47 | 1 , 2 , 0 , 1 , 2 , 0 , 1 , 2 , 48 | 0 , 1 , 2 , 0 , 2 , 2 , 0 , 1 , 49 | 3 , 0 , 2 , 3 , 0 , 2 , 0xA0 , 0xA0 50 | }; 51 | 52 | 53 | // Number of frames at beginning of a phoneme devoted to interpolating to phoneme's final value 54 | // tab45776 55 | readonly static int[] inBlendLength = new int[] 56 | { 57 | 0 , 2 , 2 , 2 , 2 , 4 , 4 , 4 , 58 | 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 59 | 4 , 4 , 3 , 3 , 4 , 4 , 3 , 3 , 60 | 3 , 3 , 3 , 1 , 2 , 3 , 2 , 1 , 61 | 3 , 3 , 3 , 3 , 1 , 1 , 3 , 3 , 62 | 3 , 2 , 2 , 3 , 2 , 3 , 0 , 0 , 63 | 5 , 5 , 5 , 5 , 4 , 4 , 2 , 0 , 64 | 2 , 2 , 0 , 3 , 2 , 0 , 4 , 2 , 65 | 0 , 3 , 2 , 0 , 2 , 2 , 0 , 2 , 66 | 3 , 0 , 3 , 3 , 0 , 3 , 0xB0 , 0xA0 67 | }; 68 | 69 | 70 | // Looks like it's used as bit flags 71 | // High bits masked by 248 (11111000) 72 | // 73 | // 32: S* 241 11110001 74 | // 33: SH 226 11100010 75 | // 34: F* 211 11010011 76 | // 35: TH 187 10111011 77 | // 36: /H 124 01111100 78 | // 37: /X 149 10010101 79 | // 38: Z* 1 00000001 80 | // 39: ZH 2 00000010 81 | // 40: V* 3 00000011 82 | // 41: DH 3 00000011 83 | // 43: ** 114 01110010 84 | // 45: ** 2 00000010 85 | // 67: ** 27 00011011 86 | // 70: ** 25 00011001 87 | // tab45936 88 | readonly static int[] sampledConsonantFlags = new int[] 89 | { 90 | 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 91 | 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 92 | 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 93 | 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 94 | 0xF1 , 0xE2 , 0xD3 , 0xBB , 0x7C , 0x95 , 1 , 2 , 95 | 3 , 3 , 0 , 0x72 , 0 , 2 , 0 , 0 , 96 | 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 97 | 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 98 | 0 , 0 , 0 , 0x1B , 0 , 0 , 0x19 , 0 , 99 | 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 100 | }; 101 | 102 | 103 | //tab45056 104 | readonly static int[] freq1data = new int[] 105 | { 106 | 0x00 ,0x13 ,0x13 ,0x13 ,0x13 , 0xA , 0xE ,0x12 107 | , 0x18 ,0x1A ,0x16 ,0x14 ,0x10 ,0x14 , 0xE ,0x12 108 | , 0xE ,0x12 ,0x12 ,0x10 , 0xC , 0xE , 0xA ,0x12 109 | , 0xE ,0xA , 8 , 6 , 6 , 6 , 6 ,0x11 110 | , 6 , 6 , 6 , 6 ,0xE , 0x10 , 9 ,0xA 111 | , 8 ,0xA , 6 , 6 , 6 , 5 , 6 , 0 112 | , 0x12 , 0x1A , 0x14 , 0x1A , 0x12 ,0xC , 6 , 6 113 | , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 114 | , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 115 | , 6 ,0xA ,0xA , 6 , 6 , 6 , 0x2C , 0x13 116 | }; 117 | 118 | //tab451356 119 | readonly static int[] freq2data = new int[] 120 | { 121 | 0x00 , 0x43 , 0x43 , 0x43 , 0x43 , 0x54 , 0x48 , 0x42 , 122 | 0x3E , 0x28 , 0x2C , 0x1E , 0x24 , 0x2C , 0x48 , 0x30 , 123 | 0x24 , 0x1E , 0x32 , 0x24 , 0x1C , 0x44 , 0x18 , 0x32 , 124 | 0x1E , 0x18 , 0x52 , 0x2E , 0x36 , 0x56 , 0x36 , 0x43 , 125 | 0x49 , 0x4F , 0x1A , 0x42 , 0x49 , 0x25 , 0x33 , 0x42 , 126 | 0x28 , 0x2F , 0x4F , 0x4F , 0x42 , 0x4F , 0x6E , 0x00 , 127 | 0x48 , 0x26 , 0x1E , 0x2A , 0x1E , 0x22 , 0x1A , 0x1A , 128 | 0x1A , 0x42 , 0x42 , 0x42 , 0x6E , 0x6E , 0x6E , 0x54 , 129 | 0x54 , 0x54 , 0x1A , 0x1A , 0x1A , 0x42 , 0x42 , 0x42 , 130 | 0x6D , 0x56 , 0x6D , 0x54 , 0x54 , 0x54 , 0x7F , 0x7F 131 | }; 132 | 133 | //tab45216 134 | readonly static int[] freq3data = new int[] 135 | { 136 | 0x00 , 0x5B , 0x5B , 0x5B , 0x5B , 0x6E , 0x5D , 0x5B , 137 | 0x58 , 0x59 , 0x57 , 0x58 , 0x52 , 0x59 , 0x5D , 0x3E , 138 | 0x52 , 0x58 , 0x3E , 0x6E , 0x50 , 0x5D , 0x5A , 0x3C , 139 | 0x6E , 0x5A , 0x6E , 0x51 , 0x79 , 0x65 , 0x79 , 0x5B , 140 | 0x63 , 0x6A , 0x51 , 0x79 , 0x5D , 0x52 , 0x5D , 0x67 , 141 | 0x4C , 0x5D , 0x65 , 0x65 , 0x79 , 0x65 , 0x79 , 0x00 , 142 | 0x5A , 0x58 , 0x58 , 0x58 , 0x58 , 0x52 , 0x51 , 0x51 , 143 | 0x51 , 0x79 , 0x79 , 0x79 , 0x70 , 0x6E , 0x6E , 0x5E , 144 | 0x5E , 0x5E , 0x51 , 0x51 , 0x51 , 0x79 , 0x79 , 0x79 , 145 | 0x65 , 0x65 , 0x70 , 0x5E , 0x5E , 0x5E , 0x08 , 0x01 146 | }; 147 | 148 | readonly static int[] ampl1data = new int[] 149 | { 150 | 0 , 0 , 0 , 0 , 0 ,0xD ,0xD ,0xE , 151 | 0xF ,0xF ,0xF ,0xF ,0xF ,0xC ,0xD ,0xC , 152 | 0xF ,0xF ,0xD ,0xD ,0xD ,0xE ,0xD ,0xC , 153 | 0xD ,0xD ,0xD ,0xC , 9 , 9 , 0 , 0 , 154 | 0 , 0 , 0 , 0 , 0 , 0 ,0xB ,0xB , 155 | 0xB ,0xB , 0 , 0 , 1 ,0xB , 0 , 2 , 156 | 0xE ,0xF ,0xF ,0xF ,0xF ,0xD , 2 , 4 , 157 | 0 , 2 , 4 , 0 , 1 , 4 , 0 , 1 , 158 | 4 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 159 | 0 ,0xC , 0 , 0 , 0 , 0 ,0xF ,0xF 160 | }; 161 | 162 | readonly static int[] ampl2data = new int[] 163 | { 164 | 0 , 0 , 0 , 0 , 0 ,0xA ,0xB ,0xD , 165 | 0xE ,0xD ,0xC ,0xC ,0xB , 9 ,0xB ,0xB , 166 | 0xC ,0xC ,0xC , 8 , 8 ,0xC , 8 ,0xA , 167 | 8 , 8 ,0xA , 3 , 9 , 6 , 0 , 0 , 168 | 0 , 0 , 0 , 0 , 0 , 0 , 3 , 5 , 169 | 3 , 4 , 0 , 0 , 0 , 5 ,0xA , 2 , 170 | 0xE ,0xD ,0xC ,0xD ,0xC , 8 , 0 , 1 , 171 | 0 , 0 , 1 , 0 , 0 , 1 , 0 , 0 , 172 | 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 173 | 0 ,0xA , 0 , 0 ,0xA , 0 , 0 , 0 174 | }; 175 | 176 | readonly static int[] ampl3data = new int[] 177 | { 178 | 0 , 0 , 0 , 0 , 0 , 8 , 7 , 8 , 179 | 8 , 1 , 1 , 0 , 1 , 0 , 7 , 5 , 180 | 1 , 0 , 6 , 1 , 0 , 7 , 0 , 5 , 181 | 1 , 0 , 8 , 0 , 0 , 3 , 0 , 0 , 182 | 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 183 | 0 , 0 , 0 , 0 , 0 , 1 ,0xE , 1 , 184 | 9 , 1 , 0 , 1 , 0 , 0 , 0 , 0 , 185 | 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 186 | 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 187 | 0 , 7 , 0 , 0 , 5 , 0 , 0x13 , 0x10 188 | }; 189 | 190 | 191 | 192 | //tab42240 193 | readonly static int[] sinus = new int[] 194 | {0,3,6,9,12,16,19,22,25,28,31,34,37,40,43,46,49,51,54,57,60,63,65,68,71,73,76,78,81,83,85,88,90,92,94,96,98,100,102,104,106,107,109,111,112,113,115,116,117,118,120,121,122,122,123,124,125,125,126,126,126,127,127,127,127,127,127,127,126,126,126,125,125,124,123,122,122,121,120,118,117,116,115,113,112,111,109,107,106,104,102,100,98,96,94,92,90,88,85,83,81,78,76,73,71,68,65,63,60,57,54,51,49,46,43,40,37,34,31,28,25,22,19,16,12,9,6,3,0,-3,-6,-9,-12,-16,-19,-22,-25,-28,-31,-34,-37,-40,-43,-46,-49,-51,-54,-57,-60,-63,-65,-68,-71,-73,-76,-78,-81,-83,-85,-88,-90,-92,-94,-96,-98,-100,-102,-104,-106,-107,-109,-111,-112,-113,-115,-116,-117,-118,-120,-121,-122,-122,-123,-124,-125,-125,-126,-126,-126,-127,-127,-127,-127,-127,-127,-127,-126,-126,-126,-125,-125,-124,-123,-122,-122,-121,-120,-118,-117,-116,-115,-113,-112,-111,-109,-107,-106,-104,-102,-100,-98,-96,-94,-92,-90,-88,-85,-83,-81,-78,-76,-73,-71,-68,-65,-63,-60,-57,-54,-51,-49,-46,-43,-40,-37,-34,-31,-28,-25,-22,-19,-16,-12,-9,-6,-3}; 195 | 196 | //tab42496 197 | readonly static int[] rectangle = new int[] 198 | { 199 | 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 200 | 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 201 | 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 202 | 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 203 | 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 204 | 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 205 | 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 206 | 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 207 | 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 208 | 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 209 | 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 210 | 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 211 | 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 212 | 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 213 | 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 214 | 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 215 | 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 216 | 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 217 | 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 218 | 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 219 | 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 220 | 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 221 | 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 222 | 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 223 | 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 224 | 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 225 | 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 226 | 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 227 | 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 228 | 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 229 | 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 230 | 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 231 | }; 232 | 233 | 234 | //random data ? 235 | readonly static int[] sampleTable = 236 | { 237 | //00 238 | 239 | 0x38 , 0x84 , 0x6B , 0x19 , 0xC6 , 0x63 , 0x18 , 0x86 240 | , 0x73 , 0x98 , 0xC6 , 0xB1 , 0x1C , 0xCA , 0x31 , 0x8C 241 | , 0xC7 , 0x31 , 0x88 , 0xC2 , 0x30 , 0x98 , 0x46 , 0x31 242 | , 0x18 , 0xC6 , 0x35 ,0xC , 0xCA , 0x31 ,0xC , 0xC6 243 | //20 244 | , 0x21 , 0x10 , 0x24 , 0x69 , 0x12 , 0xC2 , 0x31 , 0x14 245 | , 0xC4 , 0x71 , 8 , 0x4A , 0x22 , 0x49 , 0xAB , 0x6A 246 | , 0xA8 , 0xAC , 0x49 , 0x51 , 0x32 , 0xD5 , 0x52 , 0x88 247 | , 0x93 , 0x6C , 0x94 , 0x22 , 0x15 , 0x54 , 0xD2 , 0x25 248 | //40 249 | , 0x96 , 0xD4 , 0x50 , 0xA5 , 0x46 , 0x21 , 8 , 0x85 250 | , 0x6B , 0x18 , 0xC4 , 0x63 , 0x10 , 0xCE , 0x6B , 0x18 251 | , 0x8C , 0x71 , 0x19 , 0x8C , 0x63 , 0x35 ,0xC , 0xC6 252 | , 0x33 , 0x99 , 0xCC , 0x6C , 0xB5 , 0x4E , 0xA2 , 0x99 253 | //60 254 | , 0x46 , 0x21 , 0x28 , 0x82 , 0x95 , 0x2E , 0xE3 , 0x30 255 | , 0x9C , 0xC5 , 0x30 , 0x9C , 0xA2 , 0xB1 , 0x9C , 0x67 256 | , 0x31 , 0x88 , 0x66 , 0x59 , 0x2C , 0x53 , 0x18 , 0x84 257 | , 0x67 , 0x50 , 0xCA , 0xE3 ,0xA , 0xAC , 0xAB , 0x30 258 | //80 259 | , 0xAC , 0x62 , 0x30 , 0x8C , 0x63 , 0x10 , 0x94 , 0x62 260 | , 0xB1 , 0x8C , 0x82 , 0x28 , 0x96 , 0x33 , 0x98 , 0xD6 261 | , 0xB5 , 0x4C , 0x62 , 0x29 , 0xA5 , 0x4A , 0xB5 , 0x9C 262 | , 0xC6 , 0x31 , 0x14 , 0xD6 , 0x38 , 0x9C , 0x4B , 0xB4 263 | //A0 264 | , 0x86 , 0x65 , 0x18 , 0xAE , 0x67 , 0x1C , 0xA6 , 0x63 265 | , 0x19 , 0x96 , 0x23 , 0x19 , 0x84 , 0x13 , 8 , 0xA6 266 | , 0x52 , 0xAC , 0xCA , 0x22 , 0x89 , 0x6E , 0xAB , 0x19 267 | , 0x8C , 0x62 , 0x34 , 0xC4 , 0x62 , 0x19 , 0x86 , 0x63 268 | //C0 269 | , 0x18 , 0xC4 , 0x23 , 0x58 , 0xD6 , 0xA3 , 0x50 , 0x42 270 | , 0x54 , 0x4A , 0xAD , 0x4A , 0x25 , 0x11 , 0x6B , 0x64 271 | , 0x89 , 0x4A , 0x63 , 0x39 , 0x8A , 0x23 , 0x31 , 0x2A 272 | , 0xEA , 0xA2 , 0xA9 , 0x44 , 0xC5 , 0x12 , 0xCD , 0x42 273 | //E0 274 | , 0x34 , 0x8C , 0x62 , 0x18 , 0x8C , 0x63 , 0x11 , 0x48 275 | , 0x66 , 0x31 , 0x9D , 0x44 , 0x33 , 0x1D , 0x46 , 0x31 276 | , 0x9C , 0xC6 , 0xB1 ,0xC , 0xCD , 0x32 , 0x88 , 0xC4 277 | , 0x73 , 0x18 , 0x86 , 0x73 , 8 , 0xD6 , 0x63 , 0x58 278 | //100 279 | , 7 , 0x81 , 0xE0 , 0xF0 , 0x3C , 7 , 0x87 , 0x90 280 | , 0x3C , 0x7C ,0xF , 0xC7 , 0xC0 , 0xC0 , 0xF0 , 0x7C 281 | , 0x1E , 7 , 0x80 , 0x80 , 0 , 0x1C , 0x78 , 0x70 282 | , 0xF1 , 0xC7 , 0x1F , 0xC0 ,0xC , 0xFE , 0x1C , 0x1F 283 | //120 284 | , 0x1F ,0xE ,0xA , 0x7A , 0xC0 , 0x71 , 0xF2 , 0x83 285 | , 0x8F , 3 ,0xF ,0xF ,0xC , 0 , 0x79 , 0xF8 286 | , 0x61 , 0xE0 , 0x43 ,0xF , 0x83 , 0xE7 , 0x18 , 0xF9 287 | , 0xC1 , 0x13 , 0xDA , 0xE9 , 0x63 , 0x8F ,0xF , 0x83 288 | //140 289 | , 0x83 , 0x87 , 0xC3 , 0x1F , 0x3C , 0x70 , 0xF0 , 0xE1 290 | , 0xE1 , 0xE3 , 0x87 , 0xB8 , 0x71 ,0xE , 0x20 , 0xE3 291 | , 0x8D , 0x48 , 0x78 , 0x1C , 0x93 , 0x87 , 0x30 , 0xE1 292 | , 0xC1 , 0xC1 , 0xE4 , 0x78 , 0x21 , 0x83 , 0x83 , 0xC3 293 | //160 294 | , 0x87 , 6 , 0x39 , 0xE5 , 0xC3 , 0x87 , 7 ,0xE 295 | , 0x1C , 0x1C , 0x70 , 0xF4 , 0x71 , 0x9C , 0x60 , 0x36 296 | , 0x32 , 0xC3 , 0x1E , 0x3C , 0xF3 , 0x8F ,0xE , 0x3C 297 | , 0x70 , 0xE3 , 0xC7 , 0x8F ,0xF ,0xF ,0xE , 0x3C 298 | //180 299 | , 0x78 , 0xF0 , 0xE3 , 0x87 , 6 , 0xF0 , 0xE3 , 7 300 | , 0xC1 , 0x99 , 0x87 ,0xF , 0x18 , 0x78 , 0x70 , 0x70 301 | , 0xFC , 0xF3 , 0x10 , 0xB1 , 0x8C , 0x8C , 0x31 , 0x7C 302 | , 0x70 , 0xE1 , 0x86 , 0x3C , 0x64 , 0x6C , 0xB0 , 0xE1 303 | //1A0 304 | , 0xE3 ,0xF , 0x23 , 0x8F ,0xF , 0x1E , 0x3E , 0x38 305 | , 0x3C , 0x38 , 0x7B , 0x8F , 7 ,0xE , 0x3C , 0xF4 306 | , 0x17 , 0x1E , 0x3C , 0x78 , 0xF2 , 0x9E , 0x72 , 0x49 307 | , 0xE3 , 0x25 , 0x36 , 0x38 , 0x58 , 0x39 , 0xE2 , 0xDE 308 | //1C0 309 | , 0x3C , 0x78 , 0x78 , 0xE1 , 0xC7 , 0x61 , 0xE1 , 0xE1 310 | , 0xB0 , 0xF0 , 0xF0 , 0xC3 , 0xC7 ,0xE , 0x38 , 0xC0 311 | , 0xF0 , 0xCE , 0x73 , 0x73 , 0x18 , 0x34 , 0xB0 , 0xE1 312 | , 0xC7 , 0x8E , 0x1C , 0x3C , 0xF8 , 0x38 , 0xF0 , 0xE1 313 | //1E0 314 | , 0xC1 , 0x8B , 0x86 , 0x8F , 0x1C , 0x78 , 0x70 , 0xF0 315 | , 0x78 , 0xAC , 0xB1 , 0x8F , 0x39 , 0x31 , 0xDB , 0x38 316 | , 0x61 , 0xC3 ,0xE ,0xE , 0x38 , 0x78 , 0x73 , 0x17 317 | , 0x1E , 0x39 , 0x1E , 0x38 , 0x64 , 0xE1 , 0xF1 , 0xC1 318 | //200 319 | , 0x4E ,0xF , 0x40 , 0xA2 , 2 , 0xC5 , 0x8F , 0x81 320 | , 0xA1 , 0xFC , 0x12 , 8 , 0x64 , 0xE0 , 0x3C , 0x22 321 | , 0xE0 , 0x45 , 7 , 0x8E ,0xC , 0x32 , 0x90 , 0xF0 322 | , 0x1F , 0x20 , 0x49 , 0xE0 , 0xF8 ,0xC , 0x60 , 0xF0 323 | //220 324 | , 0x17 , 0x1A , 0x41 , 0xAA , 0xA4 , 0xD0 , 0x8D , 0x12 325 | , 0x82 , 0x1E , 0x1E , 3 , 0xF8 , 0x3E , 3 ,0xC 326 | , 0x73 , 0x80 , 0x70 , 0x44 , 0x26 , 3 , 0x24 , 0xE1 327 | , 0x3E , 4 , 0x4E , 4 , 0x1C , 0xC1 , 9 , 0xCC 328 | //240 329 | , 0x9E , 0x90 , 0x21 , 7 , 0x90 , 0x43 , 0x64 , 0xC0 330 | , 0xF , 0xC6 , 0x90 , 0x9C , 0xC1 , 0x5B , 3 , 0xE2 331 | , 0x1D , 0x81 , 0xE0 , 0x5E , 0x1D , 3 , 0x84 , 0xB8 332 | , 0x2C ,0xF , 0x80 , 0xB1 , 0x83 , 0xE0 , 0x30 , 0x41 333 | //260 334 | , 0x1E , 0x43 , 0x89 , 0x83 , 0x50 , 0xFC , 0x24 , 0x2E 335 | , 0x13 , 0x83 , 0xF1 , 0x7C , 0x4C , 0x2C , 0xC9 ,0xD 336 | , 0x83 , 0xB0 , 0xB5 , 0x82 , 0xE4 , 0xE8 , 6 , 0x9C 337 | , 7 , 0xA0 , 0x99 , 0x1D , 7 , 0x3E , 0x82 , 0x8F 338 | //280 339 | , 0x70 , 0x30 , 0x74 , 0x40 , 0xCA , 0x10 , 0xE4 , 0xE8 340 | , 0xF , 0x92 , 0x14 , 0x3F , 6 , 0xF8 , 0x84 , 0x88 341 | , 0x43 , 0x81 ,0xA , 0x34 , 0x39 , 0x41 , 0xC6 , 0xE3 342 | , 0x1C , 0x47 , 3 , 0xB0 , 0xB8 , 0x13 ,0xA , 0xC2 343 | //2A0 344 | , 0x64 , 0xF8 , 0x18 , 0xF9 , 0x60 , 0xB3 , 0xC0 , 0x65 345 | , 0x20 , 0x60 , 0xA6 , 0x8C , 0xC3 , 0x81 , 0x20 , 0x30 346 | , 0x26 , 0x1E , 0x1C , 0x38 , 0xD3 , 1 , 0xB0 , 0x26 347 | , 0x40 , 0xF4 ,0xB , 0xC3 , 0x42 , 0x1F , 0x85 , 0x32 348 | //2C0 349 | , 0x26 , 0x60 , 0x40 , 0xC9 , 0xCB , 1 , 0xEC , 0x11 350 | , 0x28 , 0x40 , 0xFA , 4 , 0x34 , 0xE0 , 0x70 , 0x4C 351 | , 0x8C , 0x1D , 7 , 0x69 , 3 , 0x16 , 0xC8 , 4 352 | , 0x23 , 0xE8 , 0xC6 , 0x9A ,0xB , 0x1A , 3 , 0xE0 353 | //2E0 354 | , 0x76 , 6 , 5 , 0xCF , 0x1E , 0xBC , 0x58 , 0x31 355 | , 0x71 , 0x66 , 0 , 0xF8 , 0x3F , 4 , 0xFC ,0xC 356 | , 0x74 , 0x27 , 0x8A , 0x80 , 0x71 , 0xC2 , 0x3A , 0x26 357 | , 6 , 0xC0 , 0x1F , 5 ,0xF , 0x98 , 0x40 , 0xAE 358 | //300 359 | , 1 , 0x7F , 0xC0 , 7 , 0xFF , 0 ,0xE , 0xFE 360 | , 0 , 3 , 0xDF , 0x80 , 3 , 0xEF , 0x80 , 0x1B 361 | , 0xF1 , 0xC2 , 0 , 0xE7 , 0xE0 , 0x18 , 0xFC , 0xE0 362 | , 0x21 , 0xFC , 0x80 , 0x3C , 0xFC , 0x40 ,0xE , 0x7E 363 | //320 364 | , 0 , 0x3F , 0x3E , 0 ,0xF , 0xFE , 0 , 0x1F 365 | , 0xFF , 0 , 0x3E , 0xF0 , 7 , 0xFC , 0 , 0x7E 366 | , 0x10 , 0x3F , 0xFF , 0 , 0x3F , 0x38 ,0xE , 0x7C 367 | , 1 , 0x87 ,0xC , 0xFC , 0xC7 , 0 , 0x3E , 4 368 | //340 369 | , 0xF , 0x3E , 0x1F ,0xF ,0xF , 0x1F ,0xF , 2 370 | , 0x83 , 0x87 , 0xCF , 3 , 0x87 ,0xF , 0x3F , 0xC0 371 | , 7 , 0x9E , 0x60 , 0x3F , 0xC0 , 3 , 0xFE , 0 372 | , 0x3F , 0xE0 , 0x77 , 0xE1 , 0xC0 , 0xFE , 0xE0 , 0xC3 373 | //360 374 | , 0xE0 , 1 , 0xDF , 0xF8 , 3 , 7 , 0 , 0x7E 375 | , 0x70 , 0 , 0x7C , 0x38 , 0x18 , 0xFE ,0xC , 0x1E 376 | , 0x78 , 0x1C , 0x7C , 0x3E ,0xE , 0x1F , 0x1E , 0x1E 377 | , 0x3E , 0 , 0x7F , 0x83 , 7 , 0xDB , 0x87 , 0x83 378 | //380 379 | , 7 , 0xC7 , 7 , 0x10 , 0x71 , 0xFF , 0 , 0x3F 380 | , 0xE2 , 1 , 0xE0 , 0xC1 , 0xC3 , 0xE1 , 0 , 0x7F 381 | , 0xC0 , 5 , 0xF0 , 0x20 , 0xF8 , 0xF0 , 0x70 , 0xFE 382 | , 0x78 , 0x79 , 0xF8 , 2 , 0x3F ,0xC , 0x8F , 3 383 | //3a0 384 | , 0xF , 0x9F , 0xE0 , 0xC1 , 0xC7 , 0x87 , 3 , 0xC3 385 | , 0xC3 , 0xB0 , 0xE1 , 0xE1 , 0xC1 , 0xE3 , 0xE0 , 0x71 386 | , 0xF0 , 0 , 0xFC , 0x70 , 0x7C ,0xC , 0x3E , 0x38 387 | , 0xE , 0x1C , 0x70 , 0xC3 , 0xC7 , 3 , 0x81 , 0xC1 388 | //3c0 389 | , 0xC7 , 0xE7 , 0 ,0xF , 0xC7 , 0x87 , 0x19 , 9 390 | , 0xEF , 0xC4 , 0x33 , 0xE0 , 0xC1 , 0xFC , 0xF8 , 0x70 391 | , 0xF0 , 0x78 , 0xF8 , 0xF0 , 0x61 , 0xC7 , 0 , 0x1F 392 | , 0xF8 , 1 , 0x7C , 0xF8 , 0xF0 , 0x78 , 0x70 , 0x3C 393 | //3e0 394 | , 0x7C , 0xCE ,0xE , 0x21 , 0x83 , 0xCF , 8 , 7 395 | , 0x8F , 8 , 0xC1 , 0x87 , 0x8F , 0x80 , 0xC7 , 0xE3 396 | , 0 , 7 , 0xF8 , 0xE0 , 0xEF , 0 , 0x39 , 0xF7 397 | , 0x80 ,0xE , 0xF8 , 0xE1 , 0xE3 , 0xF8 , 0x21 , 0x9F 398 | //400 399 | , 0xC0 , 0xFF , 3 , 0xF8 , 7 , 0xC0 , 0x1F , 0xF8 400 | , 0xC4 , 4 , 0xFC , 0xC4 , 0xC1 , 0xBC , 0x87 , 0xF0 401 | , 0xF , 0xC0 , 0x7F , 5 , 0xE0 , 0x25 , 0xEC , 0xC0 402 | , 0x3E , 0x84 , 0x47 , 0xF0 , 0x8E , 3 , 0xF8 , 3 403 | //420 404 | , 0xFB , 0xC0 , 0x19 , 0xF8 , 7 , 0x9C ,0xC , 0x17 405 | , 0xF8 , 7 , 0xE0 , 0x1F , 0xA1 , 0xFC ,0xF , 0xFC 406 | , 1 , 0xF0 , 0x3F , 0 , 0xFE , 3 , 0xF0 , 0x1F 407 | , 0 , 0xFD , 0 , 0xFF , 0x88 ,0xD , 0xF9 , 1 408 | //440 409 | , 0xFF , 0 , 0x70 , 7 , 0xC0 , 0x3E , 0x42 , 0xF3 410 | , 0xD , 0xC4 , 0x7F , 0x80 , 0xFC , 7 , 0xF0 , 0x5E 411 | , 0xC0 , 0x3F , 0 , 0x78 , 0x3F , 0x81 , 0xFF , 1 412 | , 0xF8 , 1 , 0xC3 , 0xE8 ,0xC , 0xE4 , 0x64 , 0x8F 413 | ////460 414 | , 0xE4 ,0xF , 0xF0 , 7 , 0xF0 , 0xC2 , 0x1F , 0 415 | , 0x7F , 0xC0 , 0x6F , 0x80 , 0x7E , 3 , 0xF8 , 7 416 | , 0xF0 , 0x3F , 0xC0 , 0x78 ,0xF , 0x82 , 7 , 0xFE 417 | , 0x22 , 0x77 , 0x70 , 2 , 0x76 , 3 , 0xFE , 0 418 | //480 419 | , 0xFE , 0x67 , 0 , 0x7C , 0xC7 , 0xF1 , 0x8E , 0xC6 420 | , 0x3B , 0xE0 , 0x3F , 0x84 , 0xF3 , 0x19 , 0xD8 , 3 421 | , 0x99 , 0xFC , 9 , 0xB8 ,0xF , 0xF8 , 0 , 0x9D 422 | , 0x24 , 0x61 , 0xF9 ,0xD , 0 , 0xFD , 3 , 0xF0 423 | //4a0 424 | , 0x1F , 0x90 , 0x3F , 1 , 0xF8 , 0x1F , 0xD0 ,0xF 425 | , 0xF8 , 0x37 , 1 , 0xF8 , 7 , 0xF0 ,0xF , 0xC0 426 | , 0x3F , 0 , 0xFE , 3 , 0xF8 ,0xF , 0xC0 , 0x3F 427 | , 0 , 0xFA , 3 , 0xF0 ,0xF , 0x80 , 0xFF , 1 428 | //4c0 429 | , 0xB8 , 7 , 0xF0 , 1 , 0xFC , 1 , 0xBC , 0x80 430 | , 0x13 , 0x1E , 0 , 0x7F , 0xE1 , 0x40 , 0x7F , 0xA0 431 | , 0x7F , 0xB0 , 0 , 0x3F , 0xC0 , 0x1F , 0xC0 , 0x38 432 | , 0xF , 0xF0 , 0x1F , 0x80 , 0xFF , 1 , 0xFC , 3 433 | //4e0 434 | , 0xF1 , 0x7E , 1 , 0xFE , 1 , 0xF0 , 0xFF , 0 435 | , 0x7F , 0xC0 , 0x1D , 7 , 0xF0 ,0xF , 0xC0 , 0x7E 436 | , 6 , 0xE0 , 7 , 0xE0 ,0xF , 0xF8 , 6 , 0xC1 437 | , 0xFE , 1 , 0xFC , 3 , 0xE0 ,0xF , 0 , 0xFC 438 | }; 439 | } 440 | -------------------------------------------------------------------------------- /UnitySAM/Assets/SAMCSourceCode/src/RenderTabs_h.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1a6a228904f784a36b2925eacd77ec3a 3 | timeCreated: 1556138293 4 | licenseType: Pro 5 | PluginImporter: 6 | serializedVersion: 2 7 | iconMap: {} 8 | executionOrder: {} 9 | isPreloaded: 0 10 | isOverridable: 0 11 | platformData: 12 | data: 13 | first: 14 | Any: 15 | second: 16 | enabled: 1 17 | settings: {} 18 | data: 19 | first: 20 | Editor: Editor 21 | second: 22 | enabled: 0 23 | settings: 24 | DefaultValueInitialized: true 25 | userData: 26 | assetBundleName: 27 | assetBundleVariant: 28 | -------------------------------------------------------------------------------- /UnitySAM/Assets/SAMCSourceCode/src/SamDebug.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | public static partial class UnitySAM 4 | { 5 | static void printf(string s) 6 | { 7 | Debug.Log("Print:'" + s + "'"); 8 | } 9 | 10 | static void printf( int i) 11 | { 12 | int[] ia = new int[1] { i}; 13 | printf(ia); 14 | } 15 | 16 | static void printf(int[] ia) 17 | { 18 | byte[] bytes = new byte[ia.Length]; 19 | for (int i = 0; i < ia.Length; i++) 20 | { 21 | if (ia[i] == 0) 22 | { 23 | var copy = new byte[i]; 24 | System.Array.Copy( bytes, copy, i); 25 | bytes = copy; 26 | break; 27 | } 28 | bytes[i] = (byte)ia[i]; 29 | } 30 | 31 | string s = System.Text.Encoding.UTF8.GetString(bytes); 32 | 33 | printf( s); 34 | } 35 | 36 | static void PrintRule(int offset) 37 | { 38 | int i = 1; 39 | int A = 0; 40 | string s = "Applying rule: "; 41 | do 42 | { 43 | A = GetRuleByte(offset, i); 44 | if ((A&127) == '=') 45 | { 46 | s = s + " -> "; 47 | } 48 | else 49 | { 50 | s = s + System.String.Format( "{0}", (char) (A & 127)); 51 | } 52 | i++; 53 | } while ((A&128)==0); 54 | printf(s); 55 | } 56 | 57 | static void PrintPhonemes( int[] phonemeindex, int[] phonemeLength, int[] stress) 58 | { 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /UnitySAM/Assets/SAMCSourceCode/src/SamDebug.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 99285479ce10748cb9cb35d9a505f306 3 | timeCreated: 1556204485 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /UnitySAM/Assets/SAMCSourceCode/src/SamTabs_h.cs: -------------------------------------------------------------------------------- 1 | 2 | public static partial class UnitySAM 3 | { 4 | 5 | //tab40672 6 | readonly static int[] stressInputTable = new int[] 7 | { 8 | '*', '1', '2', '3', '4', '5', '6', '7', '8' 9 | }; 10 | 11 | //tab40682 12 | readonly static int[] signInputTable1 = new int[] 13 | { 14 | ' ', '.', '?', ',', '-', 'I', 'I', 'E', 15 | 'A', 'A', 'A', 'A', 'U', 'A', 'I', 'E', 16 | 'U', 'O', 'R', 'L', 'W', 'Y', 'W', 'R', 17 | 'L', 'W', 'Y', 'M', 'N', 'N', 'D', 'Q', 18 | 'S', 'S', 'F', 'T', '/', '/', 'Z', 'Z', 19 | 'V', 'D', 'C', '*', 'J', '*', '*', '*', 20 | 'E', 'A', 'O', 'A', 'O', 'U', 'B', '*', 21 | '*', 'D', '*', '*', 'G', '*', '*', 'G', 22 | '*', '*', 'P', '*', '*', 'T', '*', '*', 23 | 'K', '*', '*', 'K', '*', '*', 'U', 'U', 24 | 'U' 25 | }; 26 | 27 | //tab40763 28 | readonly static int[] signInputTable2 = new int[] 29 | { 30 | '*', '*', '*', '*', '*', 'Y', 'H', 'H', 31 | 'E', 'A', 'H', 'O', 'H', 'X', 'X', 'R', 32 | 'X', 'H', 'X', 'X', 'X', 'X', 'H', '*', 33 | '*', '*', '*', '*', '*', 'X', 'X', '*', 34 | '*', 'H', '*', 'H', 'H', 'X', '*', 'H', 35 | '*', 'H', 'H', '*', '*', '*', '*', '*', 36 | 'Y', 'Y', 'Y', 'W', 'W', 'W', '*', '*', 37 | '*', '*', '*', '*', '*', '*', '*', 'X', 38 | '*', '*', '*', '*', '*', '*', '*', '*', 39 | '*', '*', '*', 'X', '*', '*', 'L', 'M', 40 | 'N' 41 | }; 42 | 43 | //loc_9F8C 44 | readonly static int[] flags = new int[] 45 | { 46 | 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0xA4 , 0xA4 , 0xA4 , 47 | 0xA4 , 0xA4 , 0xA4 , 0x84 , 0x84 , 0xA4 , 0xA4 , 0x84 , 48 | 0x84 , 0x84 , 0x84 , 0x84 , 0x84 , 0x84 , 0x44 , 0x44 , 49 | 0x44 , 0x44 , 0x44 , 0x4C , 0x4C , 0x4C , 0x48 , 0x4C , 50 | 0x40 , 0x40 , 0x40 , 0x40 , 0x40 , 0x40 , 0x44 , 0x44 , 51 | 0x44 , 0x44 , 0x48 , 0x40 , 0x4C , 0x44 , 0x00 , 0x00 , 52 | 0xB4 , 0xB4 , 0xB4 , 0x94 , 0x94 , 0x94 , 0x4E , 0x4E , 53 | 0x4E , 0x4E , 0x4E , 0x4E , 0x4E , 0x4E , 0x4E , 0x4E , 54 | 0x4E , 0x4E , 0x4B , 0x4B , 0x4B , 0x4B , 0x4B , 0x4B , 55 | 0x4B , 0x4B , 0x4B , 0x4B , 0x4B , 0x4B , 0x80 , 0xC1 , 56 | 0xC1 57 | }; 58 | 59 | //??? flags overlap flags2 60 | //loc_9FDA 61 | readonly static int[] flags2 = new int[] 62 | { 63 | 0x80 , 0xC1 , 0xC1 , 0xC1 , 0xC1 , 0x00 , 0x00 , 0x00 , 64 | 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 65 | 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x10 , 66 | 0x10 , 0x10 , 0x10 , 0x08 , 0x0C , 0x08 , 0x04 , 0x40 , 67 | 0x24 , 0x20 , 0x20 , 0x24 , 0x00 , 0x00 , 0x24 , 0x20 , 68 | 0x20 , 0x24 , 0x20 , 0x20 , 0x00 , 0x20 , 0x00 , 0x00 , 69 | 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 70 | 0x00 , 0x04 , 0x04 , 0x04 , 0x00 , 0x00 , 0x00 , 0x00 , 71 | 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x04 , 0x04 , 0x04 , 72 | 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 73 | }; 74 | 75 | 76 | 77 | //tab45616??? 78 | readonly static int[] phonemeStressedLengthTable = new int[] 79 | { 80 | 0x00 , 0x12 , 0x12 , 0x12 , 8 ,0xB , 9 ,0xB , 81 | 0xE ,0xF ,0xB , 0x10 ,0xC , 6 , 6 ,0xE , 82 | 0xC ,0xE ,0xC ,0xB , 8 , 8 ,0xB ,0xA , 83 | 9 , 8 , 8 , 8 , 8 , 8 , 3 , 5 , 84 | 2 , 2 , 2 , 2 , 2 , 2 , 6 , 6 , 85 | 8 , 6 , 6 , 2 , 9 , 4 , 2 , 1 , 86 | 0xE ,0xF ,0xF ,0xF ,0xE ,0xE , 8 , 2 , 87 | 2 , 7 , 2 , 1 , 7 , 2 , 2 , 7 , 88 | 2 , 2 , 8 , 2 , 2 , 6 , 2 , 2 , 89 | 7 , 2 , 4 , 7 , 1 , 4 , 5 , 5 90 | }; 91 | 92 | //tab45536??? 93 | readonly static int[] phonemeLengthTable = new int[] 94 | { 95 | 0 , 0x12 , 0x12 , 0x12 , 8 , 8 , 8 , 8 , 96 | 8 ,0xB , 6 ,0xC ,0xA , 5 , 5 ,0xB , 97 | 0xA ,0xA ,0xA , 9 , 8 , 7 , 9 , 7 , 98 | 6 , 8 , 6 , 7 , 7 , 7 , 2 , 5 , 99 | 2 , 2 , 2 , 2 , 2 , 2 , 6 , 6 , 100 | 7 , 6 , 6 , 2 , 8 , 3 , 1 , 0x1E , 101 | 0xD ,0xC ,0xC ,0xC ,0xE , 9 , 6 , 1 , 102 | 2 , 5 , 1 , 1 , 6 , 1 , 2 , 6 , 103 | 1 , 2 , 8 , 2 , 2 , 4 , 2 , 2 , 104 | 6 , 1 , 4 , 6 , 1 , 4 , 0xC7 , 0xFF 105 | }; 106 | 107 | 108 | 109 | /* 110 | 111 | Ind | phoneme | flags | 112 | -----|---------|----------| 113 | 0 | * | 00000000 | 114 | 1 | .* | 00000000 | 115 | 2 | ?* | 00000000 | 116 | 3 | ,* | 00000000 | 117 | 4 | -* | 00000000 | 118 | 119 | VOWELS 120 | 5 | IY | 10100100 | 121 | 6 | IH | 10100100 | 122 | 7 | EH | 10100100 | 123 | 8 | AE | 10100100 | 124 | 9 | AA | 10100100 | 125 | 10 | AH | 10100100 | 126 | 11 | AO | 10000100 | 127 | 17 | OH | 10000100 | 128 | 12 | UH | 10000100 | 129 | 16 | UX | 10000100 | 130 | 15 | ER | 10000100 | 131 | 13 | AX | 10100100 | 132 | 14 | IX | 10100100 | 133 | 134 | DIPHTONGS 135 | 48 | EY | 10110100 | 136 | 49 | AY | 10110100 | 137 | 50 | OY | 10110100 | 138 | 51 | AW | 10010100 | 139 | 52 | OW | 10010100 | 140 | 53 | UW | 10010100 | 141 | 142 | 143 | 21 | YX | 10000100 | 144 | 20 | WX | 10000100 | 145 | 18 | RX | 10000100 | 146 | 19 | LX | 10000100 | 147 | 37 | /X | 01000000 | 148 | 30 | DX | 01001000 | 149 | 150 | 151 | 22 | WH | 01000100 | 152 | 153 | 154 | VOICED CONSONANTS 155 | 23 | R* | 01000100 | 156 | 24 | L* | 01000100 | 157 | 25 | W* | 01000100 | 158 | 26 | Y* | 01000100 | 159 | 27 | M* | 01001100 | 160 | 28 | N* | 01001100 | 161 | 29 | NX | 01001100 | 162 | 54 | B* | 01001110 | 163 | 57 | D* | 01001110 | 164 | 60 | G* | 01001110 | 165 | 44 | J* | 01001100 | 166 | 38 | Z* | 01000100 | 167 | 39 | ZH | 01000100 | 168 | 40 | V* | 01000100 | 169 | 41 | DH | 01000100 | 170 | 171 | unvoiced CONSONANTS 172 | 32 | S* | 01000000 | 173 | 33 | SH | 01000000 | 174 | 34 | F* | 01000000 | 175 | 35 | TH | 01000000 | 176 | 66 | P* | 01001011 | 177 | 69 | T* | 01001011 | 178 | 72 | K* | 01001011 | 179 | 42 | CH | 01001000 | 180 | 36 | /H | 01000000 | 181 | 182 | 43 | ** | 01000000 | 183 | 45 | ** | 01000100 | 184 | 46 | ** | 00000000 | 185 | 47 | ** | 00000000 | 186 | 187 | 188 | 55 | ** | 01001110 | 189 | 56 | ** | 01001110 | 190 | 58 | ** | 01001110 | 191 | 59 | ** | 01001110 | 192 | 61 | ** | 01001110 | 193 | 62 | ** | 01001110 | 194 | 63 | GX | 01001110 | 195 | 64 | ** | 01001110 | 196 | 65 | ** | 01001110 | 197 | 67 | ** | 01001011 | 198 | 68 | ** | 01001011 | 199 | 70 | ** | 01001011 | 200 | 71 | ** | 01001011 | 201 | 73 | ** | 01001011 | 202 | 74 | ** | 01001011 | 203 | 75 | KX | 01001011 | 204 | 76 | ** | 01001011 | 205 | 77 | ** | 01001011 | 206 | 207 | 208 | SPECIAL 209 | 78 | UL | 10000000 | 210 | 79 | UM | 11000001 | 211 | 80 | UN | 11000001 | 212 | 31 | Q* | 01001100 | 213 | 214 | */ 215 | } 216 | -------------------------------------------------------------------------------- /UnitySAM/Assets/SAMCSourceCode/src/SamTabs_h.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9c832fb70c3f14d2d9573fba6ed967c2 3 | timeCreated: 1556138293 4 | licenseType: Pro 5 | PluginImporter: 6 | serializedVersion: 2 7 | iconMap: {} 8 | executionOrder: {} 9 | isPreloaded: 0 10 | isOverridable: 0 11 | platformData: 12 | data: 13 | first: 14 | Any: 15 | second: 16 | enabled: 1 17 | settings: {} 18 | data: 19 | first: 20 | Editor: Editor 21 | second: 22 | enabled: 0 23 | settings: 24 | DefaultValueInitialized: true 25 | userData: 26 | assetBundleName: 27 | assetBundleVariant: 28 | -------------------------------------------------------------------------------- /UnitySAM/Assets/SAMCSourceCode/src/readme.txt: -------------------------------------------------------------------------------- 1 | 2 | This will be the original SAM C code as I port it to C#. 3 | -------------------------------------------------------------------------------- /UnitySAM/Assets/SAMCSourceCode/src/readme.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 19896655498b844c786ce2475410908a 3 | timeCreated: 1556138011 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /UnitySAM/Assets/SAMCSourceCode/src/reciter_c.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | public static partial class UnitySAM 4 | { 5 | static int A, X, Y; 6 | 7 | static int[] inputtemp; // secure copy of input tab36096 8 | 9 | static void Code37055(int mem59) 10 | { 11 | X = mem59; 12 | X--; 13 | A = inputtemp[X]; 14 | Y = A; 15 | A = tab36376[Y]; 16 | return; 17 | } 18 | 19 | static void Code37066(int mem58) 20 | { 21 | X = mem58; 22 | INC8( ref X); 23 | A = inputtemp[X]; 24 | Y = A; 25 | A = tab36376[Y]; 26 | } 27 | 28 | static int GetRuleByte(int mem62, int Y) 29 | { 30 | int address = mem62; 31 | 32 | if (mem62 >= 37541) 33 | { 34 | address -= 37541; 35 | return rules2[address + Y]; 36 | } 37 | address -= 32000; 38 | return rules[address + Y]; 39 | } 40 | 41 | static void INC8( ref int xxx) 42 | { 43 | xxx++; 44 | xxx &= 255; 45 | } 46 | 47 | static void DEC8( ref int xxx) 48 | { 49 | xxx--; 50 | xxx &= 255; 51 | } 52 | 53 | static bool TextToPhonemes( ref int[] input) // Code36484 54 | { 55 | //unsigned char *tab39445 = &mem[39445]; //input and output 56 | //unsigned char mem29; 57 | int mem56 = 0; //output position for phonemes 58 | int mem57 = 0; 59 | int mem58 = 0; 60 | int mem59 = 0; 61 | int mem60 = 0; 62 | int mem61 = 0; 63 | 64 | int mem62 = 0; // memory position of current rule 65 | 66 | int mem64 = 0; // position of '=' or current character 67 | int mem65 = 0; // position of ')' 68 | int mem66 = 0; // position of '(' 69 | int mem36653 = 0; 70 | 71 | inputtemp = new int[256]; 72 | 73 | inputtemp[0] = 32; 74 | 75 | // secure copy of input 76 | // because input will be overwritten by phonemes 77 | X = 1; 78 | Y = 0; 79 | do 80 | { 81 | //pos36499: 82 | A = input[Y] & 127; 83 | if (A >= 112) A = A & 95; 84 | else if (A >= 96) A = A & 79; 85 | 86 | inputtemp[X] = A; 87 | INC8(ref X); 88 | INC8(ref Y); 89 | } while (Y != 255); 90 | 91 | printf( inputtemp); 92 | 93 | X = 255; 94 | inputtemp[X] = 27; 95 | mem61 = 255; 96 | 97 | 98 | pos36550: 99 | A = 255; 100 | mem56 = 255; 101 | 102 | 103 | pos36554: 104 | while (true) 105 | { 106 | INC8( ref mem61); 107 | X = mem61; 108 | 109 | if (X >= inputtemp.Length) break; 110 | 111 | A = inputtemp[X]; 112 | mem64 = A; 113 | if (A == '[') 114 | { 115 | INC8(ref mem56); 116 | X = mem56; 117 | 118 | A = 155; 119 | input[X] = 155; 120 | INC8( ref X); 121 | 122 | //goto pos36542; 123 | // Code39771(); //Code39777(); 124 | 125 | 126 | var copy = new int[X]; 127 | System.Array.Copy( input, copy, X); 128 | input = copy; 129 | 130 | return true; 131 | } 132 | 133 | //pos36579: 134 | if (A != '.') break; 135 | INC8(ref X); 136 | Y = inputtemp[X]; 137 | A = tab36376[Y] & 1; 138 | if (A != 0) break; 139 | INC8(ref mem56); 140 | X = mem56; 141 | A = '.'; 142 | input[X] = '.'; 143 | } //while 144 | 145 | 146 | //pos36607: 147 | A = mem64; 148 | Y = A; 149 | A = tab36376[A]; 150 | mem57 = A; 151 | if ((A & 2) != 0) 152 | { 153 | mem62 = 37541; 154 | goto pos36700; 155 | } 156 | 157 | //pos36630: 158 | A = mem57; 159 | if (A != 0) goto pos36677; 160 | A = 32; 161 | 162 | if (X >= inputtemp.Length) return true; 163 | 164 | inputtemp[X] = ' '; 165 | INC8(ref mem56); 166 | X = mem56; 167 | if (X > 120) goto pos36654; 168 | input[X] = A; 169 | goto pos36554; 170 | 171 | // ----- 172 | 173 | //36653 is unknown. Contains position 174 | 175 | pos36654: 176 | input[X] = 155; 177 | A = mem61; 178 | mem36653 = A; 179 | // mem29 = A; // not used 180 | // Code36538(); das ist eigentlich 181 | return true; 182 | //Code39771(); 183 | //go on if there is more input ??? 184 | 185 | mem61 = mem36653; 186 | goto pos36550; 187 | 188 | pos36677: 189 | A = mem57 & 128; 190 | if (A == 0) 191 | { 192 | //36683: BRK 193 | return false; 194 | } 195 | 196 | // go to the right rules for this character. 197 | X = mem64 - 'A'; 198 | mem62 = tab37489[X] | (tab37515[X] << 8); 199 | 200 | // ------------------------------------- 201 | // go to next rule 202 | // ------------------------------------- 203 | 204 | pos36700: 205 | 206 | // find next rule 207 | Y = 0; 208 | do 209 | { 210 | mem62++; 211 | A = GetRuleByte(mem62, Y); 212 | } while ((A & 128) == 0); 213 | INC8( ref Y); 214 | 215 | //pos36720: 216 | // find '(' 217 | while (true) 218 | { 219 | A = GetRuleByte(mem62, Y); 220 | if (A == '(') break; 221 | INC8( ref Y); 222 | } 223 | mem66 = Y; 224 | 225 | //pos36732: 226 | // find ')' 227 | do 228 | { 229 | INC8( ref Y); 230 | A = GetRuleByte(mem62, Y); 231 | } while (A != ')'); 232 | mem65 = Y; 233 | 234 | //pos36741: 235 | // find '=' 236 | do 237 | { 238 | INC8( ref Y); 239 | A = GetRuleByte(mem62, Y); 240 | A = A & 127; 241 | } while (A != '='); 242 | mem64 = Y; 243 | 244 | X = mem61; 245 | mem60 = X; 246 | 247 | // compare the string within the bracket 248 | Y = mem66; 249 | INC8( ref Y); 250 | //pos36759: 251 | while (true) 252 | { 253 | mem57 = inputtemp[X]; 254 | A = GetRuleByte(mem62, Y); 255 | if (A != mem57) goto pos36700; 256 | INC8( ref Y); 257 | if (Y == mem65) break; 258 | INC8( ref X); 259 | mem60 = X; 260 | } 261 | 262 | // the string in the bracket is correct 263 | 264 | //pos36787: 265 | A = mem61; 266 | mem59 = mem61; 267 | 268 | pos36791: 269 | while (true) 270 | { 271 | DEC8( ref mem66); 272 | Y = mem66; 273 | A = GetRuleByte(mem62, Y); 274 | mem57 = A; 275 | //36800: BPL 36805 276 | if ((A & 128) != 0) goto pos37180; 277 | X = A & 127; 278 | A = tab36376[X] & 128; 279 | if (A == 0) break; 280 | X = mem59 - 1; 281 | A = inputtemp[X]; 282 | if (A != mem57) goto pos36700; 283 | mem59 = X; 284 | } 285 | 286 | //pos36833: 287 | A = mem57; 288 | if (A == ' ') goto pos36895; 289 | if (A == '#') goto pos36910; 290 | if (A == '.') goto pos36920; 291 | if (A == '&') goto pos36935; 292 | if (A == '@') goto pos36967; 293 | if (A == '^') goto pos37004; 294 | if (A == '+') goto pos37019; 295 | if (A == ':') goto pos37040; 296 | // Code42041(); //Error 297 | //36894: BRK 298 | return false; 299 | 300 | // -------------- 301 | 302 | pos36895: 303 | Code37055(mem59); 304 | A = A & 128; 305 | if (A != 0) goto pos36700; 306 | pos36905: 307 | mem59 = X; 308 | goto pos36791; 309 | 310 | // -------------- 311 | 312 | pos36910: 313 | Code37055(mem59); 314 | A = A & 64; 315 | if (A != 0) goto pos36905; 316 | goto pos36700; 317 | 318 | // -------------- 319 | 320 | 321 | pos36920: 322 | Code37055(mem59); 323 | A = A & 8; 324 | if (A == 0) goto pos36700; 325 | pos36930: 326 | mem59 = X; 327 | goto pos36791; 328 | 329 | // -------------- 330 | 331 | pos36935: 332 | Code37055(mem59); 333 | A = A & 16; 334 | if (A != 0) goto pos36930; 335 | A = inputtemp[X]; 336 | if (A != 72) goto pos36700; 337 | DEC8( ref X); 338 | A = inputtemp[X]; 339 | if ((A == 67) || (A == 83)) goto pos36930; 340 | goto pos36700; 341 | 342 | // -------------- 343 | 344 | pos36967: 345 | Code37055(mem59); 346 | A = A & 4; 347 | if (A != 0) goto pos36930; 348 | A = inputtemp[X]; 349 | if (A != 72) goto pos36700; 350 | if ((A != 84) && (A != 67) && (A != 83)) goto pos36700; 351 | mem59 = X; 352 | goto pos36791; 353 | 354 | // -------------- 355 | 356 | 357 | pos37004: 358 | Code37055(mem59); 359 | A = A & 32; 360 | if (A == 0) goto pos36700; 361 | 362 | pos37014: 363 | mem59 = X; 364 | goto pos36791; 365 | 366 | // -------------- 367 | 368 | pos37019: 369 | X = mem59; 370 | DEC8( ref X); 371 | A = inputtemp[X]; 372 | if ((A == 'E') || (A == 'I') || (A == 'Y')) goto pos37014; 373 | goto pos36700; 374 | // -------------- 375 | 376 | pos37040: 377 | Code37055(mem59); 378 | A = A & 32; 379 | if (A == 0) goto pos36791; 380 | mem59 = X; 381 | goto pos37040; 382 | 383 | //--------------------------------------- 384 | 385 | 386 | pos37077: 387 | X = mem58 + 1; 388 | A = inputtemp[X]; 389 | if (A != 'E') goto pos37157; 390 | INC8( ref X); 391 | Y = inputtemp[X]; 392 | DEC8( ref X); 393 | A = tab36376[Y] & 128; 394 | if (A == 0) goto pos37108; 395 | INC8( ref X); 396 | A = inputtemp[X]; 397 | if (A != 'R') goto pos37113; 398 | pos37108: 399 | mem58 = X; 400 | goto pos37184; 401 | 402 | pos37113: 403 | if ((A == 83) || (A == 68)) goto pos37108; // 'S' 'D' 404 | if (A != 76) goto pos37135; // 'L' 405 | INC8( ref X); 406 | A = inputtemp[X]; 407 | if (A != 89) goto pos36700; 408 | goto pos37108; 409 | 410 | pos37135: 411 | if (A != 70) goto pos36700; 412 | INC8( ref X); 413 | A = inputtemp[X]; 414 | if (A != 85) goto pos36700; 415 | INC8( ref X); 416 | A = inputtemp[X]; 417 | if (A == 76) goto pos37108; 418 | goto pos36700; 419 | 420 | pos37157: 421 | if (A != 73) goto pos36700; 422 | INC8( ref X); 423 | A = inputtemp[X]; 424 | if (A != 78) goto pos36700; 425 | INC8( ref X); 426 | A = inputtemp[X]; 427 | if (A == 71) goto pos37108; 428 | //pos37177: 429 | goto pos36700; 430 | 431 | // ----------------------------------------- 432 | 433 | pos37180: 434 | 435 | A = mem60; 436 | mem58 = A; 437 | 438 | pos37184: 439 | Y = mem65 + 1; 440 | 441 | //37187: CPY 64 442 | // if(? != 0) goto pos37194; 443 | if (Y == mem64) goto pos37455; 444 | mem65 = Y; 445 | //37196: LDA (62),y 446 | A = GetRuleByte(mem62, Y); 447 | mem57 = A; 448 | X = A; 449 | A = tab36376[X] & 128; 450 | if (A == 0) goto pos37226; 451 | X = mem58 + 1; 452 | A = inputtemp[X]; 453 | if (A != mem57) goto pos36700; 454 | mem58 = X; 455 | goto pos37184; 456 | 457 | pos37226: 458 | A = mem57; 459 | if (A == 32) goto pos37295; // ' ' 460 | if (A == 35) goto pos37310; // '#' 461 | if (A == 46) goto pos37320; // '.' 462 | if (A == 38) goto pos37335; // '&' 463 | if (A == 64) goto pos37367; // '' 464 | if (A == 94) goto pos37404; // '' 465 | if (A == 43) goto pos37419; // '+' 466 | if (A == 58) goto pos37440; // ':' 467 | if (A == 37) goto pos37077; // '%' 468 | if (A == 37) goto pos37077; // '%' 469 | //pos37291: 470 | // Code42041(); //Error 471 | //37294: BRK 472 | return false; 473 | 474 | // -------------- 475 | pos37295: 476 | Code37066(mem58); 477 | A = A & 128; 478 | if (A != 0) goto pos36700; 479 | 480 | pos37305: 481 | mem58 = X; 482 | goto pos37184; 483 | 484 | // -------------- 485 | 486 | pos37310: 487 | Code37066(mem58); 488 | A = A & 64; 489 | if (A != 0) goto pos37305; 490 | goto pos36700; 491 | 492 | // -------------- 493 | 494 | 495 | pos37320: 496 | Code37066(mem58); 497 | A = A & 8; 498 | if (A == 0) goto pos36700; 499 | 500 | pos37330: 501 | mem58 = X; 502 | goto pos37184; 503 | 504 | // -------------- 505 | 506 | pos37335: 507 | Code37066(mem58); 508 | A = A & 16; 509 | if (A != 0) goto pos37330; 510 | A = inputtemp[X]; 511 | if (A != 72) goto pos36700; 512 | INC8( ref X); 513 | A = inputtemp[X]; 514 | if ((A == 67) || (A == 83)) goto pos37330; 515 | goto pos36700; 516 | 517 | // -------------- 518 | 519 | 520 | pos37367: 521 | Code37066(mem58); 522 | A = A & 4; 523 | if (A != 0) goto pos37330; 524 | A = inputtemp[X]; 525 | if (A != 72) goto pos36700; 526 | if ((A != 84) && (A != 67) && (A != 83)) goto pos36700; 527 | mem58 = X; 528 | goto pos37184; 529 | 530 | // -------------- 531 | 532 | pos37404: 533 | Code37066(mem58); 534 | A = A & 32; 535 | if (A == 0) goto pos36700; 536 | pos37414: 537 | mem58 = X; 538 | goto pos37184; 539 | 540 | // -------------- 541 | 542 | pos37419: 543 | X = mem58; 544 | INC8( ref X); 545 | A = inputtemp[X]; 546 | if ((A == 69) || (A == 73) || (A == 89)) goto pos37414; 547 | goto pos36700; 548 | 549 | // ---------------------- 550 | 551 | pos37440: 552 | 553 | Code37066(mem58); 554 | A = A & 32; 555 | if (A == 0) goto pos37184; 556 | mem58 = X; 557 | goto pos37440; 558 | pos37455: 559 | Y = mem64; 560 | mem61 = mem60; 561 | 562 | if (debug) 563 | PrintRule(mem62); 564 | 565 | pos37461: 566 | //37461: LDA (62),y 567 | A = GetRuleByte(mem62, Y); 568 | mem57 = A; 569 | A = A & 127; 570 | if (A != '=') 571 | { 572 | INC8( ref mem56); 573 | X = mem56; 574 | input[X] = A; 575 | } 576 | 577 | //37478: BIT 57 578 | //37480: BPL 37485 //not negative flag 579 | if ((mem57 & 128) == 0) goto pos37485; //??? 580 | goto pos36554; 581 | pos37485: 582 | INC8( ref Y); 583 | goto pos37461; 584 | } 585 | } 586 | -------------------------------------------------------------------------------- /UnitySAM/Assets/SAMCSourceCode/src/reciter_c.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d8683c223f97a43f6830b4c2319b9057 3 | timeCreated: 1556138293 4 | licenseType: Pro 5 | PluginImporter: 6 | serializedVersion: 2 7 | iconMap: {} 8 | executionOrder: {} 9 | isPreloaded: 0 10 | isOverridable: 0 11 | platformData: 12 | data: 13 | first: 14 | Any: 15 | second: 16 | enabled: 1 17 | settings: {} 18 | data: 19 | first: 20 | Editor: Editor 21 | second: 22 | enabled: 0 23 | settings: 24 | DefaultValueInitialized: true 25 | userData: 26 | assetBundleName: 27 | assetBundleVariant: 28 | -------------------------------------------------------------------------------- /UnitySAM/Assets/SAMCSourceCode/src/render_c.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3cdc777fd02f145adb10811643278032 3 | timeCreated: 1556138293 4 | licenseType: Pro 5 | PluginImporter: 6 | serializedVersion: 2 7 | iconMap: {} 8 | executionOrder: {} 9 | isPreloaded: 0 10 | isOverridable: 0 11 | platformData: 12 | data: 13 | first: 14 | Any: 15 | second: 16 | enabled: 1 17 | settings: {} 18 | data: 19 | first: 20 | Editor: Editor 21 | second: 22 | enabled: 0 23 | settings: 24 | DefaultValueInitialized: true 25 | userData: 26 | assetBundleName: 27 | assetBundleVariant: 28 | -------------------------------------------------------------------------------- /UnitySAM/Assets/SAMCSourceCode/src/sam_c.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e43ae3d43680e4bcba52c3e824065d71 3 | timeCreated: 1556138293 4 | licenseType: Pro 5 | PluginImporter: 6 | serializedVersion: 2 7 | iconMap: {} 8 | executionOrder: {} 9 | isPreloaded: 0 10 | isOverridable: 0 11 | platformData: 12 | data: 13 | first: 14 | Any: 15 | second: 16 | enabled: 1 17 | settings: {} 18 | data: 19 | first: 20 | Editor: Editor 21 | second: 22 | enabled: 0 23 | settings: 24 | DefaultValueInitialized: true 25 | userData: 26 | assetBundleName: 27 | assetBundleVariant: 28 | -------------------------------------------------------------------------------- /UnitySAM/Assets/Test1.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ec353d5e7144641c7a48521009e76bc1 3 | folderAsset: yes 4 | timeCreated: 1556215779 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /UnitySAM/Assets/Test1/Test1.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.UI; 5 | 6 | public class Test1 : MonoBehaviour 7 | { 8 | public Text TextOutput; 9 | 10 | public InputField inputField; 11 | public Button ButtonRespeak; 12 | public Button ButtonSilence; 13 | 14 | public Button ButtonKurtTwitter; 15 | public Button ButtonGithub; 16 | 17 | void Out( string s) 18 | { 19 | if (s == null) 20 | { 21 | TextOutput.text = ""; 22 | return; 23 | } 24 | 25 | var t = TextOutput.text; 26 | 27 | t = t + s; 28 | t = t + "\n"; 29 | 30 | TextOutput.text = t; 31 | } 32 | 33 | void SayString ( string s) 34 | { 35 | // HACK! 36 | s = s + "."; // TODO: my C# port seems to crash without final punctuation. 37 | 38 | Out(null); 39 | 40 | string output = null; 41 | 42 | int[] ints = null; 43 | 44 | bool phonetic = false; 45 | if (phonetic) 46 | { 47 | ints = UnitySAM.IntArray( s); 48 | 49 | var L = new List(ints); 50 | L.Add(155); 51 | ints = L.ToArray(); 52 | 53 | output = s + "\0x9b"; 54 | } 55 | else 56 | { 57 | output = UnitySAM.TextToPhonemes(s + "[", out ints); 58 | } 59 | 60 | Out("Input:" + s); 61 | 62 | Out( System.String.Format( "Phonemes ({0}:'{1}'", output.Length, output)); 63 | 64 | UnitySAM.SetInput(ints); 65 | 66 | var buf = UnitySAM.SAMMain(); 67 | if (buf == null) 68 | { 69 | Debug.LogError( "Buffer was null"); 70 | } 71 | else 72 | { 73 | Debug.Log( "Buffer size is " + buf.GetSize()); 74 | } 75 | 76 | AudioClip ac = AudioClip.Create( "Hello", buf.GetSize(), 1, 22050, false); 77 | ac.SetData( buf.GetFloats(), 0); 78 | AudioSource.PlayClipAtPoint( ac, Camera.main.transform.position); 79 | } 80 | 81 | void GotoMyTwitter() 82 | { 83 | Application.OpenURL( "https://www.twitter.com/kurtdekker"); 84 | } 85 | 86 | void GotoGithub() 87 | { 88 | Application.OpenURL( "https://github.com/kurtdekker/UnitySAM"); 89 | } 90 | 91 | void DestroyAllAudio() 92 | { 93 | foreach( var az in FindObjectsOfType()) 94 | { 95 | Destroy(az.gameObject); 96 | } 97 | } 98 | 99 | void Start() 100 | { 101 | ButtonKurtTwitter.onClick.AddListener( GotoMyTwitter); 102 | 103 | ButtonGithub.onClick.AddListener( GotoGithub); 104 | 105 | ButtonRespeak.onClick.AddListener( delegate { 106 | SayString(inputField.text); 107 | }); 108 | 109 | ButtonSilence.onClick.AddListener( delegate { 110 | DestroyAllAudio(); 111 | }); 112 | 113 | inputField.text = "This Unity three dee see sharp port was by Kurt Dekker. Come check out my twitter below!"; 114 | SayString( inputField.text); 115 | 116 | inputField.onEndEdit.AddListener( SayString); 117 | 118 | string s = "HELLO"; 119 | 120 | s = "the imperial arcturan armada is ready for battle."; 121 | 122 | s = "the imperial ark tooran arr mah dah is ready for battle."; 123 | 124 | //SayString( s); 125 | } 126 | } 127 | -------------------------------------------------------------------------------- /UnitySAM/Assets/Test1/Test1.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 06a3cea5da46e4f0baa64d83a9a61c49 3 | timeCreated: 1556215788 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /UnitySAM/Assets/Test1/Test1.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 18c69205097de40ea8f48c1685669014 3 | timeCreated: 1556215892 4 | licenseType: Pro 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /UnitySAM/ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | m_Volume: 1 7 | Rolloff Scale: 1 8 | Doppler Factor: 1 9 | Default Speaker Mode: 2 10 | m_SampleRate: 0 11 | m_DSPBufferSize: 0 12 | m_VirtualVoiceCount: 512 13 | m_RealVoiceCount: 32 14 | m_SpatializerPlugin: 15 | m_DisableAudio: 0 16 | m_VirtualizeEffects: 1 17 | -------------------------------------------------------------------------------- /UnitySAM/ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /UnitySAM/ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 3 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_EnablePCM: 1 18 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 19 | -------------------------------------------------------------------------------- /UnitySAM/ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: 8 | - enabled: 1 9 | path: Assets/Test1/Test1.unity 10 | guid: 18c69205097de40ea8f48c1685669014 11 | -------------------------------------------------------------------------------- /UnitySAM/ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 3 7 | m_ExternalVersionControlSupport: Visible Meta Files 8 | m_SerializationMode: 2 9 | m_DefaultBehaviorMode: 0 10 | m_SpritePackerMode: 0 11 | m_SpritePackerPaddingPower: 1 12 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd 13 | m_ProjectGenerationRootNamespace: 14 | m_UserGeneratedProjectSuffix: 15 | -------------------------------------------------------------------------------- /UnitySAM/ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 12 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_LegacyDeferred: 17 | m_Mode: 1 18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} 19 | m_DepthNormals: 20 | m_Mode: 1 21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 22 | m_MotionVectors: 23 | m_Mode: 1 24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LightHalo: 26 | m_Mode: 1 27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 28 | m_LensFlare: 29 | m_Mode: 1 30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 31 | m_AlwaysIncludedShaders: 32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 38 | - {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0} 39 | m_PreloadedShaders: [] 40 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 41 | type: 0} 42 | m_CustomRenderPipeline: {fileID: 0} 43 | m_TransparencySortMode: 0 44 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 45 | m_DefaultRenderingPath: 1 46 | m_DefaultMobileRenderingPath: 1 47 | m_TierSettings: [] 48 | m_LightmapStripping: 0 49 | m_FogStripping: 0 50 | m_InstancingStripping: 0 51 | m_LightmapKeepPlain: 1 52 | m_LightmapKeepDirCombined: 1 53 | m_LightmapKeepDynamicPlain: 1 54 | m_LightmapKeepDynamicDirCombined: 1 55 | m_LightmapKeepShadowMask: 1 56 | m_LightmapKeepSubtractive: 1 57 | m_FogKeepLinear: 1 58 | m_FogKeepExp: 1 59 | m_FogKeepExp2: 1 60 | m_AlbedoSwatchInfos: [] 61 | m_LightsUseLinearIntensity: 0 62 | m_LightsUseColorTemperature: 0 63 | -------------------------------------------------------------------------------- /UnitySAM/ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!13 &1 4 | InputManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Axes: 8 | - serializedVersion: 3 9 | m_Name: Horizontal 10 | descriptiveName: 11 | descriptiveNegativeName: 12 | negativeButton: left 13 | positiveButton: right 14 | altNegativeButton: a 15 | altPositiveButton: d 16 | gravity: 3 17 | dead: 0.001 18 | sensitivity: 3 19 | snap: 1 20 | invert: 0 21 | type: 0 22 | axis: 0 23 | joyNum: 0 24 | - serializedVersion: 3 25 | m_Name: Vertical 26 | descriptiveName: 27 | descriptiveNegativeName: 28 | negativeButton: down 29 | positiveButton: up 30 | altNegativeButton: s 31 | altPositiveButton: w 32 | gravity: 3 33 | dead: 0.001 34 | sensitivity: 3 35 | snap: 1 36 | invert: 0 37 | type: 0 38 | axis: 0 39 | joyNum: 0 40 | - serializedVersion: 3 41 | m_Name: Fire1 42 | descriptiveName: 43 | descriptiveNegativeName: 44 | negativeButton: 45 | positiveButton: left ctrl 46 | altNegativeButton: 47 | altPositiveButton: mouse 0 48 | gravity: 1000 49 | dead: 0.001 50 | sensitivity: 1000 51 | snap: 0 52 | invert: 0 53 | type: 0 54 | axis: 0 55 | joyNum: 0 56 | - serializedVersion: 3 57 | m_Name: Fire2 58 | descriptiveName: 59 | descriptiveNegativeName: 60 | negativeButton: 61 | positiveButton: left alt 62 | altNegativeButton: 63 | altPositiveButton: mouse 1 64 | gravity: 1000 65 | dead: 0.001 66 | sensitivity: 1000 67 | snap: 0 68 | invert: 0 69 | type: 0 70 | axis: 0 71 | joyNum: 0 72 | - serializedVersion: 3 73 | m_Name: Fire3 74 | descriptiveName: 75 | descriptiveNegativeName: 76 | negativeButton: 77 | positiveButton: left shift 78 | altNegativeButton: 79 | altPositiveButton: mouse 2 80 | gravity: 1000 81 | dead: 0.001 82 | sensitivity: 1000 83 | snap: 0 84 | invert: 0 85 | type: 0 86 | axis: 0 87 | joyNum: 0 88 | - serializedVersion: 3 89 | m_Name: Jump 90 | descriptiveName: 91 | descriptiveNegativeName: 92 | negativeButton: 93 | positiveButton: space 94 | altNegativeButton: 95 | altPositiveButton: 96 | gravity: 1000 97 | dead: 0.001 98 | sensitivity: 1000 99 | snap: 0 100 | invert: 0 101 | type: 0 102 | axis: 0 103 | joyNum: 0 104 | - serializedVersion: 3 105 | m_Name: Mouse X 106 | descriptiveName: 107 | descriptiveNegativeName: 108 | negativeButton: 109 | positiveButton: 110 | altNegativeButton: 111 | altPositiveButton: 112 | gravity: 0 113 | dead: 0 114 | sensitivity: 0.1 115 | snap: 0 116 | invert: 0 117 | type: 1 118 | axis: 0 119 | joyNum: 0 120 | - serializedVersion: 3 121 | m_Name: Mouse Y 122 | descriptiveName: 123 | descriptiveNegativeName: 124 | negativeButton: 125 | positiveButton: 126 | altNegativeButton: 127 | altPositiveButton: 128 | gravity: 0 129 | dead: 0 130 | sensitivity: 0.1 131 | snap: 0 132 | invert: 0 133 | type: 1 134 | axis: 1 135 | joyNum: 0 136 | - serializedVersion: 3 137 | m_Name: Mouse ScrollWheel 138 | descriptiveName: 139 | descriptiveNegativeName: 140 | negativeButton: 141 | positiveButton: 142 | altNegativeButton: 143 | altPositiveButton: 144 | gravity: 0 145 | dead: 0 146 | sensitivity: 0.1 147 | snap: 0 148 | invert: 0 149 | type: 1 150 | axis: 2 151 | joyNum: 0 152 | - serializedVersion: 3 153 | m_Name: Horizontal 154 | descriptiveName: 155 | descriptiveNegativeName: 156 | negativeButton: 157 | positiveButton: 158 | altNegativeButton: 159 | altPositiveButton: 160 | gravity: 0 161 | dead: 0.19 162 | sensitivity: 1 163 | snap: 0 164 | invert: 0 165 | type: 2 166 | axis: 0 167 | joyNum: 0 168 | - serializedVersion: 3 169 | m_Name: Vertical 170 | descriptiveName: 171 | descriptiveNegativeName: 172 | negativeButton: 173 | positiveButton: 174 | altNegativeButton: 175 | altPositiveButton: 176 | gravity: 0 177 | dead: 0.19 178 | sensitivity: 1 179 | snap: 0 180 | invert: 1 181 | type: 2 182 | axis: 1 183 | joyNum: 0 184 | - serializedVersion: 3 185 | m_Name: Fire1 186 | descriptiveName: 187 | descriptiveNegativeName: 188 | negativeButton: 189 | positiveButton: joystick button 0 190 | altNegativeButton: 191 | altPositiveButton: 192 | gravity: 1000 193 | dead: 0.001 194 | sensitivity: 1000 195 | snap: 0 196 | invert: 0 197 | type: 0 198 | axis: 0 199 | joyNum: 0 200 | - serializedVersion: 3 201 | m_Name: Fire2 202 | descriptiveName: 203 | descriptiveNegativeName: 204 | negativeButton: 205 | positiveButton: joystick button 1 206 | altNegativeButton: 207 | altPositiveButton: 208 | gravity: 1000 209 | dead: 0.001 210 | sensitivity: 1000 211 | snap: 0 212 | invert: 0 213 | type: 0 214 | axis: 0 215 | joyNum: 0 216 | - serializedVersion: 3 217 | m_Name: Fire3 218 | descriptiveName: 219 | descriptiveNegativeName: 220 | negativeButton: 221 | positiveButton: joystick button 2 222 | altNegativeButton: 223 | altPositiveButton: 224 | gravity: 1000 225 | dead: 0.001 226 | sensitivity: 1000 227 | snap: 0 228 | invert: 0 229 | type: 0 230 | axis: 0 231 | joyNum: 0 232 | - serializedVersion: 3 233 | m_Name: Jump 234 | descriptiveName: 235 | descriptiveNegativeName: 236 | negativeButton: 237 | positiveButton: joystick button 3 238 | altNegativeButton: 239 | altPositiveButton: 240 | gravity: 1000 241 | dead: 0.001 242 | sensitivity: 1000 243 | snap: 0 244 | invert: 0 245 | type: 0 246 | axis: 0 247 | joyNum: 0 248 | - serializedVersion: 3 249 | m_Name: Submit 250 | descriptiveName: 251 | descriptiveNegativeName: 252 | negativeButton: 253 | positiveButton: return 254 | altNegativeButton: 255 | altPositiveButton: joystick button 0 256 | gravity: 1000 257 | dead: 0.001 258 | sensitivity: 1000 259 | snap: 0 260 | invert: 0 261 | type: 0 262 | axis: 0 263 | joyNum: 0 264 | - serializedVersion: 3 265 | m_Name: Submit 266 | descriptiveName: 267 | descriptiveNegativeName: 268 | negativeButton: 269 | positiveButton: enter 270 | altNegativeButton: 271 | altPositiveButton: space 272 | gravity: 1000 273 | dead: 0.001 274 | sensitivity: 1000 275 | snap: 0 276 | invert: 0 277 | type: 0 278 | axis: 0 279 | joyNum: 0 280 | - serializedVersion: 3 281 | m_Name: Cancel 282 | descriptiveName: 283 | descriptiveNegativeName: 284 | negativeButton: 285 | positiveButton: escape 286 | altNegativeButton: 287 | altPositiveButton: joystick button 1 288 | gravity: 1000 289 | dead: 0.001 290 | sensitivity: 1000 291 | snap: 0 292 | invert: 0 293 | type: 0 294 | axis: 0 295 | joyNum: 0 296 | -------------------------------------------------------------------------------- /UnitySAM/ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 2 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | accuratePlacement: 0 88 | m_SettingNames: 89 | - Humanoid 90 | -------------------------------------------------------------------------------- /UnitySAM/ProjectSettings/NetworkManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!149 &1 4 | NetworkManager: 5 | m_ObjectHideFlags: 0 6 | m_DebugLevel: 0 7 | m_Sendrate: 15 8 | m_AssetToPrefab: {} 9 | -------------------------------------------------------------------------------- /UnitySAM/ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 3 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_QueriesHitTriggers: 1 23 | m_QueriesStartInColliders: 1 24 | m_ChangeStopsCallbacks: 0 25 | m_CallbacksOnDisable: 1 26 | m_AlwaysShowColliders: 0 27 | m_ShowColliderSleep: 1 28 | m_ShowColliderContacts: 0 29 | m_ShowColliderAABB: 0 30 | m_ContactArrowScale: 0.2 31 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 32 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 33 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 34 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 35 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 36 | -------------------------------------------------------------------------------- /UnitySAM/ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!129 &1 4 | PlayerSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 11 7 | productGUID: 78688210fbc664a24b3ea27d8d07789b 8 | AndroidProfiler: 0 9 | defaultScreenOrientation: 4 10 | targetDevice: 2 11 | useOnDemandResources: 0 12 | accelerometerFrequency: 60 13 | companyName: Kurt Dekker 14 | productName: UnitySAM 15 | defaultCursor: {fileID: 0} 16 | cursorHotspot: {x: 0, y: 0} 17 | m_SplashScreenBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21176471, a: 1} 18 | m_ShowUnitySplashScreen: 1 19 | m_ShowUnitySplashLogo: 1 20 | m_SplashScreenOverlayOpacity: 1 21 | m_SplashScreenAnimation: 1 22 | m_SplashScreenLogoStyle: 1 23 | m_SplashScreenDrawMode: 0 24 | m_SplashScreenBackgroundAnimationZoom: 1 25 | m_SplashScreenLogoAnimationZoom: 1 26 | m_SplashScreenBackgroundLandscapeAspect: 1 27 | m_SplashScreenBackgroundPortraitAspect: 1 28 | m_SplashScreenBackgroundLandscapeUvs: 29 | serializedVersion: 2 30 | x: 0 31 | y: 0 32 | width: 1 33 | height: 1 34 | m_SplashScreenBackgroundPortraitUvs: 35 | serializedVersion: 2 36 | x: 0 37 | y: 0 38 | width: 1 39 | height: 1 40 | m_SplashScreenLogos: [] 41 | m_SplashScreenBackgroundLandscape: {fileID: 0} 42 | m_SplashScreenBackgroundPortrait: {fileID: 0} 43 | m_VirtualRealitySplashScreen: {fileID: 0} 44 | m_HolographicTrackingLossScreen: {fileID: 0} 45 | defaultScreenWidth: 1024 46 | defaultScreenHeight: 768 47 | defaultScreenWidthWeb: 960 48 | defaultScreenHeightWeb: 600 49 | m_StereoRenderingPath: 0 50 | m_ActiveColorSpace: 0 51 | m_MTRendering: 1 52 | m_MobileMTRendering: 0 53 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000 54 | iosShowActivityIndicatorOnLoading: -1 55 | androidShowActivityIndicatorOnLoading: -1 56 | tizenShowActivityIndicatorOnLoading: -1 57 | iosAppInBackgroundBehavior: 0 58 | displayResolutionDialog: 1 59 | iosAllowHTTPDownload: 1 60 | allowedAutorotateToPortrait: 1 61 | allowedAutorotateToPortraitUpsideDown: 1 62 | allowedAutorotateToLandscapeRight: 1 63 | allowedAutorotateToLandscapeLeft: 1 64 | useOSAutorotation: 1 65 | use32BitDisplayBuffer: 1 66 | disableDepthAndStencilBuffers: 0 67 | defaultIsFullScreen: 1 68 | defaultIsNativeResolution: 1 69 | runInBackground: 0 70 | captureSingleScreen: 0 71 | muteOtherAudioSources: 0 72 | Prepare IOS For Recording: 0 73 | deferSystemGesturesMode: 0 74 | hideHomeButton: 0 75 | submitAnalytics: 1 76 | usePlayerLog: 1 77 | bakeCollisionMeshes: 0 78 | forceSingleInstance: 0 79 | resizableWindow: 0 80 | useMacAppStoreValidation: 0 81 | macAppStoreCategory: public.app-category.games 82 | gpuSkinning: 0 83 | graphicsJobs: 0 84 | xboxPIXTextureCapture: 0 85 | xboxEnableAvatar: 0 86 | xboxEnableKinect: 0 87 | xboxEnableKinectAutoTracking: 0 88 | xboxEnableFitness: 0 89 | visibleInBackground: 0 90 | allowFullscreenSwitch: 1 91 | graphicsJobMode: 0 92 | macFullscreenMode: 2 93 | d3d9FullscreenMode: 1 94 | d3d11FullscreenMode: 1 95 | xboxSpeechDB: 0 96 | xboxEnableHeadOrientation: 0 97 | xboxEnableGuest: 0 98 | xboxEnablePIXSampling: 0 99 | n3dsDisableStereoscopicView: 0 100 | n3dsEnableSharedListOpt: 1 101 | n3dsEnableVSync: 0 102 | ignoreAlphaClear: 0 103 | xboxOneResolution: 0 104 | xboxOneSResolution: 0 105 | xboxOneXResolution: 3 106 | xboxOneMonoLoggingLevel: 0 107 | xboxOneLoggingLevel: 1 108 | videoMemoryForVertexBuffers: 0 109 | psp2PowerMode: 0 110 | psp2AcquireBGM: 1 111 | wiiUTVResolution: 0 112 | wiiUGamePadMSAA: 1 113 | wiiUSupportsNunchuk: 0 114 | wiiUSupportsClassicController: 0 115 | wiiUSupportsBalanceBoard: 0 116 | wiiUSupportsMotionPlus: 0 117 | wiiUSupportsProController: 0 118 | wiiUAllowScreenCapture: 1 119 | wiiUControllerCount: 0 120 | m_SupportedAspectRatios: 121 | 4:3: 1 122 | 5:4: 1 123 | 16:10: 1 124 | 16:9: 1 125 | Others: 1 126 | bundleVersion: 1.0 127 | preloadedAssets: [] 128 | metroInputSource: 0 129 | m_HolographicPauseOnTrackingLoss: 1 130 | xboxOneDisableKinectGpuReservation: 0 131 | xboxOneEnable7thCore: 0 132 | vrSettings: 133 | cardboard: 134 | depthFormat: 0 135 | enableTransitionView: 0 136 | daydream: 137 | depthFormat: 0 138 | useSustainedPerformanceMode: 0 139 | hololens: 140 | depthFormat: 1 141 | protectGraphicsMemory: 0 142 | useHDRDisplay: 0 143 | applicationIdentifier: 144 | Android: com.kurt.unitysam 145 | iOS: com.kurt.unitysam 146 | buildNumber: {} 147 | AndroidBundleVersionCode: 1 148 | AndroidMinSdkVersion: 16 149 | AndroidTargetSdkVersion: 0 150 | AndroidPreferredInstallLocation: 1 151 | aotOptions: 152 | stripEngineCode: 1 153 | iPhoneStrippingLevel: 0 154 | iPhoneScriptCallOptimization: 0 155 | ForceInternetPermission: 0 156 | ForceSDCardPermission: 0 157 | CreateWallpaper: 0 158 | APKExpansionFiles: 0 159 | keepLoadedShadersAlive: 0 160 | StripUnusedMeshComponents: 0 161 | VertexChannelCompressionMask: 162 | serializedVersion: 2 163 | m_Bits: 238 164 | iPhoneSdkVersion: 988 165 | iOSTargetOSVersionString: 7.0 166 | tvOSSdkVersion: 0 167 | tvOSRequireExtendedGameController: 0 168 | tvOSTargetOSVersionString: 169 | uIPrerenderedIcon: 0 170 | uIRequiresPersistentWiFi: 0 171 | uIRequiresFullScreen: 1 172 | uIStatusBarHidden: 1 173 | uIExitOnSuspend: 0 174 | uIStatusBarStyle: 0 175 | iPhoneSplashScreen: {fileID: 0} 176 | iPhoneHighResSplashScreen: {fileID: 0} 177 | iPhoneTallHighResSplashScreen: {fileID: 0} 178 | iPhone47inSplashScreen: {fileID: 0} 179 | iPhone55inPortraitSplashScreen: {fileID: 0} 180 | iPhone55inLandscapeSplashScreen: {fileID: 0} 181 | iPhone58inPortraitSplashScreen: {fileID: 0} 182 | iPhone58inLandscapeSplashScreen: {fileID: 0} 183 | iPadPortraitSplashScreen: {fileID: 0} 184 | iPadHighResPortraitSplashScreen: {fileID: 0} 185 | iPadLandscapeSplashScreen: {fileID: 0} 186 | iPadHighResLandscapeSplashScreen: {fileID: 0} 187 | appleTVSplashScreen: {fileID: 0} 188 | appleTVSplashScreen2x: {fileID: 0} 189 | tvOSSmallIconLayers: [] 190 | tvOSSmallIconLayers2x: [] 191 | tvOSLargeIconLayers: [] 192 | tvOSTopShelfImageLayers: [] 193 | tvOSTopShelfImageLayers2x: [] 194 | tvOSTopShelfImageWideLayers: [] 195 | tvOSTopShelfImageWideLayers2x: [] 196 | iOSLaunchScreenType: 0 197 | iOSLaunchScreenPortrait: {fileID: 0} 198 | iOSLaunchScreenLandscape: {fileID: 0} 199 | iOSLaunchScreenBackgroundColor: 200 | serializedVersion: 2 201 | rgba: 0 202 | iOSLaunchScreenFillPct: 100 203 | iOSLaunchScreenSize: 100 204 | iOSLaunchScreenCustomXibPath: 205 | iOSLaunchScreeniPadType: 0 206 | iOSLaunchScreeniPadImage: {fileID: 0} 207 | iOSLaunchScreeniPadBackgroundColor: 208 | serializedVersion: 2 209 | rgba: 0 210 | iOSLaunchScreeniPadFillPct: 100 211 | iOSLaunchScreeniPadSize: 100 212 | iOSLaunchScreeniPadCustomXibPath: 213 | iOSDeviceRequirements: [] 214 | iOSURLSchemes: [] 215 | iOSBackgroundModes: 0 216 | iOSMetalForceHardShadows: 0 217 | metalEditorSupport: 0 218 | metalAPIValidation: 1 219 | iOSRenderExtraFrameOnPause: 0 220 | appleDeveloperTeamID: 221 | iOSManualSigningProvisioningProfileID: 222 | tvOSManualSigningProvisioningProfileID: 223 | appleEnableAutomaticSigning: 0 224 | AndroidTargetDevice: 0 225 | AndroidSplashScreenScale: 0 226 | androidSplashScreen: {fileID: 0} 227 | AndroidKeystoreName: 228 | AndroidKeyaliasName: 229 | AndroidTVCompatibility: 1 230 | AndroidIsGame: 1 231 | androidEnableBanner: 1 232 | m_AndroidBanners: 233 | - width: 320 234 | height: 180 235 | banner: {fileID: 0} 236 | androidGamepadSupportLevel: 0 237 | resolutionDialogBanner: {fileID: 0} 238 | m_BuildTargetIcons: 239 | - m_BuildTarget: 240 | m_Icons: 241 | - serializedVersion: 2 242 | m_Icon: {fileID: 2800000, guid: df939540fc3314a778f035de90bdda34, type: 3} 243 | m_Width: 128 244 | m_Height: 128 245 | m_Kind: 0 246 | m_BuildTargetBatching: [] 247 | m_BuildTargetGraphicsAPIs: [] 248 | m_BuildTargetVRSettings: [] 249 | openGLRequireES31: 0 250 | openGLRequireES31AEP: 0 251 | webPlayerTemplate: APPLICATION:Default 252 | m_TemplateCustomTags: {} 253 | wiiUTitleID: 0005000011000000 254 | wiiUGroupID: 00010000 255 | wiiUCommonSaveSize: 4096 256 | wiiUAccountSaveSize: 2048 257 | wiiUOlvAccessKey: 0 258 | wiiUTinCode: 0 259 | wiiUJoinGameId: 0 260 | wiiUJoinGameModeMask: 0000000000000000 261 | wiiUCommonBossSize: 0 262 | wiiUAccountBossSize: 0 263 | wiiUAddOnUniqueIDs: [] 264 | wiiUMainThreadStackSize: 3072 265 | wiiULoaderThreadStackSize: 1024 266 | wiiUSystemHeapSize: 128 267 | wiiUTVStartupScreen: {fileID: 0} 268 | wiiUGamePadStartupScreen: {fileID: 0} 269 | wiiUDrcBufferDisabled: 0 270 | wiiUProfilerLibPath: 271 | playModeTestRunnerEnabled: 0 272 | actionOnDotNetUnhandledException: 1 273 | enableInternalProfiler: 0 274 | logObjCUncaughtExceptions: 1 275 | enableCrashReportAPI: 0 276 | cameraUsageDescription: 277 | locationUsageDescription: 278 | microphoneUsageDescription: 279 | switchNetLibKey: 280 | switchSocketMemoryPoolSize: 6144 281 | switchSocketAllocatorPoolSize: 128 282 | switchSocketConcurrencyLimit: 14 283 | switchScreenResolutionBehavior: 2 284 | switchUseCPUProfiler: 0 285 | switchApplicationID: 0x01004b9000490000 286 | switchNSODependencies: 287 | switchTitleNames_0: 288 | switchTitleNames_1: 289 | switchTitleNames_2: 290 | switchTitleNames_3: 291 | switchTitleNames_4: 292 | switchTitleNames_5: 293 | switchTitleNames_6: 294 | switchTitleNames_7: 295 | switchTitleNames_8: 296 | switchTitleNames_9: 297 | switchTitleNames_10: 298 | switchTitleNames_11: 299 | switchTitleNames_12: 300 | switchTitleNames_13: 301 | switchTitleNames_14: 302 | switchPublisherNames_0: 303 | switchPublisherNames_1: 304 | switchPublisherNames_2: 305 | switchPublisherNames_3: 306 | switchPublisherNames_4: 307 | switchPublisherNames_5: 308 | switchPublisherNames_6: 309 | switchPublisherNames_7: 310 | switchPublisherNames_8: 311 | switchPublisherNames_9: 312 | switchPublisherNames_10: 313 | switchPublisherNames_11: 314 | switchPublisherNames_12: 315 | switchPublisherNames_13: 316 | switchPublisherNames_14: 317 | switchIcons_0: {fileID: 0} 318 | switchIcons_1: {fileID: 0} 319 | switchIcons_2: {fileID: 0} 320 | switchIcons_3: {fileID: 0} 321 | switchIcons_4: {fileID: 0} 322 | switchIcons_5: {fileID: 0} 323 | switchIcons_6: {fileID: 0} 324 | switchIcons_7: {fileID: 0} 325 | switchIcons_8: {fileID: 0} 326 | switchIcons_9: {fileID: 0} 327 | switchIcons_10: {fileID: 0} 328 | switchIcons_11: {fileID: 0} 329 | switchIcons_12: {fileID: 0} 330 | switchIcons_13: {fileID: 0} 331 | switchIcons_14: {fileID: 0} 332 | switchSmallIcons_0: {fileID: 0} 333 | switchSmallIcons_1: {fileID: 0} 334 | switchSmallIcons_2: {fileID: 0} 335 | switchSmallIcons_3: {fileID: 0} 336 | switchSmallIcons_4: {fileID: 0} 337 | switchSmallIcons_5: {fileID: 0} 338 | switchSmallIcons_6: {fileID: 0} 339 | switchSmallIcons_7: {fileID: 0} 340 | switchSmallIcons_8: {fileID: 0} 341 | switchSmallIcons_9: {fileID: 0} 342 | switchSmallIcons_10: {fileID: 0} 343 | switchSmallIcons_11: {fileID: 0} 344 | switchSmallIcons_12: {fileID: 0} 345 | switchSmallIcons_13: {fileID: 0} 346 | switchSmallIcons_14: {fileID: 0} 347 | switchManualHTML: 348 | switchAccessibleURLs: 349 | switchLegalInformation: 350 | switchMainThreadStackSize: 1048576 351 | switchPresenceGroupId: 352 | switchLogoHandling: 0 353 | switchReleaseVersion: 0 354 | switchDisplayVersion: 1.0.0 355 | switchStartupUserAccount: 0 356 | switchTouchScreenUsage: 0 357 | switchSupportedLanguagesMask: 0 358 | switchLogoType: 0 359 | switchApplicationErrorCodeCategory: 360 | switchUserAccountSaveDataSize: 0 361 | switchUserAccountSaveDataJournalSize: 0 362 | switchApplicationAttribute: 0 363 | switchCardSpecSize: -1 364 | switchCardSpecClock: -1 365 | switchRatingsMask: 0 366 | switchRatingsInt_0: 0 367 | switchRatingsInt_1: 0 368 | switchRatingsInt_2: 0 369 | switchRatingsInt_3: 0 370 | switchRatingsInt_4: 0 371 | switchRatingsInt_5: 0 372 | switchRatingsInt_6: 0 373 | switchRatingsInt_7: 0 374 | switchRatingsInt_8: 0 375 | switchRatingsInt_9: 0 376 | switchRatingsInt_10: 0 377 | switchRatingsInt_11: 0 378 | switchLocalCommunicationIds_0: 379 | switchLocalCommunicationIds_1: 380 | switchLocalCommunicationIds_2: 381 | switchLocalCommunicationIds_3: 382 | switchLocalCommunicationIds_4: 383 | switchLocalCommunicationIds_5: 384 | switchLocalCommunicationIds_6: 385 | switchLocalCommunicationIds_7: 386 | switchParentalControl: 0 387 | switchAllowsScreenshot: 1 388 | switchAllowsVideoCapturing: 1 389 | switchDataLossConfirmation: 0 390 | switchSupportedNpadStyles: 3 391 | switchSocketConfigEnabled: 0 392 | switchTcpInitialSendBufferSize: 32 393 | switchTcpInitialReceiveBufferSize: 64 394 | switchTcpAutoSendBufferSizeMax: 256 395 | switchTcpAutoReceiveBufferSizeMax: 256 396 | switchUdpSendBufferSize: 9 397 | switchUdpReceiveBufferSize: 42 398 | switchSocketBufferEfficiency: 4 399 | switchSocketInitializeEnabled: 1 400 | switchNetworkInterfaceManagerInitializeEnabled: 1 401 | switchPlayerConnectionEnabled: 1 402 | ps4NPAgeRating: 12 403 | ps4NPTitleSecret: 404 | ps4NPTrophyPackPath: 405 | ps4ParentalLevel: 11 406 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000 407 | ps4Category: 0 408 | ps4MasterVersion: 01.00 409 | ps4AppVersion: 01.00 410 | ps4AppType: 0 411 | ps4ParamSfxPath: 412 | ps4VideoOutPixelFormat: 0 413 | ps4VideoOutInitialWidth: 1920 414 | ps4VideoOutBaseModeInitialWidth: 1920 415 | ps4VideoOutReprojectionRate: 120 416 | ps4PronunciationXMLPath: 417 | ps4PronunciationSIGPath: 418 | ps4BackgroundImagePath: 419 | ps4StartupImagePath: 420 | ps4SaveDataImagePath: 421 | ps4SdkOverride: 422 | ps4BGMPath: 423 | ps4ShareFilePath: 424 | ps4ShareOverlayImagePath: 425 | ps4PrivacyGuardImagePath: 426 | ps4NPtitleDatPath: 427 | ps4RemotePlayKeyAssignment: -1 428 | ps4RemotePlayKeyMappingDir: 429 | ps4PlayTogetherPlayerCount: 0 430 | ps4EnterButtonAssignment: 1 431 | ps4ApplicationParam1: 0 432 | ps4ApplicationParam2: 0 433 | ps4ApplicationParam3: 0 434 | ps4ApplicationParam4: 0 435 | ps4DownloadDataSize: 0 436 | ps4GarlicHeapSize: 2048 437 | ps4ProGarlicHeapSize: 2560 438 | ps4Passcode: dVI5ZuGXbEWRK5RhRXdCdG5nG5azdNMK 439 | ps4UseDebugIl2cppLibs: 0 440 | ps4pnSessions: 1 441 | ps4pnPresence: 1 442 | ps4pnFriends: 1 443 | ps4pnGameCustomData: 1 444 | playerPrefsSupport: 0 445 | restrictedAudioUsageRights: 0 446 | ps4UseResolutionFallback: 0 447 | ps4ReprojectionSupport: 0 448 | ps4UseAudio3dBackend: 0 449 | ps4SocialScreenEnabled: 0 450 | ps4ScriptOptimizationLevel: 3 451 | ps4Audio3dVirtualSpeakerCount: 14 452 | ps4attribCpuUsage: 0 453 | ps4PatchPkgPath: 454 | ps4PatchLatestPkgPath: 455 | ps4PatchChangeinfoPath: 456 | ps4PatchDayOne: 0 457 | ps4attribUserManagement: 0 458 | ps4attribMoveSupport: 0 459 | ps4attrib3DSupport: 0 460 | ps4attribShareSupport: 0 461 | ps4attribExclusiveVR: 0 462 | ps4disableAutoHideSplash: 0 463 | ps4videoRecordingFeaturesUsed: 0 464 | ps4contentSearchFeaturesUsed: 0 465 | ps4attribEyeToEyeDistanceSettingVR: 0 466 | ps4IncludedModules: [] 467 | monoEnv: 468 | psp2Splashimage: {fileID: 0} 469 | psp2NPTrophyPackPath: 470 | psp2NPSupportGBMorGJP: 0 471 | psp2NPAgeRating: 12 472 | psp2NPTitleDatPath: 473 | psp2NPCommsID: 474 | psp2NPCommunicationsID: 475 | psp2NPCommsPassphrase: 476 | psp2NPCommsSig: 477 | psp2ParamSfxPath: 478 | psp2ManualPath: 479 | psp2LiveAreaGatePath: 480 | psp2LiveAreaBackroundPath: 481 | psp2LiveAreaPath: 482 | psp2LiveAreaTrialPath: 483 | psp2PatchChangeInfoPath: 484 | psp2PatchOriginalPackage: 485 | psp2PackagePassword: 66MuCV6GXi5xr84P2R391UXaLHbavJvF 486 | psp2KeystoneFile: 487 | psp2MemoryExpansionMode: 0 488 | psp2DRMType: 0 489 | psp2StorageType: 0 490 | psp2MediaCapacity: 0 491 | psp2DLCConfigPath: 492 | psp2ThumbnailPath: 493 | psp2BackgroundPath: 494 | psp2SoundPath: 495 | psp2TrophyCommId: 496 | psp2TrophyPackagePath: 497 | psp2PackagedResourcesPath: 498 | psp2SaveDataQuota: 10240 499 | psp2ParentalLevel: 1 500 | psp2ShortTitle: Not Set 501 | psp2ContentID: IV0000-ABCD12345_00-0123456789ABCDEF 502 | psp2Category: 0 503 | psp2MasterVersion: 01.00 504 | psp2AppVersion: 01.00 505 | psp2TVBootMode: 0 506 | psp2EnterButtonAssignment: 2 507 | psp2TVDisableEmu: 0 508 | psp2AllowTwitterDialog: 1 509 | psp2Upgradable: 0 510 | psp2HealthWarning: 0 511 | psp2UseLibLocation: 0 512 | psp2InfoBarOnStartup: 0 513 | psp2InfoBarColor: 0 514 | psp2UseDebugIl2cppLibs: 0 515 | psmSplashimage: {fileID: 0} 516 | splashScreenBackgroundSourceLandscape: {fileID: 0} 517 | splashScreenBackgroundSourcePortrait: {fileID: 0} 518 | spritePackerPolicy: 519 | webGLMemorySize: 256 520 | webGLExceptionSupport: 1 521 | webGLNameFilesAsHashes: 0 522 | webGLDataCaching: 0 523 | webGLDebugSymbols: 0 524 | webGLEmscriptenArgs: 525 | webGLModulesDirectory: 526 | webGLTemplate: APPLICATION:Default 527 | webGLAnalyzeBuildSize: 0 528 | webGLUseEmbeddedResources: 0 529 | webGLUseWasm: 0 530 | webGLCompressionFormat: 1 531 | scriptingDefineSymbols: {} 532 | platformArchitecture: {} 533 | scriptingBackend: {} 534 | incrementalIl2cppBuild: {} 535 | additionalIl2CppArgs: 536 | apiCompatibilityLevelPerPlatform: {} 537 | m_RenderingPath: 1 538 | m_MobileRenderingPath: 1 539 | metroPackageName: UnitySAM 540 | metroPackageVersion: 541 | metroCertificatePath: 542 | metroCertificatePassword: 543 | metroCertificateSubject: 544 | metroCertificateIssuer: 545 | metroCertificateNotAfter: 0000000000000000 546 | metroApplicationDescription: UnitySAM 547 | wsaImages: {} 548 | metroTileShortName: 549 | metroCommandLineArgsFile: 550 | metroTileShowName: 0 551 | metroMediumTileShowName: 0 552 | metroLargeTileShowName: 0 553 | metroWideTileShowName: 0 554 | metroDefaultTileSize: 1 555 | metroTileForegroundText: 2 556 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} 557 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, 558 | a: 1} 559 | metroSplashScreenUseBackgroundColor: 0 560 | platformCapabilities: {} 561 | metroFTAName: 562 | metroFTAFileTypes: [] 563 | metroProtocolName: 564 | metroCompilationOverrides: 1 565 | tizenProductDescription: 566 | tizenProductURL: 567 | tizenSigningProfileName: 568 | tizenGPSPermissions: 0 569 | tizenMicrophonePermissions: 0 570 | tizenDeploymentTarget: 571 | tizenDeploymentTargetType: -1 572 | tizenMinOSVersion: 1 573 | n3dsUseExtSaveData: 0 574 | n3dsCompressStaticMem: 1 575 | n3dsExtSaveDataNumber: 0x12345 576 | n3dsStackSize: 131072 577 | n3dsTargetPlatform: 2 578 | n3dsRegion: 7 579 | n3dsMediaSize: 0 580 | n3dsLogoStyle: 3 581 | n3dsTitle: GameName 582 | n3dsProductCode: 583 | n3dsApplicationId: 0xFF3FF 584 | stvDeviceAddress: 585 | stvProductDescription: 586 | stvProductAuthor: 587 | stvProductAuthorEmail: 588 | stvProductLink: 589 | stvProductCategory: 0 590 | XboxOneProductId: 591 | XboxOneUpdateKey: 592 | XboxOneSandboxId: 593 | XboxOneContentId: 594 | XboxOneTitleId: 595 | XboxOneSCId: 596 | XboxOneGameOsOverridePath: 597 | XboxOnePackagingOverridePath: 598 | XboxOneAppManifestOverridePath: 599 | XboxOnePackageEncryption: 0 600 | XboxOnePackageUpdateGranularity: 2 601 | XboxOneDescription: 602 | XboxOneLanguage: 603 | - enus 604 | XboxOneCapability: [] 605 | XboxOneGameRating: {} 606 | XboxOneIsContentPackage: 0 607 | XboxOneEnableGPUVariability: 0 608 | XboxOneSockets: {} 609 | XboxOneSplashScreen: {fileID: 0} 610 | XboxOneAllowedProductIds: [] 611 | XboxOnePersistentLocalStorageSize: 0 612 | xboxOneScriptCompiler: 0 613 | vrEditorSettings: 614 | daydream: 615 | daydreamIconForeground: {fileID: 0} 616 | daydreamIconBackground: {fileID: 0} 617 | cloudServicesEnabled: {} 618 | facebookSdkVersion: 7.9.1 619 | apiCompatibilityLevel: 2 620 | cloudProjectId: 621 | projectName: 622 | organizationId: 623 | cloudEnabled: 0 624 | enableNewInputSystem: 0 625 | -------------------------------------------------------------------------------- /UnitySAM/ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 5.6.6f2 2 | -------------------------------------------------------------------------------- /UnitySAM/ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 5 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Fastest 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 15 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | blendWeights: 1 21 | textureQuality: 1 22 | anisotropicTextures: 0 23 | antiAliasing: 0 24 | softParticles: 0 25 | softVegetation: 0 26 | realtimeReflectionProbes: 0 27 | billboardsFaceCameraPosition: 0 28 | vSyncCount: 0 29 | lodBias: 0.3 30 | maximumLODLevel: 0 31 | particleRaycastBudget: 4 32 | asyncUploadTimeSlice: 2 33 | asyncUploadBufferSize: 4 34 | excludedTargetPlatforms: [] 35 | - serializedVersion: 2 36 | name: Fast 37 | pixelLightCount: 0 38 | shadows: 0 39 | shadowResolution: 0 40 | shadowProjection: 1 41 | shadowCascades: 1 42 | shadowDistance: 20 43 | shadowNearPlaneOffset: 3 44 | shadowCascade2Split: 0.33333334 45 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 46 | blendWeights: 2 47 | textureQuality: 0 48 | anisotropicTextures: 0 49 | antiAliasing: 0 50 | softParticles: 0 51 | softVegetation: 0 52 | realtimeReflectionProbes: 0 53 | billboardsFaceCameraPosition: 0 54 | vSyncCount: 0 55 | lodBias: 0.4 56 | maximumLODLevel: 0 57 | particleRaycastBudget: 16 58 | asyncUploadTimeSlice: 2 59 | asyncUploadBufferSize: 4 60 | excludedTargetPlatforms: [] 61 | - serializedVersion: 2 62 | name: Simple 63 | pixelLightCount: 1 64 | shadows: 1 65 | shadowResolution: 0 66 | shadowProjection: 1 67 | shadowCascades: 1 68 | shadowDistance: 20 69 | shadowNearPlaneOffset: 3 70 | shadowCascade2Split: 0.33333334 71 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 72 | blendWeights: 2 73 | textureQuality: 0 74 | anisotropicTextures: 1 75 | antiAliasing: 0 76 | softParticles: 0 77 | softVegetation: 0 78 | realtimeReflectionProbes: 0 79 | billboardsFaceCameraPosition: 0 80 | vSyncCount: 1 81 | lodBias: 0.7 82 | maximumLODLevel: 0 83 | particleRaycastBudget: 64 84 | asyncUploadTimeSlice: 2 85 | asyncUploadBufferSize: 4 86 | excludedTargetPlatforms: [] 87 | - serializedVersion: 2 88 | name: Good 89 | pixelLightCount: 2 90 | shadows: 2 91 | shadowResolution: 1 92 | shadowProjection: 1 93 | shadowCascades: 2 94 | shadowDistance: 40 95 | shadowNearPlaneOffset: 3 96 | shadowCascade2Split: 0.33333334 97 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 98 | blendWeights: 2 99 | textureQuality: 0 100 | anisotropicTextures: 1 101 | antiAliasing: 0 102 | softParticles: 0 103 | softVegetation: 1 104 | realtimeReflectionProbes: 1 105 | billboardsFaceCameraPosition: 1 106 | vSyncCount: 1 107 | lodBias: 1 108 | maximumLODLevel: 0 109 | particleRaycastBudget: 256 110 | asyncUploadTimeSlice: 2 111 | asyncUploadBufferSize: 4 112 | excludedTargetPlatforms: [] 113 | - serializedVersion: 2 114 | name: Beautiful 115 | pixelLightCount: 3 116 | shadows: 2 117 | shadowResolution: 2 118 | shadowProjection: 1 119 | shadowCascades: 2 120 | shadowDistance: 70 121 | shadowNearPlaneOffset: 3 122 | shadowCascade2Split: 0.33333334 123 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 124 | blendWeights: 4 125 | textureQuality: 0 126 | anisotropicTextures: 2 127 | antiAliasing: 2 128 | softParticles: 1 129 | softVegetation: 1 130 | realtimeReflectionProbes: 1 131 | billboardsFaceCameraPosition: 1 132 | vSyncCount: 1 133 | lodBias: 1.5 134 | maximumLODLevel: 0 135 | particleRaycastBudget: 1024 136 | asyncUploadTimeSlice: 2 137 | asyncUploadBufferSize: 4 138 | excludedTargetPlatforms: [] 139 | - serializedVersion: 2 140 | name: Fantastic 141 | pixelLightCount: 4 142 | shadows: 2 143 | shadowResolution: 2 144 | shadowProjection: 1 145 | shadowCascades: 4 146 | shadowDistance: 150 147 | shadowNearPlaneOffset: 3 148 | shadowCascade2Split: 0.33333334 149 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 150 | blendWeights: 4 151 | textureQuality: 0 152 | anisotropicTextures: 2 153 | antiAliasing: 2 154 | softParticles: 1 155 | softVegetation: 1 156 | realtimeReflectionProbes: 1 157 | billboardsFaceCameraPosition: 1 158 | vSyncCount: 1 159 | lodBias: 2 160 | maximumLODLevel: 0 161 | particleRaycastBudget: 4096 162 | asyncUploadTimeSlice: 2 163 | asyncUploadBufferSize: 4 164 | excludedTargetPlatforms: [] 165 | m_PerPlatformDefaultQuality: 166 | Android: 2 167 | Nintendo 3DS: 5 168 | Nintendo Switch: 5 169 | PS4: 5 170 | PSM: 5 171 | PSP2: 2 172 | Samsung TV: 2 173 | Standalone: 5 174 | Tizen: 2 175 | Web: 5 176 | WebGL: 3 177 | WiiU: 5 178 | Windows Store Apps: 5 179 | XboxOne: 5 180 | iPhone: 2 181 | tvOS: 2 182 | -------------------------------------------------------------------------------- /UnitySAM/ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /UnitySAM/ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.33333334 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /UnitySAM/ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | m_Enabled: 0 7 | m_TestMode: 0 8 | m_TestEventUrl: 9 | m_TestConfigUrl: 10 | m_TestInitMode: 0 11 | CrashReportingSettings: 12 | m_EventUrl: https://perf-events.cloud.unity3d.com/api/events/crashes 13 | m_Enabled: 0 14 | m_CaptureEditorExceptions: 1 15 | UnityPurchasingSettings: 16 | m_Enabled: 0 17 | m_TestMode: 0 18 | UnityAnalyticsSettings: 19 | m_Enabled: 0 20 | m_InitializeOnStartup: 1 21 | m_TestMode: 0 22 | m_TestEventUrl: 23 | m_TestConfigUrl: 24 | UnityAdsSettings: 25 | m_Enabled: 0 26 | m_InitializeOnStartup: 1 27 | m_TestMode: 0 28 | m_EnabledPlatforms: 4294967295 29 | m_IosGameId: 30 | m_AndroidGameId: 31 | PerformanceReportingSettings: 32 | m_Enabled: 0 33 | -------------------------------------------------------------------------------- /demos/Guess Number.bat: -------------------------------------------------------------------------------- 1 | cd .. 2 | @echo off 3 | rem color 0a 4 | 5 | :MAIN 6 | cls 7 | set number=%random:~0,2% 8 | rem goto WINNER 9 | ping localhost -n 1 >nul 10 | echo Sam's NUMBER GUESSING GAME! 11 | SAM "Sam's NUMBER GUESSING GAME!" 12 | ping localhost -n 1 >nul 13 | echo. 14 | ping localhost -n 1 >nul 15 | echo. 16 | ping localhost -n 1 >nul 17 | echo. 18 | ping localhost -n 1 >nul 19 | echo It's easy to play! 20 | SAM "It's easy to play!" 21 | ping localhost -n 1 >nul 22 | echo. 23 | ping localhost -n 1 >nul 24 | echo The computer generates a number between 1 and 100, and you try to guess it! 25 | SAM "The computer generates a number between 1 and one hundred, and you try to guess it!" 26 | ping localhost -n 1 >nul 27 | echo. 28 | ping localhost -n 1 >nul 29 | echo. 30 | ping localhost -n 1 >nul 31 | echo. 32 | echo "To begin the game, type your name and press Enter": 33 | SAM "To begin the game, type your name and press Enter": 34 | set /p web= 35 | :HOME 36 | cls 37 | echo Well %web% Now GUESS THE NUMBER! 38 | SAM Well 39 | SAM %web% 40 | SAM "Now GUESS THE NUMBER!" 41 | echo. 42 | echo. 43 | set /p guess= 44 | echo 45 | if %guess% LSS %number% goto LOWER 46 | if %guess% GTR %number% goto HIGHER 47 | if %guess% EQU %number% goto WINNER 48 | :LOWER 49 | cls 50 | echo Your guess is lower than the number! 51 | SAM "Your guess is lower than the number!" 52 | echo. 53 | echo. 54 | pause 55 | goto HOME 56 | :HIGHER 57 | cls 58 | echo Your guess is higher than the number! 59 | SAM "Your guess is higher than the number!" 60 | echo. 61 | echo. 62 | pause 63 | goto HOME 64 | :WINNER 65 | cls 66 | echo. 67 | SAM -speed 55 -pitch 92 -throat 128 -mouth 128 "Ha ha ha ha ha ha ha? Ha ha ha ha ha ha ha!" 68 | echo Congratulations %web%! You guessed the number correctly! 69 | SAM "Congratulations" 70 | SAM %web%! 71 | SAM "You guessed the number correctly!" 72 | echo. 73 | echo. 74 | echo The number was %number% 75 | SAM "The number was" 76 | SAM %number% 77 | echo Thanks for playing! 78 | SAM "Thanks for playing?" 79 | SAM %web%! 80 | SAM "Thanks for playing." 81 | ping localhost -n 2 >nul 82 | exit 83 | -------------------------------------------------------------------------------- /demos/demo1.bat: -------------------------------------------------------------------------------- 1 | cd .. 2 | sam -debug to bee or not to bee, that is the question 3 | sam -phonetic "MAY4 NEYM IHZ SAE4M." -------------------------------------------------------------------------------- /demos/demo2.bat: -------------------------------------------------------------------------------- 1 | cd .. 2 | 3 | sam -pitch 64 -speed 72 -phonetic "/HEH4LOW DHEHR. YUW4 NOW MIY4Y, AY4 AEM SAE5M," 4 | sam -pitch 64 -speed 72 -phonetic "DHAH SAO4FTWEHR MAW5TH" 5 | sam -pitch 64 -speed 72 -phonetic "FOHR YOHR KAA4MIXDOH6R SIH4KSTIYFOH6R KUMPYUW4TER." 6 | sam -pitch 64 -speed 72 -phonetic "AY4 KUHD AO4LWEYZ DUW LAA3TS AHV AHMEY4ZIHNX THIHNXGZ." 7 | sam -pitch 64 -speed 35 -phonetic "AY5 KUHD TAO5K VEH4RIY KWIH4KLIY WHEHN AY WAA4NTIHD." 8 | sam -pitch 64 -speed 140 -phonetic "AE4ND AY KUHD TAO4K VEH3RIY SLOW4LIY TUW." 9 | sam -pitch 30 -speed 72 -phonetic "AY5 KUHD SPIY5K IHNAH VEH3RIY /HAY5 VOYS." 10 | sam -pitch 169 -speed 72 -phonetic "AE4ND AY KUHD SPIY5K RIY3L LOW." 11 | sam -pitch 64 -speed 72 -phonetic "BAHT NAW4 AY KAEN DUW5 SAH4MPTHIHNX IY5VUN MOH4R AHMEY3ZIHNX." 12 | 13 | sam -mouth 110 -throat 160 -pitch 64 -speed 72 -phonetic "AY4 KAEN CHEY4NJ MAY VOY5S KUMPLIY3TLIY.Q." 14 | sam -mouth 110 -throat 160 -pitch 64 -speed 72 -phonetic "AY4 KAEN BIY5 AH LIH4TUL EH5LF /HUW TAO5KS LAYK DHIH5S. OH3R." 15 | 16 | sam -mouth 190 -throat 190 -pitch 60 -speed 42 -phonetic "AY5 KAEN BIHKAH5M AH STREY4NJ EY4LIYUN." 17 | sam -mouth 190 -throat 190 -pitch 60 -speed 42 -phonetic "YUW5 KAEN YUW4Z DHIHS VOY5S IHN AH SPEY4S GEY5M." 18 | 19 | sam -mouth 110 -throat 105 -pitch 72 -speed 82 -phonetic "OHR /HAW5 AHBAW5T DHIH3S STAH4FIY LIH5TUL KEH4RIXKTER." 20 | sam -mouth 110 -throat 105 -pitch 72 -speed 82 -phonetic "EY SIH4LIY VOY5S FOHR AH KUMPYUW4TER." 21 | 22 | sam -mouth 145 -throat 145 -pitch 32 -speed 72 -phonetic "AY5 KAEN TAO5K LAYK AH LIH5TUL OH5LD LEY5DIY." 23 | sam -mouth 145 -throat 145 -pitch 32 -speed 72 -phonetic "NAAT MEH5NIY KUMPYUW5TERZ KAEN DUW DHIH4S - SWIY5TIY." 24 | 25 | sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "AE4ND AEZ AH MAE5TER AHV FAE4KT," 26 | sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "AY4 KAEN BIYKAH5M DHAX LEY4TIXST MUW4VIY /HIY4ROW - AEND SEH8EY4," 27 | 28 | sam -mouth 150 -throat 200 -pitch 58 -speed 120 -phonetic "IY4IY6 TTIY6 -FOW5N /HOW5MM. IY4IY6 TTIY6 - FOW5N /HOW5MM." 29 | 30 | sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "DHEH4RZ NOW4 TEH5LIHNX WHAH5T SAE5M WIHL DUW NEH5KST." 31 | -------------------------------------------------------------------------------- /demos/demo3.bat: -------------------------------------------------------------------------------- 1 | cd .. 2 | sam -pitch 64 -speed 74 -phonetic "/HEHLOW3 EH5VRIXWAHN. IHT SHUH4R IHZ NAY3S - TAX BIY /HIY4R TUH7DEY." 3 | sam -pitch 64 -speed 74 -phonetic "AY3 AEM SAE4M -" 4 | sam -pitch 64 -speed 74 -phonetic "DHAX BRAE4ND NUW5 VOY4S FOHR DHAX KAA4MIXDOH6R" 5 | sam -pitch 64 -speed 74 -phonetic "SIH4KSTIYFOH6R KUMPYUW4TER." 6 | sam -pitch 64 -speed 74 -phonetic "AY4 AEM DHAX MOW5ST VER4SIXTUL -" 7 | sam -pitch 64 -speed 74 -phonetic "AH5NDERSTAE4NDIXBUL SPIY5CH SIH3NTHAXSAY7ZER" 8 | sam -pitch 64 -speed 74 -phonetic "AAN DHAX MAA3RKIXT." 9 | sam -pitch 64 -speed 74 -phonetic "AE4AE7ND- AY4 AEM DHAX LOHOW4EHST PRAY4ST- AHV DHEHM AO4UL." 10 | sam -pitch 64 -speed 74 -phonetic "BAH6T WHAH4T KAEN YUW DUW3 WHIHTH MIYIY." 11 | sam -pitch 64 -speed 74 -phonetic "WAY7 YUW3 KAEN PUH5T MIY-IH5NTUX YOHR OW7N PROH3GRAEMZ." 12 | sam -pitch 64 -speed 74 -phonetic "/HAW4 WUHD YUW4 LAYK YOHR BIH3ZNIXS SAO5FTWEHR TUX SEY-" 13 | sam -pitch 64 -speed 74 -phonetic "PLIY4Z EH5NTER DHIH4S WIY6KS PER3CHAHSIXZ." 14 | sam -pitch 64 -speed 74 -phonetic "OH3ER- IHMAE3JIXN AEN EHDVEH4NCHER GEY6M DHAET DAH6Z DHIH4S." 15 | sam -pitch 64 -speed 74 -phonetic "DHIY EH3LF WAHZ KAE3PCHERD-BAY DHAX JAY3IXNT." 16 | sam -pitch 64 -speed 74 -phonetic "/HIY BIHGAE5N TUX KRAA3IY-AEND /HIY SEH4D." 17 | 18 | sam -pitch 31 -speed 72 -phonetic "OH5OW7 NAX5OW. PLIY5Z DOWNT /HER5T MIY-MIH6STER JAYIXNT?" 19 | 20 | sam -pitch 64 -speed 76 -phonetic "BAH6T DHAX JAY4IXNT WAHZ VEH3RIY MIY6N-" 21 | sam -pitch 64 -speed 76 -phonetic "AEND /HIY4 OW3NLIY SEHD-" 22 | 23 | sam -pitch 120 -speed 80 -phonetic "/HOW2- /HOW4- /HOW." 24 | 25 | sam -pitch 64 -speed 72 -phonetic "DHEH5R IHZ NOW LIH3MIXT-TUX DHAX PAA4SAXBUL AE5PLIXKEY3SHUNZ-" 26 | sam -pitch 64 -speed 72 -phonetic "AHV SPIY4CH IHN YOH7R PROH3GRAEMZ." 27 | sam -pitch 64 -speed 72 -phonetic "AO3LSOW7W3- AY4 AEM VEH3RIY IY4ZIY TUX YUW4Z." 28 | sam -pitch 64 -speed 72 -phonetic "EH2NIYWAH6N KAEN AE5DSPIY5CH-TUX6 AH BEY4SIHKQPROH4GRAEM." 29 | sam -pitch 64 -speed 72 -phonetic "AY4 KAEN IY3VIXN TAOK VEH4RIY KWIH4KLIY." 30 | sam -pitch 64 -speed 72 -phonetic "LIH4SUN TUX6 DHIH3S WAHN." 31 | 32 | sam -speed 30 -phonetic "PIY4TER PAY3PER- PIH4KT AH PEH4K AHV PIH4KULD PEH4PERZ." 33 | 34 | sam -speed 28 -phonetic "/HAW3 MEHNIY PEH4KS AHV PIH4KULD PEH4PERZ-DIHD PIY4TER PAY3PER PIH6K." 35 | 36 | sam -speed 100 -phonetic "QQQQ WWAW7IY1IY3IY. DHAE3T WHAHZ AH TAH4FIY." 37 | 38 | sam -speed 72 -phonetic "EH2NIYWEY6- YUW4 GEHT DHIY AYDIY5AH." 39 | sam -speed 72 -phonetic "SAE3M IHZ DHIY MOW3STEHKSAY4TIHNX NUW4 PRAA4DAHKT - AHV DHIHS YIY4R." 40 | sam -speed 72 -phonetic "SOH3OW7-/HAW4AHBAW3T IHT. WOH3NT YUW PLIY2Z TEY6KMIY /HOW6M?" 41 | sam -speed 72 -phonetic "Q SAE4M IHZ /HIY3R TUX STEY4IY." 42 | sam -speed 72 -phonetic "THAE2NXKS FOHR LIH4SUNIHNX EHVRIXBAH5DIY." 43 | sam -speed 72 -phonetic "AY /HOW3P YUW EHNJOY4D-MAYLIH4TUL TAOK." 44 | 45 | -------------------------------------------------------------------------------- /demos/demo4.bat: -------------------------------------------------------------------------------- 1 | cd .. 2 | sam Four score and seven years ago. 3 | sam Our fathers brought forth on this continent, a new nation. 4 | sam Conceived in Libberty. And dedicated to the prop-position that all men are created equal. 5 | 6 | sam Now we are engaged in a great civvil war! Testing whether that nation, or any nation. 7 | sam So conceived, and so dedicated, can long endure. 8 | -------------------------------------------------------------------------------- /demos/demo5.bat: -------------------------------------------------------------------------------- 1 | cd .. 2 | 3 | sam -mouth 110 -throat 160 -pitch 64 -speed 72 -phonetic "AY4 KAEN CHEY4NJ MAY VOY5S KUMPLIY3TLIY.Q." 4 | 5 | sam -mouth 150 -throat 200 -pitch 58 -speed 120 "Eee Tea! Phone home." 6 | sam -mouth 150 -throat 200 -pitch 58 -speed 120 "Eee Tea? Phone home?" 7 | 8 | sam -mouth 150 -throat 200 -pitch 58 -speed 140 "Ha ha ha ha ha ha ha!" 9 | sam -mouth 150 -throat 100 -pitch 58 -speed 140 "Ha ha ha ha ha ha ha?" 10 | 11 | sam -speed 140 -pitch 64 -throat 110 -mouth 160 "Ho ha ha ha!" 12 | sam -speed 140 -pitch 60 -throat 190 -mouth 190 "Ha ha ha ha ha ha ha?" 13 | 14 | sam -speed 140 -pitch 72 -throat 110 -mouth 105 "He he ha ha he he ha!" 15 | sam -speed 140 -pitch 32 -throat 145 -mouth 145 "Ha ha ho he he ha?" 16 | 17 | sam -speed 140 -pitch 64 -throat 150 -mouth 200 "Ha ha ho ho ha ho?" 18 | sam -speed 35 -pitch 92 -throat 128 -mouth 128 "Ha ha ha ha ha ha ha? Ha ha ha ha ha ha ha!" 19 | 20 | sam That's not funny. 21 | 22 | -------------------------------------------------------------------------------- /demos/demo6.bat: -------------------------------------------------------------------------------- 1 | cd .. 2 | sam Hello my name is SAM. 3 | sam I will sing the national anthem of the united states of America. 4 | sam The star spangled banner! 5 | sam -sing -speed 40 -pitch 64 -phonetic ohohoh 6 | sam -sing -speed 40 -pitch 76 -phonetic ohohoh 7 | sam -sing -speed 40 -pitch 96 -phonetic sehehehehehehehehehey 8 | sam -sing -speed 40 -pitch 76 -phonetic kaeaeaeaeaeaeaeaeaen 9 | sam -sing -speed 40 -pitch 64 -phonetic yuxuxuxuxuxuxw 10 | sam -sing -speed 40 -pitch 48 -phonetic siyiyiyiyiyiyiyiyiyiyiyiyiyiyiyiyiyiy 11 | sam -sing -speed 40 -pitch 38 -phonetic baaaaay 12 | sam -sing -speed 40 -pitch 42 -phonetic dhaaaxaxaxax 13 | sam -sing -speed 40 -pitch 48 -phonetic daoaoaoaoaoaoaonz 14 | sam -sing -speed 40 -pitch 76 -phonetic ererererererer 15 | sam -sing -speed 40 -pitch 68 -phonetic liyiyiyiyiyiyiyiyiy 16 | sam -sing -speed 40 -pitch 64 -phonetic laaaaaaaaaaaaaaaaaaaaaaaaayt 17 | sam -sing -speed 40 -pitch 64 -phonetic whahahaht 18 | sam -sing -speed 40 -pitch 64 -phonetic sohohuw 19 | sam -sing -speed 40 -pitch 38 -phonetic praaaaaaaaaaaaaaaauwd 20 | sam -sing -speed 40 -pitch 42 -phonetic liyiyiy 21 | sam -sing -speed 40 -pitch 48 -phonetic wiyiyiyiyiyiyiyiyiy 22 | sam -sing -speed 40 -pitch 51 -phonetic /heheheheheheheheheheheheheheheheheheyld 23 | sam -sing -speed 40 -pitch 56 -phonetic aeaeaeaet 24 | sam -sing -speed 40 -pitch 51 -phonetic dhaaaxaxaxax 25 | sam -sing -speed 40 -pitch 48 -phonetic twaaaaaaaaaaaaaaiy 26 | sam -sing -speed 40 -pitch 48 -phonetic laaaaaaaaaaaaiyts 27 | sam -sing -speed 40 -pitch 64 -phonetic laeaeaeaeaeaeaeaeaest 28 | sam -sing -speed 40 -pitch 76 -phonetic gliyiyiyiyiyiyiyiyiym 29 | sam -sing -speed 40 -pitch 96 -phonetic mihihihihihihihihihihnx 30 | sam -sing -speed 40 -pitch 64 -phonetic /huxuxuxuxuxuxuxuxuxuxwz 31 | sam -sing -speed 40 -pitch 76 -phonetic braoaoaod 32 | sam -sing -speed 40 -pitch 96 -phonetic straaaaaaaaaaaaiyps 33 | sam -sing -speed 40 -pitch 76 -phonetic aeaeaeaeaeaeaeaeaeaend 34 | sam -sing -speed 40 -pitch 64 -phonetic braaaaaaaaaaaaaaiyt 35 | sam -sing -speed 40 -pitch 48 -phonetic staaaaaaaaaaaaaaaaaaaaaaaaaarz 36 | sam -sing -speed 40 -pitch 38 -phonetic thruxuxw 37 | sam -sing -speed 40 -pitch 42 -phonetic dhaaaxaxaxax 38 | sam -sing -speed 40 -pitch 48 -phonetic pehehehehehehehehehehr 39 | sam -sing -speed 40 -pitch 76 -phonetic rixixixixixixixixixixixixl 40 | sam -sing -speed 40 -pitch 68 -phonetic lahahahahahahahahahs 41 | sam -sing -speed 40 -pitch 64 -phonetic faaaaaaaaaaaaaaaaaaaaaaaaaaiyt 42 | sam -sing -speed 40 -pitch 64 -phonetic ohohohr 43 | sam -sing -speed 40 -pitch 64 -phonetic dhaaaxaxaxax 44 | sam -sing -speed 40 -pitch 38 -phonetic raeaeaeaeaeaeaeaeaeaeaeaem 45 | sam -sing -speed 40 -pitch 42 -phonetic paaaarts 46 | sam -sing -speed 40 -pitch 48 -phonetic wiyiyiyiyiyiyiyiyiy 47 | sam -sing -speed 40 -pitch 51 -phonetic waaaaaaaaaaaaaaaaaaaaaaaaaachd 48 | sam -sing -speed 40 -pitch 56 -phonetic werer 49 | sam -sing -speed 40 -pitch 51 -phonetic sohohw 50 | sam -sing -speed 40 -pitch 48 -phonetic gaeaeaeaeaeaeaeaeaeael 51 | sam -sing -speed 40 -pitch 48 -phonetic lixixixixixixixixixixixixixnt 52 | sam -sing -speed 40 -pitch 64 -phonetic liyiyiyiyiyiyiyiyiy 53 | sam -sing -speed 40 -pitch 76 -phonetic striyiyiyiyiyiyiyiyiym 54 | sam -sing -speed 40 -pitch 96 -phonetic mihihihihihihihihihnx 55 | sam -sing -speed 40 -pitch 38 -phonetic aeaeaeaeaend 56 | sam -sing -speed 40 -pitch 38 -phonetic dhaaaxaxaxax 57 | sam -sing -speed 40 -pitch 38 -phonetic raaaaaaaaaaaak 58 | sam -sing -speed 40 -pitch 36 -phonetic kixixixixixixixixixixixts 59 | sam -sing -speed 40 -pitch 32 -phonetic rehehehehehehehehehd 60 | sam -sing -speed 40 -pitch 32 -phonetic gleheheheheheheheheheheheheheheherer 61 | sam -sing -speed 40 -pitch 36 -phonetic dhaaaxaxaxax 62 | sam -sing -speed 40 -pitch 38 -phonetic baaaamz 63 | sam -sing -speed 40 -pitch 42 -phonetic bererererererst 64 | sam -sing -speed 40 -pitch 38 -phonetic tihihihihihihihihihnx 65 | sam -sing -speed 40 -pitch 36 -phonetic ihihihihihihihihihihn 66 | sam -sing -speed 40 -pitch 36 -phonetic eheheheheheheheheheheheheheheheheheyr 67 | sam -sing -speed 40 -pitch 36 -phonetic geheheheyv 68 | sam -sing -speed 40 -pitch 38 -phonetic pruxuxuxuxuxuxuxuxuxuxuxuxwf 69 | sam -sing -speed 40 -pitch 42 -phonetic thruxuxw 70 | sam -sing -speed 40 -pitch 48 -phonetic dhaaaxaxax 71 | sam -sing -speed 40 -pitch 51 -phonetic naaaaaaaaaaaaaaaaaaaaaaayiyt 72 | sam -sing -speed 40 -pitch 56 -phonetic dhaeaeaeaet 73 | sam -sing -speed 40 -pitch 51 -phonetic aaaaaauwr 74 | sam -sing -speed 40 -pitch 48 -phonetic flaeaeaeaeaeaeaeaeaeg 75 | sam -sing -speed 40 -pitch 76 -phonetic wahahahahahahahahahz 76 | sam -sing -speed 40 -pitch 68 -phonetic stihihihihihihihihihl 77 | sam -sing -speed 40 -pitch 64 -phonetic dhehehehehehehehehehehehehehehehehehehehr 78 | sam -sing -speed 40 -pitch 64 -phonetic ohohohohohohow 79 | sam -sing -speed 40 -pitch 48 -phonetic sehehehehehehehehehey 80 | sam -sing -speed 40 -pitch 48 -phonetic dahahahahahahahahahz 81 | sam -sing -speed 40 -pitch 48 -phonetic dhaeaeae 82 | sam -sing -speed 40 -pitch 51 -phonetic aeaeaet 83 | sam -sing -speed 40 -pitch 56 -phonetic staaaaaaaaaaaar 84 | sam -sing -speed 40 -pitch 56 -phonetic spehehehehehehehehehiynx 85 | sam -sing -speed 40 -pitch 56 -phonetic gaxaxaxaxaxaxaxaxaxaxaxaxld 86 | sam -sing -speed 40 -pitch 42 -phonetic baeaeaeaeaeaeaeaeaen 87 | sam -sing -speed 40 -pitch 36 -phonetic nerer 88 | sam -sing -speed 40 -pitch 38 -phonetic ererer 89 | sam -sing -speed 40 -pitch 42 -phonetic yeheheh 90 | sam -sing -speed 40 -pitch 48 -phonetic eheheheht 91 | sam -sing -speed 40 -pitch 48 -phonetic weheheheheheheheheheheh 92 | sam -sing -speed 40 -pitch 51 -phonetic ehehehehehehehiyiyiyv 93 | sam -sing -speed 40 -pitch 64 -phonetic ohohohr 94 | sam -sing -speed 40 -pitch 64 -phonetic dhaaaxaxaxax 95 | sam -sing -speed 40 -pitch 48 -phonetic laeaeaeaeaeaeaeaeaeaeaeae 96 | sam -sing -speed 40 -pitch 42 -phonetic aeaeaend 97 | sam -sing -speed 40 -pitch 38 -phonetic ahahahv 98 | sam -sing -speed 40 -pitch 36 -phonetic dhaaaxaxaxax 99 | sam -sing -speed 40 -pitch 32 -phonetic friyiyiyiyiyiyiyiyiyiyiyiyiyiyiyiyiyiy 100 | sam -sing -speed 40 -pitch 48 -phonetic aeaeaend 101 | sam -sing -speed 40 -pitch 42 -phonetic dhaaaxaxaxax 102 | sam -sing -speed 40 -pitch 38 -phonetic /hohohohohohohohohowm 103 | sam -sing -speed 40 -pitch 36 -phonetic ahahahahv 104 | sam -sing -speed 40 -pitch 42 -phonetic dhaaaxaxaxaxaxaxaxaxaxaxaxaxax 105 | sam -sing -speed 40 -pitch 48 -phonetic brehehehehehehehehehehiyiyiyv 106 | -------------------------------------------------------------------------------- /demos/demo7.bat: -------------------------------------------------------------------------------- 1 | cd .. 2 | sam -sing -pitch 96 -speed 50 It's Jazzy Jazzy Jazzy 3 | sam -sing -pitch 68 -speed 50 Jazzy Jazzy Jazzy 4 | sam -sing -pitch 48 -speed 50 Jazzy Jazzy Jazzy 5 | sam -sing -pitch 32 -speed 50 Jazzy Jazzy Jazzy 6 | sam -sing -pitch 96 -speed 50 Jazzy 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /demos/demo8.bat: -------------------------------------------------------------------------------- 1 | cd .. 2 | sam More than ever before. Americans are suff-er-ing from back, problems. 3 | sam Back. tach-sis. 4 | sam Back. rent? 5 | sam Back. car payments. 6 | sam What we need is to get back. to the basics. 7 | 8 | sam And say chilldren. "What does it all mean." 9 | 10 | sam And remember. 11 | sam If you want to see a comic strip? You should see me in the shouwer. 12 | 13 | -------------------------------------------------------------------------------- /demos/demo9.bat: -------------------------------------------------------------------------------- 1 | cd .. 2 | sam -mouth 145 -throat 135 -pitch 40 -speed 72 -phonetic "AY5 KAEN TAO5K LAYK AH LIH5TUL OH5LD LEY5DIY.- SWIY5TIY." 3 | 4 | sam -mouth 145 -throat 125 -pitch 40 -speed 72 "You can do anything, but not everything." 5 | sam -mouth 135 -throat 135 -pitch 35 -speed 72 "The richest man is not he who has the most. But he who wants the least." 6 | sam -mouth 145 -throat 135 -pitch 40 -speed 72 "To the man who only has a hammer, everything he encounters looks like a nail." 7 | sam -mouth 145 -throat 125 -pitch 35 -speed 72 "Before I got married I had six ideas about bringing up kids; now I have six kids. And no idea?" 8 | sam -mouth 135 -throat 135 -pitch 40 -speed 72 "Always forgive your enemies. Nothing annoys them more." 9 | sam -mouth 145 -throat 125 -pitch 35 -speed 72 "All people are frauds. The only difference between them is that some admit it. I myself totally dee-nigh. it." 10 | sam -mouth 135 -throat 135 -pitch 40 -speed 72 "I do not mind what Con-gress does. As long as they do not do it. in the streets. And frighten the kids!" 11 | 12 | sam -speed 55 -pitch 92 -throat 128 -mouth 128 "Ha ha ha ha ha ha ha? Ha ha ha ha ha ha ha!" 13 | sam That's not funny grandma. 14 | 15 | sam -mouth 145 -throat 125 -pitch 40 -speed 72 "O.K. Let grandma take it from here." 16 | sam -mouth 145 -throat 135 -pitch 40 -speed 72 -phonetic "SWIY5TIY." 17 | 18 | -------------------------------------------------------------------------------- /demos/demoA.bat: -------------------------------------------------------------------------------- 1 | cd .. 2 | sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "/HEHLOH3OW. MAY4 NEY4M IHZ SAE4M." 3 | sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "AY4 EHM DHAX SAO4FTWEH4R SPIY4CH SIH3NTHAXSAY4ZER FOH4R DHAX KAA3MAXDOH4R KUMPYUWTER." 4 | 5 | sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "AY4 PROWDUW3S /HAY4 KWAALAXTIY SPIY4CH FRAXM SIHMPAXL FAXNEHTIHK IH3NPUHT." 6 | sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "OH3R, AY4 KAEN TRAE3NZLEYT IYNGLIHSH DAXREHKTLIY TUH SPIYCH." 7 | 8 | 9 | -------------------------------------------------------------------------------- /demos/demoB.bat: -------------------------------------------------------------------------------- 1 | cd .. 2 | sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "DHAX SOHLIHLAXKWIY FRAXM /HAE3MLEHT. BAY WIHLYAXM SHEY4KSPIHR." 3 | sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "TUH BIYIYIY2--OHR NAAT-TUH BIYIYIY." 4 | sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "DHAET IHZ THAX KWEHSCHAXN." 5 | sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "WEHDHER TIHZ NOHBLER IHN DHAX MAY4ND, TUH SAH4FER THAX SLIY3NGZ AEN3D" 6 | sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "EH4ROWZ AXV AWT REY3JAXS FOH4RCHAXN." 7 | 8 | sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "OHR TUH TEYK AARMZ AXGEHNST AX4 SIY AXV TRAH4BAXLZ." 9 | sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "AEND BAY AHPOWZIHNG, EHND DHEHM." -------------------------------------------------------------------------------- /demos/demoC.bat: -------------------------------------------------------------------------------- 1 | cd .. 2 | 3 | sam -mouth 145 -throat 125 -pitch 40 -speed 72 "This is the original file extracted from the Commodore 64." 4 | sam -mouth 145 -throat 125 -pitch 40 -speed 72 "O.K. Sam. You can take it from here." 5 | sam -mouth 145 -throat 135 -pitch 40 -speed 72 -phonetic "SWIY5TIY." 6 | 7 | sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "AY4 WIHL NAW4 KWOWT-DHAX GEHTIYZBERG AXDREH3S." 8 | sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "FOH4R SKOH4R AEND SEHVIXN YIH3RZ AXGOW- AAR FAA3DHERZ BRAAT FOHRTH" 9 | sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "AXPAAN DHIHS KAANTIHNEHNT- EY NUH NEY4SHAXN." 10 | sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "KAHNSIYVD IHN LIH4BERTIY, AEND DEH4DIHKEYTIHD TUH DHAX PRAAPAXSIHSHAXN" 11 | sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "DHAET AAL MEHN AAR KRIYEY4TAXD IYKWUL." 12 | sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "NAW4 WIY AAR EHNGEYJD IHN DHAX GREYT SIHVAXL WOHR. TEHSTIHNG WEHDHER" 13 | sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "DHAE4T NEY4SHAXN, OHR EH4NIY NEYSHAXN SOH KAXNSIYVD AEND SOH" 14 | sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "DEH4DAHKEYTIHD, KAEN LAONX EHNDUH6UHR." 15 | 16 | 17 | -------------------------------------------------------------------------------- /demos/demoD.bat: -------------------------------------------------------------------------------- 1 | cd .. 2 | sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "AY4 PLEHJ AXLIYJAXNS TUH DHAX FLAEG, AXV DHIY YUWNAYTEHD STEYTS" 3 | sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "AXV AXMEHRIYKAX. AEND TUH DHAX RIYPAHBLIHK FOHR WIHCH IHT STAENDZ." 4 | sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "WAHN NEYSHAXN AHNDER GAA5AA8D" 5 | sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "IHNDIHVIH4ZAXBAXL, WIHTH LIHBERTTIY, AEND JAH4STIHS- FOHR AAL." 6 | -------------------------------------------------------------------------------- /demos_bash/demo1.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ../sam -debug "to bee or not to bee, that is the question"; 4 | ../sam -phonetic "MAY4 NEYM IHZ SAE4M."; 5 | -------------------------------------------------------------------------------- /demos_bash/demo2.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ../sam -pitch 64 -speed 72 -phonetic "/HEH4LOW DHEHR. YUW4 NOW MIY4Y, AY4 AEM SAE5M,"; 4 | ../sam -pitch 64 -speed 72 -phonetic "DHAH SAO4FTWEHR MAW5TH"; 5 | ../sam -pitch 64 -speed 72 -phonetic "FOHR YOHR KAA4MIXDOH6R SIH4KSTIYFOH6R KUMPYUW4TER."; 6 | ../sam -pitch 64 -speed 72 -phonetic "AY4 KUHD AO4LWEYZ DUW LAA3TS AHV AHMEY4ZIHNX THIHNXGZ."; 7 | ../sam -pitch 64 -speed 35 -phonetic "AY5 KUHD TAO5K VEH4RIY KWIH4KLIY WHEHN AY WAA4NTIHD."; 8 | ../sam -pitch 64 -speed 140 -phonetic "AE4ND AY KUHD TAO4K VEH3RIY SLOW4LIY TUW."; 9 | ../sam -pitch 30 -speed 72 -phonetic "AY5 KUHD SPIY5K IHNAH VEH3RIY /HAY5 VOYS."; 10 | ../sam -pitch 169 -speed 72 -phonetic "AE4ND AY KUHD SPIY5K RIY3L LOW."; 11 | ../sam -pitch 64 -speed 72 -phonetic "BAHT NAW4 AY KAEN DUW5 SAH4MPTHIHNX IY5VUN MOH4R AHMEY3ZIHNX."; 12 | 13 | ../sam -mouth 110 -throat 160 -pitch 64 -speed 72 -phonetic "AY4 KAEN CHEY4NJ MAY VOY5S KUMPLIY3TLIY.Q."; 14 | ../sam -mouth 110 -throat 160 -pitch 64 -speed 72 -phonetic "AY4 KAEN BIY5 AH LIH4TUL EH5LF /HUW TAO5KS LAYK DHIH5S. OH3R."; 15 | 16 | ../sam -mouth 190 -throat 190 -pitch 60 -speed 42 -phonetic "AY5 KAEN BIHKAH5M AH STREY4NJ EY4LIYUN."; 17 | ../sam -mouth 190 -throat 190 -pitch 60 -speed 42 -phonetic "YUW5 KAEN YUW4Z DHIHS VOY5S IHN AH SPEY4S GEY5M."; 18 | 19 | ../sam -mouth 110 -throat 105 -pitch 72 -speed 82 -phonetic "OHR /HAW5 AHBAW5T DHIH3S STAH4FIY LIH5TUL KEH4RIXKTER."; 20 | ../sam -mouth 110 -throat 105 -pitch 72 -speed 82 -phonetic "EY SIH4LIY VOY5S FOHR AH KUMPYUW4TER."; 21 | 22 | ../sam -mouth 145 -throat 145 -pitch 32 -speed 72 -phonetic "AY5 KAEN TAO5K LAYK AH LIH5TUL OH5LD LEY5DIY."; 23 | ../sam -mouth 145 -throat 145 -pitch 32 -speed 72 -phonetic "NAAT MEH5NIY KUMPYUW5TERZ KAEN DUW DHIH4S - SWIY5TIY."; 24 | 25 | ../sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "AE4ND AEZ AH MAE5TER AHV FAE4KT,"; 26 | ../sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "AY4 KAEN BIYKAH5M DHAX LEY4TIXST MUW4VIY /HIY4ROW - AEND SEH8EY4,"; 27 | 28 | ../sam -mouth 150 -throat 200 -pitch 58 -speed 120 -phonetic "IY4IY6 TTIY6 -FOW5N /HOW5MM. IY4IY6 TTIY6 - FOW5N /HOW5MM."; 29 | 30 | ../sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "DHEH4RZ NOW4 TEH5LIHNX WHAH5T SAE5M WIHL DUW NEH5KST."; 31 | -------------------------------------------------------------------------------- /demos_bash/demo3.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ../sam -pitch 64 -speed 74 -phonetic "/HEHLOW3 EH5VRIXWAHN. IHT SHUH4R IHZ NAY3S - TAX BIY /HIY4R TUH7DEY."; 4 | ../sam -pitch 64 -speed 74 -phonetic "AY3 AEM SAE4M -"; 5 | ../sam -pitch 64 -speed 74 -phonetic "DHAX BRAE4ND NUW5 VOY4S FOHR DHAX KAA4MIXDOH6R"; 6 | ../sam -pitch 64 -speed 74 -phonetic "SIH4KSTIYFOH6R KUMPYUW4TER."; 7 | ../sam -pitch 64 -speed 74 -phonetic "AY4 AEM DHAX MOW5ST VER4SIXTUL -"; 8 | ../sam -pitch 64 -speed 74 -phonetic "AH5NDERSTAE4NDIXBUL SPIY5CH SIH3NTHAXSAY7ZER"; 9 | ../sam -pitch 64 -speed 74 -phonetic "AAN DHAX MAA3RKIXT."; 10 | ../sam -pitch 64 -speed 74 -phonetic "AE4AE7ND- AY4 AEM DHAX LOHOW4EHST PRAY4ST- AHV DHEHM AO4UL."; 11 | ../sam -pitch 64 -speed 74 -phonetic "BAH6T WHAH4T KAEN YUW DUW3 WHIHTH MIYIY."; 12 | ../sam -pitch 64 -speed 74 -phonetic "WAY7 YUW3 KAEN PUH5T MIY-IH5NTUX YOHR OW7N PROH3GRAEMZ."; 13 | ../sam -pitch 64 -speed 74 -phonetic "/HAW4 WUHD YUW4 LAYK YOHR BIH3ZNIXS SAO5FTWEHR TUX SEY-"; 14 | ../sam -pitch 64 -speed 74 -phonetic "PLIY4Z EH5NTER DHIH4S WIY6KS PER3CHAHSIXZ."; 15 | ../sam -pitch 64 -speed 74 -phonetic "OH3ER- IHMAE3JIXN AEN EHDVEH4NCHER GEY6M DHAET DAH6Z DHIH4S."; 16 | ../sam -pitch 64 -speed 74 -phonetic "DHIY EH3LF WAHZ KAE3PCHERD-BAY DHAX JAY3IXNT."; 17 | ../sam -pitch 64 -speed 74 -phonetic "/HIY BIHGAE5N TUX KRAA3IY-AEND /HIY SEH4D."; 18 | 19 | ../sam -pitch 31 -speed 72 -phonetic "OH5OW7 NAX5OW. PLIY5Z DOWNT /HER5T MIY-MIH6STER JAYIXNT?"; 20 | 21 | ../sam -pitch 64 -speed 76 -phonetic "BAH6T DHAX JAY4IXNT WAHZ VEH3RIY MIY6N-"; 22 | ../sam -pitch 64 -speed 76 -phonetic "AEND /HIY4 OW3NLIY SEHD-"; 23 | 24 | ../sam -pitch 120 -speed 80 -phonetic "/HOW2- /HOW4- /HOW."; 25 | 26 | ../sam -pitch 64 -speed 72 -phonetic "DHEH5R IHZ NOW LIH3MIXT-TUX DHAX PAA4SAXBUL AE5PLIXKEY3SHUNZ-"; 27 | ../sam -pitch 64 -speed 72 -phonetic "AHV SPIY4CH IHN YOH7R PROH3GRAEMZ."; 28 | ../sam -pitch 64 -speed 72 -phonetic "AO3LSOW7W3- AY4 AEM VEH3RIY IY4ZIY TUX YUW4Z."; 29 | ../sam -pitch 64 -speed 72 -phonetic "EH2NIYWAH6N KAEN AE5DSPIY5CH-TUX6 AH BEY4SIHKQPROH4GRAEM."; 30 | ../sam -pitch 64 -speed 72 -phonetic "AY4 KAEN IY3VIXN TAOK VEH4RIY KWIH4KLIY."; 31 | ../sam -pitch 64 -speed 72 -phonetic "LIH4SUN TUX6 DHIH3S WAHN."; 32 | 33 | ../sam -speed 30 -phonetic "PIY4TER PAY3PER- PIH4KT AH PEH4K AHV PIH4KULD PEH4PERZ."; 34 | 35 | ../sam -speed 28 -phonetic "/HAW3 MEHNIY PEH4KS AHV PIH4KULD PEH4PERZ-DIHD PIY4TER PAY3PER PIH6K."; 36 | 37 | ../sam -speed 100 -phonetic "QQQQ WWAW7IY1IY3IY. DHAE3T WHAHZ AH TAH4FIY."; 38 | 39 | ../sam -speed 72 -phonetic "EH2NIYWEY6- YUW4 GEHT DHIY AYDIY5AH."; 40 | ../sam -speed 72 -phonetic "SAE3M IHZ DHIY MOW3STEHKSAY4TIHNX NUW4 PRAA4DAHKT - AHV DHIHS YIY4R."; 41 | ../sam -speed 72 -phonetic "SOH3OW7-/HAW4AHBAW3T IHT. WOH3NT YUW PLIY2Z TEY6KMIY /HOW6M?"; 42 | ../sam -speed 72 -phonetic "Q SAE4M IHZ /HIY3R TUX STEY4IY."; 43 | ../sam -speed 72 -phonetic "THAE2NXKS FOHR LIH4SUNIHNX EHVRIXBAH5DIY."; 44 | ../sam -speed 72 -phonetic "AY /HOW3P YUW EHNJOY4D-MAYLIH4TUL TAOK."; 45 | -------------------------------------------------------------------------------- /demos_bash/demo4.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ../sam "Four score and seven years ago."; 4 | ../sam "Our fathers brought forth on this continent, a new nation."; 5 | ../sam "Conceived in Libberty. And dedicated to the prop-position that all men are created equal."; 6 | 7 | ../sam "Now we are engaged in a great civvil war! Testing whether that nation, or any nation."; 8 | ../sam "So conceived, and so dedicated, can long endure."; 9 | -------------------------------------------------------------------------------- /demos_bash/demo5.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ../sam -mouth 110 -throat 160 -pitch 64 -speed 72 -phonetic "AY4 KAEN CHEY4NJ MAY VOY5S KUMPLIY3TLIY.Q."; 4 | 5 | ../sam -mouth 150 -throat 200 -pitch 58 -speed 120 "Eee Tea! Phone home."; 6 | ../sam -mouth 150 -throat 200 -pitch 58 -speed 120 "Eee Tea? Phone home?"; 7 | 8 | ../sam -mouth 150 -throat 200 -pitch 58 -speed 140 "Ha ha ha ha ha ha ha!"; 9 | ../sam -mouth 150 -throat 100 -pitch 58 -speed 140 "Ha ha ha ha ha ha ha?"; 10 | 11 | ../sam -speed 140 -pitch 64 -throat 110 -mouth 160 "Ho ha ha ha!"; 12 | ../sam -speed 140 -pitch 60 -throat 190 -mouth 190 "Ha ha ha ha ha ha ha?"; 13 | 14 | ../sam -speed 140 -pitch 72 -throat 110 -mouth 105 "He he ha ha he he ha!"; 15 | ../sam -speed 140 -pitch 32 -throat 145 -mouth 145 "Ha ha ho he he ha?"; 16 | 17 | ../sam -speed 140 -pitch 64 -throat 150 -mouth 200 "Ha ha ho ho ha ho?"; 18 | ../sam -speed 35 -pitch 92 -throat 128 -mouth 128 "Ha ha ha ha ha ha ha? Ha ha ha ha ha ha ha!"; 19 | 20 | ../sam "That's not funny."; 21 | -------------------------------------------------------------------------------- /demos_bash/demo6.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ../sam "Hello my name is Sam."; 4 | ../sam "I will sing the national anthem of the United States of America."; 5 | ../sam "The Star Spangled Banner!"; 6 | ../sam -sing -speed 40 -pitch 64 -phonetic "ohohoh"; 7 | ../sam -sing -speed 40 -pitch 76 -phonetic "ohohoh"; 8 | ../sam -sing -speed 40 -pitch 96 -phonetic "sehehehehehehehehehey"; 9 | ../sam -sing -speed 40 -pitch 76 -phonetic "kaeaeaeaeaeaeaeaeaen"; 10 | ../sam -sing -speed 40 -pitch 64 -phonetic "yuxuxuxuxuxuxw"; 11 | ../sam -sing -speed 40 -pitch 48 -phonetic "siyiyiyiyiyiyiyiyiyiyiyiyiyiyiyiyiyiy"; 12 | ../sam -sing -speed 40 -pitch 38 -phonetic "baaaaay"; 13 | ../sam -sing -speed 40 -pitch 42 -phonetic "dhaaaxaxaxax"; 14 | ../sam -sing -speed 40 -pitch 48 -phonetic "daoaoaoaoaoaoaonz"; 15 | ../sam -sing -speed 40 -pitch 76 -phonetic "ererererererer"; 16 | ../sam -sing -speed 40 -pitch 68 -phonetic "liyiyiyiyiyiyiyiyiy"; 17 | ../sam -sing -speed 40 -pitch 64 -phonetic "laaaaaaaaaaaaaaaaaaaaaaaaayt"; 18 | ../sam -sing -speed 40 -pitch 64 -phonetic "whahahaht"; 19 | ../sam -sing -speed 40 -pitch 64 -phonetic "sohohuw"; 20 | ../sam -sing -speed 40 -pitch 38 -phonetic "praaaaaaaaaaaaaaaauwd"; 21 | ../sam -sing -speed 40 -pitch 42 -phonetic "liyiyiy"; 22 | ../sam -sing -speed 40 -pitch 48 -phonetic "wiyiyiyiyiyiyiyiyiy"; 23 | ../sam -sing -speed 40 -pitch 51 -phonetic "/heheheheheheheheheheheheheheheheheheyld"; 24 | ../sam -sing -speed 40 -pitch 56 -phonetic "aeaeaeaet"; 25 | ../sam -sing -speed 40 -pitch 51 -phonetic "dhaaaxaxaxax"; 26 | ../sam -sing -speed 40 -pitch 48 -phonetic "twaaaaaaaaaaaaaaiy"; 27 | ../sam -sing -speed 40 -pitch 48 -phonetic "laaaaaaaaaaaaiyts"; 28 | ../sam -sing -speed 40 -pitch 64 -phonetic "laeaeaeaeaeaeaeaeaest"; 29 | ../sam -sing -speed 40 -pitch 76 -phonetic "gliyiyiyiyiyiyiyiyiym"; 30 | ../sam -sing -speed 40 -pitch 96 -phonetic "mihihihihihihihihihihnx"; 31 | ../sam -sing -speed 40 -pitch 64 -phonetic "/huxuxuxuxuxuxuxuxuxuxwz"; 32 | ../sam -sing -speed 40 -pitch 76 -phonetic "braoaoaod"; 33 | ../sam -sing -speed 40 -pitch 96 -phonetic "straaaaaaaaaaaaiyps"; 34 | ../sam -sing -speed 40 -pitch 76 -phonetic "aeaeaeaeaeaeaeaeaeaend"; 35 | ../sam -sing -speed 40 -pitch 64 -phonetic "braaaaaaaaaaaaaaiyt"; 36 | ../sam -sing -speed 40 -pitch 48 -phonetic "staaaaaaaaaaaaaaaaaaaaaaaaaarz"; 37 | ../sam -sing -speed 40 -pitch 38 -phonetic "thruxuxw"; 38 | ../sam -sing -speed 40 -pitch 42 -phonetic "dhaaaxaxaxax"; 39 | ../sam -sing -speed 40 -pitch 48 -phonetic "pehehehehehehehehehehr"; 40 | ../sam -sing -speed 40 -pitch 76 -phonetic "rixixixixixixixixixixixixl"; 41 | ../sam -sing -speed 40 -pitch 68 -phonetic "lahahahahahahahahahs"; 42 | ../sam -sing -speed 40 -pitch 64 -phonetic "faaaaaaaaaaaaaaaaaaaaaaaaaaiyt"; 43 | ../sam -sing -speed 40 -pitch 64 -phonetic "ohohohr"; 44 | ../sam -sing -speed 40 -pitch 64 -phonetic "dhaaaxaxaxax"; 45 | ../sam -sing -speed 40 -pitch 38 -phonetic "raeaeaeaeaeaeaeaeaeaeaeaem"; 46 | ../sam -sing -speed 40 -pitch 42 -phonetic "paaaarts"; 47 | ../sam -sing -speed 40 -pitch 48 -phonetic "wiyiyiyiyiyiyiyiyiy"; 48 | ../sam -sing -speed 40 -pitch 51 -phonetic "waaaaaaaaaaaaaaaaaaaaaaaaaachd"; 49 | ../sam -sing -speed 40 -pitch 56 -phonetic "werer"; 50 | ../sam -sing -speed 40 -pitch 51 -phonetic "sohohw"; 51 | ../sam -sing -speed 40 -pitch 48 -phonetic "gaeaeaeaeaeaeaeaeaeael"; 52 | ../sam -sing -speed 40 -pitch 48 -phonetic "lixixixixixixixixixixixixixnt"; 53 | ../sam -sing -speed 40 -pitch 64 -phonetic "liyiyiyiyiyiyiyiyiy"; 54 | ../sam -sing -speed 40 -pitch 76 -phonetic "striyiyiyiyiyiyiyiyiym"; 55 | ../sam -sing -speed 40 -pitch 96 -phonetic "mihihihihihihihihihnx"; 56 | ../sam -sing -speed 40 -pitch 38 -phonetic "aeaeaeaeaend"; 57 | ../sam -sing -speed 40 -pitch 38 -phonetic "dhaaaxaxaxax"; 58 | ../sam -sing -speed 40 -pitch 38 -phonetic "raaaaaaaaaaaak"; 59 | ../sam -sing -speed 40 -pitch 36 -phonetic "kixixixixixixixixixixixts"; 60 | ../sam -sing -speed 40 -pitch 32 -phonetic "rehehehehehehehehehd"; 61 | ../sam -sing -speed 40 -pitch 32 -phonetic "gleheheheheheheheheheheheheheheherer"; 62 | ../sam -sing -speed 40 -pitch 36 -phonetic "dhaaaxaxaxax"; 63 | ../sam -sing -speed 40 -pitch 38 -phonetic "baaaamz"; 64 | ../sam -sing -speed 40 -pitch 42 -phonetic "bererererererst"; 65 | ../sam -sing -speed 40 -pitch 38 -phonetic "tihihihihihihihihihnx"; 66 | ../sam -sing -speed 40 -pitch 36 -phonetic "ihihihihihihihihihihn"; 67 | ../sam -sing -speed 40 -pitch 36 -phonetic "eheheheheheheheheheheheheheheheheheyr"; 68 | ../sam -sing -speed 40 -pitch 36 -phonetic "geheheheyv"; 69 | ../sam -sing -speed 40 -pitch 38 -phonetic "pruxuxuxuxuxuxuxuxuxuxuxuxwf"; 70 | ../sam -sing -speed 40 -pitch 42 -phonetic "thruxuxw"; 71 | ../sam -sing -speed 40 -pitch 48 -phonetic "dhaaaxaxax"; 72 | ../sam -sing -speed 40 -pitch 51 -phonetic "naaaaaaaaaaaaaaaaaaaaaaayiyt"; 73 | ../sam -sing -speed 40 -pitch 56 -phonetic "dhaeaeaeaet"; 74 | ../sam -sing -speed 40 -pitch 51 -phonetic "aaaaaauwr"; 75 | ../sam -sing -speed 40 -pitch 48 -phonetic "flaeaeaeaeaeaeaeaeaeg"; 76 | ../sam -sing -speed 40 -pitch 76 -phonetic "wahahahahahahahahahz"; 77 | ../sam -sing -speed 40 -pitch 68 -phonetic "stihihihihihihihihihl"; 78 | ../sam -sing -speed 40 -pitch 64 -phonetic "dhehehehehehehehehehehehehehehehehehehehr"; 79 | ../sam -sing -speed 40 -pitch 64 -phonetic "ohohohohohohow"; 80 | ../sam -sing -speed 40 -pitch 48 -phonetic "sehehehehehehehehehey"; 81 | ../sam -sing -speed 40 -pitch 48 -phonetic "dahahahahahahahahahz"; 82 | ../sam -sing -speed 40 -pitch 48 -phonetic "dhaeaeae"; 83 | ../sam -sing -speed 40 -pitch 51 -phonetic "aeaeaet"; 84 | ../sam -sing -speed 40 -pitch 56 -phonetic "staaaaaaaaaaaar"; 85 | ../sam -sing -speed 40 -pitch 56 -phonetic "spehehehehehehehehehiynx"; 86 | ../sam -sing -speed 40 -pitch 56 -phonetic "gaxaxaxaxaxaxaxaxaxaxaxaxld"; 87 | ../sam -sing -speed 40 -pitch 42 -phonetic "baeaeaeaeaeaeaeaeaen"; 88 | ../sam -sing -speed 40 -pitch 36 -phonetic "nerer"; 89 | ../sam -sing -speed 40 -pitch 38 -phonetic "ererer"; 90 | ../sam -sing -speed 40 -pitch 42 -phonetic "yeheheh"; 91 | ../sam -sing -speed 40 -pitch 48 -phonetic "eheheheht"; 92 | ../sam -sing -speed 40 -pitch 48 -phonetic "weheheheheheheheheheheh"; 93 | ../sam -sing -speed 40 -pitch 51 -phonetic "ehehehehehehehiyiyiyv"; 94 | ../sam -sing -speed 40 -pitch 64 -phonetic "ohohohr"; 95 | ../sam -sing -speed 40 -pitch 64 -phonetic "dhaaaxaxaxax"; 96 | ../sam -sing -speed 40 -pitch 48 -phonetic "laeaeaeaeaeaeaeaeaeaeaeae"; 97 | ../sam -sing -speed 40 -pitch 42 -phonetic "aeaeaend"; 98 | ../sam -sing -speed 40 -pitch 38 -phonetic "ahahahv"; 99 | ../sam -sing -speed 40 -pitch 36 -phonetic "dhaaaxaxaxax"; 100 | ../sam -sing -speed 40 -pitch 32 -phonetic "friyiyiyiyiyiyiyiyiyiyiyiyiyiyiyiyiyiy"; 101 | ../sam -sing -speed 40 -pitch 48 -phonetic "aeaeaend"; 102 | ../sam -sing -speed 40 -pitch 42 -phonetic "dhaaaxaxaxax"; 103 | ../sam -sing -speed 40 -pitch 38 -phonetic "/hohohohohohohohohowm"; 104 | ../sam -sing -speed 40 -pitch 36 -phonetic "ahahahahv"; 105 | ../sam -sing -speed 40 -pitch 42 -phonetic "dhaaaxaxaxaxaxaxaxaxaxaxaxaxax"; 106 | ../sam -sing -speed 40 -pitch 48 -phonetic "brehehehehehehehehehehiyiyiyv"; 107 | -------------------------------------------------------------------------------- /demos_bash/demo7.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ../sam -sing -pitch 96 -speed 50 "It's Jazzy Jazzy Jazzy"; 4 | ../sam -sing -pitch 68 -speed 50 "Jazzy Jazzy Jazzy"; 5 | ../sam -sing -pitch 48 -speed 50 "Jazzy Jazzy Jazzy"; 6 | ../sam -sing -pitch 32 -speed 50 "Jazzy Jazzy Jazzy"; 7 | ../sam -sing -pitch 96 -speed 50 "Jazzy"; 8 | -------------------------------------------------------------------------------- /demos_bash/demo8.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ../sam "More than ever before. Americans are suff-er-ing from back, problems."; 4 | ../sam "Back. tach-sis."; 5 | ../sam "Back. rent?"; 6 | ../sam "Back. car payments."; 7 | ../sam "What we need is to get back. to the basics."; 8 | 9 | ../sam "And say chilldren: What does it all mean."; 10 | 11 | ../sam "And remember."; 12 | ../sam "If you want to see a comic strip? You should see me in the shouwer."; 13 | -------------------------------------------------------------------------------- /demos_bash/demo9.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ../sam -mouth 145 -throat 135 -pitch 40 -speed 72 -phonetic "AY5 KAEN TAO5K LAYK AH LIH5TUL OH5LD LEY5DIY.- SWIY5TIY."; 4 | 5 | ../sam -mouth 145 -throat 125 -pitch 40 -speed 72 "You can do anything, but not everything."; 6 | ../sam -mouth 135 -throat 135 -pitch 35 -speed 72 "The richest man is not he who has the most. But he who wants the least."; 7 | ../sam -mouth 145 -throat 135 -pitch 40 -speed 72 "To the man who only has a hammer, everything he encounters looks like a nail."; 8 | ../sam -mouth 145 -throat 125 -pitch 35 -speed 72 "Before I got married I had six ideas about bringing up kids; now I have six kids. And no idea?"; 9 | ../sam -mouth 135 -throat 135 -pitch 40 -speed 72 "Always forgive your enemies. Nothing annoys them more."; 10 | ../sam -mouth 145 -throat 125 -pitch 35 -speed 72 "All people are frauds. The only difference between them is that some admit it. I myself totally dee-nigh. it."; 11 | ../sam -mouth 135 -throat 135 -pitch 40 -speed 72 "I do not mind what Con-gress does. As long as they do not do it. in the streets. And frighten the kids!"; 12 | 13 | ../sam -speed 55 -pitch 92 -throat 128 -mouth 128 "Ha ha ha ha ha ha ha? Ha ha ha ha ha ha ha!"; 14 | ../sam "That's not funny grandma."; 15 | 16 | ../sam -mouth 145 -throat 125 -pitch 40 -speed 72 "O.K. Let grandma take it from here."; 17 | ../sam -mouth 145 -throat 135 -pitch 40 -speed 72 -phonetic "SWIY5TIY."; 18 | -------------------------------------------------------------------------------- /demos_bash/demoA.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ../sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "/HEHLOH3OW. MAY4 NEY4M IHZ SAE4M."; 4 | ../sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "AY4 EHM DHAX SAO4FTWEH4R SPIY4CH SIH3NTHAXSAY4ZER FOH4R DHAX KAA3MAXDOH4R KUMPYUWTER."; 5 | 6 | ../sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "AY4 PROWDUW3S /HAY4 KWAALAXTIY SPIY4CH FRAXM SIHMPAXL FAXNEHTIHK IH3NPUHT."; 7 | ../sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "OH3R, AY4 KAEN TRAE3NZLEYT IYNGLIHSH DAXREHKTLIY TUH SPIYCH."; 8 | -------------------------------------------------------------------------------- /demos_bash/demoB.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ../sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "DHAX SOHLIHLAXKWIY FRAXM /HAE3MLEHT. BAY WIHLYAXM SHEY4KSPIHR."; 4 | ../sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "TUH BIYIYIY2--OHR NAAT-TUH BIYIYIY."; 5 | ../sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "DHAET IHZ THAX KWEHSCHAXN."; 6 | ../sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "WEHDHER TIHZ NOHBLER IHN DHAX MAY4ND, TUH SAH4FER THAX SLIY3NGZ AEN3D"; 7 | ../sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "EH4ROWZ AXV AWT REY3JAXS FOH4RCHAXN."; 8 | 9 | ../sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "OHR TUH TEYK AARMZ AXGEHNST AX4 SIY AXV TRAH4BAXLZ."; 10 | ../sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "AEND BAY AHPOWZIHNG, EHND DHEHM."; 11 | -------------------------------------------------------------------------------- /demos_bash/demoC.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ../sam -mouth 145 -throat 125 -pitch 40 -speed 72 "This is the original file extracted from the Commodore 64."; 4 | ../sam -mouth 145 -throat 125 -pitch 40 -speed 72 "O.K. ../sam. You can take it from here."; 5 | ../sam -mouth 145 -throat 135 -pitch 40 -speed 72 -phonetic "SWIY5TIY."; 6 | 7 | ../sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "AY4 WIHL NAW4 KWOWT-DHAX GEHTIYZBERG AXDREH3S."; 8 | ../sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "FOH4R SKOH4R AEND SEHVIXN YIH3RZ AXGOW- AAR FAA3DHERZ BRAAT FOHRTH"; 9 | ../sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "AXPAAN DHIHS KAANTIHNEHNT- EY NUH NEY4SHAXN."; 10 | ../sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "KAHNSIYVD IHN LIH4BERTIY, AEND DEH4DIHKEYTIHD TUH DHAX PRAAPAXSIHSHAXN"; 11 | ../sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "DHAET AAL MEHN AAR KRIYEY4TAXD IYKWUL."; 12 | ../sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "NAW4 WIY AAR EHNGEYJD IHN DHAX GREYT SIHVAXL WOHR. TEHSTIHNG WEHDHER"; 13 | ../sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "DHAE4T NEY4SHAXN, OHR EH4NIY NEYSHAXN SOH KAXNSIYVD AEND SOH"; 14 | ../sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "DEH4DAHKEYTIHD, KAEN LAONX EHNDUH6UHR."; 15 | -------------------------------------------------------------------------------- /demos_bash/demoD.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ../sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "AY4 PLEHJ AXLIYJAXNS TUH DHAX FLAEG, AXV DHIY YUWNAYTEHD STEYTS"; 4 | ../sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "AXV AXMEHRIYKAX. AEND TUH DHAX RIYPAHBLIHK FOHR WIHCH IHT STAENDZ."; 5 | ../sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "WAHN NEYSHAXN AHNDER GAA5AA8D"; 6 | ../sam -mouth 128 -throat 128 -pitch 64 -speed 72 -phonetic "IHNDIHVIH4ZAXBAXL, WIHTH LIHBERTTIY, AEND JAH4STIHS- FOHR AAL."; 7 | -------------------------------------------------------------------------------- /mk: -------------------------------------------------------------------------------- 1 | pushd src 2 | gcc main.c debug.c reciter.c render.c sam.c -o sam 3 | popd 4 | mv src/sam . 5 | -------------------------------------------------------------------------------- /src/RenderTabs.h: -------------------------------------------------------------------------------- 1 | #ifndef RENDERTABS_H 2 | #define RENDERTABS_H 3 | 4 | const unsigned char tab48426[5] = { 0x18, 0x1A, 0x17, 0x17, 0x17 }; 5 | 6 | const unsigned char tab47492[] = 7 | { 8 | 0 , 0 , 0xE0 , 0xE6 , 0xEC , 0xF3 , 0xF9 , 0 , 9 | 6 , 0xC , 6 10 | }; 11 | 12 | 13 | const unsigned char amplitudeRescale[] = 14 | { 15 | 0 , 1 , 2 , 2 , 2 , 3 , 3 , 4 , 16 | 4 , 5 , 6 , 8 , 9 ,0xB ,0xD ,0xF, 0 //17 elements? 17 | }; 18 | 19 | // Used to decide which phoneme's blend lengths. The candidate with the lower score is selected. 20 | // tab45856 21 | const unsigned char blendRank[] = 22 | { 23 | 0 , 0x1F , 0x1F , 0x1F , 0x1F , 2 , 2 , 2 , 24 | 2 , 2 , 2 , 2 , 2 , 2 , 5 , 5 , 25 | 2 ,0xA , 2 , 8 , 5 , 5 ,0xB ,0xA , 26 | 9 , 8 , 8 , 0xA0 , 8 , 8 , 0x17 , 0x1F , 27 | 0x12 , 0x12 , 0x12 , 0x12 , 0x1E , 0x1E , 0x14 , 0x14 , 28 | 0x14 , 0x14 , 0x17 , 0x17 , 0x1A , 0x1A , 0x1D , 0x1D , 29 | 2 , 2 , 2 , 2 , 2 , 2 , 0x1A , 0x1D , 30 | 0x1B , 0x1A , 0x1D , 0x1B , 0x1A , 0x1D , 0x1B , 0x1A , 31 | 0x1D , 0x1B , 0x17 , 0x1D , 0x17 , 0x17 , 0x1D , 0x17 , 32 | 0x17 , 0x1D , 0x17 , 0x17 , 0x1D , 0x17 , 0x17 , 0x17 33 | }; 34 | 35 | 36 | // Number of frames at the end of a phoneme devoted to interpolating to next phoneme's final value 37 | //tab45696 38 | const unsigned char outBlendLength[] = 39 | { 40 | 0 , 2 , 2 , 2 , 2 , 4 , 4 , 4 , 41 | 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 42 | 4 , 4 , 3 , 2 , 4 , 4 , 2 , 2 , 43 | 2 , 2 , 2 , 1 , 1 , 1 , 1 , 1 , 44 | 1 , 1 , 1 , 1 , 1 , 1 , 2 , 2 , 45 | 2 , 1 , 0 , 1 , 0 , 1 , 0 , 5 , 46 | 5 , 5 , 5 , 5 , 4 , 4 , 2 , 0 , 47 | 1 , 2 , 0 , 1 , 2 , 0 , 1 , 2 , 48 | 0 , 1 , 2 , 0 , 2 , 2 , 0 , 1 , 49 | 3 , 0 , 2 , 3 , 0 , 2 , 0xA0 , 0xA0 50 | }; 51 | 52 | 53 | // Number of frames at beginning of a phoneme devoted to interpolating to phoneme's final value 54 | // tab45776 55 | const unsigned char inBlendLength[] = 56 | { 57 | 0 , 2 , 2 , 2 , 2 , 4 , 4 , 4 , 58 | 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 59 | 4 , 4 , 3 , 3 , 4 , 4 , 3 , 3 , 60 | 3 , 3 , 3 , 1 , 2 , 3 , 2 , 1 , 61 | 3 , 3 , 3 , 3 , 1 , 1 , 3 , 3 , 62 | 3 , 2 , 2 , 3 , 2 , 3 , 0 , 0 , 63 | 5 , 5 , 5 , 5 , 4 , 4 , 2 , 0 , 64 | 2 , 2 , 0 , 3 , 2 , 0 , 4 , 2 , 65 | 0 , 3 , 2 , 0 , 2 , 2 , 0 , 2 , 66 | 3 , 0 , 3 , 3 , 0 , 3 , 0xB0 , 0xA0 67 | }; 68 | 69 | 70 | // Looks like it's used as bit flags 71 | // High bits masked by 248 (11111000) 72 | // 73 | // 32: S* 241 11110001 74 | // 33: SH 226 11100010 75 | // 34: F* 211 11010011 76 | // 35: TH 187 10111011 77 | // 36: /H 124 01111100 78 | // 37: /X 149 10010101 79 | // 38: Z* 1 00000001 80 | // 39: ZH 2 00000010 81 | // 40: V* 3 00000011 82 | // 41: DH 3 00000011 83 | // 43: ** 114 01110010 84 | // 45: ** 2 00000010 85 | // 67: ** 27 00011011 86 | // 70: ** 25 00011001 87 | // tab45936 88 | const unsigned char sampledConsonantFlags[] = 89 | { 90 | 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 91 | 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 92 | 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 93 | 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 94 | 0xF1 , 0xE2 , 0xD3 , 0xBB , 0x7C , 0x95 , 1 , 2 , 95 | 3 , 3 , 0 , 0x72 , 0 , 2 , 0 , 0 , 96 | 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 97 | 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 98 | 0 , 0 , 0 , 0x1B , 0 , 0 , 0x19 , 0 , 99 | 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 100 | }; 101 | 102 | 103 | //tab45056 104 | unsigned char freq1data[]= 105 | { 106 | 0x00 ,0x13 ,0x13 ,0x13 ,0x13 , 0xA , 0xE ,0x12 107 | , 0x18 ,0x1A ,0x16 ,0x14 ,0x10 ,0x14 , 0xE ,0x12 108 | , 0xE ,0x12 ,0x12 ,0x10 , 0xC , 0xE , 0xA ,0x12 109 | , 0xE ,0xA , 8 , 6 , 6 , 6 , 6 ,0x11 110 | , 6 , 6 , 6 , 6 ,0xE , 0x10 , 9 ,0xA 111 | , 8 ,0xA , 6 , 6 , 6 , 5 , 6 , 0 112 | , 0x12 , 0x1A , 0x14 , 0x1A , 0x12 ,0xC , 6 , 6 113 | , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 114 | , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 115 | , 6 ,0xA ,0xA , 6 , 6 , 6 , 0x2C , 0x13 116 | }; 117 | 118 | //tab451356 119 | unsigned char freq2data[]= 120 | { 121 | 0x00 , 0x43 , 0x43 , 0x43 , 0x43 , 0x54 , 0x48 , 0x42 , 122 | 0x3E , 0x28 , 0x2C , 0x1E , 0x24 , 0x2C , 0x48 , 0x30 , 123 | 0x24 , 0x1E , 0x32 , 0x24 , 0x1C , 0x44 , 0x18 , 0x32 , 124 | 0x1E , 0x18 , 0x52 , 0x2E , 0x36 , 0x56 , 0x36 , 0x43 , 125 | 0x49 , 0x4F , 0x1A , 0x42 , 0x49 , 0x25 , 0x33 , 0x42 , 126 | 0x28 , 0x2F , 0x4F , 0x4F , 0x42 , 0x4F , 0x6E , 0x00 , 127 | 0x48 , 0x26 , 0x1E , 0x2A , 0x1E , 0x22 , 0x1A , 0x1A , 128 | 0x1A , 0x42 , 0x42 , 0x42 , 0x6E , 0x6E , 0x6E , 0x54 , 129 | 0x54 , 0x54 , 0x1A , 0x1A , 0x1A , 0x42 , 0x42 , 0x42 , 130 | 0x6D , 0x56 , 0x6D , 0x54 , 0x54 , 0x54 , 0x7F , 0x7F 131 | }; 132 | 133 | //tab45216 134 | unsigned char freq3data[]= 135 | { 136 | 0x00 , 0x5B , 0x5B , 0x5B , 0x5B , 0x6E , 0x5D , 0x5B , 137 | 0x58 , 0x59 , 0x57 , 0x58 , 0x52 , 0x59 , 0x5D , 0x3E , 138 | 0x52 , 0x58 , 0x3E , 0x6E , 0x50 , 0x5D , 0x5A , 0x3C , 139 | 0x6E , 0x5A , 0x6E , 0x51 , 0x79 , 0x65 , 0x79 , 0x5B , 140 | 0x63 , 0x6A , 0x51 , 0x79 , 0x5D , 0x52 , 0x5D , 0x67 , 141 | 0x4C , 0x5D , 0x65 , 0x65 , 0x79 , 0x65 , 0x79 , 0x00 , 142 | 0x5A , 0x58 , 0x58 , 0x58 , 0x58 , 0x52 , 0x51 , 0x51 , 143 | 0x51 , 0x79 , 0x79 , 0x79 , 0x70 , 0x6E , 0x6E , 0x5E , 144 | 0x5E , 0x5E , 0x51 , 0x51 , 0x51 , 0x79 , 0x79 , 0x79 , 145 | 0x65 , 0x65 , 0x70 , 0x5E , 0x5E , 0x5E , 0x08 , 0x01 146 | }; 147 | 148 | const unsigned char ampl1data[] = 149 | { 150 | 0 , 0 , 0 , 0 , 0 ,0xD ,0xD ,0xE , 151 | 0xF ,0xF ,0xF ,0xF ,0xF ,0xC ,0xD ,0xC , 152 | 0xF ,0xF ,0xD ,0xD ,0xD ,0xE ,0xD ,0xC , 153 | 0xD ,0xD ,0xD ,0xC , 9 , 9 , 0 , 0 , 154 | 0 , 0 , 0 , 0 , 0 , 0 ,0xB ,0xB , 155 | 0xB ,0xB , 0 , 0 , 1 ,0xB , 0 , 2 , 156 | 0xE ,0xF ,0xF ,0xF ,0xF ,0xD , 2 , 4 , 157 | 0 , 2 , 4 , 0 , 1 , 4 , 0 , 1 , 158 | 4 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 159 | 0 ,0xC , 0 , 0 , 0 , 0 ,0xF ,0xF 160 | }; 161 | 162 | const unsigned char ampl2data[] = 163 | { 164 | 0 , 0 , 0 , 0 , 0 ,0xA ,0xB ,0xD , 165 | 0xE ,0xD ,0xC ,0xC ,0xB , 9 ,0xB ,0xB , 166 | 0xC ,0xC ,0xC , 8 , 8 ,0xC , 8 ,0xA , 167 | 8 , 8 ,0xA , 3 , 9 , 6 , 0 , 0 , 168 | 0 , 0 , 0 , 0 , 0 , 0 , 3 , 5 , 169 | 3 , 4 , 0 , 0 , 0 , 5 ,0xA , 2 , 170 | 0xE ,0xD ,0xC ,0xD ,0xC , 8 , 0 , 1 , 171 | 0 , 0 , 1 , 0 , 0 , 1 , 0 , 0 , 172 | 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 173 | 0 ,0xA , 0 , 0 ,0xA , 0 , 0 , 0 174 | }; 175 | 176 | const unsigned char ampl3data[] = 177 | { 178 | 0 , 0 , 0 , 0 , 0 , 8 , 7 , 8 , 179 | 8 , 1 , 1 , 0 , 1 , 0 , 7 , 5 , 180 | 1 , 0 , 6 , 1 , 0 , 7 , 0 , 5 , 181 | 1 , 0 , 8 , 0 , 0 , 3 , 0 , 0 , 182 | 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 183 | 0 , 0 , 0 , 0 , 0 , 1 ,0xE , 1 , 184 | 9 , 1 , 0 , 1 , 0 , 0 , 0 , 0 , 185 | 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 186 | 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 187 | 0 , 7 , 0 , 0 , 5 , 0 , 0x13 , 0x10 188 | }; 189 | 190 | 191 | 192 | //tab42240 193 | const signed char sinus[256] = 194 | {0,3,6,9,12,16,19,22,25,28,31,34,37,40,43,46,49,51,54,57,60,63,65,68,71,73,76,78,81,83,85,88,90,92,94,96,98,100,102,104,106,107,109,111,112,113,115,116,117,118,120,121,122,122,123,124,125,125,126,126,126,127,127,127,127,127,127,127,126,126,126,125,125,124,123,122,122,121,120,118,117,116,115,113,112,111,109,107,106,104,102,100,98,96,94,92,90,88,85,83,81,78,76,73,71,68,65,63,60,57,54,51,49,46,43,40,37,34,31,28,25,22,19,16,12,9,6,3,0,-3,-6,-9,-12,-16,-19,-22,-25,-28,-31,-34,-37,-40,-43,-46,-49,-51,-54,-57,-60,-63,-65,-68,-71,-73,-76,-78,-81,-83,-85,-88,-90,-92,-94,-96,-98,-100,-102,-104,-106,-107,-109,-111,-112,-113,-115,-116,-117,-118,-120,-121,-122,-122,-123,-124,-125,-125,-126,-126,-126,-127,-127,-127,-127,-127,-127,-127,-126,-126,-126,-125,-125,-124,-123,-122,-122,-121,-120,-118,-117,-116,-115,-113,-112,-111,-109,-107,-106,-104,-102,-100,-98,-96,-94,-92,-90,-88,-85,-83,-81,-78,-76,-73,-71,-68,-65,-63,-60,-57,-54,-51,-49,-46,-43,-40,-37,-34,-31,-28,-25,-22,-19,-16,-12,-9,-6,-3}; 195 | 196 | //tab42496 197 | const unsigned char rectangle[] = 198 | { 199 | 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 200 | 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 201 | 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 202 | 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 203 | 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 204 | 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 205 | 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 206 | 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 207 | 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 208 | 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 209 | 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 210 | 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 211 | 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 212 | 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 213 | 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 214 | 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 0x90 , 215 | 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 216 | 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 217 | 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 218 | 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 219 | 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 220 | 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 221 | 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 222 | 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 223 | 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 224 | 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 225 | 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 226 | 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 227 | 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 228 | 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 229 | 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 230 | 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 , 0x70 231 | }; 232 | 233 | 234 | //random data ? 235 | const unsigned char sampleTable[0x500] = 236 | { 237 | //00 238 | 239 | 0x38 , 0x84 , 0x6B , 0x19 , 0xC6 , 0x63 , 0x18 , 0x86 240 | , 0x73 , 0x98 , 0xC6 , 0xB1 , 0x1C , 0xCA , 0x31 , 0x8C 241 | , 0xC7 , 0x31 , 0x88 , 0xC2 , 0x30 , 0x98 , 0x46 , 0x31 242 | , 0x18 , 0xC6 , 0x35 ,0xC , 0xCA , 0x31 ,0xC , 0xC6 243 | //20 244 | , 0x21 , 0x10 , 0x24 , 0x69 , 0x12 , 0xC2 , 0x31 , 0x14 245 | , 0xC4 , 0x71 , 8 , 0x4A , 0x22 , 0x49 , 0xAB , 0x6A 246 | , 0xA8 , 0xAC , 0x49 , 0x51 , 0x32 , 0xD5 , 0x52 , 0x88 247 | , 0x93 , 0x6C , 0x94 , 0x22 , 0x15 , 0x54 , 0xD2 , 0x25 248 | //40 249 | , 0x96 , 0xD4 , 0x50 , 0xA5 , 0x46 , 0x21 , 8 , 0x85 250 | , 0x6B , 0x18 , 0xC4 , 0x63 , 0x10 , 0xCE , 0x6B , 0x18 251 | , 0x8C , 0x71 , 0x19 , 0x8C , 0x63 , 0x35 ,0xC , 0xC6 252 | , 0x33 , 0x99 , 0xCC , 0x6C , 0xB5 , 0x4E , 0xA2 , 0x99 253 | //60 254 | , 0x46 , 0x21 , 0x28 , 0x82 , 0x95 , 0x2E , 0xE3 , 0x30 255 | , 0x9C , 0xC5 , 0x30 , 0x9C , 0xA2 , 0xB1 , 0x9C , 0x67 256 | , 0x31 , 0x88 , 0x66 , 0x59 , 0x2C , 0x53 , 0x18 , 0x84 257 | , 0x67 , 0x50 , 0xCA , 0xE3 ,0xA , 0xAC , 0xAB , 0x30 258 | //80 259 | , 0xAC , 0x62 , 0x30 , 0x8C , 0x63 , 0x10 , 0x94 , 0x62 260 | , 0xB1 , 0x8C , 0x82 , 0x28 , 0x96 , 0x33 , 0x98 , 0xD6 261 | , 0xB5 , 0x4C , 0x62 , 0x29 , 0xA5 , 0x4A , 0xB5 , 0x9C 262 | , 0xC6 , 0x31 , 0x14 , 0xD6 , 0x38 , 0x9C , 0x4B , 0xB4 263 | //A0 264 | , 0x86 , 0x65 , 0x18 , 0xAE , 0x67 , 0x1C , 0xA6 , 0x63 265 | , 0x19 , 0x96 , 0x23 , 0x19 , 0x84 , 0x13 , 8 , 0xA6 266 | , 0x52 , 0xAC , 0xCA , 0x22 , 0x89 , 0x6E , 0xAB , 0x19 267 | , 0x8C , 0x62 , 0x34 , 0xC4 , 0x62 , 0x19 , 0x86 , 0x63 268 | //C0 269 | , 0x18 , 0xC4 , 0x23 , 0x58 , 0xD6 , 0xA3 , 0x50 , 0x42 270 | , 0x54 , 0x4A , 0xAD , 0x4A , 0x25 , 0x11 , 0x6B , 0x64 271 | , 0x89 , 0x4A , 0x63 , 0x39 , 0x8A , 0x23 , 0x31 , 0x2A 272 | , 0xEA , 0xA2 , 0xA9 , 0x44 , 0xC5 , 0x12 , 0xCD , 0x42 273 | //E0 274 | , 0x34 , 0x8C , 0x62 , 0x18 , 0x8C , 0x63 , 0x11 , 0x48 275 | , 0x66 , 0x31 , 0x9D , 0x44 , 0x33 , 0x1D , 0x46 , 0x31 276 | , 0x9C , 0xC6 , 0xB1 ,0xC , 0xCD , 0x32 , 0x88 , 0xC4 277 | , 0x73 , 0x18 , 0x86 , 0x73 , 8 , 0xD6 , 0x63 , 0x58 278 | //100 279 | , 7 , 0x81 , 0xE0 , 0xF0 , 0x3C , 7 , 0x87 , 0x90 280 | , 0x3C , 0x7C ,0xF , 0xC7 , 0xC0 , 0xC0 , 0xF0 , 0x7C 281 | , 0x1E , 7 , 0x80 , 0x80 , 0 , 0x1C , 0x78 , 0x70 282 | , 0xF1 , 0xC7 , 0x1F , 0xC0 ,0xC , 0xFE , 0x1C , 0x1F 283 | //120 284 | , 0x1F ,0xE ,0xA , 0x7A , 0xC0 , 0x71 , 0xF2 , 0x83 285 | , 0x8F , 3 ,0xF ,0xF ,0xC , 0 , 0x79 , 0xF8 286 | , 0x61 , 0xE0 , 0x43 ,0xF , 0x83 , 0xE7 , 0x18 , 0xF9 287 | , 0xC1 , 0x13 , 0xDA , 0xE9 , 0x63 , 0x8F ,0xF , 0x83 288 | //140 289 | , 0x83 , 0x87 , 0xC3 , 0x1F , 0x3C , 0x70 , 0xF0 , 0xE1 290 | , 0xE1 , 0xE3 , 0x87 , 0xB8 , 0x71 ,0xE , 0x20 , 0xE3 291 | , 0x8D , 0x48 , 0x78 , 0x1C , 0x93 , 0x87 , 0x30 , 0xE1 292 | , 0xC1 , 0xC1 , 0xE4 , 0x78 , 0x21 , 0x83 , 0x83 , 0xC3 293 | //160 294 | , 0x87 , 6 , 0x39 , 0xE5 , 0xC3 , 0x87 , 7 ,0xE 295 | , 0x1C , 0x1C , 0x70 , 0xF4 , 0x71 , 0x9C , 0x60 , 0x36 296 | , 0x32 , 0xC3 , 0x1E , 0x3C , 0xF3 , 0x8F ,0xE , 0x3C 297 | , 0x70 , 0xE3 , 0xC7 , 0x8F ,0xF ,0xF ,0xE , 0x3C 298 | //180 299 | , 0x78 , 0xF0 , 0xE3 , 0x87 , 6 , 0xF0 , 0xE3 , 7 300 | , 0xC1 , 0x99 , 0x87 ,0xF , 0x18 , 0x78 , 0x70 , 0x70 301 | , 0xFC , 0xF3 , 0x10 , 0xB1 , 0x8C , 0x8C , 0x31 , 0x7C 302 | , 0x70 , 0xE1 , 0x86 , 0x3C , 0x64 , 0x6C , 0xB0 , 0xE1 303 | //1A0 304 | , 0xE3 ,0xF , 0x23 , 0x8F ,0xF , 0x1E , 0x3E , 0x38 305 | , 0x3C , 0x38 , 0x7B , 0x8F , 7 ,0xE , 0x3C , 0xF4 306 | , 0x17 , 0x1E , 0x3C , 0x78 , 0xF2 , 0x9E , 0x72 , 0x49 307 | , 0xE3 , 0x25 , 0x36 , 0x38 , 0x58 , 0x39 , 0xE2 , 0xDE 308 | //1C0 309 | , 0x3C , 0x78 , 0x78 , 0xE1 , 0xC7 , 0x61 , 0xE1 , 0xE1 310 | , 0xB0 , 0xF0 , 0xF0 , 0xC3 , 0xC7 ,0xE , 0x38 , 0xC0 311 | , 0xF0 , 0xCE , 0x73 , 0x73 , 0x18 , 0x34 , 0xB0 , 0xE1 312 | , 0xC7 , 0x8E , 0x1C , 0x3C , 0xF8 , 0x38 , 0xF0 , 0xE1 313 | //1E0 314 | , 0xC1 , 0x8B , 0x86 , 0x8F , 0x1C , 0x78 , 0x70 , 0xF0 315 | , 0x78 , 0xAC , 0xB1 , 0x8F , 0x39 , 0x31 , 0xDB , 0x38 316 | , 0x61 , 0xC3 ,0xE ,0xE , 0x38 , 0x78 , 0x73 , 0x17 317 | , 0x1E , 0x39 , 0x1E , 0x38 , 0x64 , 0xE1 , 0xF1 , 0xC1 318 | //200 319 | , 0x4E ,0xF , 0x40 , 0xA2 , 2 , 0xC5 , 0x8F , 0x81 320 | , 0xA1 , 0xFC , 0x12 , 8 , 0x64 , 0xE0 , 0x3C , 0x22 321 | , 0xE0 , 0x45 , 7 , 0x8E ,0xC , 0x32 , 0x90 , 0xF0 322 | , 0x1F , 0x20 , 0x49 , 0xE0 , 0xF8 ,0xC , 0x60 , 0xF0 323 | //220 324 | , 0x17 , 0x1A , 0x41 , 0xAA , 0xA4 , 0xD0 , 0x8D , 0x12 325 | , 0x82 , 0x1E , 0x1E , 3 , 0xF8 , 0x3E , 3 ,0xC 326 | , 0x73 , 0x80 , 0x70 , 0x44 , 0x26 , 3 , 0x24 , 0xE1 327 | , 0x3E , 4 , 0x4E , 4 , 0x1C , 0xC1 , 9 , 0xCC 328 | //240 329 | , 0x9E , 0x90 , 0x21 , 7 , 0x90 , 0x43 , 0x64 , 0xC0 330 | , 0xF , 0xC6 , 0x90 , 0x9C , 0xC1 , 0x5B , 3 , 0xE2 331 | , 0x1D , 0x81 , 0xE0 , 0x5E , 0x1D , 3 , 0x84 , 0xB8 332 | , 0x2C ,0xF , 0x80 , 0xB1 , 0x83 , 0xE0 , 0x30 , 0x41 333 | //260 334 | , 0x1E , 0x43 , 0x89 , 0x83 , 0x50 , 0xFC , 0x24 , 0x2E 335 | , 0x13 , 0x83 , 0xF1 , 0x7C , 0x4C , 0x2C , 0xC9 ,0xD 336 | , 0x83 , 0xB0 , 0xB5 , 0x82 , 0xE4 , 0xE8 , 6 , 0x9C 337 | , 7 , 0xA0 , 0x99 , 0x1D , 7 , 0x3E , 0x82 , 0x8F 338 | //280 339 | , 0x70 , 0x30 , 0x74 , 0x40 , 0xCA , 0x10 , 0xE4 , 0xE8 340 | , 0xF , 0x92 , 0x14 , 0x3F , 6 , 0xF8 , 0x84 , 0x88 341 | , 0x43 , 0x81 ,0xA , 0x34 , 0x39 , 0x41 , 0xC6 , 0xE3 342 | , 0x1C , 0x47 , 3 , 0xB0 , 0xB8 , 0x13 ,0xA , 0xC2 343 | //2A0 344 | , 0x64 , 0xF8 , 0x18 , 0xF9 , 0x60 , 0xB3 , 0xC0 , 0x65 345 | , 0x20 , 0x60 , 0xA6 , 0x8C , 0xC3 , 0x81 , 0x20 , 0x30 346 | , 0x26 , 0x1E , 0x1C , 0x38 , 0xD3 , 1 , 0xB0 , 0x26 347 | , 0x40 , 0xF4 ,0xB , 0xC3 , 0x42 , 0x1F , 0x85 , 0x32 348 | //2C0 349 | , 0x26 , 0x60 , 0x40 , 0xC9 , 0xCB , 1 , 0xEC , 0x11 350 | , 0x28 , 0x40 , 0xFA , 4 , 0x34 , 0xE0 , 0x70 , 0x4C 351 | , 0x8C , 0x1D , 7 , 0x69 , 3 , 0x16 , 0xC8 , 4 352 | , 0x23 , 0xE8 , 0xC6 , 0x9A ,0xB , 0x1A , 3 , 0xE0 353 | //2E0 354 | , 0x76 , 6 , 5 , 0xCF , 0x1E , 0xBC , 0x58 , 0x31 355 | , 0x71 , 0x66 , 0 , 0xF8 , 0x3F , 4 , 0xFC ,0xC 356 | , 0x74 , 0x27 , 0x8A , 0x80 , 0x71 , 0xC2 , 0x3A , 0x26 357 | , 6 , 0xC0 , 0x1F , 5 ,0xF , 0x98 , 0x40 , 0xAE 358 | //300 359 | , 1 , 0x7F , 0xC0 , 7 , 0xFF , 0 ,0xE , 0xFE 360 | , 0 , 3 , 0xDF , 0x80 , 3 , 0xEF , 0x80 , 0x1B 361 | , 0xF1 , 0xC2 , 0 , 0xE7 , 0xE0 , 0x18 , 0xFC , 0xE0 362 | , 0x21 , 0xFC , 0x80 , 0x3C , 0xFC , 0x40 ,0xE , 0x7E 363 | //320 364 | , 0 , 0x3F , 0x3E , 0 ,0xF , 0xFE , 0 , 0x1F 365 | , 0xFF , 0 , 0x3E , 0xF0 , 7 , 0xFC , 0 , 0x7E 366 | , 0x10 , 0x3F , 0xFF , 0 , 0x3F , 0x38 ,0xE , 0x7C 367 | , 1 , 0x87 ,0xC , 0xFC , 0xC7 , 0 , 0x3E , 4 368 | //340 369 | , 0xF , 0x3E , 0x1F ,0xF ,0xF , 0x1F ,0xF , 2 370 | , 0x83 , 0x87 , 0xCF , 3 , 0x87 ,0xF , 0x3F , 0xC0 371 | , 7 , 0x9E , 0x60 , 0x3F , 0xC0 , 3 , 0xFE , 0 372 | , 0x3F , 0xE0 , 0x77 , 0xE1 , 0xC0 , 0xFE , 0xE0 , 0xC3 373 | //360 374 | , 0xE0 , 1 , 0xDF , 0xF8 , 3 , 7 , 0 , 0x7E 375 | , 0x70 , 0 , 0x7C , 0x38 , 0x18 , 0xFE ,0xC , 0x1E 376 | , 0x78 , 0x1C , 0x7C , 0x3E ,0xE , 0x1F , 0x1E , 0x1E 377 | , 0x3E , 0 , 0x7F , 0x83 , 7 , 0xDB , 0x87 , 0x83 378 | //380 379 | , 7 , 0xC7 , 7 , 0x10 , 0x71 , 0xFF , 0 , 0x3F 380 | , 0xE2 , 1 , 0xE0 , 0xC1 , 0xC3 , 0xE1 , 0 , 0x7F 381 | , 0xC0 , 5 , 0xF0 , 0x20 , 0xF8 , 0xF0 , 0x70 , 0xFE 382 | , 0x78 , 0x79 , 0xF8 , 2 , 0x3F ,0xC , 0x8F , 3 383 | //3a0 384 | , 0xF , 0x9F , 0xE0 , 0xC1 , 0xC7 , 0x87 , 3 , 0xC3 385 | , 0xC3 , 0xB0 , 0xE1 , 0xE1 , 0xC1 , 0xE3 , 0xE0 , 0x71 386 | , 0xF0 , 0 , 0xFC , 0x70 , 0x7C ,0xC , 0x3E , 0x38 387 | , 0xE , 0x1C , 0x70 , 0xC3 , 0xC7 , 3 , 0x81 , 0xC1 388 | //3c0 389 | , 0xC7 , 0xE7 , 0 ,0xF , 0xC7 , 0x87 , 0x19 , 9 390 | , 0xEF , 0xC4 , 0x33 , 0xE0 , 0xC1 , 0xFC , 0xF8 , 0x70 391 | , 0xF0 , 0x78 , 0xF8 , 0xF0 , 0x61 , 0xC7 , 0 , 0x1F 392 | , 0xF8 , 1 , 0x7C , 0xF8 , 0xF0 , 0x78 , 0x70 , 0x3C 393 | //3e0 394 | , 0x7C , 0xCE ,0xE , 0x21 , 0x83 , 0xCF , 8 , 7 395 | , 0x8F , 8 , 0xC1 , 0x87 , 0x8F , 0x80 , 0xC7 , 0xE3 396 | , 0 , 7 , 0xF8 , 0xE0 , 0xEF , 0 , 0x39 , 0xF7 397 | , 0x80 ,0xE , 0xF8 , 0xE1 , 0xE3 , 0xF8 , 0x21 , 0x9F 398 | //400 399 | , 0xC0 , 0xFF , 3 , 0xF8 , 7 , 0xC0 , 0x1F , 0xF8 400 | , 0xC4 , 4 , 0xFC , 0xC4 , 0xC1 , 0xBC , 0x87 , 0xF0 401 | , 0xF , 0xC0 , 0x7F , 5 , 0xE0 , 0x25 , 0xEC , 0xC0 402 | , 0x3E , 0x84 , 0x47 , 0xF0 , 0x8E , 3 , 0xF8 , 3 403 | //420 404 | , 0xFB , 0xC0 , 0x19 , 0xF8 , 7 , 0x9C ,0xC , 0x17 405 | , 0xF8 , 7 , 0xE0 , 0x1F , 0xA1 , 0xFC ,0xF , 0xFC 406 | , 1 , 0xF0 , 0x3F , 0 , 0xFE , 3 , 0xF0 , 0x1F 407 | , 0 , 0xFD , 0 , 0xFF , 0x88 ,0xD , 0xF9 , 1 408 | //440 409 | , 0xFF , 0 , 0x70 , 7 , 0xC0 , 0x3E , 0x42 , 0xF3 410 | , 0xD , 0xC4 , 0x7F , 0x80 , 0xFC , 7 , 0xF0 , 0x5E 411 | , 0xC0 , 0x3F , 0 , 0x78 , 0x3F , 0x81 , 0xFF , 1 412 | , 0xF8 , 1 , 0xC3 , 0xE8 ,0xC , 0xE4 , 0x64 , 0x8F 413 | ////460 414 | , 0xE4 ,0xF , 0xF0 , 7 , 0xF0 , 0xC2 , 0x1F , 0 415 | , 0x7F , 0xC0 , 0x6F , 0x80 , 0x7E , 3 , 0xF8 , 7 416 | , 0xF0 , 0x3F , 0xC0 , 0x78 ,0xF , 0x82 , 7 , 0xFE 417 | , 0x22 , 0x77 , 0x70 , 2 , 0x76 , 3 , 0xFE , 0 418 | //480 419 | , 0xFE , 0x67 , 0 , 0x7C , 0xC7 , 0xF1 , 0x8E , 0xC6 420 | , 0x3B , 0xE0 , 0x3F , 0x84 , 0xF3 , 0x19 , 0xD8 , 3 421 | , 0x99 , 0xFC , 9 , 0xB8 ,0xF , 0xF8 , 0 , 0x9D 422 | , 0x24 , 0x61 , 0xF9 ,0xD , 0 , 0xFD , 3 , 0xF0 423 | //4a0 424 | , 0x1F , 0x90 , 0x3F , 1 , 0xF8 , 0x1F , 0xD0 ,0xF 425 | , 0xF8 , 0x37 , 1 , 0xF8 , 7 , 0xF0 ,0xF , 0xC0 426 | , 0x3F , 0 , 0xFE , 3 , 0xF8 ,0xF , 0xC0 , 0x3F 427 | , 0 , 0xFA , 3 , 0xF0 ,0xF , 0x80 , 0xFF , 1 428 | //4c0 429 | , 0xB8 , 7 , 0xF0 , 1 , 0xFC , 1 , 0xBC , 0x80 430 | , 0x13 , 0x1E , 0 , 0x7F , 0xE1 , 0x40 , 0x7F , 0xA0 431 | , 0x7F , 0xB0 , 0 , 0x3F , 0xC0 , 0x1F , 0xC0 , 0x38 432 | , 0xF , 0xF0 , 0x1F , 0x80 , 0xFF , 1 , 0xFC , 3 433 | //4e0 434 | , 0xF1 , 0x7E , 1 , 0xFE , 1 , 0xF0 , 0xFF , 0 435 | , 0x7F , 0xC0 , 0x1D , 7 , 0xF0 ,0xF , 0xC0 , 0x7E 436 | , 6 , 0xE0 , 7 , 0xE0 ,0xF , 0xF8 , 6 , 0xC1 437 | , 0xFE , 1 , 0xFC , 3 , 0xE0 ,0xF , 0 , 0xFC 438 | }; 439 | 440 | 441 | 442 | #endif 443 | -------------------------------------------------------------------------------- /src/SamTabs.h: -------------------------------------------------------------------------------- 1 | #ifndef SAMTABS_H 2 | #define SAMTABS_H 3 | 4 | //tab40672 5 | const unsigned char stressInputTable[] = 6 | { 7 | '*', '1', '2', '3', '4', '5', '6', '7', '8' 8 | }; 9 | 10 | //tab40682 11 | const unsigned char signInputTable1[]={ 12 | ' ', '.', '?', ',', '-', 'I', 'I', 'E', 13 | 'A', 'A', 'A', 'A', 'U', 'A', 'I', 'E', 14 | 'U', 'O', 'R', 'L', 'W', 'Y', 'W', 'R', 15 | 'L', 'W', 'Y', 'M', 'N', 'N', 'D', 'Q', 16 | 'S', 'S', 'F', 'T', '/', '/', 'Z', 'Z', 17 | 'V', 'D', 'C', '*', 'J', '*', '*', '*', 18 | 'E', 'A', 'O', 'A', 'O', 'U', 'B', '*', 19 | '*', 'D', '*', '*', 'G', '*', '*', 'G', 20 | '*', '*', 'P', '*', '*', 'T', '*', '*', 21 | 'K', '*', '*', 'K', '*', '*', 'U', 'U', 22 | 'U' 23 | }; 24 | 25 | //tab40763 26 | const unsigned char signInputTable2[] = 27 | { 28 | '*', '*', '*', '*', '*', 'Y', 'H', 'H', 29 | 'E', 'A', 'H', 'O', 'H', 'X', 'X', 'R', 30 | 'X', 'H', 'X', 'X', 'X', 'X', 'H', '*', 31 | '*', '*', '*', '*', '*', 'X', 'X', '*', 32 | '*', 'H', '*', 'H', 'H', 'X', '*', 'H', 33 | '*', 'H', 'H', '*', '*', '*', '*', '*', 34 | 'Y', 'Y', 'Y', 'W', 'W', 'W', '*', '*', 35 | '*', '*', '*', '*', '*', '*', '*', 'X', 36 | '*', '*', '*', '*', '*', '*', '*', '*', 37 | '*', '*', '*', 'X', '*', '*', 'L', 'M', 38 | 'N' 39 | }; 40 | 41 | //loc_9F8C 42 | const unsigned char flags[]={ 43 | 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0xA4 , 0xA4 , 0xA4 , 44 | 0xA4 , 0xA4 , 0xA4 , 0x84 , 0x84 , 0xA4 , 0xA4 , 0x84 , 45 | 0x84 , 0x84 , 0x84 , 0x84 , 0x84 , 0x84 , 0x44 , 0x44 , 46 | 0x44 , 0x44 , 0x44 , 0x4C , 0x4C , 0x4C , 0x48 , 0x4C , 47 | 0x40 , 0x40 , 0x40 , 0x40 , 0x40 , 0x40 , 0x44 , 0x44 , 48 | 0x44 , 0x44 , 0x48 , 0x40 , 0x4C , 0x44 , 0x00 , 0x00 , 49 | 0xB4 , 0xB4 , 0xB4 , 0x94 , 0x94 , 0x94 , 0x4E , 0x4E , 50 | 0x4E , 0x4E , 0x4E , 0x4E , 0x4E , 0x4E , 0x4E , 0x4E , 51 | 0x4E , 0x4E , 0x4B , 0x4B , 0x4B , 0x4B , 0x4B , 0x4B , 52 | 0x4B , 0x4B , 0x4B , 0x4B , 0x4B , 0x4B , 0x80 , 0xC1 , 53 | 0xC1 54 | 55 | 56 | }; 57 | 58 | //??? flags overlap flags2 59 | //loc_9FDA 60 | const unsigned char flags2[] = 61 | { 62 | 0x80 , 0xC1 , 0xC1 , 0xC1 , 0xC1 , 0x00 , 0x00 , 0x00 , 63 | 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 64 | 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x10 , 65 | 0x10 , 0x10 , 0x10 , 0x08 , 0x0C , 0x08 , 0x04 , 0x40 , 66 | 0x24 , 0x20 , 0x20 , 0x24 , 0x00 , 0x00 , 0x24 , 0x20 , 67 | 0x20 , 0x24 , 0x20 , 0x20 , 0x00 , 0x20 , 0x00 , 0x00 , 68 | 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 69 | 0x00 , 0x04 , 0x04 , 0x04 , 0x00 , 0x00 , 0x00 , 0x00 , 70 | 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x04 , 0x04 , 0x04 , 71 | 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 72 | }; 73 | 74 | 75 | 76 | //tab45616??? 77 | const unsigned char phonemeStressedLengthTable[] = 78 | { 79 | 0x00 , 0x12 , 0x12 , 0x12 , 8 ,0xB , 9 ,0xB , 80 | 0xE ,0xF ,0xB , 0x10 ,0xC , 6 , 6 ,0xE , 81 | 0xC ,0xE ,0xC ,0xB , 8 , 8 ,0xB ,0xA , 82 | 9 , 8 , 8 , 8 , 8 , 8 , 3 , 5 , 83 | 2 , 2 , 2 , 2 , 2 , 2 , 6 , 6 , 84 | 8 , 6 , 6 , 2 , 9 , 4 , 2 , 1 , 85 | 0xE ,0xF ,0xF ,0xF ,0xE ,0xE , 8 , 2 , 86 | 2 , 7 , 2 , 1 , 7 , 2 , 2 , 7 , 87 | 2 , 2 , 8 , 2 , 2 , 6 , 2 , 2 , 88 | 7 , 2 , 4 , 7 , 1 , 4 , 5 , 5 89 | }; 90 | 91 | //tab45536??? 92 | const unsigned char phonemeLengthTable[] = 93 | { 94 | 0 , 0x12 , 0x12 , 0x12 , 8 , 8 , 8 , 8 , 95 | 8 ,0xB , 6 ,0xC ,0xA , 5 , 5 ,0xB , 96 | 0xA ,0xA ,0xA , 9 , 8 , 7 , 9 , 7 , 97 | 6 , 8 , 6 , 7 , 7 , 7 , 2 , 5 , 98 | 2 , 2 , 2 , 2 , 2 , 2 , 6 , 6 , 99 | 7 , 6 , 6 , 2 , 8 , 3 , 1 , 0x1E , 100 | 0xD ,0xC ,0xC ,0xC ,0xE , 9 , 6 , 1 , 101 | 2 , 5 , 1 , 1 , 6 , 1 , 2 , 6 , 102 | 1 , 2 , 8 , 2 , 2 , 4 , 2 , 2 , 103 | 6 , 1 , 4 , 6 , 1 , 4 , 0xC7 , 0xFF 104 | }; 105 | 106 | 107 | 108 | /* 109 | 110 | Ind | phoneme | flags | 111 | -----|---------|----------| 112 | 0 | * | 00000000 | 113 | 1 | .* | 00000000 | 114 | 2 | ?* | 00000000 | 115 | 3 | ,* | 00000000 | 116 | 4 | -* | 00000000 | 117 | 118 | VOWELS 119 | 5 | IY | 10100100 | 120 | 6 | IH | 10100100 | 121 | 7 | EH | 10100100 | 122 | 8 | AE | 10100100 | 123 | 9 | AA | 10100100 | 124 | 10 | AH | 10100100 | 125 | 11 | AO | 10000100 | 126 | 17 | OH | 10000100 | 127 | 12 | UH | 10000100 | 128 | 16 | UX | 10000100 | 129 | 15 | ER | 10000100 | 130 | 13 | AX | 10100100 | 131 | 14 | IX | 10100100 | 132 | 133 | DIPHTONGS 134 | 48 | EY | 10110100 | 135 | 49 | AY | 10110100 | 136 | 50 | OY | 10110100 | 137 | 51 | AW | 10010100 | 138 | 52 | OW | 10010100 | 139 | 53 | UW | 10010100 | 140 | 141 | 142 | 21 | YX | 10000100 | 143 | 20 | WX | 10000100 | 144 | 18 | RX | 10000100 | 145 | 19 | LX | 10000100 | 146 | 37 | /X | 01000000 | 147 | 30 | DX | 01001000 | 148 | 149 | 150 | 22 | WH | 01000100 | 151 | 152 | 153 | VOICED CONSONANTS 154 | 23 | R* | 01000100 | 155 | 24 | L* | 01000100 | 156 | 25 | W* | 01000100 | 157 | 26 | Y* | 01000100 | 158 | 27 | M* | 01001100 | 159 | 28 | N* | 01001100 | 160 | 29 | NX | 01001100 | 161 | 54 | B* | 01001110 | 162 | 57 | D* | 01001110 | 163 | 60 | G* | 01001110 | 164 | 44 | J* | 01001100 | 165 | 38 | Z* | 01000100 | 166 | 39 | ZH | 01000100 | 167 | 40 | V* | 01000100 | 168 | 41 | DH | 01000100 | 169 | 170 | unvoiced CONSONANTS 171 | 32 | S* | 01000000 | 172 | 33 | SH | 01000000 | 173 | 34 | F* | 01000000 | 174 | 35 | TH | 01000000 | 175 | 66 | P* | 01001011 | 176 | 69 | T* | 01001011 | 177 | 72 | K* | 01001011 | 178 | 42 | CH | 01001000 | 179 | 36 | /H | 01000000 | 180 | 181 | 43 | ** | 01000000 | 182 | 45 | ** | 01000100 | 183 | 46 | ** | 00000000 | 184 | 47 | ** | 00000000 | 185 | 186 | 187 | 55 | ** | 01001110 | 188 | 56 | ** | 01001110 | 189 | 58 | ** | 01001110 | 190 | 59 | ** | 01001110 | 191 | 61 | ** | 01001110 | 192 | 62 | ** | 01001110 | 193 | 63 | GX | 01001110 | 194 | 64 | ** | 01001110 | 195 | 65 | ** | 01001110 | 196 | 67 | ** | 01001011 | 197 | 68 | ** | 01001011 | 198 | 70 | ** | 01001011 | 199 | 71 | ** | 01001011 | 200 | 73 | ** | 01001011 | 201 | 74 | ** | 01001011 | 202 | 75 | KX | 01001011 | 203 | 76 | ** | 01001011 | 204 | 77 | ** | 01001011 | 205 | 206 | 207 | SPECIAL 208 | 78 | UL | 10000000 | 209 | 79 | UM | 11000001 | 210 | 80 | UN | 11000001 | 211 | 31 | Q* | 01001100 | 212 | 213 | */ 214 | 215 | #endif 216 | -------------------------------------------------------------------------------- /src/debug.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | extern unsigned char signInputTable1[]; 4 | extern unsigned char signInputTable2[]; 5 | 6 | void PrintPhonemes(unsigned char *phonemeindex, unsigned char *phonemeLength, unsigned char *stress) 7 | { 8 | int i = 0; 9 | printf("===========================================\n"); 10 | 11 | printf("Internal Phoneme presentation:\n\n"); 12 | printf(" idx phoneme length stress\n"); 13 | printf("------------------------------\n"); 14 | 15 | while((phonemeindex[i] != 255) && (i < 255)) 16 | { 17 | if (phonemeindex[i] < 81) 18 | { 19 | printf(" %3i %c%c %3i %i\n", 20 | phonemeindex[i], 21 | signInputTable1[phonemeindex[i]], 22 | signInputTable2[phonemeindex[i]], 23 | phonemeLength[i], 24 | stress[i] 25 | ); 26 | } else 27 | { 28 | printf(" %3i ?? %3i %i\n", phonemeindex[i], phonemeLength[i], stress[i]); 29 | } 30 | i++; 31 | } 32 | printf("===========================================\n"); 33 | printf("\n"); 34 | } 35 | 36 | void PrintOutput( 37 | unsigned char *flag, 38 | unsigned char *f1, 39 | unsigned char *f2, 40 | unsigned char *f3, 41 | unsigned char *a1, 42 | unsigned char *a2, 43 | unsigned char *a3, 44 | unsigned char *p) 45 | { 46 | printf("===========================================\n"); 47 | printf("Final data for speech output:\n\n"); 48 | int i = 0; 49 | printf(" flags ampl1 freq1 ampl2 freq2 ampl3 freq3 pitch\n"); 50 | printf("------------------------------------------------\n"); 51 | while(i < 255) 52 | { 53 | printf("%5i %5i %5i %5i %5i %5i %5i %5i\n", flag[i], a1[i], f1[i], a2[i], f2[i], a3[i], f3[i], p[i]); 54 | i++; 55 | } 56 | printf("===========================================\n"); 57 | 58 | } 59 | 60 | extern unsigned char GetRuleByte(unsigned short mem62, unsigned char Y); 61 | 62 | void PrintRule(int offset) 63 | { 64 | int i = 1; 65 | unsigned char A = 0; 66 | printf("Applying rule: "); 67 | do 68 | { 69 | A = GetRuleByte(offset, i); 70 | if ((A&127) == '=') printf(" -> "); else printf("%c", A&127); 71 | i++; 72 | } while ((A&128)==0); 73 | printf("\n"); 74 | } 75 | -------------------------------------------------------------------------------- /src/debug.h: -------------------------------------------------------------------------------- 1 | #ifndef DEBUG_H 2 | #define DEBUG_H 3 | 4 | void PrintPhonemes(unsigned char *phonemeindex, unsigned char *phonemeLength, unsigned char *stress); 5 | void PrintOutput( 6 | unsigned char *flag, 7 | unsigned char *f1, 8 | unsigned char *f2, 9 | unsigned char *f3, 10 | unsigned char *a1, 11 | unsigned char *a2, 12 | unsigned char *a3, 13 | unsigned char *p); 14 | 15 | void PrintRule(int offset); 16 | 17 | #endif 18 | -------------------------------------------------------------------------------- /src/main.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | #include "reciter.h" 7 | #include "sam.h" 8 | #include "debug.h" 9 | 10 | #ifdef USESDL 11 | #include 12 | #include 13 | #endif 14 | 15 | void WriteWav(char* filename, char* buffer, int bufferlength) 16 | { 17 | FILE *file = fopen(filename, "wb"); 18 | if (file == NULL) return; 19 | //RIFF header 20 | fwrite("RIFF", 4, 1,file); 21 | unsigned int filesize=bufferlength + 12 + 16 + 8 - 8; 22 | fwrite(&filesize, 4, 1, file); 23 | fwrite("WAVE", 4, 1, file); 24 | 25 | //format chunk 26 | fwrite("fmt ", 4, 1, file); 27 | unsigned int fmtlength = 16; 28 | fwrite(&fmtlength, 4, 1, file); 29 | unsigned short int format=1; //PCM 30 | fwrite(&format, 2, 1, file); 31 | unsigned short int channels=1; 32 | fwrite(&channels, 2, 1, file); 33 | unsigned int samplerate = 22050; 34 | fwrite(&samplerate, 4, 1, file); 35 | fwrite(&samplerate, 4, 1, file); // bytes/second 36 | unsigned short int blockalign = 1; 37 | fwrite(&blockalign, 2, 1, file); 38 | unsigned short int bitspersample=8; 39 | fwrite(&bitspersample, 2, 1, file); 40 | 41 | //data chunk 42 | fwrite("data", 4, 1, file); 43 | fwrite(&bufferlength, 4, 1, file); 44 | fwrite(buffer, bufferlength, 1, file); 45 | 46 | fclose(file); 47 | } 48 | 49 | void PrintUsage() 50 | { 51 | printf("usage: sam [options] Word1 Word2 ....\n"); 52 | printf("options\n"); 53 | printf(" -phonetic enters phonetic mode. (see below)\n"); 54 | printf(" -pitch number set pitch value (default=64)\n"); 55 | printf(" -speed number set speed value (default=72)\n"); 56 | printf(" -throat number set throat value (default=128)\n"); 57 | printf(" -mouth number set mouth value (default=128)\n"); 58 | printf(" -wav filename output to wav instead of libsdl\n"); 59 | printf(" -sing special treatment of pitch\n"); 60 | printf(" -debug print additional debug messages\n"); 61 | printf("\n"); 62 | 63 | 64 | printf(" VOWELS VOICED CONSONANTS \n"); 65 | printf("IY f(ee)t R red \n"); 66 | printf("IH p(i)n L allow \n"); 67 | printf("EH beg W away \n"); 68 | printf("AE Sam W whale \n"); 69 | printf("AA pot Y you \n"); 70 | printf("AH b(u)dget M Sam \n"); 71 | printf("AO t(al)k N man \n"); 72 | printf("OH cone NX so(ng) \n"); 73 | printf("UH book B bad \n"); 74 | printf("UX l(oo)t D dog \n"); 75 | printf("ER bird G again \n"); 76 | printf("AX gall(o)n J judge \n"); 77 | printf("IX dig(i)t Z zoo \n"); 78 | printf(" ZH plea(s)ure \n"); 79 | printf(" DIPHTHONGS V seven \n"); 80 | printf("EY m(a)de DH (th)en \n"); 81 | printf("AY h(igh) \n"); 82 | printf("OY boy \n"); 83 | printf("AW h(ow) UNVOICED CONSONANTS \n"); 84 | printf("OW slow S Sam \n"); 85 | printf("UW crew Sh fish \n"); 86 | printf(" F fish \n"); 87 | printf(" TH thin \n"); 88 | printf(" SPECIAL PHONEMES P poke \n"); 89 | printf("UL sett(le) (=AXL) T talk \n"); 90 | printf("UM astron(omy) (=AXM) K cake \n"); 91 | printf("UN functi(on) (=AXN) CH speech \n"); 92 | printf("Q kitt-en (glottal stop) /H a(h)ead \n"); 93 | } 94 | 95 | #ifdef USESDL 96 | 97 | int pos = 0; 98 | void MixAudio(void *unused, Uint8 *stream, int len) 99 | { 100 | int bufferpos = GetBufferLength(); 101 | char *buffer = GetBuffer(); 102 | int i; 103 | if (pos >= bufferpos) return; 104 | if ((bufferpos-pos) < len) len = (bufferpos-pos); 105 | for(i=0; i 2 | #include 3 | #include "reciter.h" 4 | #include "ReciterTabs.h" 5 | #include "debug.h" 6 | 7 | unsigned char A, X, Y; 8 | extern int debug; 9 | 10 | static unsigned char inputtemp[256]; // secure copy of input tab36096 11 | 12 | void Code37055(unsigned char mem59) 13 | { 14 | X = mem59; 15 | X--; 16 | A = inputtemp[X]; 17 | Y = A; 18 | A = tab36376[Y]; 19 | return; 20 | } 21 | 22 | void Code37066(unsigned char mem58) 23 | { 24 | X = mem58; 25 | X++; 26 | A = inputtemp[X]; 27 | Y = A; 28 | A = tab36376[Y]; 29 | } 30 | 31 | unsigned char GetRuleByte(unsigned short mem62, unsigned char Y) 32 | { 33 | unsigned int address = mem62; 34 | 35 | if (mem62 >= 37541) 36 | { 37 | address -= 37541; 38 | return rules2[address+Y]; 39 | } 40 | address -= 32000; 41 | return rules[address+Y]; 42 | } 43 | 44 | int TextToPhonemes(unsigned char *input) // Code36484 45 | { 46 | //unsigned char *tab39445 = &mem[39445]; //input and output 47 | //unsigned char mem29; 48 | unsigned char mem56; //output position for phonemes 49 | unsigned char mem57; 50 | unsigned char mem58; 51 | unsigned char mem59; 52 | unsigned char mem60; 53 | unsigned char mem61; 54 | unsigned short mem62; // memory position of current rule 55 | 56 | unsigned char mem64; // position of '=' or current character 57 | unsigned char mem65; // position of ')' 58 | unsigned char mem66; // position of '(' 59 | unsigned char mem36653; 60 | 61 | inputtemp[0] = 32; 62 | 63 | // secure copy of input 64 | // because input will be overwritten by phonemes 65 | X = 1; 66 | Y = 0; 67 | do 68 | { 69 | //pos36499: 70 | A = input[Y] & 127; 71 | if ( A >= 112) A = A & 95; 72 | else if ( A >= 96) A = A & 79; 73 | 74 | inputtemp[X] = A; 75 | X++; 76 | Y++; 77 | } while (Y != 255); 78 | 79 | 80 | X = 255; 81 | inputtemp[X] = 27; 82 | mem61 = 255; 83 | 84 | 85 | pos36550: 86 | A = 255; 87 | mem56 = 255; 88 | 89 | 90 | pos36554: 91 | while(1) 92 | { 93 | mem61++; 94 | X = mem61; 95 | A = inputtemp[X]; 96 | mem64 = A; 97 | if (A == '[') 98 | { 99 | mem56++; 100 | X = mem56; 101 | A = 155; 102 | input[X] = 155; 103 | //goto pos36542; 104 | // Code39771(); //Code39777(); 105 | return 1; 106 | } 107 | 108 | //pos36579: 109 | if (A != '.') break; 110 | X++; 111 | Y = inputtemp[X]; 112 | A = tab36376[Y] & 1; 113 | if(A != 0) break; 114 | mem56++; 115 | X = mem56; 116 | A = '.'; 117 | input[X] = '.'; 118 | } //while 119 | 120 | 121 | //pos36607: 122 | A = mem64; 123 | Y = A; 124 | A = tab36376[A]; 125 | mem57 = A; 126 | if((A&2) != 0) 127 | { 128 | mem62 = 37541; 129 | goto pos36700; 130 | } 131 | 132 | //pos36630: 133 | A = mem57; 134 | if(A != 0) goto pos36677; 135 | A = 32; 136 | inputtemp[X] = ' '; 137 | mem56++; 138 | X = mem56; 139 | if (X > 120) goto pos36654; 140 | input[X] = A; 141 | goto pos36554; 142 | 143 | // ----- 144 | 145 | //36653 is unknown. Contains position 146 | 147 | pos36654: 148 | input[X] = 155; 149 | A = mem61; 150 | mem36653 = A; 151 | // mem29 = A; // not used 152 | // Code36538(); das ist eigentlich 153 | return 1; 154 | //Code39771(); 155 | //go on if there is more input ??? 156 | mem61 = mem36653; 157 | goto pos36550; 158 | 159 | pos36677: 160 | A = mem57 & 128; 161 | if(A == 0) 162 | { 163 | //36683: BRK 164 | return 0; 165 | } 166 | 167 | // go to the right rules for this character. 168 | X = mem64 - 'A'; 169 | mem62 = tab37489[X] | (tab37515[X]<<8); 170 | 171 | // ------------------------------------- 172 | // go to next rule 173 | // ------------------------------------- 174 | 175 | pos36700: 176 | 177 | // find next rule 178 | Y = 0; 179 | do 180 | { 181 | mem62 += 1; 182 | A = GetRuleByte(mem62, Y); 183 | } while ((A & 128) == 0); 184 | Y++; 185 | 186 | //pos36720: 187 | // find '(' 188 | while(1) 189 | { 190 | A = GetRuleByte(mem62, Y); 191 | if (A == '(') break; 192 | Y++; 193 | } 194 | mem66 = Y; 195 | 196 | //pos36732: 197 | // find ')' 198 | do 199 | { 200 | Y++; 201 | A = GetRuleByte(mem62, Y); 202 | } while(A != ')'); 203 | mem65 = Y; 204 | 205 | //pos36741: 206 | // find '=' 207 | do 208 | { 209 | Y++; 210 | A = GetRuleByte(mem62, Y); 211 | A = A & 127; 212 | } while (A != '='); 213 | mem64 = Y; 214 | 215 | X = mem61; 216 | mem60 = X; 217 | 218 | // compare the string within the bracket 219 | Y = mem66; 220 | Y++; 221 | //pos36759: 222 | while(1) 223 | { 224 | mem57 = inputtemp[X]; 225 | A = GetRuleByte(mem62, Y); 226 | if (A != mem57) goto pos36700; 227 | Y++; 228 | if(Y == mem65) break; 229 | X++; 230 | mem60 = X; 231 | } 232 | 233 | // the string in the bracket is correct 234 | 235 | //pos36787: 236 | A = mem61; 237 | mem59 = mem61; 238 | 239 | pos36791: 240 | while(1) 241 | { 242 | mem66--; 243 | Y = mem66; 244 | A = GetRuleByte(mem62, Y); 245 | mem57 = A; 246 | //36800: BPL 36805 247 | if ((A & 128) != 0) goto pos37180; 248 | X = A & 127; 249 | A = tab36376[X] & 128; 250 | if (A == 0) break; 251 | X = mem59-1; 252 | A = inputtemp[X]; 253 | if (A != mem57) goto pos36700; 254 | mem59 = X; 255 | } 256 | 257 | //pos36833: 258 | A = mem57; 259 | if (A == ' ') goto pos36895; 260 | if (A == '#') goto pos36910; 261 | if (A == '.') goto pos36920; 262 | if (A == '&') goto pos36935; 263 | if (A == '@') goto pos36967; 264 | if (A == '^') goto pos37004; 265 | if (A == '+') goto pos37019; 266 | if (A == ':') goto pos37040; 267 | // Code42041(); //Error 268 | //36894: BRK 269 | return 0; 270 | 271 | // -------------- 272 | 273 | pos36895: 274 | Code37055(mem59); 275 | A = A & 128; 276 | if(A != 0) goto pos36700; 277 | pos36905: 278 | mem59 = X; 279 | goto pos36791; 280 | 281 | // -------------- 282 | 283 | pos36910: 284 | Code37055(mem59); 285 | A = A & 64; 286 | if(A != 0) goto pos36905; 287 | goto pos36700; 288 | 289 | // -------------- 290 | 291 | 292 | pos36920: 293 | Code37055(mem59); 294 | A = A & 8; 295 | if(A == 0) goto pos36700; 296 | pos36930: 297 | mem59 = X; 298 | goto pos36791; 299 | 300 | // -------------- 301 | 302 | pos36935: 303 | Code37055(mem59); 304 | A = A & 16; 305 | if(A != 0) goto pos36930; 306 | A = inputtemp[X]; 307 | if (A != 72) goto pos36700; 308 | X--; 309 | A = inputtemp[X]; 310 | if ((A == 67) || (A == 83)) goto pos36930; 311 | goto pos36700; 312 | 313 | // -------------- 314 | 315 | pos36967: 316 | Code37055(mem59); 317 | A = A & 4; 318 | if(A != 0) goto pos36930; 319 | A = inputtemp[X]; 320 | if (A != 72) goto pos36700; 321 | if ((A != 84) && (A != 67) && (A != 83)) goto pos36700; 322 | mem59 = X; 323 | goto pos36791; 324 | 325 | // -------------- 326 | 327 | 328 | pos37004: 329 | Code37055(mem59); 330 | A = A & 32; 331 | if(A == 0) goto pos36700; 332 | 333 | pos37014: 334 | mem59 = X; 335 | goto pos36791; 336 | 337 | // -------------- 338 | 339 | pos37019: 340 | X = mem59; 341 | X--; 342 | A = inputtemp[X]; 343 | if ((A == 'E') || (A == 'I') || (A == 'Y')) goto pos37014; 344 | goto pos36700; 345 | // -------------- 346 | 347 | pos37040: 348 | Code37055(mem59); 349 | A = A & 32; 350 | if(A == 0) goto pos36791; 351 | mem59 = X; 352 | goto pos37040; 353 | 354 | //--------------------------------------- 355 | 356 | 357 | pos37077: 358 | X = mem58+1; 359 | A = inputtemp[X]; 360 | if (A != 'E') goto pos37157; 361 | X++; 362 | Y = inputtemp[X]; 363 | X--; 364 | A = tab36376[Y] & 128; 365 | if(A == 0) goto pos37108; 366 | X++; 367 | A = inputtemp[X]; 368 | if (A != 'R') goto pos37113; 369 | pos37108: 370 | mem58 = X; 371 | goto pos37184; 372 | pos37113: 373 | if ((A == 83) || (A == 68)) goto pos37108; // 'S' 'D' 374 | if (A != 76) goto pos37135; // 'L' 375 | X++; 376 | A = inputtemp[X]; 377 | if (A != 89) goto pos36700; 378 | goto pos37108; 379 | 380 | pos37135: 381 | if (A != 70) goto pos36700; 382 | X++; 383 | A = inputtemp[X]; 384 | if (A != 85) goto pos36700; 385 | X++; 386 | A = inputtemp[X]; 387 | if (A == 76) goto pos37108; 388 | goto pos36700; 389 | 390 | pos37157: 391 | if (A != 73) goto pos36700; 392 | X++; 393 | A = inputtemp[X]; 394 | if (A != 78) goto pos36700; 395 | X++; 396 | A = inputtemp[X]; 397 | if (A == 71) goto pos37108; 398 | //pos37177: 399 | goto pos36700; 400 | 401 | // ----------------------------------------- 402 | 403 | pos37180: 404 | 405 | A = mem60; 406 | mem58 = A; 407 | 408 | pos37184: 409 | Y = mem65 + 1; 410 | 411 | //37187: CPY 64 412 | // if(? != 0) goto pos37194; 413 | if(Y == mem64) goto pos37455; 414 | mem65 = Y; 415 | //37196: LDA (62),y 416 | A = GetRuleByte(mem62, Y); 417 | mem57 = A; 418 | X = A; 419 | A = tab36376[X] & 128; 420 | if(A == 0) goto pos37226; 421 | X = mem58+1; 422 | A = inputtemp[X]; 423 | if (A != mem57) goto pos36700; 424 | mem58 = X; 425 | goto pos37184; 426 | pos37226: 427 | A = mem57; 428 | if (A == 32) goto pos37295; // ' ' 429 | if (A == 35) goto pos37310; // '#' 430 | if (A == 46) goto pos37320; // '.' 431 | if (A == 38) goto pos37335; // '&' 432 | if (A == 64) goto pos37367; // '' 433 | if (A == 94) goto pos37404; // '' 434 | if (A == 43) goto pos37419; // '+' 435 | if (A == 58) goto pos37440; // ':' 436 | if (A == 37) goto pos37077; // '%' 437 | //pos37291: 438 | // Code42041(); //Error 439 | //37294: BRK 440 | return 0; 441 | 442 | // -------------- 443 | pos37295: 444 | Code37066(mem58); 445 | A = A & 128; 446 | if(A != 0) goto pos36700; 447 | pos37305: 448 | mem58 = X; 449 | goto pos37184; 450 | 451 | // -------------- 452 | 453 | pos37310: 454 | Code37066(mem58); 455 | A = A & 64; 456 | if(A != 0) goto pos37305; 457 | goto pos36700; 458 | 459 | // -------------- 460 | 461 | 462 | pos37320: 463 | Code37066(mem58); 464 | A = A & 8; 465 | if(A == 0) goto pos36700; 466 | 467 | pos37330: 468 | mem58 = X; 469 | goto pos37184; 470 | 471 | // -------------- 472 | 473 | pos37335: 474 | Code37066(mem58); 475 | A = A & 16; 476 | if(A != 0) goto pos37330; 477 | A = inputtemp[X]; 478 | if (A != 72) goto pos36700; 479 | X++; 480 | A = inputtemp[X]; 481 | if ((A == 67) || (A == 83)) goto pos37330; 482 | goto pos36700; 483 | 484 | // -------------- 485 | 486 | 487 | pos37367: 488 | Code37066(mem58); 489 | A = A & 4; 490 | if(A != 0) goto pos37330; 491 | A = inputtemp[X]; 492 | if (A != 72) goto pos36700; 493 | if ((A != 84) && (A != 67) && (A != 83)) goto pos36700; 494 | mem58 = X; 495 | goto pos37184; 496 | 497 | // -------------- 498 | 499 | pos37404: 500 | Code37066(mem58); 501 | A = A & 32; 502 | if(A == 0) goto pos36700; 503 | pos37414: 504 | mem58 = X; 505 | goto pos37184; 506 | 507 | // -------------- 508 | 509 | pos37419: 510 | X = mem58; 511 | X++; 512 | A = inputtemp[X]; 513 | if ((A == 69) || (A == 73) || (A == 89)) goto pos37414; 514 | goto pos36700; 515 | 516 | // ---------------------- 517 | 518 | pos37440: 519 | 520 | Code37066(mem58); 521 | A = A & 32; 522 | if(A == 0) goto pos37184; 523 | mem58 = X; 524 | goto pos37440; 525 | pos37455: 526 | Y = mem64; 527 | mem61 = mem60; 528 | 529 | if (debug) 530 | PrintRule(mem62); 531 | 532 | pos37461: 533 | //37461: LDA (62),y 534 | A = GetRuleByte(mem62, Y); 535 | mem57 = A; 536 | A = A & 127; 537 | if (A != '=') 538 | { 539 | mem56++; 540 | X = mem56; 541 | input[X] = A; 542 | } 543 | 544 | //37478: BIT 57 545 | //37480: BPL 37485 //not negative flag 546 | if ((mem57 & 128) == 0) goto pos37485; //??? 547 | goto pos36554; 548 | pos37485: 549 | Y++; 550 | goto pos37461; 551 | } 552 | -------------------------------------------------------------------------------- /src/reciter.h: -------------------------------------------------------------------------------- 1 | #ifndef RECITER_C 2 | #define RECITER_C 3 | 4 | //int TextToPhonemes(char *input, char *output); 5 | 6 | int TextToPhonemes(unsigned char *input); 7 | 8 | #endif 9 | -------------------------------------------------------------------------------- /src/render.h: -------------------------------------------------------------------------------- 1 | #ifndef RENDER_H 2 | #define RENDER_H 3 | 4 | void Render(); 5 | void SetMouthThroat(unsigned char mouth, unsigned char throat); 6 | 7 | #endif 8 | -------------------------------------------------------------------------------- /src/sam.h: -------------------------------------------------------------------------------- 1 | #ifndef SAM_H 2 | #define SAM_H 3 | 4 | void SetInput(char *_input); 5 | void SetSpeed(unsigned char _speed); 6 | void SetPitch(unsigned char _pitch); 7 | void SetMouth(unsigned char _mouth); 8 | void SetThroat(unsigned char _throat); 9 | void EnableSingmode(); 10 | void EnableDebug(); 11 | 12 | int SAMMain(); 13 | 14 | char* GetBuffer(); 15 | int GetBufferLength(); 16 | 17 | 18 | //char input[]={"/HAALAOAO MAYN NAAMAEAE IHSTT SAEBAASTTIHAAN \x9b\x9b\0"}; 19 | //unsigned char input[]={"/HAALAOAO \x9b\0"}; 20 | //unsigned char input[]={"AA \x9b\0"}; 21 | //unsigned char input[] = {"GUH5DEHN TAEG\x9b\0"}; 22 | 23 | //unsigned char input[]={"AY5 AEM EY TAO4LXKIHNX KAX4MPYUX4TAH. GOW4 AH/HEH3D PAHNK.MEYK MAY8 DEY.\x9b\0"}; 24 | //unsigned char input[]={"/HEH3LOW2, /HAW AH YUX2 TUXDEY. AY /HOH3P YUX AH FIYLIHNX OW4 KEY.\x9b\0"}; 25 | //unsigned char input[]={"/HEY2, DHIHS IH3Z GREY2T. /HAH /HAH /HAH.AYL BIY5 BAEK.\x9b\0"}; 26 | //unsigned char input[]={"/HAH /HAH /HAH \x9b\0"}; 27 | //unsigned char input[]={"/HAH /HAH /HAH.\x9b\0"}; 28 | //unsigned char input[]={".TUW BIY5Y3,, OHR NAA3T - TUW BIY5IYIY., DHAE4T IHZ DHAH KWEH4SCHAHN.\x9b\0"}; 29 | //unsigned char input[]={"/HEY2, DHIHS \x9b\0"}; 30 | 31 | //unsigned char input[]={" IYIHEHAEAAAHAOOHUHUXERAXIX \x9b\0"}; 32 | //unsigned char input[]={" RLWWYMNNXBDGJZZHVDH \x9b\0"}; 33 | //unsigned char input[]={" SSHFTHPTKCH/H \x9b\0"}; 34 | 35 | //unsigned char input[]={" EYAYOYAWOWUW ULUMUNQ YXWXRXLX/XDX\x9b\0"}; 36 | 37 | 38 | #endif 39 | --------------------------------------------------------------------------------