Go Down

Topic: Help Me With Melody Repeat? (Read 637 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy