Skip to content

Instantly share code, notes, and snippets.

@NightFeather
Created March 24, 2022 12:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save NightFeather/e0a581e48d65a54aa4cbe26b4b04b78b to your computer and use it in GitHub Desktop.
Save NightFeather/e0a581e48d65a54aa4cbe26b4b04b78b to your computer and use it in GitHub Desktop.
Never gonna beep you up.
from RPi import GPIO
import time
mid = 440/(2**(10/12))
notes = dict(zip("C C# D D# E F F# G G# A A# B".split(), [mid*2**(i/12) for i in range(12)]))
speed = 60/114
scores = [
(-1, "A", 1/4),
(-1, "B", 1/4),
( 0, "D", 1/4),
(-1, "B", 1/4),
( 0, "F#", 3/4),
( 0, "F#", 3/4),
( 0, "E", 3/2),
(-1, "A", 1/4),
(-1, "B", 1/4),
( 0, "D", 1/4),
(-1, "B", 1/4),
( 0, "E", 3/4),
( 0, "E", 3/4),
( 0, "D", 3/4),
( 0, "C#", 1/4),
( -1, "B", 1/2),
(-1, "A", 1/4),
(-1, "B", 1/4),
( 0, "D", 1/4),
(-1, "B", 1/4),
( 0, "D", 1),
( 0, "E", 1/2),
( 0, "C#", 3/4),
(-1, "A", 1),
(-1, "A", 1/2),
( 0, "E", 1),
( 0, "D", 2),
(-1, "A", 1/4),
(-1, "B", 1/4),
( 0, "D", 1/4),
(-1, "B", 1/4),
( 0, "F#", 3/4),
( 0, "F#", 3/4),
( 0, "E", 3/2),
(-1, "A", 1/4),
(-1, "B", 1/4),
( 0, "D", 1/4),
(-1, "B", 1/4),
( 0, "A", 3/4),
( 0, "C#", 3/4),
( 0, "D", 3/4),
( 0, "C#", 1/4),
( -1, "B", 1/2),
(-1, "A", 1/4),
(-1, "B", 1/4),
( 0, "D", 1/4),
(-1, "B", 1/4),
( 0, "D", 1),
( 0, "E", 1/2),
( 0, "C#", 3/4),
(-1, "A", 1),
(-1, "A", 1/2),
( 0, "E", 1),
( 0, "D", 2),
]
print(notes)
print(scores)
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT, initial=GPIO.HIGH)
buzz = GPIO.PWM(18, 440)
buzz.start(99)
for o, n, l in scores:
buzz.ChangeDutyCycle(99)
buzz.ChangeFrequency(notes[n]*(2**(o+1)))
time.sleep(speed*l)
buzz.ChangeDutyCycle(0)
time.sleep(0.01)
buzz.stop()
GPIO.output(18, GPIO.HIGH)
GPIO.cleanup()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment