Example #1
0
 protected void TestPiezoSpeaker()
 {
     while (true)
     {
         Console.WriteLine("Playing A4 note!");
         piezoSpeaker.PlayTone(440, 1000);
         piezoSpeaker.StopTone();
         Thread.Sleep(500);
     }
 }
Example #2
0
 private void ToggleNote(int index, bool play, bool shift)
 {
     if (play)
     {
         var frequency = notes[index + (shift ? 4 : 0)];
         speaker.PlayTone(frequency);
         leds[index].IsOn = true;
         DrawText(frequency + " hz");
     }
     else
     {
         speaker.StopTone();
         leds[index].IsOn = false;
         display.Clear(true);
     }
 }
Example #3
0
        public static void Main()
        {
            const int NUMBER_OF_NOTES = 16;

            float[] melody = new float[NUMBER_OF_NOTES]
            {
                NoteFrequencies.NOTE_A3,
                NoteFrequencies.NOTE_B3,
                NoteFrequencies.NOTE_CS4,
                NoteFrequencies.NOTE_D4,
                NoteFrequencies.NOTE_E4,
                NoteFrequencies.NOTE_FS4,
                NoteFrequencies.NOTE_GS4,
                NoteFrequencies.NOTE_A4,
                NoteFrequencies.NOTE_A4,
                NoteFrequencies.NOTE_GS4,
                NoteFrequencies.NOTE_FS4,
                NoteFrequencies.NOTE_E4,
                NoteFrequencies.NOTE_D4,
                NoteFrequencies.NOTE_CS4,
                NoteFrequencies.NOTE_B3,
                NoteFrequencies.NOTE_A3,
            };

            var piezo = new PiezoSpeaker(N.PWMChannels.PWM_PIN_D5);

            while (true)
            {
                for (int i = 0; i < NUMBER_OF_NOTES; i++)
                {
                    //PlayTone with a duration in synchronous
                    piezo.PlayTone(melody[i], 600);
                    Thread.Sleep(50);
                }

                Thread.Sleep(1000);

                //PlayTone without a duration will return immediately and play the tone
                piezo.PlayTone(NoteFrequencies.NOTE_A4);
                Thread.Sleep(2000);

                //call StopTone to end a tone started without a duration
                piezo.StopTone();

                Thread.Sleep(2000);
            }
        }
        void ButtonPressEnded(object sender, EventArgs e)
        {
            piezo.StopTone();
            stopWatch.Stop();

            if (stopWatch.ElapsedMilliseconds < 200)
            {
                answer += "O";
            }
            else
            {
                answer += "-";
            }

            displayController.UpdateAnswer(answer, Color.White);
            timer.Start();
        }
Example #5
0
        private void PlaySong(Song song)
        {
            //smallest note length is a 32nd note 
            //change value to adjust tempo 
            var len32Note = 1500 / 32;

            //index of the currently playing note
            int melodyIndex = 0;
            int bassIndex = 0;

            //remaining steps for the currently playing note
            int melodyRemaining = 0;
            int bassRemaining = 0;
           
            //loop until we've played every melody and bass note
            while (melodyIndex < song.Melody.Length && 
                   bassIndex < song.Bass.Length)
            {
                if (melodyRemaining == 0 && melodyIndex < song.Melody.Length)
                {
                    speakerMelody.StopTone();
                    ledMelody.IsOn = false;

                    //get the length of the next note
                    melodyRemaining = song.Melody[melodyIndex].Length;

                    //if the note isn't silence (i.e. don't play rests)
                    if (song.Melody[melodyIndex].Pitch != 0)
                    {
                        speakerMelody.PlayTone(song.Melody[melodyIndex].Pitch);
                        ledMelody.IsOn = true;
                    }
                    melodyIndex++;
                }
                melodyRemaining--;

                if (bassRemaining == 0 && bassIndex < song.Bass.Length)
                {
                    speakerBass.StopTone();
                    ledBass.IsOn = false;

                    bassRemaining = song.Bass[bassIndex].Length;

                    if (song.Bass[bassIndex].Pitch != 0)
                    {
                        speakerBass.PlayTone(song.Bass[bassIndex].Pitch);
                        ledBass.IsOn = true;
                    }
                    bassIndex++;    
                }
                bassRemaining--;

                Thread.Sleep(len32Note);
            }

            Thread.Sleep(len32Note * 32);

            ledMelody.IsOn = false;
            ledBass.IsOn = false;

            speakerMelody.StopTone();
            speakerBass.StopTone();
        }