树莓派Pico/RP2040MicroPython库支持通过一个或多个蜂鸣器播放音乐,可以自动替换和弦与快速琶音,以模拟复调与单一蜂鸣器. Music can be easily taken from onlinesequencer.net

Play thousands of songs on your Raspberry Pi Pico with a buzzer

Micropython library to play music through a buzzer, automatically replaces chords with fast arpeggios to simulate polyphony. Music can be easily taken from onlinesequencer.net

Also supports playing music through multiple buzzers, dividing the currently playing notes across them for polyphony

Usage

Connect your buzzer to a ground pin and pin 0 on your Pico Install micropython on your Pico and copy the files in this repository to it Find some music on onlinesequencer.net, click edit, select all notes with CTRL + A and then copy them with CTRL + C Paste the string in place of the one in the example file, making sure to remove the “Online Sequencer:120233:” from the start and the “;:” from the end

"""
Micropython (Raspberry Pi Pico)
Plays music written on onlinesequencer.net through a passive piezo buzzer.
Uses fast arpeggios with a single buzzer to simulate polyphony
Also supports multiple buzzers at once for real polyphony
https://github.com/james1236/buzzer_music
"""
 
from machine import Pin, PWM
from math import ceil
 
tones = {
    'C0':16,
    'C#0':17,
    'D0':18,
    'D#0':19,
    'E0':21,
    'F0':22,
    'F#0':23,
    'G0':24,
    'G#0':26,
    'A0':28,
    'A#0':29,
    'B0':31,
    'C1':33,
    'C#1':35,
    'D1':37,
    'D#1':39,
    'E1':41,
    'F1':44,
    'F#1':46,
    'G1':49,
    'G#1':52,
    'A1':55,
    'A#1':58,
    'B1':62,
    'C2':65,
    'C#2':69,
    'D2':73,
    'D#2':78,
    'E2':82,
    'F2':87,
    'F#2':92,
    'G2':98,
    'G#2':104,
    'A2':110,
    'A#2':117,
    'B2':123,
    'C3':131,
    'C#3':139,
    'D3':147,
    'D#3':156,
    'E3':165,
    'F3':175,
    'F#3':185,
    'G3':196,
    'G#3':208,
    'A3':220,
    'A#3':233,
    'B3':247,
    'C4':262,
    'C#4':277,
    'D4':294,
    'D#4':311,
    'E4':330,
    'F4':349,
    'F#4':370,
    'G4':392,
    'G#4':415,
    'A4':440,
    'A#4':466,
    'B4':494,
    'C5':523,
    'C#5':554,
    'D5':587,
    'D#5':622,
    'E5':659,
    'F5':698,
    'F#5':740,
    'G5':784,
    'G#5':831,
    'A5':880,
    'A#5':932,
    'B5':988,
    'C6':1047,
    'C#6':1109,
    'D6':1175,
    'D#6':1245,
    'E6':1319,
    'F6':1397,
    'F#6':1480,
    'G6':1568,
    'G#6':1661,
    'A6':1760,
    'A#6':1865,
    'B6':1976,
    'C7':2093,
    'C#7':2217,
    'D7':2349,
    'D#7':2489,
    'E7':2637,
    'F7':2794,
    'F#7':2960,
    'G7':3136,
    'G#7':3322,
    'A7':3520,
    'A#7':3729,
    'B7':3951,
    'C8':4186,
    'C#8':4435,
    'D8':4699,
    'D#8':4978,
    'E8':5274,
    'F8':5588,
    'F#8':5920,
    'G8':6272,
    'G#8':6645,
    'A8':7040,
    'A#8':7459,
    'B8':7902,
    'C9':8372,
    'C#9':8870,
    'D9':9397,
    'D#9':9956,
    'E9':10548,
    'F9':11175,
    'F#9':11840,
    'G9':12544,
    'G#9':13290,
    'A9':14080,
    'A#9':14917,
    'B9':15804
}
 
#Time, Note, Duration, Instrument (onlinesequencer.net schematic format)
#0 D4 8 0;0 D5 8 0;0 G4 8 0;8 C5 2 0;10 B4 2 0;12 G4 2 0;14 F4 1 0;15 G4 17 0;16 D4 8 0;24 C4 8 0
 
class music:
    def __init__(self, songString='0 D4 8 0', looping=True, tempo=3, duty=2512, pin=None, pins=[Pin(0)]):
        self.tempo = tempo
        self.song = songString
        self.looping = looping
        self.duty = duty
 
        self.stopped = False
 
        self.timer = -1
        self.beat = -1
        self.arpnote = 0
 
        self.pwms = []
 
        if (not (pin is None)):
            pins = [pin]
 
        i = 0
        for pin in pins:
            self.pwms.append(PWM(pins[i]))
            i = i + 1
 
        self.notes = []
 
        self.playingNotes = []
        self.playingDurations = []
 
 
        #Find the end of the song
        self.end = 0
        splitSong = self.song.split(";")
        for note in splitSong:
            snote = note.split(" ")
            testEnd = round(float(snote[0])) + ceil(float(snote[2]))
            if (testEnd > self.end):
                self.end = testEnd
 
        #Create empty song structure
        while (self.end > len(self.notes)):
            self.notes.append(None)
 
        #Populate song structure with the notes
        for note in splitSong:
            snote = note.split(" ")
            beat = round(float(snote[0]));
 
            if (self.notes[beat] == None):
                self.notes[beat] = []
            self.notes[beat].append([snote[1],ceil(float(snote[2]))]) #Note, Duration
 
 
        #Round up end of song to nearest bar
        self.end = ceil(self.end / 8) * 8
 
    def stop(self):
        for pwm in self.pwms:
            pwm.deinit()
        self.stopped = True
 
    def tick(self):
        if (not self.stopped):
            self.timer = self.timer + 1
 
            #Loop
            if (self.timer % (self.tempo * self.end) == 0 and (not (self.timer == 0))):
                if (not self.looping):
                    self.stop()
                    return False
                self.beat = -1
                self.timer = 0
 
            #On Beat
            if (self.timer % self.tempo == 0):
                self.beat = self.beat + 1
 
                #Remove expired notes from playing list
                i = 0
                while (i < len(self.playingDurations)):
                    self.playingDurations[i] = self.playingDurations[i] - 1
                    if (self.playingDurations[i] <= 0):
                        self.playingNotes.pop(i)
                        self.playingDurations.pop(i)
                    else:
                        i = i + 1
 
                #Add new notes and their durations to the playing list
 
                """
                #Old method runs for every note, slow to process on every beat and causes noticeable delay
                ssong = song.split(";")
                for note in ssong:
                    snote = note.split(" ")
                    if int(snote[0]) == beat:
                        playingNotes.append(snote[1])
                        playingDurations.append(int(snote[2]))
                """
 
                if (self.beat < len(self.notes)):
                    if (self.notes[self.beat] != None):
                        for note in self.notes[self.beat]:
                            self.playingNotes.append(note[0])
                            self.playingDurations.append(note[1])
 
                #Only need to run these checks on beats
                i = 0
                for pwm in self.pwms:
                    if (i >= len(self.playingNotes)):
                        pwm.duty_u16(0)
                    else:
                        #Play note
                        pwm.duty_u16(self.duty)
                        pwm.freq(tones[self.playingNotes[i]])
                    i = i + 1
 
 
            #Play arp of all playing notes
            if (len(self.playingNotes) > len(self.pwms)):
                self.pwms[len(self.pwms)-1].duty_u16(self.duty)
                if (self.arpnote > len(self.playingNotes)-len(self.pwms)):
                    self.arpnote = 0
                self.pwms[len(self.pwms)-1].freq(tones[self.playingNotes[self.arpnote+(len(self.pwms)-1)]])
                self.arpnote = self.arpnote + 1
 
            return True
        else:
            return False
song = '0 A#3 1 0;0 F#3 2 0;1 C#4 1 0;2 C4 1 0;3 C#4 1 0;4 A#3 1 0;6 A#3 1 0;6 F#3 2 0;7 C4 1 0;8 C#4 1 0;9 G#4 1 0;10 F4 1 0;12 A#3 1 0;12 F#3 2 0;13 C#4 1 0;14 C4 1 0;15 C#4 1 0;16 A#3 1 0;18 A#3 1 0;18 F#3 2 0;19 C4 1 0;20 C#4 1 0;21 G#4 1 0;22 F4 1 0;24 A#3 1 0;24 F3 2 0;25 C#4 1 0;26 C4 1 0;27 C#4 1 0;28 A#3 1 0;30 A#3 1 0;31 C4 1 0;30 F3 2 0;32 C#4 1 0;33 G#4 1 0;34 F4 1 0;36 F3 2 0;36 D#5 2 0;38 C6 2 0;38 G#3 2 0;40 C4 2 0;40 A#5 2 0;42 G#5 1 0;42 D#4 2 0;43 F#5 1 0;44 C4 1 0;45 G#3 1 0;44 F5 2 0;46 D#4 1 0;47 C4 1 0;46 G#5 2 0;48 A#3 1 0;48 F#3 2 0;49 C#4 1 0;50 C4 1 0;51 C#4 1 0;52 A#3 1 0;54 A#3 1 0;55 C4 1 0;54 F#3 2 0;56 C#4 1 0;57 G#4 1 0;58 F4 1 0;60 A#3 1 0;60 F#3 2 0;61 C#4 1 0;48 A#5 15 0;62 C4 1 0;63 C#4 1 0;64 A#3 1 0;66 A#3 1 0;66 F#3 2 0;67 C4 1 0;68 C#4 1 0;69 G#4 1 0;70 F4 1 0;72 A#3 1 0;72 F3 2 0;73 C#4 1 0;74 C4 1 0;75 C#4 1 0;76 A#3 1 0;78 A#3 1 0;78 F3 2 0;79 C4 1 0;80 C#4 1 0;81 G#4 1 0;82 F4 1 0;84 D#5 2 0;84 D#6 2 0;84 G#3 2 0;86 C7 2 0;86 D#3 2 0;86 C6 2 0;88 A#6 2 0;88 F3 2 0;88 A#5 2 0;90 G#5 1 0;90 G#6 1 0;90 G#3 2 0;91 F#6 1 0;91 F#5 1 0;92 F5 2 0;92 C4 2 0;92 F6 2 0;94 D#4 2 0;94 G#6 2 0;94 G#5 2 0;96 F#3 2 0;98 C4 1 0;99 C#4 1 0;100 A#3 1 0;101 F3 1 0;96 A#5 8 0;102 F#3 2 0;104 C4 1 0;104 F5 2 0;105 C#4 1 0;106 A#3 1 0;106 G#5 2 0;107 D#4 1 0;108 G#3 2 0;110 D#3 1 0;108 A#5 4 0;111 F3 1 0;112 G#3 1 0;112 C#6 2 0;113 F3 1 0;114 D#6 1 0;114 D#3 2 0;115 C#6 1 0;116 F3 2 0;116 C6 2 0;118 G#3 2 0;118 C#6 2 0;120 A#3 1 0;121 A#4 1 0;122 D#4 1 0;123 F4 1 0;124 C#4 1 0;125 G#3 1 0;126 A#3 1 0;127 A#4 1 0;128 D#4 1 0;129 F4 1 0;130 C#4 1 0;131 G#3 1 0;132 A#3 1 0;133 A#4 1 0;120 A#5 15 0;134 D#4 1 0;135 F4 1 0;136 C#4 1 0;137 F3 1 0;138 G#3 2 0;140 D#3 2 0;142 G#3 2 0;144 A#4 1 0;144 A#3 1 0;144 F#3 1 0;145 C#5 1 0;145 C#4 1 0;146 C5 1 0;146 C4 1 0;147 C#5 1 0;147 C#4 1 0;148 A#4 1 0;148 A#3 1 0;150 A#4 1 0;150 F#3 1 0;150 A#3 1 0;151 C4 1 0;151 C5 1 0;152 C#4 1 0;152 C#5 1 0;153 G#4 1 0;154 F4 1 0;154 F5 1 0;156 A#4 1 0;156 A#3 1 0;156 F#3 1 0;157 C#5 1 0;157 C#4 1 0;158 C5 1 0;158 C4 1 0;159 C#5 1 0;159 C#4 1 0;160 A#3 1 0;160 A#4 1 0;162 A#4 1 0;162 A#3 1 0;162 F#3 1 0;163 C5 1 0;163 C4 1 0;164 C#5 1 0;164 C#4 1 0;165 G#4 1 0;166 F5 1 0;166 F4 1 0;168 A#3 1 0;168 F3 1 0;168 A#4 1 0;169 C#5 1 0;169 C#4 1 0;170 C5 1 0;170 C4 1 0;171 C#4 1 0;171 C#5 1 0;172 A#3 1 0;172 A#4 1 0;174 A#4 1 0;174 A#3 1 0;174 F3 1 0;175 C5 1 0;175 C4 1 0;176 C#5 1 0;176 C#4 1 0;177 G#4 1 0;178 F4 1 0;178 F5 1 0;180 F3 2 0;180 D#6 2 0;180 F4 2 0;182 G#4 2 0;182 C7 2 0;182 G#3 2 0;184 C4 2 0;184 A#6 2 0;184 C5 2 0;186 G#6 1 0;186 D#5 2 0;186 D#4 2 0;187 F#6 1 0;188 C5 1 0;188 C4 1 0;189 G#3 1 0;189 G#4 1 0;188 F6 2 0;190 D#4 1 0;190 D#5 1 0;191 C5 1 0;190 G#6 2 0;191 C4 1 0;192 A#4 1 0;192 A#3 1 0;192 F#3 1 0;193 C#5 1 0;193 C#4 1 0;194 C4 1 0;194 C5 1 0;195 C#4 1 0;195 C#5 1 0;196 A#4 1 0;196 A#3 1 0;198 F#3 1 0;198 A#3 1 0;198 A#4 1 0;199 C5 1 0;199 C4 1 0;200 C#4 1 0;200 C#5 1 0;201 G#4 1 0;202 F4 1 0;202 F5 1 0;204 A#4 1 0;204 F#3 1 0;204 A#3 1 0;205 C#4 1 0;205 C#5 1 0;206 C5 1 0;192 A#6 15 0;206 C4 1 0;207 C#4 1 0;207 C#5 1 0;208 A#3 1 0;208 A#4 1 0;210 A#3 1 0;210 F#3 1 0;210 A#4 1 0;211 C5 1 0;211 C4 1 0;212 C#5 1 0;212 C#4 1 0;213 G#4 1 0;214 F5 1 0;214 F4 1 0;216 D#5 1 0;216 D#4 1 0;217 F4 1 0;217 F5 1 0;218 G#5 1 0;218 G#4 1 0;219 A#4 1 0;219 A#5 1 0;220 C6 1 0;220 C5 1 0;221 C#6 1 0;221 C#5 1 0;222 D#6 1 0;222 D#5 1 0;223 C#6 1 0;223 C#5 1 0;224 C6 1 0;224 C5 1 0;225 A#5 1 0;225 A#4 1 0;226 G#5 1 0;226 G#4 1 0;227 F4 1 0;227 F5 1 0;228 G#5 2 0;228 G#4 2 0;228 D#6 2 0;228 G#3 2 0;230 C7 2 0;230 D#3 2 0;230 D#4 2 0;230 D#6 2 0;232 F4 2 0;232 C#6 2 0;232 F3 2 0;232 A#6 2 0;234 G#6 1 0;234 C6 1 0;234 G#3 2 0;234 G#4 2 0;235 A#5 1 0;235 F#6 1 0;236 G#5 2 0;236 F6 2 0;236 C5 2 0;236 C4 2 0;238 G#6 2 0;238 F5 2 0;238 D#4 2 0;238 D#5 2 0;240 F#3 2 0;242 C4 1 0;243 C#4 1 0;244 A#3 1 0;245 F3 1 0;240 A#5 8 0;246 F#3 2 0;240 F#5 8 0;248 C4 1 0;248 F5 2 0;248 C5 2 0;249 C#4 1 0;250 A#3 1 0;250 G#5 2 0;250 D#5 2 0;251 D#4 1 0;252 G#3 2 0;254 D#3 1 0;252 F5 4 0;252 A#5 4 0;255 F3 1 0;256 G#3 1 0;256 F5 2 0;256 C#6 2 0;257 F3 1 0;258 F#5 1 0;258 D#6 1 0;258 D#3 2 0;259 C#6 1 0;259 F5 1 0;260 D#5 2 0;260 C6 2 0;260 F3 2 0;262 G#3 2 0;262 C#6 2 0;262 F5 2 0;264 A#3 1 0;265 A#4 1 0;266 D#4 1 0;267 F4 1 0;268 C#4 1 0;269 G#3 1 0;270 A#3 1 0;271 A#4 1 0;272 D#4 1 0;273 F4 1 0;274 C#4 1 0;275 G#3 1 0;276 A#3 1 0;277 A#4 1 0;278 D#4 1 0;264 A#5 15 0;264 F5 15 0;279 F4 1 0;280 C#4 1 0;281 F3 1 0;282 G#3 2 0;282 F5 2 0;282 A#5 2 0;284 C#6 2 0;284 G#5 2 0;284 D#3 2 0;286 D#6 2 0;286 A#5 2 0;286 F3 2 0;288 D#3 2 0;290 G#3 1 0;291 A#3 1 0;292 F#3 1 0;293 C#3 1 0;294 D#3 2 0;288 F6 8 0;288 G#5 8 0;296 G#3 1 0;296 G#5 2 0;296 C#6 2 0;297 A#3 1 0;298 D#6 2 0;298 A#5 2 0;298 C4 2 0;300 F3 2 0;302 C4 1 0;300 G#5 4 0;300 F6 4 0;303 G#4 1 0;304 F4 1 0;304 D#6 2 0;304 A#5 2 0;305 C4 1 0;306 G#5 1 0;306 C#6 1 0;306 F3 1 0;307 A#5 1 0;307 D#6 1 0;307 F4 1 0;308 G#3 1 0;309 F4 1 0;308 C6 2 0;308 D#5 2 0;310 A#3 1 0;311 G#4 1 0;310 G#5 2 0;310 F5 2 0;312 F#3 1 0;313 F#4 1 0;314 C#4 1 0;315 D#4 1 0;316 F4 1 0;317 F3 1 0;318 F#3 1 0;312 A#5 8 0;312 F5 8 0;319 F#4 1 0;320 C#4 1 0;320 C#5 2 0;321 D#4 1 0;322 F4 1 0;322 D#5 2 0;323 F#3 1 0;324 F3 1 0;325 F4 1 0;326 C4 1 0;324 F5 4 0;327 G#4 1 0;328 F4 1 0;328 D#5 2 0;329 C4 1 0;330 C#5 1 0;330 F3 1 0;331 F4 1 0;331 D#5 1 0;332 G#3 1 0;332 C5 2 0;333 F4 1 0;334 A#3 1 0;335 G#4 1 0;334 G#5 2 0;336 F#3 1 0;337 F#4 1 0;338 C#4 1 0;339 D#4 1 0;340 F4 1 0;341 F3 1 0;342 F#3 1 0;343 F#4 1 0;336 F5 8 0;344 C#4 1 0;344 G#5 2 0;344 C#6 2 0;345 D#4 1 0;346 F4 1 0;346 A#5 2 0;346 D#6 2 0;347 F#3 1 0;348 G#3 1 0;349 D#3 1 0;350 C4 1 0;348 G#5 4 0;348 F6 4 0;351 G#3 1 0;352 D#4 1 0;352 D#6 2 0;352 A#5 2 0;353 C4 1 0;354 C#6 1 0;354 G#5 1 0;354 G#4 1 0;355 D#6 1 0;355 G#3 1 0;355 A#5 1 0;356 C6 2 0;356 D#5 2 0;356 D#4 2 0;358 G#5 2 0;358 F5 2 0;358 C4 2 0;360 A#3 1 0;361 F3 1 0;362 C4 1 0;363 G#3 1 0;364 C#4 1 0;365 F3 1 0;366 B3 1 0;367 C#4 1 0;368 D#4 1 0;369 F#3 1 0;370 A#3 1 0;371 C#4 1 0;372 B3 1 0;373 F#3 1 0;374 C#4 1 0;360 F5 15 0;360 A#5 15 0;375 F#3 1 0;376 D#4 1 0;377 F#3 1 0;378 F#4 1 0;379 B3 1 0;380 G#4 1 0;381 B3 1 0;382 C#5 1 0;383 G#4 1 0;384 B3 1 0;384 D#6 1 0;384 D#5 1 0;385 F#3 1 0;385 D#6 2 0;385 D#5 2 0;386 C#4 1 0;387 F#3 1 0;388 D#4 1 0;387 D#6 2 0;387 D#5 2 0;389 D#6 1 0;389 F#3 1 0;389 D#5 1 0;390 B3 1 0;391 F#3 1 0;390 D#5 2 0;390 D#6 2 0;392 C#4 1 0;393 F#3 1 0;392 D#6 2 0;392 D#5 2 0;394 D#4 1 0;394 D#6 2 0;394 D#5 2 0;395 F#3 1 0;396 D#6 1 0;396 D#5 1 0;396 F#4 1 0;397 B3 1 0;398 G#4 1 0;397 D#5 2 0;397 D#6 2 0;399 C#4 1 0;399 D#6 2 0;399 D#5 2 0;400 C#5 1 0;401 G#4 1 0;401 D#6 1 0;401 D#5 1 0;402 B4 1 0;403 F#4 1 0;402 D#5 2 0;402 D#6 2 0;404 F#5 1 0;404 D#5 2 0;404 D#6 2 0;405 C#5 1 0;406 B5 1 0;406 D#5 2 0;406 D#6 2 0;407 F#5 1 0;408 B3 1 0;409 D#4 1 0;410 C#4 1 0;411 D#4 1 0;412 B3 1 0;414 B3 1 0;415 C#4 1 0;416 D#4 1 0;417 B4 1 0;418 F#4 1 0;420 B3 1 0;421 D#4 1 0;422 C#4 1 0;423 D#4 1 0;424 B3 1 0;426 B3 1 0;427 C#4 1 0;428 D#4 1 0;429 B4 1 0;430 F#4 1 0;432 F6 1 0;432 A#3 1 0;432.6600036621094 F#6 1 0;433 C#4 1 0;433.3299865722656 G6 1 0;434.010009765625 C4 1 0;434.010009765625 C#6 2 0;434.010009765625 G#6 2 0;435.010009765625 C#4 1 0;436.010009765625 A#3 1 0;436.010009765625 C#6 2 0;436.010009765625 G#6 2 0;438.010009765625 A#3 1 0;439.010009765625 C4 1 0;438.010009765625 C6 2 0;438.010009765625 G6 2 0;440.010009765625 C#4 1 0;440.010009765625 C6 2 0;440.010009765625 G6 2 0;441.010009765625 G#4 1 0;442.010009765625 F4 1 0;442.010009765625 G6 2 0;442.010009765625 C6 2 0;444.010009765625 F6 1 0;444.6700134277344 F#6 1 0;444.010009765625 F3 2 0;445.3399963378906 G6 1 0;446.0199890136719 C#6 2 0;446.0199890136719 G#3 2 0;446.0199890136719 G#6 2 0;448.0199890136719 G#6 2 0;448.0199890136719 C#6 2 0;448.0199890136719 C4 2 0;450.0199890136719 D#4 2 0;450.0199890136719 C6 2 0;450.0199890136719 G#6 2 0;452.0199890136719 G6 1 0;452.0199890136719 A#5 1 0;452.0199890136719 C4 1 0;453.0199890136719 G#3 1 0;453.0199890136719 F6 1 0;453.0199890136719 G#5 1 0;454.0199890136719 D#4 1 0;454.0199890136719 D#6 2 0;454.0199890136719 G#5 2 0;455.0199890136719 C4 1 0;456.0199890136719 B3 1 0;457.0199890136719 D#4 1 0;458.0199890136719 C#4 1 0;459.0199890136719 D#4 1 0;460.0199890136719 B3 1 0;462.0199890136719 B3 1 0;463.0199890136719 C#4 1 0;464.0199890136719 D#4 1 0;465.0199890136719 B4 1 0;466.0199890136719 F#4 1 0;468.0199890136719 B3 1 0;469.0199890136719 D#4 1 0;456.0199890136719 A#5 15 0;456.0199890136719 F6 15 0;470.0199890136719 C#4 1 0;471.0199890136719 D#4 1 0;472.0199890136719 B3 1 0;474.0199890136719 B3 1 0;475.0199890136719 C#4 1 0;476.0199890136719 D#4 1 0;477.0199890136719 B4 1 0;478.0199890136719 F#4 1 0;480.0199890136719 A#3 1 0;480.0199890136719 F6 1 0;480.67999267578125 F#6 1 0;481.0199890136719 C#4 1 0;481.3500061035156 G6 1 0;482.0299987792969 C4 1 0;482.0299987792969 C#6 2 0;482.0299987792969 G#6 2 0;483.0299987792969 C#4 1 0;484.0299987792969 A#3 1 0;484.0299987792969 C#6 2 0;484.0299987792969 G#6 2 0;486.0299987792969 A#3 1 0;487.0299987792969 C4 1 0;486.0299987792969 C6 2 0;486.0299987792969 G6 2 0;488.0299987792969 C#4 1 0;488.0299987792969 G6 2 0;488.0299987792969 C6 2 0;489.0299987792969 G#4 1 0;490.0299987792969 F4 1 0;490.0299987792969 G6 2 0;490.0299987792969 C6 2 0;492.0299987792969 D#5 2 0;492.0299987792969 G#3 2 0;494.0299987792969 C6 2 0;494.0299987792969 D#3 2 0;496.0299987792969 F3 2 0;496.0299987792969 A#5 2 0;498.0299987792969 G#5 1 0;498.0299987792969 G#3 2 0;499.0299987792969 F#5 1 0;500.0299987792969 F5 2 0;500.0299987792969 C4 2 0;502.0299987792969 G#5 2 0;502.0299987792969 D#4 2 0;504.0299987792969 B3 1 0;505.0299987792969 D#4 1 0;506.0299987792969 C#4 1 0;507.0299987792969 D#4 1 0;504.0299987792969 A#5 4 0;508.0299987792969 B3 1 0;508.0299987792969 C#6 2 0;510.0299987792969 B3 1 0;511.0299987792969 C#4 1 0;510.0299987792969 D#6 2 0;512.030029296875 D#4 1 0;512.030029296875 C#6 2 0;513.030029296875 B4 1 0;514.030029296875 F#4 1 0;514.030029296875 D#6 2 0;516.030029296875 B3 1 0;517.030029296875 D#4 1 0;518.030029296875 C#4 1 0;516.030029296875 F6 4 0;519.030029296875 D#4 1 0;520.030029296875 B3 1 0;520.030029296875 D#6 2 0;522.030029296875 B3 1 0;522.030029296875 F#6 2 0;523.030029296875 C#4 1 0;524.030029296875 D#4 1 0;524.030029296875 F6 2 0;525.030029296875 B4 1 0;526.030029296875 F#4 1 0;526.030029296875 D#6 2 0;528.030029296875 A#3 1 0;529.030029296875 C#4 1 0;530.030029296875 C4 1 0;528.030029296875 F6 4 0;531.030029296875 C#4 1 0;532.030029296875 A#3 1 0;532.030029296875 F#6 2 0;534.030029296875 F6 1 0;534.030029296875 A#3 1 0;535.030029296875 C4 1 0;535.030029296875 F#6 1 0;536.030029296875 C#4 1 0;536.030029296875 D#6 2 0;537.030029296875 G#4 1 0;538.030029296875 F4 1 0;538.030029296875 F6 2 0;540.030029296875 F3 2 0;540.030029296875 C#6 4 0;542.030029296875 G#3 2 0;544.030029296875 D#6 2 0;544.030029296875 C4 2 0;546.030029296875 C6 1 0;547.030029296875 C#6 1 0;546.030029296875 D#4 2 0;548.030029296875 C4 1 0;548.030029296875 A#5 2 0;549.030029296875 G#3 1 0;550.030029296875 D#4 1 0;551.030029296875 C4 1 0;550.030029296875 G#5 2 0;552.030029296875 B3 1 0;553.030029296875 D#4 1 0;554.030029296875 C#4 1 0;552.030029296875 F5 4 0;555.030029296875 D#4 1 0;556.030029296875 B3 1 0;556.030029296875 F#5 2 0;558.030029296875 B3 1 0;559.030029296875 C#4 1 0;560.030029296875 D#4 1 0;558.030029296875 G#5 4 0;561.030029296875 B4 1 0;562.030029296875 F#4 1 0;562.030029296875 A#5 2 0;564.030029296875 B3 1 0;565.030029296875 D#4 1 0;566.030029296875 C#4 1 0;564.030029296875 F5 4 0;567.030029296875 D#4 1 0;568.030029296875 B3 1 0;568.030029296875 F#5 2 0;570.030029296875 B3 1 0;571.030029296875 C#4 1 0;572.030029296875 D#4 1 0;570.030029296875 G#5 4 0;573.030029296875 B4 1 0;574.030029296875 F#4 1 0;574.030029296875 A#5 2 0;576.030029296875 A#3 1 0;576.030029296875 F5 1 0;576.030029296875 F6 1 0;576.6900024414062 F#6 1 0;577.030029296875 C#4 1 0;577.030029296875 F#5 1 0;577.3599853515625 G6 1 0;578.0399780273438 C4 1 0;579.0399780273438 C#4 1 0;578.0399780273438 C#6 2 0;578.0399780273438 G#6 2 0;580.0399780273438 A#3 1 0;580.0399780273438 G#6 2 0;580.0399780273438 C#6 2 0;582.0399780273438 A#3 1 0;582.0399780273438 C6 2 0;582.0399780273438 G6 2 0;583.0399780273438 C4 1 0;584.0399780273438 C#4 1 0;585.0399780273438 G#4 1 0;584.0399780273438 C6 2 0;584.0399780273438 G6 2 0;586.0399780273438 F4 1 0;586.0399780273438 C6 2 0;586.0399780273438 G6 2 0;588.0399780273438 F6 1 0;588.7000122070312 F#6 1 0;588.0399780273438 F3 2 0;589.3800048828125 G6 1 0;590.0499877929688 G#6 2 0;590.0499877929688 C#6 2 0;590.0499877929688 G#3 2 0;578.0399780273438 F5 15 0;592.0499877929688 G#6 2 0;592.0499877929688 C4 2 0;592.0499877929688 C#6 2 0;594.0499877929688 D#4 2 0;594.0499877929688 C6 2 0;594.0499877929688 G#6 2 0;596.0499877929688 C4 1 0;596.0499877929688 G6 1 0;596.0499877929688 A#5 1 0;597.0499877929688 G#3 1 0;597.0499877929688 F6 1 0;597.0499877929688 G#5 1 0;598.0499877929688 D#4 1 0;598.0499877929688 D#6 2 0;598.0499877929688 G#5 2 0;599.0499877929688 C4 1 0;600.0499877929688 B3 1 0;601.0499877929688 D#4 1 0;602.0499877929688 C#4 1 0;600.0499877929688 A#5 4 0;603.0499877929688 D#4 1 0;604.0499877929688 B3 1 0;604.0499877929688 C#6 2 0;606.0499877929688 B3 1 0;606.0499877929688 D#6 2 0;607.0499877929688 C#4 1 0;608.0499877929688 D#4 1 0;608.0499877929688 C#6 2 0;609.0499877929688 B4 1 0;610.0499877929688 F#4 1 0;610.0499877929688 D#6 2 0;612.0499877929688 B3 1 0;613.0499877929688 D#4 1 0;614.0499877929688 C#4 1 0;612.0499877929688 F6 4 0;615.0499877929688 D#4 1 0;616.0499877929688 B3 1 0;616.0499877929688 D#6 2 0;618.0499877929688 B3 1 0;618.0499877929688 F#6 2 0;619.0499877929688 C#4 1 0;620.0499877929688 D#4 1 0;621.0499877929688 B4 1 0;620.0499877929688 F6 2 0;622.0499877929688 F#4 1 0;622.0499877929688 D#6 2 0;624.0499877929688 A#3 1 0;625.0499877929688 C#4 1 0;626.0499877929688 C4 1 0;624.0499877929688 F6 4 0;627.0499877929688 C#4 1 0;628.0499877929688 A#3 1 0;628.0499877929688 F#6 2 0;630.0499877929688 A#3 1 0;630.0499877929688 F6 1 0;631.0499877929688 F#6 1 0;631.0499877929688 C4 1 0;632.0499877929688 C#4 1 0;633.0499877929688 G#4 1 0;632.0499877929688 D#6 2 0;634.0499877929688 F4 1 0;634.0499877929688 F6 2 0;636.0499877929688 F3 2 0;636.0499877929688 C#6 4 0;638.0499877929688 G#3 2 0;640.0499877929688 C4 2 0;640.0499877929688 D#6 2 0;642.0499877929688 C6 1 0;642.0499877929688 D#4 2 0;643.0499877929688 C#6 1 0;644.0499877929688 C4 1 0;644.0499877929688 A#5 2 0;645.0499877929688 G#3 1 0;646.0499877929688 D#4 1 0;646.0499877929688 G#5 2 0;647.0499877929688 C4 1 0;648.0499877929688 B3 1 0;649.0499877929688 D#4 1 0;650.0499877929688 C#4 1 0;651.0499877929688 D#4 1 0;648.0499877929688 F5 4 0;652.0499877929688 B3 1 0;652.0499877929688 F#5 2 0;654.0499877929688 B3 1 0;655.0499877929688 C#4 1 0;656.0499877929688 D#4 1 0;654.0499877929688 G#5 4 0;657.0499877929688 B4 1 0;658.0499877929688 F#4 1 0;658.0499877929688 A#5 2 0;660.0499877929688 B3 1 0;661.0499877929688 D#4 1 0;662.0499877929688 C#4 1 0;660.0499877929688 F5 4 0;663.0499877929688 D#4 1 0;664.0499877929688 B3 1 0;664.0499877929688 F#5 2 0;666.0499877929688 B3 1 0;667.0499877929688 C#4 1 0;668.0499877929688 D#4 1 0;669.0499877929688 B4 1 0;666.0499877929688 G#5 4 0;670.0499877929688 F#4 1 0;670.0499877929688 A#5 2 0;672.0499877929688 A#3 1 0;672.0499877929688 F5 1 0;673.0499877929688 C#4 1 0;673.0499877929688 F#5 1 0;674.0499877929688 C4 1 0;675.0499877929688 C#4 1 0;676.0499877929688 A#3 1 0;678.0499877929688 A#3 1 0;679.0499877929688 C4 1 0;680.0499877929688 C#4 1 0;674.0499877929688 F5 8 0;681.0499877929688 G#4 1 0;682.0499877929688 F4 1 0;684.0499877929688 G#3 2 0;684.0499877929688 D#6 2 0;684.0499877929688 G#5 2 0;686.0499877929688 D#6 2 0;686.0499877929688 C7 2 0;686.0499877929688 D#3 2 0;688.0499877929688 F3 2 0;688.0499877929688 C#6 2 0;688.0499877929688 A#6 2 0;690.0499877929688 G#6 1 0;690.0499877929688 C6 1 0;691.0499877929688 F#6 1 0;691.0499877929688 A#5 1 0;690.0499877929688 G#3 2 0;692.0499877929688 G#5 2 0;692.0499877929688 F6 2 0;692.0499877929688 C4 2 0;694.0499877929688 F5 2 0;694.0499877929688 G#6 2 0;694.0499877929688 D#4 2 0;696.0499877929688 F#3 2 0;698.0499877929688 C4 1 0;699.0499877929688 C#4 1 0;700.0499877929688 A#3 1 0;701.0499877929688 F3 1 0;702.0499877929688 F#3 2 0;696.0499877929688 A#5 8 0;696.0499877929688 F#5 8 0;704.0499877929688 C4 1 0;704.0499877929688 F5 2 0;705.0499877929688 C#4 1 0;704.0499877929688 C5 2 0;706.0499877929688 A#3 1 0;706.0499877929688 D#5 2 0;706.0499877929688 G#5 2 0;707.0499877929688 D#4 1 0;708.0499877929688 G#3 2 0;710.0499877929688 D#3 1 0;708.0499877929688 F5 4 0;711.0499877929688 F3 1 0;708.0499877929688 A#5 4 0;712.0499877929688 G#3 1 0;713.0499877929688 F3 1 0;712.0499877929688 F5 2 0;712.0499877929688 C#6 2 0;714.0499877929688 F#5 1 0;714.0499877929688 D#6 1 0;714.0499877929688 D#3 2 0;715.0499877929688 C#6 1 0;715.0499877929688 F5 1 0;716.0499877929688 D#5 2 0;716.0499877929688 F3 2 0;716.0499877929688 C6 2 0;718.0499877929688 G#3 2 0;718.0499877929688 F5 2 0;718.0499877929688 C#6 2 0;720.0499877929688 A#3 1 0;721.0499877929688 A#4 1 0;722.0499877929688 D#4 1 0;723.0499877929688 F4 1 0;724.0499877929688 C#4 1 0;725.0499877929688 G#3 1 0;726.0499877929688 A#3 1 0;727.0499877929688 A#4 1 0;728.0499877929688 D#4 1 0;729.0499877929688 F4 1 0;730.0499877929688 C#4 1 0;731.0499877929688 G#3 1 0;732.0499877929688 A#3 1 0;733.0499877929688 A#4 1 0;734.0499877929688 D#4 1 0;720.0499877929688 F5 15 0;720.0499877929688 A#5 15 0;735.0499877929688 F4 1 0;736.0499877929688 C#4 1 0;737.0499877929688 F3 1 0;738.0499877929688 A#5 2 0;738.0499877929688 F5 2 0;738.0499877929688 G#3 2 0;740.0499877929688 D#3 2 0;740.0499877929688 C#6 2 0;740.0499877929688 G#5 2 0;742.0499877929688 A#5 2 0;742.0499877929688 D#6 2 0;742.0499877929688 F3 2 0;744.0499877929688 D#3 2 0;746.0499877929688 G#3 1 0;747.0499877929688 A#3 1 0;748.0499877929688 F#3 1 0;749.0499877929688 C#3 1 0;744.0499877929688 G#5 8 0;750.0499877929688 D#3 2 0;744.0499877929688 F6 8 0;752.0499877929688 G#3 1 0;753.0499877929688 A#3 1 0;752.0499877929688 G#5 2 0;752.0499877929688 C#6 2 0;754.0499877929688 A#5 2 0;754.0499877929688 D#6 2 0;754.0499877929688 C4 2 0;756.0499877929688 F3 2 0;758.0499877929688 C4 1 0;756.0499877929688 G#5 4 0;756.0499877929688 F6 4 0;759.0499877929688 G#4 1 0;760.0499877929688 F4 1 0;760.0499877929688 D#6 2 0;761.0499877929688 C4 1 0;760.0499877929688 A#5 2 0;762.0499877929688 G#5 1 0;762.0499877929688 C#6 1 0;762.0499877929688 F3 1 0;763.0499877929688 A#5 1 0;763.0499877929688 D#6 1 0;763.0499877929688 F4 1 0;764.0499877929688 G#3 1 0;764.0499877929688 D#5 2 0;764.0499877929688 C6 2 0;765.0499877929688 F4 1 0;766.0499877929688 A#3 1 0;766.0499877929688 F5 2 0;766.0499877929688 G#5 2 0;767.0499877929688 G#4 1 0;768.0499877929688 F#3 1 0;769.0499877929688 F#4 1 0;770.0499877929688 C#4 1 0;771.0499877929688 D#4 1 0;772.0499877929688 F4 1 0;773.0499877929688 F3 1 0;774.0499877929688 F#3 1 0;775.0499877929688 F#4 1 0;768.0499877929688 F5 8 0;768.0499877929688 A#5 8 0;776.0499877929688 C#4 1 0;777.0499877929688 D#4 1 0;776.0499877929688 C#5 2 0;778.0499877929688 F4 1 0;778.0499877929688 D#5 2 0;779.0499877929688 F#3 1 0;780.0499877929688 F3 1 0;781.0499877929688 F4 1 0;782.0499877929688 C4 1 0;783.0499877929688 G#4 1 0;780.0499877929688 F5 4 0;784.0499877929688 F4 1 0;784.0499877929688 D#5 2 0;785.0499877929688 C4 1 0;786.0499877929688 F3 1 0;786.0499877929688 C#5 1 0;787.0499877929688 D#5 1 0;787.0499877929688 F4 1 0;788.0499877929688 G#3 1 0;788.0499877929688 C5 2 0;789.0499877929688 F4 1 0;790.0499877929688 A#3 1 0;791.0499877929688 G#4 1 0;790.0499877929688 G#5 2 0;792.0499877929688 F#3 1 0;793.0499877929688 F#4 1 0;794.0499877929688 C#4 1 0;795.0499877929688 D#4 1 0;796.0499877929688 F4 1 0;797.0499877929688 F3 1 0;798.0499877929688 F#3 1 0;792.0499877929688 F5 8 0;799.0499877929688 F#4 1 0;800.0499877929688 C#4 1 0;800.0499877929688 G#5 2 0;800.0499877929688 C#6 2 0;801.0499877929688 D#4 1 0;802.0499877929688 F4 1 0;803.0499877929688 F#3 1 0;802.0499877929688 D#6 2 0;802.0499877929688 A#5 2 0;804.0499877929688 G#3 1 0;805.0499877929688 D#3 1 0;806.0499877929688 C4 1 0;804.0499877929688 F6 4 0;804.0499877929688 G#5 4 0;807.0499877929688 G#3 1 0;808.0499877929688 D#4 1 0;809.0499877929688 C4 1 0;808.0499877929688 A#5 2 0;808.0499877929688 D#6 2 0;810.0499877929688 G#5 1 0;810.0499877929688 C#6 1 0;810.0499877929688 G#4 1 0;811.0499877929688 D#6 1 0;811.0499877929688 G#3 1 0;811.0499877929688 A#5 1 0;812.0499877929688 D#4 2 0;812.0499877929688 D#5 2 0;812.0499877929688 C6 2 0;814.0499877929688 G#5 2 0;814.0499877929688 F5 2 0;814.0499877929688 C4 2 0;816.0499877929688 F#3 1 0;817.0499877929688 F#4 1 0;818.0499877929688 C#4 1 0;819.0499877929688 D#4 1 0;820.0499877929688 F4 1 0;821.0499877929688 F3 1 0;822.0499877929688 F#3 1 0;816.0499877929688 A#5 8 0;816.0499877929688 F5 8 0;823.0499877929688 F#4 1 0;824.0499877929688 C#4 1 0;824.0499877929688 C#6 2 0;824.0499877929688 G#5 2 0;825.0499877929688 D#4 1 0;826.0499877929688 F4 1 0;826.0499877929688 A#5 2 0;826.0499877929688 D#6 2 0;827.0499877929688 F#3 1 0;828.0499877929688 F3 1 0;829.0499877929688 F4 1 0;830.0499877929688 C4 1 0;828.0499877929688 F6 4 0;828.0499877929688 G#5 4 0;831.0499877929688 G#4 1 0;832.0499877929688 F4 1 0;833.0499877929688 C4 1 0;832.0499877929688 D#6 2 0;832.0499877929688 A#5 2 0;834.0499877929688 G#5 1 0;834.0499877929688 C#6 1 0;834.0499877929688 F3 1 0;835.0499877929688 A#5 1 0;835.0499877929688 F4 1 0;835.0499877929688 D#6 1 0;836.0499877929688 G#3 1 0;836.0499877929688 D#5 2 0;836.0499877929688 C6 2 0;837.0499877929688 F4 1 0;838.0499877929688 A#3 1 0;838.0499877929688 F5 2 0;839.0499877929688 G#4 1 0;838.0499877929688 G#5 2 0;840.0499877929688 A#3 1 0;841.0499877929688 A#4 1 0;842.0499877929688 D#4 1 0;843.0499877929688 F4 1 0;844.0499877929688 C#4 1 0;845.0499877929688 G#3 1 0;846.0499877929688 A#3 1 0;847.0499877929688 A#4 1 0;848.0499877929688 D#4 1 0;849.0499877929688 F4 1 0;850.0499877929688 C#4 1 0;851.0499877929688 G#3 1 0;852.0499877929688 A#3 1 0;840.0499877929688 F5 15 0;840.0499877929688 A#5 15 0;855.0499877929688 A#3 1 0;858.0499877929688 A#3 1 0;860.0499877929688 A#3 1 0;862.0499877929688 A#3 1 0'
 
 
 
"""
Find a piece of music on onlinesequencer.net, click edit,
then select all notes with CTRL+A and copy them with CTRL+C
Paste string as shown above after removing ";:" from
the end and "Online Sequencer:120233:" from the start
"""
 
from machine import Pin
 
#One buzzer on pin 0
mySong = music(song, pins=[Pin(0)])
 
#Four buzzers
#mySong = music(song, pins=[Pin(0),Pin(1),Pin(2),Pin(3)])
 
while True:
    print(mySong.tick())
    sleep(0.04)