/*******************************************************************************
- Copyright (C) 2015 CoopTec(Katsuyoshi Takahama) All Rights Reserved.
- CoopTec Web site : http://www.cooptec.jp/
-******************************************************************************/
--------------------------------------------------------------------------------
■ Melodyクラスライブラリの使用手順                                2016/01/11 ■
--------------------------------------------------------------------------------
◆ハードウェアの準備

　１．次のマイコンボードを準備する。

　　　ARDUINO UNO or ARDUINO PRO MINI 等
　　　GR-SAKURA
　　　GR-KURUMI

  ２．圧電スピーカーを準備する。

　　　動作確認委は ELEKIT社の 薄型スピーカ（27mm） [ AP-204 ] を使いました。

　３．圧電スピーカーを PIN6(PWM出力可能なピン) と GND に接続する。


◆MelodyクラスライブラリのIDE開発環境に導入

　１．Arduino-IDE 又は GR-IDEを起動する。

　　　まだ開発環境をパソコン導入していない場合は
　　　
　　　　ARDUINO-IDE : 
　　　　　https://www.arduino.cc/

　　　　GR-IDE : 
　　　　　 http://japan.renesasrulz.com/gr_user_forum_japanese/m/32389e4b8f/222.aspx

　　　から取得できます。

　２．上部のメインメニューから

　　　　ARDUINO-IDE (日本語) の場合

　　　　　<１> [スケッチ]->[ライブラリの使用]->[add library...]

　　　　　<２> 解凍して作成されている MELODY.zip ファイルを選択する。

　　　　GR-IDE の場合

　　　　　<１> [スケッチ]->[ライブラリを使用]->[ライブラリをインストール...]

　　　　　<２> 解凍して作成されている MELODY.zip ファイルを選択する。

　　　以上で終了


◆Melodyクラスライブラリに付属のサンプルを試用

　１．Arduino-IDE 又は GR-IDEを起動する。

　　　まだ開発環境をパソコン導入していない場合は
　　　
　　　　ARDUINO-IDE : 
　　　　　https://www.arduino.cc/

　　　　GR-IDE : 
　　　　　 http://japan.renesasrulz.com/gr_user_forum_japanese/m/32389e4b8f/222.aspx

　　　から取得できます。

　２．上部のメインメニューから

　　　　ARDUINO-IDE (日本語) の場合

　　　　　<１> [スケッチ例]->[MELODY]->[kinkonkankon] を選択する。

　　　　　<２>  [ファイル]->[マイコンボードに書き込む]を選択する。

　　　　GR-IDE の場合

　　　　　<１> [スケッチ例]->[MELODY]->[kinkonkankon] を選択する。

　　　　　<２>  [ファイル]->[マイコンボードに書き込む]を選択する。

　　　以上でコンパイルと書き込み開始され正常に終了すれば、メロディーが鳴ります。


--------------------------------------------------------------------------------
■ Melodyクラスライブラリの説明　　                                           ■
--------------------------------------------------------------------------------

　１．テンポ（リズム or 拍子）を設定する。

　　　void setMM(uint8_t MM_ONPU, uint16_t MM_VALUE);

  　　MM_ONPU : MM_WHOLE     全音符
    　　        MM_HALF      ２分音符
  　    　      MM_CROTCHET  ４分音符
   　     　    MM_EIGHTH    ８分音符
    　      　  MM_SIXTEENTH １６音分符

　　　MM_VALUE：メトロノーム値

　　　例；４分音符を１分間で60拍子としたい場合は

　　　　　Melody.setMM(MM_CROTCHET, 60);

　　　　　となる。

　２．音程（オクターブ）を設定する。

　　　void setOctave(uint8_t NO);

 　   NO　；　1～7  

　　　例：ソの周波数が440Hxの音程（オクターブ）にしたい場合は

　 　　　 Melody.setOctave(4);

　　　　　となる。

　３．メロディーを作成する。

　　　次の使用する記号を使ってデータ配列を作成する。

　　　ONP_oo(x)y(z)
　　　    || | | |
　　　    || | | +--> オクターブ
　　　    || | |       省略 : setOctave関数で指定したオクターブ
　　　    || | |          U : 1オクターブ上
　　　    || | |          D : 1オクターブ下
　　　    || | | 
　　　    || | +----> 音(休)符の種類
　　　    || |          1  : 全音(休)符
　　　    || |          2  : ２分音(休)符
　　　    || |          4  : ４分音(休)符
　　　    || |          8  : ８分音(休)符
　　　    || |          16 : １６分音(休)符
　　　    || |
　　　    || +------> 半音程
　　　    ||            省略 : 通常音
　　　    ||               S : シャープ（半音上）
　　　    ||
   　     ++--------> 音種
　　　                  DO : ド
　　 　                 RE : レ
　　　                  ME : ミ
　　　                  FA : ファ
　　　                  SO : ソ
　　　                  RA : ラ
　　　                  SI : シ
  　                    KU : 休み

　　　ONP_END
　　　    |||
  　      +++------> データ配列末尾

　　　例：学校のチャイム（キーンコーンカーンコーン）のデータ配列は

          uint16_t kinkonkankon[] = {
            ONP_DO4 ,  ONP_MI4 ,  ONP_RE4 , ONP_SO2D, ONP_KU4 ,
            ONP_SO4D,  ONP_RE4 ,  ONP_MI4 , ONP_DO2 , ONP_KU4 ,
            ONP_MI4 ,  ONP_DO4 ,  ONP_RE4 , ONP_SO2D, ONP_KU4 ,
            ONP_SO4D,  ONP_RE4 ,  ONP_MI4 , ONP_DO2 , ONP_KU4 ,
            ONP_END
           };

　　　　　と記述する。

　４．演奏させる。

 　 　void play(uint16_t *DATA);

　　　DATA　：　３．で作成した音休符号データ配列のポインタ値（先頭アドレス）

　　　例：メロディーデータ配列を

  　　　　　uint16_t data[] = { ONP_DO2, ONP_RE2. ONP_MI3, ONP_END };　※最後のデータは必ず ONP_END とすること。

　  　　　とした場合は

　　　　　　Melody.play(data);

　　　　　となる。


--------------------------------------------------------------------------------
■ Melodyクラスライブラリを使ったサンプルスケッチ　　                          ■
--------------------------------------------------------------------------------

　学校のチャイム（キーンコーンカーンコーン）を奏でる。

          #include <Arduino.h>
          #include "Melody.h"

          uint16_t kinkonkankon_mm_crotchet = 60;
          uint8_t  kinkonkankon_octave  = 5;
          uint16_t kinkonkankon[] = {
            ONP_DO4 ,  ONP_MI4 ,  ONP_RE4 , ONP_SO2D, ONP_KU4 ,
            ONP_SO4D,  ONP_RE4 ,  ONP_MI4 , ONP_DO2 , ONP_KU4 ,
            ONP_MI4 ,  ONP_DO4 ,  ONP_RE4 , ONP_SO2D, ONP_KU4 ,
            ONP_SO4D,  ONP_RE4 ,  ONP_MI4 , ONP_DO2 , ONP_KU4 ,
            ONP_END
          };

          void setup()
          {
            Melody.setPwmPin(6);  // PWM出力ピン番号セット
            Melody.setMM(MM_CROTCHET, kinkonkankon_mm_crotchet); // テンポ設定
            Melody.setOctave(kinkonkankon_octave); // 音程設定
          }

          void loop() 
          {
            Melody.play(kinkonkankon); // 演奏開始
          }


※プログラムコード同様に、楽譜、曲、詞にも著作権は存在します。
　著作権を順守して楽しみましょう。

