// Generate a rhythm, and maybe some tunes, from a sample, on an // 8-bit microcontroller. #include #include "ritmo_lib.h" static const char ha_wavetable[] PROGMEM = { 122, 123, 124, 126, 128, 128, 127, 125, 122, 119, 117, 117, 118, 119, 121, 122, 122, 121, 120, 118, 117, 118, 119, 120, 122, 123, 124, 124, 122, 121, 120, 118, 117, 116, 116, 116, 117, 119, 121, 124, 127, 130, 132, 133, 133, 132, 131, 129, 127, 125, 122, 120, 117, 114, 113, 111, 111, 112, 113, 115, 117, 119, 122, 125, 127, 130, 132, 133, 133, 132, 130, 126, 122, 117, 112, 108, 105, 104, 105, 107, 110, 115, 119, 123, 128, 131, 135, 137, 139, 139, 139, 137, 133, 130, 125, 120, 116, 111, 108, 105, 104, 105, 107, 111, 116, 121, 126, 130, 134, 135, 136, 135, 133, 131, 128, 125, 122, 118, 115, 112, 109, 108, 107, 108, 110, 112, 115, 118, 121, 124, 126, 127, 128, 127, 126, 124, 121, 118, 116, 115, 115, 117, 120, 123, 127, 131, 133, 134, 134, 133, 131, 129, 127, 125, 122, 119, 115, 111, 109, 107, 108, 111, 116, 122, 128, 133, 137, 140, 140, 139, 137, 133, 128, 122, 115, 107, 100, 95, 92, 92, 95, 100, 106, 113, 120, 127, 133, 138, 142, 144, 145, 144, 141, 135, 129, 122, 114, 108, 103, 100, 99, 101, 104, 109, 114, 120, 126, 130, 134, 136, 137, 137, 135, 132, 128, 124, 120, 116, 114, 113, 114, 115, 117, 119, 120, 119, 118, 116, 113, 111, 109, 107, 105, 103, 101, 99, 99, 100, 102, 107, 112, 118, 124, 130, 135, 140, 144, 148, 150, 150, 147, 142, 135, 127, 118, 111, 104, 100, 98, 97, 97, 98, 99, 101, 104, 108, 114, 120, 128, 135, 142, 147, 151, 152, 151, 148, 143, 137, 130, 121, 112, 102, 93, 85, 80, 77, 78, 81, 87, 96, 106, 116, 127, 138, 148, 156, 160, 161, 158, 152, 144, 134, 125, 117, 111, 107, 104, 102, 102, 104, 108, 113, 119, 126, 131, 135, 136, 135, 132, 130, 128, 127, 127, 127, 127, 126, 124, 122, 119, 117, 115, 112, 110, 106, 102, 98, 93, 90, 88, 89, 92, 98, 106, 116, 128, 140, 152, 163, 171, 176, 176, 172, 164, 152, 138, 123, 109, 96, 86, 78, 74, 73, 76, 82, 91, 100, 111, 120, 128, 134, 137, 137, 136, 134, 131, 129, 128, 128, 128, 128, 127, 125, 121, 115, 109, 103, 97, 93, 89, 86, 83, 81, 80, 81, 84, 89, 98, 109, 122, 135, 147, 157, 163, 166, 166, 162, 156, 148, 138, 127, 117, 107, 97, 90, 84, 80, 78, 80, 83, 89, 97, 105, 114, 121, 128, 134, 139, 143, 147, 150, 152, 151, 148, 143, 136, 127, 117, 105, 92, 79, 67, 55, 47, 43, 45, 53, 67, 86, 108, 130, 152, 172, 188, 200, 207, 207, 200, 186, 166, 142, 117, 92, 72, 56, 46, 42, 42, 47, 55, 67, 81, 99, 118, 137, 155, 169, 178, 182, 182, 177, 169, 159, 148, 138, 127, 117, 109, 102, 97, 94, 91, 89, 86, 83, 80, 78, 77, 77, 79, 82, 86, 92, 99, 108, 118, 129, 140, 150, 158, 163, 164, 163, 159, 153, 145, 136, 127, 117, 107, 96, 87, 80, 75, 73, 76, 82, 91, 103, 118, 133, 149, 164, 178, 190, 197, 201, 199, 192, 180, 161, 137, 110, 80, 51, 26, 6, 0, 0, 0, 7, 25, 49, 77, 107, 139, 171, 199, 221, 235, 238, 230, 212, 187, 157, 127, 100, 76, 58, 46, 39, 39, 44, 56, 73, 94, 116, 138, 156, 169, 176, 179, 177, 172, 166, 158, 150, 142, 134, 128, 122, 119, 118, 117, 117, 115, 112, 107, 100, 92, 84, 76, 69, 63, 58, 56, 57, 62, 72, 86, 104, 123, 142, 159, 171, 178, 180, 178, 173, 166, 158, 148, 139, 128, 117, 107, 96, 87, 81, 77, 77, 80, 87, 96, 108, 121, 135, 149, 161, 173, 182, 188, 190, 185, 175, 159, 138, 113, 89, 65, 46, 31, 21, 16, 16, 20, 30, 45, 66, 91, 120, 149, 175, 197, 212, 219, 218, 210, 197, 179, 158, 134, 109, 86, 66, 52, 46, 47, 55, 67, 81, 96, 109, 120, 130, 139, 147, 155, 162, 167, 170, 169, 165, 159, 152, 144, 135, 127, 117, 107, 97, 88, 79, 72, 67, 65, 66, 68, 72, 77, 85, 94, 105, 116, 129, 141, 151, 159, 164, 165, 163, 157, 149, 139, 128, 118, 109, 103, 98, 96, 96, 96, 97, 98, 98, 100, 102, 106, 112, 120, 129, 138, 147, 156, 162, 168, 171, 173, 172, 169, 162, 151, 136, 117, 96, 74, 53, 36, 25, 21, 25, 35, 52, 72, 95, 118, 139, 159, 175, 188, 197, 200, 198, 189, 174, 154, 131, 107, 85, 66, 53, 46, 45, 48, 56, 66, 79, 94, 110, 127, 145, 162, 177, 189, 197, 202, 203, 199, 191, 180, 165, 148, 130, 111, 93, 76, 62, 51, 42, 36, 33, 33, 37, 46, 59, 77, 97, 118, 136, 152, 162, 168, 170, 168, 164, 158, 151, 141, 129, 117, 105, 95, 89, 87, 89, 94, 101, 107, 112, 115, 116, 118, 120, 124, 130, 137, 146, 155, 163, 169, 171, 171, 166, 158, 146, 132, 115, 97, 78, 59, 41, 25, 14, 10, 14, 26, 46, 71, 99, 127, 153, 173, 189, 199, 204, 204, 199, 188, 173, 153, 131, 107, 86, 67, 54, 46, 43, 44, 48, 56, 67, 81, 98, 117, 137, 157, 174, 189, 199, 204, 204, 199, 189, 175, 157, 138, 118, 99, 81, 66, 54, 45, 38, 36, 38, 45, 59, 77, 98, 120, 141, 158, 170, 177, 180, 179, 175, 168, 159, 148, 134, 118, 102, 87, 75, 67, 65, 66, 72, 79, 88, 97, 105, 113, 120, 127, 135, 142, 150, 158, 165, 169, 170, 168, 163, 156, 147, 138, 128, 119, 108, 97, 85, 73, 62, 56, 56, 61, 72, 87, 102, 117, 129, 138, 143, 146, 148, 148, 146, 142, 136, 128, 117, 106, 96, 87, 80, 76, 75, 77, 80, 85, 91, 97, 104, 111, 119, 127, 137, 147, 158, 168, 176, 181, 182, 178, 171, 161, 150, 138, 126, 113, 100, 87, 74, 64, 57, 56, 62, 73, 89, 107, 125, 140, 152, 158, 160, 156, 149, 138, 123, 108, 92, 77, 65, 57, 54, 56, 64, 76, 91, 107, 124, 138, 150, 158, 162, 163, 162, 158, 153, 148, 143, 138, 133, 129, 127, 128, 130, 133, 136, 138, 137, 133, 126, 117, 108, 99, 92, 87, 84, 83, 84, 87, 91, 96, 101, 107, 112, 116, 117, 117, 116, 113, 110, 107, 104, 102, 99, 97, 96, 97, 101, 107, 115, 124, 131, 137, 142, 144, 146, 148, 151, 154, 156, 158, 157, 153, 147, 138, 128, 119, 112, 107, 104, 102, 100, 97, 94, 90, 87, 87, 89, 96, 106, 117, 129, 137, 140, 138, 130, 120, 108, 97, 88, 82, 79, 77, 76, 77, 81, 87, 96, 109, 123, 138, 151, 161, 166, 168, 166, 161, 155, 148, 141, 136, 131, 127, 124, 122, 120, 117, 116, 115, 116, 117, 119, 121, 120, 118, 112, 106, 100, 97, 97, 102, 110, 118, 124, 126, 123, 117, 110, 103, 99, 97, 98, 99, 98, 97, 94, 92, 93, 98, 106, 116, 127, 137, 144, 148, 149, 148, 146, 144, 141, 137, 133, 127, 122, 118, 115, 114, 115, 117, 120, 123, 126, 128, 130, 130, 129, 127, 124, 121, 119, 118, 119, 121, 124, 127, 128, 126, 123, 118, 112, 107, 101, 96, 92, 87, 82, 77, 74, 72, 72, 76, 83, 93, 105, 118, 131, 142, 151, 157, 161, 162, 161, 159, 155, 151, 145, 137, 128, 118, 107, 98, 90, 86, 85, 86, 90, 95, 101, 108, 116, 126, 137, 147, 156, 162, 163, 158, 149, 136, 122, 107, 93, 79, 67, 57, 48, 43, 42, 46, 56, 70, 88, 107, 127, 144, 158, 168, 174, 176, 174, 168, 160, 150, 139, 127, 117, 109, 102, 97, 94, 93, 94, 97, 102, 110, 118, 127, 136, 142, 146, 148, 147, 145, 141, 138, 134, 129, 124, 117, 110, 102, 94, 87, 81, 78, 77, 77, 78, 80, 83, 87, 92, 99, 108, 118, 128, 137, 143, 148, 149, 149, 148, 148, 148, 149, 149, 148, 144, 137, 127, 118, 108, 101, 98, 97, 99, 101, 104, 107, 111, 115, 120, 127, 136, 145, 153, 158, 159, 155, 148, 138, 126, 115, 105, 97, 91, 85, 81, 77, 74, 73, 74, 77, 83, 90, 99, 107, 115, 120, 124, 127, 131, 135, 141, 148, 154, 159, 160, 158, 152, 144, 136, 128, 121, 116, 111, 107, 103, 99, 97, 97, 102, 111, 123, 137, 151, 161, 167, 168, 165, 158, 149, 137, 124, 110, 94, 77, 61, 48, 39, 36, 39, 48, 62, 77, 94, 109, 124, 137, 149, 158, 165, 169, 168, 164, 156, 147, 138, 129, 123, 118, 114, 112, 109, 107, 105, 104, 105, 108, 112, 117, 122, 127, 131, 134, 136, 138, 140, 140, 139, 137, 133, 129, 124, 118, 112, 107, 101, 96, 92, 89, 88, 88, 89, 92, 94, 96, 98, 98, 98, 98, 99, 103, 109, 117, 127, 138, 149, 159, 166, 170, 171, 167, 160, 151, 140, 128, 117, 106, 95, 86, 79, 74, 73, 78, 87, 102, 119, 137, 152, 163, 169, 169, 164, 156, 147, 137, 126, 114, 101, 88, 75, 64, 57, 56, 61, 71, 84, 98, 111, 122, 131, 137, 141, 145, 147, 148, 148, 146, 142, 137, 131, 126, 121, 118, 117, 116, 117, 117, 116, 114, 111, 108, 105, 103, 103, 107, 113, 121, 130, 138, 144, 148, 149, 147, 144, 140, 134, 128, 120, 112, 104, 97, 91, 88, 86, 87, 90, 92, 95, 97, 99, 101, 104, 107, 111, 113, 116, 117, 120, 123, 129, 138, 147, 157, 165, 168, 166, 160, 149, 137, 125, 114, 105, 97, 91, 87, 85, 87, 92, 101, 114, 128, 141, 152, 157, 157, 152, 143, 131, 118, 105, 93, 83, 77, 74, 75, 80, 88, 98, 109, 119, 127, 132, 134, 132, 128, 122, 116, 110, 107, 106, 110, 117, 128, 141, 155, 167, 177, 183, 184, 179, 169, 152, 132, 109, 86, 67, 53, 46, 48, 56, 70, 87, 107, 126, 143, 158, 169, 174, 175, 169, 157, 141, 123, 104, 88, 75, 68, 65, 66, 71, 79, 88, 98, 108, 117, 123, 127, 127, 125, 121, 118, 117, 120, 127, 137, 149, 160, 171, 178, 182, 182, 177, 167, 153, 136, 117, 98, 81, 68, 60, 57, 58, 65, 74, 87, 103, 119, 134, 147, 156, 159, 156, 148, 137, 125, 115, 107, 102, 100, 98, 97, 96, 95, 96, 97, 100, 103, 106, 107, 107, 106, 106, 108, 113, 122, 134, 147, 161, 173, 183, 188, 190, 188, 180, 167, 149, 127, 102, 78, 56, 41, 34, 36, 46, 61, 79, 98, 116, 132, 146, 157, 166, 171, 172, 168, 160, 147, 132, 117, 102, 91, 83, 78, 76, 75, 76, 76, 78, 80, 83, 88, 95, 104, 114, 127, 140, 154, 167, 179, 188, 195, 198, 197, 193, 184, 173, 159, 142, 123, 104, 86, 71, 58, 51, 48, 50, 56, 65, 76, 89, 102, 116, 128, 139, 148, 154, 157, 156, 152, 146, 138, 130, 122, 114, 107, 99, 92, 85, 78, 72, 67, 65, 67, 72, 83, 99, 118, 139, 161, 181, 198, 209, 214, 214, 208, 198, 182, 161, 137, 110, 83, 58, 37, 24, 20, 24, 37, 54, 75, 97, 118, 136, 150, 161, 168, 169, 166, 159, 148, 135, 121, 108, 97, 88, 82, 79, 77, 78, 80, 84, 87, 90, 93, 95, 97, 102, 110, 122, 138, 155, 173, 188, 198, 202, 202, 197, 188, 177, 163, 147, 127, 106, 84, 63, 47, 37, 34, 38, 47, 59, 72, 85, 98, 109, 120, 129, 137, 144, 148, 149, 148, 145, 140, 134, 127, 120, 112, 104, 98, 92, 89, 87, 87, 88, 90, 93, 98, 105, 116, 131, 147, 164, 180, 191, 198, 200, 196, 189, 177, 163, 147, 128, 108, 88, 69, 55, 47, 45, 51, 62, 77, 94, 111, 126, 137, 145, 150, 150, 148, 142, 135, 126, 117, 108, 100, 93, 87, 84, 83, 84, 87, 92, 98, 103, 107, 110, 112, 114, 117, 124, 134, 146, 158, 168, 175, 178, 178, 175, 170, 164, 157, 149, 138, 124, 108, 92, 78, 69, 67, 70, 78, 88, 98, 105, 111, 114, 117, 120, 124, 126, 128, 127, 122, 115, 107, 99, 93, 89, 88, 89, 91, 94, 97, 100, 102, 105, 108, 111, 116, 121, 127, 134, 142, 151, 158, 164, 168, 169, 167, 163, 156, 148, 138, 127, 116, 106, 97, 91, 89, 92, 98, 106, 115, 122, 127, 130, 130, 130, 128, 125, 121, 115, 107, 97, 86, 76, 68, 63, 61, 63, 67, 72, 77, 82, 88, 94, 100, 108, 117, 127, 137, 148, 158, 167, 174, 177, 177, 174, 167, 158, 148, 137, 127, 116, 107, 99, 92, 88, 88, 91, 97, 106, 117, 128, 137, 144, 148, 149, 148, 144, 137, 129, 119, 109, 98, 87, 79, 72, 67, 64, 64, 65, 67, 72, 79, 88, 97, 108, 118, 128, 138, 146, 154, 161, 168, 172, 174, 172, 167, 160, 150, 139, 128, 118, 109, 102, 97, 94, 92, 93, 98, 105, 115, 126, 137, 147, 154, 158, 158, 155, 151, 144, 137, 129, 120, 109, 98, 86, 74, 64, 57, 53, 55, 60, 68, 78, 88, 98, 107, 116, 126, 137, 148, 160, 169, 175, 177, 174, 167, 158, 148, 140, 132, 124, 117, 108, 98, 87, 78, 73, 72, 77, 87, 99, 113, 126, 138, 148, 156, 163, 167, 168, 166, 159, 148, 134, 118, 101, 87, 75, 66, 61, 58, 57, 59, 62, 67, 74, 84, 95, 108, 122, 135, 147, 157, 164, 169, 170, 168, 163, 156, 147, 137, 127, 117, 107, 98, 90, 83, 78, 77, 79, 85, 95, 108, 122, 136, 148, 157, 164, 168, 169, 168, 165, 158, 149, 137, 123, 107, 92, 78, 67, 60, 57, 57, 61, 68, 77, 88, 100, 112, 125, 137, 148, 158, 164, 168, 168, 164, 157, 148, 137, 126, 116, 107, 101, 95, 91, 88, 85, 83, 84, 87, 94, 104, 116, 128, 139, 148, 154, 157, 159, 159, 159, 158, 156, 152, 146, 137, 126, 113, 100, 88, 77, 68, 61, 57, 55, 56, 60, 68, 79, 93, 110, 127, 143, 158, 170, 178, 182, 181, 176, 167, 154, 140, 124, 108, 94, 81, 72, 66, 66, 69, 77, 89, 103, 118, 133, 146, 157, 165, 168, 169, 166, 161, 154, 146, 138, 129, 119, 109, 97, 86, 75, 66, 61, 60, 63, 69, 77, 86, 96, 106, 116, 127, 138, 149, 158, 165, 167, 166, 162, 155, 147, 139, 131, 124, 116, 106, 96, 85, 75, 69, 67, 69, 76, 86, 97, 108, 119, 129, 138, 148, 158, 166, 173, 176, 175, 169, 159, 146, 131, 116, 102, 89, 78, 69, 61, 56, 55, 56, 62, 71, 84, 98, 114, 130, 145, 157, 165, 170, 171, 168, 163, 155, 146, 137, 127, 117, 107, 98, 90, 83, 79, 77, 78, 83, 89, 98, 108, 118, 128, 137, 145, 151, 155, 158, 158, 157, 153, 147, 139, 130, 119, 108, 97, 88, 81, 77, 76, 78, 82, 88, 94, 102, 109, 117, 126, 134, 142, 148, 151, 152, 151, 147, 143, 138, 133, 128, 122, 115, 107, 98, 89, 81, 77, 78, 82, 89, 98, 108, 116, 123, 130, 137, 145, 154, 162, 168, 170, 167, 159, 147, 134, 120, 108, 98, 90, 85, 80, 77, 76, 77, 81, 88, 97, 108, 119, 127, 133, 137, 138, 138, 136, 134, 131, 127, 122, 117, 112, 108, 106, 105, 106, 107, 108, 108, 108, 108, 108, 111, 114, 117, 121, 124, 126, 128, 131, 135, 141, 147, 153, 155, 153, 148, 138, 127, 117, 107, 100, 95, 91, 88, 85, 83, 84, 88, 95, 105, 117, 128, 136, 140, 140, 137, 133, 127, 122, 117, 113, 109, 103, 98, 92, 88, 87, 87, 91, 96, 102, 108, 113, 118, 122, 127, 133, 138, 143, 148, 150, 151, 150, 147, 143, 138, 133, 128, 122, 117, 112, 107, 104, 101, 99, 98, 98, 100, 103, 107, 113, 119, 124, 128, 129, 127, 122, 117, 112, 109, 108, 108, 109, 109, 108, 107, 106, 105, 106, 108, 111, 114, 116, 117, 117, 116, 116, 118, 121, 126, 132, 137, 142, 145, 147, 148, 147, 146, 142, 137, 130, 123, 115, 108, 102, 99, 97, 97, 98, 101, 104, 108, 113, 119, 124, 127, 129, 127, 123, 118, 112, 106, 101, 97, 94, 92, 89, 88, 88, 89, 93, 97, 103, 109, 114, 118, 121, 123, 125, 127, 130, 132, 135, 138, 141, 144, 146, 147, 146, 142, 136, 128, 119, 113, 109, 107, 109, 112, 115, 118, 119, 119, 118, 117, 117, 118, 118, 118, 117, 114, 111, 107, 104, 101, 99, 98, 98, 100, 103, 107, 112, 115, 118, 118, 116, 113, 110, 107, 107, 109, 113, 118, 123, 129, 133, 137, 140, 141, 140, 138, 133, 128, 122, 117, 115, 114, 115, 118, 121, 123, 125, 127, 130, 133, 136, 138, 137, 133, 126, 117, 107, 99, 92, 88, 86, 86, 86, 87, 90, 94, 100, 108, 117, 126, 133, 137, 137, 135, 132, 128, 124, 121, 119, 117, 116, 116, 116, 118, 121, 124, 126, 127, 126, 124, 121, 118, 117, 117, 117, 117, 118, 118, 118, 118, 120, 123, 125, 127, 127, 126, 122, 119, 115, 112, 110, 108, 106, 104, 102, 100, 99, 101, 104, 108, 113, 117, 118, 119, 118, 117, 117, 118, 120, 123, 126, 128, 129, 129, 128, 127, 125, 123, 121, 119, 117, 117, 117, 118, 120, 123, 125, 128, 130, 133, 135, 136, 137, 135, 133, 128, 122, 114, 107, 101, 96, 92, 91, 93, 96, 100, 105, 110, 114, 116, 118, 119, 120, 122, 124, 127, 130, 131, 130, 128, 124, 121, 118, 119, 121, 124, 127, 128, 127, 124, 121, 119, 117, 118, 119, 119, 119, 119, 118, 119, 121, 126, 132, 136, 139, 138, 133, 127, 121, 116, 113, 111, 110, 109, 106, 102, 99, 98, 99, 103, 109, 114, 117, 119, 119, 118, 118, 120, 123, 125, 127, 127, 125, 123, 121, 120, 121, 124, 126, 127, 126, 124, 122, 120, 120, 122, 125, 127, 127, 126, 123, 120, 119, 120, 123, 127, 129, 129, 126, 120, 114, 108, 104, 103, 105, 108, 111, 113, 113, 112, 111, 111, 112, 115, 118, 121, 122, 122, 121, 119, 118, 117, 118, 121, 123, 126, 127, 127, 125, 123, 121, 121, 121, 123, 125, 127, 127, 125, 123, 121, 120, 120, 123, 127, 131, 135, 136, 136, 133, 129, 124, 119, 115, 112, 109, 106, 104, 103, 103, 105, 107, 109, 112, 114, 115, 116, 118, 119, 122, 125, 127, 128, 128, 126, 123, 119, 116, 114, 113, 114, 115, 117, 119, 120, 120, 120, 121, 121, 122, 124, 125, 127, 128, 129, 129, 128, 127, 125, 122, 120, 118, 116, 115, 114, 114, 113, 113, 113, 113, 113, 114, 114, 116, 117, 118, 120, 121, 122, 122, 121, 119, 117, 115, 113, 113, 115, 118, 121, 125, 127, 128, 127, 125, 123, 122, 121, 121, 121, 121, 120, 119, 119, 119, 121, 124, 128, 131, 134, 134, 133, 131, 128, 125, 123, 122, 121, 119, 118, 116, 115, 114, 113, 113, 114, 116, 117, 119, 121, 123, 125, 127, 127, 127, 126, 124, 121, 119, 117, 115, 115, 115, 116, 119, 121, 124, 126, 127, 127, 126, 124, 122, 121, 122, 123, 125, 127, 128, 128, 125, 121, 118, 115, 114, 115, 117, 120, 121, 121, 120, 118, 116, 115, 115, 117, 119, 121, 124, 126, 127, 128, 127, 126, 124, 121, 119, 116, 115, 116, 117, 119, 120, 121, 121, 121, 121, 122, 123, 125, 127, 127, 127, 125, 123, 122, 122, 123, 125, 127, 128, 127, 125, 122, 120, 119, 119, 121, 123, 125, 124, 122, 119, 117, 115, 116, 117, 119, 121, 122, 122, 121, 121, 121, 123, 125, 127, 128, 127, 126, 124, 121, 120, 120, 121, 122, 123, 123, 123, 122, 121, 120, 121, 122, 124, 125, 126, 127, 128, 128, 128, 128, 127, 126, 124, 122, 119, 117, 117, 117, 118, 119, 121, 122, 122, 122, 122, 122, 123, 124, 126, 127, 128, 129, 129, 128, 127, 125, 124, 122, 120, 119, 118, 117, 116, 116, 116, 117, 117, 119, 120, 122, 125, 126, 127, 127, 126, 125, 123, 122, 123, 124, 126, 127, 128, 128, 125, 122, 119, 117, 116, 117, 119, 122 }; static const char corde_wavetable[] PROGMEM = { 122, 123, 135, 135, 137, 132, 126, 116, 97, 88, 97, 99, 107, 109, 109, 127, 139, 158, 162, 159, 173, 174, 177, 173, 163, 162, 156, 143, 124, 116, 114, 106, 110, 119, 115, 117, 128, 128, 131, 129, 124, 107, 96, 110, 108, 111, 117, 105, 101, 119, 130, 124, 127, 137, 138, 136, 145, 141, 136, 140, 137, 138, 138, 142, 145, 140, 148, 142, 125, 117, 101, 93, 98, 95, 94, 101, 109, 130, 143, 149, 160, 162, 159, 157, 152, 146, 140, 132, 129, 134, 131, 123, 132, 135, 122, 119, 132, 142, 136, 131, 124, 125, 138, 147, 137, 126, 118, 109, 117, 110, 101, 106, 116, 128, 134, 137, 144, 160, 170, 174, 174, 162, 157, 150, 128, 120, 121, 119, 120, 123, 132, 136, 133, 132, 128, 126, 108, 90, 88, 84, 84, 80, 81, 100, 111, 118, 136, 145, 139, 139, 131, 122, 132, 142, 141, 144, 145, 158, 166, 167, 166, 157, 152, 153, 147, 130, 117, 103, 105, 111, 109, 112, 106, 106, 115, 119, 116, 109, 114, 109, 111, 115, 112, 111, 115, 137, 138, 140, 154, 151, 144, 137, 145, 141, 124, 118, 114, 117, 111, 104, 109, 105, 96, 97, 92, 93, 98, 87, 94, 97, 87, 95, 109, 117, 130, 149, 153, 151, 156, 156, 166, 170, 152, 154, 153, 147, 146, 139, 130, 122, 134, 143, 137, 126, 116, 120, 116, 101, 107, 119, 127, 137, 144, 146, 141, 134, 128, 127, 132, 142, 140, 140, 145, 143, 141, 138, 137, 145, 134, 120, 117, 117, 126, 124, 121, 118, 127, 135, 129, 132, 127, 125, 112, 105, 113, 109, 109, 116, 122, 126, 127, 133, 129, 121, 115, 109, 102, 84, 76, 86, 97, 110, 113, 123, 144, 152, 162, 163, 161, 163, 161, 161, 159, 156, 152, 144, 141, 139, 137, 131, 121, 123, 131, 131, 131, 127, 115, 100, 98, 100, 100, 109, 111, 124, 141, 143, 146, 143, 146, 136, 128, 128, 105, 101, 107, 109, 125, 127, 134, 150, 146, 140, 143, 139, 129, 120, 117, 112, 114, 115, 106, 113, 117, 112, 115, 130, 142, 146, 158, 167, 156, 141, 135, 137, 129, 125, 130, 134, 123, 126, 133, 125, 132, 142, 134, 132, 143, 154, 157, 158, 173, 173, 152, 144, 118, 98, 94, 90, 96, 92, 100, 108, 121, 138, 129, 128, 126, 117, 113, 113, 116, 117, 123, 127, 137, 141, 144, 151, 150, 154, 135, 107, 107, 116, 119, 114, 122, 141, 151, 155, 154, 142, 133, 127, 117, 117, 104, 92, 105, 102, 109, 118, 123, 121, 118, 131, 127, 132, 130, 117, 125, 121, 117, 115, 108, 113, 109, 113, 105, 100, 99, 90, 103, 110, 114, 132, 142, 157, 174, 181, 182, 171, 164, 149, 128, 117, 107, 118, 126, 127, 126, 126, 132, 130, 138, 137, 126, 127, 124, 121, 118, 118, 125, 135, 150, 145, 132, 130, 121, 116, 124, 106, 97, 104, 95, 104, 113, 126, 129, 120, 124, 112, 114, 120, 119, 124, 133, 134, 137, 147, 141, 129, 125, 128, 127, 121, 112, 117, 136, 147, 151, 156, 162, 159, 151, 138, 124, 122, 117, 113, 113, 117, 121, 117, 113, 112, 111, 112, 114, 120, 122, 126, 133, 134, 126, 117, 110, 108, 105, 110, 119, 128, 131, 142, 165, 181, 188, 185, 185, 171, 154, 149, 139, 131, 119, 106, 96, 92, 93, 89, 100, 111, 118, 134, 143, 148, 147, 149, 153, 148, 149, 146, 142, 142, 139, 146, 149, 146, 149, 151, 145, 139, 137, 127, 115, 120, 120, 110, 109, 113, 118, 114, 106, 97, 105, 113, 116, 121, 114, 121, 134, 147, 163, 168, 167, 163, 168, 154, 137, 134, 115, 112, 108, 107, 119, 117, 112, 112, 113, 107, 116, 117, 110, 121, 117, 122, 120, 113, 114, 103, 108, 110, 103, 108, 115, 123, 118, 126, 143, 149, 160, 157, 149, 143, 139, 139, 134, 121, 119, 132, 136, 135, 133, 129, 134, 129, 128, 123, 104, 103, 103, 99, 107, 117, 130, 130, 130, 132, 126, 118, 115, 108, 101, 111, 116, 119, 133, 141, 148, 152, 152, 153, 137, 136, 143, 129, 128, 129, 122, 128, 129, 129, 128, 127, 131, 145, 144, 138, 148, 137, 143, 153, 153, 159, 142, 149, 150, 131, 127, 125, 122, 108, 91, 93, 99, 89, 87, 99, 104, 109, 111, 119, 129, 125, 126, 127, 128, 124, 127, 137, 138, 133, 125, 126, 130, 123, 114, 119, 123, 107, 111, 125, 114, 111, 117, 115, 114, 112, 105, 95, 92, 101, 114, 128, 127, 125, 117, 106, 109, 102, 110, 129, 141, 147, 154, 183, 181, 156, 149, 136, 128, 126, 124, 122, 116, 116, 123, 131, 147, 156, 154, 159, 155, 145, 139, 133, 135, 123, 121, 128, 116, 103, 105, 107, 107, 109, 106, 109, 122, 134, 143, 135, 130, 138, 136, 135, 133, 126, 130, 125, 109, 114, 119, 122, 135, 137, 142, 143, 146, 152, 149, 156, 153, 145, 136, 134, 132, 128, 133, 131, 135, 122, 119, 104, 114, 166, 137, 103, 71, 26, 43, 77, 102, 129, 152, 158, 146, 148, 128, 121, 125, 97, 146, 123, 64, 92, 87, 106, 124, 129, 167, 178, 209, 211, 177, 167, 85, 62, 90, 58, 76, 103, 108, 148, 153, 133, 146, 149, 107, 103, 161, 100, 90, 128, 82, 132, 84, 64, 130, 113, 145, 163, 186, 174, 112, 109, 60, 53, 92, 77, 127, 176, 162, 165, 159, 158, 156, 177, 148, 108, 142, 104, 120, 148, 121, 123, 128, 144, 146, 138, 119, 149, 166, 164, 192, 165, 97, 65, 107, 97, 86, 122, 122, 134, 134, 128, 152, 164, 148, 135, 136, 137, 147, 124, 133, 172, 170, 129, 69, 59, 67, 83, 118, 120, 143, 121, 72, 128, 147, 170, 193, 147, 158, 151, 160, 143, 108, 143, 128, 119, 118, 103, 105, 40, 49, 121, 78, 83, 97, 107, 157, 143, 161, 172, 193, 190, 100, 57, 27, 43, 85, 107, 143, 150, 142, 130, 102, 60, 52, 69, 105, 139, 130, 125, 134, 135, 144, 171, 161, 129, 111, 118, 133, 112, 97, 132, 128, 96, 125, 124, 102, 91, 65, 59, 51, 52, 74, 123, 156, 186, 216, 206, 211, 178, 118, 114, 120, 150, 208, 196, 173, 147, 117, 163, 169, 144, 138, 113, 106, 100, 101, 100, 111, 106, 84, 172, 190, 149, 183, 159, 125, 119, 110, 88, 89, 135, 156, 158, 121, 126, 171, 157, 158, 126, 113, 170, 161, 125, 124, 140, 115, 132, 166, 118, 141, 180, 126, 102, 124, 114, 82, 47, 75, 111, 95, 104, 115, 145, 133, 96, 81, 104, 180, 193, 181, 164, 164, 144, 89, 68, 48, 122, 173, 129, 141, 131, 88, 107, 160, 163, 94, 80, 114, 90, 69, 102, 149, 165, 166, 134, 97, 82, 66, 104, 112, 117, 129, 105, 106, 95, 116, 151, 162, 185, 186, 172, 144, 64, 11, 58, 98, 113, 77, 46, 115, 149, 177, 194, 174, 152, 97, 86, 75, 110, 177, 171, 170, 132, 95, 96, 98, 127, 186, 226, 198, 177, 187, 193, 170, 185, 188, 115, 91, 64, 68, 87, 87, 132, 139, 147, 138, 126, 173, 161, 80, 80, 110, 116, 133, 88, 93, 135, 159, 203, 184, 166, 191, 179, 113, 100, 112, 69, 84, 94, 111, 115, 91, 158, 152, 124, 138, 105, 132, 143, 116, 153, 171, 150, 144, 135, 115, 91, 109, 88, 82, 120, 84, 107, 103, 54, 74, 64, 68, 98, 158, 162, 122, 134, 103, 103, 118, 129, 178, 177, 193, 169, 103, 73, 36, 73, 108, 124, 129, 111, 150, 148, 138, 149, 137, 124, 94, 86, 113, 110, 72, 92, 136, 144, 151, 146, 146, 167, 140, 116, 128, 104, 99, 113, 100, 112, 147, 152, 132, 165, 179, 183, 200, 179, 182, 114, 53, 93, 84, 63, 75, 121, 128, 111, 153, 154, 142, 127, 148, 200, 193, 171, 146, 148, 119, 84, 113, 136, 170, 173, 152, 171, 186, 163, 131, 87, 67, 78, 43, 46, 104, 120, 125, 132, 127, 86, 38, 55, 118, 174, 203, 205, 197, 193, 174, 128, 90, 72, 65, 40, 37, 90, 97, 104, 182, 237, 227, 185, 168, 124, 86, 96, 67, 92, 141, 139, 133, 131, 145, 126, 97, 87, 109, 139, 124, 133, 146, 117, 111, 142, 161, 137, 119, 140, 135, 148, 159, 117, 129, 131, 94, 82, 70, 110, 133, 114, 128, 131, 123, 127, 130, 149, 150, 170, 213, 178, 155, 136, 96, 121, 108, 76, 114, 172, 160, 111, 127, 148, 97, 65, 89, 69, 56, 88, 101, 121, 133, 148, 167, 162, 147, 142, 123, 105, 104, 99, 107, 127, 153, 156, 141, 122, 86, 89, 108, 137, 155, 156, 174, 133, 121, 168, 184, 173, 158, 168, 133, 105, 106, 96, 117, 130, 144, 147, 132, 155, 137, 90, 112, 99, 81, 79, 60, 88, 101, 98, 78, 71, 70, 44, 69, 83, 108, 146, 139, 126, 144, 131, 89, 92, 76, 115, 188, 198, 214, 193, 174, 177, 141, 122, 123, 132, 137, 120, 120, 118, 99, 93, 120, 135, 119, 151, 186, 155, 125, 115, 121, 127, 102, 111, 133, 133, 170, 175, 139, 134, 113, 117, 113, 66, 59, 92, 131, 145, 167, 188, 178, 171, 159, 119, 94, 105, 107, 97, 91, 94, 99, 97, 80, 87, 159, 205, 171, 157, 189, 165, 113, 70, 64, 118, 129, 147, 175, 133, 114, 114, 128, 141, 133, 168, 150, 103, 77, 68, 55, 23, 82, 101, 81, 119, 160, 153, 127, 150, 137, 96, 85, 126, 141, 128, 133, 96, 140, 162, 122, 149, 183, 221, 197, 155, 171, 176, 132, 104, 124, 109, 119, 141, 116, 91, 93, 120, 97, 94, 127, 121, 118, 133, 120, 102, 122, 142, 145, 141, 164, 188, 167, 172, 174, 148, 132, 116, 91, 107, 143, 130, 112, 123, 137, 128, 128, 138, 139, 142, 113, 119, 120, 108, 133, 128, 152, 156, 131, 137, 99, 107, 143, 141, 158, 132, 141, 135, 116, 128, 111, 121, 132, 187, 184, 130, 133, 129, 131, 109, 85, 95, 125, 125, 143, 180, 158, 139, 143, 113, 78, 68, 63, 85, 114, 123, 135, 144, 146, 133, 105, 73, 69, 75, 65, 94, 126, 118, 145, 148, 129, 124, 128, 144, 101, 116, 118, 96, 129, 112, 128, 113, 105, 154, 127, 119, 131, 131, 135, 132, 135, 125, 134, 154, 142, 107, 77, 94, 146, 144, 124, 130, 141, 160, 135, 106, 114, 101, 91, 83, 86, 105, 134, 159, 155, 185, 160, 122, 150, 132, 152, 187, 158, 145, 106, 75, 110, 146, 161, 177, 178, 179, 199, 145, 116, 159, 145, 112, 86, 83, 80, 71, 108, 131, 152, 161, 135, 149, 156, 126, 103, 100, 115, 105, 85, 89, 116, 119, 144, 198, 202, 208, 191, 152, 116, 69, 81, 123, 154, 143, 94, 98, 120, 121, 117, 126, 150, 163, 150, 121, 108, 91, 97, 111, 86, 86, 80, 75, 101, 125, 132, 116, 112, 109, 102, 125, 147, 156, 155, 128, 99, 106, 117, 110, 89, 90, 114, 142, 202, 176, 111, 120, 113, 100, 104, 120, 154, 164, 151, 139, 145, 162, 172, 151, 117, 118, 138, 148, 118, 106, 134, 125, 121, 114, 93, 118, 151, 135, 120, 116, 106, 123, 124, 103, 137, 189, 199, 178, 142, 133, 123, 118, 128, 138, 163, 134, 120, 154, 133, 83, 76, 106, 122, 124, 140, 138, 135, 159, 136, 130, 148, 134, 124, 129, 143, 137, 131, 132, 130, 134, 112, 105, 89, 84, 98, 92, 113, 104, 115, 161, 168, 165, 159, 166, 137, 97, 108, 149, 201, 196, 149, 124, 113, 78, 56, 73, 82, 99, 97, 80, 97, 100, 107, 121, 97, 97, 125, 105, 95, 112, 120, 131, 117, 123, 149, 141, 136, 148, 150, 142, 136, 125, 99, 91, 106, 92, 123, 156, 148, 155, 140, 158, 166, 136, 138, 136, 142, 128, 94, 109, 120, 125, 139, 147, 169, 152, 125, 122, 121, 117, 112, 121, 121, 124, 121, 112, 123, 137, 133, 125, 142, 166, 186, 160, 116, 122, 113, 90, 91, 96, 120, 141, 146, 153, 153, 166, 147, 123, 142, 144, 125, 114, 115, 134, 159, 168, 165, 152, 114, 97, 127, 132, 123, 132, 133, 113, 83, 103, 143, 143, 115, 102, 109, 108, 111, 107, 120, 164, 189, 180, 155, 176, 199, 182, 203, 198, 156, 115, 61, 57, 34, 27, 57, 63, 109, 144, 132, 121, 120, 152, 170, 169, 158, 145, 149, 140, 118, 117, 130, 139, 147, 142, 116, 102, 106, 120, 128, 137, 159, 141, 131, 138, 116, 113, 106, 128, 157, 147, 147, 125, 119, 137, 138, 158, 158, 134, 102, 110, 127, 109, 99, 88, 110, 95, 58, 92, 89, 91, 115, 120, 114, 110, 146, 142, 107, 107, 110, 112, 128, 153, 139, 133, 156, 143, 137, 125, 110, 120, 108, 129, 155, 152, 153, 133, 127, 105, 96, 132, 124, 109, 137, 131, 111, 142, 129, 129, 132, 116, 157, 159, 156, 152, 127, 136, 147, 155, 164, 166, 140, 96, 106, 131, 116, 128, 138, 114, 94, 88, 92, 109, 145, 157, 145, 178, 140, 99, 148, 128, 131, 151, 159, 172, 135, 150, 135, 103, 95, 88, 115, 92, 84, 128, 120, 126, 126, 96, 83, 91, 114, 125, 134, 118, 129, 133, 116, 101, 85, 123, 122, 130, 150, 164, 202, 154, 136, 139, 114, 96, 52, 79, 103, 97, 161, 178, 158, 180, 175, 132, 115, 123, 124, 105, 93, 107, 107, 128, 162, 169, 171, 157, 148, 139, 119, 111, 117, 119, 126, 132, 136, 110, 88, 122, 135, 148, 171, 158, 140, 124, 120, 107, 94, 116, 108, 95, 119, 115, 103, 99, 115, 148, 146, 169, 187, 147, 142, 135, 109, 132, 147, 150, 178, 193, 187, 157, 134, 131, 107, 94, 97, 75, 80, 94, 106, 136, 136, 140, 149, 139, 111, 73, 82, 101, 120, 151, 173, 187, 184, 160, 120, 92, 90, 79, 79, 87, 91, 102, 102, 118, 145, 131, 105, 137, 147, 149, 188, 173, 175, 139, 115, 135, 94, 106, 106, 117, 106, 74, 128, 120, 126, 170, 190, 184, 129, 112, 88, 80, 131, 153, 148, 141, 137, 156, 155, 132, 153, 155, 133, 161, 164, 133, 142, 132, 104, 115, 136, 130, 129, 137, 114, 124, 95, 88, 134, 114, 111, 92, 107, 115, 99, 132, 133, 181, 170, 119, 151, 148, 112, 97, 96, 64, 90, 128, 125, 116, 120, 170, 147, 118, 136, 154, 156, 141, 122, 102, 114, 97, 105, 128, 115, 119, 119, 120, 118, 112, 111, 123, 126, 114, 95, 107, 131, 138, 160, 164, 191, 170, 104, 105, 114, 111, 103, 103, 120, 97, 103, 142, 126, 150, 167, 178, 180, 133, 127, 112, 121, 133, 113, 115, 116, 122, 137, 149, 130, 109, 145, 155, 114, 91, 81, 87, 98, 92, 117, 145, 156, 167, 164, 154, 145, 152, 118, 93, 119, 96, 106, 120, 108, 139, 137, 150, 137, 119, 143, 115, 106, 117, 116, 122, 139, 143, 129, 166, 183, 159, 176, 153, 134, 155, 138, 152, 140, 136, 149, 111, 99, 110, 145, 154, 140, 153, 131, 130, 130, 115, 142, 153, 147, 125, 96, 98, 86, 55, 57, 113, 144, 149, 161, 148, 152, 171, 153, 136, 137, 126, 136, 147, 140, 135, 134, 146, 128, 120, 157, 174, 137, 103, 130, 145, 130, 137, 129, 133, 136, 121, 127, 90, 97, 143, 129, 127, 112, 130, 127, 55, 60, 72, 90, 126, 138, 170, 161, 133, 147, 137, 136, 164, 152, 146, 157, 130, 116, 134, 112, 106, 149, 139, 116, 122, 128, 122, 114, 136, 104, 102, 160, 132, 108, 123, 120, 128, 138, 128, 110, 98, 104, 79, 45, 83, 110, 118, 119, 131, 159, 144, 130, 123, 137, 135, 127, 126, 105, 108, 97, 97, 118, 130, 135, 123, 132, 117, 100, 124, 114, 132, 167, 158, 171, 142, 113, 137, 112, 88, 100, 121, 130, 118, 117, 121, 128, 134, 131, 153, 155, 102, 70, 78, 87, 97, 114, 117, 125, 142, 132, 125, 124, 129, 160, 170, 152, 158, 124, 100, 141, 137, 135, 137, 120, 131, 126, 130, 140, 135, 125, 115, 128, 145, 162, 181, 175, 164, 172, 152, 121, 121, 116, 123, 117, 106, 111, 141, 142, 90, 127, 138, 116, 127, 120, 154, 146, 147, 163, 153, 149, 127, 108, 90, 102, 120, 125, 138, 146, 129, 128, 124, 83, 93, 103, 106, 123, 120, 153, 170, 151, 157, 171, 180, 147, 102, 110, 126, 111, 90, 111, 134, 154, 157, 104, 124, 137, 113, 121, 82, 97, 112, 104, 158, 165, 148, 158, 174, 159, 127, 92, 87, 85, 69, 97, 121, 144, 153, 172, 197, 148, 139, 137, 121, 129, 126, 139, 119, 115, 126, 98, 103, 115, 119, 111, 103, 108, 91, 91, 90, 114, 127, 108, 117, 128, 129, 123, 110, 99, 114, 149, 156, 152, 165, 165, 117, 119, 122, 108, 122, 121, 123, 134, 139, 129, 137, 156, 180, 163, 136, 138, 110, 113, 114, 106, 121, 113, 138, 143, 128, 132, 146, 161, 147, 136, 129, 141, 114, 88, 98, 88, 111, 118, 133, 179, 168, 144, 129, 109, 115, 130, 124, 111, 110, 126, 137, 148, 176, 191, 193, 176, 156, 123, 113, 146, 151, 137, 119, 123, 113, 91, 103, 126, 137, 131, 175, 186, 158, 148, 128, 112, 107, 123, 116, 115, 132, 134, 136, 132, 136, 133, 132, 132, 124, 131, 113, 103, 101, 107, 102, 82, 123, 131, 139, 151, 133, 139, 128, 150, 168, 150, 151, 155, 126, 68, 68, 82, 73, 97, 132, 146, 154, 131, 109, 127, 136, 160, 169, 147, 130, 96, 55, 45, 71, 79, 83, 91, 104, 123, 101, 97, 104, 93, 93, 92, 116, 134, 138, 142, 139, 148, 133, 131, 149, 156, 179, 170, 151, 147, 132, 114, 93, 100, 111, 128, 148, 133, 124, 129, 146, 160, 149, 133, 142, 159, 147, 139, 124, 121, 131, 101, 100, 122, 131, 149, 157, 152, 136, 142, 141, 137, 155, 154, 169, 147, 126, 162, 133, 120, 150, 131, 121, 127, 142, 134, 101, 103, 117, 115, 101, 106, 143, 161, 148, 173, 184, 170, 158, 123, 125, 119, 97, 111, 120, 146, 162, 147, 159, 175, 184, 155, 114, 111, 107, 106, 99, 103, 118, 108, 112, 142, 146, 147, 153, 142, 142, 116, 98, 99, 81, 109, 118, 126, 160, 119, 99, 99, 90, 101, 97, 113, 105, 102, 136, 140, 154, 160, 168, 189, 155, 144, 137, 124, 122, 79, 91, 123, 136, 165, 176, 181, 154, 137, 133, 98, 77, 61, 74, 102, 106, 123, 127, 129, 134, 124, 133, 163, 169, 134, 130, 144, 127, 86, 41, 51, 65, 88, 118, 105, 152, 178, 142, 159, 159, 160, 160, 129, 120, 86, 94, 126, 108, 117, 151, 163, 147, 141, 126, 115, 125, 101, 90, 92, 93, 111, 107, 113, 117, 126, 130, 104, 98, 92, 93, 105, 125, 135, 148, 177, 144, 133, 146, 135, 146, 136, 131, 124, 126, 151, 133, 119, 97, 111, 151, 133, 137, 139, 149, 161, 143, 147, 150, 140, 145, 132, 94, 107, 118, 127, 160, 147, 152, 141, 132, 125, 92, 112, 112, 114, 153, 149, 146, 145, 132, 146, 136, 143, 161, 145, 160, 154, 143, 150, 144, 155, 149, 152, 149, 126, 107, 64, 62, 85, 105, 124, 119, 141, 139, 116, 134, 149, 164, 159, 135, 137, 134, 120, 111, 96, 93, 104, 112, 106, 107, 120, 109, 88, 92, 116, 134, 133, 115, 105, 117, 106, 88, 97, 112, 115, 122, 140, 137, 146, 157, 144, 146, 164, 180, 164, 163, 171, 147, 125, 120, 131, 96, 73, 92, 87, 86, 105, 116, 98, 118, 128, 122, 146, 129, 105, 82, 111, 137, 122, 132, 130, 157, 167, 162, 166, 144, 143, 134, 128, 130, 129, 117, 102, 101, 94, 113, 112, 127, 172, 168, 161, 172, 161, 122, 97, 113, 103, 85, 103, 99, 102, 124, 129, 144, 181, 197, 189, 185, 174, 157, 150, 150, 139, 123, 126, 153, 169, 147, 127, 112, 107, 108, 80, 68, 69, 92, 130, 152, 168, 137, 132, 155, 146, 172, 178, 170, 174, 178, 179, 127, 121, 156, 136, 134, 130, 121, 121, 88, 78, 86, 104, 117, 107, 117, 114, 94, 105, 107, 98, 111, 117, 126, 127, 113, 134, 156, 157, 147, 138, 132, 131, 139, 113, 125, 149, 128, 140, 149, 134, 126, 114, 108, 93, 79, 86, 73, 64, 65, 55, 82, 110, 135, 149, 138, 132, 124, 135, 143, 143, 142, 149, 157, 137, 134, 127, 116, 123, 110, 128, 148, 150, 159, 153, 151, 129, 103, 120, 90, 71, 110, 120, 118, 114, 108, 108, 112, 109, 129, 137, 134, 144, 136, 132, 110, 127, 147, 132, 129, 117, 113, 101, 86, 97, 114, 122, 126, 127, 140, 150, 145, 146, 136, 147, 149, 112, 122, 113, 99, 115, 107, 132, 126, 109, 131, 154, 160, 148, 167, 177, 173, 171, 151, 115, 106, 138, 124, 112, 133, 148, 146, 137, 150, 149, 148, 155, 136, 117, 123, 133, 150, 154, 146, 173, 176, 171, 177, 153, 144, 133, 145, 150, 128, 119, 111, 122, 115, 118, 118, 103, 113, 107, 97, 97, 112, 126, 132, 133, 136, 152, 155, 152, 151, 131, 134, 146, 127, 120, 99, 85, 94, 99, 115, 116, 123, 121, 110, 114, 108, 112, 113, 121, 146, 143, 130, 122, 117, 126, 116, 99, 125, 137, 118, 111, 112, 111, 117, 140, 152, 130, 127, 135, 113, 114, 108, 86, 101, 122, 132, 156, 165, 139, 129, 126, 135, 133, 114, 132, 124, 118, 111, 112, 132, 127, 129, 110, 107, 120, 108, 115, 122, 135, 147, 137, 136, 141, 145, 147, 121, 105, 108, 101, 99, 108, 116, 120, 125, 137, 130, 122, 117, 131, 152, 124, 107, 119, 113, 115, 127, 134, 146, 146, 131, 142, 139, 129, 144, 137, 114, 99, 91, 100, 116, 120, 117, 119, 134, 135, 128, 146, 158, 148, 148, 157, 145, 136, 154, 158, 170, 170, 164, 178, 162, 148, 144, 125, 105, 106, 112, 109, 99, 101, 128, 129, 140, 165, 158, 142, 121, 114, 106, 112, 122, 119, 114, 111, 116, 105, 110, 122, 117, 113, 100, 96, 109, 134, 156, 152, 137, 134, 139, 142, 141, 137, 134, 127, 126, 121, 111, 117, 108, 118, 129, 146, 144, 103, 124, 128, 94, 103, 126, 132, 116, 119, 145, 139, 134, 147, 122, 105, 120, 116, 118, 129, 146, 158, 122, 133, 171, 150, 141, 131, 115, 102, 91, 97, 93, 87, 90, 99, 103, 125, 144, 125, 126, 128, 128, 137, 132, 139, 129, 122, 116, 98, 102, 103, 110, 129, 123, 108, 101, 111, 121, 135, 137, 131, 134, 149, 159, 153, 156, 138, 143, 140, 109, 125, 117, 106, 128, 134, 140, 133, 126, 140, 144, 128, 130, 130, 122, 113, 111, 127, 125, 139, 162, 157, 174, 160, 139, 150, 127, 130, 137, 123, 146, 150, 143, 162, 160, 161, 173, 151, 131, 137, 131, 121, 115, 120, 123, 123, 131, 126, 126, 110, 124, 161, 149, 160, 182, 154, 132, 124, 112, 114, 123, 133, 132, 135, 134, 138, 143, 134, 139, 111, 86, 78, 56, 66, 88, 101, 116, 125, 132, 140, 147, 140, 126, 125, 124, 131, 126, 121, 142, 138, 144, 147, 136, 147, 142, 137, 138, 132, 127, 113, 117, 130, 129, 122, 125, 139, 142, 123, 115, 119, 108, 94, 98, 106, 89, 79, 95, 99, 119, 150, 138, 127, 137, 152, 151, 130, 144, 155, 127, 124, 128, 113, 106, 104, 104, 112, 121, 98, 72, 91, 104, 96, 97, 126, 158, 178, 175, 155, 146, 128, 98, 84, 93, 100, 111, 115, 121, 144, 147, 146, 145, 147, 165, 144, 135, 138, 124, 130, 117, 110, 104, 102, 117, 115, 140, 170, 174, 161, 145, 150, 151, 160, 164, 150, 143, 140, 125, 106, 120, 124, 128, 149, 141, 140, 140, 129, 132, 122, 120, 126, 113, 120, 115, 103, 126, 139, 135, 134, 148, 141, 130, 129, 112, 114, 113, 120, 136, 123, 122, 128, 119, 110, 108, 105, 125, 128, 133, 156, 143, 144, 141, 126, 125, 116, 111, 98, 91, 111, 115, 111, 116, 120, 129, 136, 142, 151, 155, 143, 129, 135, 131, 119, 112, 91, 98, 120, 118, 136, 144, 132, 133, 130, 108, 108, 105, 106, 117, 113, 117, 104, 108, 133, 135, 150, 136, 128, 133, 112, 110, 123, 145, 151, 148, 147, 130, 136, 127, 114, 135, 137, 121, 114, 113, 115, 107, 113, 115, 107, 130, 147, 142, 129, 116, 126, 132, 121, 122, 138, 138, 133, 122, 124, 137, 118, 130, 142, 138, 167, 157, 158, 170, 157, 149, 132, 119, 106, 104, 103, 111, 130, 125, 125, 123, 124, 145, 132, 125, 135, 141, 152, 137, 148, 163, 149, 149, 132, 130, 122, 118, 137, 131, 127, 130, 138, 139, 138, 150, 144, 127, 147, 143, 108, 110, 100, 107, 103, 94, 134, 134, 125, 136, 127, 119, 116, 111, 104, 110, 106, 90, 94, 99, 108, 124, 125, 115, 124, 141, 138, 152, 158, 142, 120, 115, 121, 108, 114, 129, 135, 128, 109, 102, 103, 116, 105, 102, 124, 103, 99, 112, 111, 113, 122, 129, 129, 125, 132, 152, 147, 144, 145, 140, 147, 128, 117, 134, 147, 126, 103, 117, 121, 119, 129, 130, 127, 143, 151, 144, 141, 137, 139, 130, 126, 139, 144, 150, 140, 131, 135, 125, 116, 116, 121, 129, 134, 140, 142, 136, 135, 146, 151, 155, 154, 132, 121, 122, 121, 103, 91, 116, 117, 109, 133, 138, 135, 139, 144, 141, 136, 145, 126, 119, 134, 122, 127, 135, 129, 119, 118, 124, 139, 148, 139, 134, 133, 155, 159, 147, 154, 160, 150, 129, 112, 114, 127, 132, 126, 130, 134, 121, 119, 125, 122, 119, 119, 120, 111, 118, 119, 106, 121, 134, 141, 140, 123, 126, 131, 129, 136, 138, 141, 138, 130, 145, 150, 133, 123, 114, 125, 128, 114, 107, 99, 105, 105, 107, 114, 123, 132, 129, 137, 133, 120, 123, 118, 107, 90, 98, 117, 102, 102, 110, 120, 122, 118, 130, 127, 126, 133, 128, 131, 124, 116, 124, 135, 141, 132, 136, 129, 113, 115, 99, 108, 121, 124, 140, 127, 136, 147, 147, 145, 118, 120, 109, 95, 112, 120, 129, 131, 140, 145, 132, 140, 132, 114, 109, 108, 122, 117, 131, 154, 150, 148, 135, 143, 153, 143, 160, 157, 127, 127, 137, 119, 114, 131, 126, 114, 108, 102, 115, 124, 110, 126, 134, 123, 135, 132, 137, 134, 120, 137, 131, 117, 123, 113, 120, 130, 129, 138, 143, 153, 156, 160, 163, 162, 151, 140, 146, 126, 126, 141, 139, 142, 139, 136, 124, 136, 154, 146, 140, 145, 158, 147, 130, 129, 139, 122, 109, 127, 123, 117, 109, 111, 121, 116, 128, 143, 140, 151, 154, 152, 146, 140, 147, 140, 134, 123, 105, 113, 105, 92, 94, 94, 99, 106, 129, 130, 116, 110, 101, 101, 85, 89, 114, 126, 133, 149, 167, 147, 143, 136, 113, 113, 106, 104, 96, 89, 116, 130, 130, 132, 128, 130, 129, 116, 102, 95, 101, 113, 100, 89, 103, 97, 82, 94, 114, 117, 133, 160, 172, 169, 172, 186, 172, 139, 123, 125, 124, 100, 97, 99, 98, 116, 105, 105, 124, 122, 134, 147, 149, 149, 149, 140, 115, 115, 123, 120, 110, 108, 106, 100, 88, 92, 117, 106, 105, 136, 141, 134, 132, 134, 132, 127, 132, 127, 108, 114, 134, 112, 97, 118, 136, 144, 151, 158, 160, 149, 134, 136, 143, 142, 152, 163, 163, 154, 136, 139, 134, 127, 133, 125, 129, 133, 125, 134, 135, 136, 138, 134, 144, 131, 121, 131, 121, 117, 111, 108, 122, 134, 145, 143, 137, 148, 141, 135, 140, 136, 120, 105, 116, 123, 115, 119, 117, 109, 116, 124, 132, 136, 138, 152, 154, 146, 151, 151, 151, 157, 159, 144, 122, 127, 128, 109, 109, 113, 99, 86, 91, 112, 125, 118, 124, 135, 140, 145, 137, 121, 121, 121, 107, 98, 99, 110, 123, 131, 144, 151, 129, 125, 129, 125, 134, 146, 153, 143, 157, 163, 139, 139, 131, 111, 104, 99, 93, 93, 100, 113, 128, 127, 140, 157, 143, 136, 137, 127, 117, 109, 97, 96, 101, 114, 133, 142, 145, 142, 145, 144, 136, 129, 114, 117, 123, 128, 150, 150, 144, 148, 143, 129, 120, 122, 120, 106, 101, 114, 120, 121, 107, 108, 128, 124, 121, 128, 117, 107, 103, 95, 108, 120, 109, 114, 123, 134, 150, 161, 166, 161, 157, 149, 136, 140, 143, 144, 140, 135, 149, 148, 149, 172, 179, 163, 150, 148, 134, 111, 104, 112, 116, 114, 115, 138, 149, 130, 135, 135, 120, 122, 111, 94, 93, 106, 111, 106, 124, 145, 140, 135, 131, 123, 128, 132, 130, 130, 123, 125, 133, 124, 114, 111, 122, 128, 123, 124, 124, 125, 119, 119, 126, 124, 134, 150, 135, 128, 137, 137, 135, 119, 124, 138, 136, 149, 147, 136, 142, 130, 122, 125, 112, 116, 108, 105, 119, 117, 108, 100, 99, 93, 98, 96, 87, 93, 105, 115, 106, 106, 122, 131, 128, 130, 136, 144, 150, 138, 136, 141, 135, 131, 142, 146, 140, 142, 128, 121, 126, 118, 127, 137, 133, 120, 116, 127, 122, 116, 111, 100, 112, 121, 121, 128, 131, 137, 152, 151, 155, 157, 144, 145, 135, 140, 152, 143, 143, 142, 145, 151, 135, 119, 110, 96, 89, 97, 119, 134, 139, 148, 154, 156, 147, 138, 143, 135, 131, 140, 141, 144, 155, 154, 143, 139, 138, 143, 149, 151, 146, 142, 134, 122, 132, 132, 121, 121, 115, 110, 104, 107, 112, 115, 126, 144, 151, 151, 165, 161, 150, 141, 125, 120, 113, 106, 101, 103, 118, 133, 135, 128, 120, 122, 125, 119, 119, 129, 126, 116, 117, 115, 99, 102, 106, 104, 112, 128, 140, 137, 129, 124, 134, 138, 125, 111, 107, 102, 93, 93, 85, 83, 104, 120, 112, 107, 124, 131, 135, 138, 142, 141, 139, 137, 122, 120, 113, 97, 100, 100, 109, 116, 125, 142, 148, 156, 154, 149, 151, 146, 138, 129, 127, 123, 113, 115, 131, 136, 135, 129, 115, 112, 112, 106, 114, 123, 119, 123, 130, 144, 164, 156, 148, 143, 137, 131, 110, 107, 122, 135, 140, 139, 139, 136, 136, 138, 141, 142, 146, 153, 150, 155, 150, 134, 141, 147, 154, 151, 146, 141, 135, 133, 117, 119, 123, 120, 125, 123, 130, 127, 134, 144, 140, 149, 140, 123, 113, 107, 112, 110, 109, 115, 125, 122, 126, 138, 126, 124, 133, 139, 126, 113, 121, 122, 127, 143, 140, 127, 127, 127, 119, 119, 129, 143, 148, 149, 138, 127, 118, 113, 108, 94, 97, 104, 109, 119, 112, 122, 128, 120, 123, 123, 114, 114, 126, 136, 123, 106, 102, 109, 119, 113, 118, 121, 116, 131, 136, 136, 139, 139, 129, 103, 99, 84, 68, 85, 92, 103, 116, 125, 128, 131, 140, 140, 140, 147, 139, 136, 141, 143, 156, 147, 141, 140, 143, 143, 131, 138, 137, 134, 145, 138, 134, 132, 123, 129, 121, 103, 107, 113, 128, 148, 155, 163, 163, 153, 149, 143, 134, 145, 151, 148, 149, 143, 146, 150, 155, 162, 165, 167, 158, 157, 147, 117, 115, 107, 103, 113, 105, 116, 120, 116, 111, 114, 130, 131, 134, 142, 147, 146, 150, 149, 146, 145, 143, 136, 120, 121, 112, 117, 131, 118, 114, 123, 129, 127, 137, 145, 128, 123, 125, 119, 114, 118, 121, 130, 138, 136, 137, 131, 124, 127, 127, 121, 112, 112, 124, 130, 134, 132, 118, 109, 108, 106, 96, 96, 96, 97, 110, 113, 109, 110, 125, 124, 115, 119, 120, 124, 125, 130, 120, 107, 114, 107, 109, 115, 119, 117, 118, 132, 133, 138, 150, 157, 153, 146, 132, 113, 113, 117, 107, 96, 105, 102, 86, 81, 77, 95, 115, 127, 135, 138, 149, 146, 130, 126, 123, 119, 117, 122, 127, 127, 141, 146, 146, 146, 141, 135, 120, 111, 100, 94, 103, 111, 114, 115, 114, 126, 129, 132, 144, 136, 126, 133, 136, 136, 132, 130, 133, 134, 139, 153, 156, 158, 160, 153, 151, 137, 129, 128, 124, 135, 130, 123, 122, 120, 134, 139, 134, 133, 138, 134, 133, 132, 123, 116, 110, 112, 116, 125, 129, 124, 136, 139, 138, 136, 126, 128, 126, 122, 123, 121, 130, 139, 137, 136, 139, 135, 119, 113, 128, 131, 134, 138, 142, 154, 158, 157, 145, 131, 138, 138, 136, 130, 126, 136, 143, 156, 165, 165, 164, 145, 133, 125, 110, 100, 96, 102, 96, 98, 107, 106, 111, 115, 121, 120, 114, 108, 101, 108, 114, 113, 122, 126, 121, 116, 116, 123, 119, 115, 128, 128, 121, 118, 115, 117, 117, 123, 126, 115, 115, 126, 126, 118, 120, 136, 138, 138, 151, 154, 149, 143, 148, 153, 145, 145, 133, 121, 126, 115, 102, 109, 132, 144, 131, 123, 123, 118, 112, 109, 111, 122, 127, 126, 130, 131, 133, 133, 133, 141, 125, 116, 122, 118, 116, 122, 138, 150, 142, 140, 145, 140, 134, 142, 145, 148, 158, 157, 152, 137, 133, 139, 133, 130, 124, 111, 113, 114, 117, 125, 131, 142, 143, 138, 134, 117, 115, 122, 123, 121, 119, 111, 107, 113, 107, 107, 126, 144, 146, 141, 138, 130, 118, 125, 133, 131, 126, 132, 141, 137, 139, 139, 128, 119, 121, 127, 128, 127, 124, 126, 121, 112, 115, 126, 128, 122, 121, 116, 125, 127, 123, 117, 120, 134, 135, 138, 147, 149, 141, 150, 150, 148, 153, 132, 107, 91, 87, 101, 113, 124, 125, 119, 119, 111, 99, 98, 106, 110, 106, 104, 104, 111, 111, 110, 112, 114, 125, 123, 115, 121, 122, 120, 125, 121, 122, 140, 143, 137, 145, 152, 144, 134, 132, 129, 124, 134, 143, 130, 123, 136, 145, 146, 145, 142, 141, 133, 125, 119, 116, 119, 119, 125, 131, 145, 144, 142, 150, 149, 147, 143, 146, 142, 131, 124, 115, 118, 123, 112, 112, 123, 132, 139, 138, 147, 155, 150, 144, 133, 139, 139, 114, 105, 108, 117, 123, 120, 137, 140, 136, 140, 128, 121, 121, 123, 126, 127, 130, 139, 151, 159, 159, 155, 155, 141, 127, 133, 139, 144, 144, 138, 133, 122, 115, 108, 105, 115, 130, 137, 141, 143, 130, 122, 116, 109, 109, 101, 96, 92, 95, 90, 89, 100, 109, 124, 131, 118, 118, 120, 115, 113, 109, 120, 125, 117, 113, 109, 114, 120, 121, 126, 128, 132, 145, 149, 143, 137, 125, 117, 115, 118, 128, 130, 127, 127, 131, 141, 132, 131, 136, 129, 128, 128, 119, 113, 116, 111, 116, 120, 124, 138, 132, 133, 155, 153, 148, 153, 145, 140, 134, 128, 127, 132, 135, 135, 139, 141, 138, 128, 125, 124, 120, 124, 118, 114, 116, 115, 118, 122, 128, 133, 129, 119, 108, 100, 105, 105, 110, 123, 126, 138, 152, 151, 143, 142, 130, 106, 108, 114, 118, 129, 141, 146, 148, 145, 134, 130, 128, 122, 121, 114, 114, 120, 129, 143, 136, 133, 142, 135, 126, 119, 116, 119, 115, 118, 120, 120, 128, 130, 123, 114, 118, 115, 106, 123, 140, 144, 146, 151, 155, 152, 155, 145, 135, 125, 118, 121, 104, 107, 114, 98, 104, 113, 110, 111, 122, 138, 136, 132, 131, 134, 139, 128, 127, 128, 122, 122, 130, 139, 137, 141, 148, 142, 133, 126, 115, 108, 99, 99, 101, 95, 109, 122, 130, 134, 122, 121, 122, 109, 102, 96, 93, 92, 101, 120, 126, 128, 146, 162, 171, 172, 168, 166, 151, 138, 117, 107, 112, 110, 116, 120, 130, 142, 135, 138, 155, 162, 158, 148, 140, 144, 139, 130, 129, 122, 122, 136, 149, 157, 163, 162, 154, 138, 129, 122, 108, 101, 105, 118, 128, 133, 126, 120, 136, 133, 124, 131, 125, 126, 109, 89, 96, 99, 113, 118, 129, 140, 129, 129, 125, 127, 117, 116, 138, 140, 142, 141, 146, 147, 141, 145, 133, 134, 139, 125, 125, 124, 126, 121, 114, 134, 139, 152, 153, 140, 146, 139, 132, 124, 116, 119, 119, 117, 117, 123, 126, 134, 135, 126, 123, 128, 126, 111, 103, 107, 110, 108, 105, 105, 103, 101, 100, 94, 97, 102, 108, 113, 113, 118, 124, 126, 127, 131, 133, 129, 121, 121, 132, 131, 128, 135, 132, 134, 136, 127, 125, 133, 142, 144, 138, 129, 126, 132, 125, 115, 120, 124, 129, 121, 118, 123, 122, 136, 131, 118, 129, 135, 132, 137, 144, 147, 145, 141, 141, 140, 136, 138, 137, 138, 138, 133, 137, 131, 129, 126, 127, 134, 130, 135, 130, 131, 134, 135, 142, 133, 134, 131, 125, 129, 124, 120, 120, 132, 135, 135, 137, 129, 122, 114, 111, 119, 126, 125, 122, 125, 127, 129, 131, 130, 129, 124, 127, 124, 124, 122, 123, 135, 128, 129, 130, 135, 142, 127, 128, 124, 117, 120, 123, 124, 122, 133, 138, 137, 138, 134, 132, 123, 122, 126, 122, 114, 115, 118, 122, 133, 138, 139, 139, 134, 130, 124, 116, 99, 91, 97, 106, 115, 122, 123, 133, 136, 135, 132, 126, 125, 124, 124, 123, 129, 139, 140, 149, 156, 150, 138, 127, 124, 110, 98, 95, 94, 109, 114, 120, 138, 142, 149, 148, 143, 145, 144, 144, 129, 123, 120, 109, 106, 101, 107, 108, 109, 123, 126, 136, 137, 126, 128, 122, 116, 115, 110, 118, 120, 120, 129, 127, 132, 139, 144, 160, 159, 148, 132, 123, 127, 125, 122, 119, 115, 115, 118, 119, 116, 118, 124, 137, 144, 145, 148, 148, 141, 138, 144, 142, 139, 140, 143, 147, 154, 159, 146, 135, 140, 137, 126, 120, 127, 137, 137, 133, 126, 120, 121, 117, 103, 101, 103, 108, 111, 108, 116, 117, 120, 133, 134, 127, 125, 124, 130, 137, 137, 130, 128, 126, 114, 111, 119, 126, 125, 126, 133, 137, 135, 141, 142, 131, 127, 124, 118, 113, 103, 101, 101, 101, 101, 108, 111, 116, 129, 133, 130, 131, 131, 123, 119, 116, 113, 112, 122, 127, 128, 135, 137, 152, 152, 138, 140, 138, 135, 131, 126, 123, 121, 119, 113, 114, 120, 125, 130, 140, 139, 137, 146, 157, 155, 144, 135, 122, 116, 118, 121, 123, 126, 135, 144, 145, 148, 146, 146, 146, 147, 146, 138, 122, 102, 89, 90, 96, 100, 107, 118, 124, 126, 129, 126, 121, 113, 106, 109, 108, 114, 124, 136, 154, 165, 168, 165, 156, 147, 142, 143, 140, 139, 132, 125, 127, 130, 141, 144, 137, 139, 137, 125, 112, 107, 111, 105, 91, 92, 91, 98, 100, 94, 106, 121, 134, 142, 146, 158, 164, 156, 152, 156, 151, 131, 117, 108, 109, 112, 112, 123, 131, 133, 143, 145, 147, 144, 143, 138, 129, 117, 100, 97, 96, 93, 104, 106, 105, 118, 127, 129, 137, 147, 154, 149, 139, 138, 128, 120, 115, 108, 107, 108, 111, 114, 114, 118, 115, 117, 122, 118, 120, 119, 120, 118, 120, 118, 106, 102, 105, 113, 116, 115, 119, 123, 128, 134, 131, 136, 150, 148, 150, 150, 150, 149, 140, 136, 128, 118, 110, 106, 108, 117, 129, 140, 155, 153, 146, 144, 144, 144, 138, 140, 138, 137, 132, 131, 136, 145, 151, 141, 137, 136, 120, 102, 90, 84, 90, 106, 131, 150, 147, 153, 168, 164, 155, 146, 133, 129, 125, 117, 108, 103, 106, 111, 124, 132, 131, 128, 117, 125, 140, 144, 145, 139, 136, 122, 110, 108, 103, 109, 118, 123, 123, 119, 121, 124, 129, 129, 130, 135, 134, 139, 154, 157, 154, 144, 136, 140, 141, 133, 122, 111, 111, 116, 117, 119, 128, 138, 137, 138, 132, 128, 132, 136, 134, 121, 113, 115, 125, 126, 121, 122, 114, 107, 105, 109, 110, 108, 110, 110, 119, 120, 123, 131, 135, 131, 130, 133, 122, 114, 114, 118, 128, 132, 136, 138, 144, 134, 117, 115, 114, 117, 122, 126, 122, 131, 152, 152, 153, 158, 157, 149, 146, 147, 141, 131, 136, 153, 153, 153, 156, 157, 147, 134, 141, 131, 112, 110, 104, 104, 113, 118, 127, 130, 118, 116, 129, 130, 132, 125, 122, 136, 129, 118, 113, 107, 110, 109, 115, 123, 120, 118, 119, 120, 135, 135, 124, 128, 128, 129, 125, 127, 141, 146, 141, 134, 138, 144, 135, 133, 134, 130, 122, 108, 106, 98, 96, 106, 109, 125, 145, 146, 140, 136, 133, 129, 126, 116, 109, 108, 121, 133, 134, 153, 174, 174, 174, 175, 165, 155, 143, 127, 110, 101, 97, 103, 120, 129, 139, 138, 139, 141, 128, 127, 123, 116, 113, 110, 119, 123, 122, 129, 132, 122, 126, 127, 126, 121, 116, 113, 105, 112, 118, 110, 103, 116, 130, 127, 124, 123, 130, 127, 119, 121, 113, 106, 102, 106, 124, 127, 144, 156, 143, 153, 133, 99, 99, 87, 84, 85, 93, 106, 103, 106, 115, 124, 120, 122, 133, 133, 142, 143, 148, 143, 134, 134, 117, 117, 119, 113, 129, 137, 141, 162, 171, 164, 158, 153, 139, 132, 141, 139, 120, 116, 113, 104, 111, 119, 118, 124, 126, 127, 124, 134, 143, 132, 142, 149, 142, 143, 134, 125, 137, 138, 132, 130, 127, 137, 139, 128, 119, 117, 119, 126, 124, 129, 141, 141, 147, 151, 152, 148, 137, 138, 142, 147, 135, 124, 132, 125, 122, 126, 126, 121, 111, 100, 104, 110, 101, 114, 117, 128, 144, 123, 125, 123, 108, 105, 101, 105, 95, 105, 123, 120, 134, 140, 143, 144, 140, 131, 125, 131, 129, 126, 134, 133, 123, 129, 136, 132, 133, 144, 143, 128, 131, 125, 108, 104, 99, 102, 101, 105, 106, 101, 112, 111, 116, 112, 105, 113, 117, 115, 106, 102, 103, 102, 108, 119, 137, 150, 160, 164, 154, 161, 170, 160, 152, 147, 136, 130, 140, 151, 148, 143, 156, 155, 130, 119, 119, 114, 123, 132, 131, 132, 141, 129, 118, 129, 126, 123, 125, 133, 157, 159, 161, 166, 156, 149, 154, 159, 143, 125, 127, 122, 113, 101, 99, 116, 109, 95, 107, 104, 98, 98, 94, 112, 124, 116, 120, 133, 132, 117, 103, 99, 92, 108, 126, 125, 131, 147, 161, 156, 152, 150, 137, 132, 119, 102, 107, 106, 111, 121, 123, 114, 107, 126, 133, 125, 134, 132, 122, 125, 120, 122, 147, 160, 153, 141, 146, 133, 106, 97, 103, 105, 104, 102, 97, 112, 125, 132, 147, 137, 138, 146, 133, 134, 123, 114, 114, 119, 122 }; static const char scott_wavetable[] PROGMEM = { 131, 130, 127, 130, 127, 126, 131, 130, 121, 129, 127, 124, 128, 124, 136, 130, 125, 129, 127, 128, 122, 129, 125, 126, 130, 123, 124, 126, 129, 134, 128, 118, 125, 130, 132, 126, 120, 129, 137, 132, 128, 130, 126, 130, 121, 126, 132, 119, 129, 136, 127, 119, 130, 132, 128, 134, 127, 123, 123, 126, 134, 129, 125, 125, 124, 127, 129, 125, 126, 124, 126, 131, 128, 128, 127, 132, 125, 125, 124, 124, 134, 126, 125, 128, 129, 135, 134, 126, 128, 129, 128, 131, 125, 132, 127, 129, 130, 121, 130, 129, 129, 128, 122, 121, 126, 122, 122, 131, 131, 126, 128, 131, 126, 126, 128, 125, 126, 127, 125, 128, 134, 125, 125, 127, 128, 129, 130, 131, 130, 129, 131, 133, 128, 126, 131, 131, 126, 128, 132, 129, 127, 128, 128, 132, 128, 128, 128, 125, 124, 121, 123, 121, 122, 130, 130, 126, 128, 128, 126, 122, 122, 124, 121, 121, 121, 125, 126, 121, 118, 120, 123, 127, 124, 118, 123, 130, 128, 132, 134, 131, 149, 139, 137, 142, 139, 145, 142, 139, 142, 138, 147, 143, 131, 132, 128, 130, 123, 124, 118, 120, 116, 115, 118, 117, 114, 118, 113, 111, 113, 107, 118, 120, 123, 115, 121, 119, 122, 125, 127, 127, 121, 128, 136, 132, 137, 138, 134, 149, 140, 138, 144, 138, 144, 140, 137, 145, 133, 141, 147, 141, 133, 138, 135, 133, 131, 125, 124, 120, 122, 123, 115, 110, 111, 99, 105, 102, 102, 102, 101, 105, 108, 107, 113, 116, 116, 123, 121, 123, 124, 129, 127, 129, 129, 128, 143, 138, 135, 143, 149, 149, 151, 156, 155, 156, 158, 156, 156, 152, 150, 154, 144, 142, 137, 130, 131, 128, 129, 122, 117, 113, 112, 106, 95, 97, 98, 97, 91, 91, 101, 104, 104, 103, 105, 106, 106, 110, 113, 114, 114, 119, 127, 136, 140, 146, 142, 139, 144, 158, 157, 153, 164, 166, 167, 166, 166, 165, 164, 156, 156, 150, 146, 139, 132, 132, 133, 122, 114, 118, 113, 108, 100, 95, 91, 91, 96, 97, 93, 94, 98, 100, 102, 101, 107, 105, 105, 110, 105, 109, 110, 119, 126, 129, 142, 148, 149, 156, 152, 155, 155, 153, 170, 170, 173, 173, 174, 172, 171, 168, 165, 152, 146, 140, 135, 134, 124, 119, 110, 104, 100, 95, 92, 92, 91, 90, 92, 90, 90, 95, 93, 94, 98, 99, 103, 107, 108, 104, 111, 115, 116, 120, 120, 123, 126, 129, 143, 148, 153, 155, 147, 156, 159, 160, 165, 167, 165, 170, 177, 178, 180, 177, 169, 169, 162, 147, 146, 142, 126, 127, 126, 109, 103, 95, 90, 91, 90, 90, 93, 86, 83, 84, 84, 87, 86, 90, 92, 93, 100, 105, 101, 99, 107, 105, 110, 114, 113, 122, 130, 141, 151, 151, 157, 158, 162, 167, 173, 188, 191, 196, 197, 208, 210, 208, 193, 174, 167, 153, 139, 131, 125, 108, 96, 88, 85, 80, 76, 76, 74, 76, 76, 83, 77, 77, 86, 92, 94, 94, 97, 110, 110, 103, 110, 107, 115, 123, 122, 130, 146, 153, 151, 145, 151, 155, 161, 157, 168, 183, 183, 191, 190, 192, 187, 187, 171, 154, 149, 138, 128, 123, 117, 106, 100, 96, 92, 89, 93, 86, 80, 82, 83, 81, 85, 88, 91, 86, 86, 98, 96, 105, 116, 111, 110, 118, 127, 135, 141, 144, 148, 149, 148, 157, 164, 166, 173, 179, 179, 183, 182, 180, 177, 177, 172, 172, 159, 152, 152, 132, 129, 122, 109, 100, 96, 96, 91, 86, 84, 82, 83, 86, 85, 82, 82, 84, 88, 91, 94, 91, 97, 105, 102, 106, 117, 119, 125, 134, 139, 153, 154, 155, 158, 161, 167, 173, 175, 178, 179, 176, 176, 174, 171, 167, 166, 164, 160, 153, 138, 134, 127, 119, 109, 98, 100, 97, 97, 88, 81, 88, 91, 95, 98, 94, 93, 97, 102, 103, 106, 103, 118, 111, 101, 107, 112, 118, 118, 127, 133, 141, 143, 142, 144, 151, 152, 157, 156, 157, 157, 153, 159, 155, 153, 154, 153, 161, 155, 144, 149, 159, 159, 155, 148, 128, 119, 116, 113, 103, 88, 85, 83, 85, 87, 89, 95, 91, 85, 89, 91, 90, 91, 92, 95, 101, 111, 123, 130, 137, 138, 152, 159, 146, 163, 171, 167, 171, 174, 174, 172, 170, 169, 171, 180, 185, 186, 166, 147, 152, 137, 128, 122, 112, 107, 101, 96, 99, 90, 87, 78, 81, 96, 87, 83, 88, 85, 81, 84, 87, 99, 95, 98, 90, 91, 110, 112, 121, 129, 148, 154, 148, 149, 147, 156, 160, 168, 189, 195, 201, 203, 203, 201, 180, 171, 162, 154, 145, 130, 129, 122, 117, 116, 95, 91, 99, 92, 88, 89, 96, 86, 86, 93, 96, 91, 89, 95, 95, 98, 90, 97, 97, 98, 107, 113, 118, 122, 136, 141, 148, 143, 142, 151, 157, 160, 162, 168, 168, 170, 170, 177, 168, 177, 184, 182, 189, 171, 161, 156, 138, 125, 118, 113, 107, 95, 88, 92, 93, 89, 92, 84, 86, 89, 89, 90, 88, 92, 93, 91, 95, 88, 86, 102, 105, 107, 114, 124, 137, 146, 148, 142, 143, 151, 163, 175, 180, 184, 183, 186, 186, 185, 180, 177, 173, 170, 168, 163, 151, 133, 129, 121, 108, 95, 87, 93, 90, 81, 82, 77, 84, 84, 87, 90, 87, 88, 86, 99, 102, 96, 95, 99, 101, 102, 113, 132, 135, 146, 156, 153, 160, 164, 169, 164, 169, 173, 168, 165, 170, 174, 172, 170, 164, 164, 160, 155, 149, 141, 130, 119, 118, 110, 103, 98, 96, 100, 94, 93, 88, 86, 93, 92, 95, 96, 95, 99, 100, 101, 98, 97, 102, 100, 107, 110, 112, 113, 117, 127, 135, 142, 143, 148, 156, 155, 155, 165, 161, 170, 183, 183, 187, 185, 187, 184, 182, 178, 176, 169, 151, 142, 137, 128, 118, 115, 98, 83, 92, 92, 86, 82, 84, 89, 82, 81, 75, 73, 83, 85, 93, 94, 95, 98, 101, 101, 106, 106, 108, 119, 124, 129, 137, 151, 157, 155, 162, 167, 167, 172, 167, 177, 191, 183, 176, 178, 177, 167, 173, 178, 168, 160, 160, 158, 141, 127, 108, 101, 101, 91, 90, 86, 84, 79, 83, 87, 82, 86, 81, 83, 89, 82, 86, 92, 87, 90, 98, 102, 108, 112, 116, 122, 132, 138, 143, 162, 167, 161, 167, 169, 174, 169, 168, 173, 173, 181, 178, 173, 169, 164, 168, 162, 153, 148, 143, 132, 125, 118, 112, 101, 96, 93, 89, 84, 85, 82, 83, 94, 79, 87, 80, 88, 90, 80, 86, 80, 90, 104, 113, 128, 138, 140, 147, 150, 155, 157, 165, 173, 181, 183, 183, 184, 184, 183, 181, 176, 170, 172, 175, 160, 144, 137, 128, 114, 103, 97, 93, 86, 87, 86, 86, 83, 87, 85, 88, 102, 81, 92, 85, 92, 96, 83, 87, 86, 106, 109, 118, 129, 135, 138, 144, 150, 145, 159, 154, 159, 181, 184, 187, 191, 190, 191, 189, 187, 182, 181, 167, 149, 146, 126, 118, 110, 107, 102, 89, 88, 84, 81, 92, 96, 88, 89, 95, 96, 88, 92, 94, 94, 101, 100, 95, 94, 87, 94, 102, 113, 119, 128, 148, 147, 153, 154, 167, 178, 170, 182, 182, 184, 184, 182, 180, 177, 173, 171, 167, 165, 164, 147, 136, 128, 118, 110, 106, 105, 105, 89, 82, 92, 94, 89, 86, 91, 95, 94, 90, 83, 96, 91, 88, 96, 104, 91, 89, 106, 83, 94, 106, 114, 127, 140, 152, 152, 153, 155, 165, 177, 184, 189, 192, 191, 191, 191, 191, 185, 182, 180, 170, 157, 153, 145, 126, 119, 120, 105, 104, 104, 96, 92, 83, 86, 89, 87, 85, 86, 91, 85, 84, 95, 87, 81, 92, 88, 86, 85, 87, 93, 105, 117, 116, 128, 141, 146, 155, 159, 164, 171, 181, 189, 191, 194, 193, 193, 191, 189, 186, 184, 178, 161, 148, 144, 141, 129, 114, 110, 106, 99, 96, 91, 89, 89, 86, 90, 87, 85, 91, 91, 91, 89, 86, 97, 94, 81, 98, 99, 92, 96, 97, 100, 114, 128, 134, 141, 143, 149, 156, 166, 162, 169, 185, 188, 188, 190, 192, 190, 188, 185, 180, 179, 169, 151, 147, 135, 121, 115, 107, 96, 94, 89, 91, 91, 89, 89, 85, 89, 94, 90, 82, 89, 88, 89, 98, 99, 102, 92, 85, 99, 98, 108, 111, 107, 118, 138, 147, 146, 151, 155, 161, 167, 188, 191, 197, 202, 202, 200, 198, 196, 192, 187, 169, 156, 144, 135, 124, 114, 109, 98, 87, 86, 82, 83, 78, 80, 82, 84, 84, 88, 91, 84, 87, 91, 93, 86, 86, 86, 98, 94, 100, 111, 107, 113, 127, 138, 147, 148, 148, 159, 164, 166, 176, 187, 188, 194, 197, 197, 196, 193, 190, 187, 184, 172, 151, 139, 128, 120, 116, 113, 106, 83, 86, 87, 77, 81, 84, 87, 86, 83, 79, 89, 92, 86, 90, 98, 94, 96, 94, 93, 99, 111, 129, 112, 122, 138, 139, 141, 137, 144, 146, 162, 177, 180, 185, 188, 189, 186, 187, 183, 179, 178, 176, 173, 165, 147, 144, 126, 120, 122, 107, 96, 84, 89, 89, 88, 83, 88, 84, 88, 85, 93, 92, 82, 92, 98, 94, 96, 103, 92, 101, 98, 106, 111, 112, 126, 135, 137, 145, 145, 145, 151, 165, 168, 159, 185, 192, 194, 196, 196, 195, 191, 193, 187, 184, 166, 149, 136, 119, 115, 106, 104, 103, 90, 81, 81, 81, 88, 90, 83, 87, 87, 86, 89, 91, 90, 79, 90, 97, 92, 90, 92, 99, 99, 109, 115, 116, 128, 147, 156, 153, 145, 164, 169, 168, 175, 175, 175, 172, 175, 178, 178, 176, 174, 175, 173, 176, 192, 172, 156, 148, 136, 125, 115, 109, 99, 93, 84, 75, 78, 81, 80, 77, 84, 86, 75, 80, 83, 80, 84, 90, 94, 88, 99, 108, 106, 113, 124, 129, 135, 139, 149, 146, 138, 146, 151, 170, 173, 175, 180, 183, 186, 186, 186, 190, 189, 182, 175, 170, 159, 146, 139, 127, 126, 116, 109, 99, 92, 96, 96, 82, 84, 86, 85, 86, 80, 84, 88, 86, 87, 85, 78, 86, 81, 83, 92, 96, 101, 114, 122, 131, 145, 148, 150, 145, 164, 173, 167, 169, 179, 188, 189, 193, 190, 187, 186, 185, 181, 177, 161, 153, 141, 122, 116, 111, 109, 107, 93, 88, 93, 93, 86, 82, 93, 87, 88, 90, 88, 87, 92, 86, 91, 89, 89, 97, 99, 99, 117, 134, 119, 127, 136, 143, 145, 149, 163, 161, 167, 177, 179, 174, 190, 213, 213, 201, 180, 175, 161, 150, 143, 138, 124, 113, 113, 103, 99, 105, 93, 84, 89, 89, 90, 88, 88, 94, 96, 91, 92, 84, 89, 93, 86, 91, 96, 104, 109, 114, 129, 136, 140, 143, 147, 154, 157, 159, 166, 170, 180, 200, 200, 209, 199, 176, 168, 162, 155, 147, 142, 142, 130, 123, 116, 115, 113, 102, 101, 100, 93, 89, 90, 86, 89, 88, 93, 94, 86, 86, 93, 92, 94, 95, 92, 89, 94, 103, 112, 122, 132, 136, 137, 143, 149, 154, 153, 168, 175, 162, 166, 172, 173, 183, 186, 188, 189, 186, 175, 166, 153, 144, 136, 124, 126, 121, 110, 104, 104, 93, 90, 91, 90, 91, 87, 92, 89, 86, 89, 94, 91, 82, 96, 100, 95, 95, 99, 104, 105, 115, 121, 125, 135, 151, 155, 153, 155, 167, 175, 178, 183, 183, 185, 185, 184, 180, 176, 176, 164, 158, 147, 139, 140, 122, 117, 117, 110, 102, 99, 89, 83, 90, 87, 84, 83, 89, 93, 90, 92, 100, 88, 77, 96, 96, 92, 97, 105, 116, 122, 130, 135, 139, 140, 146, 143, 150, 157, 161, 167, 175, 182, 183, 185, 183, 182, 180, 176, 168, 170, 157, 144, 141, 127, 125, 116, 110, 111, 108, 101, 100, 97, 82, 86, 90, 85, 86, 90, 94, 89, 87, 95, 94, 92, 94, 96, 98, 101, 108, 110, 115, 122, 132, 139, 143, 148, 148, 154, 157, 162, 168, 176, 181, 183, 183, 183, 183, 181, 179, 176, 170, 155, 148, 145, 130, 123, 124, 118, 108, 101, 107, 102, 94, 90, 86, 87, 87, 88, 89, 89, 89, 93, 95, 94, 91, 93, 92, 101, 107, 107, 108, 112, 116, 129, 140, 144, 144, 140, 155, 155, 157, 172, 182, 183, 186, 188, 189, 186, 185, 181, 178, 168, 151, 143, 136, 128, 123, 115, 109, 104, 95, 101, 97, 96, 98, 102, 94, 83, 87, 85, 89, 90, 87, 97, 88, 90, 94, 92, 99, 102, 107, 109, 114, 119, 132, 140, 144, 146, 154, 156, 160, 170, 174, 172, 198, 197, 184, 188, 183, 182, 172, 172, 161, 147, 138, 133, 127, 120, 119, 108, 99, 101, 97, 97, 90, 82, 86, 90, 89, 96, 92, 86, 89, 89, 89, 93, 101, 91, 96, 102, 103, 111, 120, 134, 150, 139, 131, 140, 150, 148, 152, 157, 154, 192, 195, 189, 194, 189, 192, 185, 183, 176, 163, 152, 141, 128, 123, 116, 113, 105, 105, 107, 99, 100, 96, 87, 85, 92, 91, 89, 88, 93, 93, 93, 96, 101, 98, 98, 105, 94, 94, 100, 114, 116, 116, 127, 136, 138, 145, 149, 142, 140, 150, 156, 162, 162, 171, 180, 180, 186, 189, 189, 187, 185, 180, 173, 152, 142, 144, 135, 126, 119, 113, 107, 99, 95, 98, 95, 89, 87, 86, 86, 87, 86, 86, 84, 87, 89, 91, 92, 92, 94, 93, 97, 116, 140, 130, 116, 116, 128, 130, 138, 146, 142, 153, 157, 167, 179, 195, 184, 185, 188, 181, 182, 176, 175, 169, 158, 143, 141, 139, 124, 121, 119, 106, 102, 101, 93, 92, 83, 83, 87, 91, 93, 90, 93, 93, 88, 86, 94, 91, 97, 90, 97, 98, 106, 120, 122, 128, 136, 143, 152, 154, 156, 161, 167, 182, 173, 177, 180, 187, 186, 185, 179, 181, 182, 166, 160, 150, 140, 134, 127, 124, 115, 111, 104, 108, 106, 83, 86, 88, 82, 77, 75, 76, 76, 75, 80, 81, 85, 87, 90, 88, 104, 112, 115, 127, 139, 141, 142, 147, 141, 147, 151, 160, 162, 169, 171, 180, 181, 183, 186, 181, 192, 181, 171, 170, 157, 149, 140, 130, 122, 119, 111, 105, 103, 101, 99, 99, 91, 91, 90, 89, 90, 90, 90, 91, 90, 79, 88, 96, 83, 81, 95, 94, 105, 111, 119, 122, 144, 156, 146, 152, 153, 159, 152, 174, 183, 159, 169, 188, 189, 190, 191, 182, 161, 158, 151, 146, 136, 135, 135, 123, 119, 114, 110, 106, 102, 97, 100, 90, 93, 87, 85, 93, 94, 96, 90, 89, 94, 84, 91, 98, 92, 102, 105, 120, 128, 134, 138, 131, 141, 145, 165, 158, 146, 164, 164, 171, 172, 170, 180, 190, 193, 192, 179, 169, 158, 151, 142, 138, 131, 116, 116, 111, 106, 101, 103, 102, 96, 101, 99, 88, 87, 96, 88, 84, 88, 86, 84, 90, 87, 74, 95, 92, 92, 108, 113, 110, 133, 147, 149, 148, 146, 163, 163, 164, 175, 185, 186, 188, 191, 191, 187, 184, 179, 165, 153, 155, 143, 129, 126, 123, 113, 108, 108, 102, 104, 104, 99, 94, 101, 97, 90, 89, 89, 93, 89, 87, 89, 88, 89, 91, 85, 86, 98, 107, 119, 127, 131, 136, 139, 142, 145, 148, 152, 167, 169, 166, 164, 183, 197, 191, 187, 183, 192, 173, 162, 161, 142, 142, 140, 129, 121, 115, 108, 106, 103, 102, 99, 100, 103, 92, 92, 94, 95, 93, 96, 91, 94, 91, 87, 84, 78, 76, 86, 99, 102, 121, 130, 138, 140, 147, 148, 152, 155, 155, 158, 179, 188, 185, 189, 189, 190, 185, 173, 159, 167, 149, 139, 132, 129, 128, 120, 114, 112, 109, 104, 100, 95, 101, 101, 101, 94, 99, 99, 101, 96, 97, 90, 81, 81, 85, 77, 79, 93, 97, 112, 124, 128, 130, 146, 150, 150, 157, 163, 169, 186, 174, 187, 199, 192, 195, 189, 178, 158, 159, 153, 140, 133, 126, 120, 113, 113, 116, 105, 103, 107, 104, 96, 109, 101, 95, 105, 103, 109, 100, 98, 100, 92, 75, 87, 83, 68, 81, 84, 98, 116, 123, 130, 136, 147, 148, 150, 157, 160, 158, 180, 183, 176, 191, 189, 190, 188, 185, 176, 169, 158, 146, 135, 134, 127, 119, 114, 111, 107, 108, 111, 99, 103, 112, 108, 102, 103, 95, 100, 101, 92, 88, 86, 77, 66, 82, 83, 73, 90, 97, 110, 120, 125, 135, 137, 146, 150, 152, 158, 164, 170, 187, 192, 186, 189, 193, 187, 181, 172, 163, 155, 146, 142, 130, 126, 121, 123, 116, 111, 110, 115, 116, 109, 113, 109, 106, 101, 108, 100, 92, 82, 72, 71, 65, 54, 61, 86, 90, 111, 123, 133, 141, 144, 147, 152, 155, 157, 162, 170, 184, 192, 193, 192, 180, 175, 179, 162, 152, 143, 141, 132, 134, 124, 120, 121, 118, 117, 111, 109, 107, 116, 107, 106, 108, 105, 100, 98, 96, 91, 76, 51, 63, 66, 67, 84, 92, 101, 114, 121, 130, 141, 140, 146, 152, 150, 148, 155, 163, 172, 191, 197, 181, 181, 181, 176, 158, 156, 150, 136, 137, 133, 129, 128, 130, 129, 128, 116, 121, 125, 120, 117, 114, 112, 117, 108, 104, 103, 95, 78, 69, 70, 38, 48, 44, 60, 96, 96, 116, 123, 131, 143, 155, 149, 151, 155, 150, 151, 151, 161, 160, 178, 201, 201, 196, 177, 168, 166, 164, 154, 138, 139, 138, 140, 135, 135, 136, 127, 129, 132, 128, 121, 118, 118, 114, 113, 107, 97, 85, 73, 52, 41, 45, 36, 65, 79, 61, 80, 103, 111, 135, 141, 143, 145, 146, 145, 141, 142, 140, 150, 161, 178, 178, 184, 190, 192, 184, 175, 174, 155, 140, 139, 143, 137, 141, 139, 129, 127, 126, 132, 129, 126, 124, 124, 117, 110, 104, 95, 91, 87, 70, 67, 67, 67, 86, 105, 95, 99, 115, 114, 119, 110, 113, 100, 92, 96, 107, 108, 117, 134, 142, 166, 179, 199, 216, 204, 193, 190, 174, 171, 151, 150, 145, 136, 140, 141, 149, 146, 147, 150, 145, 136, 130, 124, 122, 114, 103, 84, 80, 45, 34, 60, 46, 50, 59, 66, 78, 78, 103, 126, 128, 145, 143, 145, 133, 125, 124, 124, 122, 128, 139, 146, 177, 184, 203, 181, 175, 216, 182, 171, 159, 139, 147, 146, 139, 146, 151, 145, 151, 149, 151, 151, 137, 150, 139, 126, 126, 107, 86, 56, 45, 23, 42, 52, 53, 63, 69, 72, 98, 128, 125, 139, 139, 138, 131, 121, 125, 110, 94, 117, 113, 118, 158, 161, 182, 193, 204, 204, 184, 188, 170, 157, 142, 144, 134, 135, 152, 157, 157, 172, 167, 153, 151, 155, 147, 135, 127, 111, 93, 72, 60, 43, 76, 64, 43, 47, 55, 54, 79, 109, 112, 125, 123, 123, 118, 112, 108, 112, 97, 117, 131, 144, 176, 182, 214, 203, 183, 192, 176, 160, 147, 133, 130, 136, 149, 157, 154, 171, 180, 169, 162, 174, 159, 146, 133, 122, 97, 86, 74, 17, 22, 48, 61, 71, 77, 87, 89, 100, 119, 135, 134, 132, 134, 113, 104, 107, 106, 109, 114, 118, 142, 168, 203, 213, 186, 190, 189, 167, 165, 132, 120, 126, 127, 133, 129, 148, 141, 158, 164, 172, 171, 164, 155, 150, 140, 118, 104, 82, 70, 45, 29, 40, 87, 86, 74, 87, 92, 116, 126, 133, 135, 130, 128, 117, 118, 112, 107, 107, 111, 124, 132, 152, 170, 187, 186, 170, 191, 177, 161, 146, 131, 128, 128, 130, 135, 150, 146, 164, 157, 160, 158, 147, 149, 143, 140, 126, 107, 80, 53, 71, 70, 21, 38, 51, 76, 113, 128, 131, 138, 146, 143, 138, 125, 115, 118, 115, 111, 116, 121, 137, 140, 160, 173, 171, 147, 171, 201, 185, 185, 182, 145, 134, 132, 120, 125, 127, 128, 135, 143, 134, 139, 127, 123, 111, 96, 87, 78, 79, 77, 81, 86, 91, 93, 112, 123, 128, 130, 130, 132, 133, 129, 119, 121, 121, 121, 117, 112, 116, 137, 147, 144, 159, 171, 172, 173, 173, 160, 150, 138, 127, 124, 130, 131, 138, 143, 143, 146, 147, 154, 152, 158, 146, 139, 136, 125, 104, 91, 79, 60, 65, 62, 68, 65, 80, 108, 124, 132, 136, 141, 140, 137, 120, 116, 116, 107, 109, 115, 121, 134, 141, 156, 163, 163, 165, 164, 166, 162, 146, 137, 133, 128, 128, 129, 133, 138, 142, 144, 149, 150, 153, 157, 160, 152, 142, 136, 126, 104, 87, 73, 70, 73, 64, 62, 70, 92, 115, 126, 129, 137, 141, 139, 130, 114, 109, 110, 110, 112, 120, 131, 132, 160, 169, 165, 176, 166, 162, 155, 144, 134, 127, 123, 127, 129, 137, 143, 140, 153, 147, 151, 154, 144, 144, 138, 132, 119, 103, 96, 83, 62, 62, 71, 78, 95, 112, 127, 138, 137, 141, 143, 138, 135, 130, 110, 115, 110, 105, 113, 114, 129, 141, 145, 154, 163, 163, 162, 162, 155, 142, 132, 128, 126, 127, 129, 138, 151, 140, 143, 147, 148, 146, 143, 152, 135, 126, 117, 100, 87, 78, 94, 91, 79, 71, 83, 108, 120, 131, 129, 134, 137, 138, 128, 115, 113, 115, 116, 116, 119, 131, 130, 151, 161, 158, 164, 162, 162, 151, 136, 131, 125, 120, 132, 130, 135, 140, 146, 145, 149, 145, 148, 145, 139, 136, 126, 113, 100, 98, 87, 83, 75, 81, 88, 100, 118, 129, 135, 139, 139, 140, 134, 121, 120, 116, 120, 113, 108, 118, 119, 131, 145, 156, 163, 165, 160, 154, 151, 143, 132, 126, 123, 125, 124, 131, 137, 136, 151, 156, 149, 145, 145, 141, 142, 133, 127, 118, 105, 96, 85, 75, 77, 84, 86, 92, 105, 128, 135, 134, 129, 137, 134, 124, 124, 121, 121, 115, 116, 119, 123, 128, 142, 153, 155, 157, 163, 166, 154, 149, 135, 126, 122, 127, 130, 138, 140, 137, 144, 154, 157, 144, 145, 143, 140, 129, 122, 114, 101, 98, 94, 91, 91, 93, 86, 81, 104, 117, 122, 126, 132, 132, 125, 122, 121, 113, 109, 104, 101, 103, 117, 142, 148, 157, 165, 167, 168, 169, 168, 154, 139, 132, 128, 132, 122, 137, 146, 148, 153, 145, 148, 152, 148, 142, 147, 134, 126, 109, 100, 97, 81, 95, 100, 87, 83, 82, 97, 118, 128, 130, 130, 130, 128, 123, 111, 102, 104, 106, 109, 108, 115, 135, 154, 157, 172 }; static const char nie_wavetable[] PROGMEM = { 124, 115, 120, 130, 130, 128, 128, 133, 142, 146, 149, 150, 142, 139, 139, 134, 131, 127, 120, 118, 114, 108, 112, 108, 107, 118, 117, 118, 123, 118, 126, 133, 133, 142, 146, 145, 141, 139, 137, 129, 126, 126, 118, 110, 107, 96, 89, 97, 98, 102, 112, 114, 123, 132, 138, 153, 156, 159, 168, 167, 164, 164, 157, 146, 142, 134, 124, 120, 111, 106, 104, 102, 104, 103, 108, 114, 120, 133, 140, 153, 159, 152, 157, 152, 145, 148, 142, 129, 115, 104, 89, 80, 86, 84, 91, 107, 103, 105, 111, 110, 121, 133, 139, 141, 138, 137, 134, 133, 137, 130, 124, 129, 127, 130, 140, 142, 145, 147, 141, 146, 150, 146, 156, 153, 140, 148, 144, 138, 148, 137, 129, 130, 110, 104, 107, 96, 105, 121, 119, 117, 120, 117, 116, 136, 157, 153, 156, 156, 135, 131, 142, 134, 127, 124, 101, 68, 47, 48, 53, 58, 85, 102, 97, 113, 131, 140, 160, 173, 185, 193, 190, 199, 194, 182, 180, 162, 137, 113, 85, 69, 49, 49, 74, 80, 93, 113, 110, 118, 126, 135, 159, 166, 170, 182, 165, 145, 150, 148, 134, 127, 106, 72, 53, 50, 54, 72, 99, 110, 114, 131, 126, 129, 159, 166, 184, 207, 200, 196, 193, 193, 191, 176, 167, 141, 114, 109, 94, 96, 120, 127, 131, 142, 135, 105, 102, 124, 126, 137, 158, 139, 116, 111, 97, 92, 84, 73, 73, 56, 43, 56, 69, 93, 124, 143, 159, 151, 127, 130, 145, 146, 158, 180, 165, 135, 136, 125, 104, 116, 129, 115, 98, 99, 105, 118, 156, 179, 190, 196, 177, 169, 174, 177, 176, 182, 189, 161, 138, 123, 81, 59, 42, 31, 41, 24, 31, 67, 84, 113, 150, 168, 157, 147, 156, 149, 148, 161, 159, 153, 145, 133, 118, 92, 68, 70, 78, 71, 80, 98, 108, 130, 158, 181, 177, 167, 173, 170, 182, 206, 208, 214, 215, 185, 150, 128, 90, 43, 43, 50, 40, 56, 74, 87, 100, 116, 144, 147, 146, 154, 152, 169, 179, 171, 187, 172, 131, 122, 100, 52, 27, 39, 50, 52, 88, 121, 126, 142, 151, 156, 154, 138, 145, 144, 152, 187, 188, 199, 207, 153, 108, 108, 76, 22, 56, 109, 89, 118, 177, 168, 159, 165, 157, 135, 112, 127, 130, 139, 192, 195, 173, 187, 136, 34, 39, 50, 0, 17, 105, 117, 105, 161, 185, 135, 138, 175, 149, 142, 163, 163, 159, 180, 199, 165, 143, 135, 52, 11, 57, 33, 0, 73, 147, 116, 146, 212, 173, 131, 149, 159, 144, 142, 177, 193, 193, 234, 220, 157, 136, 71, 0, 21, 40, 10, 51, 131, 132, 107, 136, 154, 107, 89, 151, 173, 145, 183, 232, 224, 232, 250, 207, 127, 85, 62, 30, 26, 33, 57, 100, 110, 108, 104, 100, 81, 56, 105, 147, 130, 161, 203, 213, 219, 213, 209, 154, 81, 86, 91, 62, 78, 129, 159, 152, 141, 134, 113, 84, 77, 113, 126, 117, 143, 171, 206, 226, 195, 181, 151, 61, 43, 101, 94, 72, 136, 176, 133, 108, 103, 79, 61, 66, 101, 126, 113, 110, 128, 150, 163, 156, 151, 151, 103, 34, 77, 136, 87, 121, 227, 207, 150, 158, 155, 116, 98, 124, 151, 145, 140, 159, 166, 163, 156, 133, 136, 124, 63, 62, 117, 106, 84, 168, 212, 128, 101, 126, 103, 89, 114, 163, 149, 94, 120, 127, 117, 163, 147, 119, 124, 65, 31, 87, 108, 84, 133, 205, 162, 91, 116, 127, 82, 107, 178, 182, 137, 141, 165, 149, 180, 209, 162, 160, 134, 45, 68, 127, 95, 98, 190, 193, 104, 105, 138, 100, 92, 146, 175, 138, 122, 147, 129, 134, 173, 138, 120, 145, 82, 35, 92, 79, 17, 82, 159, 106, 69, 117, 114, 73, 107, 159, 147, 114, 143, 171, 155, 204, 235, 169, 170, 173, 64, 58, 140, 90, 81, 196, 182, 94, 103, 111, 75, 73, 116, 137, 106, 106, 145, 148, 178, 239, 207, 170, 207, 150, 62, 124, 145, 75, 137, 208, 132, 80, 92, 56, 37, 78, 102, 109, 106, 108, 125, 134, 180, 200, 142, 159, 173, 77, 82, 160, 116, 100, 192, 193, 105, 92, 87, 40, 58, 85, 89, 113, 103, 109, 134, 149, 198, 173, 146, 208, 149, 73, 156, 172, 109, 163, 223, 163, 106, 111, 97, 76, 91, 103, 105, 90, 86, 108, 121, 172, 206, 150, 159, 188, 93, 70, 161, 147, 105, 169, 194, 109, 66, 90, 77, 74, 105, 117, 114, 83, 93, 126, 123, 184, 207, 136, 170, 179, 63, 73, 153, 110, 98, 190, 190, 110, 101, 108, 88, 91, 111, 138, 119, 96, 137, 154, 161, 214, 201, 138, 169, 163, 57, 94, 169, 95, 94, 169, 130, 75, 96, 114, 94, 84, 98, 95, 73, 91, 149, 173, 182, 228, 200, 134, 177, 161, 57, 103, 167, 99, 108, 179, 125, 61, 94, 104, 76, 96, 118, 91, 79, 112, 154, 179, 211, 241, 192, 135, 162, 127, 49, 102, 145, 85, 102, 145, 97, 81, 106, 102, 98, 104, 107, 99, 102, 135, 171, 191, 202, 208, 170, 130, 151, 128, 75, 115, 142, 100, 104, 129, 109, 92, 110, 117, 100, 97, 96, 94, 104, 125, 166, 182, 177, 191, 165, 130, 156, 138, 93, 129, 148, 107, 109, 131, 116, 98, 111, 116, 90, 87, 93, 81, 91, 114, 143, 164, 164, 174, 155, 119, 135, 137, 109, 138, 171, 141, 122, 144, 134, 111, 130, 140, 119, 109, 108, 102, 102, 132 }; static const char mo_wavetable[] PROGMEM = { 116, 109, 108, 108, 112, 117, 123, 128, 133, 136, 138, 139, 141, 143, 146, 149, 152, 154, 155, 156, 156, 155, 154, 153, 152, 151, 149, 147, 143, 140, 136, 132, 128, 124, 120, 116, 112, 109, 104, 100, 96, 93, 90, 88, 86, 85, 85, 85, 85, 86, 86, 87, 89, 92, 95, 100, 106, 112, 118, 122, 127, 130, 133, 136, 139, 142, 145, 148, 150, 152, 153, 153, 152, 151, 149, 147, 144, 140, 137, 133, 129, 125, 120, 115, 111, 105, 100, 94, 88, 83, 77, 71, 67, 63, 60, 57, 56, 55, 56, 56, 58, 60, 62, 65, 69, 74, 79, 85, 92, 98, 106, 113, 121, 128, 135, 142, 148, 152, 157, 159, 161, 163, 163, 164, 165, 165, 165, 165, 164, 163, 160, 156, 152, 146, 141, 135, 128, 123, 117, 112, 107, 104, 100, 96, 92, 88, 84, 82, 80, 80, 83, 86, 92, 98, 105, 112, 119, 126, 133, 140, 148, 156, 164, 171, 178, 184, 190, 196, 200, 205, 207, 210, 211, 211, 210, 208, 206, 203, 199, 196, 192, 188, 183, 178, 172, 166, 158, 150, 141, 132, 123, 115, 108, 102, 97, 93, 89, 87, 84, 83, 84, 85, 87, 92, 96, 102, 109, 116, 124, 133, 143, 153, 162, 172, 180, 188, 194, 200, 205, 210, 214, 217, 218, 219, 219, 218, 216, 213, 208, 204, 198, 191, 183, 175, 165, 156, 146, 136, 127, 117, 109, 101, 94, 87, 80, 74, 68, 63, 59, 57, 57, 59, 62, 66, 72, 79, 86, 94, 101, 108, 115, 123, 130, 140, 149, 159, 169, 179, 186, 192, 196, 198, 199, 198, 197, 196, 195, 194, 193, 191, 188, 183, 178, 170, 163, 155, 146, 137, 128, 118, 108, 99, 89, 82, 76, 70, 66, 63, 59, 55, 53, 53, 55, 61, 68, 77, 87, 97, 107, 117, 126, 135, 145, 154, 164, 173, 181, 189, 195, 200, 204, 205, 205, 203, 199, 194, 189, 185, 180, 175, 168, 162, 152, 142, 130, 118, 106, 95, 84, 74, 66, 58, 52, 46, 41, 36, 31, 26, 22, 20, 20, 22, 28, 36, 44, 54, 63, 71, 78, 86, 94, 103, 113, 124, 135, 146, 155, 164, 170, 176, 179, 181, 181, 179, 177, 173, 170, 166, 163, 161, 158, 154, 148, 139, 127, 115, 101, 88, 76, 65, 55, 46, 39, 32, 26, 20, 14, 9, 6, 2, 1, 1, 5, 10, 18, 28, 39, 52, 65, 78, 91, 103, 115, 127, 137, 148, 157, 166, 175, 185, 194, 200, 202, 203, 200, 196, 192, 187, 183, 179, 176, 170, 164, 155, 146, 136, 126, 117, 107, 99, 91, 84, 77, 70, 65, 58, 52, 46, 41, 38, 37, 39, 43, 51, 59, 67, 75, 83, 91, 98, 107, 117, 127, 139, 151, 162, 172, 182, 190, 197, 202, 205, 206, 205, 204, 201, 199, 198, 196, 195, 192, 187, 180, 171, 161, 151, 140, 130, 121, 111, 101, 92, 82, 74, 66, 60, 55, 51, 48, 46, 46, 48, 52, 59, 69, 81, 92, 104, 115, 127, 138, 150, 163, 176, 190, 203, 215, 225, 234, 241, 247, 250, 252, 250, 246, 241, 235, 228, 222, 215, 208, 200, 191, 179, 167, 155, 142, 130, 119, 108, 97, 87, 76, 66, 58, 51, 45, 40, 38, 36, 36, 38, 42, 47, 54, 63, 72, 82, 93, 103, 115, 128, 141, 155, 168, 179, 190, 200, 208, 216, 221, 226, 229, 230, 228, 226, 221, 217, 213, 208, 202, 195, 185, 174, 160, 147, 134, 121, 110, 99, 88, 76, 64, 51, 39, 28, 20, 13, 7, 4, 2, 3, 5, 10, 18, 27, 37, 47, 56, 66, 79, 94, 110, 128, 146, 162, 176, 188, 197, 206, 213, 219, 223, 225, 225, 222, 218, 214, 208, 203, 197, 190, 181, 170, 159, 146, 134, 123, 112, 101, 91, 80, 70, 61, 53, 47, 41, 38, 35, 34, 33, 35, 39, 45, 53, 62, 73, 84, 97, 110, 125, 142, 158, 174, 191, 207, 220, 231, 240, 245, 249, 251, 252, 253, 255, 255, 255, 253, 250, 244, 236, 226, 215, 203, 190, 176, 162, 148, 136, 126, 115, 105, 92, 77, 60, 42, 24, 10, 0, 0, 0, 0, 0, 5, 10, 16, 23, 32, 44, 56, 71, 89, 106, 127, 148, 168, 188, 205, 219, 230, 239, 244, 248, 249, 250, 248, 244, 239, 233, 226, 219, 211, 201, 189, 175, 159, 143, 126, 110, 95, 80, 66, 53, 41, 31, 21, 14, 8, 5, 1, 0, 0, 0, 0, 0, 5, 12, 22, 35, 50, 67, 84, 101, 119, 136, 153, 168, 184, 197, 208, 218, 225, 231, 235, 237, 237, 238, 236, 231, 226, 218, 210, 202, 193, 185, 176, 166, 154, 141, 128, 114, 98, 82, 65, 48, 32, 18, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 24, 43, 65, 88, 110, 132, 154, 177, 199, 219, 236, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 241, 230, 216, 202, 187, 173, 159, 145, 130, 116, 101, 87, 74, 62, 51, 41, 32, 23, 15, 8, 2, 0, 0, 0, 3, 10, 19, 29, 40, 53, 68, 84, 102, 120, 138, 157, 175, 191, 207, 221, 233, 243, 250, 254, 255, 255, 255, 253, 250, 244, 237, 229, 220, 210, 201, 191, 181, 170, 157, 142, 127, 111, 96, 81, 67, 53, 38, 24, 12, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 28, 48, 70, 91, 112, 132, 154, 176, 198, 220, 237, 250, 255, 255, 255, 255, 255, 255, 255, 251, 244, 234, 222, 209, 196, 184, 172, 160, 147, 135, 121, 109, 98, 88, 78, 67, 56, 44, 32, 21, 13, 6, 1, 0, 0, 0, 4, 10, 18, 29, 42, 56, 73, 89, 106, 125, 144, 164, 184, 203, 219, 234, 244, 252, 255, 255, 255, 255, 255, 254, 249, 242, 233, 222, 211, 198, 186, 175, 164, 154, 143, 132, 120, 109, 95, 82, 68, 53, 40, 26, 14, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 25, 43, 65, 87, 110, 132, 154, 177, 198, 217, 233, 246, 254, 255, 255, 255, 255, 254, 247, 237, 225, 210, 195, 181, 168, 157, 147, 137, 125, 113, 101, 90, 80, 72, 64, 55, 47, 38, 30, 25, 20, 19, 18, 17, 18, 19, 21, 26, 34, 45, 59, 74, 92, 110, 127, 145, 163, 180, 196, 211, 224, 235, 244, 250, 255, 255, 255, 255, 255, 253, 247, 241, 232, 222, 211, 199, 188, 178, 170, 162, 156, 148, 139, 128, 115, 102, 90, 77, 65, 52, 39, 27, 15, 7, 0, 0, 0, 0, 1, 7, 15, 26, 42, 59, 79, 102, 124, 147, 169, 191, 212, 230, 244, 254, 255, 255, 255, 255, 255, 255, 255, 253, 245, 232, 216, 199, 183, 170, 159, 150, 140, 131, 120, 109, 100, 92, 86, 81, 75, 69, 63, 56, 50, 45, 40, 38, 36, 35, 34, 34, 37, 44, 54, 66, 82, 98, 116, 134, 152, 170, 188, 204, 217, 229, 238, 245, 251, 255, 255, 255, 254, 249, 242, 233, 223, 213, 203, 193, 184, 175, 168, 162, 157, 154, 148, 141, 131, 119, 107, 93, 80, 68, 56, 44, 31, 20, 10, 2, 0, 0, 0, 0, 0, 2, 9, 20, 36, 56, 79, 102, 123, 143, 160, 176, 192, 206, 220, 231, 237, 238, 235, 231, 224, 216, 209, 199, 188, 175, 160, 146, 133, 124, 117, 111, 106, 100, 93, 86, 78, 72, 68, 63, 58, 52, 44, 36, 28, 22, 19, 17, 16, 17, 17, 19, 23, 30, 41, 53, 68, 85, 102, 120, 138, 157, 175, 192, 207, 220, 228, 232, 233, 232, 230, 226, 221, 215, 208, 200, 192, 185, 177, 171, 164, 158, 151, 146, 140, 136, 132, 129, 125, 120, 113, 104, 94, 82, 69, 54, 39, 26, 13, 3, 0, 0, 0, 0, 2, 8, 17, 30, 46, 65, 88, 113, 138, 161, 181, 199, 215, 229, 242, 251, 255, 255, 251, 242, 232, 221, 212, 203, 195, 186, 175, 164, 153, 143, 135, 130, 127, 125, 122, 118, 115, 110, 105, 101, 95, 88, 80, 71, 62, 52, 44, 40, 36, 35, 35, 36, 39, 45, 54, 66, 82, 99, 118, 137, 155, 172, 188, 201, 212, 221, 226, 228, 227, 224, 220, 216, 212, 207, 200, 192, 184, 174, 164, 157, 150, 146, 143, 141, 139, 138, 137, 135, 133, 129, 123, 113, 100, 84, 67, 49, 32, 18, 8, 1, 0, 0, 0, 0, 0, 0, 3, 12, 26, 47, 71, 99, 126, 151, 172, 189, 202, 214, 223, 231, 237, 240, 239, 234, 224, 213, 201, 189, 179, 168, 158, 148, 140, 133, 129, 128, 128, 129, 130, 128, 124, 120, 115, 108, 103, 96, 88, 78, 67, 57, 47, 39, 35, 33, 33, 37, 42, 48, 58, 71, 87, 106, 126, 147, 168, 187, 205, 221, 234, 245, 251, 254, 254, 251, 245, 238, 230, 223, 215, 208, 201, 194, 188, 184, 180, 179, 178, 177, 176, 173, 169, 164, 160, 155, 149, 140, 130, 116, 99, 81, 62, 44, 29, 17, 7, 1, 0, 0, 0, 0, 8, 20, 35, 55, 77, 100, 124, 147, 166, 183, 197, 208, 217, 224, 230, 233, 233, 229, 220, 210, 197, 184, 173, 165, 159, 155, 152, 148, 145, 143, 141, 141, 141, 140, 137, 131, 123, 113, 102, 91, 80, 70, 59, 47, 36, 26, 18, 13, 11, 13, 18, 27, 37, 50, 66, 84, 104, 126, 147, 167, 183, 197, 208, 216, 220, 223, 222, 219, 214, 207, 200, 192, 187, 182, 179, 177, 173, 170, 168, 166, 167, 167, 169, 168, 166, 163, 157, 151, 144, 137, 128, 117, 102, 84, 64, 45, 27, 12, 3, 0, 0, 0, 0, 0, 2, 10, 22, 38, 56, 76, 98, 118, 139, 158, 173, 186, 194, 200, 202, 202, 201, 199, 194, 190, 184, 177, 171, 165, 162, 160, 159, 159, 159, 157, 154, 152, 149, 146, 143, 138, 131, 122, 110, 97, 85, 71, 58, 45, 32, 20, 10, 2, 0, 2, 9, 19, 30, 44, 59, 74, 92, 110, 130, 147, 163, 176, 185, 193, 198, 201, 204, 206, 205, 203, 199, 194, 190, 187, 186, 186, 188, 189, 189, 189, 189, 189, 190, 190, 191, 190, 186, 180, 173, 163, 154, 143, 131, 117, 100, 82, 64, 46, 32, 20, 13, 7, 3, 2, 3, 9, 18, 32, 50, 68, 87, 104, 120, 134, 148, 161, 173, 182, 189, 192, 191, 190, 189, 188, 189, 190, 190, 187, 182, 177, 173, 170, 169, 170, 170, 169, 166, 161, 156, 151, 144, 136, 126, 113, 98, 81, 66, 54, 43, 36, 31, 27, 26, 24, 24, 28, 33, 43, 55, 68, 81, 95, 108, 122, 136, 150, 163, 174, 181, 187, 191, 192, 193, 193, 193, 193, 193, 192, 190, 189, 189, 192, 194, 195, 197, 195, 193, 190, 187, 184, 182, 179, 173, 166, 156, 144, 133, 121, 110, 101, 89, 78, 65, 53, 43, 34, 29, 24, 23, 21, 20, 20, 24, 32, 42, 56, 69, 82, 93, 103, 114, 125, 137, 151, 162, 171, 176, 178, 177, 177, 177, 179, 181, 182, 183, 181, 180, 179, 178, 178, 177, 174, 168, 159, 151, 140, 133, 126, 121, 115, 109, 100, 91, 80, 70, 62, 56, 51, 47, 45, 44, 46, 52, 60, 71, 84, 96, 106, 115, 123, 132, 143, 156, 168, 180, 190, 196, 200, 201, 202, 202, 203, 204, 203, 202, 200, 196, 193, 192, 191, 191, 191, 190, 187, 184, 180, 175, 170, 165, 159, 150, 139, 128, 118, 109, 102, 95, 88, 78, 66, 52, 39, 29, 21, 15, 12, 9, 7, 4, 3, 6, 13, 24, 37, 52, 66, 78, 89, 100, 111, 124, 137, 147, 157, 161, 164, 167, 168, 171, 173, 175, 175, 172, 168, 162, 157, 154, 152, 150, 148, 144, 139, 133, 126, 119, 114, 109, 102, 94, 85, 75, 66, 58, 53, 50, 48, 46, 45, 43, 43, 46, 52, 62, 74, 87, 100, 111, 120, 127, 135, 144, 153, 161, 169, 175, 179, 180, 181, 182, 185, 188, 190, 191, 191, 190, 189, 188, 188, 190, 192, 193, 192, 190, 187, 184, 180, 177, 173, 167, 159, 149, 139, 129, 122, 116, 111, 106, 99, 90, 80, 71, 63, 58, 54, 50, 47, 43, 39, 39, 43, 51, 63, 76, 90, 101, 112, 122, 133, 145, 157, 169, 179, 185, 189, 191, 192, 196, 200, 203, 205, 204, 199, 192, 186, 181, 178, 176, 176, 174, 172, 167, 162, 158, 154, 150, 144, 137, 127, 114, 102, 92, 84, 79, 76, 75, 74, 73, 72, 73, 76, 81, 88, 95, 103, 111, 119, 127, 136, 144, 154, 163, 169, 173, 176, 177, 177, 179, 182, 186, 191, 196, 200, 203, 205, 206, 207, 208, 209, 209, 207, 204, 200, 196, 192, 191, 190, 188, 184, 179, 171, 161, 153, 146, 141, 136, 132, 125, 117, 108, 99, 90, 84, 80, 76, 73, 68, 65, 63, 64, 69, 78, 89, 101, 111, 120, 128, 136, 144, 153, 161, 168, 173, 175, 175, 174, 173, 174, 175, 176, 175, 172, 168, 163, 159, 157, 155, 154, 152, 148, 142, 136, 131, 127, 124, 121, 118, 113, 105, 96, 87, 79, 73, 70, 68, 68, 68, 68, 68, 71, 74, 78, 84, 89, 93, 96, 99, 102, 105, 109, 114, 119, 124, 127, 129, 130, 132, 134, 136, 138, 140, 142, 142, 141, 141, 140, 141, 142, 144, 145, 145, 145, 143, 141, 139, 137, 136, 134, 133, 130, 127, 123, 121, 119, 118, 116, 115, 112, 108, 103, 98, 94, 90, 87, 84, 81, 78, 75, 73, 73, 75, 78, 84, 91, 98, 105, 112, 118, 124, 129, 134, 138, 141, 144, 145, 145, 143, 140, 136, 132 }; static const char siffl_wavetable[] PROGMEM = { 127, 127, 127, 127, 128, 128, 128, 128, 128, 128, 128, 128, 128, 127, 127, 127, 127, 127, 127, 127, 128, 128, 128, 128, 127, 127, 127, 127, 127, 127, 127, 127, 127, 128, 128, 128, 128, 127, 127, 127, 127, 127, 127, 127, 127, 127, 128, 128, 128, 128, 127, 127, 127, 127, 127, 127, 128, 127, 128, 128, 128, 128, 128, 128, 128, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 128, 128, 128, 128, 127, 127, 127, 127, 127, 127, 127, 127, 127, 128, 128, 128, 128, 128, 127, 127, 126, 126, 126, 126, 127, 127, 128, 128, 128, 128, 128, 127, 126, 126, 125, 125, 126, 126, 127, 128, 128, 128, 128, 128, 127, 126, 126, 125, 125, 126, 126, 127, 128, 129, 129, 129, 128, 127, 126, 125, 124, 124, 125, 125, 126, 128, 129, 129, 130, 129, 128, 126, 125, 124, 124, 124, 125, 126, 128, 129, 130, 130, 130, 128, 127, 125, 124, 123, 123, 123, 125, 127, 129, 130, 131, 130, 129, 127, 125, 123, 122, 121, 122, 124, 127, 129, 131, 132, 132, 131, 128, 125, 122, 120, 119, 120, 122, 126, 129, 132, 133, 133, 131, 128, 124, 121, 118, 117, 118, 121, 126, 130, 134, 136, 135, 133, 129, 124, 119, 115, 114, 115, 120, 125, 131, 136, 139, 139, 137, 132, 125, 119, 114, 113, 115, 120, 126, 133, 139, 142, 142, 138, 132, 124, 117, 112, 111, 113, 119, 126, 135, 141, 145, 145, 141, 134, 126, 119, 115, 114, 116, 122, 130, 138, 143, 145, 145, 140, 133, 125, 118, 114, 112, 114, 120, 127, 135, 141, 144, 144, 141, 134, 126, 118, 114, 111, 113, 119, 127, 135, 141, 146, 145, 141, 133, 124, 115, 108, 104, 106, 110, 117, 126, 133, 139, 141, 138, 132, 124, 116, 110, 106, 107, 111, 118, 126, 134, 140, 142, 140, 135, 127, 117, 110, 104, 104, 107, 114, 124, 133, 140, 144, 143, 137, 128, 119, 111, 105, 104, 108, 115, 124, 134, 141, 144, 143, 137, 130, 120, 111, 106, 104, 107, 114, 123, 131, 139, 143, 144, 140, 133, 124, 116, 110, 107, 109, 114, 122, 130, 138, 142, 142, 138, 132, 123, 115, 109, 106, 108, 113, 120, 129, 136, 141, 142, 138, 130, 121, 113, 107, 105, 108, 115, 123, 133, 141, 144, 143, 138, 131, 121, 114, 109, 107, 111, 117, 125, 133, 138, 140, 139, 134, 127, 119, 113, 109, 108, 111, 117, 125, 132, 137, 140, 138, 134, 127, 120, 113, 109, 108, 109, 114, 121, 128, 132, 135, 135, 131, 126, 120, 114, 111, 110, 112, 116, 122, 128, 132, 135, 135, 133, 129, 125, 121, 117, 117, 118, 122, 126, 130, 134, 135, 134, 132, 128, 123, 118, 115, 113, 114, 118, 123, 128, 132, 135, 135, 134, 131, 126, 122, 119, 118, 119, 121, 125, 129, 132, 135, 135, 134, 131, 128, 124, 122, 121, 122, 123, 126, 130, 133, 134, 134, 133, 131, 128, 124, 121, 120, 120, 120, 123, 127, 130, 132, 133, 133, 131, 129, 126, 124, 122, 122, 123, 125, 129, 131, 133, 133, 132, 131, 127, 124, 122, 121, 122, 124, 127, 130, 132, 133, 133, 131, 129, 126, 124, 123, 122, 124, 126, 129, 131, 132, 132, 131, 128, 125, 123, 121, 121, 123, 125, 127, 129, 130, 131, 129, 128, 126, 124, 123, 123, 124, 126, 128, 130, 131, 132, 131, 130, 129, 127, 125, 123, 123, 123, 124, 126, 128, 130, 132, 132, 131, 130, 129, 126, 124, 122, 122, 124, 126, 129, 130, 133, 133, 132, 130, 128, 126, 124, 123, 123, 125, 127, 129, 131, 132, 131, 130, 128, 125, 123, 121, 121, 123, 124, 126, 129, 130, 131, 131, 129, 127, 125, 122, 120, 121, 122, 124, 127, 129, 132, 133, 132, 131, 128, 125, 122, 121, 121, 122, 124, 127, 130, 132, 133, 132, 129, 127, 124, 120, 119, 119, 119, 122, 125, 128, 130, 131, 131, 129, 126, 124, 122, 122, 123, 125, 128, 132, 134, 136, 136, 134, 132, 128, 125, 122, 120, 120, 122, 125, 128, 132, 134, 135, 134, 132, 130, 127, 125, 124, 124, 125, 129, 132, 135, 136, 137, 136, 133, 130, 125, 122, 121, 121, 122, 125, 130, 133, 136, 137, 135, 133, 129, 125, 121, 120, 121, 124, 128, 133, 138, 140, 140, 137, 133, 128, 124, 121, 120, 123, 126, 132, 137, 141, 142, 141, 139, 133, 128, 122, 119, 119, 121, 125, 131, 137, 142, 143, 144, 140, 135, 129, 123, 119, 118, 120, 124, 130, 137, 143, 146, 147, 143, 136, 129, 121, 117, 114, 116, 122, 128, 136, 142, 146, 145, 142, 136, 127, 119, 113, 110, 112, 117, 125, 133, 141, 146, 148, 146, 139, 131, 122, 114, 110, 111, 115, 122, 129, 138, 142, 144, 141, 135, 127, 119, 112, 109, 109, 113, 120, 128, 135, 140, 141, 138, 132, 124, 115, 108, 104, 104, 109, 116, 124, 133, 138, 140, 138, 134, 126, 119, 113, 110, 111, 116, 122, 130, 136, 141, 141, 137, 132, 125, 118, 113, 110, 112, 116, 122, 129, 136, 140, 141, 138, 133, 126, 118, 113, 110, 111, 115, 121, 128, 134, 138, 139, 136, 130, 123, 118, 113, 113, 115, 120, 126, 133, 138, 139, 139, 134, 129, 122, 117, 114, 114, 117, 123, 130, 135, 139, 139, 137, 131, 123, 117, 112, 109, 111, 115, 121, 128, 134, 137, 137, 133, 127, 120, 114, 110, 110, 113, 119, 126, 134, 138, 139, 137, 131, 123, 115, 110, 108, 109, 115, 123, 131, 140, 144, 144, 140, 134, 126, 118, 113, 111, 115, 121, 129, 138, 146, 148, 147, 142, 134, 125, 117, 112, 111, 115, 122, 132, 141, 148, 151, 149, 143, 134, 124, 115, 110, 109, 113, 121, 131, 140, 148, 151, 150, 143, 134, 123, 113, 107, 105, 110, 118, 128, 139, 147, 151, 149, 144, 134, 123, 113, 108, 107, 112, 120, 130, 140, 148, 151, 150, 144, 135, 125, 116, 111, 110, 114, 122, 131, 141, 147, 150, 149, 142, 134, 125, 116, 111, 109, 113, 119, 128, 136, 142, 146, 144, 139, 131, 122, 114, 110, 110, 114, 121, 129, 138, 145, 147, 146, 140, 132, 124, 117, 114, 113, 117, 124, 133, 140, 144, 146, 143, 139, 131, 123, 118, 116, 117, 121, 128, 136, 142, 146, 145, 143, 136, 130, 124, 119, 118, 119, 123, 128, 133, 137, 139, 138, 134, 130, 124, 119, 117, 117, 119, 123, 127, 131, 134, 135, 135, 132, 129, 125, 123, 121, 121, 123, 125, 128, 131, 132, 133, 132, 129, 127, 124, 122, 121, 122, 123, 126, 128, 131, 132, 132, 131, 129, 125, 123, 121, 120, 120, 122, 126, 129, 132, 134, 134, 133, 132, 129, 125, 124, 123, 123, 125, 128, 131, 134, 135, 135, 134, 131, 128, 124, 122, 121, 122, 125, 128, 132, 134, 135, 134, 131, 128, 122, 118, 115, 114, 114, 118, 122, 126, 130, 134, 134, 132, 128, 123, 118, 114, 113, 114, 117, 123, 130, 135, 138, 138, 135, 129, 122, 117, 112, 110, 112, 118, 125, 132, 138, 140, 139, 135, 129, 120, 113, 108, 107, 109, 115, 123, 131, 137, 140, 140, 135, 128, 119, 112, 107, 106, 110, 117, 126, 135, 143, 147, 146, 140, 132, 123, 113, 108, 108, 112, 119, 128, 139, 146, 149, 146, 140, 131, 120, 111, 106, 106, 110, 119, 129, 139, 146, 148, 147, 140, 132, 122, 113, 108, 108, 112, 119, 128, 137, 143, 145, 143, 136, 128, 119, 112, 108, 107, 112, 120, 128, 135, 141, 142, 140, 134, 126, 119, 112, 109, 111, 115, 122, 129, 135, 139, 139, 138, 132, 126, 120, 116, 115, 116, 121, 126, 132, 136, 139, 139, 137, 133, 128, 125, 122, 121, 121, 124, 127, 130, 132, 133, 134, 132, 131, 129, 127, 126, 126, 128, 129, 129, 131, 130, 130, 129, 127, 126, 125, 125, 127, 128, 129, 131, 131, 131, 130, 127, 125, 124, 124, 126, 128, 131, 135, 137, 137, 136, 132, 128, 123, 119, 117, 117, 121, 125, 130, 135, 139, 139, 138, 134, 129, 123, 119, 117, 117, 119, 125, 130, 136, 141, 143, 142, 139, 133, 127, 121, 117, 116, 118, 123, 129, 137, 143, 145, 144, 140, 132, 124, 117, 113, 113, 116, 122, 130, 138, 144, 146, 143, 138, 130, 122, 116, 112, 112, 116, 123, 130, 137, 141, 143, 140, 136, 129, 123, 117, 114, 113, 116, 120, 126, 132, 135, 136, 135, 131, 124, 117, 112, 108, 109, 112, 118, 125, 131, 135, 136, 135, 130, 123, 117, 113, 110, 111, 116, 121, 128, 134, 137, 137, 134, 130, 124, 118, 115, 114, 115, 120, 125, 130, 134, 135, 135, 131, 127, 122, 117, 114, 114, 116, 121, 126, 132, 136, 138, 137, 133, 128, 122, 117, 114, 114, 116, 122, 129, 136, 141, 142, 140, 135, 128, 120, 113, 110, 111, 115, 123, 131, 139, 143, 144, 140, 132, 122, 113, 107, 106, 110, 117, 128, 138, 146, 149, 147, 140, 130, 118, 109, 104, 105, 110, 120, 131, 142, 149, 149, 146, 137, 126, 114, 105, 100, 102, 109, 120, 133, 144, 152, 154, 150, 140, 128, 115, 105, 101, 103, 111, 123, 137, 149, 157, 158, 152, 141, 126, 112, 102, 97, 100, 110, 123, 138, 151, 158, 157, 149, 137, 122, 108, 98, 96, 100, 111, 126, 142, 155, 161, 161, 153, 140, 125, 110, 101, 98, 102, 113, 127, 142, 154, 161, 160, 152, 139, 123, 109, 99, 96, 101, 111, 124, 138, 150, 157, 156, 148, 137, 122, 110, 101, 98, 102, 111, 124, 137, 148, 154, 155, 149, 138, 126, 114, 105, 102, 105, 113, 124, 136, 147, 154, 155, 151, 142, 130, 119, 111, 106, 107, 114, 123, 134, 144, 150, 153, 149, 141, 130, 119, 110, 104, 104, 108, 117, 128, 138, 144, 147, 145, 139, 129, 118, 109, 105, 104, 108, 116, 125, 134, 140, 142, 139, 133, 123, 114, 107, 103, 103, 107, 115, 123, 131, 136, 138, 136, 130, 123, 115, 109, 105, 105, 109, 116, 123, 129, 134, 135, 134, 128, 121, 114, 109, 107, 107, 112, 118, 126, 133, 137, 138, 136, 130, 123, 117, 111, 109, 110, 114, 120, 126, 132, 135, 135, 132, 127, 121, 115, 111, 109, 111, 115, 121, 126, 131, 134, 133, 131, 126, 120, 115, 113, 113, 115, 120, 126, 131, 134, 135, 135, 130, 124, 119, 115, 112, 113, 117, 121, 126, 131, 133, 133, 131, 126, 122, 117, 114, 113, 116, 120, 126, 131, 134, 135, 133, 130, 124, 119, 116, 115, 115, 119, 124, 129, 134, 135, 134, 131, 126, 121, 117, 114, 115, 117, 122, 128, 133, 136, 137, 134, 129, 124, 118, 113, 112, 114, 119, 125, 132, 138, 141, 140, 136, 128, 120, 112, 108, 107, 110, 117, 125, 134, 140, 143, 141, 134, 126, 118, 111, 107, 108, 113, 122, 131, 140, 146, 148, 145, 138, 130, 121, 113, 109, 110, 115, 123, 133, 142, 149, 151, 148, 140, 129, 119, 110, 106, 107, 114, 124, 135, 144, 150, 151, 145, 136, 124, 112, 104, 102, 105, 113, 125, 137, 147, 152, 151, 145, 134, 122, 111, 105, 103, 107, 117, 130, 142, 150, 154, 151, 143, 132, 119, 108, 102, 102, 107, 116, 128, 140, 148, 151, 148, 141, 129, 117, 106, 101, 100, 106, 117, 130, 142, 150, 153, 150, 141, 129, 116, 107, 102, 102, 109, 120, 134, 145, 153, 154, 151, 141, 128, 115, 106, 102, 104, 112, 123, 135, 146, 152, 152, 146, 136, 123, 112, 103, 100, 103, 111, 123, 136, 147, 153, 154, 148, 137, 124, 111, 101, 96, 99, 107, 119, 134, 146, 153, 154, 148, 137, 124, 111, 102, 99, 102, 112, 124, 138, 149, 155, 155, 149, 138, 125, 113, 105, 102, 105, 114, 126, 137, 147, 152, 152, 147, 137, 125, 114, 107, 104, 106, 114, 125, 136, 146, 151, 151, 146, 136, 124, 113, 105, 103, 106, 114, 125, 137, 146, 151, 151, 145, 135, 124, 114, 107, 105, 109, 118, 127, 137, 145, 148, 145, 139, 129, 118, 109, 103, 103, 107, 116, 126, 136, 143, 146, 146, 139, 131, 121, 113, 109, 109, 114, 123, 133, 142, 149, 151, 148, 141, 130, 119, 111, 107, 109, 116, 125, 136, 145, 151, 151, 146, 138, 127, 117, 111, 109, 112, 118, 129, 139, 147, 149, 149, 142, 133, 123, 114, 109, 108, 113, 121, 132, 142, 149, 152, 149, 143, 132, 121, 112, 106, 107, 113, 123, 134, 144, 151, 153, 149, 140, 127, 116, 107, 103, 105, 112, 125, 137, 147, 154, 155, 149, 138, 127, 114, 106, 104, 107, 116, 128, 141, 151, 156, 155, 148, 137, 124, 113, 105, 103, 108, 117, 130, 142, 152, 156, 154, 147, 135, 120, 108, 100, 98, 103, 114, 128, 142, 153, 158, 156, 147, 132, 116, 102, 92, 90, 96, 109, 124, 141, 154, 160, 159, 148, 134, 117, 101, 92, 90, 97, 110, 127, 144, 158, 164, 161, 151, 134, 116, 100, 89, 86, 93, 106, 124, 143, 157, 164, 163, 153, 136, 116, 98, 86, 81, 88, 102, 121, 140, 156, 164, 163, 153, 136, 116, 97, 85, 82, 88, 101, 120, 140, 155, 164, 163, 153, 136, 117, 99, 87, 83, 89, 103, 121, 141, 158, 168, 169, 160, 145, 126, 107, 93, 86, 90, 102, 121, 141, 158, 169, 171, 162, 147, 127, 107, 91, 84, 87, 99, 117, 137, 155, 167, 169, 162, 146, 127, 107, 91, 83, 85, 96, 113, 132, 150, 161, 165, 158, 144, 127, 107, 92, 84, 84, 92, 107, 125, 143, 156, 162, 159, 149, 132, 113, 98, 88, 85, 91, 104, 122, 139, 153, 160, 159, 149, 132, 114, 98, 87, 84, 91, 103, 121, 138, 152, 160, 160, 151, 137, 120, 104, 93, 89, 94, 106, 121, 138, 152, 159, 160, 153, 140, 124, 110, 99, 95, 98, 108, 123, 139, 152, 160, 161, 155, 144, 129, 115, 105, 100, 102, 110, 122, 135, 147, 154, 156, 151, 141, 129, 117, 108, 103, 105, 111, 121, 133, 143, 150, 151, 147, 140, 130, 119, 111, 107, 107, 112, 120, 129, 138, 144, 145, 143, 138, 130, 123, 116, 112, 112, 116, 122, 130, 136, 142, 143, 142, 139, 132, 126, 120, 118, 118, 121, 125, 131, 136, 139, 139, 138, 135, 130, 126, 122, 121, 122, 124, 127, 131, 134, 135, 135, 134, 132, 129, 127, 126, 126, 127, 128, 129, 130, 131, 130, 130, 129, 127, 128, 127, 127, 128, 129, 129, 130, 129, 128, 127, 127, 126, 125, 126, 127, 128, 130, 131, 131, 131, 130, 128, 126, 125, 125, 125, 127, 129, 131, 134, 135, 135, 134, 132, 130, 127, 126, 124, 125, 127, 130, 133, 136, 138, 138, 136, 133, 130, 126, 123, 121, 121, 123, 127, 132, 137, 141, 142, 141, 137, 132, 125, 121, 118, 118, 121, 125, 132, 138, 141, 142, 141, 136, 131, 124, 120, 117, 117, 120, 125, 130, 136, 139, 140, 138, 134, 128, 123, 118, 116, 116, 119, 123, 129, 134, 137, 139, 138, 134, 129, 125, 120, 118, 117, 119, 123, 128, 132, 136, 138, 137, 135, 130, 126, 122, 119, 119, 120, 123, 127, 131, 134, 136, 136, 134, 131, 127, 124, 121, 120, 121, 123, 126, 129, 132, 134, 135, 133, 131, 127, 124, 122, 121, 121, 122, 125, 128, 131, 133, 134, 133, 131, 128, 125, 123, 121, 121, 123, 125, 128, 130, 132, 133, 132, 131, 128, 126, 123, 122, 122, 123, 124, 127, 129, 131, 132, 132, 131, 129, 127, 125, 123, 123, 123, 125, 127, 129, 130, 131, 131, 131, 129, 127, 125, 124, 124, 124, 125, 127, 128, 130, 131, 131, 130, 129, 127, 126, 125, 124, 124, 125, 126, 128, 129, 130, 130, 130, 129, 128, 127, 125, 125, 125, 125, 126, 128, 129, 130, 130, 130, 129, 128, 127, 126, 125, 125, 126, 126, 127, 128, 129, 129, 129, 129, 128, 127, 126, 126, 126, 126, 126 }; struct { int idx; // Index of last sample unsigned char speed; // input samples per output sample unsigned char speed_frac; // extra 256ths of a sample per sample unsigned char volume; // 255 is (almost) full volume unsigned char resid; // error accumulator for speed_frac unsigned char wavetable_id; // Which wavetable are we using? } track[8]; #define num(x) (sizeof(x)/sizeof(x[0])) const struct { const char *p PROGMEM; int len; } wavetables[] PROGMEM = { { ha_wavetable, num(ha_wavetable) }, /* 0 */ { scott_wavetable, num(scott_wavetable) }, /* 1 */ { corde_wavetable, num(corde_wavetable) }, /* 2 */ { mo_wavetable, num(mo_wavetable) }, /* 3 */ { nie_wavetable, num(nie_wavetable) }, /* 4 */ { siffl_wavetable, num(siffl_wavetable) }, /* 5 */ }; // Mix samples from all tracks together, advancing them all. samp next_sample() { int ii; int accum = 0; // click twice a second static int t = 0; if (++t == 4000) { t = 0; //return 255; } for (ii = 0; ii < num(track); ii++) { union { unsigned char cc[2]; int ii; } bitshifter; int resid = track[ii].resid; const char *wavetable; int wavetable_len; unsigned char wavetable_id = track[ii].wavetable_id; while (wavetable_id >= num(wavetables)) wavetable_id -= num(wavetables); track[ii].idx += track[ii].speed; resid += track[ii].speed_frac; track[ii].resid = resid; if (resid != track[ii].resid) track[ii].idx++; wavetable = (const char *)pgm_read_word(&wavetables[wavetable_id].p); wavetable_len = (int)pgm_read_word(&wavetables[wavetable_id].len); if (track[ii].idx >= wavetable_len) { track[ii].idx = 0; track[ii].resid = 0; track[ii].speed = 0; track[ii].speed_frac = 0; } bitshifter.ii = ((samp) pgm_read_byte(wavetable + track[ii].idx) * track[ii].volume); accum += bitshifter.cc[1]; // fucking little-endian machines } accum /= num(track); if (accum < 0) return 0; if (accum > 255) return 255; return accum; } // Simple debugging stub bytebeat sound. // void // init_wavetable() // { // int t; // for (t = 0; t < num(wavetable); t++) // wavetable[t] = ((t & 32) << 2) / (1 | t >> 10); // } void note(unsigned char which_track, int speed, unsigned char volume, unsigned char wavetable_id) { track[which_track].idx = 0; track[which_track].speed = speed >> 8; track[which_track].speed_frac = speed; track[which_track].volume = volume; track[which_track].wavetable_id = wavetable_id; }