Du kan få en micro:bit att spela musik. Det enda som behövs är att koppla in någon form av högtalare.
Koppla in en högtalare
Eftersom micro:bit inte har en inbyggd högtalare behöver vi koppla in en för att kunna höra musik. Så fort vi använder någon block i vår kod som ger ljud, visar simulatorn hur man kan koppla in en vanlig hörlurssladd. Ta två krokodilsladdar. Koppla den första mellan pin 0 på micro:bit och metallbiten längst ut på hörlurskontakten. Koppla andra sladden mellan GND (jord) på micro:bit och metallbiten längst in på kontakten.
Sidospår - hörlurskontaktPå din hörlurskontakt ser du olika ”metallbitar”. Om kontakten har 2 stycken, betyder det att den bara stödjer mono ljud (en kanal). Om den har 3 bitar, är den längst ut ljudet som man hör på vänstra sidan, och den i mitten är till för ljudetfrån höger sidan. Biten längst in är jord (ground). Ibland ser man 4 bitar. Då har den även stöd för en mikrofon (som man t.ex. har på många mobiltelefon headsets). I så fall är 3:e och 4:e biten mikrofon och jord, men i vilken ordning kan skilja sig mellan olika standarder. Läs mer på Kjell & Company eller engelska wikipeda.
Spela en ton
Testa att dra ut blocken ”spela ton Mellersta C i 1 taktslag”. Välj vilken ton som spelas genom att klicka på ”Mellersta C”. Du kan antingen välja en ton på pianot som visas, eller skriva in vilken frekvens du vill spela (du kan se att Mellersta C har frekvens 262 Hz). Sen kan du välja hur länge tonen ska spelas.
music.playTone(262, music.beat(BeatFraction.Whole)) music.playTone(294, music.beat(BeatFraction.Half)) music.playTone(330, music.beat(BeatFraction.Whole))
Det finns även ett block ”spela ton” som inte har en bestämd taktslag. Då kommer micro:bit att spela den tonen oändligt, tills man spelar en annan ton eller paus.
input.onButtonPressed(Button.A, function () { music.ringTone(262) }) input.onButtonPressed(Button.B, function () { music.rest(music.beat(BeatFraction.Whole)) })
Blocket ”Paus” från musik kategorin används för att ha paus mellan noterna. Här kan man också välja notvärde, vilket betyder hur många takter det tar. Hur mycket tid en takt tar bestäms med tempot som man sätter.
music.setTempo(200) music.playTone(262, music.beat(BeatFraction.Whole)) music.rest(music.beat(BeatFraction.Half)) music.playTone(294, music.beat(BeatFraction.Half)) music.playTone(330, music.beat(BeatFraction.Whole))
Broder Jakob
Ibland finns det repetition i musik, vilket vi i programmering kan förenkla med loopar. Här är till exempel Broder Jakob.
for (let i = 0; i < 2; i++) { music.playTone(262, music.beat(BeatFraction.Whole)) music.playTone(294, music.beat(BeatFraction.Whole)) music.playTone(330, music.beat(BeatFraction.Whole)) music.playTone(262, music.beat(BeatFraction.Whole)) } for (let i = 0; i < 2; i++) { music.playTone(330, music.beat(BeatFraction.Whole)) music.playTone(349, music.beat(BeatFraction.Whole)) music.playTone(392, music.beat(BeatFraction.Double)) } for (let i = 0; i < 2; i++) { music.playTone(392, music.beat(BeatFraction.Half)) music.playTone(440, music.beat(BeatFraction.Half)) music.playTone(392, music.beat(BeatFraction.Half)) music.playTone(349, music.beat(BeatFraction.Half)) music.playTone(330, music.beat(BeatFraction.Whole)) music.playTone(262, music.beat(BeatFraction.Whole)) } for (let i = 0; i < 2; i++) { music.playTone(262, music.beat(BeatFraction.Whole)) music.playTone(196, music.beat(BeatFraction.Whole)) music.playTone(262, music.beat(BeatFraction.Double)) }
Melodier
Det finns några inbyggda melodier, som gör det lättare att använda än att behöva bygga hela melodin med ”spela ton” block. Vissa är låter, andra är ljudeffekter. Gå in och testa själv! Du kan även välja att upprepa melodin.
input.onButtonPressed(Button.A, function () { music.beginMelody(music.builtInMelody(Melodies.Nyan), MelodyOptions.Once) }) input.onButtonPressed(Button.B, function () { music.beginMelody(music.builtInMelody(Melodies.BaDing), MelodyOptions.Once) }) music.beginMelody(music.builtInMelody(Melodies.PowerUp), MelodyOptions.Once)