- Timestamp:
- 10/22/13 09:02:23 (9 years ago)
- Branches:
- master, Servo
- Children:
- 9c3d59b
- Parents:
- ac05196
- Location:
- iOS/Orbit
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
iOS/Orbit/Orbit/AudioGenerator.m
rc9b9edd r37ca4e8 11 11 12 12 13 #define SAMPLE_RATE_F 4 4100.f13 #define SAMPLE_RATE_F 48000.f 14 14 #define SIGNAL_WAVE_FREQUENCY 100.f 15 15 … … 18 18 * Half periods in the audio code, in seconds. 19 19 */ 20 #define longHIGH 0.000829649 21 #define longLOW 0.000797027 22 #define shortHIGH 0.000412649 23 #define shortLOW 0.000378351 24 25 #define IDLE_TIME_MS 20 20 21 22 23 //#define longHIGH 0.000829649 24 //#define longLOW 0.000797027 25 //#define shortHIGH 0.000412649 26 //#define shortLOW 0.000378351 27 28 #define longHIGH 0.00089583333 29 #define longLOW 0.00070833333 30 #define shortHIGH 0.00045833333 31 #define shortLOW 0.0003125 32 33 #define USEFUL_BIT_SIZE 29 34 35 #define IDLE_TIME_MS 84 26 36 27 37 28 38 volatile BOOL g_refreshCtrCode = NO; 29 39 40 //22 = 0.00045833333 41 //15 = 0.0003125 42 // 43 //43 = 0.00089583333 44 //34 = 0.00070833333 45 // 46 //14 = 0.00029166667 47 //131 = 0.0027291667 48 //16 = 0.00033333333 49 //12 = 0.00025 50 //3 = 0.0000625 51 //18 = 0.000375 52 //3998 = 0.083291667 53 //4049 = 0.084354167 54 55 #define INIT_CODE_DATA_SIZE 202 56 57 58 double g_initCodeTime[INIT_CODE_DATA_SIZE] = { 59 60 0.00089583333, 0.0003125, 61 0.00089583333, 0.0003125, 62 0.00089583333, 0.00070833333, 63 0.00045833333, 0.0003125, 64 0.00089583333, 0.00070833333, 65 0.00089583333, 0.00070833333, 66 0.00045833333, 0.0003125, 67 0.00089583333, 0.00070833333, 68 0.00089583333, 0.00070833333, 69 0.00089583333, 0.00070833333, 70 0.00045833333, 0.0003125, 71 0.00089583333, 0.00070833333, 72 0.00045833333, 0.0003125, 73 0.00045833333, 0.0003125, 74 0.00089583333, 0.00070833333, 75 0.00089583333, 0.00070833333, 76 0.00045833333, 0.0003125, 77 0.00045833333, 0.0003125, 78 0.00089583333, 0.00070833333, 79 0.00045833333, 0.0003125, 80 0.00045833333, 0.0003125, 81 0.00089583333, 0.00070833333, 82 0.00089583333, 0.00070833333, 83 0.00089583333, 0.00070833333, 84 0.00089583333, 0.00070833333, 85 0.00089583333, 0.00070833333, 86 0.00045833333, 0.0003125, 87 0.00089583333, 0.00070833333, 88 0.00089583333, 0.00070833333, 89 0.00045833333, 0.0003125, 90 0.00089583333, 0.00070833333, 91 92 0.083291667, 93 94 0.00089583333, 0.0003125, 95 0.00089583333, 0.0003125, 96 0.00089583333, 0.00070833333, 97 0.00045833333, 0.0003125, 98 0.00089583333, 0.00070833333, 99 0.00089583333, 0.00070833333, 100 0.00045833333, 0.0003125, 101 0.00089583333, 0.00070833333, 102 0.00089583333, 0.00070833333, 103 0.00089583333, 0.00070833333, 104 0.00045833333, 0.0003125, 105 0.00089583333, 0.00070833333, 106 0.00045833333, 0.0003125, 107 0.00045833333, 0.0003125, 108 0.00089583333, 0.00070833333, 109 0.00089583333, 0.00070833333, 110 0.00045833333, 0.0003125, 111 0.00045833333, 0.0003125, 112 0.00089583333, 0.00070833333, 113 0.00045833333, 0.0003125, 114 0.00045833333, 0.0003125, 115 0.00089583333, 0.00070833333, 116 0.00089583333, 0.00070833333, 117 0.00089583333, 0.00070833333, 118 0.00089583333, 0.00070833333, 119 0.00089583333, 0.00070833333, 120 0.00045833333, 0.0003125, 121 0.00089583333, 0.00070833333, 122 0.00089583333, 0.00070833333, 123 0.00045833333, 0.0003125, 124 0.00089583333, 0.00070833333, 125 126 0.083291667, 127 128 0.00029166667, 0.0027291667, 129 0.00029166667, 0.0027291667, 130 0.00029166667, 0.00033333333, 131 0.00025, 0.0000625, 132 0.00025, 0.0000625, 133 0.00025, 0.0000625, 134 0.00025, 0.0000625, 135 0.00025, 0.0000625, 136 0.00025, 0.0000625, 137 138 0.084354167, 139 140 0.00029166667, 0.0027291667, 141 0.00029166667, 0.0027291667, 142 0.00029166667, 0.00033333333, 143 0.00025, 0.0000625, 144 0.00025, 0.0000625, 145 0.00025, 0.0000625, 146 0.00025, 0.0000625, 147 0.00025, 0.0000625, 148 0.00025, 0.0000625, 149 150 0.084354167, 151 152 0.00029166667, 0.0027291667, 153 0.00029166667, 0.0027291667, 154 0.00025, 0.000375, 155 0.00025, 0.000375, 156 0.00025, 0.0000625, 157 0.00025, 0.0000625, 158 0.00025, 0.0000625, 159 0.00025, 0.0000625, 160 0.00025, 0.0000625, 161 162 0.084354167, 163 164 0.00029166667, 0.0027291667, 165 0.00029166667, 0.0027291667, 166 0.00025, 0.000375, 167 0.00025, 0.000375, 168 0.00025, 0.0000625, 169 0.00025, 0.0000625, 170 0.00025, 0.0000625, 171 0.00025, 0.0000625, 172 0.00025, 0.0000625, 173 174 0.084354167 175 176 }; 177 178 179 BOOL g_initCodeUD[INIT_CODE_DATA_SIZE] = { 180 181 YES, NO, 182 YES, NO, 183 YES, NO, 184 YES, NO, 185 YES, NO, 186 YES, NO, 187 YES, NO, 188 YES, NO, 189 YES, NO, 190 YES, NO, 191 YES, NO, 192 YES, NO, 193 YES, NO, 194 YES, NO, 195 YES, NO, 196 YES, NO, 197 YES, NO, 198 YES, NO, 199 YES, NO, 200 YES, NO, 201 YES, NO, 202 YES, NO, 203 YES, NO, 204 YES, NO, 205 YES, NO, 206 YES, NO, 207 YES, NO, 208 YES, NO, 209 YES, NO, 210 YES, NO, 211 YES, NO, 212 213 NO, 214 215 YES, NO, 216 YES, NO, 217 YES, NO, 218 YES, NO, 219 YES, NO, 220 YES, NO, 221 YES, NO, 222 YES, NO, 223 YES, NO, 224 YES, NO, 225 YES, NO, 226 YES, NO, 227 YES, NO, 228 YES, NO, 229 YES, NO, 230 YES, NO, 231 YES, NO, 232 YES, NO, 233 YES, NO, 234 YES, NO, 235 YES, NO, 236 YES, NO, 237 YES, NO, 238 YES, NO, 239 YES, NO, 240 YES, NO, 241 YES, NO, 242 YES, NO, 243 YES, NO, 244 YES, NO, 245 YES, NO, 246 247 NO, 248 249 YES, NO, 250 YES, NO, 251 YES, NO, 252 YES, NO, 253 YES, NO, 254 YES, NO, 255 YES, NO, 256 YES, NO, 257 YES, NO, 258 259 NO, 260 261 YES, NO, 262 YES, NO, 263 YES, NO, 264 YES, NO, 265 YES, NO, 266 YES, NO, 267 YES, NO, 268 YES, NO, 269 YES, NO, 270 271 NO, 272 273 YES, NO, 274 YES, NO, 275 YES, NO, 276 YES, NO, 277 YES, NO, 278 YES, NO, 279 YES, NO, 280 YES, NO, 281 YES, NO, 282 283 NO, 284 285 YES, NO, 286 YES, NO, 287 YES, NO, 288 YES, NO, 289 YES, NO, 290 YES, NO, 291 YES, NO, 292 YES, NO, 293 YES, NO, 294 295 NO, 296 297 }; 298 30 299 31 300 @interface AudioGenerator() 32 301 { 302 303 int m_initCodeLen[INIT_CODE_DATA_SIZE]; 33 304 34 305 AudioUnit m_audioUnit; … … 52 323 int idleWaveLen; 53 324 int idleWaveReadIdx; 325 326 327 328 BOOL sendInitWave; 329 330 int initWaveSendLenIdx; 331 int initWaveSendLenIdxLenMax; 332 int initWaveSendLenIdxLenCur; 333 334 Float32 initWaveCurAngle; 54 335 } 55 336 … … 108 389 if (m_audioUnit == nil) { 109 390 [self prepareAudioUnit]; 391 392 sendInitWave = YES; 393 initWaveSendLenIdx = 0; 394 initWaveSendLenIdxLenMax = m_initCodeLen[0]; 395 initWaveSendLenIdxLenCur = 0; 396 initWaveCurAngle = 0.f; 110 397 } 111 398 … … 265 552 } 266 553 267 if (ctrWaveReadIdx <= ctrWaveDataLen && idleWaveReadIdx == 0) { 268 *buffer++ = ctrWave[ctrWaveReadIdx++]; 269 } 270 else if (ctrWaveReadIdx > ctrWaveDataLen && idleWaveReadIdx <= idleWaveLen) 271 { 272 *buffer++ = 0.0f; 273 idleWaveReadIdx++; 274 } 275 else if (ctrWaveReadIdx > ctrWaveDataLen && idleWaveReadIdx > idleWaveLen) 276 { 277 ctrWaveReadIdx = 0; 278 idleWaveReadIdx = 0; 279 *buffer++ = ctrWave[ctrWaveReadIdx++]; 280 } 554 if (sendInitWave) { 555 556 double increment = M_PI/(g_initCodeTime[initWaveSendLenIdx] * SAMPLE_RATE_F); 557 558 if (g_initCodeUD[initWaveSendLenIdx]) { 559 *buffer++ = sinf(initWaveCurAngle); 560 initWaveCurAngle += increment; 561 } 562 else { 563 *buffer++ = 0.0f; 564 } 565 566 initWaveSendLenIdxLenCur++; 567 568 if (initWaveSendLenIdxLenCur >= initWaveSendLenIdxLenMax) { 569 initWaveSendLenIdx++; 570 571 if (initWaveSendLenIdx >= INIT_CODE_DATA_SIZE) { 572 sendInitWave = NO; 573 continue; 574 } 575 else { 576 initWaveSendLenIdxLenMax = m_initCodeLen[initWaveSendLenIdx]; 577 initWaveSendLenIdxLenCur = 0; 578 initWaveCurAngle = 0.f; 579 } 580 581 582 } 583 584 585 } 586 else { 587 if (ctrWaveReadIdx < ctrWaveDataLen && idleWaveReadIdx == 0) { 588 *buffer++ = ctrWave[ctrWaveReadIdx++]; 589 } 590 else if (ctrWaveReadIdx >= ctrWaveDataLen && idleWaveReadIdx < idleWaveLen) 591 { 592 *buffer++ = 0.0f; 593 idleWaveReadIdx++; 594 } 595 else if (ctrWaveReadIdx >= ctrWaveDataLen && idleWaveReadIdx >= idleWaveLen) 596 { 597 ctrWaveReadIdx = 0; 598 idleWaveReadIdx = 0; 599 *buffer++ = ctrWave[ctrWaveReadIdx++]; 600 } 601 } 602 281 603 282 604 } … … 326 648 [self generateWaveBit]; 327 649 650 651 [self initCodeWaveLen]; 652 328 653 [self generateCtrWaveHead]; 329 654 [self generateWaveBit_01]; … … 332 657 } 333 658 659 - (void)initCodeWaveLen 660 { 661 //int initCodeDataLen = sizeof(g_initCodeTime) / sizeof(double); 662 663 for (int i=0; i < INIT_CODE_DATA_SIZE; ++i) { 664 m_initCodeLen[i] = [self arraySizeWithHalfPeriod:g_initCodeTime[i]]; 665 } 666 667 initWaveSendLenIdx = 0; 668 initWaveSendLenIdxLenMax = m_initCodeLen[0]; 669 initWaveSendLenIdxLenCur = 0; 670 initWaveCurAngle = 0.f; 671 } 672 334 673 - (void)setupCtrWave 335 674 { 336 675 ctrWaveMaxLen = ctrWaveHeadLen + 337 27* (waveBit_01_len[0] > waveBit_01_len[1] ? waveBit_01_len[0] : waveBit_01_len[1]) +676 USEFUL_BIT_SIZE * (waveBit_01_len[0] > waveBit_01_len[1] ? waveBit_01_len[0] : waveBit_01_len[1]) + 338 677 longHighLength; 339 678 … … 348 687 } 349 688 689 690 350 691 - (void)generateCtrWaveHead 351 692 { 352 int ctr_longH_len = [self arraySizeWithHalfPeriod:longHIGH - sampleTime * 2];353 int ctr_shortL_len = [self arraySizeWithHalfPeriod:shortLOW + sampleTime * 2];354 355 ctrWaveHeadLen = longLowLength +2 * ctr_longH_len + 2 * ctr_shortL_len;693 int ctr_longH_len = [self arraySizeWithHalfPeriod:longHIGH]; 694 int ctr_shortL_len = [self arraySizeWithHalfPeriod:shortLOW]; 695 696 ctrWaveHeadLen = 2 * ctr_longH_len + 2 * ctr_shortL_len; 356 697 ctrWaveHead = malloc(sizeof(Float32) * ctrWaveHeadLen); 357 698 358 699 int idx = 0; 359 360 for (int i=0; i < longLowLength; ++i) {361 ctrWaveHead[idx++] = waveLongLow[i];362 }363 700 364 701 double increment = M_PI/((longHIGH - sampleTime * 2) * SAMPLE_RATE_F); … … 449 786 code += ((channel >> 1) & 1) << 19; 450 787 code += (channel & 1) << 11; 451 return code + [self codeChecksum:code]; 788 code += [self codeChecksum:code]; 789 790 return (code << 1) + 1; 452 791 } 453 792 … … 456 795 int ctr_code = [self generateCode]; 457 796 458 //ctr_code = 0; 797 //1110110111010011001001111101101 798 799 //ctr_code = 0B00010110111010011001001111101101; 800 //ctr_code = 0x0000FFFF; 459 801 460 802 [self codeToWave:ctr_code]; … … 470 812 Float32 *pos = ctrWave + ctrWaveHeadLen; 471 813 472 for (int i= 27; i >= 0 ; --i) {814 for (int i=USEFUL_BIT_SIZE-1; i >= 0 ; --i) { 473 815 int bit = (code >> i) & 1; 474 816 memcpy(pos, waveBit_01[bit], sizeof(Float32) * waveBit_01_len[bit]); -
iOS/Orbit/Orbit/SignalConverter.m
rc9b9edd r37ca4e8 284 284 pitch = p; 285 285 286 [audioPlayer playWithThrottle:throttle yaw:yaw pitch:pitch]; 286 if (testing) { 287 [audioPlayer playWithThrottle:throttle yaw:yaw pitch:pitch]; 288 } 289 287 290 } 288 291 -
iOS/Orbit/Orbit/controllers/AdvancedViewController.m
r505e3d5 r37ca4e8 27 27 signalConverter = appDelegate.signalConverter; 28 28 29 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Help Wanted" message:@"Please join our Open Source development community to help us port this feature! See link to Forums under Support tab" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];30 [alert show];29 // UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Help Wanted" message:@"Please join our Open Source development community to help us port this feature! See link to Forums under Support tab" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; 30 // [alert show]; 31 31 } 32 32 -
iOS/Orbit/Orbit/en.lproj/MainStoryboard.storyboard
rac05196 r37ca4e8 1 1 <?xml version="1.0" encoding="UTF-8" standalone="no"?> 2 <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="4510" systemVersion="12 E55" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" initialViewController="T1J-Fd-fkz">2 <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="4510" systemVersion="12F45" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" initialViewController="T1J-Fd-fkz"> 3 3 <dependencies> 4 <deployment defaultVersion="1 552" identifier="iOS"/>4 <deployment defaultVersion="1280" identifier="iOS"/> 5 5 <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3742"/> 6 6 </dependencies> … … 103 103 </view> 104 104 <view contentMode="scaleToFill" id="EIx-J4-YAd" userLabel="Pitch Box"> 105 <rect key="frame" x="6" y=" 345" width="309" height="90"/>105 <rect key="frame" x="6" y="289" width="309" height="90"/> 106 106 <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/> 107 107 <subviews> … … 143 143 </view> 144 144 <view contentMode="scaleToFill" id="5aV-7g-jF0" userLabel="Yaw Box"> 145 <rect key="frame" x="6" y=" 213" width="309" height="86"/>145 <rect key="frame" x="6" y="189" width="309" height="86"/> 146 146 <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/> 147 147 <subviews> … … 154 154 </label> 155 155 <slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="0.0" maxValue="1" id="8k8-7Y-hWH" userLabel="Yaw"> 156 <rect key="frame" x="4" y="2 6" width="254" height="29"/>156 <rect key="frame" x="4" y="25" width="254" height="29"/> 157 157 <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/> 158 158 <connections> … … 360 360 </view> 361 361 <view contentMode="scaleToFill" id="lfi-AW-BAx"> 362 <rect key="frame" x="7" y="31 4" width="308" height="160"/>362 <rect key="frame" x="7" y="312" width="308" height="117"/> 363 363 <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/> 364 364 <subviews>
Note: See TracChangeset
for help on using the changeset viewer.