{"id":432,"date":"2020-10-07T10:08:26","date_gmt":"2020-10-07T10:08:26","guid":{"rendered":"https:\/\/gigers.com\/blog\/?p=432"},"modified":"2024-06-24T17:33:19","modified_gmt":"2024-06-24T17:33:19","slug":"mehrstimmige-musik-mit-snap","status":"publish","type":"post","link":"https:\/\/gigers.com\/blog\/mehrstimmige-musik-mit-snap\/","title":{"rendered":"Mehrstimmige Musik mit Snap!"},"content":{"rendered":"<p>Die blockbasierte Programmiersprache Snap! bietet verschiedene M\u00f6glichkeiten, Musik w\u00e4hrend der Programmausf\u00fchrung abzuspielen. Beispielsweise ist das Abspielen von Samples m\u00f6glich. Dieser Beitrag beschreibt, wie man die interne Tonerzeugung nutzen kann, um mehrstimmige Musik zu programmieren.<\/p>\n<h2>Grundlagen<\/h2>\n<p>Grundlage der Musikprogrammierung sind die folgenden f\u00fcnf Bl\u00f6cke:<\/p>\n<figure id=\"attachment_437\" aria-describedby=\"caption-attachment-437\" style=\"width: 394px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-437\" src=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2020\/10\/befehle.png\" alt=\"\" width=\"394\" height=\"430\" srcset=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2020\/10\/befehle.png 394w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2020\/10\/befehle-275x300.png 275w\" sizes=\"auto, (max-width: 394px) 100vw, 394px\" \/><figcaption id=\"caption-attachment-437\" class=\"wp-caption-text\">Mit diesen f\u00fcnf Befehlen kann in Snap! ein eigenes Musikst\u00fcck komponiert werden.<\/figcaption><\/figure>\n<p>Mit dem Block &#8222;Tempo&#8220; kann das Tempo des Musikst\u00fccks angegeben werden, wodurch eine Anpassung sp\u00e4ter einfach m\u00f6glich ist.<\/p>\n<p>Mit dem &#8222;Volumen&#8220; wird die Lautst\u00e4rke eines Tons festgelegt. Dies ist insbesondere bei mehrstimmigen Arrangements wichtig, da sich die einzelnen T\u00f6ne sonst aufaddieren k\u00f6nnen und es m\u00f6glicherweise zu einer \u00dcbersteuerung kommt, welche zu St\u00f6rger\u00e4uschen f\u00fchrt.<\/p>\n<p>Beim &#8222;Instrument&#8220; stehen die Grundvarianten Sinus (1), Rechteck (2), S\u00e4gezahn (3) und Dreieck (4) zu Verf\u00fcgung, wobei Typen mit abruptem Wechsel des Signals (z.B. Rechteck) eher zu Kl\u00e4ngen mit mehr Obertoncharakteristik f\u00fchren.<\/p>\n<p>Mit &#8222;Play note&#8220; kann ein Ton der Klaviatur f\u00fcr eine mit &#8222;Beats&#8220; angegebene Tonl\u00e4nge bezogen auf das vorgegebene Tempo abgespielt werden.<\/p>\n<p>Mit &#8222;Rest&#8220; wartet das Programm eine vorgegebene Zeit (abh\u00e4ngig) von den Tempoeinstellungen.<\/p>\n<h2>Einfache Melodie<\/h2>\n<p>Eine einfache Melodie kann abgespielt werden, indem einfach eine Reihe von T\u00f6nen aneinandergereiht wird.<\/p>\n<figure id=\"attachment_435\" aria-describedby=\"caption-attachment-435\" style=\"width: 372px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-435\" src=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2020\/10\/bruder_jakob_anfang.png\" alt=\"\" width=\"372\" height=\"174\" srcset=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2020\/10\/bruder_jakob_anfang.png 372w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2020\/10\/bruder_jakob_anfang-300x140.png 300w\" sizes=\"auto, (max-width: 372px) 100vw, 372px\" \/><figcaption id=\"caption-attachment-435\" class=\"wp-caption-text\">Das Beispiel spielt die ersten vier T\u00f6ne des Kanons &#8222;Bruder Jakob&#8220; ab.<\/figcaption><\/figure>\n<h2>Mehrstimmigkeit<\/h2>\n<p>Das Abspielen eines ganzen Akkords ist m\u00f6glich, indem man mehrere zeitgleich abspielt. Dies funktioniert \u00fcber den Launch-Befehl:<\/p>\n<figure id=\"attachment_436\" aria-describedby=\"caption-attachment-436\" style=\"width: 526px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-436\" src=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2020\/10\/Dreiklang.png\" alt=\"\" width=\"526\" height=\"348\" srcset=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2020\/10\/Dreiklang.png 526w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2020\/10\/Dreiklang-300x198.png 300w\" sizes=\"auto, (max-width: 526px) 100vw, 526px\" \/><figcaption id=\"caption-attachment-436\" class=\"wp-caption-text\">Da alle T\u00f6ne gleichzeitig abgespielt werden, entsteht ein Akkord.<\/figcaption><\/figure>\n<h2>Polyphonie<\/h2>\n<p>Um Mehrstimmigkeit zu erreichen, erg\u00e4nzen wir die das Abspielen eines Tones innerhalb des Launchblockes mit einem weiteren Befehl, welcher dem Programm mitteilt, ab welchem Zeitpunkt dieser Ton gespielt werden soll. Dazu verwenden wir den &#8222;Rest&#8220;-Befehl.<\/p>\n<figure id=\"attachment_438\" aria-describedby=\"caption-attachment-438\" style=\"width: 526px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-438\" src=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2020\/10\/Arpeggio.png\" alt=\"\" width=\"526\" height=\"516\" srcset=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2020\/10\/Arpeggio.png 526w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2020\/10\/Arpeggio-300x294.png 300w\" sizes=\"auto, (max-width: 526px) 100vw, 526px\" \/><figcaption id=\"caption-attachment-438\" class=\"wp-caption-text\">Bei diesem Beispiel werden die T\u00f6ne nicht nur unterschiedlich lang gespielt, sie beginnen auch zu jeweils unterschiedlichen Zeitpunkten.<\/figcaption><\/figure>\n<h2>Musikdaten aus Liste auslesen<\/h2>\n<p>Das obige Beispiel zeigt, dass es schnell un\u00fcbersichtlich wird, wenn man jeden einzelnen Ton \u00fcber einen separaten Launchbefehl starten muss. Deshalb ist es sinnvoll, die einzelnen T\u00f6ne in eine Liste zu verpacken und diese Liste zu benutzen, die Launchbl\u00f6cke zu starten.<\/p>\n<p>Eine entsprechende Liste l\u00e4sst sich am schnellsten in einer Tabellenkalkulation erstellen und kann dann im CSV-Format in Snap! importiert werden (einfach auf die Programmoberfl\u00e4che ziehen).<\/p>\n<figure id=\"attachment_439\" aria-describedby=\"caption-attachment-439\" style=\"width: 462px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-439\" src=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2020\/10\/Bild_2020-10-07_115033.png\" alt=\"\" width=\"462\" height=\"236\" srcset=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2020\/10\/Bild_2020-10-07_115033.png 462w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2020\/10\/Bild_2020-10-07_115033-300x153.png 300w\" sizes=\"auto, (max-width: 462px) 100vw, 462px\" \/><figcaption id=\"caption-attachment-439\" class=\"wp-caption-text\">Jede Zeile enth\u00e4lt einen Ton mit entsprechenden Angaben zu den T\u00f6nen.<\/figcaption><\/figure>\n<p>In der Spalte A steht jeweils die Tonh\u00f6he. Die Spalte B gibt an, ab welchem Zeitpunkt ein Ton gespielt wird. Die Spalte C gibt die Tonl\u00e4nge an und die Spalte D w\u00e4hlt das Instrument aus.<\/p>\n<p>Das folgende Programm liest die CSV-Datei in eine Snap!-Liste (bruder_jakob) ein und arbeitet diese dann zeilenweise ab.<\/p>\n<figure id=\"attachment_440\" aria-describedby=\"caption-attachment-440\" style=\"width: 828px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-440\" src=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2020\/10\/polyphonic_several_instruments-script-pic.png\" alt=\"\" width=\"828\" height=\"584\" srcset=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2020\/10\/polyphonic_several_instruments-script-pic.png 828w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2020\/10\/polyphonic_several_instruments-script-pic-300x212.png 300w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2020\/10\/polyphonic_several_instruments-script-pic-768x542.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><figcaption id=\"caption-attachment-440\" class=\"wp-caption-text\">Jeder einzelne Ton wird ab einem vorgegebenen Zeitpunkt mit einer bestimmten Tonh\u00f6he so lange wie angegeben abgespielt.<\/figcaption><\/figure>\n<p>Mit Hilfe des Befehls &#8222;item n of list&#8220; kann auf die einzelnen Werte innerhalb einer Tabellenzeile zugegriffen werden. Dadurch werden folgende Befehle abgearbeitet:<\/p>\n<ol>\n<li>Das Instrument wird gesetzt;<\/li>\n<li>Das Programm wartet eine vorgegebene Zeit.<\/li>\n<li>Der Ton wird f\u00fcr eine gegebene Zeitdauer abgespielt.<\/li>\n<li>Das Programm wartet, bis der Ton fertig gespielt wurde.<\/li>\n<\/ol>\n<p>Damit wird das Abspielen eines mehrstimmigen Kanons mit Noten unterschiedlicher L\u00e4nge und mit maximal vier verschiedenen Instrumentenfarben m\u00f6glich.<\/p>\n<p>Link zum fertigen Beispiel: <a href=\"https:\/\/snap.berkeley.edu\/project?user=mattgig&amp;project=polyphonic_several_instruments\" target=\"_blank\" rel=\"noopener noreferrer\">Polyphonie mit mehreren Instrumenten<\/a><\/p>\n<h2>Verwendung im Unterricht<\/h2>\n<p>Das Programm kann im Musikunterricht verwendet werden, wenn Sch\u00fclerinnen und Sch\u00fcler sich mit Computermusik besch\u00e4ftigen. Es kann aber auch Teil eines Projekts werden, bei denen die Lernenden Musikelemente in Multimediaprojekte (beispielsweise Computerspiele) einbinden wollen.<\/p>\n<p>Dar\u00fcber hinaus zeigt das fertige Beispiel ein wichtiges Prinzip der Informatik auf, n\u00e4mlich die Trennung von ausf\u00fchrendem Programm und darin zu bearbeitenden Daten. Durch den Import weiterer Notendateien (in CSV-Format), kann das gleiche Programm zum Abspielen ganz unterschiedlicher Musikst\u00fccke verwendet werden.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die blockbasierte Programmiersprache Snap! bietet verschiedene M\u00f6glichkeiten, Musik w\u00e4hrend der Programmausf\u00fchrung abzuspielen. Beispielsweise ist das Abspielen von Samples m\u00f6glich. Dieser Beitrag beschreibt, wie man die interne Tonerzeugung nutzen kann, um mehrstimmige Musik zu programmieren. Grundlagen Grundlage der Musikprogrammierung sind die folgenden f\u00fcnf Bl\u00f6cke: Mit dem Block &#8222;Tempo&#8220; kann das Tempo des Musikst\u00fccks angegeben werden, wodurch &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/gigers.com\/blog\/mehrstimmige-musik-mit-snap\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eMehrstimmige Musik mit Snap!\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-432","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/posts\/432","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/comments?post=432"}],"version-history":[{"count":2,"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/posts\/432\/revisions"}],"predecessor-version":[{"id":442,"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/posts\/432\/revisions\/442"}],"wp:attachment":[{"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/media?parent=432"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/categories?post=432"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/tags?post=432"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}