Mario Music

I was trying to copy someone’s old code for the Mario theme song. http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1253920105 I am having trouble running the code he is using though.

I was able to find a place to download the tone.h file and it is in the second tab for that file so I do not believe that is my problem. This is rather old code, so it may be that some change in the Arduino made the syntax invalid. If there is a newer and better way to run the music file, than I would be curious to know that. If not I would like to know if anyone has an idea of how to fix this code.

Here is the code I am running:

#include <Tone.h>
Tone tone1;

void setup()
{
  tone1.begin(11);//Playback on Pin 11, change to whatever you may need
}

void loop()
{
tone1.play(660,100);
delay(75);tone1.play(660,100);
delay(150);tone1.play(660,100);
delay(150);tone1.play(510,100);
delay(50);tone1.play(660,100);
delay(150);tone1.play(770,100);
delay(275);tone1.play(380,100);
delay(287);tone1.play(510,100);
delay(225);tone1.play(380,100);
delay(200);tone1.play(320,100);
delay(250);tone1.play(440,100);
delay(150);tone1.play(480,80);
delay(165);tone1.play(450,100);
delay(75);tone1.play(430,100);
delay(150);tone1.play(380,100);
delay(100);tone1.play(660,80);
delay(100);tone1.play(760,50);
delay(75);tone1.play(860,100);
delay(150);tone1.play(700,80);
delay(75);tone1.play(760,50);
delay(175);tone1.play(660,80);
delay(150);tone1.play(520,80);
delay(75);tone1.play(580,80);
delay(75);tone1.play(480,80);
delay(175);tone1.play(510,100);
delay(275);tone1.play(380,100);
delay(200);tone1.play(320,100);
delay(250);tone1.play(440,100);
delay(150);tone1.play(480,80);
delay(165);tone1.play(450,100);
delay(75);tone1.play(430,100);
delay(150);tone1.play(380,100);
delay(100);tone1.play(660,80);
delay(100);tone1.play(760,50);
delay(75);tone1.play(860,100);
delay(150);tone1.play(700,80);
delay(75);tone1.play(760,50);
delay(175);tone1.play(660,80);
delay(150);tone1.play(520,80);
delay(75);tone1.play(580,80);
delay(75);tone1.play(480,80);
delay(250);tone1.play(500,100);
delay(150);tone1.play(760,100);
delay(50);tone1.play(720,100);
delay(75);tone1.play(680,100);
delay(75);tone1.play(620,150);
delay(150);tone1.play(650,150);
delay(150);tone1.play(380,100);
delay(75);tone1.play(430,100);
delay(75);tone1.play(500,100);
delay(150);tone1.play(430,100);
delay(75);tone1.play(500,100);
delay(50);tone1.play(570,100);
delay(110);tone1.play(500,100);
delay(150);tone1.play(760,100);
delay(50);tone1.play(720,100);
delay(75);tone1.play(680,100);
delay(75);tone1.play(620,150);
delay(150);tone1.play(650,200);
delay(150);tone1.play(1020,80);
delay(150);tone1.play(1020,80);
delay(75);tone1.play(1020,80);
delay(150);tone1.play(380,100);
delay(150);tone1.play(500,100);
delay(150);tone1.play(760,100);
delay(50);tone1.play(720,100);
delay(75);tone1.play(680,100);
delay(75);tone1.play(620,150);
delay(150);tone1.play(650,150);
delay(150);tone1.play(380,100);
delay(75);tone1.play(430,100);
delay(75);tone1.play(500,100);
delay(150);tone1.play(430,100);
delay(75);tone1.play(500,100);
delay(50);tone1.play(570,100);
delay(110);tone1.play(500,100);
delay(150);tone1.play(760,100);
delay(50);tone1.play(720,100);
delay(75);tone1.play(680,100);
delay(75);tone1.play(620,150);
delay(150);tone1.play(650,200);
delay(150);tone1.play(1020,80);
delay(150);tone1.play(1020,80);
delay(75);tone1.play(1020,80);
delay(150);tone1.play(380,100);
delay(150);tone1.play(500,100);
delay(150);tone1.play(760,100);
delay(50);tone1.play(720,100);
delay(75);tone1.play(680,100);
delay(75);tone1.play(620,150);
delay(150);tone1.play(650,150);
delay(150);tone1.play(380,100);
delay(75);tone1.play(430,100);
delay(75);tone1.play(500,100);
delay(150);tone1.play(430,100);
delay(75);tone1.play(500,100);
delay(50);tone1.play(570,100);
delay(210);tone1.play(585,100);
delay(275);tone1.play(550,100);
delay(210);tone1.play(500,100);
delay(180);tone1.play(380,100);
delay(150);tone1.play(500,100);
delay(150);tone1.play(500,100);
delay(75);tone1.play(500,100);
delay(150);tone1.play(500,60);
delay(75);tone1.play(500,80);
delay(150);tone1.play(500,60);
delay(175);tone1.play(500,80);
delay(75);tone1.play(580,80);
delay(175);tone1.play(660,80);
delay(75);tone1.play(500,80);
delay(150);tone1.play(430,80);
delay(75);tone1.play(380,80);
delay(300);tone1.play(500,60);
delay(75);tone1.play(500,80);
delay(150);tone1.play(500,60);
delay(175);tone1.play(500,80);
delay(75);tone1.play(580,80);
delay(75);tone1.play(660,80);
delay(225);tone1.play(870,80);
delay(162);tone1.play(760,80);
delay(300);tone1.play(500,60);
delay(75);tone1.play(500,80);
delay(150);tone1.play(500,60);
delay(175);tone1.play(500,80);
delay(75);tone1.play(580,80);
delay(175);tone1.play(660,80);
delay(75);tone1.play(500,80);
delay(150);tone1.play(430,80);
delay(75);tone1.play(380,80);
delay(300);tone1.play(660,100);
delay(75);tone1.play(660,100);
delay(150);tone1.play(660,100);
delay(150);tone1.play(510,100);
delay(50);tone1.play(660,100);
delay(150);tone1.play(770,100);
delay(225);tone1.play(380,100);
//tells the user it is over and delays it a little before going to the top again
delay(1000);
tone1.play(440,200);
delay(200);
delay(200);
tone1.play(440,400);
delay(200);
delay(200);
delay(5000);
}

Here is the tone.h file I am using.

/* $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

Here is the error message I get:

Mario:1: error: ‘Tone’ does not name a type
Mario.cpp: In function ‘void setup()’:
Mario:5: error: ‘tone1’ was not declared in this scope
Mario.cpp: In function ‘void loop()’:
Mario:10: error: ‘tone1’ was not declared in this scope

Is it what you want? :

void setup()
{
 #define pin 11 // speaker connected to pin 11
}

void loop()
{
tone(pin,660,100);
delay(75);tone(pin,660,100);
delay(150);tone(pin,660,100);
delay(150);tone(pin,510,100);
delay(50);tone(pin,660,100);
delay(150);tone(pin,770,100);
delay(275);tone(pin,380,100);
delay(287);tone(pin,510,100);
delay(225);tone(pin,380,100);
delay(200);tone(pin,320,100);
delay(250);tone(pin,440,100);
delay(150);tone(pin,480,80);
delay(165);tone(pin,450,100);
delay(75);tone(pin,430,100);
delay(150);tone(pin,380,100);
delay(100);tone(pin,660,80);
delay(100);tone(pin,760,50);
delay(75);tone(pin,860,100);
delay(150);tone(pin,700,80);
delay(75);tone(pin,760,50);
delay(175);tone(pin,660,80);
delay(150);tone(pin,520,80);
delay(75);tone(pin,580,80);
delay(75);tone(pin,480,80);
delay(175);tone(pin,510,100);
delay(275);tone(pin,380,100);
delay(200);tone(pin,320,100);
delay(250);tone(pin,440,100);
delay(150);tone(pin,480,80);
delay(165);tone(pin,450,100);
delay(75);tone(pin,430,100);
delay(150);tone(pin,380,100);
delay(100);tone(pin,660,80);
delay(100);tone(pin,760,50);
delay(75);tone(pin,860,100);
delay(150);tone(pin,700,80);
delay(75);tone(pin,760,50);
delay(175);tone(pin,660,80);
delay(150);tone(pin,520,80);
delay(75);tone(pin,580,80);
delay(75);tone(pin,480,80);
delay(250);tone(pin,500,100);
delay(150);tone(pin,760,100);
delay(50);tone(pin,720,100);
delay(75);tone(pin,680,100);
delay(75);tone(pin,620,150);
delay(150);tone(pin,650,150);
delay(150);tone(pin,380,100);
delay(75);tone(pin,430,100);
delay(75);tone(pin,500,100);
delay(150);tone(pin,430,100);
delay(75);tone(pin,500,100);
delay(50);tone(pin,570,100);
delay(110);tone(pin,500,100);
delay(150);tone(pin,760,100);
delay(50);tone(pin,720,100);
delay(75);tone(pin,680,100);
delay(75);tone(pin,620,150);
delay(150);tone(pin,650,200);
delay(150);tone(pin,1020,80);
delay(150);tone(pin,1020,80);
delay(75);tone(pin,1020,80);
delay(150);tone(pin,380,100);
delay(150);tone(pin,500,100);
delay(150);tone(pin,760,100);
delay(50);tone(pin,720,100);
delay(75);tone(pin,680,100);
delay(75);tone(pin,620,150);
delay(150);tone(pin,650,150);
delay(150);tone(pin,380,100);
delay(75);tone(pin,430,100);
delay(75);tone(pin,500,100);
delay(150);tone(pin,430,100);
delay(75);tone(pin,500,100);
delay(50);tone(pin,570,100);
delay(110);tone(pin,500,100);
delay(150);tone(pin,760,100);
delay(50);tone(pin,720,100);
delay(75);tone(pin,680,100);
delay(75);tone(pin,620,150);
delay(150);tone(pin,650,200);
delay(150);tone(pin,1020,80);
delay(150);tone(pin,1020,80);
delay(75);tone(pin,1020,80);
delay(150);tone(pin,380,100);
delay(150);tone(pin,500,100);
delay(150);tone(pin,760,100);
delay(50);tone(pin,720,100);
delay(75);tone(pin,680,100);
delay(75);tone(pin,620,150);
delay(150);tone(pin,650,150);
delay(150);tone(pin,380,100);
delay(75);tone(pin,430,100);
delay(75);tone(pin,500,100);
delay(150);tone(pin,430,100);
delay(75);tone(pin,500,100);
delay(50);tone(pin,570,100);
delay(210);tone(pin,585,100);
delay(275);tone(pin,550,100);
delay(210);tone(pin,500,100);
delay(180);tone(pin,380,100);
delay(150);tone(pin,500,100);
delay(150);tone(pin,500,100);
delay(75);tone(pin,500,100);
delay(150);tone(pin,500,60);
delay(75);tone(pin,500,80);
delay(150);tone(pin,500,60);
delay(175);tone(pin,500,80);
delay(75);tone(pin,580,80);
delay(175);tone(pin,660,80);
delay(75);tone(pin,500,80);
delay(150);tone(pin,430,80);
delay(75);tone(pin,380,80);
delay(300);tone(pin,500,60);
delay(75);tone(pin,500,80);
delay(150);tone(pin,500,60);
delay(175);tone(pin,500,80);
delay(75);tone(pin,580,80);
delay(75);tone(pin,660,80);
delay(225);tone(pin,870,80);
delay(162);tone(pin,760,80);
delay(300);tone(pin,500,60);
delay(75);tone(pin,500,80);
delay(150);tone(pin,500,60);
delay(175);tone(pin,500,80);
delay(75);tone(pin,580,80);
delay(175);tone(pin,660,80);
delay(75);tone(pin,500,80);
delay(150);tone(pin,430,80);
delay(75);tone(pin,380,80);
delay(300);tone(pin,660,100);
delay(75);tone(pin,660,100);
delay(150);tone(pin,660,100);
delay(150);tone(pin,510,100);
delay(50);tone(pin,660,100);
delay(150);tone(pin,770,100);
delay(225);tone(pin,380,100);
//tells the user it is over and delays it a little before going to the top again
delay(1000);
tone(pin,440,200);
delay(200);
delay(200);
tone(pin,440,400);
delay(200);
delay(200);
delay(5000);
}

Thanks, that is what I wanted. It runs a bit fast but is at least recognizable