Øvet Sonic Pi Music Ruby/Sonic Pi

Skab Tetris Sangen med Kode

Programmer Sonic Pi til at spille musiknoder og skabe Tetris theme sangen.


Start

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.

Klik på play knappen nedenunder for at høre, hvordan musikken vil lyde:

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.

screenshot

Formerne af Tetris blokkene er kaldt tetrominoer - 2D formen, der kan laves med 4 firkanter.

Yderligere information for klubledere

Hvis du har brug for at printe dette projekt, brug venligst den Printer-venlige version.

  • infoKlubleder 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_timed i 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 :r til rests.
    • “Mere musik” - Find simpel nodeblad online og programmer det.

    Hyppigst-stillede spørgsmål


Næste

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:

    screenshot

  • Her er den første takt af Korobeiniki:

    screenshot

    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:

    screenshot

  • Dette virker, men det kræver ret meget skrivearbejde. Der er en kortere måde at programmere længere melodier: play_pattern.

    play_pattern giver dig muligheden for at programmere flere noder på en linje.

    Omskriv din kode, så den bruger play_pattern til at afspille den første takt:

    screenshot

  • 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_pattern til play_pattern_timed, kan du bestemme, hvor lang hver node skal være.

    De grønne tal viser, hvor mange slag hver node er.

    screenshot

    (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_timed tager en liste af noder og derefter en liste af tider.

    Ændre din play_pattern kode til at se således ud:

    screenshot

  • 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:

    screenshot

  • Tilføj den næste takt af musikken, hvor timingen er den samme som den forrige.

    screenshot

    screenshot

Begynder melodien at lyde bekendt?


Tilbage Næste

Udfordring: Afslut melodien

Her er musikken for de to næste takter.

screenshot

Kan du bruge play_pattern_timed til at programmere dem?


Tilbage Næste

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:

    screenshot

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

    screenshot

  • Vi kan bruge variablen current_bpm til 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:

    screenshot

Prøv at øge antallet af gentagelser, så sangen bliver hurtigere og hurtigere!


Tilbage Næste

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.

Choosing a synth


Tilbage Næste

Udfordring: Mere af melodien

Kan du programmere den næste del af melodien?

screenshot

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

screenshot


Tilbage Næste

Udfordring: Mere musik

Kan du bruge hvad du har lært, til at programmere mere musik? Du kan lede efter musiknoder online. Nogle musiknoder giver bogstavsnavnene for noderne, hvilket gør det lettere at programmere.


Tilbage

Licence

Unless otherwise specified, everything in this repository is covered by the following licence:

Creative Commons License

PROJECT NAME by the Raspberry Pi Foundation is licenced under a Creative Commons Attribution 4.0 International License.

login