Created
July 11, 2016 00:04
-
-
Save connornishijima/8438379d17d5f901e743a7b7dc4582d8 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const byte voicePins[] PROGMEM = {2, 3, 4, 5, 6, 7}; | |
| byte voiceEnabled[6]; | |
| byte voiceType[6]; | |
| byte states[6]; | |
| byte noiseCount[6]; | |
| unsigned long start[6]; | |
| unsigned int periods[6]; | |
| unsigned long nextFlip[6]; | |
| byte noise = 0; | |
| unsigned long t = 0; | |
| byte tFlip = 0; | |
| unsigned long nextCommandTime = 0; | |
| bool songPlaying = false; | |
| const unsigned int frequencies[89] PROGMEM = { | |
| 0, 27, 29, 30, | |
| 33, 35, 37, 39, 41, 44, 46, 49, 52, 55, 58, 62, | |
| 65, 69, 73, 78, 82, 87, 92, 98, 104, 110, 116, 123, | |
| 131, 138, 147, 155, 165, 175, 185, 196, 208, 220, 233, 247, | |
| 262, 277, 294, 311, 330, 349, 370, 392, 415, 440, 466, 494, | |
| 523, 554, 587, 622, 659, 698, 740, 784, 831, 880, 932, 988, | |
| 1046, 1109, 1175, 1244, 1318, 1397, 1480, 1568, 1661, 1760, 1865, 1975, | |
| 2093, 2217, 2349, 2489, 2637, 2794, 2960, 3136, 3322, 3520, 3729, 3951, | |
| 4186, | |
| }; | |
| const byte score [] PROGMEM = { | |
| 5,133, 0x90,125, 0x91,124, 0,27, 0x92,124, 0,48, 0x81, 0x82, 0x80, 0,27, 0,206, 0x90,0, | |
| 0,16, 0x91,124, 0,59, 0x80, 0,16, 0x81, 0,5, 0x90,0, 0,76, 0x80, 0,5, 0x90,125, | |
| 0,27, 0x91,125, 0,48, 0x80, 0x81, 0,27, 0,130, 0x90,0, 0,10, 0x91,124, 0,65, 0x80, | |
| 0,10, 0x81, 0,5, 0x90,0, 0,54, 0x91,52, 0x92,57, 0x93,52, 0x94,57, 0,21, 0x80, 0,5, | |
| 0x90,125, 0,21, 0x95,125, 0,54, 0x80, 0x85, 0,21, 0,5, 0x82, 0x81, 0x84, 0x83, 0,32, 0x90,52, | |
| 0x91,52, 0,146, 0x80, 0x81, 0,16, 0x90,52, 0x91,45, 0x92,57, 0x93,52, 0x94,45, 0x95,57, 0,76, | |
| 0,86, 0,76, 0,168, 0,76, 0,250, 0,76, 1,75, 0,76, 0,86, 0x82, 0x81, 0x80, | |
| 0x90,52, 0x85, 0x84, 0x83, 0x91,52, 0,244, 0x92,0, 0,76, 0x82, 1,53, 0x80, 0x81, 0,21, 0x90,55, | |
| 0x91,55, 0,217, 0x80, 0x90,57, 0x81, 0x91,57, 0,217, 0x80, 0x90,60, 0x81, 0x91,60, 0,217, 0x80, | |
| 0x90,62, 0x92,65, 0x81, 0x91,62, 0x93,65, 1,135, 0x82, 0x80, 0x90,60, 0x83, 0x81, 0x91,60, 0,130, | |
| 0x80, 0x90,62, 0x81, 0x91,62, 1,184, 0x80, 0x81, 0,16, 0x90,64, 0x91,64, 0,163, 0x80, 0x90,69, | |
| 0x92,64, 0x81, 0x91,69, 0x93,64, 0,163, 0x82, 0x80, 0x90,67, 0x83, 0x81, 0x91,67, 0,54, 0x80, 0x90,64, | |
| 0x81, 0x91,64, 0,54, 0x80, 0x90,59, 0x81, 0x91,59, 0,54, 0x80, 0x90,63, 0x81, 0x91,63, 0,54, | |
| 0x80, 0x90,64, 0x81, 0x91,64, 0,108, 0x80, 0x90,67, 0x81, 0x91,67, 0,54, 0x80, 0x90,64, 0x81, 0x91,64, | |
| 0,54, 0x80, 0x90,59, 0x81, 0x91,59, 0,54, 0x80, 0x90,63, 0x81, 0x91,63, 0,54, 0x80, 0x90,64, | |
| 0x81, 0x91,64, 0,108, 0x80, 0x90,67, 0x81, 0x91,67, 0,54, 0x80, 0x90,64, 0x81, 0x91,64, 0,54, | |
| 0x80, 0x90,59, 0x81, 0x91,59, 0,54, 0x80, 0x90,63, 0x81, 0x91,63, 0,54, 0x80, 0x90,64, 0x81, 0x91,64, | |
| 0,108, 0x80, 0x81, 0,5, 0x90,67, 0x91,67, 0,54, 0x80, 0x90,64, 0x81, 0x91,64, 0,54, 0x80, | |
| 0x90,59, 0x81, 0x91,59, 0,54, 0x80, 0x90,63, 0x81, 0x91,63, 0,54, 0x80, 0x90,64, 0x81, 0x91,64, | |
| 0,103, 0x92,67, 0x93,67, 0,5, 0x80, 0x81, 0,48, 0x82, 0x90,64, 0x83, 0x91,64, 0,54, 0x80, | |
| 0x90,59, 0x81, 0x91,59, 0,54, 0x80, 0x90,62, 0x81, 0x91,62, 0,54, 0x80, 0x90,64, 0x81, 0x91,64, | |
| 0,54, 0x80, 0x90,69, 0x81, 0x91,69, 0,54, 0x80, 0x90,67, 0x81, 0x91,67, 0,108, 0x80, 0x90,64, | |
| 0x81, 0x91,64, 0,54, 0x80, 0x90,62, 0x81, 0x91,62, 0,108, 0x80, 0x90,64, 0x81, 0x91,64, 0,54, | |
| 0x80, 0x90,62, 0x81, 0x91,62, 0,81, 0x80, 0x90,62, 0x81, 0x91,62, 0,81, 0x80, 0x90,60, 0x81, 0x91,60, | |
| 0,81, 0x80, 0x90,56, 0x81, 0x91,56, 0,81, 0x80, 0x90,66, 0x92,59, 0x93,66, 0x94,59, 0x81, 0x91,66, | |
| 0x95,59, 0,108, 0x82, 0x80, 0x90,60, 0x92,67, 0x84, 0x83, 0x93,60, 0x94,67, 0x85, 0x81, 0x91,60, 0x95,67, | |
| 0,108, 0x82, 0x80, 0x90,62, 0x92,69, 0x84, 0x83, 0x93,62, 0x94,69, 0x85, 0x81, 0x91,62, 0x95,69, 0,108, | |
| 0x82, 0x80, 0x90,60, 0x92,67, 0x84, 0x83, 0x85, 0x81, 0x91,60, 0x93,67, 0,65, 0x82, 0x80, 0x90,62, 0x83, | |
| 0x81, 0x91,62, 0,65, 0x80, 0x90,60, 0x81, 0x91,60, 0,65, 0x80, 0x90,59, 0x81, 0x91,59, 0,65, | |
| 0x80, 0x90,57, 0x81, 0x91,57, 0,65, 0x80, 0x90,59, 0x81, 0x91,59, 0,65, 0x80, 0x90,62, 0x81, 0x91,62, | |
| 0,65, 0x80, 0x90,60, 0x81, 0x91,60, 0,65, 0x80, 0x90,59, 0x81, 0x91,59, 0,65, 0x80, 0x90,57, | |
| 0x81, 0x91,57, 0,65, 0x80, 0x90,60, 0x81, 0x91,60, 0,65, 0x80, 0x90,62, 0x81, 0x91,62, 0,65, | |
| 0x80, 0x90,60, 0x81, 0x91,60, 0,65, 0x80, 0x90,59, 0x81, 0x91,59, 0,65, 0x80, 0x90,62, 0x81, 0x91,62, | |
| 0,65, 0x80, 0x90,59, 0x81, 0x91,59, 0,65, 0x80, 0x90,62, 0x81, 0x91,62, 0,65, 0x80, 0x90,60, | |
| 0x81, 0x91,60, 0,65, 0x80, 0x90,59, 0x81, 0x91,59, 0,65, 0x80, 0x90,57, 0x81, 0x91,57, 0,65, | |
| 0x80, 0x90,59, 0x81, 0x91,59, 0,163, 0x80, 0x90,57, 0x81, 0x91,57, 0,163, 0x80, 0x90,56, 0x81, 0x91,56, | |
| 0,163, 0x80, 0x90,55, 0x81, 0x91,55, 0,163, 0x80, 0x90,54, 0x81, 0x91,54, 0,163, 0x80, 0x90,52, | |
| 0x81, 0x91,52, 0,163, 0x80, 0x90,51, 0x81, 0x91,51, 0,163, 0x80, 0x90,50, 0x81, 0x91,50, 0,163, | |
| 0x80, 0x90,48, 0x81, 0x91,48, 0,244, 0x80, 0x90,60, 0x81, 0x91,60, 0,65, 0x80, 0x81, 0,16, 0x90,38, | |
| 0x91,38, 3,107, 0x80, 0x81, 0,21, 0x90,44, 0x91,44, 9,206, 0x80, 0x81, 0,16, 0x90,57, 0x91,52, | |
| 0x92,45, 0x93,33, 0x94,40, 0x95,45, 0,163, 0x82, 0x81, 0x80, 0x90,57, 0x91,52, 0x92,45, 0x85, 0x84, | |
| 0x83, 0x93,33, 0x94,40, 0x95,45, 0,43, 0,32, 0,5, 0,38, 0,38, 1,238, 0x82, 0x81, | |
| 0x80, 0x90,62, 0x91,55, 0x92,50, 0x85, 0x84, 0x83, 0x93,31, 0x94,38, 0x95,43, 0,38, 0,38, 0,5, | |
| 0,32, 0,43, 1,75, 0x83, 0x84, 0x85, 0x93,38, 0,163, 0x80, 0x81, 0x82, 0x90,50, 0x91,57, 0x92,62, | |
| 0x83, 0x93,38, 0x94,45, 0x95,50, 0,38, 0,38, 0,5, 0,32, 0,43, 0,5, 0,76, | |
| 0,5, 0,76, 0,86, 0,76, 0,146, 0x82, 0x81, 0x80, 0,21, 0x90,64, 0x91,64, 0x92,0, | |
| 0,76, 0x82, 0,250, 0x92,0, 0,76, 0x82, 0,70, 0x80, 0x81, 0,16, 0x90,77, 0x91,77, 0,163, | |
| 0x80, 0x90,79, 0x81, 0x91,79, 0x92,0, 0,76, 0x82, 0,125, 0x80, 0x81, 0,16, 0x90,81, 0x91,81, | |
| 0,108, 0x80, 0x90,79, 0x81, 0x91,79, 0,201, 0x80, 0x81, 0,16, 0x90,81, 0x91,81, 0,108, 0x80, | |
| 0x81, 0,5, 0x90,79, 0x91,79, 0,201, 0x80, 0x81, 0,16, 0x90,81, 0x91,81, 0,108, 0x80, 0x81, | |
| 0,5, 0x90,79, 0x91,79, 0,201, 0x80, 0x81, 0,16, 0x90,81, 0x91,81, 0,108, 0x80, 0x81, 0,5, | |
| 0x90,79, 0x91,79, 0,201, 0x80, 0x81, 0,16, 0x90,55, 0x91,55, 0,92, 0x92,50, 0,16, 0x80, | |
| 0x81, 0,92, 0x82, 0x90,79, 0x91,79, 0,108, 0x80, 0x90,81, 0x81, 0x91,81, 0,108, 0x80, 0x90,84, | |
| 0x81, 0x91,84, 0,195, 0x80, 0x81, 0,21, 0x90,85, 0x91,85, 0,108, 0x80, 0x90,78, 0x81, 0x91,78, | |
| 0,217, 0x80, 0x90,84, 0x81, 0x91,84, 0,108, 0x80, 0x90,81, 0x83, 0x84, 0x85, 0x81, 0x91,81, 0,201, | |
| 0x80, 0x81, 0,16, 0x90,79, 0x91,79, 0,108, 0x80, 0x90,79, 0x81, 0x91,79, 2,15, 0x80, 0x81, 0,16, | |
| 0x90,81, 0x91,81, 0,108, 0x80, 0x90,79, 0x81, 0x91,79, 0,201, 0x80, 0x81, 0,16, 0x90,81, 0x91,81, | |
| 0,108, 0x80, 0x90,84, 0x81, 0x91,84, 1,70, 0x80, 0x90,81, 0x81, 0x91,81, 0,108, 0x80, 0x90,79, | |
| 0x81, 0x91,79, 0,108, 0x80, 0x90,81, 0x81, 0x91,81, 0,108, 0x80, 0x90,79, 0x81, 0x91,79, 0,108, | |
| 0x80, 0x90,79, 0x81, 0x91,79, 0,108, 0x80, 0x90,76, 0x81, 0x91,76, 0,108, 0x80, 0x90,74, 0x81, 0x91,74, | |
| 0,108, 0x80, 0x90,79, 0x81, 0x91,79, 0,108, 0x80, 0x90,79, 0x81, 0x91,79, 0,108, 0x80, 0x90,79, | |
| 0x81, 0x91,79, 0,81, 0x92,76, 0x93,76, 0,27, 0x80, 0x81, 0,190, 0x82, 0x83, 0,27, 0x90,79, | |
| 0x91,79, 0,217, 0x80, 0x90,76, 0x81, 0x91,76, 0,54, 0x80, 0x90,74, 0x81, 0x91,74, 0,54, 0x80, | |
| 0x90,79, 0x81, 0x91,79, 2,123, 0x80, 0x81, 0,70, 0x90,67, 0x91,67, 0,54, 0x80, 0x90,73, 0x81, | |
| 0x91,73, 0,108, 0x80, 0x90,75, 0x81, 0x91,75, 0,108, 0x80, 0x90,77, 0x81, 0x91,77, 0,65, 0x80, | |
| 0x90,79, 0x81, 0x91,79, 0,65, 0x80, 0x90,80, 0x81, 0x91,80, 0,65, 0x80, 0x90,81, 0x81, 0x91,81, | |
| 0,65, 0x80, 0x90,84, 0x81, 0x91,84, 0,65, 0x80, 0x90,72, 0x81, 0x91,72, 0,108, 0x80, 0x90,76, | |
| 0x81, 0x91,76, 0,54, 0x80, 0x90,79, 0x81, 0x91,79, 0,81, 0x80, 0x90,78, 0x81, 0x91,78, 0,65, | |
| 0x80, 0x81, 0,16, 0x90,81, 0x91,81, 0,65, 0x80, 0x81, 0,16, 0x90,84, 0x91,84, 0,65, 0x80, | |
| 0x81, 0,16, 0x90,81, 0x91,81, 0,65, 0x80, 0x81, 0,16, 0x90,84, 0x91,84, 0,65, 0x80, 0x81, | |
| 0,16, 0x90,81, 0x91,81, 0,65, 0x80, 0x81, 0,16, 0x90,78, 0x91,78, 0,65, 0x80, 0x81, 0,16, | |
| 0x90,79, 0x91,79, 0,65, 0x80, 0x81, 0,16, 0x90,78, 0x91,78, 0,65, 0x80, 0x81, 0,16, 0x90,76, | |
| 0x91,76, 0,65, 0x80, 0x81, 0,16, 0x90,73, 0x91,73, 0,65, 0x80, 0x81, 0,16, 0x90,72, 0x91,72, | |
| 0,65, 0x80, 0x81, 0,16, 0x90,73, 0x91,73, 0,65, 0x80, 0x81, 0,16, 0x90,72, 0x91,72, 0,65, | |
| 0x80, 0x81, 0,16, 0x90,72, 0x91,72, 0,65, 0x80, 0x81, 0,16, 0x90,69, 0x91,69, 0,59, 0x80, | |
| 0x81, 0,27, 0x90,71, 0x91,71, 1,135, 0x80, 0x81, 0,10, 0x90,69, 0x91,69, 0,108, 0x80, 0x90,69, | |
| 0x81, 0x91,69, 0,97, 0x80, 0x81, 0,10, 0x90,42, 0x91,47, 0x92,42, 0x93,47, 0,108, 0x81, 0x83, | |
| 1,42, 0,11, 0x80, 0x82, 0,7, 0x90,74, 0x91,74, 1,107, 0x80, 0x81, 0,15, 0x90,76, 0x91,76, | |
| 0,75, 0x80, 0x90,74, 0x81, 0x91,74, 0,140, 0x80, 0x81, 0,11, 0x90,76, 0x91,76, 0,75, 0x80, | |
| 0x90,76, 0x81, 0x91,76, 0,113, 0x80, 0x90,76, 0x81, 0x91,76, 0,113, 0x80, 0x90,80, 0x81, 0x91,80, | |
| 0,113, 0x80, 0x90,80, 0x81, 0x91,80, 0,113, 0x80, 0x90,80, 0x81, 0x91,80, 0,113, 0x80, 0x90,80, | |
| 0x81, 0x91,80, 0,113, 0x80, 0x90,83, 0x81, 0x91,83, 0,56, 0x80, 0x90,83, 0x81, 0x91,83, 0,56, | |
| 0x80, 0x90,83, 0x81, 0x91,83, 0,56, 0x80, 0x90,83, 0x81, 0x91,83, 0,56, 0x80, 0x90,81, 0x81, 0x91,81, | |
| 0,75, 0x80, 0x90,81, 0x81, 0x91,81, 0,75, 0x80, 0x90,81, 0x81, 0x91,81, 0,75, 0x80, 0x90,79, | |
| 0x81, 0x91,79, 0,75, 0x80, 0x90,79, 0x81, 0x91,79, 0,75, 0x80, 0x90,79, 0x81, 0x91,79, 0,75, | |
| 0x80, 0x90,81, 0x81, 0x91,81, 0,75, 0x80, 0x90,81, 0x81, 0x91,81, 0,75, 0x80, 0x90,81, 0x81, 0x91,81, | |
| 0,75, 0x80, 0x90,78, 0x81, 0x91,78, 0,75, 0x80, 0x90,78, 0x81, 0x91,78, 0,75, 0x80, 0x90,78, | |
| 0x81, 0x91,78, 0,75, 0x80, 0x90,80, 0x81, 0x91,80, 0,75, 0x80, 0x90,80, 0x81, 0x91,80, 0,75, | |
| 0x80, 0x90,80, 0x81, 0x91,80, 0,75, 0x80, 0x90,76, 0x81, 0x91,76, 0,75, 0x80, 0x90,76, 0x81, 0x91,76, | |
| 0,75, 0x80, 0x90,76, 0x81, 0x91,76, 0,75, 0x80, 0x90,80, 0x81, 0x91,80, 0,75, 0x80, 0x90,80, | |
| 0x81, 0x91,80, 0,75, 0x80, 0x90,80, 0x81, 0x91,80, 0,75, 0x80, 0x90,83, 0x81, 0x91,83, 0,75, | |
| 0x80, 0x90,83, 0x81, 0x91,83, 0,75, 0x80, 0x90,83, 0x81, 0x91,83, 0,75, 0x80, 0x90,81, 0x81, 0x91,81, | |
| 0,75, 0x80, 0x90,81, 0x81, 0x91,81, 0,75, 0x80, 0x90,81, 0x81, 0x91,81, 0,75, 0x80, 0x90,80, | |
| 0x81, 0x91,80, 0,75, 0x80, 0x90,80, 0x81, 0x91,80, 0,75, 0x80, 0x90,80, 0x81, 0x91,80, 0,75, | |
| 0x80, 0x90,81, 0x81, 0x91,81, 0,75, 0x80, 0x90,81, 0x81, 0x91,81, 0,75, 0x80, 0x90,81, 0x81, 0x91,81, | |
| 0,75, 0x80, 0x90,78, 0x81, 0x91,78, 0,75, 0x80, 0x90,78, 0x81, 0x91,78, 0,75, 0x80, 0x90,78, | |
| 0x81, 0x91,78, 0,75, 0x80, 0x90,80, 0x81, 0x91,80, 0,75, 0x80, 0x90,80, 0x81, 0x91,80, 0,75, | |
| 0x80, 0x90,80, 0x81, 0x91,80, 0,75, 0x80, 0x90,76, 0x81, 0x91,76, 0,56, 0x80, 0x90,76, 0x81, 0x91,76, | |
| 0,56, 0x80, 0x90,76, 0x81, 0x91,76, 0,56, 0x80, 0x90,77, 0x81, 0x91,77, 0,56, 0x80, 0x90,74, | |
| 0x81, 0x91,74, 0,56, 0x80, 0x90,74, 0x81, 0x91,74, 0,56, 0x80, 0x90,74, 0x81, 0x91,74, 0,56, | |
| 0x80, 0x90,76, 0x81, 0x91,76, 0,56, 0x80, 0x90,73, 0x81, 0x91,73, 0,90, 0x80, 0x90,73, 0x81, 0x91,73, | |
| 0,90, 0x80, 0x90,73, 0x81, 0x91,73, 0,90, 0x80, 0x90,74, 0x81, 0x91,74, 0,90, 0x80, 0x90,73, | |
| 0x81, 0x91,73, 0,90, 0x80, 0x90,71, 0x81, 0x91,71, 0,18, 0,72, 0x80, 0x90,71, 0x81, 0x91,71, | |
| 0,91, 0x80, 0x90,71, 0x81, 0x91,71, 0,91, 0x80, 0x90,72, 0x81, 0x91,72, 0,91, 0x80, 0x90,71, | |
| 0x81, 0x91,71, 0,91, 0x80, 0x90,69, 0x81, 0x91,69, 0,19, 0,84, 0x80, 0x90,69, 0x81, 0x91,69, | |
| 0,107, 0x80, 0x90,69, 0x81, 0x91,69, 0,107, 0x80, 0x90,71, 0x81, 0x91,71, 0,107, 0x80, 0x90,69, | |
| 0x81, 0x91,69, 0,107, 0x80, 0x90,67, 0x81, 0x91,67, 0,107, 0x80, 0x90,67, 0x81, 0x91,67, 0,107, | |
| 0x80, 0x90,67, 0x81, 0x91,67, 0,107, 0x80, 0x90,69, 0x81, 0x91,69, 0,107, 0x80, 0x90,67, 0x81, 0x91,67, | |
| 0,107, 0x80, 0x90,65, 0x81, 0x91,65, 0,66, 0x80, 0x90,65, 0x81, 0x91,65, 0,66, 0x80, 0x90,65, | |
| 0x81, 0x91,65, 0,66, 0x80, 0x90,65, 0x81, 0x91,65, 0,66, 0x80, 0x90,65, 0x81, 0x91,65, 0,66, | |
| 0x80, 0x90,65, 0x81, 0x91,65, 0,66, 0x80, 0x90,65, 0x81, 0x91,65, 0,66, 0x80, 0x90,65, 0x81, 0x91,65, | |
| 0,66, 0x80, 0x90,65, 0x81, 0x91,65, 0,66, 0x80, 0x90,67, 0x81, 0x91,67, 0,66, 0x80, 0x90,65, | |
| 0x81, 0x91,65, 0,66, 0x80, 0x90,64, 0x81, 0x91,64, 0,66, 0x80, 0x90,64, 0x81, 0x91,64, 0,66, | |
| 0x80, 0x90,62, 0x81, 0x91,62, 0,66, 0x80, 0x90,60, 0x81, 0x91,60, 0,66, 0x80, 0x90,59, 0x81, 0x91,59, | |
| 0,66, 0x80, 0x90,59, 0x81, 0x91,59, 0,73, 0x80, 0x81, 0,8, 0x90,57, 0x91,57, 1,153, 0x92,56, | |
| 0x93,56, 0,4, 0x80, 0x81, 1,59, 0x82, 0x83, 0,12, 0x90,45, 0x91,38, 0x92,38, 0x93,45, 0,155, | |
| 0x81, 0x80, 0x83, 0x82, 0,4, 0x90,38, 0x91,38, 0,233, 0x80, 0x81, 0,12, 0x90,34, 0x91,34, 0,233, | |
| 0x80, 0x81, 0,12, 0x90,32, 0x91,32, 3,203, 0x80, 0x81, 0,12, 0x90,34, 0x91,34, 0,233, 0x80, | |
| 0x81, 0,12, 0x90,38, 0x91,38, 19,111, 0x80, 0x81, 1,178, 0x90,50, 0x91,53, 0x92,59, 0x93,62, | |
| 0,32, 0x94,50, 0x95,53, 0,8, 0x83, 0x80, 0x81, 0x82, 0,32, 0x84, 0x85, 0,49, 0x90,52, 0,32, | |
| 0x91,52, 0,90, 0x80, 0x90,55, 0,32, 0x81, 0x91,55, 0,49, 0x80, 0x90,57, 0,32, 0x81, 0x91,57, | |
| 0,49, 0x80, 0x90,57, 0,32, 0x81, 0x91,57, 0,49, 0x80, 0x90,57, 0,32, 0x81, 0x91,57, 0,49, | |
| 0x80, 0x90,57, 0,32, 0x81, 0x91,57, 0,49, 0x80, 0x90,57, 0,32, 0x81, 0x91,57, 0,49, 0x80, | |
| 0x90,60, 0,32, 0x81, 0x91,60, 0,65, 0x80, 0x90,55, 0,32, 0x81, 0x91,55, 0,65, 0x80, 0x90,57, | |
| 0,32, 0x81, 0x91,57, 0,65, 0x80, 0x90,57, 0,32, 0x81, 0x91,57, 0,65, 0x80, 0x90,57, 0,32, | |
| 0x81, 0x91,57, 0,65, 0x80, 0x90,60, 0,32, 0x81, 0x91,60, 0,49, 0x80, 0x90,55, 0,32, 0x81, | |
| 0x91,55, 0,49, 0x80, 0x90,58, 0,32, 0x81, 0x91,58, 0,49, 0x80, 0x90,65, 0,32, 0x81, 0x91,65, | |
| 0,49, 0x80, 0x90,58, 0,32, 0x81, 0x91,58, 0,49, 0x80, 0x90,64, 0,32, 0x81, 0x91,64, 0,49, | |
| 0x80, 0x90,62, 0,32, 0x81, 0x91,62, 0,49, 0x80, 0x90,55, 0,32, 0x81, 0x91,55, 0,49, 0x80, | |
| 0x90,60, 0,32, 0x81, 0x91,60, 0,49, 0x80, 0x90,67, 0,32, 0x81, 0x91,67, 0,49, 0x80, 0x90,60, | |
| 0,32, 0x81, 0x91,60, 0,49, 0x80, 0x90,66, 0,32, 0x81, 0x91,66, 0,49, 0x80, 0x90,64, 0,32, | |
| 0x81, 0x91,64, 4,49, 0x80, 0x90,45, 0x92,50, 0,32, 0x81, 0x91,45, 0x93,50, 0,8, 0x80, 0,32, | |
| 0x81, 0,49, 0x82, 0x90,47, 0,32, 0x83, 0x91,47, 0,213, 0x80, 0x90,50, 0,32, 0x81, 0x91,50, | |
| 0,49, 0x80, 0x90,52, 0,32, 0x81, 0x91,52, 0,49, 0x80, 0x90,52, 0,32, 0x81, 0x91,52, 0,49, | |
| 0x80, 0x90,52, 0,32, 0x81, 0x91,52, 0,49, 0x80, 0x90,52, 0,32, 0x81, 0x91,52, 0,81, 0x81, | |
| 0x91,52, 0,49, 0x80, 0x90,55, 0,32, 0x81, 0x91,55, 0,49, 0x80, 0x90,50, 0,32, 0x81, 0x91,50, | |
| 0,49, 0x80, 0x90,52, 0,32, 0x81, 0x91,52, 0,49, 0x80, 0x90,57, 0x92,52, 0,32, 0x81, 0x91,57, | |
| 0x93,52, 0,49, 0x82, 0x80, 0x90,52, 0,32, 0x83, 0x81, 0x91,52, 0,49, 0x80, 0x90,52, 0x92,57, | |
| 0,32, 0x81, 0x91,52, 0x93,57, 0,49, 0x82, 0x80, 0x90,55, 0,32, 0x83, 0x81, 0x91,55, 0,49, | |
| 0x80, 0x90,50, 0,32, 0x81, 0x91,50, 0,49, 0x80, 0x90,52, 0,32, 0x81, 0x91,52, 0,49, 0x80, | |
| 0x90,60, 0,32, 0x81, 0x91,60, 0,49, 0x80, 0x90,55, 0,32, 0x81, 0x91,55, 0,49, 0x80, 0x90,59, | |
| 0,32, 0x81, 0x91,59, 0,49, 0x80, 0x90,57, 0,32, 0x81, 0x91,57, 0,49, 0x80, 0x90,54, 0,32, | |
| 0x81, 0x91,54, 0,49, 0x80, 0x90,54, 0,32, 0x81, 0x91,54, 0,49, 0x80, 0x90,62, 0,32, 0x81, | |
| 0x91,62, 0,49, 0x80, 0x90,55, 0,32, 0x81, 0x91,55, 0,49, 0x80, 0x90,61, 0,32, 0x81, 0x91,61, | |
| 0,49, 0x80, 0x90,59, 0,32, 0x81, 0x91,59, 4,90, 0x80, 0x90,55, 0x92,50, 0,32, 0x81, 0x91,55, | |
| 0x93,50, 0,49, 0x82, 0x80, 0x90,50, 0x92,55, 0x94,60, 0,32, 0x83, 0x81, 0x91,50, 0x93,55, 0x95,60, | |
| 0,49, 0x84, 0x82, 0x80, 0x90,52, 0,32, 0x85, 0x83, 0x81, 0x91,52, 0,131, 0x80, 0x90,55, 0,32, | |
| 0x81, 0x91,55, 0,49, 0x80, 0x90,57, 0,32, 0x81, 0x91,57, 0,49, 0x80, 0x90,57, 0,32, 0x81, | |
| 0x91,57, 0,49, 0x80, 0x90,57, 0,32, 0x81, 0x91,57, 0,49, 0x80, 0x90,57, 0,32, 0x81, 0x91,57, | |
| 0,49, 0x80, 0x90,57, 0,32, 0x81, 0x91,57, 0,49, 0x80, 0x90,60, 0,32, 0x81, 0x91,60, 0,49, | |
| 0x80, 0x90,55, 0,32, 0x81, 0x91,55, 0,49, 0x80, 0x90,57, 0,32, 0x81, 0x91,57, 0,49, 0x80, | |
| 0x90,57, 0,32, 0x81, 0x91,57, 0,49, 0x80, 0x90,57, 0,32, 0x81, 0x91,57, 0,131, 0x80, 0x90,60, | |
| 0,32, 0x81, 0x91,60, 0,49, 0x80, 0x90,55, 0,32, 0x81, 0x91,55, 0,49, 0x80, 0x90,58, 0,32, | |
| 0x81, 0x91,58, 0,49, 0x80, 0x90,65, 0,32, 0x81, 0x91,65, 0,49, 0x80, 0x90,55, 0x92,58, 0,32, | |
| 0x81, 0x91,55, 0x93,58, 0,49, 0x82, 0x80, 0x90,64, 0,32, 0x83, 0x81, 0x91,64, 0,49, 0x80, 0x90,62, | |
| 0,32, 0x81, 0x91,62, 0,49, 0x80, 0x90,55, 0,32, 0x81, 0x91,55, 0,49, 0x80, 0x90,60, 0,32, | |
| 0x81, 0x91,60, 0,49, 0x80, 0x90,67, 0,32, 0x81, 0x91,67, 0,49, 0x80, 0x90,60, 0,32, 0x81, | |
| 0x91,60, 0,49, 0x80, 0x90,66, 0,32, 0x81, 0x91,66, 0,49, 0x80, 0x90,64, 0,32, 0x81, 0x91,64, | |
| 0,49, 0x80, 0x90,66, 0,32, 0x81, 0x91,66, 0,49, 0x80, 0x90,64, 0,32, 0x81, 0x91,64, 0,49, | |
| 0x80, 0x90,66, 0,32, 0x81, 0x91,66, 0,49, 0x80, 0x90,64, 0,32, 0x81, 0x91,64, 0,49, 0x80, | |
| 0x90,66, 0,32, 0x81, 0x91,66, 0,49, 0x80, 0x90,64, 0,32, 0x81, 0x91,64, 0,131, 0x80, 0x90,64, | |
| 0,32, 0x81, 0x91,64, 0,49, 0x80, 0x90,62, 0,32, 0x81, 0x91,62, 0,49, 0x80, 0x90,64, 0,32, | |
| 0x81, 0x91,64, 0,49, 0x80, 0x90,62, 0,32, 0x81, 0x91,62, 0,49, 0x80, 0x90,60, 0,32, 0x81, | |
| 0x91,60, 0,131, 0x80, 0x90,62, 0,32, 0x81, 0x91,62, 0,49, 0x80, 0x90,60, 0,32, 0x81, 0x91,60, | |
| 0,49, 0x80, 0x90,62, 0,32, 0x81, 0x91,62, 0,49, 0x80, 0x90,60, 0,32, 0x81, 0x91,60, 0,49, | |
| 0x80, 0x90,59, 0,32, 0x81, 0x91,59, 0,49, 0x80, 0x90,61, 0,32, 0x81, 0x91,61, 0,49, 0x80, | |
| 0x90,59, 0,32, 0x81, 0x91,59, 0,49, 0x80, 0x90,61, 0,32, 0x81, 0x91,61, 0,49, 0x80, 0x90,59, | |
| 0,32, 0x81, 0x91,59, 0,49, 0x80, 0x90,61, 0,32, 0x81, 0x91,61, 0,49, 0x80, 0x90,73, 0,32, | |
| 0x81, 0x91,73, 0,49, 0x80, 0x90,61, 0,32, 0x81, 0x91,61, 0,49, 0x80, 0x90,64, 0,32, 0x81, | |
| 0x91,64, 0,49, 0x80, 0x90,68, 0,32, 0x81, 0x91,68, 0,49, 0x80, 0x90,61, 0,32, 0x81, 0x91,61, | |
| 0,49, 0x80, 0x90,64, 0,32, 0x81, 0x91,64, 0,49, 0x80, 0x90,68, 0,32, 0x81, 0x91,68, 0,49, | |
| 0x80, 0x90,61, 0,32, 0x81, 0x91,61, 0,49, 0x80, 0x90,64, 0,32, 0x81, 0x91,64, 0,49, 0x80, | |
| 0x90,68, 0,32, 0x81, 0x91,68, 0,49, 0x80, 0x90,61, 0,32, 0x81, 0x91,61, 0,49, 0x80, 0x90,64, | |
| 0,32, 0x81, 0x91,64, 0,49, 0x80, 0x90,73, 0,32, 0x81, 0x91,73, 0,49, 0x80, 0x90,61, 0,32, | |
| 0x81, 0x91,61, 0,49, 0x80, 0x90,64, 0,32, 0x81, 0x91,64, 0,49, 0x80, 0x90,68, 0,32, 0x81, | |
| 0x91,68, 0,49, 0x80, 0x90,61, 0,32, 0x81, 0x91,61, 0,49, 0x80, 0x90,64, 0,32, 0x81, 0x91,64, | |
| 0,49, 0x80, 0x90,68, 0,32, 0x81, 0x91,68, 0,49, 0x80, 0x90,61, 0,32, 0x81, 0x91,61, 0,49, | |
| 0x80, 0x90,64, 0,32, 0x81, 0x91,64, 0,49, 0x80, 0x90,68, 0,32, 0x81, 0x91,68, 0,49, 0x80, | |
| 0x90,61, 0,32, 0x81, 0x91,61, 0,49, 0x80, 0x90,64, 0,32, 0x81, 0x91,64, 0,49, 0x80, 0x90,69, | |
| 0,32, 0x81, 0x91,69, 0,49, 0x80, 0x90,61, 0,32, 0x81, 0x91,61, 0,49, 0x80, 0x90,64, 0,32, | |
| 0x81, 0x91,64, 0,49, 0x80, 0x90,69, 0,32, 0x81, 0x91,69, 0,49, 0x80, 0x90,61, 0,32, 0x81, | |
| 0x91,61, 0,49, 0x80, 0x90,64, 0,32, 0x81, 0x91,64, 0,49, 0x80, 0x90,69, 0,32, 0x81, 0x91,69, | |
| 0,49, 0x80, 0x90,61, 0,32, 0x81, 0x91,61, 0,49, 0x80, 0x90,64, 0,32, 0x81, 0x91,64, 0,49, | |
| 0x80, 0x90,69, 0,32, 0x81, 0x91,69, 0,49, 0x80, 0x90,61, 0,32, 0x81, 0x91,61, 0,49, 0x80, | |
| 0x90,64, 0,32, 0x81, 0x91,64, 0,49, 0x80, 0,4, 0x90,69, 0,28, 0x81, 0,4, 0x91,69, | |
| 0,49, 0x80, 0x90,61, 0,32, 0x81, 0x91,61, 0,49, 0x80, 0x90,64, 0,32, 0x81, 0x91,64, 0,49, | |
| 0x80, 0x90,69, 0,32, 0x81, 0x91,69, 0,49, 0x80, 0x90,61, 0,32, 0x81, 0x91,61, 0,49, 0x80, | |
| 0x90,64, 0,32, 0x81, 0x91,64, 0,45, 0x92,69, 0,4, 0x80, 0,28, 0x90,69, 0,4, 0x81, | |
| 0,45, 0x82, 0x91,61, 0,32, 0x80, 0x90,61, 0,49, 0x81, 0x91,64, 0,32, 0x80, 0x90,64, 0,49, | |
| 0x81, 0x91,69, 0,32, 0x80, 0x90,69, 0,49, 0x81, 0x91,61, 0,32, 0x80, 0x90,61, 0,49, 0x81, | |
| 0x91,64, 0,32, 0x80, 0x90,64, 0,8, 0x81, 0x91,63, 0,32, 0x80, 0x90,63, 0,8, 0x81, 0x91,69, | |
| 0,32, 0x80, 0x90,69, 0,49, 0x81, 0x91,63, 0,32, 0x80, 0x90,63, 0,49, 0x81, 0x91,66, 0,32, | |
| 0x80, 0x90,66, 0,49, 0x81, 0x91,69, 0,32, 0x80, 0x90,69, 0,49, 0x81, 0x91,63, 0,32, 0x80, | |
| 0x90,63, 0,49, 0x81, 0x91,66, 0,32, 0x80, 0x90,66, 0,49, 0x81, 0x91,69, 0,32, 0x80, 0x90,69, | |
| 0,49, 0x81, 0x91,63, 0,32, 0x80, 0x90,63, 0,49, 0x81, 0x91,66, 0,32, 0x80, 0x90,66, 0,49, | |
| 0x81, 0x91,69, 0,32, 0x80, 0x90,69, 0,49, 0x81, 0x91,63, 0,32, 0x80, 0x90,63, 0,49, 0x81, | |
| 0x91,66, 0,32, 0x80, 0x90,66, 0,49, 0x81, 0x91,69, 0,32, 0x80, 0x90,69, 0,49, 0x81, 0x91,63, | |
| 0,32, 0x80, 0x90,63, 0,49, 0x81, 0x91,66, 0,32, 0x80, 0x90,66, 0,49, 0x81, 0x91,69, 0,32, | |
| 0x80, 0x90,69, 0,49, 0x81, 0x91,63, 0,32, 0x80, 0x90,63, 0,49, 0x81, 0x91,66, 0,32, 0x80, | |
| 0x90,66, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,63, 0,32, 0x80, 0x90,63, | |
| 0,49, 0x81, 0x91,66, 0,32, 0x80, 0x90,66, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, | |
| 0x81, 0x91,63, 0,32, 0x80, 0x90,63, 0,49, 0x81, 0x91,66, 0,32, 0x80, 0x90,66, 0,49, 0x81, | |
| 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,64, 0,32, 0x80, 0x90,64, 0,49, 0x81, 0x91,68, | |
| 0,32, 0x80, 0x90,68, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,64, 0,32, | |
| 0x80, 0x90,64, 0,49, 0x81, 0x91,68, 0,32, 0x80, 0x90,68, 0,49, 0x81, 0x91,71, 0,32, 0x80, | |
| 0x90,71, 0,49, 0x81, 0x91,64, 0,32, 0x80, 0x90,64, 0,49, 0x81, 0x91,68, 0,32, 0x80, 0x90,68, | |
| 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,64, 0,32, 0x80, 0x90,64, 0,49, | |
| 0x81, 0x91,68, 0,32, 0x80, 0x90,68, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, | |
| 0x91,64, 0,32, 0x80, 0x90,64, 0,49, 0x81, 0x91,68, 0,32, 0x80, 0x90,68, 0,49, 0x81, 0x91,71, | |
| 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,64, 0,32, 0x80, 0x90,64, 0,49, 0x81, 0x91,68, 0,32, | |
| 0x80, 0x90,68, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,64, 0,32, 0x80, | |
| 0x90,64, 0,49, 0x81, 0x91,68, 0,32, 0x80, 0x90,68, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, | |
| 0,49, 0x81, 0x91,64, 0,32, 0x80, 0x90,64, 0,49, 0x81, 0x91,68, 0,32, 0x80, 0x90,68, 0,49, | |
| 0x81, 0x91,72, 0,32, 0x80, 0x90,72, 0,49, 0x81, 0x91,64, 0,32, 0x80, 0x90,64, 0,49, 0x81, | |
| 0x91,67, 0,32, 0x80, 0x90,67, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,64, | |
| 0,32, 0x80, 0x90,64, 0,49, 0x81, 0x91,67, 0,32, 0x80, 0x90,67, 0,49, 0x81, 0x91,71, 0,32, | |
| 0x80, 0x90,71, 0,49, 0x81, 0x91,64, 0,32, 0x80, 0x90,64, 0,49, 0x81, 0x91,67, 0,32, 0x80, | |
| 0x90,67, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,64, 0,32, 0x80, 0x90,64, | |
| 0,49, 0x81, 0x91,67, 0,32, 0x80, 0x90,67, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, | |
| 0x81, 0x91,64, 0,32, 0x80, 0x90,64, 0,49, 0x81, 0x91,67, 0,32, 0x80, 0x90,67, 0,49, 0x81, | |
| 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,64, 0,32, 0x80, 0x90,64, 0,49, 0x81, 0x91,67, | |
| 0,32, 0x80, 0x90,67, 0,49, 0x81, 0x91,74, 0,32, 0x80, 0x90,74, 0,49, 0x81, 0x91,64, 0,32, | |
| 0x80, 0x90,64, 0,49, 0x81, 0x91,67, 0,32, 0x80, 0x90,67, 0,49, 0x81, 0x91,74, 0,32, 0x80, | |
| 0x90,74, 0,49, 0x81, 0x91,64, 0,32, 0x80, 0x90,64, 0,49, 0x81, 0x91,67, 0,32, 0x80, 0x90,67, | |
| 0,8, 0x81, 0x91,66, 0,32, 0x80, 0x90,66, 0,8, 0x81, 0x91,74, 0,32, 0x80, 0x90,74, 0,49, | |
| 0x81, 0x91,66, 0,32, 0x80, 0x90,66, 0,49, 0x81, 0x91,69, 0,32, 0x80, 0x90,69, 0,49, 0x81, | |
| 0x91,74, 0,32, 0x80, 0x90,74, 0,49, 0x81, 0x91,66, 0,32, 0x80, 0x90,66, 0,49, 0x81, 0x91,69, | |
| 0,32, 0x80, 0x90,69, 0,49, 0x81, 0x91,74, 0,32, 0x80, 0x90,74, 0,49, 0x81, 0x91,66, 0,32, | |
| 0x80, 0x90,66, 0,49, 0x81, 0x91,69, 0,32, 0x80, 0x90,69, 0,49, 0x81, 0x91,74, 0,32, 0x80, | |
| 0x90,74, 0,49, 0x81, 0x91,66, 0,32, 0x80, 0x90,66, 0,49, 0x81, 0x91,69, 0,32, 0x80, 0x90,69, | |
| 0,49, 0x81, 0x91,74, 0,32, 0x80, 0x90,74, 0,49, 0x81, 0x91,66, 0,32, 0x80, 0x90,66, 0,49, | |
| 0x81, 0x91,69, 0,32, 0x80, 0x90,69, 0,49, 0x81, 0x91,74, 0,32, 0x80, 0x90,74, 0,49, 0x81, | |
| 0x91,66, 0,32, 0x80, 0x90,66, 0,49, 0x81, 0x91,69, 0,32, 0x80, 0x90,69, 0,49, 0x81, 0x91,76, | |
| 0,32, 0x80, 0x90,76, 0,49, 0x81, 0x91,66, 0,32, 0x80, 0x90,66, 0,49, 0x81, 0x91,69, 0,32, | |
| 0x80, 0x90,69, 0,49, 0x81, 0x91,76, 0,32, 0x80, 0x90,76, 0,49, 0x81, 0x91,66, 0,32, 0x80, | |
| 0x90,66, 0,49, 0x81, 0x91,69, 0,32, 0x80, 0x90,69, 0,49, 0x81, 0x91,76, 0,32, 0x80, 0x90,76, | |
| 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,68, 0,32, 0x80, 0x90,68, 0,49, | |
| 0x81, 0x91,76, 0,32, 0x80, 0x90,76, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, | |
| 0x91,68, 0,32, 0x80, 0x90,68, 0,49, 0x81, 0x91,76, 0,32, 0x80, 0x90,76, 0,49, 0x81, 0x91,71, | |
| 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,68, 0,32, 0x80, 0x90,68, 0,49, 0x81, 0x91,76, 0,32, | |
| 0x80, 0x90,76, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,68, 0,32, 0x80, | |
| 0x90,68, 0,49, 0x81, 0x91,76, 0,32, 0x80, 0x90,76, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, | |
| 0,49, 0x81, 0x91,68, 0,32, 0x80, 0x90,68, 0,49, 0x81, 0x91,76, 0,32, 0x80, 0x90,76, 0,49, | |
| 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,68, 0,32, 0x80, 0x90,68, 0,49, 0x81, | |
| 0x91,76, 0,32, 0x80, 0x90,76, 0,40, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,40, 0x81, 0x91,68, | |
| 0,32, 0x80, 0x90,68, 0,40, 0x81, 0x91,76, 0,32, 0x80, 0x90,76, 0,40, 0x81, 0x91,71, 0,32, | |
| 0x80, 0x90,71, 0,40, 0x81, 0x91,68, 0,32, 0x80, 0x90,68, 0,16, 0x92,76, 0,24, 0x81, 0,8, | |
| 0x91,76, 0,24, 0x80, 0,16, 0x82, 0x90,68, 0,32, 0x81, 0x91,68, 0,49, 0x80, 0x90,71, 0,32, | |
| 0x81, 0x91,71, 0,49, 0x80, 0x90,76, 0,32, 0x81, 0x91,76, 0,49, 0x80, 0x90,68, 0,32, 0x81, | |
| 0x91,68, 0,49, 0x80, 0x90,71, 0,32, 0x81, 0x91,71, 0,49, 0x80, 0x90,76, 0,32, 0x81, 0x91,76, | |
| 0,49, 0x80, 0x90,71, 0,32, 0x81, 0x91,71, 0,131, 0x80, 0x90,76, 0,32, 0x81, 0x91,76, 0,49, | |
| 0x80, 0x90,71, 0,32, 0x81, 0x91,71, 0,49, 0x80, 0x90,74, 0,32, 0x81, 0x91,74, 0,49, 0x80, | |
| 0x90,76, 0,32, 0x81, 0x91,76, 0,49, 0x80, 0x90,70, 0,32, 0x81, 0x91,70, 0,49, 0x80, 0x90,73, | |
| 0,32, 0x81, 0x91,73, 0,49, 0x80, 0x90,76, 0,32, 0x81, 0x91,76, 0,49, 0x80, 0x90,70, 0,32, | |
| 0x81, 0x91,70, 0,49, 0x80, 0x90,73, 0,32, 0x81, 0x91,73, 0,49, 0x80, 0x90,76, 0,32, 0x81, | |
| 0x91,76, 0,49, 0x80, 0x90,69, 0,32, 0x81, 0x91,69, 0,49, 0x80, 0x90,72, 0,32, 0x81, 0x91,72, | |
| 0,49, 0x80, 0x90,76, 0,32, 0x81, 0x91,76, 0,49, 0x80, 0x90,69, 0,32, 0x81, 0x91,69, 0,49, | |
| 0x80, 0x90,72, 0,32, 0x81, 0x91,72, 0,49, 0x80, 0x90,76, 0,32, 0x81, 0x91,76, 0,49, 0x80, | |
| 0x90,68, 0,32, 0x81, 0x91,68, 0,49, 0x80, 0x90,71, 0,32, 0x81, 0x91,71, 0,49, 0x80, 0x90,76, | |
| 0,32, 0x81, 0x91,76, 0,49, 0x80, 0x90,68, 0,32, 0x81, 0x91,68, 0,49, 0x80, 0x90,71, 0,32, | |
| 0x81, 0x91,71, 0,8, 0x80, 0x90,74, 0,32, 0x81, 0x91,74, 0,8, 0x80, 0x90,76, 0,32, 0x81, | |
| 0x91,76, 0,49, 0x80, 0x90,71, 0,32, 0x81, 0x91,71, 0,49, 0x80, 0x90,74, 0,32, 0x81, 0x91,74, | |
| 0,49, 0x80, 0x90,76, 0,32, 0x81, 0x91,76, 0,49, 0x80, 0x90,71, 0,32, 0x81, 0x91,71, 0,49, | |
| 0x80, 0x90,74, 0,32, 0x81, 0x91,74, 0,49, 0x80, 0x90,76, 0,32, 0x81, 0x91,76, 0,49, 0x80, | |
| 0x90,70, 0,32, 0x81, 0x91,70, 0,49, 0x80, 0x90,73, 0,32, 0x81, 0x91,73, 0,49, 0x80, 0x90,76, | |
| 0,32, 0x81, 0x91,76, 0,49, 0x80, 0x90,70, 0,32, 0x81, 0x91,70, 0,49, 0x80, 0x90,73, 0,32, | |
| 0x81, 0x91,73, 0,49, 0x80, 0x90,76, 0,32, 0x81, 0x91,76, 0,49, 0x80, 0x90,69, 0,32, 0x81, | |
| 0x91,69, 0,49, 0x80, 0x90,72, 0,32, 0x81, 0x91,72, 0,49, 0x80, 0x90,76, 0,32, 0x81, 0x91,76, | |
| 0,49, 0x80, 0x90,69, 0,32, 0x81, 0x91,69, 0,49, 0x80, 0x90,72, 0,32, 0x81, 0x91,72, 0,49, | |
| 0x80, 0x90,76, 0,32, 0x81, 0x91,76, 0,49, 0x80, 0x90,68, 0,32, 0x81, 0x91,68, 0,49, 0x80, | |
| 0x90,71, 0,32, 0x81, 0x91,71, 0,49, 0x80, 0x90,76, 0,32, 0x81, 0x91,76, 0,49, 0x80, 0x90,68, | |
| 0,32, 0x81, 0x91,68, 0,49, 0x80, 0x90,71, 0,32, 0x81, 0x91,71, 0,49, 0x80, 0x90,74, 0,32, | |
| 0x81, 0x91,74, 0,49, 0x80, 0x90,69, 0,32, 0x81, 0x91,69, 0,49, 0x80, 0x90,72, 0,32, 0x81, | |
| 0x91,72, 0,49, 0x80, 0x90,74, 0,32, 0x81, 0x91,74, 0,49, 0x80, 0x90,69, 0,32, 0x81, 0x91,69, | |
| 0,49, 0x80, 0x90,72, 0,32, 0x81, 0x91,72, 0,49, 0x80, 0x90,74, 0,32, 0x81, 0x91,74, 0,49, | |
| 0x80, 0x90,68, 0,32, 0x81, 0x91,68, 0,49, 0x80, 0x90,71, 0,32, 0x81, 0x91,71, 0,49, 0x80, | |
| 0x90,74, 0,32, 0x81, 0x91,74, 0,49, 0x80, 0x90,68, 0,32, 0x81, 0x91,68, 0,49, 0x80, 0x90,71, | |
| 0,32, 0x81, 0x91,71, 0,49, 0x80, 0x90,74, 0,32, 0x81, 0x91,74, 0,49, 0x80, 0x90,67, 0,32, | |
| 0x81, 0x91,67, 0,49, 0x80, 0x90,70, 0,32, 0x81, 0x91,70, 0,49, 0x80, 0x90,74, 0,32, 0x81, | |
| 0x91,74, 0,49, 0x80, 0x90,67, 0,32, 0x81, 0x91,67, 0,49, 0x80, 0x90,70, 0,32, 0x81, 0x91,70, | |
| 0,49, 0x80, 0x90,74, 0,32, 0x81, 0x91,74, 0,49, 0x80, 0x90,66, 0,32, 0x81, 0x91,66, 0,40, | |
| 0x80, 0x90,69, 0,32, 0x81, 0x91,69, 0,40, 0x80, 0x90,74, 0,32, 0x81, 0x91,74, 0,40, 0x80, | |
| 0x90,66, 0,32, 0x81, 0x91,66, 0,40, 0x80, 0x90,69, 0,32, 0x81, 0x91,69, 0,40, 0x80, 0x90,72, | |
| 0,32, 0x81, 0x91,72, 0,16, 0x92,73, 0,24, 0x80, 0,8, 0x90,73, 0,24, 0x81, 0,16, | |
| 0x82, 0x91,67, 0,32, 0x80, 0x90,67, 0,49, 0x81, 0x91,70, 0,32, 0x80, 0x90,70, 0,49, 0x81, | |
| 0x91,72, 0,32, 0x80, 0x90,72, 0,49, 0x81, 0x91,67, 0,32, 0x80, 0x90,67, 0,49, 0x81, 0x91,70, | |
| 0,32, 0x80, 0x90,70, 0,49, 0x81, 0x91,72, 0,32, 0x80, 0x90,72, 0,49, 0x81, 0x91,66, 0,32, | |
| 0x80, 0x90,66, 0,49, 0x81, 0x91,69, 0,32, 0x80, 0x90,69, 0,49, 0x81, 0x91,72, 0,32, 0x80, | |
| 0x90,72, 0,49, 0x81, 0x91,66, 0,32, 0x80, 0x90,66, 0,49, 0x81, 0x91,69, 0,32, 0x80, 0x90,69, | |
| 0,49, 0x81, 0x91,72, 0,32, 0x80, 0x90,72, 0,49, 0x81, 0x91,65, 0,32, 0x80, 0x90,65, 0,49, | |
| 0x81, 0x91,68, 0,32, 0x80, 0x90,68, 0,49, 0x81, 0x91,72, 0,32, 0x80, 0x90,72, 0,49, 0x81, | |
| 0x91,65, 0,32, 0x80, 0x90,65, 0,49, 0x81, 0x91,68, 0,32, 0x80, 0x90,68, 0,49, 0x81, 0x91,72, | |
| 0,32, 0x80, 0x90,72, 0,49, 0x81, 0x91,64, 0,32, 0x80, 0x90,64, 0,49, 0x81, 0x91,67, 0,32, | |
| 0x80, 0x90,67, 0,49, 0x81, 0x91,72, 0,32, 0x80, 0x90,72, 0,49, 0x81, 0x91,64, 0,32, 0x80, | |
| 0x90,64, 0,49, 0x81, 0x91,67, 0,32, 0x80, 0x90,67, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, | |
| 0,49, 0x81, 0x91,63, 0,32, 0x80, 0x90,63, 0,49, 0x81, 0x91,66, 0,32, 0x80, 0x90,66, 0,49, | |
| 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,63, 0,32, 0x80, 0x90,63, 0,49, 0x81, | |
| 0x91,66, 0,32, 0x80, 0x90,66, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,63, | |
| 0,32, 0x80, 0x90,63, 0,49, 0x81, 0x91,66, 0,32, 0x80, 0x90,66, 0,49, 0x81, 0x91,71, 0,32, | |
| 0x80, 0x90,71, 0,49, 0x81, 0x91,63, 0,32, 0x80, 0x90,63, 0,49, 0x81, 0x91,66, 0,32, 0x80, | |
| 0x90,66, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,63, 0,32, 0x80, 0x90,63, | |
| 0,49, 0x81, 0x91,66, 0,32, 0x80, 0x90,66, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, | |
| 0x81, 0x91,63, 0,32, 0x80, 0x90,63, 0,49, 0x81, 0x91,66, 0,32, 0x80, 0x90,66, 0,49, 0x81, | |
| 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,63, 0,32, 0x80, 0x90,63, 0,49, 0x81, 0x91,66, | |
| 0,32, 0x80, 0x90,66, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,63, 0,32, | |
| 0x80, 0x90,63, 0,49, 0x81, 0x91,66, 0,32, 0x80, 0x90,66, 0,49, 0x81, 0x91,71, 0,32, 0x80, | |
| 0x90,71, 0,49, 0x81, 0x91,64, 0,32, 0x80, 0x90,64, 0,49, 0x81, 0x91,67, 0,32, 0x80, 0x90,67, | |
| 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,64, 0,32, 0x80, 0x90,64, 0,49, | |
| 0x81, 0x91,67, 0,32, 0x80, 0x90,67, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, | |
| 0x91,64, 0,32, 0x80, 0x90,64, 0,49, 0x81, 0x91,67, 0,32, 0x80, 0x90,67, 0,49, 0x81, 0x91,71, | |
| 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,64, 0,32, 0x80, 0x90,64, 0,49, 0x81, 0x91,67, 0,32, | |
| 0x80, 0x90,67, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,64, 0,32, 0x80, | |
| 0x90,64, 0,49, 0x81, 0x91,67, 0,32, 0x80, 0x90,67, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, | |
| 0,49, 0x81, 0x91,64, 0,32, 0x80, 0x90,64, 0,49, 0x81, 0x91,67, 0,32, 0x80, 0x90,67, 0,49, | |
| 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,64, 0,32, 0x80, 0x90,64, 0,49, 0x81, | |
| 0x91,67, 0,32, 0x80, 0x90,67, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,64, | |
| 0,32, 0x80, 0x90,64, 0,49, 0x81, 0x91,67, 0,32, 0x80, 0x90,67, 0,49, 0x81, 0x91,71, 0,32, | |
| 0x80, 0x90,71, 0,49, 0x81, 0x91,63, 0,32, 0x80, 0x90,63, 0,49, 0x81, 0x91,66, 0,32, 0x80, | |
| 0x90,66, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,63, 0,32, 0x80, 0x90,63, | |
| 0,49, 0x81, 0x91,66, 0,32, 0x80, 0x90,66, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, | |
| 0x81, 0x91,63, 0,32, 0x80, 0x90,63, 0,49, 0x81, 0x91,66, 0,32, 0x80, 0x90,66, 0,49, 0x81, | |
| 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,63, 0,32, 0x80, 0x90,63, 0,49, 0x81, 0x91,66, | |
| 0,32, 0x80, 0x90,66, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,63, 0,32, | |
| 0x80, 0x90,63, 0,49, 0x81, 0x91,66, 0,32, 0x80, 0x90,66, 0,49, 0x81, 0x91,71, 0,32, 0x80, | |
| 0x90,71, 0,49, 0x81, 0x91,63, 0,32, 0x80, 0x90,63, 0,49, 0x81, 0x91,66, 0,32, 0x80, 0x90,66, | |
| 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,63, 0,32, 0x80, 0x90,63, 0,49, | |
| 0x81, 0x91,66, 0,32, 0x80, 0x90,66, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, | |
| 0x91,63, 0,32, 0x80, 0x90,63, 0,49, 0x81, 0x91,66, 0,32, 0x80, 0x90,66, 0,49, 0x81, 0x91,71, | |
| 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,64, 0,32, 0x80, 0x90,64, 0,49, 0x81, 0x91,67, 0,32, | |
| 0x80, 0x90,67, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,63, 0,32, 0x80, | |
| 0x90,63, 0,49, 0x81, 0x91,66, 0,32, 0x80, 0x90,66, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, | |
| 0,49, 0x81, 0x91,64, 0,32, 0x80, 0x90,64, 0,49, 0x81, 0x91,67, 0,32, 0x80, 0x90,67, 0,49, | |
| 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,63, 0,32, 0x80, 0x90,63, 0,49, 0x81, | |
| 0x91,66, 0,32, 0x80, 0x90,66, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,64, | |
| 0,32, 0x80, 0x90,64, 0,49, 0x81, 0x91,67, 0,32, 0x80, 0x90,67, 0,49, 0x81, 0x91,71, 0,32, | |
| 0x80, 0x90,71, 0,49, 0x81, 0x91,63, 0,32, 0x80, 0x90,63, 0,49, 0x81, 0x91,66, 0,32, 0x80, | |
| 0x90,66, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,64, 0,32, 0x80, 0x90,64, | |
| 0,49, 0x81, 0x91,67, 0,32, 0x80, 0x90,67, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, | |
| 0x81, 0x91,63, 0,32, 0x80, 0x90,63, 0,49, 0x81, 0x91,66, 0,32, 0x80, 0x90,66, 0,49, 0x81, | |
| 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,64, 0,32, 0x80, 0x90,64, 0,49, 0x81, 0x91,67, | |
| 0,32, 0x80, 0x90,67, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,63, 0,32, | |
| 0x80, 0x90,63, 0,49, 0x81, 0x91,66, 0,32, 0x80, 0x90,66, 0,49, 0x81, 0x91,71, 0,32, 0x80, | |
| 0x90,71, 0,49, 0x81, 0x91,64, 0,32, 0x80, 0x90,64, 0,49, 0x81, 0x91,67, 0,32, 0x80, 0x90,67, | |
| 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,63, 0,32, 0x80, 0x90,63, 0,49, | |
| 0x81, 0x91,66, 0,32, 0x80, 0x90,66, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, | |
| 0x91,64, 0,32, 0x80, 0x90,64, 0,49, 0x81, 0x91,67, 0,32, 0x80, 0x90,67, 0,49, 0x81, 0x91,71, | |
| 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,63, 0,32, 0x80, 0x90,63, 0,49, 0x81, 0x91,66, 0,32, | |
| 0x80, 0x90,66, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,64, 0,32, 0x80, | |
| 0x90,64, 0,49, 0x81, 0x91,67, 0,32, 0x80, 0x90,67, 0,49, 0x81, 0x91,71, 0,32, 0x80, 0x90,71, | |
| 0,49, 0x81, 0x91,63, 0,32, 0x80, 0x90,63, 0,49, 0x81, 0x91,66, 0,32, 0x80, 0x90,66, 0,49, | |
| 0x81, 0x91,71, 0,32, 0x80, 0x90,71, 0,49, 0x81, 0x91,64, 0x92,52, 0x93,52, 0,32, 0x80, 0x90,64, | |
| 1,141, 0x81, 0x91,44, 0x82, 0x92,32, 0x83, 0x93,32, 0,32, 0x80, 0x90,44, 0,28, 0x81, 0x91,58, | |
| 0x82, 0x92,46, 0x83, 0x93,46, 0,32, 0x80, 0x90,58, 1,129, 0x81, 0x82, 0x83, 0,12, 0x91,59, 0x92,47, | |
| 0x93,47, 0,20, 0x80, 0,12, 0x90,59, 0,28, 0x81, 0x91,40, 0x82, 0x92,28, 0x83, 0x93,28, 0,32, | |
| 0x80, 0x90,40, 2,176, 0x81, 0x82, 0x83, 0,16, 0x91,50, 0x92,38, 0x93,38, 0,16, 0x80, 0,16, | |
| 0x90,50, 0,90, 0x81, 0x91,50, 0x82, 0x92,38, 0x83, 0x93,38, 0,32, 0x80, 0x90,50, 6,29, 0x94,57, | |
| 0x95,50, 1,235, 32,45, 0x85, 5,72, 0x84, 0,245, 0x81, 0x82, 0x83, 0,32, 0x80, 0xf0 | |
| }; | |
| unsigned int index = sizeof(score); | |
| void setup() { | |
| pinMode(13, INPUT_PULLUP); | |
| index = sizeof(score); | |
| songPlay(); | |
| } | |
| void songWait() { | |
| while (songPlaying) { | |
| delay(1); | |
| } | |
| } | |
| void songStop() { | |
| songPlaying = false; | |
| index = sizeof(score); | |
| for (byte i = 0; i < 6; i++) { | |
| voiceEnabled[i] = 0; | |
| voiceType[i] = 0; | |
| start[i] = 0; | |
| states[i] = 0; | |
| periods[i] = 0; | |
| nextFlip[i] = 0; | |
| } | |
| } | |
| void songPlay() { | |
| index = 0; | |
| songPlaying = true; | |
| for (byte i = 0; i < 6; i++) { | |
| byte p = pgm_read_byte (voicePins + i); | |
| pinMode(p, INPUT_PULLUP); | |
| } | |
| // TIMER 0 for interrupt frequency 1000 Hz: | |
| cli(); // stop interrupts | |
| TCCR0A = 0; // set entire TCCR0A register to 0 | |
| TCCR0B = 0; // same for TCCR0B | |
| TCNT0 = 0; // initialize counter value to 0 | |
| // set compare match register for 1000 Hz increments | |
| OCR0A = 249; // = 16000000 / (64 * 1000) - 1 (must be <256) | |
| // turn on CTC mode | |
| TCCR0B |= (1 << WGM01); | |
| // Set CS02, CS01 and CS00 bits for 64 prescaler | |
| TCCR0B |= (0 << CS02) | (1 << CS01) | (1 << CS00); | |
| // enable timer compare interrupt | |
| TIMSK0 |= (1 << OCIE0A); | |
| sei(); // allow interrupts | |
| // TIMER 1 for interrupt frequency 22050 Hz: | |
| cli(); // stop interrupts | |
| TCCR1A = 0; // set entire TCCR1A register to 0 | |
| TCCR1B = 0; // same for TCCR1B | |
| TCNT1 = 0; // initialize counter value to 0 | |
| // set compare match register for 25000 Hz increments | |
| OCR1A = 725; // = 16000000 / (1 * 22050) - 1 (must be <65536) | |
| // turn on CTC mode | |
| TCCR1B |= (1 << WGM12); | |
| // Set CS12, CS11 and CS10 bits for 1 prescaler | |
| TCCR1B |= (0 << CS12) | (0 << CS11) | (1 << CS10); | |
| // enable timer compare interrupt | |
| TIMSK1 |= (1 << OCIE1A); | |
| sei(); // allow interrupts | |
| } | |
| byte rng() { | |
| static unsigned int y = 0; | |
| y += t; // seeded with changing number | |
| y ^= y >> 7; | |
| y ^= y << 7; | |
| return (y); | |
| } | |
| void startVoice(byte voice, unsigned int frequency) { | |
| byte p = pgm_read_byte (voicePins + voice); | |
| pinMode(p, OUTPUT); | |
| if (frequency < 27) { // must be percussion | |
| voiceType[voice] = 1 + frequency; | |
| Serial.println(voiceType[voice]); | |
| voiceEnabled[voice] = 1; | |
| periods[voice] = 1; | |
| start[voice] = t; | |
| } | |
| else { | |
| periods[voice] = 1000000 / frequency / 2; | |
| nextFlip[voice] = t + periods[voice]; | |
| voiceEnabled[voice] = 1; | |
| voiceType[voice] = 0; | |
| } | |
| } | |
| ISR(TIMER0_COMPA_vect) { | |
| if (t >= nextCommandTime) { | |
| if (index < sizeof(score)) { | |
| byte command = pgm_read_byte (score + index); | |
| byte type = bitRead(command, 7); | |
| byte val1 = 0; | |
| for (byte i = 0; i < 4; i++) { | |
| bitWrite(val1, i, bitRead(command, i + 4)); | |
| } | |
| byte val2 = 0; | |
| for (byte i = 0; i < 4; i++) { | |
| bitWrite(val2, i, bitRead(command, i)); | |
| } | |
| type = bitRead(command, 7); | |
| if (type == 1) { | |
| if (val1 == 0x9) { | |
| byte note = pgm_read_byte (score + index + 1); | |
| byte voice = val2; | |
| unsigned int freq = 0; | |
| if (note > 108) { // IF HIGHER THAN PIANO RANGE, USE PERCUSSION | |
| freq = 127 - note; // FREQUENCY NOW DECIDES PERCUSSION TYPE | |
| } | |
| else { // If we're in piano range, produce the corresponding frequency | |
| freq = pgm_read_word(frequencies + note - 20); | |
| } | |
| startVoice(voice, freq); | |
| index += 2; | |
| } | |
| if (val1 == 0x8) { | |
| byte voice = val2; | |
| voiceEnabled[voice] = 0; | |
| byte p = pgm_read_byte (voicePins + voice); | |
| pinMode(p, INPUT_PULLUP); | |
| index += 1; | |
| } | |
| if (val1 == 0xF) { | |
| songStop(); | |
| } | |
| if (val1 == 0xE) { | |
| index = 0; | |
| } | |
| } | |
| else if (type == 0) { | |
| byte next = pgm_read_byte (score + index + 1); | |
| unsigned long wait = 0; | |
| for (byte i = 0; i < 7; i++) { | |
| bitWrite(wait, i + 8, bitRead(command, i)); | |
| } | |
| for (byte i = 0; i < 8; i++) { | |
| bitWrite(wait, i, bitRead(next, i)); | |
| } | |
| nextCommandTime = t + (wait * 600); // not an exact ms value, tuned faster to make up for some slow code | |
| index += 2; | |
| } | |
| } | |
| } | |
| //limit hh closed durations | |
| for (byte i = 0; i < 6; i++) { | |
| if (voiceType[i] == 1 || voiceType[i] == 2 || voiceType[i] == 3) { | |
| if (t - start[i] >= 30000) { | |
| voiceEnabled[i] = 0; | |
| voiceType[i] = 0; | |
| start[i] = 0; | |
| byte p = pgm_read_byte (voicePins + i); | |
| pinMode(p, INPUT_PULLUP); | |
| } | |
| } | |
| // limit fast snare durations | |
| if (voiceType[i] == 4) { | |
| if (t - start[i] >= 80000) { | |
| voiceEnabled[i] = 0; | |
| voiceType[i] = 0; | |
| start[i] = 0; | |
| byte p = pgm_read_byte (voicePins + i); | |
| pinMode(p, INPUT_PULLUP); | |
| } | |
| } | |
| } | |
| } | |
| ISR(TIMER1_COMPA_vect) { | |
| t = micros(); | |
| bool newNoise = false; | |
| for (byte i = 0; i < 5; i++) { | |
| if (voiceEnabled[i] == 1) { | |
| byte p = pgm_read_byte (voicePins + i); | |
| byte state = 0; | |
| if (voiceType[i] == 0) { | |
| if (t > nextFlip[i]) { | |
| nextFlip[i] += periods[i]; | |
| states[i] = !states[i]; | |
| digitalWrite(p, states[i]); | |
| } | |
| } | |
| else if (voiceType[i] == 1 || voiceType[i] == 4) { | |
| if (newNoise == false) { | |
| newNoise = true; | |
| noise = bitRead(rng(), 0); | |
| } | |
| digitalWrite(p, noise); | |
| } | |
| else if (voiceType[i] == 2) { | |
| if (noiseCount[i] == 2) { | |
| noiseCount[i] = 0; | |
| if (newNoise == false) { | |
| newNoise = true; | |
| noise = bitRead(rng(), 0); | |
| } | |
| digitalWrite(p, noise); | |
| } | |
| else { | |
| noiseCount[i]++; | |
| } | |
| } | |
| else if (voiceType[i] == 3) { | |
| if (noiseCount[i] == 3) { | |
| noiseCount[i] = 0; | |
| if (newNoise == false) { | |
| newNoise = true; | |
| noise = bitRead(rng(), 0); | |
| } | |
| digitalWrite(p, noise); | |
| } | |
| else { | |
| noiseCount[i]++; | |
| } | |
| } | |
| } | |
| } | |
| } | |
| void loop() { | |
| /* | |
| for (byte i = 0; i < 6; i++) { | |
| Serial.print(voiceEnabled[i]); | |
| Serial.print("\t"); | |
| } | |
| Serial.println(); | |
| */ | |
| if (digitalRead(13) == LOW) { | |
| songPlay(); | |
| songWait(); | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment