Go Down

### Topic: Help Me With Melody Repeat? (Read 1 time)previous topic - next topic

#### Livinglifeless9

##### Jul 06, 2013, 05:01 am
Hi, I'm very new to Arduino, only have built one thing, which was used as a prank. Set two rumble motors to go off every minute or two using delay... but this is what I need help with.

Code: [Select]
`*/ #include "pitches.h"// notes in the melody:int melody[] = {  NOTE_G4, NOTE_F4, NOTE_G4, NOTE_F4, NOTE_G4, NOTE_F4, NOTE_AS4, NOTE_F4, NOTE_G4, NOTE_F4, NOTE_G4, NOTE_F4, NOTE_G4, NOTE_F4, NOTE_C5,  NOTE_G4, NOTE_G4, NOTE_F4, NOTE_G4, NOTE_F4, NOTE_G4, NOTE_F4, NOTE_AS4, NOTE_G4, NOTE_F4, NOTE_G4, NOTE_G4, NOTE_G4, NOTE_F4, NOTE_F4, NOTE_DS4};// note durations: 4 = quarter note, 8 = eighth note, etc.:int noteDurations[] = {  4, 4, 4, 8, 4, 8, 2, 4, 4, 4, 4, 8, 4, 8, 2, 4, 4, 4, 4, 8, 4, 8, 1,8,8,4,8,4,3,3,4};      void setup() {  // iterate over the notes of the melody:   for (int thisNote = 0; thisNote < 32; thisNote++) {    // to calculate the note duration, take one second     // divided by the note type.    //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.    int noteDuration = 1000/noteDurations[thisNote];    tone(9, melody[thisNote],noteDuration);    // to distinguish the notes, set a minimum time between them.    // the note's duration + 30% seems to work well:    int pauseBetweenNotes = noteDuration * 1.40;    delay(pauseBetweenNotes);    // stop the tone playing:    noTone(9);  }}  void loop() {      }`

I've tried everything I could to put in the void loop, but the melody would never play again! I'm sure its an easy sketch but I cannot find any literature online that will tell me how. The original melody sketch I got this from,  courtesy of Tom Igoe, did not have a delay/repeat example, which would have been nice. Please would someone help me out on this?

Feel free to use the little melody yourself, it's a famous tune I'm sure you'll love...

Thanks much!
Nate

#### johnwasser

#1
##### Jul 06, 2013, 07:11 pm
Just take the melody playing out of setup() which is only done once and put it in loop() which is done repeatedly:
Code: [Select]
`*/ #include "pitches.h"// notes in the melody:int melody[] = {  NOTE_G4, NOTE_F4, NOTE_G4, NOTE_F4, NOTE_G4, NOTE_F4, NOTE_AS4, NOTE_F4, NOTE_G4, NOTE_F4, NOTE_G4, NOTE_F4, NOTE_G4, NOTE_F4, NOTE_C5,  NOTE_G4, NOTE_G4, NOTE_F4, NOTE_G4, NOTE_F4, NOTE_G4, NOTE_F4, NOTE_AS4, NOTE_G4, NOTE_F4, NOTE_G4, NOTE_G4, NOTE_G4, NOTE_F4, NOTE_F4, NOTE_DS4};// note durations: 4 = quarter note, 8 = eighth note, etc.:int noteDurations[] = {  4, 4, 4, 8, 4, 8, 2, 4, 4, 4, 4, 8, 4, 8, 2, 4, 4, 4, 4, 8, 4, 8, 1,8,8,4,8,4,3,3,4};      void setup() { }  void loop() {  // iterate over the notes of the melody:       for (int thisNote = 0; thisNote < 32; thisNote++) {    // to calculate the note duration, take one second     // divided by the note type.    //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.    int noteDuration = 1000/noteDurations[thisNote];    tone(9, melody[thisNote],noteDuration);    // to distinguish the notes, set a minimum time between them.    // the note's duration + 30% seems to work well:    int pauseBetweenNotes = noteDuration * 1.40;    delay(pauseBetweenNotes);    // stop the tone playing:    noTone(9);  } }`
Send Bitcoin tips to: 1G2qoGwMRXx8az71DVP1E81jShxtbSh5Hp

#### Livinglifeless9

#2
##### Jul 06, 2013, 07:21 pm
Thank you so much! such an easy fix :/ Oh well new information to use later, thanks!

Go Up