Go Down

Topic: Help Me With Melody Repeat? (Read 601 times) previous topic - next topic

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... :smiley-mr-green:

Thanks much!
Nate

johnwasser

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: 1L3CTDoTgrXNA5WyF77uWqt4gUdye9mezN
Send Litecoin tips to : LVtpaq6JgJAZwvnVq3ftVeHafWkcpmuR1e

Thank you so much! such an easy fix :/ Oh well new information to use later, thanks!

Go Up