How To Use: Tone Function - Arduino Playing The James Bond Theme

On this tutorial you will see how to use the tone function to play monophonic music.

Materials List: 

1 x Arduino Uno R3

1 x Breadboard

1 x Speaker 8 Ω / 0,25 W

1 x Rotary Potentiometer 10 KΩ

1 x Capacitor 100μF / 25 V

Jumpers

How it works:

The syntax of tone function is:

tone (pin, frequency, duration);

The parameters are:

 

pin: the pin on which to generate the tone

frequency: the frequency of the tone in hertz - unsigned int

duration: the duration of the tone in milliseconds (optional) - unsigned long

The tone function generates a square wave of the specified frequency on a pin during the time of duration field (optional).

Each musical note is determined by a frequency and you can see on table below the frequencies:

Based on this table and pentagram above the archive pitches.h (of toneMelody example) was created.

The array melody[] is used to store the notes, using names to correspond to the note and frequency.

For example, the frequency of note A4 (A for "La" and 4 for the 4th octave) is 440 Hz in the array it will be called NOTE_A4.

The musical score represents the notes and the duration by symbols on the pentagram.

Below you see clef-G and clef-F.

The duration is determined by the following symbols:

In array noteDurations[], the durations were represented by numbers.See table below.

Symbol 

Value in array

whole note

1

half note

2

quarter note

4

eighth note

8

sixteenth note

16

           thirty-second note

32

            sixty-fourth note

64 

 

The potentiometer was used to control volume and the capacitor as coupling.

Below you see the circuit on Fritzing.

 

The Sketch:

Verify circuit, and upload Sketch to Arduino:


#include "pitches.h"
#define NO_SOUND 0 // make the rests in music

//array of notes
int melody[] = {
  /*NOTE_G4,NOTE_G4,NO_SOUND,NOTE_G4,NOTE_G4,NO_SOUND,NOTE_G4,NOTE_G4,NOTE_G4,NOTE_G4,NOTE_G4,
   NOTE_B3,NOTE_G3,NOTE_C4,NOTE_G3,NOTE_CS4,NOTE_G3,NOTE_C4,NOTE_G3,NOTE_B3,NOTE_G3,NOTE_C4,NOTE_G3,NOTE_CS4,NOTE_G3,NOTE_C4,NOTE_G3,
   NOTE_E4,NOTE_F4,NOTE_F4,NOTE_F4,NOTE_F4,NOTE_E4,NOTE_E4,NOTE_E4,
   NOTE_E4,NOTE_G4,NOTE_G4,NOTE_G4,NOTE_G4,NOTE_E4,NOTE_E4,NOTE_E4,*/
   //Introduction
  NOTE_E4,NOTE_F4,NOTE_F4,NOTE_F4,NOTE_F4,NOTE_E4,NOTE_E4,NOTE_E4,
  NOTE_E4,NOTE_G4,NOTE_G4,NOTE_G4,NOTE_G4,NOTE_E4,NOTE_E4,NOTE_E4,
  NOTE_E4,NOTE_F4,NOTE_F4,NOTE_F4,NOTE_F4,NOTE_E4,NOTE_E4,NOTE_E4,
  NOTE_E4,NOTE_G4,NOTE_G4,NOTE_G4,NOTE_G4,NOTE_E4,NOTE_E4,NOTE_E4,
  NOTE_DS5,NOTE_D5,NOTE_B4,NOTE_A4,NOTE_B4,
  NOTE_E4,NOTE_G4,NOTE_DS5,NOTE_D5,NOTE_G4,NOTE_B4,
  NOTE_B4,NOTE_FS5,NOTE_F5,NOTE_B4,NOTE_D5,NOTE_AS5,
  NOTE_A5,NOTE_F5,NOTE_A5,NOTE_DS6,NOTE_D6,NO_SOUND
};

// note duration: 1 = whole note, 2 = half note, 4 = quarter note, 8 = eighth note, etc.
int noteDurations[] = {
  /*8,8,2,8,8,2,16,8,16,8,8,
   2,4,2,4,2,4,2,4,2,4,2,4,2,4,2,4,
   8,16,16,8,4,8,8,8,
   8,16,16,8,4,8,8,8,*/
  8,16,16,8,4,8,8,8,
  8,16,16,8,4,8,8,8,
  8,16,16,8,4,8,8,8,
  8,16,16,8,4,8,8,8,
  8,2,8,8,1,
  8,4,8,4,8,8,
  8,8,4,8,4,8,
  4,8,4,8,3
};

int pace = 1450; // change pace of music("speedy")
void setup() {
  for (int Note = 0; Note <54; Note++) {//counter of Notes (54 limit the array)
    int duration = pace/noteDurations[Note];//Adjust duration with the pace of music
    tone(8, melody[Note],duration); //Play note

// to distinguish the notes, set a minimum time between them.
    delay(duration*1.2);
  }
}

void loop() {
  //to repeat song, push reset button.
}
//End of Sketch

Let's listen James Bond!!!

Reference:

http://arduino.cc/en/Tutorial/tone

http://en.wikipedia.org/wiki/Note_value

http://en.wikipedia.org/wiki/Clef

 

Views: 19123

Tags: Arduino, Bond, James, Library, Music, Tone

Comment by نهاد عبدالله حسين السلمان on January 14, 2013 at 4:31am
Hi - this truly stunning what spatial, which could create such programs audio Effects
Comment by نهاد عبدالله حسين السلمان on January 14, 2013 at 4:43am

You could get this project file

Comment

You need to be a member of GarageLab (arduino, electronics, robotics, hacking) to add comments!

Join GarageLab (arduino, electronics, robotics, hacking)

Latest Activity

GarageLab posted blog posts
7 hours ago
Rey Canedo is now a member of GarageLab (arduino, electronics, robotics, hacking)
yesterday
Devin Moss posted a discussion

Free-spinning high torque DC motor

I'm looking for a high-torque DC motor (able to lift 20 pounds) which, when turned off, will spin…See More
Saturday
Marcelo Rodrigues posted a blog post
Saturday
Profile IconJack Gromek, pratik and KEKELI LOGAH joined GarageLab (arduino, electronics, robotics, hacking)
Friday
GarageLab posted a blog post

Stanford’s cheap nanomaterial filter could solve the air pollution problem

The rapidly increasing industrialization in many parts of the world comes with economic benefits,…See More
Friday
GarageLab posted a blog post

Blub Uno Clock Displays Time with One Nixie Tube

We’ve seen our share of Nixie tube clocks, but the Blub Uno is different. This is a clock that…See More
Thursday
GarageLab's blog post was featured

LEGO X Converts Creations into 3D Models in Real Time: Body and Soul

Created by Gravity Research Club, LEGO X creates a 3D model of whatever you’re building while…See More
Feb 25
sathiyakumar is now a member of GarageLab (arduino, electronics, robotics, hacking)
Feb 24
GarageLab posted blog posts
Feb 24
Profile Iconaymen hleli, gunawan eko, Dean Sanders and 1 more joined GarageLab (arduino, electronics, robotics, hacking)
Feb 23
GarageLab posted a blog post

Street Fighter Played with Pianos: Sound Fighter

Back in 2014 we saw an piano that was turned into…See More
Feb 23
GarageLab posted blog posts
Feb 20
Profile IconRobert Choi and Pierre Gelinas joined GarageLab (arduino, electronics, robotics, hacking)
Feb 20
David Wachter commented on GarageLab's blog post DARPA is developing a sensing bionic hand
"This would be nice for all of the military amputees that have been 'produced' since the…"
Feb 18
GarageLab's blog post was featured

AirBoard: The Flying Segway

Currently up for funding on…See More
Feb 18
GarageLab posted a blog post

DARPA is developing a sensing bionic hand

Not content just to chip in creating better mind-controlled bionic limbs, DARPA is focusing on…See More
Feb 18
Profile IconAmr Anwar and recca joined GarageLab (arduino, electronics, robotics, hacking)
Feb 18
GarageLab posted a blog post

Voltera V1 Circuit Board Printer: Print-A-Sketch

The latest in the growing niche of circuit board printers, the Voltera V1 can print up to two…See More
Feb 16
GarageLab posted a blog post
Feb 13

© 2015   Created by Marcelo Rodrigues.

Badges  |  Report an Issue  |  Terms of Service