M5Core2でカチカチと鳴る電子メトロノームを作ってみた

ギターの練習をするのにメトロノームが欲しくなったので、M5StackCore2 で作ることにしました。

Metronome

電子メトロノームというとピコピコという電子音のものが多いのですが、もうちょっとレトロなカチカチとクリック音のするものにしたかったので、WAVファイルからデータを作成して鳴らしてみました。
ところが、この音の再生に時間がかかりテンポがずれてしまい、1ミリ秒の割り込みを作るところまでは、すんなりと行ったのだけど、その後の処理の時間の分の調整が意外と厄介でした。
また、Beatの頭のチーンという音も、余韻を響かせると次の音と重なってしまい、短く切り詰めると、”ガチン”といった不本意な音になってしまったけど、まぁ、実用には差し支えなさそうなのでこれで行くことにしました。
機能としては、Beatの調整とSpeedの調整があり、Beatの表示部分をタッチするとBeatの頭でチーン(ガチン?)と鳴ります。
下部にボタンが3つあり、左からSoundボタン、Startボタン、Clickボタンとなっており、Startボタンをタッチするとメトロノームが開始し、もう一度タッチすると停止します。
Soundボタンは、タッチするとクリック音がし、もう一度タッチすると音が停止します。
Clickボタンは、タッチしたときにクリック音が鳴ります。 マニュアルで音を鳴らしたいときに使えます。…特に用途は思いつきませんが一応…。
プログラム的には、テンポの調整にSPEEDADJ というマクロ変数とSOUNDADJというマクロ変数で調整しています。
音の発音に時間がかかるようで、SoundのONとOFFでタイミングが異なるので2種類の調整時間を用意しています。調整するときは、SoundをOFFにして、先にSPEEDADJでテンポをあわせてから、SoundをONにして、SOUNDADJでテンポ合わせれば良いと思います。
一応33番のピンに出力できるようにしてあるので、デジタルアウトの部分のコメントアウトしているところを有効にして、オシロとかで見ながら調整すれば精度が上がると思いますが、私は、目分量でやっています。
WAVデータの再生は、以前の記事
M5Stack Core2でWAVデータを再生してみる。 - 満腹居士 七転八倒の記
を参照いただければ良いかと思います。

以下、プログラム

#include <M5Core2.h>
#include <driver/i2s.h>

#define LGFX_USE_V1
#include <LovyanGFX.hpp>
#include <LGFX_AUTODETECT.hpp>

#define TestPin 33    //Digital out pin for interval check or LED
#define SPEEDADJ 5    // for interval adjust without sound
#define SOUNDADJ 60   // for interval adjust with sound

static LGFX lcd;
static LGFX_Sprite spriteBY(&lcd);    // sprite for Big Yellow Dot
static LGFX_Sprite spriteSR(&lcd);    // sprite for Small Red Dot
static LGFX_Sprite spriteBB(&lcd);    // sprite for Big Blue Dot

//HotZone P_Btn(80,130,160,210);
ButtonColors cl_on  = {CYAN, WHITE, WHITE};   // Color on tap (Back color, String, Border)
ButtonColors cl_off = {DARKCYAN, WHITE, WHITE};   // Color released (Back color, String, Border)

Button myBtn_BL( 10,120, 50, 80);   // Beat Down Button
Button myBtn_BR( 60,120, 50, 80);   // Beat Up Button
Button myBtn_SL(210,120, 50, 80);   // Speed Down Button
Button myBtn_SR(260,120, 50, 80);   // Speed Up Button
Button myBtn_BE( 10,50,100,50);     // Beat Enable Button

Button btn_start(110,200, 100,40, false , "Start", cl_off, cl_on);   // Start Button
Button btn_sound(0,200, 100,40, false , "Sound", cl_off, cl_on);     // Sound Button
Button btn_click(220,200, 100,40, false , "Click", cl_off, cl_on);   // Click Button

hw_timer_t * timer = NULL;
volatile uint32_t counter = 0;  // for speed
uint8_t counter2 = 0;  // for beat

bool start_fg = false;  // Start flag
bool sound_fg = true;   //sound enable flag
bool beat_en = false;   //beat enable flag
uint16_t speed = 60;    // default Speed
uint8_t beat = 4;       // default beat (1/4)
uint8_t LED = LOW;      // for digital out
uint16_t adjust;        // for Speed adjust

//Sound function ---------------------------------------------------------------
extern const unsigned char   clk[2448];   // for click sound data
extern const unsigned char   cheen[2440]; // for ding sound data

#define CONFIG_I2S_BCK_PIN     12
#define CONFIG_I2S_LRCK_PIN    0
#define CONFIG_I2S_DATA_PIN    2
#define CONFIG_I2S_DATA_IN_PIN 34

#define Speak_I2S_NUMBER I2S_NUM_0
#define SAMPLE_RATE 16000

#define MODE_MIC  0
#define MODE_SPK  1
#define DATA_SIZE 32
bool InitI2SSpeakOrMic(int mode) {  // Init I2S.
  esp_err_t err = ESP_OK;

  i2s_driver_uninstall(Speak_I2S_NUMBER);  // Uninstall the I2S driver.
  i2s_config_t i2s_config = {
    .mode = (i2s_mode_t)(I2S_MODE_MASTER),  // Set the I2S operating mode.
    .sample_rate = SAMPLE_RATE,  // Set the I2S sampling rate.
    .bits_per_sample =
    I2S_BITS_PER_SAMPLE_16BIT,  // Fixed 16-bit stereo MSB.
    .channel_format =
    I2S_CHANNEL_FMT_ONLY_RIGHT,  // Set the channel format.
    .communication_format =
    I2S_COMM_FORMAT_I2S,  // Set the format of the communication.
    .intr_alloc_flags = ESP_INTR_FLAG_LEVEL1,  // Set the interrupt flag.
    .dma_buf_count = 2,        // DMA buffer count.
    .dma_buf_len   = 128,      // DMA buffer length.
  };
  if (mode == MODE_MIC) {
    i2s_config.mode =
      (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_RX | I2S_MODE_PDM);
  } else {
    i2s_config.mode     = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX);
    i2s_config.use_apll = false;  // I2S clock setup.
    i2s_config.tx_desc_auto_clear = true;  // Enables auto-cleanup descriptors for understreams.
  }
  // Install and drive I2S.
  err += i2s_driver_install(Speak_I2S_NUMBER, &i2s_config, 0, NULL);

  i2s_pin_config_t tx_pin_config;

#if (ESP_IDF_VERSION > ESP_IDF_VERSION_VAL(4, 3, 0))
  tx_pin_config.mck_io_num = I2S_PIN_NO_CHANGE;
#endif
  tx_pin_config.bck_io_num = CONFIG_I2S_BCK_PIN;  // Link the BCK to the CONFIG_I2S_BCK_PIN pin.
  tx_pin_config.ws_io_num    = CONFIG_I2S_LRCK_PIN;     //          ...
  tx_pin_config.data_out_num = CONFIG_I2S_DATA_PIN;     //       ...
  tx_pin_config.data_in_num  = CONFIG_I2S_DATA_IN_PIN;  //      ...
  err +=
    i2s_set_pin(Speak_I2S_NUMBER,
                &tx_pin_config);  // Set the I2S pin number.
  err += i2s_set_clk(
           Speak_I2S_NUMBER, SAMPLE_RATE, I2S_BITS_PER_SAMPLE_16BIT,
           I2S_CHANNEL_MONO);  // Set the clock and bitwidth used by I2S Rx and Tx.

  return true;
}

void SpeakInit(void) {
  M5.Axp.SetSpkEnable(true);
  InitI2SSpeakOrMic(MODE_SPK);
}

// Click sound
void Sound(void) { 
  size_t bytes_written = 0;
  i2s_write(Speak_I2S_NUMBER, clk, 2448, &bytes_written,
            portMAX_DELAY);
}

// Ding sound
void Sound2(void) {
  size_t bytes_written = 0;
  i2s_write(Speak_I2S_NUMBER, cheen, 2440, &bytes_written,
            portMAX_DELAY);
}

// end of sound ---------------------------------------------------

// Interrupt fanction (1mSec counter)
void IRAM_ATTR onTimer(){
  counter++;
}

void setup() {
  M5.begin(true, true, true, true);

  pinMode(TestPin, OUTPUT);

  lcd.init();
  lcd.setRotation(1);
  lcd.setBrightness(128);

// Create Sprite for Red, Yellow, Blue Dot
  spriteBY.createSprite(80, 80);
  spriteSR.createSprite(80, 80);
  spriteBB.createSprite(80, 80);
  spriteBY.fillCircle(40, 40, 40,YELLOW);
  spriteSR.fillCircle(40, 40, 10,RED);
  spriteBB.fillCircle(40, 40, 40,BLUE);

 // Timer Interrupt
  timer = timerBegin(0, 80, true);    // timer0(80MHz) / 80 = 1uSec
  timerAttachInterrupt(timer, &onTimer, true);
  timerAlarmWrite(timer, 1000, true); //1mSec
  timerAlarmEnable(timer);
  
  lcd.setFont(&fonts::lgfxJapanGothic_20);

// Display
  lcd.clear();
  M5.Buttons.draw();
  //lcd.drawRect(0,0,319,239,WHITE);
  lcd.fillTriangle(12,140,58,120,58,160,GREEN);
  lcd.fillTriangle(108,140,62,120,62,160,GREEN);
  lcd.fillTriangle(212,140,258,120,258,160,BLUE);
  lcd.fillTriangle(308,140,262,120,262,160,BLUE);
  lcd.setCursor(80,0);
  lcd.setTextSize(1.5);
  lcd.setTextColor(YELLOW);
  lcd.print("METRONOME");
  lcd.setTextSize(1);
  lcd.setTextColor(WHITE);
  lcd.setCursor(30,20);
  lcd.print("Beat");
  lcd.setCursor(220,20);
  lcd.print("Speed");

  lcd.setCursor(20,50);
  lcd.setTextSize(2);
  lcd.printf("1/%d",beat);
  
  lcd.fillRect(10,196,80,2,RED);

  lcd.setCursor(220,50);
  lcd.setTextSize(2);
  lcd.print(speed);

  SpeakInit();

}

void loop() {
  if(sound_fg == true){
  adjust = SPEEDADJ + SOUNDADJ;
  }
  else {
    adjust = SPEEDADJ;
  }
  
  if(counter >= 60000/speed-adjust) {
    /*
      if you would like to digital out for interval check or LED flush, enable the following comment.
      LED=(LED == LOW)? HIGH:LOW;
      digitalWrite(TestPin, LED);
    */
    
    if(counter2 == 0) {               // Start of Beat
      if(start_fg == true){           // Start on
          if (beat_en == true){       // Beat enabled
            if(sound_fg == true) {    // Sound on
              Sound2();
            }
            spriteBB.pushSprite(120,80);
          }
          else {
            if(sound_fg == true) {
              Sound();
            }
            spriteBY.pushSprite(120,80);
          }
      }
    }
    else {
      if(start_fg == true){
        if(sound_fg == true) {
          Sound();     
        }
      spriteBY.pushSprite(120,80);
      }
    }
     counter = 0;
     counter2++;
     if(counter2 > beat-1)counter2=0;
  }

  if((counter > (60000/speed)/2) and  (counter < (60000/speed-SPEEDADJ-10))) {
      spriteSR.pushSprite(120,80); 
      lcd.fillCircle(5,195,2,BLACK); // charm!
  }

  
  M5.update();

  if (btn_start.wasReleased() == 1) {             // Start button push and released
       start_fg=(start_fg == false)?true:false;   // toggle Start ON and OFF
       if(start_fg==true) {                       // If Start ON
        lcd.fillCircle(5,195,2,BLACK);  // charm!
        lcd.fillRect(120,196,80,2,RED);
        counter = 0;
        counter2 = 0;
       }
       else {                                     // If Start OFF
        lcd.fillCircle(5,195,2,BLACK);  // charm!
        lcd.fillRect(120,196,80,2,BLACK);
       }
       
  }
  if (btn_sound.wasReleased() == 1) {             // Sound button push and released
       sound_fg=(sound_fg == false)?true:false;
       if(sound_fg==true) {
        lcd.fillRect(10,196,80,2,RED);
       }
       else {
        lcd.fillRect(10,196,80,2,BLACK);
       }
  }
  if (btn_click.wasReleased() == 1) {
    Sound();
  }
  
  if (myBtn_BL.wasReleased() == 1){             // Beat Down button push and released
    beat--;
    if (beat < 1) beat = 16;
    lcd.setCursor(20,50);
    lcd.setTextSize(2);
    lcd.fillRect(60,50,90,35,BLACK);
    lcd.printf("1/%d",beat);      

  }
  
  if (myBtn_BR.wasReleased() == 1){             // Beat Up button push and released
    beat++;
    if (beat > 16) beat = 1;
    lcd.setCursor(20,50);
    lcd.setTextSize(2);
    lcd.fillRect(60,50,90,35,BLACK);
    lcd.printf("1/%d",beat);      

  }
  
  if (myBtn_SL.wasReleased() == 1){             // Speed Down button push and released
    speed--;
    if (speed < 1) speed = 200;
    lcd.setCursor(220,50);
    lcd.setTextSize(2);
    lcd.fillRect(220,50,90,35,BLACK);
    lcd.printf("%d",speed);

  }
  if (myBtn_SR.wasReleased() == 1){             // Speed Up button push and released
    speed++;
    if (speed > 200) speed = 1;
    lcd.setCursor(220,50);
    lcd.setTextSize(2);
    lcd.fillRect(220,50,90,35,BLACK);
    lcd.printf("%d",speed);

  }


  if (myBtn_BE.wasReleased() == 1){             // Beat enable button push and released
    beat_en =(beat_en == false)?true:false;     // toggle Beat ON and OFF
    if(beat_en == true) {
      lcd.fillRect(30,40,40,2,RED);
    }
    else {
      //lcd.fillCircle(60,230,3,BLACK);
      lcd.fillRect(30,40,40,2,BLACK);
    }

  }

}

クリック音のデータ (Click.C)

const unsigned char clk[2448]={ 
0xFE,0xFF,0xFC,0xFF,0xF9,0xFF,0x01,0x00,0x0A,0x00,0x06,0x00,0x01,0x00,0xFB,0xFF,
0xFF,0xFF,0xF7,0xFF,0xF0,0xFF,0xF8,0xFF,0x03,0x00,0x06,0x00,0x02,0x00,0x07,0x00,
0x03,0x00,0x0D,0x00,0x21,0x00,0x0F,0x00,0x09,0x00,0x05,0x00,0x08,0x00,0x0F,0x00,
0x6E,0xFF,0x83,0xFF,0xC8,0xFF,0xDF,0xFF,0x47,0x00,0xF2,0xFF,0x95,0xFF,0xBB,0x00,
0x6F,0x01,0x6E,0x00,0xCF,0xFF,0xD1,0xFF,0x65,0x00,0x62,0xFF,0x67,0xFF,0xEB,0xFF,
0x72,0x00,0xA5,0x00,0x86,0xFF,0x4B,0x00,0x81,0x00,0x92,0xFF,0xC0,0xFD,0x8A,0xFE,
0xAA,0x00,0x24,0x00,0x4E,0xFF,0x41,0x00,0x95,0x00,0x70,0x01,0x20,0x02,0xD5,0xFF,
0xC0,0xFF,0xCD,0xFF,0x9D,0xFF,0x0F,0xFF,0x39,0xFE,0x69,0xFF,0x03,0x02,0x34,0x02,
0x4F,0xFE,0xAD,0x03,0xEC,0x0D,0xC3,0xF0,0xB6,0xEF,0xCB,0x03,0x49,0x0D,0xF5,0xFD,
0x48,0x0A,0x41,0x1A,0x59,0x02,0x6A,0xD2,0xE5,0xE6,0x5A,0xFE,0x99,0xE6,0xA6,0xE8,
0xE2,0x05,0x91,0x2E,0x01,0x28,0x01,0x0F,0x04,0x13,0x2D,0x15,0x59,0x06,0x62,0xE7,
0x21,0xDF,0x9E,0xE8,0x13,0xEB,0x8C,0xD7,0x15,0xD9,0x23,0xFA,0x99,0x1C,0x00,0x27,
0xB6,0x24,0x33,0x30,0x59,0x2B,0xEF,0x23,0x86,0x00,0xF3,0xE3,0x91,0xDC,0xEB,0xD2,
0xF5,0xCF,0x3D,0xD4,0x34,0xDF,0x0D,0x00,0x69,0x21,0xF2,0x24,0x18,0x2D,0xC7,0x2B,
0xBE,0x25,0x4F,0x17,0x49,0xF3,0x80,0xD8,0x72,0xD5,0xBD,0xD5,0x7D,0xD4,0x03,0xDC,
0x71,0xE5,0x06,0xF9,0x76,0x17,0x36,0x2E,0xEB,0x33,0xE8,0x30,0xD7,0x27,0xAE,0x10,
0x9C,0xFD,0x32,0xED,0xF4,0xE1,0x1B,0xDC,0xE0,0xD6,0xAF,0xE0,0xA9,0xF3,0x08,0x0D,
0x9F,0x1D,0x2D,0x21,0xDE,0x24,0x27,0x2C,0xBB,0x1A,0xC1,0x01,0x8F,0xF2,0xBE,0xE7,
0xCA,0xE0,0xC4,0xD6,0x5C,0xD7,0x46,0xE9,0xB5,0xF7,0x01,0x03,0x4F,0x17,0xC3,0x18,
0x27,0x0F,0x1D,0x16,0xCB,0x16,0x2C,0x00,0x2B,0xEC,0x87,0xE5,0xC9,0xEF,0x51,0xF5,
0x96,0xEC,0xE5,0xEA,0x74,0xFE,0xAF,0x12,0x11,0x1A,0xB5,0x15,0xD8,0x16,0x80,0x18,
0x83,0x11,0x27,0x04,0xD7,0x02,0xD3,0x04,0x36,0xFB,0xFE,0xF5,0xFB,0xFD,0xDE,0xF7,
0x34,0xFC,0x3C,0x03,0x02,0xFE,0x76,0xFC,0xF3,0xFD,0x8B,0x04,0x80,0x02,0xD5,0xF1,
0x4F,0xF0,0x2A,0xFB,0x27,0xF6,0x2F,0xEF,0x43,0xF5,0xD1,0xFD,0x8B,0xFB,0x67,0xF2,
0x4C,0xF5,0x50,0xFF,0x65,0x04,0xCB,0x02,0x50,0x04,0xF3,0x07,0x59,0x0A,0x4C,0x08,
0xD6,0x07,0xCC,0x0B,0xCF,0x05,0x43,0x03,0x8A,0x03,0xE5,0x08,0x10,0x09,0x5F,0x08,
0x85,0x0B,0x09,0x0D,0x17,0x0F,0x30,0x06,0xCE,0x01,0xE7,0x01,0x8C,0xFD,0xB0,0xF7,
0x7A,0xFB,0xF1,0xF4,0x1D,0xED,0x1B,0xF3,0x42,0xF6,0x31,0xF4,0xC9,0xF6,0x68,0xFA,
0x64,0xFF,0xE3,0xFF,0x34,0xFD,0xED,0xFB,0x8E,0xFD,0xCA,0xF7,0xEF,0xF1,0xF7,0xF4,
0xFA,0xF8,0x29,0xF7,0x2E,0xFA,0xFB,0x02,0x1F,0x0B,0xBA,0x0B,0x7D,0x0E,0x0D,0x0C,
0xFB,0x06,0xB1,0x08,0xEF,0x06,0x1A,0xFA,0x80,0xF1,0x33,0xF2,0xFE,0xF4,0xF7,0xF7,
0x8A,0xF9,0x2D,0xFD,0x48,0x04,0xC4,0x0B,0xB1,0x10,0x00,0x0F,0x4F,0x0D,0xA2,0x0D,
0xF5,0x04,0x25,0xFA,0x15,0xF7,0xC0,0xF7,0xC7,0xF3,0xC3,0xEF,0x56,0xF2,0x75,0xF8,
0x48,0x00,0x8B,0x05,0xF0,0x09,0x2C,0x0E,0x7F,0x0D,0x47,0x0A,0x5D,0x06,0xD3,0xFF,
0xE4,0xFB,0xF8,0xF6,0x02,0xF4,0x2F,0xF1,0xEC,0xEE,0x9A,0xF6,0xB1,0xFC,0xE2,0x00,
0x68,0x07,0xDF,0x0E,0xB4,0x13,0xEA,0x12,0xD8,0x0F,0xBF,0x08,0x09,0xFE,0x47,0xF9,
0x9F,0xF4,0x4E,0xF0,0x24,0xF0,0xF0,0xF0,0x37,0xF9,0x6D,0x00,0xC4,0x07,0x77,0x0F,
0x67,0x11,0xF3,0x0F,0x53,0x0A,0x9B,0x04,0xFB,0xFF,0x71,0xF8,0xB4,0xF1,0x10,0xED,
0xB3,0xED,0x4B,0xF2,0x6D,0xF7,0xC3,0x00,0x1B,0x09,0x58,0x0B,0x23,0x0E,0x0D,0x10,
0x21,0x0E,0x10,0x06,0x85,0xFF,0xCE,0xFA,0xC4,0xF4,0x68,0xF0,0x4F,0xF1,0x40,0xF5,
0xD8,0xFA,0xEA,0x00,0x9C,0x08,0x0B,0x0E,0x64,0x0F,0x75,0x0D,0xD7,0x09,0x84,0x05,
0x4B,0x01,0xE6,0xFA,0xAE,0xF6,0x86,0xF4,0xDD,0xF3,0x24,0xF5,0xCF,0xF8,0x7C,0xFE,
0x16,0x03,0x56,0x07,0xF1,0x0A,0xFD,0x09,0x27,0x04,0x2F,0x02,0xD8,0x01,0xCC,0xFF,
0xFD,0xFA,0xC3,0xF8,0xF8,0xF8,0xCC,0xF7,0x45,0xF7,0x83,0xFB,0xFB,0xFE,0x10,0x00,
0xD2,0x02,0x23,0x07,0xC6,0x07,0xD5,0x04,0x8A,0x04,0x22,0x03,0x97,0xFF,0x15,0xFB,
0x28,0xF9,0x83,0xFB,0x4E,0xFC,0xC0,0xFA,0x9F,0xFB,0x33,0x02,0x0E,0x09,0x6E,0x09,
0xF9,0x08,0x37,0x08,0x72,0x06,0x71,0x07,0xE5,0x05,0x07,0x02,0x5F,0xFC,0x94,0xF8,
0x33,0xF9,0xA6,0xF7,0x79,0xF8,0xF6,0xFB,0x0D,0x03,0xEB,0x05,0x61,0x03,0xF9,0x04,
0x0F,0x07,0x29,0x05,0xD6,0xFD,0x37,0xF7,0x0C,0xF7,0xA2,0xF9,0xA9,0xF8,0xE3,0xF6,
0xA4,0xF7,0x1B,0xFE,0x66,0x04,0xB4,0x04,0x0B,0x04,0xCC,0x06,0x32,0x08,0x7C,0x02,
0xDF,0xFB,0xFA,0xFB,0x10,0xFF,0x0F,0xFF,0x34,0xFA,0x9F,0xFA,0xC7,0x00,0xA7,0x04,
0x28,0x07,0x03,0x07,0xBA,0x06,0xF8,0x06,0x93,0x04,0xE7,0xFF,0x2C,0xFE,0x3E,0xFD,
0x19,0xFC,0x3D,0xFA,0xA5,0xFB,0x82,0xFE,0xE1,0x00,0x45,0x03,0x5A,0x05,0x4B,0x05,
0x0A,0x04,0x1B,0x00,0x64,0xFE,0xEB,0xFD,0xEA,0xFB,0x89,0xF9,0xD8,0xF9,0xBA,0xFB,
0xDD,0xFD,0x08,0xFE,0x40,0xFF,0x34,0x01,0x63,0x02,0xF0,0x02,0x22,0x01,0x98,0x00,
0x62,0xFF,0xA6,0xFD,0x82,0xFC,0xF1,0xFC,0x54,0xFF,0xE7,0x02,0x1E,0x03,0x8C,0x02,
0x34,0x04,0x57,0x07,0x26,0x06,0x81,0x02,0xBA,0xFF,0xD3,0xFF,0x51,0x00,0x78,0xFD,
0x21,0xFC,0x67,0x00,0x19,0x04,0xF1,0x03,0xF6,0x01,0xEF,0x00,0xEB,0x01,0x8B,0x00,
0x9C,0xFC,0x84,0xFA,0xBD,0xFA,0xCE,0xFB,0xA3,0xFC,0x99,0xFE,0x76,0xFF,0x4E,0xFF,
0xA2,0x01,0x45,0x02,0x6F,0x01,0xC5,0xFF,0xB3,0xFD,0x53,0xFD,0x52,0xFD,0x1C,0xFC,
0x7B,0xFC,0x7B,0xFF,0x8E,0x02,0xF7,0x01,0xEB,0x01,0x8B,0x03,0xCB,0x05,0xAF,0x06,
0x13,0x03,0xD8,0xFF,0x4E,0xFF,0xA9,0xFD,0x14,0xFD,0x14,0xFD,0xBB,0xFD,0x71,0x00,
0x63,0x03,0x4F,0x03,0x47,0x03,0x04,0x04,0x58,0x03,0x67,0x01,0x61,0xFF,0x76,0xFD,
0xB6,0xFB,0x0A,0xFD,0x14,0xFF,0x98,0xFE,0x96,0xFF,0x7F,0x00,0x83,0x01,0x18,0x01,
0x25,0x00,0xBF,0xFE,0xA8,0xFF,0x68,0x00,0xCE,0xFD,0x67,0xFC,0x49,0xFD,0xB0,0xFD,
0xFC,0xFE,0xAB,0xFF,0x03,0x00,0x14,0x01,0x8C,0x03,0x49,0x02,0xF8,0xFE,0xD7,0xFF,
0xA9,0x00,0xFD,0xFF,0xC9,0xFF,0xFE,0xFE,0x23,0x01,0x17,0x04,0x43,0x04,0x26,0x03,
0x12,0x03,0x48,0x03,0x41,0x02,0x59,0xFF,0x95,0xFB,0x66,0xFC,0xF5,0xFE,0x91,0xFE,
0x6C,0xFE,0xB2,0x00,0x80,0x03,0x1A,0x03,0x63,0x01,0x82,0x00,0x71,0xFF,0xF9,0xFD,
0x89,0xFC,0x35,0xFC,0x14,0xFC,0x6E,0xFC,0xFE,0xFD,0xCD,0xFF,0x9B,0x00,0xE3,0x01,
0xE6,0x02,0x76,0x02,0x9C,0x03,0xA4,0x03,0xBC,0xFF,0xAB,0xFE,0x35,0xFF,0x9A,0xFE,
0x22,0xFD,0xFD,0xFC,0x7A,0xFF,0xE5,0xFF,0x01,0x01,0x0C,0x03,0xA6,0x05,0x17,0x05,
0xA4,0x01,0xEF,0xFF,0x66,0x00,0xFE,0xFE,0x1C,0xFE,0x1C,0xFE,0x3C,0xFD,0x5E,0xFD,
0x59,0xFE,0xC0,0xFE,0x83,0xFF,0xFA,0x01,0x2D,0x03,0xF7,0x01,0x9E,0x01,0x07,0x01,
0x67,0x00,0x65,0xFF,0xF9,0xFD,0xB6,0xFD,0x21,0xFE,0xBF,0xFD,0x08,0xFE,0x90,0xFF,
0x4B,0x01,0xBD,0x01,0xFD,0x01,0xB4,0x01,0x70,0x01,0xF3,0x01,0xE1,0xFF,0x18,0xFF,
0xB4,0x00,0x45,0xFF,0xF0,0xFD,0xBA,0xFD,0x00,0xFF,0xA4,0xFD,0x98,0xFE,0xC9,0x01,
0x36,0x02,0xFC,0x01,0xDC,0x01,0x43,0x02,0x72,0x03,0x5B,0x02,0x09,0x00,0x54,0xFF,
0x6B,0xFF,0x1D,0xFF,0xB1,0xFC,0x30,0xFC,0x7D,0xFD,0xCA,0xFE,0x9D,0xFF,0x2D,0xFF,
0x70,0x01,0xB4,0x03,0x60,0x02,0xF2,0x00,0x48,0x01,0x36,0x01,0x42,0xFE,0x50,0xFB,
0x9D,0xFA,0x01,0xFB,0xAB,0xFC,0x13,0xFE,0xA1,0xFE,0x5E,0x01,0x52,0x04,0x0A,0x06,
0xF3,0x05,0x62,0x04,0xCB,0x03,0x6A,0x02,0xC8,0xFF,0x1D,0xFC,0x48,0xFB,0x44,0xFC,
0x7C,0xFC,0x0A,0xFE,0xBF,0x00,0x99,0x03,0xD2,0x05,0x69,0x05,0x7C,0x05,0x6D,0x05,
0xDC,0x02,0x50,0xFE,0x38,0xFB,0x05,0xFA,0x1A,0xF9,0x5B,0xF8,0x02,0xFB,0x62,0xFE,
0x80,0x00,0x94,0x01,0x70,0x03,0x9B,0x04,0xE1,0x03,0x7F,0x01,0x60,0x00,0xAD,0xFF,
0x9D,0xFD,0x46,0xFC,0x25,0xFC,0xD3,0xFC,0x18,0xFE,0xEC,0xFF,0x72,0x02,0x1A,0x04,
0xAA,0x03,0x46,0x03,0x81,0x03,0x81,0x02,0xFE,0xFF,0xFA,0xFE,0xE0,0xFE,0x29,0xFE,
0x8E,0xFD,0x28,0xFD,0x81,0xFF,0x30,0x02,0x8F,0x02,0xD5,0x00,0x6E,0x00,0x84,0x01,
0xAC,0x00,0x6F,0xFF,0x49,0xFE,0xD7,0xFE,0x1A,0x00,0x0F,0xFF,0x51,0xFE,0x38,0xFF,
0xCC,0xFF,0x40,0x00,0xD8,0xFF,0x0A,0x00,0xF9,0x00,0x07,0x02,0x4A,0x01,0xED,0xFE,
0xDF,0xFE,0x3A,0xFF,0x75,0xFE,0x77,0xFE,0x69,0xFE,0x2D,0xFF,0xD1,0xFF,0x6C,0x01,
0x73,0x01,0x90,0x01,0x77,0x03,0xFF,0x02,0x73,0x01,0x2B,0x00,0xE2,0xFF,0x20,0x00,
0x34,0xFE,0xBB,0xFC,0x81,0xFD,0x7D,0xFE,0x03,0x00,0x76,0x00,0xB4,0x00,0x8D,0x02,
0x8F,0x03,0x2A,0x03,0xBA,0x00,0x57,0xFF,0x3D,0xFF,0xA0,0xFD,0x5D,0xFC,0x71,0xFB,
0x1F,0xFC,0xEB,0xFD,0x89,0xFE,0x75,0xFF,0x7D,0x01,0xE4,0x02,0xFC,0x02,0x89,0x02,
0x5B,0x02,0x7F,0x00,0x1F,0xFF,0x92,0xFF,0x88,0xFE,0x3B,0xFD,0xB2,0xFD,0x6C,0xFF,
0x4D,0x01,0xE9,0x01,0xF9,0x01,0x43,0x01,0x2B,0x02,0x04,0x02,0xD2,0xFF,0x15,0x00,
0x4A,0x00,0x8F,0xFF,0xD9,0xFE,0x86,0xFE,0x44,0xFF,0xD4,0x00,0xB8,0x01,0xA1,0x00,
0xB0,0xFF,0xA0,0x00,0xB6,0xFF,0xC8,0xFE,0xA8,0xFE,0xE9,0xFD,0xA7,0xFE,0xDE,0xFF,
0x61,0x00,0x1D,0x01,0x5B,0x02,0xED,0x01,0x15,0x00,0x4D,0xFF,0x85,0xFE,0x8A,0xFD,
0x27,0xFD,0xC0,0xFD,0x39,0xFE,0x55,0xFE,0xE9,0xFF,0x8D,0x02,0xAB,0x04,0xCA,0x04,
0xFC,0x02,0x32,0x02,0x3D,0x02,0x30,0x00,0xE0,0xFC,0x85,0xFB,0x81,0xFC,0x21,0xFE,
0x2A,0xFF,0xBC,0xFF,0x22,0x02,0x75,0x04,0xEB,0x04,0x9B,0x03,0x9A,0x02,0x75,0x02,
0x1A,0x01,0x53,0xFD,0x16,0xFA,0x4E,0xFA,0xC5,0xFB,0x55,0xFC,0x0D,0xFD,0x5D,0xFF,
0x5B,0x02,0x80,0x04,0xF6,0x04,0x3C,0x04,0xE8,0x02,0x80,0x01,0x8E,0xFF,0xE0,0xFC,
0x0A,0xFB,0xB6,0xFA,0x04,0xFC,0x2D,0xFD,0x00,0xFE,0x2F,0x00,0x8B,0x03,0xFD,0x05,
0xED,0x04,0x38,0x04,0xDA,0x03,0x97,0x01,0x04,0xFF,0x63,0xFD,0xDF,0xFB,0xEC,0xFA,
0xD0,0xFB,0x87,0xFD,0xA2,0xFE,0xF7,0x00,0x8D,0x03,0x3E,0x04,0xEB,0x03,0x4E,0x03,
0x5F,0x02,0x65,0x01,0x70,0xFF,0xD0,0xFC,0x77,0xFB,0xB4,0xFB,0x10,0xFC,0x5D,0xFD,
0x4F,0xFF,0x1D,0x01,0xB0,0x02,0x94,0x03,0xB1,0x03,0x69,0x03,0xE9,0x02,0xF9,0x00,
0x2E,0xFE,0x0B,0xFD,0x2C,0xFD,0xFF,0xFC,0x66,0xFC,0x67,0xFD,0x75,0xFF,0x7B,0x01,
0x37,0x03,0x9F,0x03,0xA5,0x03,0xC4,0x03,0xCB,0x01,0xB9,0xFF,0xC9,0xFE,0x37,0xFE,
0x48,0xFD,0x8D,0xFC,0x17,0xFD,0x68,0xFE,0x10,0x00,0xB7,0x00,0x5D,0x01,0x3C,0x03,
0x5C,0x03,0x13,0x02,0x13,0x01,0xE7,0xFF,0xF7,0xFE,0xEC,0xFD,0x1B,0xFD,0xF6,0xFC,
0x21,0xFE,0x90,0xFF,0x90,0xFF,0x35,0x00,0x89,0x01,0x07,0x02,0x7B,0x02,0x3B,0x02,
0xF2,0x01,0xD2,0x00,0x6F,0xFF,0x5D,0xFF,0xFE,0xFE,0xAF,0xFD,0x82,0xFD,0x7F,0xFE,
0xD3,0xFF,0x83,0xFF,0x63,0xFF,0x7B,0x01,0x2E,0x03,0x81,0x02,0x74,0x00,0x95,0x00,
0x4E,0x01,0x77,0x00,0x6D,0xFE,0xEA,0xFC,0xF4,0xFD,0xB1,0xFE,0x8C,0xFD,0x05,0xFE,
0x3F,0x00,0xC1,0x01,0x33,0x02,0x9E,0x01,0xF5,0x01,0xAF,0x02,0xA8,0x01,0xD0,0xFF,
0x4C,0xFE,0xE9,0xFD,0xD9,0xFD,0xE5,0xFD,0x76,0xFD,0x65,0xFE,0xBC,0x00,0xFA,0x01,
0xA9,0x01,0x78,0x01,0x47,0x02,0x4E,0x02,0xAD,0x00,0xB3,0xFF,0x47,0xFF,0xF9,0xFE,
0x80,0xFE,0xBD,0xFD,0x21,0xFE,0x10,0xFF,0xF4,0xFF,0x67,0x00,0xBF,0x00,0x9B,0x01,
0x8B,0x01,0x16,0x01,0x82,0x00,0x4F,0xFF,0x0B,0xFF,0x04,0xFF,0xFA,0xFE,0xF3,0xFE,
0xFC,0xFE,0xD9,0xFF,0x7B,0x00,0x47,0x00,0x10,0x00,0x25,0x00,0x53,0x01,0xAC,0x01,
0xEB,0x00,0x90,0xFF,0x18,0xFF,0xA1,0xFF,0x62,0xFF,0xD8,0xFE,0x50,0xFF,0x5D,0x00,
0x89,0x00,0xA1,0x00,0x02,0x01,0x0F,0x00,0x4B,0x00,0x86,0x00,0xC1,0xFF,0xA1,0xFF,
0xBE,0xFF,0x13,0xFF,0xB6,0xFE,0x06,0xFF,0x2C,0xFF,0x7D,0xFF,0xC9,0x00,0xAF,0x00,
0x4A,0x00,0xCD,0x00,0x86,0x00,0x42,0x00,0x3D,0x00,0xB8,0xFF,0x33,0xFF,0x09,0xFF,
0xF9,0xFE,0xC1,0xFE,0xDE,0xFF,0x69,0x01,0x06,0x01,0xCB,0x00,0x61,0x00,0x70,0x00,
0x33,0x01,0xBD,0x00,0xA6,0xFF,0x18,0xFF,0x44,0xFF,0x67,0xFF,0xBB,0xFE,0x63,0xFF,
0x15,0x00,0xC9,0xFF,0x2B,0x00,0x5C,0x00,0xC4,0x00,0xDF,0x00,0x13,0x00,0x07,0xFF,
0xD6,0xFE,0xEE,0xFF,0xFD,0xFF,0x4D,0xFF,0x2E,0x00,0x5D,0x00,0x0E,0x00,0x52,0x00,
0xDE,0x00,0xA2,0x00,0x82,0xFF,0x3E,0xFF,0x56,0xFF,0x9E,0xFF,0xF7,0xFF,0xD3,0xFF,
0x09,0x00,0xA4,0x00,0xAA,0x00,0x8A,0x00,0x68,0x00,0x5C,0x00,0x0F,0x00,0x5F,0xFF,
0xE3,0xFE,0x53,0xFF,0xFA,0xFF,0xAB,0xFF,0x04,0xFF,0x8D,0xFF,0x12,0x00,0x42,0x00,
0x3F,0x00,0xFB,0xFF,0x08,0x00,0x25,0x00,0x30,0x00,0x6E,0x00,0x3C,0x00,0xB3,0xFF,
0x4D,0xFF,0x06,0xFF,0x02,0xFF,0x6F,0xFF,0x0E,0x00,0x8D,0x00,0x61,0x00,0x6B,0x00,
0x8E,0x00,0xBB,0x00,0x9F,0x00,0x06,0x00,0xB1,0xFF,0x8C,0xFF,0x56,0xFF,0xEE,0xFE,
0xFA,0xFE,0xED,0xFF,0x3F,0x00,0x38,0x00,0xD7,0x00,0x68,0x01,0x6B,0x01,0xDB,0x00,
0x05,0x00,0x8A,0xFF,0x6D,0xFF,0x43,0xFF,0xED,0xFE,0xCD,0xFE,0xD5,0xFE,0x67,0xFF,
0x73,0x00,0x0E,0x01,0xF5,0x00,0x55,0x01,0x2C,0x01,0x25,0x00,0xB4,0xFF,0x9C,0xFF,
0x41,0xFF,0x3F,0xFE,0x1A,0xFE,0x87,0xFE,0x09,0xFF,0x0F,0x00,0xD7,0x00,0x30,0x01,
0x7F,0x01,0x4D,0x01,0xDC,0x00,0xDA,0x00,0x53,0x00,0x36,0xFF,0x97,0xFE,0x97,0xFE,
0xDF,0xFE,0xAD,0xFE,0x02,0xFF,0xC7,0xFF,0x7F,0x00,0x4B,0x01,0x21,0x01,0x28,0x01,
0x4F,0x01,0x33,0x00,0xFC,0xFF,0x7C,0xFF,0x0E,0xFF,0x8C,0xFF,0x75,0xFF,0x88,0xFF,
0xD7,0xFF,0x04,0x00,0x1E,0x00,0x99,0xFF,0x04,0x00,0x0F,0x00,0x19,0x00,0x65,0x00,
0xE5,0xFF,0xD0,0xFF,0x3B,0x00,0x4F,0x00,0x19,0x00,0xDB,0xFF,0x17,0x00,0xE8,0xFF,
0x7C,0xFF,0xA0,0xFF,0xD0,0xFF,0xB9,0xFF,0xCC,0xFF,0x26,0x00,0x49,0x00,0x05,0x00,
0x1B,0x00,0x8C,0x00,0x49,0x00,0xDC,0xFF,0xAD,0xFF,0xEA,0xFF,0x0D,0x00,0x25,0xFF,
0xB1,0xFE,0x77,0xFF,0xFB,0xFF,0x1A,0x00,0xFF,0xFF,0x68,0x00,0xEC,0x00,0xDF,0x00,
0x73,0x00,0x08,0x00,0x16,0x00,0xF8,0xFF,0x97,0xFF,0x68,0xFF,0x4D,0xFF,0xA5,0xFF,
0x09,0x00,0xFD,0xFF,0xFD,0xFF,0x27,0x00,0x42,0x00,0x25,0x00,0x0C,0x00,0x06,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};

チーン音 (Ding.C)

const unsigned char cheen[2440]={ 
0x36,0xFE,0x42,0xFF,0xEA,0x01,0xBD,0xFF,0x2D,0xFE,0xFD,0x01,0x3B,0xFF,0x63,0xFA,
0xB7,0xFD,0x2C,0x05,0xC3,0x01,0x57,0xFE,0xA2,0xFF,0x35,0x01,0x72,0xFC,0x50,0xFF,
0xD6,0x01,0xC3,0xFF,0xDB,0xFE,0xC2,0x02,0x45,0x04,0x3D,0x01,0xC8,0xFF,0xE2,0xFE,
0xBD,0xFD,0x40,0xFF,0xA6,0x01,0xD4,0x00,0x9B,0xFE,0xD6,0x01,0x62,0x00,0x63,0xFD,
0x5E,0xFF,0xEE,0x00,0x0F,0x00,0xDB,0xFD,0xA6,0x00,0xB9,0x00,0xDD,0xFC,0xDD,0xFF,
0xB0,0x01,0xB7,0xFE,0xEE,0xFC,0xED,0xFE,0xEE,0x00,0x77,0xFF,0xFA,0x00,0xBA,0x03,
0x3B,0x00,0x9C,0xFF,0x5C,0x02,0xD6,0x00,0x82,0x00,0x1C,0x04,0xF7,0x03,0x50,0xFF,
0xA2,0xFE,0x22,0x01,0x0E,0xFE,0xD0,0xF9,0x2D,0x05,0xA8,0xFE,0x2F,0xFC,0xD9,0x01,
0xC3,0x01,0x57,0x01,0x81,0xFE,0xEC,0x04,0x79,0x00,0xFF,0xFF,0x85,0x01,0xF9,0xFF,
0x2C,0xFC,0x95,0xFF,0x3D,0x00,0x4D,0xFD,0x29,0xFC,0x7F,0x00,0x16,0x01,0x2F,0xFE,
0x47,0x01,0x0D,0x00,0x12,0xFE,0xE1,0x02,0xB6,0x01,0xDB,0x00,0x2E,0xFC,0x29,0x02,
0xCD,0xFF,0x74,0xFE,0xD9,0xFE,0xD5,0xFD,0x79,0xFC,0x29,0xFD,0x85,0x01,0x17,0xFF,
0xBD,0xFD,0xAE,0x03,0xC3,0x03,0x89,0x01,0x28,0x00,0xEA,0x02,0xB8,0xFF,0x21,0xFC,
0x5C,0x00,0xB0,0x00,0xC6,0xFE,0x62,0x01,0xD0,0x02,0xCE,0xFE,0x63,0x01,0xB1,0x01,
0xC8,0x02,0x1E,0x00,0xDB,0xFE,0x6B,0xFE,0xEF,0xFD,0x54,0x00,0x62,0x01,0x77,0xFF,
0x85,0x00,0x87,0xFE,0xD9,0x00,0x6F,0x01,0x82,0xFF,0x0D,0x02,0x5A,0x05,0xE5,0xFF,
0x78,0x00,0x6C,0xFD,0x92,0xFE,0x48,0x00,0x61,0xFF,0xC9,0xFE,0xFD,0xFE,0x06,0x03,
0xC6,0xFE,0xC4,0xFD,0x8A,0xFE,0x18,0xFD,0x9B,0xFD,0xCB,0xFE,0x67,0xFD,0x41,0xFA,
0x8E,0xFD,0xDA,0xFF,0x4B,0x01,0x7E,0x02,0x6D,0x00,0x75,0xFB,0x72,0xFF,0xFB,0x09,
0x69,0x06,0xDE,0xF6,0x68,0xF3,0x0E,0xF6,0x57,0x00,0xCA,0x1F,0x14,0x19,0xC4,0xF6,
0xD6,0xED,0xAB,0x06,0x04,0x1A,0x95,0x07,0x55,0x21,0xA6,0x01,0x3C,0xD6,0x6F,0xE0,
0x09,0x00,0xCB,0x01,0x16,0xFF,0x92,0x1B,0x3E,0x02,0xAC,0xF6,0xA0,0x1D,0x7C,0x14,
0xEC,0x09,0xE4,0xD8,0x32,0xD6,0x0D,0xC2,0xFC,0xFE,0x9B,0x4F,0xD1,0xF8,0xFA,0x82,
0x58,0xD3,0x48,0x39,0x96,0x21,0xD9,0x05,0xEA,0x55,0xD1,0x54,0x8D,0x0D,0x82,0x12,
0xE9,0x2E,0xAA,0x07,0xCE,0xE5,0x62,0xE1,0xC6,0xF0,0xF9,0x1D,0x1C,0xFF,0xF0,0xC9,
0x0D,0xDA,0x38,0x22,0x79,0x08,0x85,0xDA,0x9C,0x18,0x45,0xFA,0xCE,0x9E,0x9A,0xCB,
0x4B,0x51,0x3C,0x28,0x24,0xE6,0x76,0xF8,0x1D,0x15,0x08,0xBE,0x9D,0xF5,0x1E,0x21,
0x38,0xFA,0x73,0xF1,0xBC,0x36,0x63,0x47,0xEB,0x11,0x5D,0xF8,0x18,0xE5,0x6E,0xDD,
0x84,0xFE,0x42,0x1B,0xCB,0x01,0xAF,0xF9,0x57,0x17,0x48,0xEF,0x08,0xDF,0x8C,0x01,
0xFC,0x08,0x19,0xEC,0x87,0xF2,0xD4,0x0C,0xBC,0xE4,0x49,0xE6,0x0A,0x13,0xD3,0xFB,
0xDB,0xD0,0xEE,0xDE,0x64,0x05,0x29,0xFE,0xC4,0x0C,0x4E,0x3B,0x05,0x10,0x03,0xFA,
0x7C,0x27,0xCC,0x13,0x7E,0x0B,0xF4,0x49,0x64,0x4B,0x43,0xF4,0xF7,0xE5,0xF2,0x14,
0x8C,0xD5,0xD5,0x9A,0x2B,0x55,0x35,0xE1,0xCB,0xC6,0xA7,0x22,0x88,0x20,0xE9,0x0B,
0x78,0x01,0xA0,0x45,0xBB,0x06,0x98,0x09,0xE5,0x13,0xF0,0xE3,0xAE,0xD0,0xC8,0xFD,
0x87,0xEC,0xDC,0xC2,0xD9,0xDF,0xAF,0x0F,0xF0,0xF4,0x7B,0xFE,0xA6,0x09,0xEC,0xE8,
0x00,0x16,0xD0,0x27,0xF7,0x14,0x25,0xCE,0x8D,0x0C,0x79,0x07,0x3C,0xE8,0x4A,0xE8,
0x4E,0xD9,0x35,0xC0,0x82,0xC8,0x72,0x16,0x82,0xF1,0x20,0xD6,0x12,0x45,0x33,0x46,
0x3F,0x1B,0xB0,0x06,0x2A,0x33,0x3F,0xF3,0xE3,0xC1,0x3E,0x07,0x6D,0x07,0x12,0xF3,
0x00,0x20,0x5D,0x21,0x8F,0xF6,0xAF,0x1C,0xEA,0x26,0xE8,0x24,0xD5,0xF8,0xC4,0xE6,
0xFF,0xDD,0x65,0xEE,0x5F,0x10,0xC9,0x07,0xF7,0x01,0x5A,0xF3,0x60,0xFD,0x53,0x14,
0x79,0xF2,0x8F,0x04,0x71,0x32,0x24,0x0E,0x0E,0xFE,0x31,0xD5,0x08,0xE8,0x02,0x09,
0x90,0x0C,0x51,0xEB,0x5B,0xEA,0xBA,0x3C,0x9B,0x23,0xBE,0xC4,0xC9,0xC7,0x2C,0xF7,
0x7C,0xE1,0x2B,0xE0,0xFB,0x04,0xF5,0xE6,0x0A,0xE9,0x04,0xE5,0x47,0x14,0x03,0x26,
0x8A,0x10,0xDF,0x15,0x98,0xF9,0x1F,0x04,0xE9,0x0F,0xD9,0x08,0x19,0x07,0x0D,0x00,
0x25,0xFD,0x2F,0xF3,0x8F,0x05,0xE7,0x24,0x10,0xFB,0xA0,0xE7,0xD1,0x00,0xB9,0x23,
0x45,0x2A,0x04,0x0A,0xBF,0x04,0x7A,0xE6,0x7D,0xDD,0x85,0xF0,0x5E,0x07,0x62,0x0F,
0x2A,0x11,0xF7,0xFA,0x31,0x10,0xBF,0x12,0x39,0x2D,0x13,0x01,0x9E,0xD0,0xED,0xDD,
0x6D,0xF7,0x1C,0xE1,0xC6,0xFB,0x7E,0xE3,0x10,0xEA,0xB7,0xF0,0x2E,0xEC,0x81,0x02,
0x7E,0x23,0x1D,0x1D,0xA5,0x1A,0x87,0x00,0xA3,0xF6,0x3A,0xF4,0xCC,0x0F,0x10,0x16,
0xFE,0x02,0x42,0x05,0xA3,0x0B,0x69,0x10,0xDE,0xF5,0xD5,0xE6,0xD6,0xED,0x8F,0xE9,
0x27,0xF3,0xF1,0x10,0xA6,0x12,0xE0,0x07,0xD8,0x0D,0x0E,0x0D,0x34,0xF4,0xEA,0x0F,
0xD1,0x1F,0xDA,0x06,0x27,0xFF,0x7B,0x02,0x4A,0xED,0x1D,0xE8,0x58,0xEF,0x07,0xFD,
0xEF,0xED,0x30,0x1B,0x6C,0x0D,0x05,0x09,0x3E,0xFA,0xE6,0xF2,0xEE,0xE4,0x4E,0xE9,
0x8A,0x12,0xA2,0x05,0xE7,0xF0,0xFD,0xF9,0x14,0xFF,0x94,0xFF,0x8F,0x08,0x3F,0x06,
0x50,0x04,0xD5,0x00,0xF8,0xF6,0x9D,0xED,0x03,0xFF,0xE7,0x15,0xD3,0x05,0x81,0xF2,
0x7B,0xF3,0x57,0x13,0xB6,0x15,0xB2,0x12,0x6B,0x0C,0xD2,0x01,0x46,0xFE,0xE3,0xF9,
0xD7,0x0F,0xAD,0xF8,0x8F,0xF0,0x80,0xFB,0xF2,0x0D,0x31,0xEE,0x88,0xF9,0x97,0x0B,
0x25,0xED,0x3F,0xF7,0x9D,0xF6,0xBA,0x08,0x83,0x06,0x35,0x16,0xD4,0xF7,0xB1,0xF7,
0x84,0x0A,0x92,0x13,0xC4,0x04,0x12,0xFE,0xD7,0xFD,0xC8,0xED,0xD2,0xF7,0xBB,0xF2,
0xA4,0xF7,0xCF,0xFE,0x5A,0xFE,0x15,0xEC,0x46,0xF3,0xA6,0x11,0xD3,0x0B,0xA4,0xFD,
0x38,0xF6,0xB6,0xFA,0xDB,0xFC,0xB7,0x06,0xB7,0x05,0x0D,0x04,0x48,0x05,0x3E,0xF9,
0x4E,0xEF,0x67,0x01,0xC8,0x13,0x11,0x08,0xF1,0x07,0x76,0xF7,0x66,0x15,0xDC,0x01,
0x28,0xF5,0xF9,0xFD,0x0B,0xF6,0x1A,0x0A,0xFA,0xFF,0x5C,0x27,0x2C,0xFC,0x5B,0xFF,
0xCF,0x02,0x7C,0x10,0x62,0x08,0x57,0x08,0x02,0x10,0x4E,0xEB,0x84,0xFF,0xB5,0xF7,
0x19,0xF3,0x0F,0xF8,0x36,0x05,0xA6,0xEE,0x45,0xF6,0x54,0x0A,0xCA,0x05,0x06,0xF8,
0xE6,0xF4,0x65,0xF7,0x10,0xFF,0x4E,0x14,0x2D,0x07,0x13,0x02,0x59,0x01,0x85,0xFC,
0x82,0xE3,0x19,0xF9,0xD9,0x00,0x44,0xFB,0x66,0x01,0x6F,0xF1,0x5E,0x09,0x93,0xF2,
0x9C,0x0E,0x5F,0xFD,0x79,0x13,0x85,0xF6,0xC3,0xFA,0xCF,0x07,0x0E,0x06,0x79,0xF8,
0xA3,0xF6,0x8A,0x08,0x35,0xED,0xF0,0x09,0x0C,0x0D,0xCC,0xFF,0x2C,0x01,0x50,0x0E,
0xEE,0x10,0xF7,0xFC,0x5F,0x0C,0x5C,0x00,0x11,0xFC,0xBB,0x07,0x1A,0x09,0x5D,0xF8,
0xE2,0xFF,0x06,0xF9,0xC7,0xF8,0xC5,0x01,0xFD,0xFF,0xF4,0xF6,0x18,0xFD,0x42,0x09,
0x7E,0xF3,0xFC,0xFE,0x19,0xF9,0x8A,0xFF,0xB1,0xF6,0x2C,0x04,0xB7,0xF7,0x83,0x09,
0xE6,0x0E,0x85,0xEE,0x53,0x00,0xAE,0xFE,0xA5,0x0C,0x48,0xFD,0x34,0x0A,0xC5,0x01,
0xB1,0x05,0x3D,0x0B,0x53,0xF8,0x38,0x02,0xCB,0x08,0xB0,0x05,0xA2,0xF9,0xAF,0x08,
0x59,0xFD,0xEC,0xF4,0xC2,0xF5,0x72,0xF0,0x3D,0xEC,0x3C,0xF6,0xD0,0x06,0x36,0xF9,
0xBE,0x05,0xDF,0x06,0x7F,0xFC,0xA3,0xF7,0x35,0x02,0x96,0xFC,0x52,0x07,0x0B,0x08,
0x88,0xFA,0x65,0xFB,0x60,0xFE,0xC9,0xFE,0x75,0xFA,0x5B,0x0E,0xA1,0x02,0xE2,0x00,
0xE2,0x04,0x53,0x00,0xFC,0x06,0xDF,0x02,0xE5,0x01,0x6B,0xEF,0xE2,0x1C,0x63,0x06,
0x0A,0xFA,0xDB,0x02,0x9E,0x07,0xDF,0xF3,0xB0,0xFC,0xDC,0x0B,0x7C,0x00,0xAC,0x0F,
0x60,0xFC,0xB5,0xF3,0x1F,0x05,0x47,0x12,0xA1,0xFD,0xCE,0xFD,0xFA,0x11,0xDC,0x01,
0xDF,0xFD,0x98,0x05,0xFB,0xF8,0x94,0xF2,0x3E,0x03,0xB7,0xF7,0xB7,0xF6,0x59,0x00,
0x4F,0xFD,0x85,0xF4,0x7A,0xFF,0x83,0xFD,0x63,0xF9,0x3F,0x08,0x5D,0x03,0x01,0xF5,
0xD0,0xF4,0xF8,0x13,0x7F,0x01,0xF7,0x01,0x6B,0xFB,0x52,0xF2,0xCA,0x0C,0x8B,0xF8,
0xF5,0xF7,0x00,0xF5,0x52,0x0A,0x2B,0xF6,0x49,0xF9,0x24,0x0E,0xF0,0x00,0x0A,0x02,
0x4B,0x03,0xCC,0x02,0x65,0xFF,0x91,0x0F,0xC5,0xFA,0xA7,0xF7,0xC3,0x02,0xC8,0xFC,
0x3B,0xFA,0xEF,0x07,0xF1,0x04,0x46,0xF9,0x43,0x08,0x4A,0x04,0x25,0xFC,0xF1,0x04,
0xC4,0x08,0x58,0xF7,0x0E,0x04,0x28,0x04,0xA6,0xFB,0xA5,0xFF,0x02,0x07,0x6D,0x00,
0x68,0xF5,0xF6,0x13,0x6D,0xF7,0x95,0xFF,0x59,0xFD,0xE3,0xF9,0x4A,0xF8,0x46,0xFF,
0x49,0xFE,0xD3,0xF5,0xC4,0x0D,0x6C,0xF6,0xEE,0xFA,0xF7,0x00,0xCD,0xFF,0x26,0xF7,
0x02,0x07,0x54,0x07,0x49,0xF7,0x5B,0x08,0xC6,0x03,0x6D,0xF8,0x0F,0xFF,0x29,0x0B,
0x00,0xFF,0xE7,0x02,0xE8,0x06,0x27,0xFA,0x35,0xFE,0xA5,0x05,0xF0,0xFA,0x73,0xFE,
0x19,0x08,0xF4,0xF6,0xA6,0xFB,0x6C,0x03,0xC9,0x03,0x1D,0xF9,0x24,0x08,0xAB,0xFF,
0x7E,0x01,0x02,0x0C,0x35,0xFC,0xEB,0xFD,0x73,0xFD,0x53,0x04,0x37,0xEE,0xF2,0x0C,
0x42,0x06,0x3B,0xFA,0x44,0x02,0x84,0xFE,0x0C,0x02,0xBC,0x00,0xCB,0x0B,0x3A,0xFB,
0x3C,0x05,0x3B,0x04,0x83,0xF6,0x07,0xFD,0x44,0x02,0xE1,0xFA,0x45,0xFD,0x9C,0x08,
0x7B,0xFA,0x48,0xFD,0x76,0x01,0x16,0xFE,0x99,0xFC,0xA1,0x06,0x75,0xFA,0xEC,0xFD,
0xBA,0x09,0x25,0xFD,0x56,0xF8,0x53,0x01,0xC3,0x01,0xD4,0xF6,0x8A,0x07,0x9D,0xFB,
0xD7,0xFB,0xEA,0x01,0x2F,0xFE,0xC3,0xF4,0xEE,0x01,0x6C,0x12,0xD0,0xF0,0x87,0x0A,
0x01,0x04,0x3D,0xFD,0x4A,0xFE,0x2F,0x07,0x95,0xFE,0x4B,0xFA,0x02,0x0C,0xA0,0xF7,
0xA7,0xFE,0xBA,0x07,0xD5,0xFF,0x14,0xFA,0xEE,0x08,0x2F,0x03,0xC1,0xF7,0x6C,0x05,
0x1E,0x00,0xE7,0xFD,0x0E,0x04,0x82,0x03,0x63,0xF9,0x4E,0x06,0xBA,0x00,0xC1,0xF8,
0x78,0x00,0xD9,0x05,0x83,0xF8,0x99,0xFC,0x0F,0x02,0x50,0xF7,0xE4,0x03,0xA1,0x02,
0xE2,0xFE,0x92,0xFC,0x26,0x09,0xFC,0xF8,0x60,0xFE,0x19,0x07,0x70,0xF9,0x16,0xFE,
0x70,0x02,0xEE,0x04,0x7A,0xF6,0x9F,0x0C,0x46,0xFC,0x07,0xFA,0x7D,0x07,0xD8,0x00,
0x85,0xFE,0xEB,0x01,0x36,0x07,0xE7,0xF5,0x36,0x04,0xE4,0x02,0x22,0xFC,0x8C,0x03,
0x4E,0x04,0xCC,0xFA,0xF3,0xFF,0xD5,0x06,0xF1,0xFA,0xF0,0xFE,0xC3,0x02,0x8A,0xFD,
0x14,0xFD,0xFE,0x06,0x65,0xFA,0x3E,0xFF,0x0F,0x02,0x59,0xFB,0x7E,0xFB,0x76,0x02,
0xF3,0xFF,0x76,0xF7,0xF6,0x09,0x4E,0xF9,0x43,0xFD,0x73,0x00,0xF9,0xFE,0x81,0xF8,
0xD5,0x03,0xF8,0x06,0xFD,0xF3,0xB2,0x0A,0x3E,0x00,0x04,0xFD,0x3D,0x00,0xC7,0x08,
0xEA,0xFA,0x49,0xFE,0x64,0x08,0xFD,0xF5,0x25,0x01,0xBF,0x02,0xFB,0x00,0x1D,0xFE,
0xEE,0x08,0x9B,0xFD,0xB9,0xFC,0x14,0x06,0x7E,0xFE,0xCF,0xFE,0x5D,0x06,0x6C,0x02,
0xD6,0xFB,0xA2,0x05,0x65,0xFF,0x40,0xFF,0x18,0x02,0xBC,0x01,0xC2,0xFA,0xCA,0x06,
0xD2,0xFF,0x18,0xF8,0xF4,0x05,0x83,0xFE,0xE7,0xFB,0x5C,0xFD,0xA4,0x07,0x65,0xF5,
0x35,0x02,0xBC,0x01,0xBD,0xF4,0xFC,0xFE,0xD4,0x00,0x6C,0xFD,0xC8,0xF7,0x56,0x0B,
0x84,0xF7,0xD8,0xFC,0x13,0x05,0xEF,0xFC,0x2F,0xFC,0x5E,0x03,0x32,0x02,0xB5,0xF9,
0xD0,0x06,0xE2,0xFC,0x0A,0xFB,0x35,0x03,0x85,0x03,0x4B,0xFC,0x0A,0x05,0x9B,0x03,
0x98,0xFB,0x3B,0x03,0x2F,0x04,0xD4,0xFD,0x41,0x02,0xE0,0x06,0xD7,0xFA,0x03,0x04,
0xD9,0x01,0x2E,0xFD,0xB1,0xFE,0xA8,0x05,0x11,0xFD,0x4D,0xFD,0x50,0x0C,0x1C,0xF9,
0xBA,0x01,0x79,0x02,0x54,0x01,0x49,0xF9,0x05,0x0A,0x23,0x01,0xE7,0xF6,0xC1,0x0B,
0x89,0xFC,0x0F,0xFD,0xA1,0xFF,0xB0,0x05,0x8A,0xF7,0x29,0x03,0x28,0x04,0xE9,0xF8,
0xA8,0x02,0xA9,0x00,0x21,0xFD,0xD8,0xFD,0x88,0x05,0xD4,0xFA,0xDC,0xFF,0xF5,0x02,
0x09,0xFB,0x57,0xFB,0x04,0x02,0xBA,0xFC,0xBA,0xFD,0x32,0x04,0x96,0xFC,0xD2,0xFF,
0xE4,0x02,0x19,0x00,0x63,0xF9,0x65,0x08,0x51,0xFF,0xAE,0xFD,0xEB,0x05,0xE7,0xFF,
0xC4,0xFD,0xC8,0x00,0x61,0x06,0x5E,0xF5,0xF0,0x08,0x12,0x02,0xDA,0xFA,0xB7,0x02,
0x35,0x03,0x14,0xFD,0x77,0xFD,0x87,0x0A,0xC5,0xF9,0x0D,0x03,0x9F,0x04,0x1C,0xFF,
0x8B,0xFF,0x47,0x05,0x0A,0x00,0xAD,0xFC,0x27,0x06,0xC4,0xFD,0xB1,0xFD,0xF1,0x01,
0xE3,0xFF,0x6D,0xFC,0xB0,0x03,0x5D,0xFE,0x14,0xFD,0xF7,0x01,0x5C,0x00,0x83,0xFC,
0xBA,0x01,0x66,0x01,0x30,0xFA,0x60,0x05,0x10,0x00,0x5A,0xFE,0x91,0xFE,0x6A,0x03,
0x1C,0xF9,0xCF,0x00,0x3E,0x06,0x3C,0xF7,0x4E,0x03,0x8B,0x00,0x87,0xFD,0x03,0xFA,
0xDC,0x07,0xA6,0xFB,0xB7,0xFB,0xE8,0x06,0x7F,0xFB,0xE0,0xFE,0x4D,0x01,0x69,0x02,
0x95,0xF9,0x06,0x05,0x43,0x00,0x87,0xFC,0x5E,0x04,0x0A,0x01,0x8D,0xFE,0x8B,0x01,
0xBC,0x02,0x75,0xFB,0x6D,0x03,0x0D,0x02,0x29,0xFE,0x23,0x01,0xAB,0x03,0xCA,0xFB,
0x10,0x02,0x8F,0x04,0x1B,0xFD,0x86,0x02,0xB1,0x03,0x4D,0x00,0x1B,0xFD,0x3C,0x08,
0xB2,0xFA,0x75,0x00,0x30,0x05,0xE8,0xFD,0x90,0xFD,0xA1,0x03,0x04,0x03,0x9C,0xF4,
0x1A,0x08,0x45,0xFD,0x1C,0xFC,0xDC,0x01,0x1C,0x01,0x36,0xFC,0x94,0xFF,0x70,0x04,
0xA8,0xF7,0xE7,0x02,0x44,0x01,0x08,0xFD,0x84,0xFF,0x64,0x03,0xF1,0xFC,0x40,0xFE,
0x61,0x03,0xC4,0xFB,0xDC,0xFE,0xB0,0x02,0x84,0xFE,0xA0,0xFD,0x97,0x03,0xE2,0xFC,
0x40,0xFF,0x09,0x03,0x5D,0xFF,0xFD,0xFB,0x8E,0x03,0xB1,0xFF,0x98,0xFB,0x8C,0x05,
0x52,0xFD,0x1A,0xFF,0xBA,0x00,0xD2,0x03,0x3E,0xF9,0x63,0x05,0x48,0x04,0x77,0xF8,
0x1D,0x05,0xBF,0x01,0x7A,0xFF,0x05,0xFE,0xE2,0x07,0xAA,0xFB,0x4E,0x00,0x45,0x05,
0x5F,0xFC,0x5D,0x00,0xB9,0x02,0x76,0x01,0x8F,0xFC,0x5E,0x05,0x0B,0xFE,0x2C,0xFE,
0xED,0x02,0xA8,0xFF,0xE7,0xFD,0x86,0x02,0x72,0x00,0xBE,0xFC,0x66,0x02,0xDC,0xFE,
0x87,0xFD,0x84,0x00,0xE4,0x01,0x6F,0xFB,0x47,0x03,0x16,0x00,0x70,0xFC,0xBC,0x00,
0xFA,0xFF,0xA5,0xFD,0x29,0xFF,0xFA,0x05,0x76,0xF8,0x97,0x02,0xD3,0x01,0x3C,0xFD,
0x6E,0xFE,0xA4,0x03,0x63,0xFF,0xD9,0xF9,0x26,0x08,0xE6,0xFA,0xF6,0xFE,0xF1,0x01,
0xB3,0xFF,0xC6,0xFC,0x29,0x02,0x5C,0x02,0x1E,0xFB,0xE1,0x03,0x7F,0xFF,0x63,0xFE,
0x98,0x00,0x20,0x02,0x18,0xFD,0x22,0x02,0x0D,0x02,0x09,0xFD,0x91,0x01,0xD6,0x01,
0x6D,0xFD,0xE9,0xFF,0x80,0x03,0x30,0xFD,0xB7,0x01,0xEA,0x01,0x74,0xFE,0x7B,0xFE,
0xDF,0x04,0x3F,0xFD,0xC6,0xFE,0xA8,0x05,0x0B,0xFC,0xB1,0xFF,0x81,0x01,0xD8,0x01,
0xF6,0xF9,0xAB,0x06,0xA6,0xFF,0x6C,0xFA,0x19,0x05,0x1B,0xFF,0x18,0xFE,0xEC,0xFF,
0x5F,0x03,0xA4,0xFB,0x69,0x01,0x36,0x01,0x0E,0xFE,0x3A,0x00,0x7A,0x00,0x6F,0xFF,
0x7E,0xFF,0xAF,0x00,0x9C,0xFF,0xFE,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};