From e72a1b4d03843ced0ea52d0b6eb869a88853da5e Mon Sep 17 00:00:00 2001
From: rotcehdnih <Hector@3xa-gaming.net>
Date: Sun, 17 Aug 2014 19:09:05 +1000
Subject: [PATCH] Added Branch with tone library for RTTL playback on Arm &
 Disarm

---
 MavLink_FrSkySPort/MavLink_FrSkySPort.ino     |  45 +-
 ProminiTONE.jpg                               | Bin 0 -> 74365 bytes
 libraries/Tone/Tone.cpp                       | 786 ++++++++++++++++++
 libraries/Tone/Tone.h                         | 142 ++++
 libraries/Tone/changelog.txt                  |  17 +
 libraries/Tone/examples/DTMFTest/DTMFTest.pde |  46 +
 libraries/Tone/examples/RTTTL/RTTTL.pde       | 222 +++++
 libraries/Tone/examples/ToneTest/ToneTest.pde |  67 ++
 libraries/Tone/keywords.txt                   | 112 +++
 9 files changed, 1435 insertions(+), 2 deletions(-)
 create mode 100644 ProminiTONE.jpg
 create mode 100644 libraries/Tone/Tone.cpp
 create mode 100644 libraries/Tone/Tone.h
 create mode 100644 libraries/Tone/changelog.txt
 create mode 100644 libraries/Tone/examples/DTMFTest/DTMFTest.pde
 create mode 100644 libraries/Tone/examples/RTTTL/RTTTL.pde
 create mode 100644 libraries/Tone/examples/ToneTest/ToneTest.pde
 create mode 100644 libraries/Tone/keywords.txt

diff --git a/MavLink_FrSkySPort/MavLink_FrSkySPort.ino b/MavLink_FrSkySPort/MavLink_FrSkySPort.ino
index cb56a5e..4f8ad54 100644
--- a/MavLink_FrSkySPort/MavLink_FrSkySPort.ino
+++ b/MavLink_FrSkySPort/MavLink_FrSkySPort.ino
@@ -45,8 +45,34 @@ APM2.5 Mavlink to FrSky X8R SPort interface using Teensy 3.1  http://www.pjrc.co
  */
 
 #include <GCS_MAVLink.h>
+#include <Tone.h>
 #include "FrSkySPort.h"
 ////////////////////////////////
+Tone tone1;
+
+#define isdigit(n) (n >= '0' && n <= '9')
+
+#define OCTAVE_OFFSET 0
+
+int notes[] = { 0,
+
+NOTE_C4, NOTE_CS4, NOTE_D4, NOTE_DS4, NOTE_E4, NOTE_F4, NOTE_FS4, NOTE_G4, NOTE_GS4, NOTE_A4, NOTE_AS4, NOTE_B4,
+NOTE_C5, NOTE_CS5, NOTE_D5, NOTE_DS5, NOTE_E5, NOTE_F5, NOTE_FS5, NOTE_G5, NOTE_GS5, NOTE_A5, NOTE_AS5, NOTE_B5,
+NOTE_C6, NOTE_CS6, NOTE_D6, NOTE_DS6, NOTE_E6, NOTE_F6, NOTE_FS6, NOTE_G6, NOTE_GS6, NOTE_A6, NOTE_AS6, NOTE_B6,
+NOTE_C7, NOTE_CS7, NOTE_D7, NOTE_DS7, NOTE_E7, NOTE_F7, NOTE_FS7, NOTE_G7, NOTE_GS7, NOTE_A7, NOTE_AS7, NOTE_B7
+};
+
+//****************************************SONGS*****************************************************************
+
+
+char *song_armed = "MissionImp:d=16,o=6,b=95:32d,32d#,32d,32d#,32d,32d#,32d,32d#,32d,32d,32d#,32e,32f,32f#,32g,g,8p,g,8p,a#,p,c7,p,g,8p,g,8p,f,p,f#,p,g,8p,g,8p,a#,p,c7,p,g,8p,g,8p,f,p,f#,p,a#,g,2d,32p,a#,g,2c#,32p,a#,g,2c,a#5,8c,2p,32p,a#5,g5,2f#,32p,a#5,g5,2f,32p,a#5,g5,2e,d#,8d";
+char *song_disarmed =  "smbdeath:d=4,o=5,b=90:32c6,32c6,32c6,8p,16b,16f6,16p,16f6,16f.6,16e.6,16d6,16c6,16p,16e,16p,16c";
+
+char *song = "Gadget:d=16,o=5,b=50:32d#,32f,32f#,32g#,a#,f#,a,f,g#,f#,32d#,32f,32f#,32g#,a#,d#6,4d6,32d#,32f,32f#,32g#,a#,f#,a,f,g#,f#,8d#";
+
+//****************************************SONGS*****************************************************************
+uint8_t    song_played = 0;
+///////////////////////////////////////////////////////////////////////
 
 #define _MavLinkSerial      Serial1
 #define START                   1
@@ -117,11 +143,15 @@ void setup()  {
 
   FrSkySPort_Init();
   _MavLinkSerial.begin(57600);
+  //debugSerial.begin(57600);
   MavLink_Connected = 0;
   MavLink_Connected_timer=millis();
   hb_timer = millis();
   hb_count = 0;
 
+
+  tone1.begin(11);
+  play_rtttl(song_disarmed);
   pinMode(led,OUTPUT);
   pinMode(12,OUTPUT);
 
@@ -162,10 +192,21 @@ void loop()  {
   _MavLink_receive();                   // Check MavLink communication
 
   FrSkySPort_Process();               // Check FrSky S.Port communication
- 
-  adc2 =analogRead(0)/4;               // Read ananog value from A0 (Pin 14). ( Will be A2 value on FrSky LCD)
   
   
+  if(song_played == 0 ){
+  if(ap_base_mode){  // If ARMED
+  play_rtttl(song_armed);
+   song_played = 1;
+    }
+  }
+  if(!ap_base_mode ){  // Not If ARMED
+  if(song_played == 1){
+  play_rtttl(song_disarmed);
+      song_played = 0;
+    }
+  }
+  adc2 =analogRead(0)/4;               // Read ananog value from A0 (Pin 14). ( Will be A2 value on FrSky LCD)
 }
 
 
diff --git a/ProminiTONE.jpg b/ProminiTONE.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..7c5876185b083d2e9a2cc69661f6016bb84a9b4e
GIT binary patch
literal 74365
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

literal 0
HcmV?d00001

diff --git a/libraries/Tone/Tone.cpp b/libraries/Tone/Tone.cpp
new file mode 100644
index 0000000..d780cbf
--- /dev/null
+++ b/libraries/Tone/Tone.cpp
@@ -0,0 +1,786 @@
+/* $Id: Tone.cpp 119 2010-07-17 18:56:36Z bhagman@roguerobotics.com $
+
+  A Tone Generator Library
+
+  Written by Brett Hagman
+  http://www.roguerobotics.com/
+  bhagman@roguerobotics.com
+
+    This library is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+  Amended by Lam Kwok Leong
+  for compatibility with ATmegaA32U4 boards (e.g. Leonardo) and Arduino IDE 1.00 onwards
+  Used Timer3 instead of Timer2 for such boards
+  kwok_leong1985@hotmail.com
+  2013-08-08 2:20am +8GMT
+
+*************************************************/
+
+#include <avr/interrupt.h>
+#include <avr/pgmspace.h>
+#if ARDUINO >= 100
+        #include <Arduino.h>
+#else
+    #include <WProgram.h>
+#endif
+#include <pins_arduino.h>
+#include "Tone.h"
+
+#if defined(__AVR_ATmega32U4__)
+        volatile int32_t timer0_toggle_count;
+        volatile uint8_t *timer0_pin_port;
+        volatile uint8_t timer0_pin_mask;
+        volatile int32_t timer1_toggle_count;
+        volatile uint8_t *timer1_pin_port;
+        volatile uint8_t timer1_pin_mask;
+        volatile int32_t timer3_toggle_count;
+        volatile uint8_t *timer3_pin_port;
+        volatile uint8_t timer3_pin_mask;
+
+        #define AVAILABLE_TONE_PINS 3
+        const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 3, 1, 0 };
+        uint8_t Tone::_tone_pin_count = 0;
+
+        void Tone::begin(uint8_t tonePin)
+        {
+          if (_tone_pin_count < AVAILABLE_TONE_PINS)
+          {
+            _pin = tonePin;
+            _timer = pgm_read_byte(tone_pin_to_timer_PGM + _tone_pin_count);
+            _tone_pin_count++;
+            switch (_timer)
+            {
+              case 0:
+                // 8 bit timer
+                TCCR0A = 0;
+                TCCR0B = 0;
+                bitWrite(TCCR0A, WGM01, 1);
+                bitWrite(TCCR0B, CS00, 1);
+                timer0_pin_port = portOutputRegister(digitalPinToPort(_pin));
+                timer0_pin_mask = digitalPinToBitMask(_pin);
+                break;
+              case 1:
+                // 16 bit timer
+                TCCR1A = 0;
+                TCCR1B = 0;
+                bitWrite(TCCR1B, WGM12, 1);
+                bitWrite(TCCR1B, CS10, 1);
+                timer1_pin_port = portOutputRegister(digitalPinToPort(_pin));
+                timer1_pin_mask = digitalPinToBitMask(_pin);
+                break;
+              case 3:
+                // 16 bit timer
+                TCCR3A = 0;
+                TCCR3B = 0;
+                bitWrite(TCCR3B, WGM32, 1);
+                bitWrite(TCCR3B, CS30, 1);
+                timer3_pin_port = portOutputRegister(digitalPinToPort(_pin));
+                timer3_pin_mask = digitalPinToBitMask(_pin);
+                break;
+            }
+          }
+          else
+          {
+            // disabled
+            _timer = -1;
+          }
+        }
+
+        void Tone::play(uint16_t frequency, uint32_t duration)
+        {
+          uint8_t prescalarbits = 0b001;
+          int32_t toggle_count = 0;
+          uint32_t ocr = 0;
+
+          if (_timer >= 0)
+          {
+            pinMode(_pin, OUTPUT);
+
+            // if we are using an 8 bit timer, scan through prescalars to find the best fit
+            if (_timer == 0 || _timer == 2)
+            {
+              ocr = F_CPU / frequency / 2 - 1;
+              prescalarbits = 0b001;  // ck/1: same for both timers
+              if (ocr > 255)
+              {
+                ocr = F_CPU / frequency / 2 / 8 - 1;
+                prescalarbits = 0b010;  // ck/8: same for both timers
+
+                if (_timer == 2 && ocr > 255)
+                {
+                  ocr = F_CPU / frequency / 2 / 32 - 1;
+                  prescalarbits = 0b011;
+                }
+
+                if (ocr > 255)
+                {
+                  ocr = F_CPU / frequency / 2 / 64 - 1;
+                  prescalarbits = _timer == 0 ? 0b011 : 0b100;
+
+                  if (_timer == 2 && ocr > 255)
+                  {
+                    ocr = F_CPU / frequency / 2 / 128 - 1;
+                    prescalarbits = 0b101;
+                  }
+
+                  if (ocr > 255)
+                  {
+                    ocr = F_CPU / frequency / 2 / 256 - 1;
+                    prescalarbits = _timer == 0 ? 0b100 : 0b110;
+                    if (ocr > 255)
+                    {
+                      // can't do any better than /1024
+                      ocr = F_CPU / frequency / 2 / 1024 - 1;
+                      prescalarbits = _timer == 0 ? 0b101 : 0b111;
+                    }
+                  }
+                }
+              }
+              if (_timer == 0)
+                TCCR0B = (TCCR0B & 0b11111000) | prescalarbits;
+            }
+            else
+
+            {
+              // two choices for the 16 bit timers: ck/1 or ck/64
+              ocr = F_CPU / frequency / 2 - 1;
+
+              prescalarbits = 0b001;
+              if (ocr > 0xffff)
+              {
+                ocr = F_CPU / frequency / 2 / 64 - 1;
+                prescalarbits = 0b011;
+              }
+
+              if (_timer == 1)
+                TCCR1B = (TCCR1B & 0b11111000) | prescalarbits;
+              else if (_timer == 3)
+                TCCR3B = (TCCR3B & 0b11111000) | prescalarbits;
+              }
+
+
+            // Calculate the toggle count
+            if (duration > 0)
+            {
+              toggle_count = 2 * frequency * duration / 1000;
+            }
+            else
+            {
+              toggle_count = -1;
+            }
+
+            // Set the OCR for the given timer,
+            // set the toggle count,
+            // then turn on the interrupts
+            switch (_timer)
+            {
+              case 0:
+                OCR0A = ocr;
+                timer0_toggle_count = toggle_count;
+                bitWrite(TIMSK0, OCIE0A, 1);
+                break;
+              case 1:
+                OCR1A = ocr;
+                timer1_toggle_count = toggle_count;
+                bitWrite(TIMSK1, OCIE1A, 1);
+                break;
+              case 3:
+                OCR3A = ocr;
+                timer3_toggle_count = toggle_count;
+                bitWrite(TIMSK3, OCIE3A, 1);
+                break;
+            }
+          }
+        }
+
+
+        void Tone::stop()
+        {
+          switch (_timer)
+          {
+            case 0:
+              TIMSK0 &= ~(1 << OCIE0A);
+              break;
+            case 1:
+              TIMSK1 &= ~(1 << OCIE1A);
+              break;
+            case 3:
+              TIMSK3 &= ~(1 << OCIE3A);
+              break;
+          }
+
+          digitalWrite(_pin, 0);
+        }
+
+
+        bool Tone::isPlaying(void)
+        {
+          bool returnvalue = false;
+
+          switch (_timer)
+          {
+            case 0:
+              returnvalue = (TIMSK0 & (1 << OCIE0A));
+              break;
+            case 1:
+              returnvalue = (TIMSK1 & (1 << OCIE1A));
+              break;
+            case 3:
+              returnvalue = (TIMSK3 & (1 << OCIE3A));
+              break;
+
+          }
+          return returnvalue;
+        }
+
+
+        ISR(TIMER0_COMPA_vect)
+        {
+          if (timer0_toggle_count != 0)
+          {
+            // toggle the pin
+            *timer0_pin_port ^= timer0_pin_mask;
+
+            if (timer0_toggle_count > 0)
+              timer0_toggle_count--;
+          }
+          else
+          {
+            TIMSK0 &= ~(1 << OCIE0A);                 // disable the interrupt
+            *timer0_pin_port &= ~(timer0_pin_mask);   // keep pin low after stop
+          }
+        }
+
+        ISR(TIMER1_COMPA_vect)
+        {
+          if (timer1_toggle_count != 0)
+          {
+            // toggle the pin
+            *timer1_pin_port ^= timer1_pin_mask;
+
+            if (timer1_toggle_count > 0)
+              timer1_toggle_count--;
+          }
+          else
+          {
+            TIMSK1 &= ~(1 << OCIE1A);                 // disable the interrupt
+            *timer1_pin_port &= ~(timer1_pin_mask);   // keep pin low after stop
+          }
+        }
+
+        ISR(TIMER3_COMPA_vect)
+        {
+          if (timer3_toggle_count != 0)
+          {
+            // toggle the pin
+            *timer3_pin_port ^= timer3_pin_mask;
+
+            if (timer3_toggle_count > 0)
+              timer3_toggle_count--;
+          }
+          else
+          {
+            TIMSK3 &= ~(1 << OCIE3A);                 // disable the interrupt
+            *timer3_pin_port &= ~(timer3_pin_mask);   // keep pin low after stop
+          }
+        }
+#elif !defined(__AVR_ATmega32U4__)
+
+        #if defined(__AVR_ATmega8__)
+        #define TCCR2A TCCR2
+        #define TCCR2B TCCR2
+        #define COM2A1 COM21
+        #define COM2A0 COM20
+        #define OCR2A OCR2
+        #define TIMSK2 TIMSK
+        #define OCIE2A OCIE2
+        #define TIMER2_COMPA_vect TIMER2_COMP_vect
+        #define TIMSK1 TIMSK
+        #endif
+
+        // timerx_toggle_count:
+        //  > 0 - duration specified
+        //  = 0 - stopped
+        //  < 0 - infinitely (until stop() method called, or new play() called)
+
+        #if !defined(__AVR_ATmega8__)
+        volatile int32_t timer0_toggle_count;
+        volatile uint8_t *timer0_pin_port;
+        volatile uint8_t timer0_pin_mask;
+        #endif
+
+        volatile int32_t timer1_toggle_count;
+        volatile uint8_t *timer1_pin_port;
+        volatile uint8_t timer1_pin_mask;
+        volatile int32_t timer2_toggle_count;
+        volatile uint8_t *timer2_pin_port;
+        volatile uint8_t timer2_pin_mask;
+
+        #if defined(__AVR_ATmega1280__)
+        volatile int32_t timer3_toggle_count;
+        volatile uint8_t *timer3_pin_port;
+        volatile uint8_t timer3_pin_mask;
+        volatile int32_t timer4_toggle_count;
+        volatile uint8_t *timer4_pin_port;
+        volatile uint8_t timer4_pin_mask;
+        volatile int32_t timer5_toggle_count;
+        volatile uint8_t *timer5_pin_port;
+        volatile uint8_t timer5_pin_mask;
+        #endif
+
+
+        #if defined(__AVR_ATmega1280__)
+
+        #define AVAILABLE_TONE_PINS 6
+
+        // Leave timers 1, and zero to last.
+        const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2, 3, 4, 5, 1, 0 };
+
+        #elif defined(__AVR_ATmega8__)
+
+        #define AVAILABLE_TONE_PINS 2
+
+        const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2, 1 };
+
+        #else
+
+        #define AVAILABLE_TONE_PINS 3
+
+        // Leave timer 0 to last.
+        const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2, 1, 0 };
+
+        #endif
+
+
+
+        // Initialize our pin count
+
+        uint8_t Tone::_tone_pin_count = 0;
+
+
+        void Tone::begin(uint8_t tonePin)
+        {
+          if (_tone_pin_count < AVAILABLE_TONE_PINS)
+          {
+            _pin = tonePin;
+            _timer = pgm_read_byte(tone_pin_to_timer_PGM + _tone_pin_count);
+            _tone_pin_count++;
+
+            // Set timer specific stuff
+            // All timers in CTC mode
+            // 8 bit timers will require changing prescalar values,
+            // whereas 16 bit timers are set to either ck/1 or ck/64 prescalar
+            switch (_timer)
+            {
+        #if !defined(__AVR_ATmega8__)
+              case 0:
+                // 8 bit timer
+                TCCR0A = 0;
+                TCCR0B = 0;
+                bitWrite(TCCR0A, WGM01, 1);
+                bitWrite(TCCR0B, CS00, 1);
+                timer0_pin_port = portOutputRegister(digitalPinToPort(_pin));
+                timer0_pin_mask = digitalPinToBitMask(_pin);
+                break;
+        #endif
+
+              case 1:
+                // 16 bit timer
+                TCCR1A = 0;
+                TCCR1B = 0;
+                bitWrite(TCCR1B, WGM12, 1);
+                bitWrite(TCCR1B, CS10, 1);
+                timer1_pin_port = portOutputRegister(digitalPinToPort(_pin));
+                timer1_pin_mask = digitalPinToBitMask(_pin);
+                break;
+              case 2:
+                // 8 bit timer
+                TCCR2A = 0;
+                TCCR2B = 0;
+                bitWrite(TCCR2A, WGM21, 1);
+                bitWrite(TCCR2B, CS20, 1);
+                timer2_pin_port = portOutputRegister(digitalPinToPort(_pin));
+                timer2_pin_mask = digitalPinToBitMask(_pin);
+                break;
+
+        #if defined(__AVR_ATmega1280__)
+              case 3:
+                // 16 bit timer
+                TCCR3A = 0;
+                TCCR3B = 0;
+                bitWrite(TCCR3B, WGM32, 1);
+                bitWrite(TCCR3B, CS30, 1);
+                timer3_pin_port = portOutputRegister(digitalPinToPort(_pin));
+                timer3_pin_mask = digitalPinToBitMask(_pin);
+                break;
+              case 4:
+                // 16 bit timer
+                TCCR4A = 0;
+                TCCR4B = 0;
+                bitWrite(TCCR4B, WGM42, 1);
+                bitWrite(TCCR4B, CS40, 1);
+                timer4_pin_port = portOutputRegister(digitalPinToPort(_pin));
+                timer4_pin_mask = digitalPinToBitMask(_pin);
+                break;
+              case 5:
+                // 16 bit timer
+                TCCR5A = 0;
+                TCCR5B = 0;
+                bitWrite(TCCR5B, WGM52, 1);
+                bitWrite(TCCR5B, CS50, 1);
+                timer5_pin_port = portOutputRegister(digitalPinToPort(_pin));
+                timer5_pin_mask = digitalPinToBitMask(_pin);
+                break;
+        #endif
+            }
+          }
+          else
+          {
+            // disabled
+            _timer = -1;
+          }
+        }
+
+
+
+        // frequency (in hertz) and duration (in milliseconds).
+
+        void Tone::play(uint16_t frequency, uint32_t duration)
+        {
+          uint8_t prescalarbits = 0b001;
+          int32_t toggle_count = 0;
+          uint32_t ocr = 0;
+
+          if (_timer >= 0)
+          {
+            // Set the pinMode as OUTPUT
+            pinMode(_pin, OUTPUT);
+   
+            // if we are using an 8 bit timer, scan through prescalars to find the best fit
+            if (_timer == 0 || _timer == 2)
+            {
+              ocr = F_CPU / frequency / 2 - 1;
+              prescalarbits = 0b001;  // ck/1: same for both timers
+              if (ocr > 255)
+              {
+                ocr = F_CPU / frequency / 2 / 8 - 1;
+                prescalarbits = 0b010;  // ck/8: same for both timers
+
+                if (_timer == 2 && ocr > 255)
+                {
+                  ocr = F_CPU / frequency / 2 / 32 - 1;
+                  prescalarbits = 0b011;
+                }
+
+                if (ocr > 255)
+                {
+                  ocr = F_CPU / frequency / 2 / 64 - 1;
+                  prescalarbits = _timer == 0 ? 0b011 : 0b100;
+
+                  if (_timer == 2 && ocr > 255)
+                  {
+                    ocr = F_CPU / frequency / 2 / 128 - 1;
+                    prescalarbits = 0b101;
+                  }
+
+                  if (ocr > 255)
+                  {
+                    ocr = F_CPU / frequency / 2 / 256 - 1;
+                    prescalarbits = _timer == 0 ? 0b100 : 0b110;
+                    if (ocr > 255)
+                    {
+                      // can't do any better than /1024
+                      ocr = F_CPU / frequency / 2 / 1024 - 1;
+                      prescalarbits = _timer == 0 ? 0b101 : 0b111;
+                    }
+                  }
+                }
+              }
+
+        #if !defined(__AVR_ATmega8__)
+              if (_timer == 0)
+                TCCR0B = (TCCR0B & 0b11111000) | prescalarbits;
+              else
+        #endif
+                TCCR2B = (TCCR2B & 0b11111000) | prescalarbits;
+            }
+            else
+            {
+              // two choices for the 16 bit timers: ck/1 or ck/64
+              ocr = F_CPU / frequency / 2 - 1;
+
+              prescalarbits = 0b001;
+              if (ocr > 0xffff)
+              {
+                ocr = F_CPU / frequency / 2 / 64 - 1;
+                prescalarbits = 0b011;
+              }
+
+              if (_timer == 1)
+                TCCR1B = (TCCR1B & 0b11111000) | prescalarbits;
+        #if defined(__AVR_ATmega1280__)
+              else if (_timer == 3)
+                TCCR3B = (TCCR3B & 0b11111000) | prescalarbits;
+              else if (_timer == 4)
+                TCCR4B = (TCCR4B & 0b11111000) | prescalarbits;
+              else if (_timer == 5)
+                TCCR5B = (TCCR5B & 0b11111000) | prescalarbits;
+        #endif
+
+            }
+   
+
+            // Calculate the toggle count
+            if (duration > 0)
+            {
+              toggle_count = 2 * frequency * duration / 1000;
+            }
+            else
+            {
+              toggle_count = -1;
+            }
+
+            // Set the OCR for the given timer,
+            // set the toggle count,
+            // then turn on the interrupts
+            switch (_timer)
+            {
+
+        #if !defined(__AVR_ATmega8__)
+              case 0:
+                OCR0A = ocr;
+                timer0_toggle_count = toggle_count;
+                bitWrite(TIMSK0, OCIE0A, 1);
+                break;
+        #endif
+
+              case 1:
+                OCR1A = ocr;
+                timer1_toggle_count = toggle_count;
+                bitWrite(TIMSK1, OCIE1A, 1);
+                break;
+              case 2:
+                OCR2A = ocr;
+                timer2_toggle_count = toggle_count;
+                bitWrite(TIMSK2, OCIE2A, 1);
+                break;
+
+        #if defined(__AVR_ATmega1280__)
+              case 3:
+                OCR3A = ocr;
+                timer3_toggle_count = toggle_count;
+                bitWrite(TIMSK3, OCIE3A, 1);
+                break;
+              case 4:
+                OCR4A = ocr;
+                timer4_toggle_count = toggle_count;
+                bitWrite(TIMSK4, OCIE4A, 1);
+                break;
+              case 5:
+                OCR5A = ocr;
+                timer5_toggle_count = toggle_count;
+                bitWrite(TIMSK5, OCIE5A, 1);
+                break;
+        #endif
+
+            }
+          }
+        }
+
+
+        void Tone::stop()
+        {
+          switch (_timer)
+          {
+        #if !defined(__AVR_ATmega8__)
+            case 0:
+              TIMSK0 &= ~(1 << OCIE0A);
+              break;
+        #endif
+            case 1:
+              TIMSK1 &= ~(1 << OCIE1A);
+              break;
+            case 2:
+              TIMSK2 &= ~(1 << OCIE2A);
+              break;
+
+        #if defined(__AVR_ATmega1280__)
+            case 3:
+              TIMSK3 &= ~(1 << OCIE3A);
+              break;
+            case 4:
+              TIMSK4 &= ~(1 << OCIE4A);
+              break;
+            case 5:
+              TIMSK5 &= ~(1 << OCIE5A);
+              break;
+        #endif
+          }
+
+          digitalWrite(_pin, 0);
+        }
+
+
+        bool Tone::isPlaying(void)
+        {
+          bool returnvalue = false;
+ 
+          switch (_timer)
+          {
+        #if !defined(__AVR_ATmega8__)
+            case 0:
+              returnvalue = (TIMSK0 & (1 << OCIE0A));
+              break;
+        #endif
+
+            case 1:
+              returnvalue = (TIMSK1 & (1 << OCIE1A));
+              break;
+            case 2:
+              returnvalue = (TIMSK2 & (1 << OCIE2A));
+              break;
+
+        #if defined(__AVR_ATmega1280__)
+            case 3:
+              returnvalue = (TIMSK3 & (1 << OCIE3A));
+              break;
+            case 4:
+              returnvalue = (TIMSK4 & (1 << OCIE4A));
+              break;
+            case 5:
+              returnvalue = (TIMSK5 & (1 << OCIE5A));
+              break;
+        #endif
+
+          }
+          return returnvalue;
+        }
+
+
+        #if !defined(__AVR_ATmega8__)
+        ISR(TIMER0_COMPA_vect)
+        {
+          if (timer0_toggle_count != 0)
+          {
+            // toggle the pin
+            *timer0_pin_port ^= timer0_pin_mask;
+
+            if (timer0_toggle_count > 0)
+              timer0_toggle_count--;
+          }
+          else
+          {
+            TIMSK0 &= ~(1 << OCIE0A);                 // disable the interrupt
+            *timer0_pin_port &= ~(timer0_pin_mask);   // keep pin low after stop
+          }
+        }
+        #endif
+
+
+        ISR(TIMER1_COMPA_vect)
+        {
+          if (timer1_toggle_count != 0)
+          {
+            // toggle the pin
+            *timer1_pin_port ^= timer1_pin_mask;
+
+            if (timer1_toggle_count > 0)
+              timer1_toggle_count--;
+          }
+          else
+          {
+            TIMSK1 &= ~(1 << OCIE1A);                 // disable the interrupt
+            *timer1_pin_port &= ~(timer1_pin_mask);   // keep pin low after stop
+          }
+        }
+
+
+        ISR(TIMER2_COMPA_vect)
+        {
+          int32_t temp_toggle_count = timer2_toggle_count;
+
+          if (temp_toggle_count != 0)
+          {
+            // toggle the pin
+            *timer2_pin_port ^= timer2_pin_mask;
+
+            if (temp_toggle_count > 0)
+              temp_toggle_count--;
+          }
+          else
+          {
+            TIMSK2 &= ~(1 << OCIE2A);                 // disable the interrupt
+            *timer2_pin_port &= ~(timer2_pin_mask);   // keep pin low after stop
+          }
+ 
+          timer2_toggle_count = temp_toggle_count;
+        }
+
+
+
+        #if defined(__AVR_ATmega1280__)
+
+        ISR(TIMER3_COMPA_vect)
+        {
+          if (timer3_toggle_count != 0)
+          {
+            // toggle the pin
+            *timer3_pin_port ^= timer3_pin_mask;
+
+            if (timer3_toggle_count > 0)
+              timer3_toggle_count--;
+          }
+          else
+          {
+            TIMSK3 &= ~(1 << OCIE3A);                 // disable the interrupt
+            *timer3_pin_port &= ~(timer3_pin_mask);   // keep pin low after stop
+          }
+        }
+
+        ISR(TIMER4_COMPA_vect)
+        {
+          if (timer4_toggle_count != 0)
+          {
+            // toggle the pin
+            *timer4_pin_port ^= timer4_pin_mask;
+
+            if (timer4_toggle_count > 0)
+              timer4_toggle_count--;
+          }
+          else
+          {
+            TIMSK4 &= ~(1 << OCIE4A);                 // disable the interrupt
+            *timer4_pin_port &= ~(timer4_pin_mask);   // keep pin low after stop
+          }
+        }
+
+        ISR(TIMER5_COMPA_vect)
+        {
+          if (timer5_toggle_count != 0)
+          {
+            // toggle the pin
+            *timer5_pin_port ^= timer5_pin_mask;
+
+            if (timer5_toggle_count > 0)
+              timer5_toggle_count--;
+          }
+          else
+          {
+            TIMSK5 &= ~(1 << OCIE5A);                 // disable the interrupt
+            *timer5_pin_port &= ~(timer5_pin_mask);   // keep pin low after stop
+          }
+        }
+
+        #endif
+#endif
diff --git a/libraries/Tone/Tone.h b/libraries/Tone/Tone.h
new file mode 100644
index 0000000..be6ca1c
--- /dev/null
+++ b/libraries/Tone/Tone.h
@@ -0,0 +1,142 @@
+/* $Id: Tone.h 113 2010-06-16 20:16:29Z bhagman@roguerobotics.com $
+
+  A Tone Generator Library
+
+  Written by Brett Hagman
+  http://www.roguerobotics.com/
+  bhagman@roguerobotics.com
+
+    This library is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+*************************************************/
+
+#ifndef _Tone_h
+#define _Tone_h
+
+#include <stdint.h>
+
+/*************************************************
+* Public Constants
+*************************************************/
+
+#define NOTE_B0  31
+#define NOTE_C1  33
+#define NOTE_CS1 35
+#define NOTE_D1  37
+#define NOTE_DS1 39
+#define NOTE_E1  41
+#define NOTE_F1  44
+#define NOTE_FS1 46
+#define NOTE_G1  49
+#define NOTE_GS1 52
+#define NOTE_A1  55
+#define NOTE_AS1 58
+#define NOTE_B1  62
+#define NOTE_C2  65
+#define NOTE_CS2 69
+#define NOTE_D2  73
+#define NOTE_DS2 78
+#define NOTE_E2  82
+#define NOTE_F2  87
+#define NOTE_FS2 93
+#define NOTE_G2  98
+#define NOTE_GS2 104
+#define NOTE_A2  110
+#define NOTE_AS2 117
+#define NOTE_B2  123
+#define NOTE_C3  131
+#define NOTE_CS3 139
+#define NOTE_D3  147
+#define NOTE_DS3 156
+#define NOTE_E3  165
+#define NOTE_F3  175
+#define NOTE_FS3 185
+#define NOTE_G3  196
+#define NOTE_GS3 208
+#define NOTE_A3  220
+#define NOTE_AS3 233
+#define NOTE_B3  247
+#define NOTE_C4  262
+#define NOTE_CS4 277
+#define NOTE_D4  294
+#define NOTE_DS4 311
+#define NOTE_E4  330
+#define NOTE_F4  349
+#define NOTE_FS4 370
+#define NOTE_G4  392
+#define NOTE_GS4 415
+#define NOTE_A4  440
+#define NOTE_AS4 466
+#define NOTE_B4  494
+#define NOTE_C5  523
+#define NOTE_CS5 554
+#define NOTE_D5  587
+#define NOTE_DS5 622
+#define NOTE_E5  659
+#define NOTE_F5  698
+#define NOTE_FS5 740
+#define NOTE_G5  784
+#define NOTE_GS5 831
+#define NOTE_A5  880
+#define NOTE_AS5 932
+#define NOTE_B5  988
+#define NOTE_C6  1047
+#define NOTE_CS6 1109
+#define NOTE_D6  1175
+#define NOTE_DS6 1245
+#define NOTE_E6  1319
+#define NOTE_F6  1397
+#define NOTE_FS6 1480
+#define NOTE_G6  1568
+#define NOTE_GS6 1661
+#define NOTE_A6  1760
+#define NOTE_AS6 1865
+#define NOTE_B6  1976
+#define NOTE_C7  2093
+#define NOTE_CS7 2217
+#define NOTE_D7  2349
+#define NOTE_DS7 2489
+#define NOTE_E7  2637
+#define NOTE_F7  2794
+#define NOTE_FS7 2960
+#define NOTE_G7  3136
+#define NOTE_GS7 3322
+#define NOTE_A7  3520
+#define NOTE_AS7 3729
+#define NOTE_B7  3951
+#define NOTE_C8  4186
+#define NOTE_CS8 4435
+#define NOTE_D8  4699
+#define NOTE_DS8 4978
+
+
+/*************************************************
+* Definitions
+*************************************************/
+
+class Tone
+{
+  public:
+    void begin(uint8_t tonePin);
+    bool isPlaying();
+    void play(uint16_t frequency, uint32_t duration = 0);
+    void stop();
+
+  private:
+    static uint8_t _tone_pin_count;
+    uint8_t _pin;
+    int8_t _timer;
+};
+
+#endif
diff --git a/libraries/Tone/changelog.txt b/libraries/Tone/changelog.txt
new file mode 100644
index 0000000..9275755
--- /dev/null
+++ b/libraries/Tone/changelog.txt
@@ -0,0 +1,17 @@
+$Id: changelog.txt 120 2010-07-17 19:01:15Z bhagman@roguerobotics.com $
+
+Tone Library
+
+Version Modified By Date     Comments
+------- ----------- -------- --------
+0001    B Hagman    09/08/02 Initial coding
+0002    B Hagman    09/08/18 Fixed: Multiple pins.
+0003    B Hagman    09/08/18 Fixed: Moved initialization from constructor to
+                                    begin().
+0004    B Hagman    09/09/26 Fixed: Problems with ATmega8.
+0005    B Hagman    09/11/23 Fixed: Scanned prescalars for best fit on 8 bit
+                                    timers
+                    09/11/25 Fixed: Pin toggle method to XOR.
+                    09/11/25 Fixed: timer0 from being excluded.
+0006    B Hagman    10/03/21 Fixed: License updates, minor fixes.
+        B Hagman    10/07/17 Fixed: (more) problems with ATmega8 (thanks to Pete62)
diff --git a/libraries/Tone/examples/DTMFTest/DTMFTest.pde b/libraries/Tone/examples/DTMFTest/DTMFTest.pde
new file mode 100644
index 0000000..92ac9ff
--- /dev/null
+++ b/libraries/Tone/examples/DTMFTest/DTMFTest.pde
@@ -0,0 +1,46 @@
+// DTMF (Dual Tone Multiple Frequency) Demonstration
+
+// http://en.wikipedia.org/wiki/Dual-tone_multi-frequency
+
+// To mix the output of the signals to output to a small speaker (i.e. 8 Ohms or higher),
+// simply use 1K Ohm resistors from each output pin and tie them together at the speaker.
+// Don't forget to connect the other side of the speaker to ground!
+
+#include <Tone.h>
+
+Tone freq1;
+Tone freq2;
+
+const int DTMF_freq1[] = { 1336, 1209, 1336, 1477, 1209, 1336, 1477, 1209, 1336, 1477 };
+const int DTMF_freq2[] = {  941,  697,  697,  697,  770,  770,  770,  852,  852,  852 };
+
+void setup()
+{
+  Serial.begin(9600);
+  freq1.begin(11);
+  freq2.begin(12);
+}
+
+void playDTMF(uint8_t number, long duration)
+{
+  freq1.play(DTMF_freq1[number], duration);
+  freq2.play(DTMF_freq2[number], duration);
+}
+
+
+void loop()
+{
+  int i;
+  uint8_t phone_number[] = { 8, 6, 7, 5, 3, 0 ,9 };
+
+  for(i = 0; i < sizeof(phone_number); i ++)
+  {
+    Serial.print(phone_number[i], 10);
+    Serial.print(' ');
+    playDTMF(phone_number[i], 500);
+    delay(600);
+  }
+  
+  Serial.println();
+  delay(4000);
+}
diff --git a/libraries/Tone/examples/RTTTL/RTTTL.pde b/libraries/Tone/examples/RTTTL/RTTTL.pde
new file mode 100644
index 0000000..175e203
--- /dev/null
+++ b/libraries/Tone/examples/RTTTL/RTTTL.pde
@@ -0,0 +1,222 @@
+// A fun sketch to demonstrate the use of the Tone library.
+
+// To mix the output of the signals to output to a small speaker (i.e. 8 Ohms or higher),
+// simply use 1K Ohm resistors from each output pin and tie them together at the speaker.
+// Don't forget to connect the other side of the speaker to ground!
+
+// You can get more RTTTL (RingTone Text Transfer Language) songs from
+// http://code.google.com/p/rogue-code/wiki/ToneLibraryDocumentation
+
+#include <Tone.h>
+
+Tone tone1;
+
+#define OCTAVE_OFFSET 0
+
+int notes[] = { 0,
+NOTE_C4, NOTE_CS4, NOTE_D4, NOTE_DS4, NOTE_E4, NOTE_F4, NOTE_FS4, NOTE_G4, NOTE_GS4, NOTE_A4, NOTE_AS4, NOTE_B4,
+NOTE_C5, NOTE_CS5, NOTE_D5, NOTE_DS5, NOTE_E5, NOTE_F5, NOTE_FS5, NOTE_G5, NOTE_GS5, NOTE_A5, NOTE_AS5, NOTE_B5,
+NOTE_C6, NOTE_CS6, NOTE_D6, NOTE_DS6, NOTE_E6, NOTE_F6, NOTE_FS6, NOTE_G6, NOTE_GS6, NOTE_A6, NOTE_AS6, NOTE_B6,
+NOTE_C7, NOTE_CS7, NOTE_D7, NOTE_DS7, NOTE_E7, NOTE_F7, NOTE_FS7, NOTE_G7, NOTE_GS7, NOTE_A7, NOTE_AS7, NOTE_B7
+};
+
+//char *song = "The Simpsons:d=4,o=5,b=160:c.6,e6,f#6,8a6,g.6,e6,c6,8a,8f#,8f#,8f#,2g,8p,8p,8f#,8f#,8f#,8g,a#.,8c6,8c6,8c6,c6";
+//char *song = "Indiana:d=4,o=5,b=250:e,8p,8f,8g,8p,1c6,8p.,d,8p,8e,1f,p.,g,8p,8a,8b,8p,1f6,p,a,8p,8b,2c6,2d6,2e6,e,8p,8f,8g,8p,1c6,p,d6,8p,8e6,1f.6,g,8p,8g,e.6,8p,d6,8p,8g,e.6,8p,d6,8p,8g,f.6,8p,e6,8p,8d6,2c6";
+//char *song = "TakeOnMe:d=4,o=4,b=160:8f#5,8f#5,8f#5,8d5,8p,8b,8p,8e5,8p,8e5,8p,8e5,8g#5,8g#5,8a5,8b5,8a5,8a5,8a5,8e5,8p,8d5,8p,8f#5,8p,8f#5,8p,8f#5,8e5,8e5,8f#5,8e5,8f#5,8f#5,8f#5,8d5,8p,8b,8p,8e5,8p,8e5,8p,8e5,8g#5,8g#5,8a5,8b5,8a5,8a5,8a5,8e5,8p,8d5,8p,8f#5,8p,8f#5,8p,8f#5,8e5,8e5";
+//char *song = "Entertainer:d=4,o=5,b=140:8d,8d#,8e,c6,8e,c6,8e,2c.6,8c6,8d6,8d#6,8e6,8c6,8d6,e6,8b,d6,2c6,p,8d,8d#,8e,c6,8e,c6,8e,2c.6,8p,8a,8g,8f#,8a,8c6,e6,8d6,8c6,8a,2d6";
+//char *song = "Muppets:d=4,o=5,b=250:c6,c6,a,b,8a,b,g,p,c6,c6,a,8b,8a,8p,g.,p,e,e,g,f,8e,f,8c6,8c,8d,e,8e,8e,8p,8e,g,2p,c6,c6,a,b,8a,b,g,p,c6,c6,a,8b,a,g.,p,e,e,g,f,8e,f,8c6,8c,8d,e,8e,d,8d,c";
+//char *song = "Xfiles:d=4,o=5,b=125:e,b,a,b,d6,2b.,1p,e,b,a,b,e6,2b.,1p,g6,f#6,e6,d6,e6,2b.,1p,g6,f#6,e6,d6,f#6,2b.,1p,e,b,a,b,d6,2b.,1p,e,b,a,b,e6,2b.,1p,e6,2b.";
+//char *song = "Looney:d=4,o=5,b=140:32p,c6,8f6,8e6,8d6,8c6,a.,8c6,8f6,8e6,8d6,8d#6,e.6,8e6,8e6,8c6,8d6,8c6,8e6,8c6,8d6,8a,8c6,8g,8a#,8a,8f";
+//char *song = "20thCenFox:d=16,o=5,b=140:b,8p,b,b,2b,p,c6,32p,b,32p,c6,32p,b,32p,c6,32p,b,8p,b,b,b,32p,b,32p,b,32p,b,32p,b,32p,b,32p,b,32p,g#,32p,a,32p,b,8p,b,b,2b,4p,8e,8g#,8b,1c#6,8f#,8a,8c#6,1e6,8a,8c#6,8e6,1e6,8b,8g#,8a,2b";
+//char *song = "Bond:d=4,o=5,b=80:32p,16c#6,32d#6,32d#6,16d#6,8d#6,16c#6,16c#6,16c#6,16c#6,32e6,32e6,16e6,8e6,16d#6,16d#6,16d#6,16c#6,32d#6,32d#6,16d#6,8d#6,16c#6,16c#6,16c#6,16c#6,32e6,32e6,16e6,8e6,16d#6,16d6,16c#6,16c#7,c.7,16g#6,16f#6,g#.6";
+//char *song = "MASH:d=8,o=5,b=140:4a,4g,f#,g,p,f#,p,g,p,f#,p,2e.,p,f#,e,4f#,e,f#,p,e,p,4d.,p,f#,4e,d,e,p,d,p,e,p,d,p,2c#.,p,d,c#,4d,c#,d,p,e,p,4f#,p,a,p,4b,a,b,p,a,p,b,p,2a.,4p,a,b,a,4b,a,b,p,2a.,a,4f#,a,b,p,d6,p,4e.6,d6,b,p,a,p,2b";
+//char *song = "StarWars:d=4,o=5,b=45:32p,32f#,32f#,32f#,8b.,8f#.6,32e6,32d#6,32c#6,8b.6,16f#.6,32e6,32d#6,32c#6,8b.6,16f#.6,32e6,32d#6,32e6,8c#.6,32f#,32f#,32f#,8b.,8f#.6,32e6,32d#6,32c#6,8b.6,16f#.6,32e6,32d#6,32c#6,8b.6,16f#.6,32e6,32d#6,32e6,8c#6";
+//char *song = "GoodBad:d=4,o=5,b=56:32p,32a#,32d#6,32a#,32d#6,8a#.,16f#.,16g#.,d#,32a#,32d#6,32a#,32d#6,8a#.,16f#.,16g#.,c#6,32a#,32d#6,32a#,32d#6,8a#.,16f#.,32f.,32d#.,c#,32a#,32d#6,32a#,32d#6,8a#.,16g#.,d#";
+//char *song = "TopGun:d=4,o=4,b=31:32p,16c#,16g#,16g#,32f#,32f,32f#,32f,16d#,16d#,32c#,32d#,16f,32d#,32f,16f#,32f,32c#,16f,d#,16c#,16g#,16g#,32f#,32f,32f#,32f,16d#,16d#,32c#,32d#,16f,32d#,32f,16f#,32f,32c#,g#";
+//char *song = "A-Team:d=8,o=5,b=125:4d#6,a#,2d#6,16p,g#,4a#,4d#.,p,16g,16a#,d#6,a#,f6,2d#6,16p,c#.6,16c6,16a#,g#.,2a#";
+//char *song = "Flinstones:d=4,o=5,b=40:32p,16f6,16a#,16a#6,32g6,16f6,16a#.,16f6,32d#6,32d6,32d6,32d#6,32f6,16a#,16c6,d6,16f6,16a#.,16a#6,32g6,16f6,16a#.,32f6,32f6,32d#6,32d6,32d6,32d#6,32f6,16a#,16c6,a#,16a6,16d.6,16a#6,32a6,32a6,32g6,32f#6,32a6,8g6,16g6,16c.6,32a6,32a6,32g6,32g6,32f6,32e6,32g6,8f6,16f6,16a#.,16a#6,32g6,16f6,16a#.,16f6,32d#6,32d6,32d6,32d#6,32f6,16a#,16c.6,32d6,32d#6,32f6,16a#,16c.6,32d6,32d#6,32f6,16a#6,16c7,8a#.6";
+//char *song = "Jeopardy:d=4,o=6,b=125:c,f,c,f5,c,f,2c,c,f,c,f,a.,8g,8f,8e,8d,8c#,c,f,c,f5,c,f,2c,f.,8d,c,a#5,a5,g5,f5,p,d#,g#,d#,g#5,d#,g#,2d#,d#,g#,d#,g#,c.7,8a#,8g#,8g,8f,8e,d#,g#,d#,g#5,d#,g#,2d#,g#.,8f,d#,c#,c,p,a#5,p,g#.5,d#,g#";
+//char *song = "Gadget:d=16,o=5,b=50:32d#,32f,32f#,32g#,a#,f#,a,f,g#,f#,32d#,32f,32f#,32g#,a#,d#6,4d6,32d#,32f,32f#,32g#,a#,f#,a,f,g#,f#,8d#";
+//char *song = "Smurfs:d=32,o=5,b=200:4c#6,16p,4f#6,p,16c#6,p,8d#6,p,8b,p,4g#,16p,4c#6,p,16a#,p,8f#,p,8a#,p,4g#,4p,g#,p,a#,p,b,p,c6,p,4c#6,16p,4f#6,p,16c#6,p,8d#6,p,8b,p,4g#,16p,4c#6,p,16a#,p,8b,p,8f,p,4f#";
+//char *song = "MahnaMahna:d=16,o=6,b=125:c#,c.,b5,8a#.5,8f.,4g#,a#,g.,4d#,8p,c#,c.,b5,8a#.5,8f.,g#.,8a#.,4g,8p,c#,c.,b5,8a#.5,8f.,4g#,f,g.,8d#.,f,g.,8d#.,f,8g,8d#.,f,8g,d#,8c,a#5,8d#.,8d#.,4d#,8d#.";
+//char *song = "LeisureSuit:d=16,o=6,b=56:f.5,f#.5,g.5,g#5,32a#5,f5,g#.5,a#.5,32f5,g#5,32a#5,g#5,8c#.,a#5,32c#,a5,a#.5,c#.,32a5,a#5,32c#,d#,8e,c#.,f.,f.,f.,f.,f,32e,d#,8d,a#.5,e,32f,e,32f,c#,d#.,c#";
+char *song = "MissionImp:d=16,o=6,b=95:32d,32d#,32d,32d#,32d,32d#,32d,32d#,32d,32d,32d#,32e,32f,32f#,32g,g,8p,g,8p,a#,p,c7,p,g,8p,g,8p,f,p,f#,p,g,8p,g,8p,a#,p,c7,p,g,8p,g,8p,f,p,f#,p,a#,g,2d,32p,a#,g,2c#,32p,a#,g,2c,a#5,8c,2p,32p,a#5,g5,2f#,32p,a#5,g5,2f,32p,a#5,g5,2e,d#,8d";
+
+void setup(void)
+{
+  Serial.begin(9600);
+  tone1.begin(13);
+}
+
+#define isdigit(n) (n >= '0' && n <= '9')
+
+void play_rtttl(char *p)
+{
+  // Absolutely no error checking in here
+
+  byte default_dur = 4;
+  byte default_oct = 6;
+  int bpm = 63;
+  int num;
+  long wholenote;
+  long duration;
+  byte note;
+  byte scale;
+
+  // format: d=N,o=N,b=NNN:
+  // find the start (skip name, etc)
+
+  while(*p != ':') p++;    // ignore name
+  p++;                     // skip ':'
+
+  // get default duration
+  if(*p == 'd')
+  {
+    p++; p++;              // skip "d="
+    num = 0;
+    while(isdigit(*p))
+    {
+      num = (num * 10) + (*p++ - '0');
+    }
+    if(num > 0) default_dur = num;
+    p++;                   // skip comma
+  }
+
+  Serial.print("ddur: "); Serial.println(default_dur, 10);
+
+  // get default octave
+  if(*p == 'o')
+  {
+    p++; p++;              // skip "o="
+    num = *p++ - '0';
+    if(num >= 3 && num <=7) default_oct = num;
+    p++;                   // skip comma
+  }
+
+  Serial.print("doct: "); Serial.println(default_oct, 10);
+
+  // get BPM
+  if(*p == 'b')
+  {
+    p++; p++;              // skip "b="
+    num = 0;
+    while(isdigit(*p))
+    {
+      num = (num * 10) + (*p++ - '0');
+    }
+    bpm = num;
+    p++;                   // skip colon
+  }
+
+  Serial.print("bpm: "); Serial.println(bpm, 10);
+
+  // BPM usually expresses the number of quarter notes per minute
+  wholenote = (60 * 1000L / bpm) * 4;  // this is the time for whole note (in milliseconds)
+
+  Serial.print("wn: "); Serial.println(wholenote, 10);
+
+
+  // now begin note loop
+  while(*p)
+  {
+    // first, get note duration, if available
+    num = 0;
+    while(isdigit(*p))
+    {
+      num = (num * 10) + (*p++ - '0');
+    }
+    
+    if(num) duration = wholenote / num;
+    else duration = wholenote / default_dur;  // we will need to check if we are a dotted note after
+
+    // now get the note
+    note = 0;
+
+    switch(*p)
+    {
+      case 'c':
+        note = 1;
+        break;
+      case 'd':
+        note = 3;
+        break;
+      case 'e':
+        note = 5;
+        break;
+      case 'f':
+        note = 6;
+        break;
+      case 'g':
+        note = 8;
+        break;
+      case 'a':
+        note = 10;
+        break;
+      case 'b':
+        note = 12;
+        break;
+      case 'p':
+      default:
+        note = 0;
+    }
+    p++;
+
+    // now, get optional '#' sharp
+    if(*p == '#')
+    {
+      note++;
+      p++;
+    }
+
+    // now, get optional '.' dotted note
+    if(*p == '.')
+    {
+      duration += duration/2;
+      p++;
+    }
+  
+    // now, get scale
+    if(isdigit(*p))
+    {
+      scale = *p - '0';
+      p++;
+    }
+    else
+    {
+      scale = default_oct;
+    }
+
+    scale += OCTAVE_OFFSET;
+
+    if(*p == ',')
+      p++;       // skip comma for next note (or we may be at the end)
+
+    // now play the note
+
+    if(note)
+    {
+      Serial.print("Playing: ");
+      Serial.print(scale, 10); Serial.print(' ');
+      Serial.print(note, 10); Serial.print(" (");
+      Serial.print(notes[(scale - 4) * 12 + note], 10);
+      Serial.print(") ");
+      Serial.println(duration, 10);
+      tone1.play(notes[(scale - 4) * 12 + note]);
+      delay(duration);
+      tone1.stop();
+    }
+    else
+    {
+      Serial.print("Pausing: ");
+      Serial.println(duration, 10);
+      delay(duration);
+    }
+  }
+}
+
+void loop(void)
+{
+  play_rtttl(song);
+  Serial.println("Done.");
+  while(1);
+}
diff --git a/libraries/Tone/examples/ToneTest/ToneTest.pde b/libraries/Tone/examples/ToneTest/ToneTest.pde
new file mode 100644
index 0000000..dd17409
--- /dev/null
+++ b/libraries/Tone/examples/ToneTest/ToneTest.pde
@@ -0,0 +1,67 @@
+// Duelling Tones - Simultaneous tone generation.
+// To mix the output of the signals to output to a small speaker (i.e. 8 Ohms or higher),
+// simply use 1K Ohm resistors from each output pin and tie them together at the speaker.
+// Don't forget to connect the other side of the speaker to ground!
+
+// This example plays notes 'a' through 'g' sent over the Serial Monitor.
+// 's' stops the current playing tone.  Use uppercase letters for the second.
+
+#include <Tone.h>
+
+int notes[] = { NOTE_A3,
+                NOTE_B3,
+                NOTE_C4,
+                NOTE_D4,
+                NOTE_E4,
+                NOTE_F4,
+                NOTE_G4 };
+
+// You can declare the tones as an array
+Tone notePlayer[2];
+
+void setup(void)
+{
+  Serial.begin(9600);
+  notePlayer[0].begin(11);
+  notePlayer[1].begin(12);
+}
+
+void loop(void)
+{
+  char c;
+
+  if(Serial.available())
+  {
+    c = Serial.read();
+    
+    switch(c)
+    {
+      case 'a'...'g':
+        notePlayer[0].play(notes[c - 'a']);
+        Serial.println(notes[c - 'a']);
+        break;
+      case 's':
+        notePlayer[0].stop();
+        break;
+
+      case 'A'...'G':
+        notePlayer[1].play(notes[c - 'A']);
+        Serial.println(notes[c - 'A']);
+        break;
+      case 'S':
+        notePlayer[1].stop();
+        break;
+
+      default:
+        notePlayer[1].stop();
+        notePlayer[0].play(NOTE_B2);
+        delay(300);
+        notePlayer[0].stop();
+        delay(100);
+        notePlayer[1].play(NOTE_B2);
+        delay(300);
+        notePlayer[1].stop();
+        break;
+    }
+  }
+}
diff --git a/libraries/Tone/keywords.txt b/libraries/Tone/keywords.txt
new file mode 100644
index 0000000..f1b23b2
--- /dev/null
+++ b/libraries/Tone/keywords.txt
@@ -0,0 +1,112 @@
+#######################################
+# Syntax Coloring Map For Tone
+#######################################
+
+#######################################
+# Datatypes (KEYWORD1)
+#######################################
+
+Tone	KEYWORD1
+
+#######################################
+# Methods and Functions (KEYWORD2)
+#######################################
+
+play	KEYWORD2
+stop	KEYWORD2
+begin	KEYWORD2
+isPlaying	KEYWORD2
+
+#######################################
+# Constants (LITERAL1)
+#######################################
+
+NOTE_B0	LITERAL1
+NOTE_C1	LITERAL1
+NOTE_CS1	LITERAL1
+NOTE_D1	LITERAL1
+NOTE_DS1	LITERAL1
+NOTE_E1	LITERAL1
+NOTE_F1	LITERAL1
+NOTE_FS1	LITERAL1
+NOTE_G1	LITERAL1
+NOTE_GS1	LITERAL1
+NOTE_A1	LITERAL1
+NOTE_AS1	LITERAL1
+NOTE_B1	LITERAL1
+NOTE_C2	LITERAL1
+NOTE_CS2	LITERAL1
+NOTE_D2	LITERAL1
+NOTE_DS2	LITERAL1
+NOTE_E2	LITERAL1
+NOTE_F2	LITERAL1
+NOTE_FS2	LITERAL1
+NOTE_G2	LITERAL1
+NOTE_GS2	LITERAL1
+NOTE_A2	LITERAL1
+NOTE_AS2	LITERAL1
+NOTE_B2	LITERAL1
+NOTE_C3	LITERAL1
+NOTE_CS3	LITERAL1
+NOTE_D3	LITERAL1
+NOTE_DS3	LITERAL1
+NOTE_E3	LITERAL1
+NOTE_F3	LITERAL1
+NOTE_FS3	LITERAL1
+NOTE_G3	LITERAL1
+NOTE_GS3	LITERAL1
+NOTE_A3	LITERAL1
+NOTE_AS3	LITERAL1
+NOTE_B3	LITERAL1
+NOTE_C4	LITERAL1
+NOTE_CS4	LITERAL1
+NOTE_D4	LITERAL1
+NOTE_DS4	LITERAL1
+NOTE_E4	LITERAL1
+NOTE_F4	LITERAL1
+NOTE_FS4	LITERAL1
+NOTE_G4	LITERAL1
+NOTE_GS4	LITERAL1
+NOTE_A4	LITERAL1
+NOTE_AS4	LITERAL1
+NOTE_B4	LITERAL1
+NOTE_C5	LITERAL1
+NOTE_CS5	LITERAL1
+NOTE_D5	LITERAL1
+NOTE_DS5	LITERAL1
+NOTE_E5	LITERAL1
+NOTE_F5	LITERAL1
+NOTE_FS5	LITERAL1
+NOTE_G5	LITERAL1
+NOTE_GS5	LITERAL1
+NOTE_A5	LITERAL1
+NOTE_AS5	LITERAL1
+NOTE_B5	LITERAL1
+NOTE_C6	LITERAL1
+NOTE_CS6	LITERAL1
+NOTE_D6	LITERAL1
+NOTE_DS6	LITERAL1
+NOTE_E6	LITERAL1
+NOTE_F6	LITERAL1
+NOTE_FS6	LITERAL1
+NOTE_G6	LITERAL1
+NOTE_GS6	LITERAL1
+NOTE_A6	LITERAL1
+NOTE_AS6	LITERAL1
+NOTE_B6	LITERAL1
+NOTE_C7	LITERAL1
+NOTE_CS7	LITERAL1
+NOTE_D7	LITERAL1
+NOTE_DS7	LITERAL1
+NOTE_E7	LITERAL1
+NOTE_F7	LITERAL1
+NOTE_FS7	LITERAL1
+NOTE_G7	LITERAL1
+NOTE_GS7	LITERAL1
+NOTE_A7	LITERAL1
+NOTE_AS7	LITERAL1
+NOTE_B7	LITERAL1
+NOTE_C8	LITERAL1
+NOTE_CS8	LITERAL1
+NOTE_D8	LITERAL1
+NOTE_DS8	LITERAL1
-- 
GitLab