protected void TestPiezoSpeaker() { while (true) { Console.WriteLine("Playing A4 note!"); piezoSpeaker.PlayTone(440, 1000); piezoSpeaker.StopTone(); Thread.Sleep(500); } }
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); } }
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(); }
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(); }