Skab tetris sangen med kode
INTRODUKTION
I dette projekt vil du lære, hvordan man programmerer musiknoder i Sonic Pi, så du kan oversætte dem til kode. Til dette formål vil du lave din egen version af temamelodien i Tetris.
Du kan klikke play for at høre hele melodien:
Tetris er et populært videospil skabt i 1984 af den russiske programmør Alexey Pajitnov. Mange versioner af Tetris bruger musikken ‘Korobeiniki’, en russisk folkedans.
Hvis du bruger en Raspberry Pi computer, kan du høre musikken ved at spille Tetromino-spillet. Du kan finde det ved at vælge ‘Games’ fra menuen og derefter ‘Python Games’. Spil ikke for længe! Du skal stadig programmere.
Klubleder notater
Introduktion:
I dette projekt vil de unge mennesker programmere Tetris temaet ved at bruge musiknoder, samt arbejde med musikalsk notation.
Ressourcer
‘Project Materials’ linket for dette projekt indeholder følgende ressourcer:
Klubleder ressourcer
Du kan finde en færdig version af dette projekt ved at klikke ‘Project Materials’ linket for dette projekt, som indeholder:
- kobeiniki.txt
- kobeiniki.mp3
Læringsmål
- Programmere musik ved at bruge bogstavsnavne.
- Bruge
play_pattern_timedi Sonic Pi.
Dette projekt bruger elementer fra den følgende sektion af Raspberry Pi Digital Making Curriculum:
Udfordringer
- “Afslut melodien” – Programmer mere musik ud fra annoteret musiknotation.
- “Mix melodien” – Eksperimenter med at bruge forskellige synths.
- “Mere af melodien” – Programmer mere musik ud fra annoteret musiknotation og bruge
:rtil rests. - “Mere musik” – Find simpel nodeblad online og programmer det.
Hyppigst-stillede spørgsmål
Projekt Materialer
Klubleder ressourcer
Programmer begyndelsen
Lad os programmere den første del af melodien i Sonic Pi.
Først skal vi vælge en hastighed og en synth for musikken. Den normale hastighed er 60 slag pr. minut (bpm), men dette er ikke hurtigt nok for dette stykke.
Vælg en tom Buffer i Sonic Pi og tilføj denne kode:

Her er den første takt af Korobeiniki:

Den viser navnet og længden af noden henholdsvis nedenunder i rødt og ovenover i grønt.
Musikalske noder har bogstavsnavne fra A-G. For at få flere noder, gentager du bogstaverne for at få flere oktaver (rækker af højere eller lavere noder). Hver oktav starter fra C.
I Sonic Pi er standarden oktav 4, og b3 betyder b fra oktaven nedenunder.
Sonic Pi tillader brugen af bogstavsnavne i stedet for tal. Dette hjælper, når man arbejder med musikalsk notation.
Programmer de første 3 noder af Korobeiniki i Sonic Pi:

Dette virker, men det kræver ret meget skrivearbejde. Der er en kortere måde at programmere længere melodier:
play_pattern.play_patterngiver dig muligheden for at programmere flere noder på en linje.Omskriv din kode, så den bruger
play_patterntil at afspille den første takt:
Du har nok bemærket, at noderne i den første takt faktisk ikke har den samme længde. Det er helt fint; hvis du ændrer
play_patterntilplay_pattern_timed, kan du bestemme, hvor lang hver node skal være.De grønne tal viser, hvor mange slag hver node er.

(Hvis du læser musik, er dette stykke i 4/4 tid, og en kvartnode varer et slag, en ottendedelsnode varer et halvt slag, og en halvnode varer to slag)
play_pattern_timedtager en liste af noder og derefter en liste af tider.Ændre din
play_patternkode til at se således ud:
Hvis du ikke indtaster nok tider, vil Sonic Pi gentage dem. Denne takt gentager timingen
1, 0.5, 0.5(en kvartnode, efterfulgt af to ottendedelsnoder), så du kan ændre din kode til:
Tilføj den næste takt af musikken, hvor timingen er den samme som den forrige.


Begynder melodien at lyde bekendt?
Udfordring: Afslut melodien
Her er musikken for de to næste takter.

Kan du bruge play_pattern_timed til at programmere dem?
Hurtigere!
Det sker ofte, at tempoet af russiske folkesange stiger og stiger. Temamelodien af Tetris gør det også, når du når til højere niveauer i spillet.
Lad os få din melodi til at blive hurtigere og hurtigere.
Din kode burde se således ud nu:

Lad os indsætte musikken i et loop, så det gentager sig flere gange:

Vi kan bruge variablen
current_bpmtil at finde ud af, hvad den nuværende bpm er sat til.Tilføj en linje til at øge bpm’et hver gang du gentager loopet:

Prøv at øge antallet af gentagelser, så sangen bliver hurtigere og hurtigere!
Udfordring: Mix melodien
Prøv at ændre hvordan melodien lyder, ved at bruge en anderledes synth.
Du kan se en liste af de synths, der er tilgængelige for dig, ved at skrive use_synth [space] og derefter vælge fra den liste, som dukker op.

Udfordring: Mere af melodien
Kan du programmere den næste del af melodien?

Sonic Pi bruger ‘:r’ med småt bogstav for en pause i sangen, og du kan bruge det præcist som en node.
