Thursday, December 01, 2011

ETARD (Extremely Tedious Tracking for Arduino)

This post relates to Forever Rebuild. A while ago, godinpants challenged me to write an Arduino EP. I assumed he meant completely internal to the Arduino i.e. all music and sound data is stored on the Arduino, and all music and sound is generated by the Arduino.

So I set about writing a very basic music tracker / sound engine for this purpose. Due to being at Sound Bytes 10 as well as various work commitments, I could only give myself a maximum of one day to write such a sound engine and the resulting music. My aim was to track in Arduino IDE using a tracker that I would write. Please keep all of this in mind when reading over the synopsis below.



ETARD Sound Engine
The sound engine consists of three channels. Two of these channels are identical, sample playback channels. One of these channels is a hardware synthesis channel, based on one of the timers of the Arduino.



Arduino Hardware Setup
Here you can see the Arduino hardware setup, which is actually very, very simple. We can divide the setup into only a few basic components.


A resistor to resistor digital to analog converter (R2R DAC) (see here for more info) takes data from Arduino digital pins 0 - 7, which are addressed as PORTD in the source code below. Digital samples from the Arduino are written to the eight digital pins of PORTB on a sample-by-sample basis, and the digital to analog converter takes these samples and converts them into a voltage. Because the R2R DAC is eight bits (i.e. digital pins 0 - 7), we thus have an output resolution with 256 possible voltage values. By sending different sample values out of digital pins 0 - 7 (PORTB) over time, we create a continuously changing analogue voltage - which is how the sample playback is heard. In the picture above, the R2R DAC is the circuit board connected to the Arduino digital pins 0 - 7 on the right hand side.



Here we can see the bottom of the R2R DAC. The wires coming out of it are connections for digital input ground, analogue output sound signal and analogue output ground.



Besides the sample-based channels, there is also one hardware synthesis channel. This channel is a pulse wave where duty cycle and frequency can be modified in the music data. This channel uses Arduino hardware timer number one (more info here) for waveform generation, and as such is tied to digital pin 9. The output of digital pin 9 is connected via a resistor and a potentiometer to the audio output of the DAC.


The potentiometer (as mentioned above) controls the mix between the sample-based channels and the synthesis channel.


Sample Storage
A total of 16 samples are stored in program memory (more could easily be added). Each sample is exactly 1000 bytes long and 7 bits in depth. The samples are stored in program memory (see Arduino PROGMEM), and as such do not take up any of the Arduino RAM. Instead, they use the Arduino program read-only memory, of which there is approximately 30KB.

However, this space is shared by both the samples and the actual software, so we have to be careful not to use up too much with just samples. Nonetheless, you could easily fit more than just 16 sounds at 1000 samples per sound into this area.

In this screen shot, we can see that the samples are stored at the very start of the program using a single, large unsigned 8-bit byte array within the program space. This is indicated by the prog_uchar samples[] PROGMEM = {........}; array

The samples were converted to 7 bit unsigned bytes / 22.100 KHz using a variant of my old audio2bits Max/MSP patch.


Song Format
In general, this engine features songs divided up into patterns, and then an array that indicates the order of patterns. Finally, each song is also given a tempo variable, which is used to adjust the tempo over time from one song to another in a smooth fashion. For those that are unfortunate enough to have seen a live set of mine over the last few years, you would know that I am obsessed with playing gapless, continuous sets and this ideas flows over into the way in which song transitions are handled in the ETARD.

Each pattern is sixteen steps in length, and features four columns. The first two columns indicate the sample number that should be played back for that particular step for each of the two sample playback channels. A zero in either of these sample playback columns means that that particular channel will be silent. The third columns indicates the pitch of the synthesis channel. This pitch is given as a MIDI note number from one to one hundred and twenty seven. A pitch of zero indicates silence. The fourth and final column represents the duty cycle (timbre) of the pulse wave synthesis channel. This is given as a value from zero to hundred and twenty seven, and thus represents a range of duty cycle from zero percent to one hundred percent.



All of the patterns for all songs are stored in a program memory array, the start of which is indicated by prog_uchar patterns[] PROGMEM = {....}.

The order of patterns for a given song as well as the tempo is stored in the following areas:

prog_uchar song_X_pattern_order[] PROGMEM = {....};
byte song_X_patterns_total = A;
byte song_X_time = B;

Whereby X is the song number and the PROGMEM array stores the order of patterns, indexed at 0. A is the total number of patterns used in the song (i.e. the length of prog_uchar song_X_pattern_order[] PROGMEM = {}) and B is the time variable (i.e. tempo given as an interval in microseconds on a sample by sample basis).

In the actual example of source code given below (which is used for Forever Rebuild), only two songs are featured, so the relevant source code for the above as follows:




Song Playback
The song playback functionality is simple as well. A function reads through the array that stores the pattern order, and finds each patter number one by one. This gives an offset from which to read the entire patterns array, allowing the program to extract each note in a step by step fashion. The software then sees where the silent gaps are, and also where to play a sample - determine which sample, a note - determine which note, and what the timbre should be set to for a given pitched note.

All of this takes place in the main Arduino void loop() {} function.


An example is given below of the playback function for song 1.

time_data = song_1_time;


for(int x = 0; x < song_1_patterns_total; x ++) {
current_pattern = pgm_read_byte_near(song_1_pattern_order + x);

for(int y = 0; y < 16; y ++) {
// get current pattern

ch1_sample = pgm_read_byte_near(patterns + (y << 2) + 0 + (current_pattern << 6));
ch2_sample = pgm_read_byte_near(patterns + (y << 2) + 1+ (current_pattern << 6));
ch3_note = pgm_read_byte_near(patterns + (y << 2) + 2+ (current_pattern << 6));
ch3_timbre = pgm_read_byte_near(patterns + (y << 2) + 3+ (current_pattern << 6));

// update synthesis

if(ch3_note != 0) {
doNote(ch3_note, ch3_timbre);
}
else{
doNoteOff();
}

// play samples

playSamples(time_data);
}
}
// end song
doNoteOff();




Synthesis Note Playback
The synthesis channel uses the timer1 library, which can be downloaded here. A function, which takes the form of void doNote(byte pitch, int timbre) {} converts a pitched note value to a time value in microseconds (relating to the period length of a waveform of that pitch), and then passes that value along with the corresponding timbre value to timer1, which then sets the hardware PWM synthesis in motion on digital pin 9. This function is given below, and requires the inclusion of math.h, as pow() is used to convert pitch to frequency. The value of note_A is 440.00 (i.e. to tune the synth to an A of 440 Hz). However, this variable can of course be changed.

void doNote(byte pitch, int timbre) {
period = note_A * pow(2, (float(pitch) - 69.0) / 12.0);
period = 1000000 / period;
Timer1.pwm(9, timbre << 3, period);
}




Sample Playback
Sample playback is handled by the void playSamples(byte time) {} function. This function is simply a loop of 1000 increments, whereby the sample data for each channel and each particular sample is pulled out of the PROGMEM array which stores all of the samples, at indices set by 1) the sample number (i.e. 0 - 15) and the current increment of the playSamples function (i.e. 0 - 999).

As the two channels are only seven bits each (i.e. a data range of 0 - 127), it is simply a matter of adding the sample data together for each and every point on a sample-by-sample basis, and then setting PORTB to this value. This addition and setting of PORTB happens each of the 1000 loops found within playSamples.



Materials

Download the Max/MSP patch used for audio file conversion here.

Source code for Forever Rebuild. Download here. Or read below:

#include "TimerOne.h"
#include "math.h"
#include <avr/pgmspace.h>

prog_uchar samples[] PROGMEM = {
// silence
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
// kick
64, 34, 28, 27, 25, 24, 22, 20, 18, 17, 16, 15, 14, 13, 12, 12, 12, 11, 11, 11, 12, 12, 13, 15, 18, 20, 23, 25, 28, 31, 33, 36, 39, 41, 44, 46, 49, 52, 54, 57, 59, 62, 64, 67, 69, 71, 73, 75, 77, 79, 81, 82, 84, 85, 87, 88, 89, 91, 92, 93, 95, 96, 97, 99, 100, 102, 103, 104, 106, 107, 108, 109, 110, 111, 112, 113, 114, 114, 115, 116, 116, 117, 117, 118, 118, 119, 120, 120, 121, 121, 122, 122, 122, 123, 123, 123, 123, 122, 122, 122, 121, 120, 120, 119, 118, 117, 116, 115, 114, 114, 113, 112, 111, 110, 108, 107, 106, 105, 104, 103, 102, 100, 99, 97, 96, 94, 93, 91, 89, 88, 86, 84, 82, 80, 77, 75, 73, 71, 68, 66, 64, 61, 59, 57, 54, 52, 50, 48, 45, 43, 42, 40, 38, 36, 35, 33, 32, 31, 29, 28, 27, 26, 24, 23, 22, 21, 20, 19, 18, 17, 17, 16, 15, 14, 13, 13, 12, 11, 11, 10, 10, 9, 9, 8, 8, 7, 7, 7, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 10, 10, 11, 11, 11, 12, 12, 13, 13, 14, 14, 15, 16, 16, 17, 17, 18, 18, 19, 20, 20, 21, 21, 22, 23, 23, 24, 25, 25, 26, 27, 28, 28, 29, 30, 31, 31, 32, 33, 34, 35, 36, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 49, 50, 52, 53, 54, 56, 57, 59, 60, 61, 63, 64, 66, 67, 69, 70, 72, 73, 74, 75, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 87, 88, 89, 90, 91, 91, 92, 93, 93, 94, 95, 95, 96, 96, 97, 97, 98, 99, 99, 100, 100, 100, 101, 101, 102, 102, 103, 103, 103, 104, 104, 104, 105, 105, 105, 106, 106, 106, 107, 107, 107, 107, 108, 108, 108, 108, 109, 109, 109, 109, 109, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 109, 109, 109, 109, 109, 109, 108, 108, 108, 108, 108, 107, 107, 107, 107, 107, 106, 106, 106, 106, 105, 105, 105, 104, 104, 104, 104, 103, 103, 103, 102, 102, 102, 101, 101, 101, 100, 100, 100, 99, 99, 98, 98, 98, 97, 97, 96, 96, 96, 95, 95, 94, 94, 93, 93, 92, 92, 91, 91, 90, 90, 89, 89, 88, 88, 87, 87, 86, 85, 85, 84, 84, 83, 82, 82, 81, 80, 80, 79, 78, 77, 77, 76, 75, 74, 73, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 55, 54, 53, 52, 51, 51, 50, 49, 48, 48, 47, 46, 46, 45, 44, 44, 43, 43, 42, 41, 41, 40, 40, 39, 39, 38, 38, 37, 37, 36, 36, 36, 35, 35, 34, 34, 33, 33, 33, 32, 32, 32, 31, 31, 30, 30, 30, 29, 29, 29, 29, 28, 28, 28, 27, 27, 27, 27, 26, 26, 26, 26, 25, 25, 25, 25, 24, 24, 24, 24, 24, 23, 23, 23, 23, 23, 23, 22, 22, 22, 22, 22, 22, 22, 22, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 26, 27, 27, 27, 27, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 31, 31, 31, 32, 32, 32, 33, 33, 33, 34, 34, 34, 35, 35, 36, 36, 36, 37, 37, 38, 38, 39, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 46, 46, 47, 47, 48, 48, 49, 50, 50, 51, 52, 52, 53, 54, 54, 55, 56, 57, 57, 58, 59, 60, 61, 62, 62, 63, 64, 65, 66, 67, 67, 68, 69, 70, 71, 71, 72, 73, 73, 74, 75, 75, 76, 77, 77, 78, 78, 79, 80, 80, 81, 81, 82, 82, 83, 83, 84, 84, 85, 85, 86, 86, 86, 87, 87, 88, 88, 88, 89, 89, 90, 90, 90, 91, 91, 91, 92, 92, 93, 93, 93, 94, 94, 94, 94, 95, 95, 95, 96, 96, 96, 96, 97, 97, 97, 97, 98, 98, 98, 98, 99, 99, 99, 99, 99, 100, 100, 100, 100, 100, 100, 101, 101, 101, 101, 101, 101, 102, 102, 102, 102, 102, 102, 102, 102, 102, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 102, 102, 102, 102, 102, 102, 102, 102, 101, 101, 101, 101, 101, 101, 101, 100, 100, 100, 100, 100, 99, 99, 99, 99, 99, 98, 98, 98, 98, 98, 97, 97, 97, 97, 96, 96, 96, 96, 95, 95, 95, 95, 94, 94, 94, 93, 93, 93, 92, 92, 92, 91, 91, 91, 90, 90, 90, 89, 89, 89, 88, 88, 87, 87, 87, 86, 86, 85, 85, 85, 84, 84, 83, 83, 82, 82, 81, 81, 80, 80, 79, 79, 78, 78, 77, 76, 76, 75, 75, 74, 73, 73, 72, 72, 71, 70, 69, 69, 68, 67, 66, 66, 65, 64, 63, 63, 62, 61, 60, 59, 59, 58, 57, 57, 56, 55, 54, 54, 53, 53, 52, 51, 51, 50, 50, 49, 49, 48, 47, 47, 46, 46, 45, 45, 44, 44, 44, 43, 43, 42, 42, 41, 41, 40, 40, 40, 39, 39, 39, 38, 38, 37, 37, 37, 36, 36, 36, 35, 35, 35, 34, 34, 34, 34, 33, 33, 33, 32, 32, 32, 32, 31, 31, 31, 31, 30, 30, 30,
// snare
63, 68, 74, 79, 83, 86, 91, 92, 91, 93, 95, 91, 91, 86, 83, 80, 82, 75, 70, 67, 60, 64, 51, 50, 44, 39, 34, 35, 33, 29, 23, 4, 13, 18, 16, 23, 29, 16, 21, 16, 24, 31, 29, 25, 32, 46, 44, 52, 45, 61, 69, 68, 92, 95, 69, 67, 90, 105, 98, 109, 115, 99, 94, 106, 99, 108, 120, 107, 117, 117, 116, 93, 105, 100, 105, 100, 95, 100, 96, 72, 68, 82, 80, 74, 53, 53, 41, 53, 46, 53, 46, 43, 23, 19, 22, 35, 26, 37, 20, 28, 30, 14, 8, 23, 28, 29, 27, 12, 18, 43, 41, 55, 51, 58, 46, 63, 75, 64, 58, 87, 75, 65, 67, 92, 84, 94, 95, 104, 101, 89, 100, 107, 98, 110, 89, 92, 101, 105, 93, 81, 80, 86, 85, 90, 74, 55, 76, 64, 50, 64, 72, 42, 45, 53, 41, 32, 40, 17, 14, 33, 38, 37, 21, 13, 17, 31, 34, 33, 30, 24, 21, 29, 31, 46, 40, 47, 50, 43, 47, 57, 72, 68, 64, 67, 81, 73, 83, 93, 79, 91, 95, 92, 89, 89, 107, 110, 94, 98, 103, 98, 111, 105, 103, 86, 69, 105, 96, 88, 73, 82, 79, 72, 74, 64, 66, 61, 60, 52, 57, 48, 42, 55, 42, 28, 37, 46, 36, 31, 31, 24, 19, 27, 29, 28, 32, 32, 48, 41, 24, 34, 46, 48, 49, 53, 52, 66, 54, 60, 60, 69, 68, 72, 86, 81, 76, 81, 87, 95, 94, 100, 100, 91, 89, 92, 100, 104, 90, 95, 90, 90, 90, 98, 81, 76, 81, 79, 71, 72, 67, 71, 64, 65, 59, 62, 50, 41, 41, 43, 38, 42, 36, 38, 30, 30, 27, 30, 27, 37, 38, 41, 36, 32, 33, 37, 36, 37, 41, 46, 56, 55, 57, 57, 61, 72, 71, 69, 70, 67, 62, 83, 83, 83, 80, 79, 88, 95, 94, 85, 92, 99, 94, 93, 87, 71, 81, 87, 87, 94, 86, 81, 84, 77, 71, 66, 70, 61, 64, 60, 58, 58, 51, 46, 44, 40, 48, 43, 45, 33, 40, 34, 30, 39, 32, 38, 33, 31, 44, 36, 52, 41, 32, 43, 51, 48, 47, 53, 60, 61, 50, 70, 67, 67, 68, 64, 74, 82, 92, 81, 84, 88, 87, 81, 90, 90, 90, 95, 84, 84, 91, 85, 91, 77, 79, 93, 86, 78, 72, 64, 72, 67, 64, 71, 63, 67, 58, 51, 50, 55, 51, 43, 41, 36, 38, 48, 40, 38, 37, 41, 42, 37, 38, 37, 37, 41, 45, 42, 51, 43, 45, 44, 55, 54, 67, 65, 56, 56, 64, 72, 74, 73, 72, 75, 77, 84, 83, 71, 78, 90, 94, 85, 83, 83, 84, 84, 83, 79, 84, 85, 79, 78, 78, 68, 68, 73, 75, 69, 63, 63, 64, 63, 57, 57, 55, 53, 47, 49, 47, 44, 47, 41, 38, 38, 46, 45, 45, 43, 44, 39, 46, 48, 46, 44, 49, 52, 42, 46, 54, 63, 60, 61, 69, 65, 64, 72, 68, 73, 73, 69, 77, 77, 81, 78, 79, 79, 84, 87, 85, 77, 83, 81, 82, 81, 82, 78, 76, 78, 76, 67, 77, 73, 66, 68, 65, 66, 65, 61, 55, 60, 56, 49, 47, 53, 47, 56, 54, 47, 43, 42, 39, 41, 47, 51, 56, 48, 48, 50, 46, 45, 53, 52, 55, 55, 49, 57, 68, 63, 60, 64, 69, 70, 61, 64, 74, 73, 79, 73, 73, 76, 79, 80, 82, 82, 75, 80, 81, 84, 80, 75, 74, 78, 77, 74, 74, 73, 75, 70, 68, 58, 62, 68, 62, 61, 56, 55, 57, 56, 56, 56, 50, 51, 49, 48, 49, 49, 43, 47, 45, 45, 48, 54, 49, 50, 53, 50, 56, 53, 55, 59, 59, 52, 56, 68, 64, 65, 63, 66, 70, 68, 70, 74, 72, 70, 81, 76, 75, 77, 81, 78, 74, 71, 71, 81, 79, 73, 76, 79, 75, 76, 69, 72, 70, 65, 63, 66, 62, 60, 66, 61, 55, 61, 58, 53, 61, 54, 54, 51, 48, 50, 49, 53, 52, 51, 46, 50, 52, 51, 51, 49, 52, 51, 55, 56, 58, 58, 59, 59, 65, 62, 65, 68, 65, 64, 65, 65, 70, 72, 75, 70, 75, 73, 74, 74, 73, 78, 79, 76, 73, 74, 78, 74, 71, 72, 73, 69, 69, 72, 70, 66, 66, 62, 65, 62, 62, 64, 62, 58, 57, 53, 57, 56, 55, 53, 53, 53, 54, 51, 52, 48, 53, 55, 53, 49, 52, 56, 59, 54, 56, 57, 59, 54, 60, 59, 59, 63, 64, 65, 67, 67, 68, 67, 64, 66, 72, 75, 72, 71, 71, 75, 74, 74, 73, 71, 73, 75, 71, 69, 74, 69, 68, 71, 73, 69, 66, 67, 67, 64, 63, 62, 63, 62, 58, 58, 59, 54, 56, 58, 56, 56, 52, 52, 55, 53, 52, 56, 57, 55, 56, 54, 54, 53, 52, 55, 56, 55, 57, 59, 61, 62, 63, 63, 67, 66, 66, 67, 68, 67, 66, 67, 70, 72, 69, 68, 72, 73, 70, 72, 72, 70, 73, 71, 69, 71, 71, 70, 71, 69, 69, 67, 66, 69, 65, 63, 63, 62, 62, 59, 60, 58, 58, 58, 61, 56, 56, 59, 57, 53, 53, 55, 57, 54, 55, 55, 55, 55, 56, 55, 56, 59, 61, 58, 56, 58, 63, 64, 62, 61, 63, 65, 64, 65, 66, 68, 68, 68, 68, 68, 70, 72, 71, 70, 70, 68, 70, 70, 72, 70, 69, 70, 67, 68, 68, 67, 68, 68, 68, 65, 63, 64, 62, 63, 60, 62, 60, 62, 58, 58, 60, 60, 57, 57, 55, 57, 57, 58, 56, 57, 56, 56, 56, 57, 58, 58, 57, 57, 59, 61, 60, 60, 61, 63, 64, 62, 62, 65, 65, 66, 66, 67, 65, 66, 70, 69, 68, 69, 68, 69, 69, 69, 69, 71, 69, 67, 67, 70, 68, 67, 67, 67, 66, 66, 66,
// hat
64, 61, 86, 68, 41, 66, 64, 57, 67, 69, 41, 80, 74, 22, 80, 51, 85, 66, 33, 77, 67, 47, 64, 74, 47, 62, 76, 52, 56, 89, 56, 58, 73, 53, 80, 50, 45, 114, 53, 39, 93, 61, 44, 74, 76, 25, 71, 75, 53, 75, 40, 76, 83, 8, 75, 83, 46, 58, 83, 51, 57, 84, 54, 68, 57, 66, 65, 64, 54, 86, 59, 52, 72, 68, 46, 69, 56, 82, 62, 47, 74, 45, 95, 50, 53, 82, 55, 67, 68, 68, 45, 71, 51, 89, 61, 39, 87, 69, 29, 77, 49, 91, 63, 36, 83, 59, 55, 66, 52, 88, 64, 38, 78, 53, 74, 60, 58, 74, 55, 72, 53, 66, 65, 63, 55, 81, 62, 48, 78, 78, 15, 76, 81, 31, 59, 97, 36, 57, 97, 53, 56, 77, 57, 65, 62, 57, 80, 60, 51, 82, 63, 51, 67, 48, 95, 55, 61, 54, 55, 94, 47, 69, 60, 63, 76, 42, 61, 88, 52, 59, 74, 61, 62, 61, 60, 79, 54, 57, 83, 54, 66, 57, 76, 43, 76, 74, 28, 69, 83, 34, 58, 96, 47, 76, 41, 61, 87, 45, 70, 62, 63, 53, 87, 61, 43, 91, 63, 36, 75, 64, 54, 67, 60, 69, 69, 43, 70, 64, 58, 69, 45, 89, 65, 30, 77, 72, 33, 72, 67, 57, 52, 94, 49, 53, 84, 54, 71, 54, 61, 78, 58, 61, 70, 61, 61, 66, 59, 73, 59, 48, 99, 61, 38, 82, 57, 59, 63, 77, 31, 69, 83, 48, 55, 92, 53, 50, 87, 59, 52, 74, 69, 42, 67, 84, 22, 66, 92, 43, 59, 89, 56, 50, 88, 58, 55, 67, 63, 59, 65, 66, 57, 68, 60, 62, 53, 90, 56, 48, 85, 55, 65, 61, 62, 68, 59, 68, 57, 67, 61, 67, 59, 67, 66, 43, 92, 69, 24, 85, 71, 33, 70, 71, 50, 60, 76, 56, 70, 51, 64, 65, 70, 66, 46, 70, 62, 62, 61, 75, 41, 59, 91, 52, 71, 46, 65, 76, 50, 61, 82, 53, 50, 98, 55, 52, 74, 66, 52, 69, 78, 25, 65, 93, 31, 67, 81, 57, 61, 72, 64, 56, 66, 62, 67, 62, 55, 84, 62, 44, 81, 57, 63, 62, 51, 92, 60, 42, 79, 58, 61, 64, 66, 55, 66, 61, 68, 59, 67, 63, 57, 71, 62, 58, 69, 70, 43, 68, 77, 32, 63, 87, 43, 62, 82, 58, 58, 77, 62, 50, 75, 70, 36, 71, 79, 28, 63, 96, 38, 58, 96, 54, 49, 89, 55, 62, 60, 57, 84, 55, 67, 53, 64, 70, 64, 73, 40, 69, 65, 64, 66, 51, 71, 65, 52, 67, 64, 59, 63, 67, 57, 61, 76, 56, 68, 58, 65, 63, 62, 51, 95, 57, 44, 87, 63, 42, 76, 65, 48, 67, 71, 48, 57, 88, 50, 59, 80, 61, 55, 71, 59, 66, 62, 69, 50, 65, 67, 58, 63, 66, 63, 70, 50, 70, 57, 74, 63, 44, 71, 66, 51, 71, 55, 73, 66, 46, 68, 61, 68, 56, 72, 54, 67, 65, 62, 58, 76, 61, 55, 71, 66, 47, 70, 70, 50, 67, 64, 60, 64, 61, 65, 68, 50, 69, 61, 65, 68, 49, 67, 71, 49, 67, 65, 60, 56, 78, 59, 55, 81, 64, 49, 72, 57, 69, 62, 64, 56, 57, 85, 44, 60, 90, 52, 66, 58, 65, 69, 58, 63, 68, 61, 59, 77, 64, 46, 71, 55, 79, 60, 51, 81, 62, 46, 74, 62, 56, 67, 61, 64, 66, 56, 64, 65, 57, 63, 65, 66, 63, 59, 65, 63, 60, 65, 63, 63, 62, 60, 66, 67, 51, 69, 57, 74, 66, 47, 70, 59, 66, 62, 66, 56, 66, 63, 62, 67, 59, 66, 55, 77, 63, 44, 72, 66, 50, 68, 64, 62, 64, 61, 63, 60, 67, 63, 63, 59, 60, 77, 55, 61, 71, 60, 66, 58, 61, 71, 61, 61, 70, 60, 61, 69, 66, 51, 68, 69, 45, 64, 79, 50, 68, 61, 64, 65, 61, 62, 69, 55, 64, 68, 60, 67, 58, 62, 71, 60, 59, 74, 60, 61, 63, 58, 80, 49, 64, 73, 57, 70, 50, 70, 62, 66, 68, 48, 68, 68, 54, 60, 75, 54, 62, 75, 57, 66, 60, 64, 66, 62, 59, 71, 63, 53, 81, 58, 59, 64, 60, 67, 63, 55, 77, 60, 58, 65, 68, 52, 63, 74, 46, 66, 71, 61, 63, 61, 65, 59, 69, 63, 58, 66, 70, 42, 69, 69, 56, 65, 64, 61, 61, 70, 57, 69, 54, 68, 63, 63, 66, 57, 65, 63, 64, 57, 74, 57, 58, 74, 63, 55, 73, 59, 67, 60, 59, 72, 60, 61, 62, 62, 69, 61, 63, 64, 60, 69, 57, 62, 71, 60, 63, 64, 65, 59, 69, 65, 52, 69, 59, 68, 63, 58, 66, 65, 58, 64, 62, 63, 61, 70, 54, 64, 71, 59, 65, 61, 59, 74, 54, 60, 79, 59, 59, 70, 61, 63, 62, 62, 70, 60, 60, 67, 62, 63, 63, 60, 72, 60, 54, 83, 60, 50, 72, 66, 50, 67, 67, 57, 66, 59, 68, 64, 53, 66, 67, 54, 64, 71, 59, 66, 57, 63, 67, 56, 66, 62, 65, 68, 53, 65, 66, 59, 65, 59, 67, 65, 54, 65, 67, 55, 68, 63, 63, 62, 64, 62, 64, 64, 66, 56, 65, 59, 75, 61, 53, 74, 62, 57, 66, 64, 60, 62, 63, 67, 65, 54, 69, 62, 59, 62, 69, 53, 66, 69, 60, 62, 71, 62, 53, 75, 64, 48, 70, 67, 53, 65, 65, 63, 64, 58, 66, 62, 61, 66, 59, 68, 64, 52, 68, 64, 59, 66, 58, 66, 64, 58, 64, 64, 59, 61, 68, 59, 64, 65, 62, 65, 59, 62, 67, 61, 62, 66, 64, 59, 70, 63, 58, 65, 62, 66, 63, 57, 75, 61, 53, 70, 62, 62, 64, 58, 71, 62, 58, 66, 61, 63,
// tom 1
71, 73, 65, 56, 50, 48, 49, 52, 56, 61, 66, 72, 78, 85, 92, 100, 107, 113, 118, 121, 121, 119, 114, 106, 95, 83, 70, 57, 45, 34, 25, 19, 15, 12, 12, 13, 15, 17, 20, 22, 24, 25, 26, 26, 25, 25, 24, 24, 24, 24, 26, 28, 32, 36, 41, 47, 53, 60, 67, 75, 82, 90, 97, 103, 109, 114, 118, 121, 123, 124, 123, 122, 119, 115, 111, 105, 99, 92, 85, 78, 71, 63, 56, 49, 43, 37, 32, 27, 23, 20, 17, 16, 15, 14, 15, 15, 17, 18, 20, 22, 25, 27, 30, 32, 35, 37, 40, 42, 45, 48, 51, 54, 58, 61, 65, 69, 74, 78, 83, 87, 92, 97, 101, 105, 109, 113, 115, 118, 119, 120, 120, 118, 116, 114, 110, 105, 100, 94, 88, 81, 74, 67, 60, 53, 46, 39, 33, 27, 23, 18, 15, 12, 10, 9, 9, 10, 11, 13, 15, 18, 21, 24, 28, 32, 36, 40, 44, 49, 53, 57, 61, 65, 69, 72, 76, 80, 84, 87, 91, 94, 98, 101, 104, 106, 109, 111, 113, 114, 114, 114, 114, 112, 111, 108, 105, 101, 97, 92, 86, 80, 74, 68, 62, 55, 49, 43, 37, 31, 26, 22, 18, 14, 12, 10, 9, 9, 9, 10, 12, 14, 17, 21, 24, 29, 33, 38, 42, 47, 52, 57, 62, 67, 72, 76, 80, 85, 88, 92, 96, 99, 102, 104, 106, 108, 110, 111, 112, 112, 112, 111, 110, 108, 106, 104, 101, 97, 93, 89, 84, 79, 74, 69, 63, 58, 52, 46, 41, 36, 31, 27, 23, 19, 16, 14, 12, 11, 10, 10, 11, 13, 15, 18, 21, 25, 29, 33, 38, 43, 48, 53, 58, 64, 69, 74, 79, 83, 88, 92, 96, 99, 102, 105, 107, 109, 110, 111, 111, 112, 111, 110, 109, 107, 105, 103, 100, 96, 93, 89, 85, 80, 75, 71, 66, 61, 56, 50, 46, 41, 36, 32, 28, 24, 21, 18, 16, 14, 13, 12, 12, 13, 14, 16, 18, 21, 24, 28, 32, 37, 42, 47, 52, 57, 62, 67, 73, 78, 82, 87, 91, 95, 99, 102, 105, 107, 109, 110, 111, 111, 111, 111, 110, 108, 106, 104, 102, 99, 95, 92, 88, 84, 79, 75, 70, 65, 61, 56, 51, 46, 42, 38, 33, 30, 26, 23, 20, 18, 16, 15, 14, 14, 14, 15, 16, 18, 21, 23, 27, 30, 35, 39, 44, 49, 54, 59, 64, 69, 74, 79, 83, 88, 92, 96, 99, 102, 105, 107, 109, 110, 111, 111, 111, 110, 109, 107, 105, 103, 100, 97, 93, 90, 86, 81, 77, 73, 68, 63, 59, 54, 50, 45, 41, 37, 33, 29, 26, 23, 21, 19, 17, 16, 15, 15, 15, 16, 18, 20, 22, 25, 28, 31, 35, 39, 44, 49, 53, 58, 63, 68, 73, 78, 82, 87, 91, 95, 98, 101, 104, 106, 108, 109, 110, 110, 110, 109, 108, 107, 105, 102, 100, 97, 93, 90, 86, 82, 78, 73, 69, 64, 60, 55, 51, 46, 42, 38, 34, 31, 28, 25, 22, 20, 19, 17, 17, 16, 17, 17, 18, 20, 22, 25, 28, 31, 34, 38, 42, 47, 51, 56, 61, 65, 70, 75, 79, 84, 88, 92, 95, 98, 101, 103, 105, 107, 108, 109, 109, 109, 108, 107, 105, 103, 101, 98, 95, 92, 88, 84, 80, 76, 72, 67, 63, 58, 54, 49, 45, 41, 37, 34, 30, 27, 25, 23, 21, 19, 18, 18, 18, 18, 19, 20, 22, 24, 26, 29, 32, 36, 39, 43, 48, 52, 57, 61, 66, 70, 75, 79, 83, 87, 91, 94, 97, 100, 102, 104, 106, 107, 108, 108, 108, 107, 106, 104, 103, 100, 98, 95, 91, 88, 84, 80, 76, 72, 68, 63, 59, 55, 50, 46, 42, 38, 35, 32, 29, 26, 24, 22, 21, 19, 19, 19, 19, 20, 21, 22, 24, 26, 29, 32, 35, 39, 43, 47, 51, 55, 60, 64, 68, 73, 77, 81, 85, 89, 92, 95, 98, 100, 102, 104, 105, 106, 107, 107, 106, 105, 104, 103, 101, 98, 95, 92, 89, 86, 82, 78, 74, 70, 66, 61, 57, 53, 49, 45, 41, 38, 34, 31, 29, 26, 24, 22, 21, 20, 20, 20, 20, 21, 22, 24, 26, 28, 31, 34, 37, 41, 44, 48, 52, 57, 61, 65, 69, 73, 77, 81, 85, 89, 92, 95, 97, 100, 102, 103, 104, 105, 106, 106, 105, 104, 103, 101, 99, 97, 94, 92, 88, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 42, 38, 35, 32, 29, 27, 25, 23, 22, 21, 21, 21, 21, 22, 23, 25, 27, 29, 31, 34, 37, 41, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 87, 90, 93, 96, 98, 100, 102, 103, 104, 104, 105, 104, 103, 102, 101, 99, 97, 94, 92, 89, 85, 82, 78, 74, 71, 67, 63, 59, 55, 51, 47, 43, 40, 37, 34, 31, 29, 27, 25, 24, 23, 22, 22, 22, 23, 24, 25, 27, 29, 31, 34, 37, 40, 43, 47, 51, 54, 58, 62, 66, 70, 74, 78, 81, 85, 88, 91, 94, 96, 98, 100, 101, 102, 103, 103, 103, 103, 102, 101, 99, 97, 95, 93, 90, 87, 84, 80, 77, 73, 69, 65, 61, 58, 54, 50, 46, 43, 40, 37, 34, 31, 29, 27, 26, 25, 24, 23, 23, 23, 24, 25, 26, 28, 30, 32, 35, 38, 41, 44, 48, 51, 55, 59, 63, 67, 70, 74, 78, 81, 84, 88, 90, 93, 95, 97, 99, 100, 101, 102, 102, 102, 102, 101, 100, 98, 96, 94, 92, 89, 86, 83, 80, 76, 73, 69, 65, 62, 58, 54, 51, 47, 44, 41, 38, 35, 32, 30, 28, 27, 26, 25, 24, 24, 24, 25, 26, 27, 29, 31, 33, 35, 38, 41, 44, 48, 51, 55, 58, 62, 66, 69, 73, 77, 80, 83, 86, 89, 92, 94, 96, 98, 99,
// tom 2
69, 75, 74, 72, 71, 71, 73, 76, 79, 84, 89, 94, 99, 103, 107, 109, 109, 108, 105, 100, 94, 87, 78, 70, 62, 55, 49, 46, 44, 45, 47, 52, 58, 65, 73, 81, 89, 96, 102, 106, 109, 109, 108, 106, 102, 96, 89, 82, 74, 66, 58, 51, 44, 38, 33, 29, 26, 25, 25, 26, 28, 31, 34, 38, 43, 47, 51, 54, 57, 59, 61, 62, 61, 60, 58, 56, 53, 49, 45, 40, 36, 31, 27, 23, 19, 15, 13, 11, 10, 9, 9, 10, 12, 14, 17, 20, 24, 27, 31, 34, 38, 41, 43, 45, 47, 48, 48, 48, 47, 46, 44, 41, 39, 36, 33, 30, 27, 25, 23, 22, 22, 22, 23, 24, 27, 30, 34, 38, 43, 48, 53, 58, 63, 68, 72, 76, 80, 83, 85, 87, 88, 88, 88, 87, 86, 84, 83, 81, 79, 78, 77, 76, 75, 75, 76, 76, 78, 80, 82, 84, 87, 90, 93, 96, 99, 102, 104, 107, 109, 111, 112, 113, 113, 113, 113, 112, 111, 110, 108, 106, 104, 102, 101, 99, 98, 96, 95, 95, 95, 95, 95, 96, 97, 98, 99, 100, 102, 103, 105, 106, 107, 107, 107, 107, 107, 106, 104, 102, 100, 98, 95, 92, 90, 87, 84, 81, 78, 75, 73, 70, 68, 67, 65, 64, 63, 63, 62, 62, 62, 62, 62, 62, 62, 62, 61, 60, 59, 58, 56, 55, 53, 50, 48, 45, 43, 40, 38, 35, 33, 30, 28, 26, 24, 23, 22, 21, 21, 20, 20, 21, 21, 22, 22, 23, 24, 24, 25, 25, 26, 26, 26, 26, 25, 25, 24, 24, 23, 22, 21, 20, 19, 19, 18, 18, 17, 17, 18, 18, 19, 20, 21, 22, 23, 25, 26, 28, 30, 32, 33, 35, 36, 38, 39, 40, 41, 42, 43, 43, 44, 44, 45, 45, 45, 46, 46, 47, 48, 49, 50, 51, 53, 55, 57, 59, 61, 63, 66, 68, 71, 74, 76, 78, 80, 82, 84, 86, 87, 89, 90, 90, 91, 92, 92, 93, 93, 93, 93, 93, 94, 94, 94, 95, 95, 96, 96, 97, 98, 99, 100, 101, 102, 102, 103, 104, 105, 106, 106, 107, 107, 107, 107, 107, 107, 106, 106, 105, 105, 104, 103, 102, 101, 101, 100, 99, 98, 98, 97, 96, 96, 95, 95, 95, 94, 94, 94, 93, 93, 92, 92, 91, 90, 90, 89, 88, 86, 85, 83, 82, 80, 78, 77, 75, 73, 71, 69, 67, 65, 63, 61, 60, 58, 56, 55, 54, 52, 51, 50, 49, 48, 47, 46, 46, 45, 44, 43, 42, 41, 40, 39, 37, 36, 35, 34, 33, 32, 30, 29, 28, 27, 26, 26, 25, 24, 24, 23, 23, 23, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 25, 25, 25, 26, 26, 27, 27, 28, 29, 29, 30, 31, 32, 33, 34, 36, 37, 38, 39, 40, 41, 43, 44, 45, 46, 47, 49, 50, 51, 52, 53, 54, 56, 57, 58, 60, 61, 62, 64, 65, 67, 68, 70, 71, 73, 74, 76, 77, 79, 80, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 93, 94, 95, 95, 96, 96, 97, 97, 98, 98, 98, 99, 99, 100, 100, 101, 101, 101, 102, 102, 102, 102, 103, 103, 103, 103, 103, 103, 102, 102, 102, 102, 101, 101, 100, 100, 99, 98, 98, 97, 96, 96, 95, 94, 94, 93, 92, 91, 91, 90, 89, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 75, 74, 73, 71, 70, 68, 67, 65, 63, 62, 60, 59, 57, 56, 55, 53, 52, 51, 49, 48, 47, 46, 45, 44, 43, 42, 41, 41, 40, 39, 38, 37, 36, 35, 35, 34, 33, 32, 32, 31, 30, 30, 29, 28, 28, 27, 27, 27, 26, 26, 26, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 27, 27, 27, 28, 28, 29, 29, 29, 30, 31, 31, 32, 32, 33, 34, 34, 35, 36, 37, 38, 39, 40, 40, 41, 42, 43, 44, 45, 47, 48, 49, 50, 51, 52, 53, 55, 56, 57, 59, 60, 61, 63, 64, 65, 67, 68, 69, 71, 72, 73, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 88, 89, 90, 91, 91, 92, 93, 93, 94, 94, 95, 95, 96, 96, 97, 97, 97, 98, 98, 98, 99, 99, 99, 99, 99, 99, 100, 100, 100, 99, 99, 99, 99, 99, 99, 98, 98, 98, 97, 97, 96, 96, 95, 95, 94, 93, 93, 92, 92, 91, 90, 90, 89, 88, 87, 87, 86, 85, 84, 83, 83, 82, 81, 80, 79, 78, 77, 76, 74, 73, 72, 71, 69, 68, 67, 65, 64, 63, 61, 60, 59, 58, 56, 55, 54, 53, 51, 50, 49, 48, 47, 46, 45, 45, 44, 43, 42, 41, 40, 40, 39, 38, 37, 37, 36, 35, 35, 34, 33, 33, 32, 32, 31, 31, 30, 30, 30, 29, 29, 29, 29, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 31, 31, 31, 32, 32, 33, 33, 34, 34, 35, 36, 36, 37, 38, 38, 39, 40, 41, 42, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 59, 60, 61, 62, 64, 65, 66, 67, 68, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 83, 84, 85, 86, 86, 87, 88, 88, 89, 90, 90, 91, 91, 92, 92, 93, 93, 94, 94, 94, 95, 95, 95, 96, 96, 96, 96, 96, 96, 97, 97, 97, 97, 96, 96, 96, 96, 96, 96, 95, 95, 95, 94, 94, 94, 93, 93, 92, 92, 91, 91, 90, 90, 89, 89, 88, 87, 87, 86, 85, 85, 84, 83, 82, 82, 81, 80, 79, 78, 77,
// synth 1
63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 62, 62, 62, 61, 62, 64, 69, 69, 69, 69, 68, 67, 67, 67, 69, 72, 75, 77, 78, 65, 57, 58, 52, 52, 52, 55, 59, 62, 63, 62, 58, 53, 48, 45, 45, 49, 54, 60, 64, 65, 62, 56, 50, 44, 42, 44, 56, 105, 96, 107, 102, 98, 90, 84, 80, 80, 86, 94, 102, 108, 80, 54, 57, 46, 40, 38, 40, 47, 54, 61, 64, 62, 56, 48, 40, 36, 36, 42, 50, 58, 64, 65, 62, 55, 46, 40, 37, 40, 88, 100, 107, 108, 108, 101, 94, 86, 81, 81, 86, 95, 104, 102, 53, 69, 51, 48, 39, 37, 38, 44, 53, 60, 64, 62, 56, 48, 40, 35, 35, 40, 48, 57, 64, 66, 63, 56, 47, 40, 37, 53, 104, 91, 108, 109, 108, 103, 95, 87, 82, 81, 85, 94, 103, 73, 61, 64, 57, 47, 41, 36, 37, 43, 51, 59, 64, 63, 57, 49, 41, 35, 34, 38, 47, 56, 63, 66, 63, 57, 49, 41, 38, 83, 89, 99, 103, 110, 109, 104, 96, 88, 82, 81, 84, 92, 93, 50, 73, 60, 59, 49, 41, 36, 36, 42, 50, 58, 63, 63, 58, 50, 42, 36, 34, 37, 45, 54, 62, 66, 64, 58, 50, 42, 50, 97, 81, 99, 103, 109, 110, 105, 98, 89, 83, 81, 84, 91, 69, 54, 68, 64, 58, 51, 42, 37, 36, 40, 48, 57, 63, 64, 59, 52, 43, 36, 34, 36, 44, 53, 61, 66, 65, 59, 51, 43, 75, 88, 86, 93, 103, 108, 109, 106, 99, 90, 84, 81, 83, 86, 45, 65, 62, 67, 59, 52, 43, 37, 36, 39, 47, 56, 62, 64, 60, 53, 44, 37, 34, 36, 42, 51, 60, 65, 65, 60, 53, 49, 94, 77, 89, 91, 101, 107, 109, 106, 100, 92, 84, 81, 82, 73, 37, 66, 62, 66, 61, 53, 45, 38, 36, 39, 46, 54, 61, 64, 61, 55, 46, 38, 34, 35, 41, 50, 59, 65, 65, 61, 54, 63, 98, 76, 87, 91, 99, 106, 109, 107, 101, 93, 85, 81, 81, 54, 43, 60, 65, 65, 62, 54, 46, 39, 36, 38, 45, 53, 60, 64, 62, 56, 48, 40, 35, 35, 40, 49, 58, 64, 66, 62, 55, 81, 92, 81, 84, 91, 98, 105, 109, 107, 102, 94, 86, 81, 79, 38, 50, 55, 66, 65, 63, 56, 47, 40, 37, 38, 44, 52, 60, 64, 63, 57, 49, 41, 36, 35, 39, 48, 56, 63, 66, 63, 58, 96, 85, 85, 82, 90, 96, 104, 108, 108, 103, 95, 87, 82, 74, 28, 54, 52, 65, 65, 63, 57, 49, 42, 37, 38, 43, 51, 59, 63, 63, 58, 51, 43, 37, 35, 39, 46, 55, 63, 66, 64, 63, 104, 81, 86, 81, 88, 95, 103, 108, 108, 103, 96, 88, 82, 68, 25, 53, 52, 63, 66, 64, 58, 50, 43, 38, 38, 42, 50, 58, 63, 63, 59, 52, 44, 38, 36, 38, 45, 54, 62, 66, 64, 68, 108, 81, 86, 81, 87, 94, 101, 107, 108, 104, 97, 89, 83, 62, 25, 51, 51, 61, 66, 64, 59, 52, 44, 39, 38, 42, 49, 57, 62, 64, 60, 53, 46, 39, 36, 38, 44, 53, 61, 65, 65, 73, 109, 82, 86, 81, 85, 92, 100, 106, 107, 104, 98, 90, 83, 58, 27, 49, 51, 60, 65, 65, 61, 53, 45, 40, 38, 41, 48, 56, 62, 64, 61, 55, 47, 40, 37, 38, 43, 52, 60, 65, 65, 76, 109, 83, 86, 81, 84, 91, 98, 104, 107, 104, 98, 91, 84, 57, 27, 47, 50, 59, 65, 65, 61, 54, 47, 41, 38, 41, 47, 55, 61, 64, 62, 56, 48, 41, 37, 38, 43, 51, 59, 64, 65, 77, 110, 84, 86, 81, 83, 89, 96, 103, 106, 104, 99, 92, 85, 58, 27, 46, 49, 58, 64, 65, 62, 56, 48, 42, 39, 40, 46, 54, 60, 64, 62, 57, 50, 43, 38, 38, 42, 50, 58, 64, 65, 76, 110, 84, 87, 80, 82, 88, 95, 102, 105, 104, 100, 92, 85, 62, 26, 46, 47, 57, 64, 65, 63, 57, 49, 43, 39, 40, 45, 52, 59, 63, 63, 58, 51, 44, 39, 38, 41, 48, 56, 63, 65, 73, 111, 85, 88, 80, 81, 86, 93, 100, 104, 104, 100, 93, 86, 66, 25, 47, 45, 56, 63, 65, 64, 58, 51, 44, 40, 40, 44, 51, 58, 63, 63, 59, 52, 45, 40, 38, 41, 47, 55, 62, 65, 72, 111, 86, 89, 80, 81, 85, 92, 99, 104, 104, 101, 94, 87, 69, 25, 46, 44, 55, 62, 65, 64, 59, 52, 45, 40, 39, 43, 50, 58, 63, 63, 60, 53, 46, 40, 38, 40, 46, 54, 61, 65, 70, 110, 87, 90, 80, 81, 84, 91, 98, 103, 104, 101, 95, 88, 72, 26, 46, 42, 54, 61, 65, 65, 60, 53, 46, 41, 39, 43, 49, 56, 62, 64, 61, 55, 47, 41, 38, 39, 45, 53, 60, 65, 69, 110, 89, 91, 80, 81, 83, 90, 97, 103, 105, 102, 96, 89, 75, 27, 45, 41, 53, 59, 65, 65, 61, 54, 47, 41, 39, 42, 48, 55, 61, 64, 61, 56, 48, 42, 38, 39, 44, 52, 59, 65, 68, 109, 92, 91, 81, 81, 82, 89, 96, 102, 105, 103, 97, 90, 78, 28, 44, 40, 52, 58, 64, 65, 62, 55, 48, 42, 40, 41, 47, 54, 61, 64, 62, 57, 50, 43, 39, 39, 43, 51, 58, 64, 67, 106, 93, 91,
// synth 2
63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 64, 63, 62, 63, 63, 63, 63, 62, 64, 65, 63, 62, 61, 62, 66, 65, 63, 58, 55, 65, 71, 68, 65, 62, 61, 62, 63, 62, 63, 62, 61, 64, 63, 63, 63, 62, 63, 64, 63, 60, 62, 65, 65, 64, 62, 63, 64, 63, 62, 65, 65, 62, 61, 63, 64, 62, 62, 63, 66, 65, 60, 61, 63, 64, 64, 62, 63, 63, 65, 66, 62, 59, 61, 64, 62, 63, 66, 64, 64, 60, 59, 64, 67, 64, 61, 63, 64, 62, 62, 65, 65, 62, 61, 64, 64, 62, 61, 64, 64, 62, 64, 64, 61, 52, 58, 69, 74, 71, 65, 61, 61, 61, 61, 63, 64, 62, 61, 63, 63, 65, 62, 59, 62, 67, 64, 63, 64, 62, 65, 64, 61, 60, 61, 63, 61, 65, 67, 65, 63, 60, 61, 65, 64, 59, 61, 65, 67, 62, 63, 64, 61, 60, 63, 69, 66, 60, 56, 62, 68, 67, 62, 56, 61, 64, 64, 65, 67, 67, 60, 59, 61, 63, 64, 63, 62, 64, 66, 66, 60, 61, 63, 63, 65, 67, 63, 60, 60, 63, 54, 49, 62, 77, 77, 72, 67, 62, 60, 59, 61, 63, 62, 60, 63, 63, 64, 64, 63, 61, 62, 64, 63, 63, 64, 65, 63, 59, 60, 63, 67, 67, 66, 60, 59, 64, 63, 60, 62, 66, 69, 67, 64, 60, 56, 57, 61, 61, 64, 71, 69, 64, 60, 63, 66, 61, 61, 60, 62, 65, 63, 62, 64, 62, 60, 62, 66, 66, 64, 63, 64, 65, 63, 59, 54, 58, 68, 71, 67, 62, 64, 62, 63, 62, 60, 54, 46, 58, 71, 78, 78, 72, 65, 59, 59, 63, 60, 62, 67, 65, 60, 55, 56, 60, 65, 70, 69, 63, 58, 59, 65, 66, 62, 64, 64, 62, 60, 64, 64, 65, 64, 61, 63, 66, 62, 61, 62, 63, 61, 63, 64, 62, 63, 66, 63, 60, 65, 66, 63, 63, 61, 61, 61, 63, 67, 67, 63, 61, 57, 62, 66, 64, 65, 63, 60, 62, 67, 70, 66, 61, 58, 60, 61, 60, 64, 66, 62, 60, 62, 62, 50, 46, 58, 74, 84, 85, 75, 65, 60, 57, 58, 62, 62, 60, 57, 61, 64, 65, 63, 60, 59, 63, 64, 64, 68, 66, 58, 58, 58, 62, 67, 67, 64, 67, 68, 63, 60, 61, 59, 57, 64, 69, 66, 60, 62, 68, 64, 62, 62, 60, 62, 64, 61, 58, 62, 70, 69, 63, 64, 61, 61, 63, 58, 56, 61, 64, 67, 70, 69, 66, 65, 60, 54, 53, 61, 67, 67, 67, 64, 65, 65, 63, 61, 60, 48, 37, 50, 71, 78, 80, 82, 76, 67, 65, 66, 64, 58, 54, 53, 54, 59, 68, 71, 69, 60, 57, 56, 56, 60, 61, 67, 77, 76, 69, 60, 55, 53, 53, 58, 65, 69, 69, 68, 65, 62, 63, 59, 54, 61, 65, 67, 72, 71, 60, 53, 59, 66, 66, 64, 62, 60, 60, 65, 69, 66, 62, 64, 65, 58, 53, 58, 66, 70, 68, 61, 57, 59, 62, 68, 71, 69, 64, 61, 61, 62, 62, 60, 59, 49, 33, 38, 61, 83, 92, 89, 82, 73, 60, 56, 58, 62, 59, 55, 58, 62, 67, 67, 65, 62, 56, 56, 62, 64, 65, 65, 62, 61, 66, 67, 65, 66, 60, 54, 54, 55, 66, 75, 73, 66, 62, 64, 59, 56, 59, 65, 66, 64, 65, 65, 61, 59, 61, 60, 59, 62, 68, 75, 73, 67, 60, 55, 60, 62, 58, 56, 60, 65, 68, 72, 70, 64, 62, 63, 63, 57, 52, 54, 64, 72, 71, 66, 64, 63, 44, 28, 42, 68, 86, 93, 88, 78, 70, 63, 56, 54, 58, 65, 66, 61, 57, 61, 62, 58, 56, 67, 71, 66, 59, 52, 52, 60, 66, 75, 79, 74, 61, 53, 54, 58, 59, 60, 62, 67, 69, 65, 60, 60, 67, 71, 70, 63, 59, 56, 54, 55, 61, 66, 66, 65, 63, 65, 68, 70, 67, 63, 62, 61, 63, 60, 56, 55, 59, 65, 70, 67, 64, 68, 68, 66, 64, 59, 56, 57, 62, 66, 65, 57, 47, 34, 36, 58, 82, 95, 94, 86, 76, 63, 56, 59, 63, 64, 61, 62, 60, 55, 53, 56, 61, 67, 70, 66, 62, 64, 68, 69, 63, 56, 52, 58, 67, 65, 60, 62, 67, 60, 54, 54, 61, 70, 72, 68, 66, 66, 63, 60, 63, 65, 58, 58, 61, 63, 63, 64, 65, 66, 64, 64, 64, 65, 62, 65, 67, 65, 60, 59, 62, 62, 62, 62, 64, 67, 67, 67, 65, 59, 53, 53, 60, 65, 65, 63, 54, 37, 36, 50, 71, 91, 98, 92, 78, 70, 67, 63, 59, 59, 58, 56, 58, 62, 65, 64, 58, 52, 54, 60, 65, 66, 66, 64, 66, 66, 67, 64, 59, 57, 58, 63, 61, 56, 56, 58, 67, 75, 71, 69, 72, 69, 68, 69, 64, 55, 49, 48, 50, 57, 63, 69, 69, 70, 72, 70, 67, 60, 58, 59, 64, 60, 59, 66, 68, 66, 64, 61, 57, 55, 59, 64, 72, 75, 67,
// synth 3
63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 62, 62, 62, 62, 63, 63, 64, 65, 65, 66, 66, 66, 65, 65, 64, 63, 62, 61, 60, 59, 59, 59, 59, 60, 61, 63, 64, 65, 66, 67, 67, 67, 66, 66, 65, 64, 63, 62, 61, 61, 60, 60, 61, 61, 62, 62, 63, 63, 63, 63, 63, 63, 62, 62, 61, 61, 61, 61, 62, 62, 63, 64, 65, 66, 67, 67, 67, 67, 66, 65, 63, 62, 61, 59, 59, 58, 58, 59, 59, 61, 62, 63, 65, 66, 66, 67, 67, 66, 66, 65, 64, 63, 63, 62, 62, 62, 62, 62, 63, 63, 63, 63, 63, 64, 65, 65, 66, 66, 66, 65, 64, 64, 63, 63, 62, 62, 62, 63, 63, 63, 63, 63, 63, 62, 62, 61, 60, 59, 59, 59, 59, 60, 62, 64, 66, 69, 70, 72, 72, 72, 71, 69, 67, 63, 59, 56, 52, 49, 48, 47, 49, 51, 55, 60, 66, 72, 77, 81, 83, 83, 82, 78, 73, 67, 61, 54, 49, 45, 42, 42, 44, 47, 53, 59, 65, 71, 76, 80, 82, 82, 80, 77, 72, 66, 61, 55, 51, 48, 46, 46, 48, 51, 56, 61, 66, 71, 74, 77, 79, 78, 76, 73, 68, 63, 58, 53, 50, 48, 47, 49, 52, 56, 61, 66, 71, 76, 79, 80, 80, 78, 75, 70, 65, 59, 53, 49, 45, 44, 45, 47, 51, 56, 62, 68, 74, 78, 81, 83, 83, 81, 77, 72, 65, 59, 52, 46, 42, 40, 40, 43, 47, 53, 60, 67, 74, 80, 84, 87, 88, 87, 84, 79, 73, 66, 58, 51, 45, 41, 38, 38, 39, 43, 48, 54, 61, 68, 74, 80, 84, 87, 88, 87, 84, 79, 74, 67, 59, 52, 46, 41, 39, 38, 39, 42, 47, 53, 59, 66, 73, 79, 84, 87, 89, 88, 86, 81, 75, 67, 59, 52, 45, 40, 37, 37, 39, 42, 48, 54, 62, 69, 76, 82, 87, 89, 89, 87, 82, 76, 68, 60, 52, 46, 41, 38, 37, 38, 42, 47, 54, 61, 69, 76, 82, 86, 89, 89, 87, 83, 76, 69, 61, 53, 46, 41, 38, 37, 38, 42, 47, 53, 61, 68, 75, 81, 86, 89, 89, 87, 83, 77, 70, 62, 54, 47, 42, 38, 37, 38, 41, 46, 53, 60, 68, 75, 81, 85, 88, 89, 87, 83, 78, 70, 62, 54, 47, 42, 39, 37, 38, 41, 46, 52, 59, 67, 74, 80, 85, 88, 89, 87, 84, 78, 71, 63, 55, 48, 43, 39, 37, 38, 41, 46, 52, 59, 66, 73, 80, 85, 88, 89, 88, 84, 78, 71, 64, 56, 49, 43, 39, 37, 38, 41, 45, 51, 58, 66, 73, 79, 84, 87, 89, 88, 84, 79, 72, 64, 56, 49, 43, 39, 38, 38, 40, 45, 51, 58, 65, 72, 79, 84, 87, 89, 88, 85, 79, 73, 65, 57, 50, 44, 40, 38, 38, 40, 45, 50, 57, 64, 72, 78, 83, 87, 88, 88, 85, 80, 73, 65, 58, 50, 44, 40, 38, 38, 40, 44, 50, 56, 64, 71, 78, 83, 87, 88, 88, 85, 80, 74, 66, 58, 51, 45, 41, 38, 38, 40, 44, 49, 56, 63, 70, 77, 82, 86, 88, 88, 85, 81, 74, 67, 59, 52, 45, 41, 38, 38, 40, 43, 49, 55, 62, 70, 76, 82, 86, 88, 88, 86, 81, 75, 67, 60, 52, 46, 41, 39, 38, 40, 43, 48, 55, 62, 69, 76, 81, 86, 88, 88, 86, 81, 75, 68, 60, 53, 47, 42, 39, 38, 40, 43, 48, 54, 61, 69, 75, 81, 85, 88, 88, 86, 82, 76, 69, 61, 54, 47, 42, 39, 38, 39, 43, 48, 54, 61, 68, 75, 81, 85, 88, 88, 86, 82, 76, 69, 62, 54, 48, 43, 40, 38, 40, 43, 47, 53, 60, 67, 74, 80, 85, 87, 88, 86, 83, 77, 70, 62, 55, 48, 43, 40, 39, 39, 42, 47, 53, 60, 67, 74, 80, 84, 87, 88, 86, 83, 77, 71, 63, 56, 49, 44, 40, 39, 39, 42, 47, 52, 59, 66, 73, 79, 84, 87, 88, 87, 83, 78, 71, 64, 56, 49, 44, 40, 39, 39, 42, 46, 52, 59, 66, 72, 79, 83, 87, 88, 87, 83, 78, 72, 64, 57, 50, 44, 41, 39, 39, 42, 46, 51, 58, 65, 72, 78, 83, 86, 88, 87, 84, 79, 72, 65, 57, 50, 45, 41, 39, 39, 41, 45, 51, 57, 64, 71, 78, 83, 86, 87, 87, 84, 79, 73, 65, 58, 51, 45, 41, 39, 39, 41, 45, 50, 57, 64, 71, 77, 82, 86, 87, 87, 84, 79, 73, 66, 59, 52, 46, 42, 39, 39, 41, 45, 50, 56, 63, 70, 76, 82, 85, 87, 87, 84, 80, 74, 67, 59, 52, 46, 42, 40, 39, 41, 44, 50, 56, 63, 70, 76, 81, 85, 87, 87, 85, 80, 74, 67, 60, 53, 47, 42, 40, 39, 41, 44, 49, 55, 62, 69, 75, 81, 85, 87, 87, 85, 81, 75, 68, 60, 53, 47, 43, 40, 39, 41, 44, 49, 55, 61, 68, 75, 80, 84, 87, 87, 85, 81, 75, 68, 61, 54, 48, 43, 40, 39, 40, 43, 48, 54, 61, 68, 74, 80, 84, 86, 87, 85, 81, 76, 69, 62, 54, 48, 43, 40, 39, 40, 43, 48, 54, 60, 67, 74, 79, 84, 86, 87, 85, 82, 76, 69, 62, 55, 49, 44, 41, 39, 40, 43, 48, 53, 60, 67, 73, 79, 83, 86, 87, 85, 82, 77, 70, 63, 55, 49, 44, 41, 39, 40, 43, 47, 53, 59, 66, 73, 79, 83, 86, 87, 85, 82, 77, 70, 63, 56, 50, 44, 41, 40, 40, 43, 47, 52, 59, 66, 72, 78, 83, 86, 87, 86, 82, 77, 71, 64, 57, 50, 45, 41, 40, 40,
// synth 4
63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 62, 62, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 63, 67, 71, 70, 69, 68, 68, 68, 68, 68, 68, 68, 67, 67, 67, 67, 67, 67, 66, 66, 62, 52, 47, 49, 54, 56, 56, 56, 57, 59, 59, 60, 61, 62, 62, 63, 64, 64, 65, 65, 71, 83, 88, 84, 77, 75, 74, 73, 71, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 51, 28, 9, 12, 26, 35, 37, 38, 41, 45, 49, 52, 54, 57, 60, 62, 65, 67, 69, 72, 79, 91, 97, 95, 91, 90, 90, 90, 90, 89, 88, 87, 86, 85, 83, 82, 81, 80, 78, 76, 69, 55, 48, 51, 57, 59, 58, 58, 58, 59, 60, 60, 60, 61, 61, 61, 62, 62, 62, 63, 69, 81, 87, 82, 75, 71, 70, 69, 68, 66, 64, 63, 61, 60, 59, 58, 57, 57, 56, 55, 50, 41, 36, 39, 41, 29, 14, 12, 23, 33, 37, 39, 42, 46, 49, 53, 56, 59, 62, 64, 71, 83, 92, 91, 88, 86, 87, 88, 88, 88, 88, 87, 87, 86, 85, 85, 84, 83, 82, 81, 75, 63, 53, 53, 60, 63, 63, 63, 63, 64, 65, 65, 66, 66, 66, 66, 66, 67, 67, 67, 70, 80, 90, 89, 81, 76, 74, 73, 71, 69, 67, 65, 63, 62, 61, 59, 58, 57, 56, 56, 53, 45, 37, 35, 40, 44, 46, 46, 44, 32, 16, 14, 24, 35, 40, 42, 44, 48, 52, 55, 59, 69, 81, 86, 85, 82, 82, 83, 85, 85, 85, 85, 85, 85, 85, 85, 84, 84, 83, 82, 81, 73, 60, 53, 56, 62, 65, 65, 65, 66, 67, 67, 68, 68, 69, 69, 69, 69, 69, 69, 69, 74, 85, 92, 90, 83, 77, 75, 74, 72, 70, 68, 66, 64, 63, 61, 60, 58, 57, 56, 55, 52, 44, 35, 34, 39, 43, 45, 45, 46, 47, 48, 47, 36, 20, 15, 24, 36, 42, 44, 47, 51, 61, 74, 80, 79, 77, 76, 78, 80, 81, 81, 82, 82, 83, 83, 83, 83, 83, 83, 83, 82, 75, 63, 54, 56, 62, 67, 68, 67, 68, 69, 70, 70, 71, 71, 71, 71, 72, 72, 72, 72, 74, 84, 93, 93, 87, 80, 77, 76, 74, 72, 70, 68, 66, 64, 62, 61, 59, 58, 57, 56, 54, 47, 37, 32, 35, 41, 44, 45, 45, 46, 47, 49, 50, 51, 50, 39, 23, 17, 24, 36, 44, 50, 61, 70, 73, 72, 71, 72, 74, 76, 77, 77, 78, 79, 80, 80, 81, 81, 81, 81, 81, 79, 70, 58, 54, 59, 65, 69, 69, 69, 70, 71, 72, 72, 73, 73, 73, 74, 74, 74, 74, 74, 79, 89, 95, 93, 87, 81, 78, 77, 75, 73, 70, 68, 66, 64, 63, 61, 59, 58, 57, 55, 53, 44, 35, 32, 35, 41, 43, 44, 45, 46, 47, 48, 50, 51, 52, 53, 52, 42, 26, 18, 25, 40, 58, 68, 68, 66, 64, 66, 69, 71, 72, 73, 74, 75, 76, 77, 78, 79, 79, 80, 80, 78, 69, 58, 54, 58, 65, 69, 70, 70, 71, 72, 73, 74, 74, 75, 75, 75, 75, 75, 75, 75, 79, 89, 96, 95, 89, 83, 79, 78, 76, 74, 72, 69, 67, 65, 63, 62, 60, 58, 57, 56, 53, 46, 36, 31, 33, 38, 42, 44, 44, 45, 46, 47, 49, 50, 51, 52, 53, 54, 54, 44, 27, 21, 33, 53, 64, 65, 61, 60, 62, 66, 68, 70, 71, 72, 73, 74, 75, 76, 77, 78, 78, 78, 73, 62, 55, 55, 62, 68, 70, 71, 71, 72, 73, 75, 75, 76, 76, 76, 76, 77, 76, 76, 78, 84, 93, 98, 94, 87, 82, 79, 78, 76, 74, 71, 69, 67, 65, 63, 61, 60, 58, 57, 55, 51, 42, 32, 29, 33, 38, 41, 43, 43, 44, 45, 46, 48, 49, 50, 51, 53, 54, 55, 54, 45, 31, 29, 40, 52, 59, 59, 58, 59, 62, 65, 67, 69, 70, 71, 73, 74, 75, 76, 77, 77, 77, 71, 61, 54, 55, 62, 68, 71, 72, 72, 73, 74, 75, 76, 77, 77, 77, 77, 77, 77, 77, 78, 85, 94, 98, 95, 88, 83, 79, 78, 76, 74, 72, 69, 67, 65, 63, 61, 60, 58, 57, 55, 52, 43, 33, 29, 31, 37, 41, 42, 43, 43, 44, 46, 47, 49, 50, 51, 52, 53, 54, 55, 55, 49, 39, 35, 39, 47, 53, 57, 58, 59, 61, 64, 66, 68, 70, 71, 73, 74, 75, 76, 77, 77, 74, 64, 56, 54, 59, 66, 70, 72, 72, 73, 74, 75, 76, 77, 77, 78, 78, 78, 78, 78, 78, 82, 90, 97, 97, 92, 85, 81, 78, 77, 75, 73, 70, 68, 66, 64, 62, 60, 59, 57, 55, 54, 48, 39, 31, 29, 33, 38, 41, 43, 43, 44, 45, 46, 48, 49, 50, 51, 53, 54, 55, 56, 56, 53, 44, 37, 38, 44, 51, 56, 58, 60, 61, 64, 66, 68, 70, 72, 73, 74, 75, 76, 77, 77, 72, 63, 55, 55, 60, 67, 71, 73, 73, 74, 74, 76, 77, 77, 78, 78, 78, 78, 78, 78, 78, 82, 90, 97, 97, 92, 85, 80, 78, 76, 74, 72, 70, 67, 65, 63, 61, 60,
// synth 5
63, 63, 64, 64, 65, 66, 66, 68, 68, 69, 71, 70, 72, 72, 74, 73, 76, 76, 75, 76, 73, 77, 81, 75, 77, 79, 78, 76, 76, 79, 74, 78, 77, 75, 72, 76, 71, 71, 74, 70, 70, 67, 68, 69, 62, 65, 68, 53, 59, 61, 58, 54, 53, 56, 47, 51, 45, 49, 41, 51, 42, 45, 52, 38, 32, 42, 37, 41, 40, 40, 39, 25, 40, 36, 32, 32, 45, 25, 41, 34, 32, 32, 32, 42, 40, 34, 39, 38, 30, 45, 42, 37, 43, 48, 46, 47, 54, 49, 44, 60, 57, 51, 52, 58, 57, 65, 57, 56, 56, 63, 67, 69, 60, 66, 54, 70, 68, 58, 68, 62, 71, 67, 65, 60, 62, 60, 68, 58, 64, 63, 60, 60, 67, 50, 56, 60, 60, 51, 47, 50, 45, 50, 45, 46, 40, 51, 42, 49, 53, 33, 33, 41, 44, 40, 39, 44, 35, 31, 39, 38, 30, 37, 37, 40, 40, 34, 34, 38, 37, 41, 41, 40, 42, 33, 43, 46, 38, 44, 53, 47, 52, 55, 58, 51, 55, 65, 62, 55, 60, 60, 62, 68, 63, 63, 62, 68, 76, 76, 68, 66, 67, 77, 72, 68, 74, 70, 73, 75, 71, 72, 64, 68, 74, 63, 71, 66, 64, 71, 67, 60, 66, 62, 60, 56, 52, 52, 49, 54, 49, 48, 52, 52, 49, 54, 53, 39, 40, 44, 45, 46, 42, 46, 36, 38, 45, 37, 37, 41, 41, 45, 43, 37, 37, 43, 43, 44, 43, 45, 43, 38, 49, 47, 42, 53, 56, 55, 56, 59, 60, 60, 63, 70, 59, 63, 63, 65, 71, 71, 67, 72, 69, 77, 80, 77, 76, 70, 77, 77, 76, 72, 76, 79, 80, 76, 74, 77, 70, 75, 74, 69, 76, 71, 70, 77, 64, 68, 69, 66, 62, 60, 56, 55, 55, 54, 56, 52, 56, 52, 55, 56, 49, 46, 44, 47, 48, 46, 49, 43, 39, 43, 47, 38, 42, 44, 42, 48, 45, 38, 41, 44, 46, 47, 47, 47, 44, 45, 51, 47, 50, 57, 54, 61, 62, 63, 62, 63, 70, 68, 63, 68, 64, 67, 74, 72, 70, 73, 74, 80, 84, 76, 78, 73, 80, 77, 76, 76, 76, 81, 81, 76, 76, 73, 74, 78, 72, 73, 76, 72, 74, 75, 65, 70, 70, 68, 65, 59, 59, 56, 59, 55, 58, 55, 58, 53, 57, 57, 48, 48, 47, 50, 50, 45, 52, 43, 41, 47, 44, 40, 44, 46, 46, 49, 45, 40, 46, 45, 47, 49, 48, 49, 45, 50, 50, 47, 55, 58, 56, 62, 63, 65, 63, 65, 73, 66, 69, 69, 66, 70, 75, 70, 74, 71, 76, 82, 84, 77, 77, 77, 80, 79, 74, 80, 78, 80, 80, 76, 78, 71, 76, 80, 72, 77, 75, 73, 76, 70, 69, 72, 70, 68, 65, 59, 60, 55, 59, 57, 57, 58, 58, 56, 56, 56, 51, 49, 49, 51, 51, 48, 50, 43, 43, 49, 41, 42, 46, 45, 49, 50, 43, 43, 48, 47, 49, 49, 49, 51, 47, 52, 51, 50, 58, 58, 62, 63, 64, 67, 66, 69, 72, 66, 72, 68, 68, 74, 73, 70, 75, 72, 79, 83, 80, 80, 76, 81, 80, 79, 74, 77, 81, 81, 77, 76, 77, 74, 77, 77, 73, 78, 74, 73, 77, 67, 71, 72, 69, 66, 62, 60, 59, 57, 56, 59, 56, 59, 56, 57, 57, 53, 52, 49, 50, 50, 47, 50, 46, 42, 46, 48, 41, 44, 46, 45, 51, 48, 42, 47, 47, 48, 50, 49, 50, 50, 50, 52, 50, 55, 59, 57, 64, 64, 67, 66, 66, 72, 70, 69, 72, 66, 69, 76, 72, 73, 74, 75, 81, 85, 78, 80, 77, 81, 80, 77, 78, 77, 81, 81, 77, 76, 74, 76, 79, 73, 76, 78, 74, 75, 74, 68, 72, 71, 70, 66, 60, 60, 57, 58, 56, 59, 57, 59, 55, 56, 59, 52, 51, 50, 51, 50, 45, 51, 43, 43, 49, 45, 42, 46, 46, 48, 50, 47, 43, 49, 46, 48, 50, 49, 51, 47, 52, 51, 50, 58, 59, 58, 62, 64, 67, 66, 67, 73, 68, 72, 70, 67, 71, 74, 71, 76, 73, 77, 82, 83, 80, 79, 79, 81, 80, 76, 80, 79, 81, 79, 77, 78, 74, 77, 78, 72, 78, 76, 73, 77, 70, 71, 73, 71, 69, 65, 61, 61, 56, 58, 58, 57, 59, 58, 56, 56, 57, 53, 50, 51, 51, 49, 47, 48, 42, 45, 49, 42, 44, 46, 46, 50, 50, 44, 45, 49, 48, 49, 49, 49, 51, 48, 52, 51, 52, 58, 57, 62, 63, 64, 66, 66, 69, 72, 68, 73, 69, 68, 74, 73, 71, 76, 73, 79, 83, 80, 82, 78, 82, 80, 79, 77, 78, 82, 81, 78, 76, 77, 76, 78, 75, 74, 79, 75, 74, 77, 69, 73, 74, 71, 68, 63, 62, 60, 58, 56, 59, 56, 59, 56, 57, 58, 55, 54, 51, 52, 51, 47, 50, 45, 43, 47, 47, 41, 45, 46, 46, 51, 48, 43, 47, 47, 49, 49, 48, 50, 49, 50, 50, 49, 54, 58, 57, 63, 63, 65, 65, 66, 72, 69, 70, 72, 67, 69, 74, 72, 74, 74, 75, 80, 84, 79, 82, 80, 82, 80, 78, 79, 78, 81, 81, 77, 77, 75, 77, 79, 73, 77, 78, 75, 76, 74, 70, 73, 72, 71, 67, 62, 62, 58, 59, 57, 59, 58, 59, 56, 56, 58, 54, 52, 51, 52, 50, 46, 50, 44, 44, 49, 43, 42, 45, 46, 48, 51, 46, 43, 48, 47, 49, 49, 48, 51, 48, 51, 50, 49, 56, 58, 60, 62, 63, 66, 65, 67, 72, 68, 72, 70, 67, 71, 74, 71, 76, 73, 77, 81, 82, 81, 80, 82, 82, 81, 76, 79, 80, 81, 79, 77, 78, 75, 78, 78, 73, 78, 77, 75, 77, 70, 72, 74, 72, 69, 65, 62, 62, 58, 58, 59, 58,
// synth 6
66, 63, 79, 80, 62, 68, 67, 68, 77, 62, 56, 53, 44, 49, 54, 42, 48, 48, 39, 60, 67, 67, 86, 76, 68, 91, 77, 77, 98, 69, 55, 71, 39, 44, 62, 34, 42, 51, 19, 53, 69, 44, 88, 91, 52, 94, 96, 66, 106, 91, 57, 77, 53, 37, 70, 39, 35, 58, 22, 30, 71, 45, 61, 90, 60, 73, 92, 74, 95, 95, 68, 83, 63, 42, 70, 55, 32, 57, 34, 24, 53, 47, 56, 77, 56, 73, 85, 66, 97, 104, 67, 88, 80, 44, 71, 64, 39, 59, 37, 21, 54, 35, 44, 81, 50, 55, 93, 60, 79, 113, 76, 80, 93, 53, 70, 76, 43, 63, 51, 15, 50, 46, 23, 71, 62, 39, 76, 72, 65, 103, 87, 84, 96, 63, 69, 88, 51, 61, 67, 23, 35, 48, 28, 52, 57, 41, 66, 59, 62, 99, 84, 80, 108, 70, 68, 94, 63, 63, 76, 33, 39, 45, 22, 53, 56, 27, 65, 60, 38, 94, 91, 67, 105, 87, 62, 98, 74, 66, 87, 44, 37, 61, 18, 37, 69, 26, 40, 68, 35, 65, 93, 70, 94, 92, 66, 94, 86, 65, 95, 64, 36, 61, 39, 27, 60, 38, 35, 53, 37, 55, 78, 64, 92, 93, 63, 93, 93, 68, 96, 82, 47, 63, 43, 35, 59, 35, 34, 58, 21, 43, 81, 52, 74, 103, 61, 81, 100, 71, 95, 93, 54, 74, 56, 26, 68, 49, 21, 59, 37, 18, 70, 59, 57, 92, 70, 69, 98, 73, 89, 105, 63, 71, 77, 34, 55, 66, 30, 46, 45, 23, 49, 53, 53, 83, 64, 65, 93, 74, 81, 111, 76, 72, 81, 51, 58, 65, 39, 54, 42, 18, 52, 47, 35, 80, 68, 49, 89, 75, 72, 107, 85, 76, 92, 53, 61, 80, 40, 52, 63, 14, 37, 58, 28, 60, 74, 44, 72, 78, 63, 102, 91, 74, 100, 70, 51, 88, 59, 44, 68, 35, 23, 50, 33, 49, 64, 43, 64, 73, 55, 94, 100, 73, 97, 85, 60, 82, 71, 56, 70, 38, 34, 49, 24, 43, 68, 33, 54, 73, 46, 78, 100, 73, 96, 90, 62, 90, 77, 56, 86, 51, 24, 62, 31, 23, 68, 43, 33, 70, 46, 61, 95, 72, 90, 102, 60, 85, 96, 56, 81, 79, 31, 49, 49, 24, 54, 47, 33, 57, 44, 47, 88, 70, 78, 104, 72, 74, 99, 72, 81, 84, 50, 55, 46, 28, 57, 45, 26, 59, 39, 32, 79, 70, 66, 100, 74, 75, 97, 73, 87, 97, 50, 65, 66, 22, 53, 63, 21, 49, 51, 22, 62, 67, 58, 93, 76, 62, 102, 77, 74, 109, 71, 53, 80, 41, 41, 66, 36, 39, 51, 23, 48, 63, 47, 82, 82, 56, 88, 89, 71, 102, 88, 65, 75, 54, 49, 66, 40, 47, 52, 20, 40, 62, 40, 68, 80, 56, 78, 83, 72, 101, 88, 70, 91, 57, 47, 79, 49, 37, 66, 27, 26, 58, 39, 54, 79, 49, 71, 85, 60, 97, 104, 65, 92, 83, 43, 75, 69, 39, 61, 43, 21, 51, 37, 43, 74, 50, 54, 86, 60, 78, 108, 79, 82, 90, 61, 72, 73, 52, 66, 46, 24, 50, 37, 30, 69, 51, 45, 73, 61, 70, 99, 80, 92, 93, 60, 80, 84, 49, 74, 64, 21, 48, 45, 24, 60, 53, 36, 69, 53, 58, 98, 76, 78, 109, 65, 68, 99, 62, 64, 82, 36, 40, 51, 25, 51, 56, 29, 60, 58, 38, 87, 87, 68, 100, 87, 65, 93, 77, 72, 82, 51, 46, 55, 24, 45, 60, 29, 47, 57, 36, 67, 81, 70, 94, 81, 71, 96, 76, 74, 99, 56, 48, 68, 31, 36, 65, 31, 41, 54, 28, 58, 74, 55, 95, 89, 56, 98, 91, 63, 102, 84, 45, 71, 47, 34, 63, 39, 34, 59, 24, 40, 76, 51, 70, 97, 61, 77, 96, 73, 91, 93, 62, 72, 57, 38, 65, 48, 33, 56, 34, 26, 64, 53, 61, 83, 66, 74, 88, 71, 96, 95, 65, 83, 70, 38, 67, 60, 33, 56, 39, 26, 54, 45, 53, 84, 54, 65, 93, 64, 82, 111, 69, 76, 86, 48, 62, 71, 39, 57, 48, 19, 52, 47, 34, 77, 66, 45, 86, 74, 68, 104, 88, 75, 90, 60, 64, 76, 48, 56, 59, 20, 40, 52, 31, 58, 66, 48, 69, 70, 68, 98, 83, 83, 97, 64, 63, 88, 54, 58, 68, 31, 35, 48, 29, 56, 59, 38, 69, 64, 50, 98, 90, 69, 105, 80, 58, 91, 70, 56, 79, 39, 35, 54, 23, 43, 69, 30, 52, 73, 41, 74, 100, 70, 91, 93, 64, 87, 80, 62, 83, 55, 32, 59, 33, 29, 63, 43, 37, 62, 45, 62, 84, 73, 91, 91, 65, 90, 87, 64, 89, 71, 39, 57, 42, 31, 59, 39, 39, 57, 34, 52, 84, 58, 84, 102, 61, 82, 99, 65, 88, 87, 47, 63, 50, 27, 63, 45, 24, 63, 36, 28, 79, 66, 60, 100, 73, 70, 97, 75, 84, 97, 57, 66, 66, 29, 54, 62, 27, 48, 48, 25, 57, 63, 60, 85, 72, 68, 94, 74, 83, 103, 69, 66, 76, 42, 52, 62, 38, 48, 44, 26, 54, 52, 48, 86, 69, 56, 93, 77, 71, 107, 80, 69, 82, 51, 55, 71, 37, 52, 56, 17, 44, 62, 33, 68, 80, 49, 78, 83, 67, 99, 91, 70, 91, 62, 50, 79, 53, 41, 66, 29, 27, 56, 40, 51, 73, 52, 67, 77, 65, 94, 94, 72, 93, 77, 52, 78, 65, 49, 62, 41, 31, 48, 32, 52, 68, 42, 62, 78, 52, 85, 101, 72, 91, 87, 58, 81, 71, 52, 76, 44, 26, 57, 31, 29, 74, 43, 42, 77, 53, 65, 103, 76, 88, 97, 60, 81, 88, 52, 77, 68, 23, 50, 48, 23, 56, 55, 35, 63, 53, 58, 90, 77, 82, 103, 67, 74, 94, 66, 71, 78,
// clap
63, 65, 73, 66, 63, 73, 43, 44, 64, 71, 50, 74, 68, 68, 84, 93, 88, 84, 67, 41, 35, 39, 38, 39, 46, 49, 67, 76, 93, 97, 101, 103, 88, 75, 60, 49, 50, 27, 8, 8, 33, 52, 59, 62, 86, 74, 67, 82, 85, 91, 85, 83, 86, 83, 70, 54, 42, 33, 40, 44, 48, 49, 52, 57, 63, 63, 67, 72, 79, 88, 80, 63, 60, 65, 72, 55, 53, 58, 53, 59, 57, 56, 47, 60, 71, 80, 76, 72, 64, 59, 49, 51, 50, 56, 69, 72, 70, 69, 88, 79, 59, 49, 43, 44, 48, 54, 68, 71, 68, 72, 69, 69, 67, 67, 66, 60, 54, 56, 66, 61, 65, 63, 51, 58, 66, 68, 77, 75, 70, 65, 66, 63, 59, 53, 59, 61, 54, 58, 56, 58, 56, 58, 59, 66, 65, 69, 67, 66, 69, 66, 66, 67, 65, 63, 60, 57, 53, 54, 53, 52, 56, 62, 73, 73, 77, 78, 76, 73, 70, 61, 56, 59, 56, 55, 57, 56, 60, 60, 59, 63, 67, 67, 59, 62, 65, 67, 65, 62, 66, 67, 60, 58, 59, 59, 58, 63, 68, 69, 67, 68, 68, 68, 64, 63, 60, 60, 61, 60, 62, 61, 64, 62, 62, 58, 55, 59, 60, 61, 64, 66, 64, 66, 68, 70, 66, 64, 63, 63, 59, 58, 58, 62, 64, 65, 66, 68, 64, 61, 60, 61, 61, 63, 65, 65, 65, 66, 65, 64, 64, 63, 66, 59, 44, 42, 38, 34, 46, 56, 99, 99, 83, 56, 50, 48, 54, 64, 74, 71, 67, 87, 94, 99, 68, 46, 50, 44, 48, 60, 54, 47, 67, 83, 79, 73, 72, 62, 43, 63, 54, 57, 56, 63, 60, 63, 67, 72, 67, 69, 88, 95, 86, 62, 44, 22, 31, 19, 47, 82, 89, 99, 88, 58, 51, 58, 61, 73, 56, 56, 50, 65, 62, 47, 42, 54, 55, 56, 78, 88, 86, 90, 86, 81, 73, 75, 69, 66, 74, 58, 38, 26, 33, 41, 48, 60, 57, 62, 69, 67, 65, 74, 69, 72, 80, 84, 71, 60, 54, 45, 45, 52, 50, 58, 64, 71, 69, 75, 68, 69, 74, 69, 68, 72, 70, 68, 51, 51, 42, 50, 61, 70, 73, 78, 64, 62, 61, 66, 65, 69, 75, 67, 67, 59, 59, 59, 58, 53, 53, 48, 60, 61, 72, 60, 63, 71, 71, 61, 63, 61, 57, 56, 59, 60, 56, 54, 57, 57, 70, 80, 83, 80, 78, 78, 73, 69, 61, 55, 51, 47, 50, 53, 57, 66, 67, 64, 64, 57, 57, 59, 53, 61, 69, 74, 75, 80, 72, 64, 58, 60, 59, 62, 62, 63, 58, 60, 60, 64, 64, 61, 56, 61, 65, 64, 65, 67, 61, 57, 63, 65, 65, 67, 68, 70, 74, 71, 61, 59, 58, 59, 60, 57, 61, 66, 67, 69, 66, 63, 64, 63, 58, 59, 57, 54, 57, 58, 61, 67, 69, 70, 69, 70, 68, 65, 67, 68, 65, 64, 63, 63, 63, 60, 59, 57, 57, 59, 59, 58, 60, 64, 64, 64, 68, 68, 68, 66, 64, 63, 63, 63, 64, 65, 65, 65, 65, 63, 62, 60, 27, 52, 54, 44, 54, 44, 55, 67, 92, 92, 73, 93, 73, 76, 92, 83, 71, 66, 82, 54, 28, 33, 42, 30, 50, 79, 94, 96, 86, 82, 71, 31, 35, 36, 44, 38, 34, 52, 63, 58, 64, 75, 76, 93, 115, 105, 88, 87, 74, 57, 42, 45, 44, 45, 60, 55, 48, 40, 44, 50, 64, 64, 67, 65, 47, 49, 64, 78, 76, 75, 78, 80, 80, 69, 64, 62, 58, 70, 74, 79, 74, 71, 75, 49, 37, 29, 32, 32, 36, 42, 64, 78, 88, 85, 86, 95, 88, 82, 68, 51, 46, 50, 66, 61, 56, 60, 57, 67, 49, 40, 47, 59, 53, 60, 62, 79, 76, 80, 79, 71, 73, 63, 70, 62, 57, 63, 50, 55, 50, 62, 48, 48, 50, 49, 48, 57, 78, 109, 106, 97, 74, 54, 51, 41, 41, 56, 62, 81, 77, 52, 76, 79, 84, 83, 70, 67, 25, 15, 40, 55, 70, 65, 77, 76, 55, 50, 52, 53, 55, 56, 77, 79, 85, 76, 76, 75, 99, 84, 52, 28, 13, 22, 50, 34, 51, 60, 65, 56, 73, 94, 75, 76, 101, 101, 71, 74, 77, 82, 58, 39, 28, 44, 50, 54, 58, 54, 31, 69, 63, 70, 96, 89, 75, 75, 67, 71, 69, 65, 69, 74, 56, 56, 60, 31, 28, 10, 22, 29, 48, 82, 101, 99, 102, 86, 107, 98, 73, 62, 52, 56, 42, 48, 40, 30, 36, 70, 61, 70, 79, 73, 76, 68, 46, 52, 46, 52, 75, 93, 89, 92, 56, 62, 71, 61, 59, 58, 75, 80, 53, 39, 40, 56, 47, 35, 45, 80, 87, 95, 81, 70, 76, 83, 60, 44, 15, 16, 23, 53, 68, 92, 104, 85, 97, 87, 94, 92, 53, 53, 54, 55, 50, 37, 24, 38, 32, 51, 74, 65, 65, 64, 85, 85, 89, 80, 70, 75, 88, 72, 52, 43, 43, 44, 44, 44, 46, 76, 117, 115, 93, 93, 93, 93, 82, 40, 28, 34, 14, 18, 37, 45, 50, 67, 72, 80, 83, 82, 85, 72, 53, 41, 44, 54, 62, 77, 89, 92, 82, 69, 66, 53, 49, 55, 56, 64, 78, 93, 74, 59, 54, 68, 64, 52, 36, 24, 17, 24, 37, 55, 69, 94, 86, 102, 102, 95, 61, 58, 76, 78, 71, 60, 52, 43, 34, 60, 60, 47, 37, 53, 66, 73, 75, 89, 82, 88, 91, 75, 31, 19, 18, 25, 62, 85, 88, 92, 102, 82, 71, 66, 52, 38, 30, 37, 36, 60, 69, 92, 96, 61, 38, 39, 34, 36, 67, 84, 97, 106, 80, 78, 90, 97, 80, 47, 26, 36, 56, 50, 63, 66, 58, 58, 30, 43, 51, 55, 70, 81, 81, 64, 63, 68, 84, 74, 70, 67, 73,
// clave
65, 96, 102, 63, 24, 6, 18, 54, 94, 118, 112, 81, 41, 13, 11, 37, 76, 108, 116, 96, 59, 25, 10, 23, 58, 94, 115, 107, 77, 40, 15, 15, 41, 78, 107, 113, 92, 57, 25, 13, 28, 61, 95, 112, 104, 73, 39, 16, 19, 45, 79, 106, 110, 88, 54, 25, 15, 31, 64, 95, 110, 100, 70, 38, 18, 22, 48, 81, 105, 106, 85, 52, 25, 18, 35, 66, 95, 108, 96, 67, 37, 20, 25, 51, 83, 104, 103, 81, 50, 26, 21, 38, 68, 95, 105, 93, 65, 36, 22, 29, 54, 84, 102, 100, 78, 49, 27, 24, 42, 70, 95, 103, 89, 62, 36, 24, 32, 57, 84, 101, 97, 75, 48, 28, 27, 45, 72, 94, 100, 86, 60, 36, 26, 35, 59, 85, 99, 94, 73, 47, 29, 30, 48, 73, 93, 97, 83, 59, 37, 28, 38, 61, 85, 97, 91, 70, 46, 31, 33, 50, 74, 92, 95, 80, 57, 37, 31, 41, 63, 85, 95, 88, 68, 46, 33, 35, 53, 75, 91, 92, 78, 56, 38, 33, 44, 65, 85, 93, 85, 66, 45, 34, 38, 55, 76, 90, 90, 75, 54, 39, 35, 47, 66, 84, 91, 83, 64, 45, 36, 41, 57, 76, 89, 87, 73, 54, 40, 38, 49, 67, 84, 89, 80, 63, 46, 38, 43, 59, 77, 87, 85, 71, 53, 41, 40, 51, 68, 83, 87, 78, 61, 46, 39, 45, 61, 77, 86, 83, 69, 53, 42, 42, 53, 69, 82, 85, 76, 60, 47, 41, 48, 62, 77, 84, 80, 67, 52, 43, 44, 55, 70, 81, 83, 74, 59, 47, 43, 50, 63, 76, 83, 78, 66, 52, 44, 46, 57, 70, 80, 81, 72, 59, 48, 45, 51, 64, 76, 81, 76, 65, 52, 46, 48, 58, 71, 79, 79, 70, 58, 48, 46, 53, 65, 76, 80, 75, 64, 52, 47, 50, 59, 71, 78, 77, 69, 58, 49, 48, 55, 66, 75, 78, 73, 63, 53, 48, 51, 61, 71, 77, 76, 68, 57, 50, 50, 56, 66, 75, 77, 72, 62, 53, 49, 53, 62, 71, 76, 74, 67, 57, 51, 51, 57, 67, 74, 75, 70, 62, 53, 51, 54, 62, 71, 75, 73, 66, 57, 52, 52, 58, 67, 73, 74, 69, 61, 54, 52, 55, 63, 70, 74, 72, 65, 57, 53, 54, 59, 67, 73, 73, 68, 61, 54, 53, 57, 64, 70, 73, 71, 64, 57, 53, 55, 60, 67, 72, 72, 67, 60, 55, 54, 58, 64, 70, 72, 70, 64, 57, 54, 56, 61, 67, 71, 71, 66, 60, 56, 55, 58, 64, 70, 71, 69, 63, 58, 55, 57, 62, 67, 71, 70, 66, 60, 56, 56, 59, 65, 69, 70, 68, 63, 58, 56, 58, 62, 67, 70, 69, 65, 60, 57, 57, 60, 65, 69, 70, 67, 62, 58, 57, 58, 63, 67, 69, 68, 65, 60, 57, 57, 61, 65, 68, 69, 66, 62, 58, 57, 59, 63, 67, 69, 68, 64, 60, 58, 58, 61, 65, 68, 68, 66, 62, 59, 58, 60, 63, 67, 68, 67, 64, 60, 58, 59, 62, 65, 68, 68, 65, 62, 59, 58, 60, 64, 67, 68, 66, 63, 60, 59, 59, 62, 65, 67, 68, 65, 62, 59, 59, 61, 64, 66, 67, 66, 63, 60, 59, 60, 62, 65, 67, 67, 64, 62, 59, 59, 61, 64, 66, 67, 66, 63, 60, 59, 60, 63, 65, 67, 66, 64, 62, 60, 60, 61, 64, 66, 67, 65, 63, 60, 60, 61, 63, 65, 66, 66, 64, 61, 60, 60, 62, 64, 66, 66, 65, 63, 61, 60, 61, 63, 65, 66, 66, 64, 61, 60, 60, 62, 64, 66, 66, 65, 62, 61, 60, 61, 63, 65, 66, 65, 63, 61, 60, 61, 62, 64, 66, 66, 64, 62, 61, 60, 61, 63, 65, 66, 65, 63, 61, 60, 61, 62, 64, 65, 65, 64, 62, 61, 61, 62, 63, 65, 65, 65, 63, 61, 61, 61, 63, 64, 65, 65, 64, 62, 61, 61, 62, 64, 65, 65, 65, 63, 61, 61, 61, 63, 64, 65, 65, 64, 62, 61, 61, 62, 64, 65, 65, 64, 63, 61, 61, 62, 63, 64, 65, 65, 64, 62, 61, 61, 62, 64, 65, 65, 64, 63, 62, 61, 62, 63, 64, 65, 64, 63, 62, 61, 62, 63, 64, 65, 65, 64, 63, 62, 62, 62, 63, 64, 64, 64, 63, 63, 62, 62, 63, 63, 64, 64, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63,
// cow bell
101, 88, 82, 79, 74, 67, 59, 54, 52, 52, 52, 51, 52, 53, 28, 34, 38, 43, 49, 57, 43, 43, 48, 52, 59, 67, 75, 90, 102, 99, 97, 93, 88, 81, 74, 69, 66, 65, 64, 63, 61, 65, 58, 57, 57, 56, 54, 54, 54, 55, 56, 56, 57, 58, 58, 96, 87, 80, 76, 72, 67, 31, 32, 33, 36, 41, 48, 56, 63, 35, 45, 51, 55, 60, 66, 71, 74, 75, 75, 76, 78, 84, 103, 109, 104, 98, 90, 79, 66, 55, 50, 49, 48, 46, 44, 43, 31, 27, 31, 33, 37, 46, 24, 37, 43, 47, 54, 64, 74, 79, 106, 102, 98, 95, 91, 85, 77, 71, 68, 66, 64, 64, 79, 89, 49, 55, 54, 51, 47, 48, 50, 54, 56, 56, 56, 57, 58, 60, 93, 85, 79, 75, 71, 30, 34, 36, 38, 44, 52, 59, 62, 55, 41, 48, 52, 56, 61, 66, 71, 74, 75, 74, 75, 97, 98, 109, 107, 100, 90, 79, 68, 59, 53, 49, 48, 47, 45, 45, 46, 21, 28, 33, 35, 36, 22, 34, 43, 50, 57, 65, 74, 78, 78, 106, 99, 96, 94, 89, 81, 73, 69, 67, 65, 62, 92, 84, 77, 50, 51, 45, 41, 41, 46, 51, 54, 55, 55, 57, 59, 63, 80, 89, 84, 78, 62, 40, 39, 39, 42, 48, 55, 60, 63, 63, 38, 43, 50, 54, 58, 62, 67, 71, 74, 76, 74, 101, 94, 89, 109, 100, 89, 79, 71, 63, 57, 51, 48, 47, 47, 48, 48, 50, 26, 33, 36, 24, 26, 35, 45, 56, 65, 72, 77, 80, 84, 91, 100, 94, 89, 84, 76, 68, 62, 62, 63, 64, 85, 71, 63, 41, 44, 48, 49, 52, 58, 63, 65, 63, 62, 63, 65, 66, 64, 92, 73, 65, 35, 49, 52, 54, 58, 65, 69, 69, 68, 66, 68, 38, 59, 65, 66, 67, 69, 71, 72, 71, 74, 86, 70, 63, 61, 80, 60, 54, 53, 53, 52, 52, 53, 56, 60, 62, 62, 60, 50, 47, 62, 37, 61, 69, 73, 76, 78, 77, 74, 71, 70, 69, 87, 74, 64, 60, 58, 56, 55, 55, 58, 71, 76, 64, 59, 58, 31, 48, 55, 58, 62, 66, 69, 69, 67, 66, 66, 66, 65, 62, 89, 70, 36, 56, 59, 58, 60, 64, 68, 69, 67, 65, 64, 61, 41, 58, 63, 65, 68, 71, 72, 70, 85, 80, 69, 64, 61, 68, 70, 57, 54, 54, 53, 52, 52, 54, 58, 61, 61, 61, 60, 40, 49, 35, 59, 67, 73, 78, 81, 81, 77, 73, 70, 68, 67, 90, 72, 63, 61, 59, 56, 54, 54, 76, 71, 63, 59, 56, 53, 28, 46, 54, 59, 64, 68, 70, 70, 69, 67, 67, 66, 66, 69, 81, 47, 57, 61, 61, 61, 64, 66, 67, 66, 64, 63, 63, 51, 45, 57, 62, 66, 70, 72, 72, 93, 80, 70, 65, 61, 56, 72, 66, 58, 57, 56, 54, 52, 53, 56, 59, 60, 61, 60, 61, 32, 35, 55, 64, 70, 76, 81, 82, 79, 74, 71, 69, 69, 69, 87, 72, 64, 61, 59, 56, 54, 77, 66, 61, 58, 54, 50, 42, 31, 47, 55, 60, 65, 69, 72, 72, 70, 68, 67, 67, 66, 65, 63, 63, 63, 64, 65, 65, 65, 65, 64, 64, 63, 63, 63, 42, 48, 57, 62, 66, 70, 75, 95, 81, 71, 66, 61, 57, 54, 76, 67, 61, 58, 56, 53, 52, 54, 56, 58, 59, 59, 60, 41, 28, 48, 59, 67, 75, 81, 84, 82, 77, 74, 71, 70, 69, 75, 83, 71, 65, 62, 59, 60, 74, 63, 58, 56, 53, 49, 48, 35, 36, 49, 56, 60, 65, 70, 73, 73, 71, 68, 67, 67, 45, 71, 73, 69, 69, 70, 69, 66, 63, 62, 62, 63, 63, 61, 60, 38, 48, 57, 62, 67, 81, 93, 83, 74, 67, 61, 56, 54, 59, 77, 68, 62, 58, 55, 53, 52, 53, 55, 56, 57, 57, 37, 37, 37, 53, 64, 73, 80, 84, 84, 81, 77, 74, 72, 70, 67, 82, 81, 71, 66, 62, 72, 72, 61, 56, 53, 50, 47, 46, 48, 31, 40, 50, 56, 62, 68, 73, 74, 73, 70, 68, 64, 45, 56, 83, 77, 74, 74, 73, 69, 63, 60, 60, 61, 62, 60, 59, 52, 39, 51, 58, 62, 85, 88, 82, 76, 69, 62, 56, 54, 55, 70, 77, 67, 62, 59, 56, 54, 52, 53, 54, 56, 50, 36, 47, 37, 45, 60, 71, 78, 82, 84, 83, 80, 77, 74, 71, 69, 67, 86, 79, 71, 66, 81, 71, 60, 54, 50, 47, 45, 45, 47, 47, 33, 43, 52, 58, 64, 70, 73, 74, 72, 70, 58, 49, 57, 72, 86, 82, 79, 77, 72, 66, 60, 59, 59, 60, 60, 58, 58, 44, 43, 53, 61, 85, 82, 79, 75, 70, 62, 57, 55, 56, 58, 78, 75, 67, 63, 61, 57, 53, 52, 52, 55, 42, 40, 48, 54, 41, 54, 67, 74, 78, 80, 81, 80, 78, 75, 71, 69, 68, 72, 86, 77, 74, 85, 73, 61, 53, 48, 45, 43, 44, 47, 50, 42, 37, 47, 55, 61, 67, 71, 73, 73, 71, 52, 53, 60, 64, 84, 89, 84, 80, 75, 68, 62, 59, 58, 58, 59, 58, 58, 58, 41, 47, 63, 80, 76, 74, 72, 68, 63, 58, 56, 58, 59, 63, 80, 73, 68, 64, 61, 57, 53, 52, 53, 36, 42, 50, 56, 55, 49, 62, 70, 73, 75, 78, 79, 78, 75, 72, 69, 68, 67, 79, 83, 86, 86, 74, 63, 54, 47, 43, 42, 44, 47, 50, 52, 38, 42, 51, 58, 63, 68, 71, 72, 69, 51, 56, 62, 67, 72, 92, 89, 83, 77, 71, 65, 60, 58, 57, 57, 57, 58, 58, 55, 42, 64, 72, 70, 69, 68, 66, 62, 59, 58, 59, 60, 61, 70, 79, 72, 68, 64, 60, 56, 53, 48,
// maracas
63, 63, 63, 63, 63, 63, 64, 63, 63, 63, 64, 61, 65, 62, 65, 63, 63, 65, 59, 66, 62, 63, 63, 63, 62, 61, 61, 63, 60, 64, 68, 58, 67, 61, 63, 63, 63, 64, 62, 63, 63, 64, 60, 65, 62, 63, 64, 57, 67, 62, 63, 72, 68, 58, 68, 60, 64, 63, 63, 72, 51, 74, 60, 64, 56, 67, 62, 63, 63, 63, 63, 71, 60, 67, 60, 72, 46, 81, 63, 50, 71, 59, 65, 62, 65, 69, 58, 46, 79, 56, 66, 62, 63, 63, 63, 63, 77, 53, 64, 64, 66, 66, 53, 67, 58, 66, 69, 44, 82, 58, 64, 63, 63, 73, 57, 74, 62, 62, 64, 62, 63, 64, 52, 76, 59, 64, 63, 61, 60, 36, 89, 53, 54, 56, 54, 81, 42, 85, 57, 64, 63, 63, 63, 63, 62, 63, 63, 63, 63, 62, 71, 46, 81, 60, 65, 62, 55, 51, 85, 63, 65, 74, 56, 69, 60, 65, 62, 63, 63, 63, 63, 54, 60, 65, 62, 40, 90, 53, 68, 56, 56, 68, 70, 60, 78, 30, 88, 49, 53, 84, 61, 67, 63, 62, 63, 84, 47, 71, 66, 60, 65, 62, 64, 63, 77, 51, 56, 65, 61, 46, 63, 68, 62, 62, 63, 62, 63, 78, 53, 71, 62, 62, 64, 63, 64, 66, 49, 49, 79, 47, 68, 61, 64, 64, 65, 64, 61, 56, 37, 89, 51, 68, 61, 64, 63, 66, 26, 88, 55, 64, 64, 65, 69, 59, 64, 93, 23, 73, 53, 68, 61, 61, 60, 70, 62, 63, 63, 63, 51, 75, 61, 63, 64, 62, 63, 62, 84, 48, 61, 60, 50, 87, 35, 72, 60, 72, 56, 60, 54, 76, 71, 24, 99, 45, 81, 49, 64, 54, 75, 41, 75, 58, 64, 63, 63, 63, 63, 63, 63, 67, 51, 74, 62, 51, 55, 62, 68, 64, 63, 50, 61, 61, 65, 72, 57, 67, 60, 64, 63, 63, 64, 54, 59, 71, 57, 66, 61, 64, 34, 88, 55, 65, 62, 87, 32, 98, 52, 66, 62, 63, 63, 63, 66, 40, 83, 46, 55, 96, 55, 79, 63, 63, 85, 47, 81, 58, 49, 54, 100, 49, 82, 77, 59, 65, 84, 33, 77, 51, 74, 59, 64, 63, 61, 64, 56, 62, 73, 41, 79, 40, 77, 58, 65, 62, 64, 30, 83, 56, 65, 62, 63, 64, 50, 72, 69, 48, 112, 14, 99, 66, 33, 92, 50, 70, 59, 64, 55, 75, 63, 61, 55, 65, 67, 62, 51, 69, 61, 64, 63, 63, 87, 43, 63, 69, 78, 25, 74, 69, 36, 41, 76, 59, 64, 63, 63, 63, 63, 63, 63, 63, 82, 58, 71, 56, 76, 65, 66, 61, 67, 63, 63, 33, 94, 49, 89, 73, 57, 72, 58, 65, 61, 62, 71, 45, 72, 65, 59, 59, 64, 63, 62, 66, 68, 63, 62, 64, 63, 63, 62, 56, 60, 40, 95, 52, 66, 62, 63, 63, 62, 63, 68, 56, 67, 63, 74, 60, 67, 66, 63, 62, 72, 57, 71, 55, 68, 61, 64, 62, 76, 65, 72, 59, 64, 48, 47, 87, 32, 80, 56, 65, 70, 62, 67, 63, 62, 64, 62, 63, 59, 65, 63, 63, 74, 55, 67, 62, 68, 65, 55, 68, 61, 64, 63, 63, 56, 66, 61, 63, 64, 62, 63, 63, 67, 51, 70, 60, 64, 62, 66, 62, 64, 62, 64, 64, 57, 67, 66, 58, 67, 61, 63, 63, 63, 63, 63, 63, 63, 63, 63, 66, 56, 71, 57, 70, 62, 62, 63, 63, 63, 68, 59, 65, 59, 66, 62, 64, 63, 67, 63, 64, 62, 63, 63, 64, 66, 63, 64, 62, 62, 65, 63, 62, 64, 62, 63, 66, 61, 61, 65, 60, 64, 62, 63, 60, 64, 63, 64, 61, 61, 63, 63, 63, 63, 63, 63, 63, 64, 60, 66, 62, 63, 63, 64, 62, 64, 63, 63, 64, 63, 63, 64, 63, 62, 64, 63, 63, 63, 63, 64, 62, 63, 63, 64, 62, 63, 62, 64, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63,

};

/* empty pattern

// ch 1 sample // ch 2 sample // ch3 note // ch 3 timbre

// pattern x
0, 0, 0, 0, // step 0
0, 0, 0, 0, // step 1
0, 0, 0, 0, // step 2
0, 0, 0, 0, // step 3
0, 0, 0, 0, // step 4
0, 0, 0, 0, // step 5
0, 0, 0, 0, // step 6
0, 0, 0, 0, // step 7
0, 0, 0, 0, // step 8
0, 0, 0, 0, // step 9
0, 0, 0, 0, // step A
0, 0, 0, 0, // step B
0, 0, 0, 0, // step C
0, 0, 0, 0, // step D
0, 0, 0, 0, // step E
0, 0, 0, 0, // step F

*/
prog_uchar song_1_pattern_order[] PROGMEM = { 0, 1, 0, 1, 2, 3, 2, 3, 4, 5, 4, 6, 4, 5, 4, 6, 4, 5, 4, 6, 4, 5, 4, 6, 7, 8, 7, 8, 7, 8, 7, 8, 9, 10, 9, 14, 9, 10, 9, 15, 4, 5, 4, 6, 7, 8, 7, 8, 9, 10, 11, 12, 9, 10, 11, 13,9, 10, 11, 12, 9, 10, 11, 13, 4, 5, 4, 6, 4, 5, 4, 6 };

byte song_1_patterns_total = 72;
byte song_1_time = 105;

prog_uchar song_2_pattern_order[] PROGMEM = { 0, 1, 0, 1, 16, 18, 16, 19, 16, 18, 16, 19, 20, 20, 21, 21, 20, 20, 21, 22, 24, 25, 26, 27, 20, 21, 22, 23, 20, 21, 22, 23, 20, 21, 22, 23 };

byte song_2_patterns_total = 32;
byte song_2_time = 135;


byte current_pattern;

prog_uchar patterns[] PROGMEM = {
// pattern 0
1, 0, 0, 0, // step 0
0, 0, 0, 0, // step 1
0, 0, 0, 0, // step 2
0, 0, 0, 0, // step 3
1, 0, 0, 0, // step 4
0, 0, 0, 0, // step 5
0, 0, 0, 0, // step 6
0, 0, 0, 0, // step 7
1, 0, 0, 0, // step 8
0, 0, 0, 0, // step 9
0, 0, 0, 0, // step A
0, 0, 0, 0, // step B
1, 0, 0, 0, // step C
0, 0, 0, 0, // step D
5, 0, 0, 0, // step E
0, 0, 0, 0, // step F

// pattern 1
1, 0, 0, 0, // step 0
0, 0, 0, 0, // step 1
0, 0, 0, 0, // step 2
0, 0, 0, 0, // step 3
1, 0, 0, 0, // step 4
0, 0, 0, 0, // step 5
0, 0, 0, 0, // step 6
0, 0, 0, 0, // step 7
1, 0, 0, 0, // step 8
0, 0, 0, 0, // step 9
0, 0, 0, 0, // step A
0, 0, 0, 0, // step B
1, 0, 0, 0, // step C
0, 0, 0, 0, // step D
4, 0, 0, 0, // step E
5, 0, 0, 0, // step F

// pattern 2
1, 0, 0, 0, // step 0
0, 0, 0, 0, // step 1
0, 0, 0, 0, // step 2
0, 0, 0, 0, // step 3
1, 2, 0, 0, // step 4
0, 0, 0, 0, // step 5
0, 0, 0, 0, // step 6
0, 0, 0, 0, // step 7
1, 0, 0, 0, // step 8
0, 0, 0, 0, // step 9
0, 0, 0, 0, // step A
0, 0, 0, 0, // step B
1, 2, 0, 0, // step C
0, 3, 0, 0, // step D
5, 0, 0, 0, // step E
0, 0, 0, 0, // step F

// pattern 3
1, 0, 0, 0, // step 0
0, 0, 0, 0, // step 1
0, 0, 0, 0, // step 2
0, 0, 0, 0, // step 3
1, 2, 0, 0, // step 4
0, 0, 0, 0, // step 5
0, 0, 0, 0, // step 6
0, 0, 0, 0, // step 7
1, 0, 0, 0, // step 8
0, 0, 0, 0, // step 9
0, 0, 0, 0, // step A
0, 0, 0, 0, // step B
1, 2, 0, 0, // step C
0, 0, 0, 0, // step D
4, 0, 0, 0, // step E
5, 0, 0, 0, // step F

// pattern 4
1, 0, 0, 0, // step 0
0, 0, 0, 0, // step 1
0, 0, 33, 64, // step 2
0, 0, 33, 10, // step 3
1, 2, 0, 0, // step 4
0, 0, 0, 0, // step 5
0, 0, 33, 64, // step 6
0, 0, 33, 10, // step 7
1, 0, 0, 0, // step 8
0, 0, 0, 0, // step 9
0, 0, 33, 64, // step A
0, 0, 33, 10, // step B
1, 2, 0, 0, // step C
0, 0, 0, 0, // step D
5, 3, 40, 64, // step E
0, 14, 40, 10, // step F

// pattern 5
1, 0, 0, 0, // step 0
0, 0, 0, 0, // step 1
0, 0, 40, 64, // step 2
0, 0, 40, 10, // step 3
1, 2, 0, 0, // step 4
0, 0, 0, 0, // step 5
0, 0, 40, 64, // step 6
0, 0, 40, 10, // step 7
1, 0, 0, 0, // step 8
0, 0, 0, 0, // step 9
0, 0, 40, 64, // step A
0, 0, 40, 10, // step B
1, 2, 0, 0, // step C
0, 0, 36, 10, // step D
4, 2, 44, 64, // step E
5, 2, 36, 10, // step F

// pattern 6
1, 0, 0, 0, // step 0
0, 0, 0, 0, // step 1
0, 0, 40, 64, // step 2
0, 0, 40, 10, // step 3
1, 2, 0, 0, // step 4
0, 0, 0, 0, // step 5
0, 0, 40, 64, // step 6
0, 0, 40, 10, // step 7
1, 0, 0, 0, // step 8
0, 0, 0, 0, // step 9
0, 0, 40, 10, // step A
0, 0, 40, 20, // step B
0, 0, 40, 30, // step C
0, 0, 36, 10, // step D
0, 0, 44, 64, // step E
0, 0, 36, 10, // step F




// pattern 7
1, 0, 60, 10, // step 0
0, 0, 57, 10, // step 1
0, 0, 29, 60, // step 2
0, 0, 29, 10, // step 0
1, 2, 0, 0, // step 4
0, 0, 0, 0, // step 5
0, 0, 29, 64, // step 6
0, 0, 30, 10, // step 7
1, 0, 0, 0, // step 8
0, 0, 0, 0, // step 9
0, 0, 30, 64, // step A
0, 0, 30, 10, // step B
1, 2, 0, 0, // step C
0, 0, 0, 0, // step D
5, 0, 40, 64, // step E
0, 14, 40, 10, // step F

// pattern 8
1, 0, 0, 0, // step 0
0, 0, 0, 0, // step 1
0, 0, 40, 64, // step 2
0, 0, 47, 10, // step 0
1, 2, 0, 0, // step 4
0, 0, 0, 0, // step 5
0, 0, 40, 64, // step 6
0, 0, 47, 10, // step 7
1, 0, 0, 0, // step 8
0, 0, 0, 0, // step 9
0, 0, 40, 64, // step A
0, 0, 47, 10, // step B
1, 2, 0, 0, // step C
0, 0, 29, 10, // step D
4, 2, 29, 64, // step E
5, 2, 29, 10, // step F

// pattern 9
1, 0, 60, 100, // step 0
0, 0, 57, 100, // step 1
0, 0, 29, 60, // step 2
0, 0, 29, 10, // step 0
1, 2, 72, 10, // step 4
0, 0, 72, 40, // step 5
0, 0, 29, 64, // step 6
0, 0, 30, 10, // step 7
1, 0, 72, 40, // step 8
0, 0, 72, 40, // step 9
0, 0, 30, 64, // step A
0, 0, 30, 10, // step B
1, 2, 45, 5, // step C
0, 0, 0, 0, // step D
5, 0, 45, 64, // step E
0, 14, 47, 10, // step F

// pattern 10
1, 0, 0, 0, // step 0
0, 0, 0, 0, // step 1
0, 0, 40, 64, // step 2
0, 0, 47, 10, // step 0
1, 2, 72, 20, // step 4
0, 0, 74, 20, // step 5
0, 0, 40, 64, // step 6
0, 0, 47, 10, // step 7
1, 0, 74, 20, // step 8
0, 0, 74, 30, // step 9
0, 0, 40, 64, // step A
0, 0, 47, 10, // step B
1, 2, 74, 50, // step C
0, 0, 29, 10, // step D
4, 2, 29, 64, // step E
5, 2, 29, 10, // step F

// pattern 11
1, 0, 60, 100, // step 0
0, 0, 57, 100, // step 1
0, 0, 29, 60, // step 2
0, 0, 29, 10, // step 0
1, 2, 76, 60, // step 4
0, 0, 76, 100, // step 5
0, 0, 29, 64, // step 6
0, 0, 00, 10, // step 7
1, 0, 76, 60, // step 8
0, 0, 76, 100, // step 9
0, 0, 30, 64, // step A
0, 0, 30, 10, // step B
1, 2, 45, 5, // step C
0, 0, 76, 100, // step D
5, 0, 45, 64, // step E
0, 14, 47, 10, // step F

// pattern 12
1, 0, 79, 10, // step 0
0, 0, 79, 20, // step 1
0, 0, 40, 64, // step 2
0, 0, 47, 10, // step 0
1, 2, 79, 30, // step 4
0, 0, 79, 40, // step 5
0, 0, 40, 64, // step 6
0, 0, 47, 10, // step 7
1, 0, 79, 50, // step 8
0, 0, 79, 60, // step 9
0, 0, 40, 64, // step A
0, 0, 47, 10, // step B
1, 2, 79, 60, // step C
0, 0, 29, 10, // step D
4, 2, 79, 64, // step E
5, 2, 69, 10, // step F

// pattern 13
1, 0, 79, 10, // step 0
0, 0, 79, 20, // step 1
0, 0, 40, 64, // step 2
0, 0, 47, 10, // step 0
1, 2, 79, 30, // step 4
0, 0, 79, 40, // step 5
0, 0, 40, 64, // step 6
0, 0, 47, 10, // step 7
0, 0, 79, 50, // step 8
0, 0, 79, 60, // step 9
0, 0, 40, 64, // step A
0, 0, 47, 10, // step B
0, 0, 79, 60, // step C
0, 0, 29, 10, // step D
0, 0, 79, 64, // step E
0, 0, 69, 10, // step F

// pattern 14
1, 0, 0, 0, // step 0
0, 0, 0, 0, // step 1
0, 0, 40, 64, // step 2
0, 0, 47, 10, // step 0
1, 2, 88, 20, // step 4
0, 0, 76, 20, // step 5
0, 0, 40, 64, // step 6
0, 0, 47, 10, // step 7
1, 0, 76, 20, // step 8
0, 0, 76, 30, // step 9
0, 0, 40, 64, // step A
0, 0, 47, 10, // step B
1, 2, 76, 40, // step C
0, 0, 76, 30, // step D
4, 2, 76, 20, // step E
5, 2, 76, 10, // step F

// pattern 15
1, 0, 0, 0, // step 0
0, 0, 40, 10, // step 1
0, 0, 52, 64, // step 2
0, 0, 76, 10, // step 0
0, 0, 76, 20, // step 4
0, 0, 74, 20, // step 5
0, 0, 40, 64, // step 6
0, 0, 47, 10, // step 7
0, 0, 76, 20, // step 8
0, 0, 76, 30, // step 9
0, 0, 40, 64, // step A
4, 0, 59, 10, // step B
0, 2, 76, 40, // step C
5, 2, 88, 30, // step D
0, 2, 76, 20, // step E
5, 2, 88, 10, // step F

// pattern 16
1, 0, 0, 0, // step 0
0, 0, 0, 0, // step 1
0, 0, 0, 0, // step 2
1, 0, 0, 0, // step 3
0, 0, 0, 0, // step 4
0, 0, 0, 0, // step 5
1, 0, 0, 0, // step 6
0, 0, 0, 0, // step 7
2, 0, 0, 0, // step 8
0, 0, 0, 0, // step 9
0, 0, 0, 0, // step A
0, 0, 0, 0, // step B
2, 0, 0, 0, // step C
0, 0, 0, 0, // step D
0, 0, 0, 0, // step E
5, 0, 0, 0, // step F

// pattern 17
1, 0, 0, 0, // step 0
0, 0, 0, 0, // step 1
0, 0, 0, 0, // step 2
1, 0, 0, 0, // step 3
0, 0, 0, 0, // step 4
0, 0, 0, 0, // step 5
1, 0, 0, 0, // step 6
0, 0, 0, 0, // step 7
2, 0, 0, 0, // step 8
0, 0, 0, 0, // step 9
0, 0, 0, 0, // step A
0, 0, 0, 0, // step B
2, 0, 0, 0, // step C
0, 0, 0, 0, // step D
0, 0, 0, 0, // step E
5, 0, 0, 0, // step F

// pattern 18
1, 0, 0, 0, // step 0
0, 0, 0, 0, // step 1
0, 0, 0, 0, // step 2
1, 0, 0, 0, // step 3
0, 0, 0, 0, // step 4
0, 0, 0, 0, // step 5
1, 0, 0, 0, // step 6
0, 0, 0, 0, // step 7
2, 0, 0, 0, // step 8
0, 0, 0, 0, // step 9
2, 0, 0, 0, // step A
0, 0, 0, 0, // step B
2, 0, 0, 0, // step C
0, 0, 0, 0, // step D
4, 0, 0, 0, // step E
5, 0, 0, 0, // step F

// pattern 19
1, 0, 0, 0, // step 0
0, 0, 0, 0, // step 1
0, 0, 0, 0, // step 2
1, 0, 0, 0, // step 3
0, 0, 0, 0, // step 4
0, 0, 0, 0, // step 5
1, 0, 0, 0, // step 6
0, 0, 0, 0, // step 7
2, 0, 0, 0, // step 8
2, 0, 0, 0, // step 9
0, 0, 0, 0, // step A
0, 0, 0, 0, // step B
15, 0, 0, 0, // step C
5, 0, 0, 0, // step D
5, 0, 0, 0, // step E
5, 0, 0, 0, // step F

// pattern 20
1, 0, 57, 10, // step 0
0, 0, 60, 20, // step 1
0, 0, 64, 30, // step 2
1, 0, 67, 40, // step 3
0, 0, 76, 50, // step 4
0, 0, 57, 60, // step 5
1, 0, 60, 70, // step 6
0, 0, 64, 80, // step 7
2, 0, 67, 90, // step 8
0, 0, 76, 100, // step 9
0, 0, 57, 110, // step A
0, 0, 60, 120, // step B
2, 0, 64, 110, // step C
0, 0, 67, 100, // step D
0, 0, 76, 90, // step E
5, 0, 57, 80, // step F

// pattern 21
1, 0, 59, 70, // step 0
0, 0, 60, 60, // step 1
0, 0, 64, 50, // step 2
1, 0, 67, 40, // step 3
0, 0, 74, 30, // step 4
0, 0, 59, 20, // step 5
1, 0, 60, 10, // step 6
0, 0, 64, 20, // step 7
2, 0, 67, 30, // step 8
0, 0, 74, 40, // step 9
0, 0, 59, 50, // step A
0, 0, 60, 60, // step B
2, 0, 64, 70, // step C
0, 0, 67, 80, // step D
0, 0, 74, 90, // step E
5, 0, 59, 100, // step F

// pattern 22
1, 0, 53, 110, // step 0
0, 0, 60, 120, // step 1
0, 0, 64, 110, // step 2
1, 0, 69, 100, // step 3
0, 0, 83, 90, // step 4
0, 0, 53, 80, // step 5
1, 0, 60, 70, // step 6
0, 0, 64, 60, // step 7
2, 0, 69, 50, // step 8
0, 0, 83, 40, // step 9
2, 0, 53, 30, // step A
0, 0, 60, 20, // step B
2, 0, 64, 10, // step C
0, 0, 69, 20, // step D
4, 0, 83, 30, // step E
5, 0, 53, 40, // step F

// pattern 23
1, 0, 52, 50, // step 0
0, 0, 60, 60, // step 1
0, 0, 64, 70, // step 2
1, 0, 69, 80, // step 3
0, 0, 79, 90, // step 4
0, 0, 52, 100, // step 5
1, 0, 60, 110, // step 6
0, 0, 64, 120, // step 7
2, 0, 69, 110, // step 8
2, 0, 79, 100, // step 9
0, 0, 52, 90, // step A
0, 0, 60, 80, // step B
15, 0, 64, 70, // step C
5, 0, 69, 60, // step D
5, 0, 79, 50, // step E
5, 0, 52, 40, // step F


// pattern 24
0, 0, 57, 10, // step 0
0, 0, 60, 20, // step 1
0, 0, 64, 30, // step 2
0, 0, 67, 40, // step 3
0, 0, 76, 50, // step 4
0, 0, 57, 60, // step 5
0, 0, 60, 70, // step 6
0, 0, 64, 80, // step 7
0, 0, 67, 90, // step 8
0, 0, 76, 100, // step 9
0, 0, 57, 110, // step A
0, 0, 60, 120, // step B
0, 0, 64, 110, // step C
0, 0, 67, 100, // step D
0, 0, 76, 90, // step E
0, 0, 57, 80, // step F

// pattern 25
0, 0, 59, 70, // step 0
0, 0, 60, 60, // step 1
0, 0, 64, 50, // step 2
0, 0, 67, 40, // step 3
0, 0, 74, 30, // step 4
0, 0, 59, 20, // step 5
0, 0, 60, 10, // step 6
0, 0, 64, 20, // step 7
0, 0, 67, 30, // step 8
0, 0, 74, 40, // step 9
0, 0, 59, 50, // step A
0, 0, 60, 60, // step B
0, 0, 64, 70, // step C
0, 0, 67, 80, // step D
0, 0, 74, 90, // step E
0, 0, 59, 100, // step F

// pattern 26
0, 0, 53, 110, // step 0
0, 0, 60, 120, // step 1
0, 0, 64, 110, // step 2
0, 0, 69, 100, // step 3
0, 0, 83, 90, // step 4
0, 0, 53, 80, // step 5
0, 0, 60, 70, // step 6
0, 0, 64, 60, // step 7
0, 0, 69, 50, // step 8
0, 0, 83, 40, // step 9
0, 0, 53, 30, // step A
0, 0, 60, 20, // step B
0, 0, 64, 10, // step C
0, 0, 69, 20, // step D
0, 0, 83, 30, // step E
0, 0, 53, 40, // step F

// pattern 27
0, 0, 52, 50, // step 0
0, 0, 60, 60, // step 1
0, 0, 64, 70, // step 2
0, 0, 69, 80, // step 3
0, 0, 79, 90, // step 4
0, 0, 52, 100, // step 5
0, 0, 60, 110, // step 6
0, 0, 64, 120, // step 7
0, 0, 69, 110, // step 8
0, 0, 79, 100, // step 9
0, 0, 52, 90, // step A
0, 0, 60, 80, // step B
0, 0, 64, 70, // step C
0, 0, 69, 60, // step D
0, 0, 79, 50, // step E
0, 0, 52, 40, // step F



};





byte ch1_sample;
byte ch2_sample;
byte ch3_note;
byte ch3_timbre;

byte ch1_data;
byte ch2_data;
byte ch3_data;
byte ch4_data;

byte time_data;

float note_A = 440.0;
float period;
void setup()
{
pinMode(10, OUTPUT);
Timer1.initialize(2270);
Timer1.pwm(9, 4);
DDRD = B11111111;
}
void loop()
{

// start song 1
time_data = song_1_time;


for(int x = 0; x < song_1_patterns_total; x ++) {
current_pattern = pgm_read_byte_near(song_1_pattern_order + x);

for(int y = 0; y < 16; y ++) {
// get current pattern

ch1_sample = pgm_read_byte_near(patterns + (y << 2) + 0 + (current_pattern << 6));
ch2_sample = pgm_read_byte_near(patterns + (y << 2) + 1+ (current_pattern << 6));
ch3_note = pgm_read_byte_near(patterns + (y << 2) + 2+ (current_pattern << 6));
ch3_timbre = pgm_read_byte_near(patterns + (y << 2) + 3+ (current_pattern << 6));

// update synthesis

if(ch3_note != 0) {
doNote(ch3_note, ch3_timbre);
}
else{
doNoteOff();
}

// play samples

playSamples(time_data);
}
}
// end song
doNoteOff();



// start song 2

for(int x = 0; x < song_2_patterns_total; x ++) {
current_pattern = pgm_read_byte_near(song_2_pattern_order + x);

for(int y = 0; y < 16; y ++) {
// get current pattern

// change tempo gradually between songs
if(time_data < song_2_time) {
time_data ++;
}
ch1_sample = pgm_read_byte_near(patterns + (y << 2) + 0 + (current_pattern << 6));
ch2_sample = pgm_read_byte_near(patterns + (y << 2) + 1+ (current_pattern << 6));
ch3_note = pgm_read_byte_near(patterns + (y << 2) + 2+ (current_pattern << 6));
ch3_timbre = pgm_read_byte_near(patterns + (y << 2) + 3+ (current_pattern << 6));

// update synthesis

if(ch3_note != 0) {
doNote(ch3_note, ch3_timbre);
}
else{
doNoteOff();
}

// play samples

playSamples(time_data);
}
}
// end song
doNoteOff();




// end ep
while(1) {
}


}


void doNote(byte pitch, int timbre) {
period = note_A * pow(2, (float(pitch) - 69.0) / 12.0);
period = 1000000 / period;
Timer1.pwm(9, timbre << 3, period);
}

void doNoteOff() {
Timer1.disablePwm(9);
}

void playSamples(byte time) {
for(int j = 0; j < 1000; j ++) {
ch1_data = pgm_read_byte_near(samples + (1000 * ch1_sample) + j);
ch2_data = pgm_read_byte_near(samples + (1000 * ch2_sample) + j);
PORTD = ch1_data + ch2_data;
delayMicroseconds(time);
}
}

4 comments:

kid versus chemical said...

Genius, as usual. I have to say it dude, your my freaking idol....

Poppi said...

JC.

F.T said...

it's so great. i found my way to finish all the steps you wrote on the Arduino .

Captain Credible said...

This is Insanely Awesome! I will have to make at least one arduino track, Can this run on an ATTiny ?i am guessing not, looking at the number of pins used for the DAC.