Cooper Baker · Crickets

Chirps from ten species of crickets were analyzed in terms of rhythm and dominant frequency to determine characteristics of constituent wavelets from each species' chirp. This data was translated into assembly language instructions to make an algorithm that synthesizes chirps. Each cricket contains a microcontroller running at 4 MHz, programmed with a virtual 2-bit square wave oscillator that interprets data from each chirp. As the crickets chirp, calls of different species cycle with varying length, making a multi-species chorus as the calls overlap. The negligible differences between the microcontrollers' on-board clocks were exploited to cause relative phasing amongst the chirps.

To keep body size small the printed circuit board was made as narrow as possible with few components. The crickets are made of masonite, monokote, paint, and electronic components.

Crickets has been installed at the Weisman Art Gallery in Minneapolis, REDCAT in Los Angeles, and at California Institute of the Arts.

Gallery

build boards done

build parts

build protoboard

build stuffed boards

build sx board

build trace b

build trace

redcat men a

redcat men install

redcat men seven

redcat men three

redcat single cricket

redcat women six b

redcat women six

wavecave eleven b

wavecave eleven

wavecave wall

weisman alcove

weisman chimney

weisman closeup

weisman closeups

weisman didactic ii

weisman didactic

weisman floor

weisman pano

weisman patrons

weisman sign

weisman


Spectrograms
crickets.asm
CRICKETS.asm
   1:;=========================================;
   2:;   Crickets - 2005 Cooper Baker      ;
   3:;=========================================;
   4:
   5:; INIT ============================================================
   6:        device  sx28l,osc4mhz
   7:        device  turbo,stackx,optionx
   8:        IRC_CAL irc_slow    ;irc_4mhz 
   9:        reset   main
  10:        freq    4000000     
  11:        
  12:; DATA =======================================================
  13:
  14:        ;================================
  15:        org $008            ; memory page
  16:        ;================================
  17:
  18:oscil_count ds  1
  19:oscil_loops ds  1
  20:cycle_count ds  1
  21:cycle_loops ds  1
  22:seconds     ds  2
  23:wait        ds  3
  24:rand        ds  1
  25:address     ds  1
  26:wavelets    ds  1
  27:rubs        ds  1
  28:chirps      ds  1
  29:
  30:watch rand,8,udec
  31:watch chirps,8,udec
  32:watch seconds,8,udec
  33:
  34:; constants --------------------------------------------------
  35:leds        equ ra
  36:pins        equ rb
  37:oscpin      equ rb.0
  38:loud        equ %11111110
  39:medi        equ %11111100
  40:soft        equ %11110000
  41:rest        equ %11111111
  42:
  43:        ;================================
  44:        org $000            ; memory page
  45:        ;================================
  46:        
  47:; SYNTHESIS ===================================================
  48:
  49:counter ;----------------------------------------------------
  50:        mov     oscil_count,oscil_loops ;     + 2
  51::loop   nop                             ; * 1
  52:        nop                             ; * 1
  53:        nop                             ; * 1
  54:        nop                             ; * 1
  55:        djnz    oscil_count,:loop       ; * 4 + 2 =   
  56:        retp                            ; * 8 + 4 total
  57:
  58:oscil ;-----------------------------------------------------------
  59:        clrb    oscpin
  60:        call    @counter
  61:        setb    oscpin
  62:        call    @counter
  63:        retp
  64:
  65:cycle ;-----------------------------------------------------------
  66:        mov     cycle_count,cycle_loops
  67::loop   call    @oscil
  68:        djnz    cycle_count,:loop
  69:        retp
  70:
  71:
  72:; TIMING =======================================================
  73:
  74:waiter ;----------------------------------------------------------
  75::loop   mov     wait+2,#16      ;     + 2 | 4 = 34
  76::loop_c mov     wait+1,#249     ; * 2     | 249 = 1496  
  77::loop_b mov     wait,#249       ; * 2     | 249 = 998           
  78::loop_a djnz    wait,:loop_a    ; * 4 + 2 | wait_a * 4 + 2 = a = 998
  79:        djnz    wait+1,:loop_b  ; * 4 + 2 | wait_b * 6 + 2 + (a * wait_b) = b = 249998
  80:        djnz    wait+2,:loop_c  ; * 4 + 2 | wait_c * 8 + 2 + (b * wait_c) = c = 1000026
  81:        djnz    seconds,:loop   ; countdown (unrelated to clocking)
  82:        retp                    ;     + 3
  83:                                ; c + 5 = | 4,000,098 total clocks (~1 second)
  84:
  85:random_chirps ;----------------------------------------------------------
  86:        mov     W,<<rand
  87:        mov     W,<<rand
  88:        snb     rand.4
  89:        xor     W,#1
  90:        snb     rand.5
  91:        xor     W,#1
  92:        snb     rand.3
  93:        xor     W,#1
  94:        mov     rand,W
  95:        mov     chirps,W
  96:        clc
  97:        rr      chirps          ; rand scaling by shifting
  98:        clc
  99:        rr      chirps
 100:        clc 
 101:        rr      chirps
 102:        clc
 103:        rr      chirps  
 104:        add     chirps,#1
 105:        ret
 106:
 107:random_waits ;----------------------------------------------------------
 108:        mov     W,<<rand
 109:        mov     W,<<rand
 110:        snb     rand.4
 111:        xor     W,#1
 112:        snb     rand.5
 113:        xor     W,#1
 114:        snb     rand.3
 115:        xor     W,#1
 116:        mov     rand,W
 117:        mov     seconds,W
 118:        clc
 119:        rr      seconds         ; rand scaling by shifting
 120:        clc 
 121:        rr      seconds
 122:        clc
 123:        rr      seconds
 124:        clc
 125:        rr      seconds
 126:        add     seconds,#1
 127:        ret
 128:
 129:; MAIN ============================================================
 130:main    mov     !leds,#0
 131:        mov     rand,#$a0
 132:loop
 133:        call    random_chirps
 134:        call    @badlands
 135:        call    random_waits
 136:        call    waiter
 137:        
 138:        call    random_chirps
 139:        call    @banded_scaly
 140:        call    random_waits
 141:        call    waiter
 142:
 143:        call    random_chirps
 144:        call    @black_faced_bush
 145:        call    random_waits
 146:        call    waiter
 147:
 148:        call    random_chirps
 149:        call    @carolina_ground
 150:        call    random_waits
 151:        call    waiter
 152:
 153:        call    random_chirps
 154:        call    @common_short_tailed
 155:        call    random_waits
 156:        call    waiter
 157:
 158:        call    random_chirps
 159:        call    @confused_ground
 160:        call    random_waits
 161:        call    waiter
 162:    
 163:        call    random_chirps
 164:        call    @damp_loving_field
 165:        call    random_waits
 166:        call    waiter
 167:
 168:        call    random_chirps
 169:        call    @fall_field
 170:        call    random_waits
 171:        call    waiter
 172:
 173:        jmp      loop
 174:
 175:; CHIRP SUBROUTINES ==============================================
 176:        
 177:        ;================================
 178:        org $200            ; memory page
 179:        ;================================   
 180:
 181:; JUMPS ** ** **
 182:confused_ground
 183:        jmp     confused_ground_jump
 184:; ** ** ** ** **
 185:
 186:
 187:badlands ;- 400 ms ---------------------------------------------
 188:        mov     oscil_loops,#56     ; 4.4 kHz
 189::chirp                      
 190:        mov     wavelets,#5         ; 5 wavelets
 191::wavelet
 192:        mov     !pins,#soft         ; soft
 193:        mov     cycle_loops,#4      ; 1 ms
 194:        call    @cycle              ;
 195:
 196:        mov     !pins,#medi         ; medi
 197:        mov     cycle_loops,#4      ; 1 ms
 198:        call    @cycle              ;
 199:
 200:        mov     !pins,#loud         ; loud
 201:        mov     cycle_loops,#22     ; 5 ms
 202:    not leds                        ; leds on           
 203:        call    @cycle              ;   
 204:    not leds                        ; leds off          
 205:
 206:        mov     !pins,#medi         ; medi
 207:        mov     cycle_loops,#26     ; 6 ms
 208:        call    @cycle              ;
 209:
 210:        mov     !pins,#soft         ; soft
 211:        mov     cycle_loops,#22     ; 5 ms
 212:        call    @cycle              ;
 213:
 214:        djnz    wavelets,:wavelet   ; wavelet loop
 215:
 216:        mov     wavelets,#10        ; 310 ms
 217:        mov     !pins,#rest         ; rest
 218:        mov     cycle_loops,#136    ; 31 ms
 219::pause  call    @cycle              ; 
 220:        djnz    wavelets,:pause     ; pause loop
 221:        djnz    chirps,:chirp       ; chirp loop
 222:        retp
 223:
 224:banded_scaly ;- 100 ms + 2 sec pause --------------------------------
 225:        mov     oscil_loops,#37     ; 6.6 kHz
 226::chirp                      
 227:        mov     wavelets,#11        ; 11 wavelets
 228::wavelet
 229:        mov     !pins,#soft         ; soft
 230:        mov     cycle_loops,#20     ; 3 ms
 231:        call    @cycle              ;
 232:
 233:        mov     !pins,#medi         ; medi
 234:        mov     cycle_loops,#13     ; 2 ms
 235:        call    @cycle              ;
 236:
 237:        mov     !pins,#loud         ; loud
 238:        mov     cycle_loops,#99     ; 15 ms
 239:    not leds                        ; leds on           
 240:        call    @cycle              ;   
 241:    not leds                        ; leds off          
 242:
 243:        mov     !pins,#medi         ; medi
 244:        mov     cycle_loops,#7      ; 1 ms
 245:        call    @cycle              ;
 246:
 247:        mov     !pins,#soft         ; soft
 248:        mov     cycle_loops,#26     ; 4 ms
 249:        call    @cycle              ;
 250:
 251:        mov     !pins,#rest         ; rest
 252:        mov     cycle_loops,#165    ; 25 ms
 253:        call    @cycle              ;
 254:        mov     cycle_loops,#165    ; 25 ms
 255:        call    @cycle              ;
 256:        mov     cycle_loops,#165    ; 25 ms
 257:        call    @cycle              ;
 258:        
 259:        djnz    wavelets,:wavelet ; wavelet loop
 260:
 261:        mov     wavelets,#193       ; 1930 ms
 262:        mov     !pins,#rest         ; rest
 263:        mov     cycle_loops,#66     ; 10 ms
 264::pause  call    @cycle              ; 
 265:        djnz    wavelets,:pause     ; pause loop
 266:        djnz    chirps,:chirp       ; chirp loop
 267:        retp
 268:
 269:black_faced_bush ;- 100 ms + 1 sec pause --------------------------------
 270:        mov     oscil_loops,#52     ; 4.8 kHz
 271::chirp                      
 272:        mov     wavelets,#11        ; 11 wavelets
 273::wavelet
 274:        mov     rubs,#2
 275::rub
 276:        mov     !pins,#soft         ; soft
 277:        mov     cycle_loops,#14     ; 3 ms
 278:        call    @cycle              ;
 279:
 280:        mov     !pins,#medi         ; medi
 281:        mov     cycle_loops,#14     ; 3 ms
 282:        call    @cycle              ;
 283:
 284:        mov     !pins,#loud         ; loud
 285:        mov     cycle_loops,#34     ; 7 ms
 286:    not leds                        ; leds on           
 287:        call    @cycle              ;   
 288:    not leds                        ; leds off          
 289:
 290:        mov     !pins,#medi         ; medi
 291:        mov     cycle_loops,#29     ; 6 ms
 292:        call    @cycle              ;
 293:
 294:        mov     !pins,#soft         ; soft
 295:        mov     cycle_loops,#29     ; 6 ms
 296:        call    @cycle              ;
 297:
 298:        djnz    rubs,:rub           ; rub loop
 299:
 300:        mov     !pins,#rest         ; rest
 301:        mov     cycle_loops,#239    ; 50 ms
 302:        call    @cycle              ;
 303:        
 304:        djnz    wavelets,:wavelet   ; wavelet loop
 305:
 306:        mov     wavelets,#19        ; 950 ms
 307:        mov     !pins,#rest         ; rest
 308:        mov     cycle_loops,#239    ; 50 ms
 309::pause  call    @cycle              ; 
 310:        
 311:        djnz    wavelets,:pause     ; pause loop
 312:        djnz    chirps,:chirp       ; chirp loop
 313:        retp
 314:
 315:carolina_ground ;- continuous (396 ms loop) ---------------------------------------------
 316:        mov     oscil_loops,#40     ; 6.1 kHz
 317::chirp                      
 318:        mov     wavelets,#6         ; 6 wavelets
 319::wavelet
 320:        mov     !pins,#soft         ; soft
 321:        mov     cycle_loops,#43     ; 7 ms
 322:    not leds                        ; leds on           
 323:        call    @cycle              ;   
 324:    not leds                        ; leds off  
 325:
 326:        mov     !pins,#rest         ; rest
 327:        mov     cycle_loops,#24     ; 4 ms
 328:        call    @cycle              ;
 329:
 330:        mov     !pins,#medi         ; medi
 331:        mov     cycle_loops,#43     ; 7 ms
 332:    not leds                        ; leds on           
 333:        call    @cycle              ;   
 334:    not leds                        ; leds off  
 335:
 336:        mov     !pins,#rest         ; rest
 337:        mov     cycle_loops,#24     ; 4 ms
 338:        call    @cycle              ;
 339:        
 340:        mov     rubs,#3     
 341::rub
 342:        mov     !pins,#loud         ; loud
 343:        mov     cycle_loops,#43     ; 7 ms
 344:    not leds                        ; leds on           
 345:        call    @cycle              ;   
 346:    not leds                        ; leds off  
 347:
 348:        mov     !pins,#rest         ; rest
 349:        mov     cycle_loops,#24     ; 4 ms
 350:        call    @cycle              ;
 351:
 352:        djnz    rubs,:rub           ; rub loop
 353:        djnz    wavelets,:wavelet   ; wavelet loop
 354:
 355:        mov     !pins,#rest         ; rest
 356:        djnz    chirps,:chirp       ; chirp loop
 357:        retp
 358:
 359:common_short_tailed ;- continuous (494 ms loop) ---------------------------------------------
 360:        mov     oscil_loops,#44     ; 5.6 kHz
 361::chirp                      
 362:        mov     wavelets,#38        ; 38 wavelets
 363::wavelet
 364:        mov     !pins,#soft         ; soft
 365:        mov     cycle_loops,#6      ; 1 ms
 366:        call    @cycle              ;   
 367:
 368:        mov     !pins,#medi         ; medi
 369:        mov     cycle_loops,#6      ; 1 ms
 370:        call    @cycle              ;
 371:        
 372:        mov     !pins,#loud         ; loud
 373:        mov     cycle_loops,#17     ; 3 ms
 374:    not leds                        ; leds on           
 375:        call    @cycle              ;   
 376:    not leds                        ; leds off  
 377:
 378:        mov     !pins,#medi         ; medi
 379:        mov     cycle_loops,#6      ; 1 ms
 380:        call    @cycle              ;
 381:        
 382:        mov     !pins,#soft         ; soft
 383:        mov     cycle_loops,#11     ; 2 ms
 384:        call    @cycle  
 385:        
 386:        mov     !pins,#rest         ; rest
 387:        mov     cycle_loops,#24     ; 4 ms
 388:        call    @cycle              ;
 389:    
 390:        djnz    wavelets,:wavelet   ; wavelet loop
 391:
 392:        mov     !pins,#rest         ; rest
 393:        djnz    chirps,:chirp       ; chirp loop
 394:        retp
 395:
 396:confused_ground_jump ;- continuous (396 ms loop) ---------------------------------------------
 397:        mov     oscil_loops,#36     ; 6.9 kHz
 398:
 399::chirp  mov     rubs,#6             ; 6 rubs
 400:
 401::rub_a  mov     !pins,#soft         ; soft
 402:        mov     cycle_loops,#62     ; 9 ms
 403:    not leds                        ; leds on           
 404:        call    @cycle              ;   
 405:    not leds                        ; leds off  
 406:
 407:        mov     !pins,#rest         ; rest
 408:        mov     cycle_loops,#35     ; 5 ms
 409:        call    @cycle              ;
 410:        djnz    rubs,:rub_a         ; rub_a loop
 411:        
 412:        mov     rubs,#6             ; 6 rubs
 413::rub_b  mov     !pins,#soft         ; soft
 414:        mov     cycle_loops,#14     ; 2 ms
 415:    not leds                        ; leds on           
 416:        call    @cycle              ;   
 417:
 418:        mov     !pins,#medi         ; medi
 419:        mov     cycle_loops,#35     ; 5 ms
 420:        call    @cycle              ;   
 421:        
 422:        mov     !pins,#soft         ; soft
 423:        mov     cycle_loops,#14     ; 2 ms
 424:    not leds                        ; leds on           
 425:        call    @cycle              ;
 426:        
 427:        mov     !pins,#rest         ; rest
 428:        mov     cycle_loops,#35     ; 5 ms
 429:        call    @cycle              ;
 430:        djnz    rubs,:rub_b         ; rub_b loop    
 431:        
 432:        mov     rubs,#24            ; 24 rubs
 433::rub_c  mov     !pins,#soft         ; soft
 434:        mov     cycle_loops,#7      ; 1 ms
 435:    not leds                        ; leds on           
 436:        call    @cycle              ;   
 437:
 438:        mov     !pins,#medi         ; medi
 439:        mov     cycle_loops,#7      ; 1 ms
 440:        call    @cycle              ;
 441:        
 442:        mov     !pins,#loud         ; loud
 443:        mov     cycle_loops,#28     ; 4 ms
 444:        call    @cycle              ;
 445:        
 446:        mov     !pins,#medi         ; medi
 447:        mov     cycle_loops,#7      ; 1 ms
 448:        call    @cycle              ;
 449:        
 450:        mov     !pins,#soft         ; soft
 451:        mov     cycle_loops,#14     ; 2 ms
 452:        call    @cycle              ;
 453:    not leds                        ; leds off  
 454:        
 455:        mov     !pins,#rest         ; rest
 456:        mov     cycle_loops,#35     ; 5 ms
 457:        call    @cycle              ;
 458:        djnz    rubs,:rub_c         ; rub_c loop
 459:    
 460:        mov     wavelets,#2         ; 2 wavelets
 461:
 462::wavelet 
 463:        mov     rubs,#3             ; 3 rubs (100 ms)
 464:
 465::rub_d  mov     !pins,#rest         ; rest
 466:        mov     cycle_loops,#228    ; 33 ms
 467:        call    @cycle              ;
 468:        djnz    rubs,:rub_d         ; rub_d loop
 469:                
 470:        mov     rubs,#5             ; 5 rubs
 471::rub_e  mov     !pins,#soft         ; soft
 472:        mov     cycle_loops,#62     ; 9 ms
 473:    not leds                        ; leds on           
 474:        call    @cycle              ;   
 475:    not leds                        ; leds off  
 476:
 477:        mov     !pins,#rest         ; rest
 478:        mov     cycle_loops,#35     ; 5 ms
 479:        call    @cycle              ;
 480:        djnz    rubs,:rub_e         ; rub_e loop    
 481:    
 482:        djnz    wavelets,:wavelet   ; wavelet loop
 483:
 484:        mov     rubs,#12            ; 12 rubs (400 ms)
 485::rub_f  mov     !pins,#rest         ; rest
 486:        mov     cycle_loops,#228    ; 33 ms
 487:        call    @cycle              ;
 488:        djnz    rubs,:rub_f         ; rub_f loop
 489:
 490:        mov     rubs,#5
 491::rub_g  mov     !pins,#soft         ; soft
 492:        mov     cycle_loops,#62     ; 9 ms
 493:    not leds                        ; leds on           
 494:        call    @cycle              ;   
 495:    not leds                        ; leds off  
 496:    
 497:        mov     !pins,#rest         ; rest
 498:        mov     cycle_loops,#35     ; 5 ms
 499:        call    @cycle              ;
 500:        djnz    rubs,:rub_g         ; rub_g loop
 501:
 502:        mov     rubs,#3             ; 3 rubs (100 ms)
 503::rub_h  mov     !pins,#rest         ; rest
 504:        mov     cycle_loops,#228    ; 33 ms
 505:        call    @cycle              ;
 506:        djnz    rubs,:rub_h         ; rub_h loop
 507:
 508:        mov     !pins,#rest         ; rest
 509:        djnz    chirps,:chirp       ; chirp loop
 510:        retp
 511:
 512:        ;================================
 513:        org $400            ; memory page
 514:        ;================================
 515:        
 516:damp_loving_field ;- 400 ms ---------------------------------------------
 517:        mov     oscil_loops,#56     ; 4.4 kHz
 518::chirp                      
 519:        mov     wavelets,#2         ; 2 wavelets
 520::wavelet
 521:        mov     !pins,#soft         ; soft
 522:        mov     cycle_loops,#35     ; 8 ms
 523:    not leds                        ; leds on           
 524:        call    @cycle              ;   
 525:    not leds                        ; leds off
 526:
 527:        mov     !pins,#rest         ; rest
 528:        mov     cycle_loops,#35     ; 8 ms
 529:        call    @cycle              ;
 530:
 531:        mov     !pins,#soft         ; soft
 532:        mov     cycle_loops,#9      ; 2 ms
 533:        call    @cycle
 534:        
 535:        mov     !pins,#medi         ; medi
 536:        mov     cycle_loops,#9      ; 2 ms
 537:        call    @cycle
 538:        
 539:        mov     !pins,#loud         ; loud
 540:        mov     cycle_loops,#35     ; 8 ms
 541:    not leds                        ; leds on           
 542:        call    @cycle              ;   
 543:    not leds                        ; leds off          
 544:
 545:        mov     !pins,#medi         ; medi
 546:        mov     cycle_loops,#9      ; 2 ms
 547:        call    @cycle              ;
 548:
 549:        mov     !pins,#soft         ; soft
 550:        mov     cycle_loops,#31     ; 7 ms
 551:        call    @cycle              ;
 552:
 553:        mov     !pins,#medi         ; medi
 554:        mov     cycle_loops,#9      ; 4 ms
 555:        call    @cycle
 556:        
 557:        mov     !pins,#loud         ; loud
 558:        mov     cycle_loops,#35     ; 3 ms
 559:    not leds                        ; leds on           
 560:        call    @cycle              ;   
 561:    not leds                        ; leds off          
 562:
 563:        mov     !pins,#medi         ; medi
 564:        mov     cycle_loops,#9      ; 6 ms
 565:        call    @cycle              ;
 566:
 567:        mov     !pins,#soft         ; soft
 568:        mov     cycle_loops,#132    ; 30 ms
 569:        call    @cycle              ;
 570:
 571:        mov     rubs,#11            ; 110 ms
 572:        mov     !pins,#rest         ; rest
 573:        mov     cycle_loops,#44     ; 10 ms
 574:
 575::pause  call    @cycle              ; 
 576:        djnz    rubs,:pause         ; pause loop
 577:        djnz    wavelets,:wavelet   ; wavelet loop
 578:        djnz    chirps,:chirp       ; chirp loop
 579:        retp
 580:
 581:
 582:fall_field ;- 800 ms ---------------------------------------------
 583:        mov     oscil_loops,#53     ; 4.7 kHz
 584::chirp                      
 585:        mov     wavelets,#2     
 586::head
 587:        mov     !pins,#soft         ; soft
 588:        mov     cycle_loops,#71     ; 15 ms
 589:    not leds                        ; leds on           
 590:        call    @cycle              ;   
 591:    not leds                        ; leds off
 592:        
 593:        mov     !pins,#rest         ; rest
 594:        mov     cycle_loops,#71     ; 15 ms
 595:        call    @cycle
 596:        
 597:        djnz    wavelets,:head      ; head loop
 598:        
 599:        mov     !pins,#soft         ; soft
 600:        mov     cycle_loops,#47     ; 10 ms
 601:        call    @cycle
 602:        
 603:        mov     !pins,#medi         ; medi
 604:        mov     cycle_loops,#47     ; 10 ms
 605:    not leds                        ; leds on           
 606:        call    @cycle              ;   
 607:    not leds                        ; leds off
 608:            
 609:        mov     !pins,#soft         ; soft
 610:        mov     cycle_loops,#47     ; 10 ms
 611:        call    @cycle
 612:
 613:        mov     !pins,#rest         ; rest
 614:        mov     cycle_loops,#71     ; 15 ms
 615:        call    @cycle
 616:        
 617:        mov     wavelets,#2         ; 2 wavelets
 618::wavelet
 619:        mov     !pins,#soft         ; soft
 620:        mov     cycle_loops,#24     ; 5 ms
 621:        call    @cycle              ;
 622:
 623:        mov     !pins,#medi         ; medi
 624:        mov     cycle_loops,#24     ; 5 ms
 625:        call    @cycle              ;
 626:
 627:        mov     !pins,#loud         ; loud
 628:        mov     cycle_loops,#47     ; 10 ms
 629:    not leds                        ; leds on           
 630:        call    @cycle              ;   
 631:    not leds                        ; leds off          
 632:
 633:        mov     !pins,#medi         ; medi
 634:        mov     cycle_loops,#24     ; 5 ms
 635:        call    @cycle              ;
 636:
 637:        mov     !pins,#soft         ; soft
 638:        mov     cycle_loops,#24     ; 5 ms
 639:        call    @cycle              ;
 640:
 641:        mov     !pins,#rest         ; rest
 642:        mov     cycle_loops,#71     ; 15 ms
 643:        call    @cycle
 644:
 645:        djnz    wavelets,:wavelet   ; wavelet loop
 646:
 647:        mov     wavelets,#12        ; 600 ms
 648:        mov     !pins,#rest         ; rest
 649:        mov     cycle_loops,#235    ; 50 ms
 650::pause  call    @cycle              ; 
 651:        djnz    wavelets,:pause     ; pause loop
 652:        djnz    chirps,:chirp       ; chirp loop
 653:        retp
(c)(p) 2012 Cooper Baker · All Rights Reserved · 77271