22
33# Threads[ ^ 1 ]
44
5- Mal angenommen, du hast eine Killer-Basslinie und einen krassen Beat
6- gebaut. Wie kannst du beides zur selben Zeit spielen lassen? Eine
7- Möglichkeit ist es, beide Sounds per Hand ineinanderzuweben - erst
5+ Mal angenommen, Du hast eine Killer-Basslinie und einen krassen Beat
6+ gebaut. Wie kannst Du beides zur selben Zeit spielen lassen? Eine
7+ Möglichkeit ist es, beide Sounds per Hand ineinander zu weben - erst
88spielt der Bass ein bisschen, dann das Schlagzeug, dann der Bass etwas
99mehr... Beides aufeinander zeitlich abzustimmen wird jedoch immer
1010schwieriger, vor allem, wenn noch mehr Sounds dazukommen sollen.
1111
12- Was, wenn Sonic Pi Sounds automatisch für dich ineinanderflechten
12+ Was, wenn Sonic Pi Sounds automatisch für Dich ineinanderflechten
1313könnte? Kann es auch, und zwar mit einem besonderen Ding, welches
1414* Thread* heisst.
1515
1616## Unendliche Schleifen
1717
18- Damit das nächste Beispiel nicht zu kompliziert wird, musst du dir
19- einfach vorstellen, dass dies deine Killer-Basslinie und dein krasser
18+ Damit das nächste Beispiel nicht zu kompliziert wird, musst Du Dir
19+ einfach vorstellen, dass dies Deine Killer-Basslinie und Dein krasser
2020Beat sind.
2121
2222```
3333```
3434
3535Wir haben das früher schon besprochen, Schleifen sind wie * schwarze
36- Löcher* für ein Programm; läuft es einmal in die Schleife, dann kommt
37- es nicht mehr da raus, bis du den Stopp-Button klickst. Wie also
36+ Löcher* für ein Programm; läuft es einmal in die Schleife kommt
37+ es nicht mehr da raus, bis Du den Stopp-Button klickst. Wie also
3838können wir beide Schleifen zur selben Zeit abspielen? Wir müssen Sonic
39- Pi sagen, dass wir einen bestimmten Codeteil gleichzeitig mit dem Rest
40- des Codes starten möchten. Hierbei helfen uns Threads.
39+ Pi sagen, dass wir einen bestimmten Abschnitt gleichzeitig mit
40+ dem Rest des Codes starten möchten. Hierbei helfen uns Threads.
4141
4242## Threads kommen zur Hilfe
4343
5959Indem wir die erste Schleife in einen ` in_thread ` -do/end-Block
6060hineinpacken, sagen wir Sonic Pi, es soll den Inhalt dieses
6161do/end-Blocks * genau zur selben Zeit* wie die nachfolgende Anweisung
62- ausführen (und das ist in diesem Fall die zweite Schleife) . Probier's
63- aus, und du wirst den Beat zusammen mit der Basslinie hören!
62+ ausführen. Und das ist in diesem Fall die zweite Schleife. Probier's
63+ aus, und Du wirst den Beat zusammen mit der Basslinie hören!
6464
6565Was nun, wenn wir obendrauf noch einen Synth legen wollten. Ungefähr
6666so:
@@ -116,20 +116,20 @@ end
116116
117117## Ablauf in Threads
118118
119- Was dich vielleicht erstaunt: Wenn du den Ausführen-Button klickst,
120- erzeugst du tatsächlich einen neuen Thread, innerhalb dessen der Code
121- abläuft. Deshalb werden immer neue Soundschichten erzeugt, wenn du den
119+ Was Dich vielleicht erstaunt: Wenn Du den Ausführen-Button klickst,
120+ erzeugst Du tatsächlich einen neuen Thread, innerhalb dessen der Code
121+ abläuft. Deshalb werden immer neue Soundschichten erzeugt, wenn Du den
122122Ausführen-Button wiederholt klickst. Weil die Abläufe Threads sind,
123123werden sie automatisch die Sounds verflechten.
124124
125125## Geltungsbereich[ ^ 2 ]
126126
127- Wenn du dich besser mit Sonic Pi auskennst, wirst du herausfinden, dass
128- Threads die wichtigsten Bausteine für deine Musik sind. Eine
127+ Wenn Du Dich besser mit Sonic Pi auskennst, wirst Du herausfinden, dass
128+ Threads die wichtigsten Bausteine für Deine Musik sind. Eine
129129wesentliche Funktion, die Threads haben, ist es, * aktuelle
130130Einstellungen* , die für einen Thread gelten, von anderen Threads zu
131- isolieren. Was genau bedeutet das? Wenn du etwa einen Synths mit
132- ` use_synth ` durch einen anderen austauschst, dann veränderst du den
131+ isolieren. Was genau bedeutet das? Wenn Du etwa einen Synths mit
132+ ` use_synth ` durch einen anderen austauschst, dann veränderst Du den
133133Synth lediglich für den * aktuellen Tread* - kein anderer der laufenden
134134Treads bekommt den neuen Synth. Sehen wir uns das mal in der Praxis an:
135135
@@ -147,14 +147,14 @@ sleep 1
147147play 50
148148```
149149
150- Hast du gehört, dass sich der mittlere Klang von den anderen beiden
150+ Hast Du gehört, dass sich der mittlere Klang von den anderen beiden
151151unterschied? Die ` use_synth ` -Anweisung hat sich nur auf den Thread
152152ausgewirkt, in dem sie auch stand und nicht auf den äußeren
153153Haupt-Thread.
154154
155155## Vererbung
156156
157- Wenn du einen neuen Thread mit ` in_thread ` erzeugst, wird dieser vom
157+ Wenn Du einen neuen Thread mit ` in_thread ` erzeugst, wird dieser vom
158158vorherigen alle Einstellungen automatisch erben. Sehen wir uns das an:
159159
160160```
@@ -167,18 +167,18 @@ in_thread do
167167end
168168```
169169
170- Hast du bemerkt, dass der zweite Ton mit dem ` :tb303 ` -Synth gespielt
170+ Hast Du bemerkt, dass der zweite Ton mit dem ` :tb303 ` -Synth gespielt
171171wird, obwohl er in einem anderen Thread läuft? Jede der Einstellungen,
172172die mit den unterschiedlichen ` use_* ` -Ausdrücken vorgenommen wird,
173173verhält sich genauso.
174174
175- Wenn neue Threads erzeugt werden, dann erben sie alle Einstellungen von
176- ihren Eltern; wenn du aber Einstellungen innerhalb dieser neuen Threads
175+ Wenn neue Threads erzeugt werden, erben sie alle Einstellungen von
176+ ihren Eltern; wenn Du aber Einstellungen innerhalb dieser neuen Threads
177177änderst, haben diese keine Einfluss auf die Eltern-Threads.
178178
179179## Threads benennen
180180
181- Schließlich kannst du deinen Treads Namen geben.
181+ Schließlich kannst Du Deinen Treads Namen geben.
182182
183183```
184184in_thread(name: :bass) do
@@ -197,8 +197,8 @@ in_thread(name: :drums) do
197197end
198198```
199199
200- Sieh dir das Protokoll-Fenster an, wenn du diesen Code laufen läßt.
201- Siehst du , wie die Namen der Threads ausgeben werden?
200+ Sieh Dir das Protokoll-Fenster an, wenn Du diesen Code laufen läßt.
201+ Siehst Du , wie die Namen der Threads ausgeben werden?
202202
203203```
204204[Run 36, Time 4.0, Thread :bass]
@@ -209,7 +209,7 @@ Siehst du, wie die Namen der Threads ausgeben werden?
209209
210210Eine letzte Anmerkungen zu Threads mit Namen: Ein mit einem bestimmten
211211Namen benannter Thread kann zur Zeit nur einmal laufen. Probieren wir
212- das aus. Sieh dir den folgenden Code an:
212+ das aus. Sieh Dir den folgenden Code an:
213213
214214```
215215in_thread do
@@ -221,14 +221,14 @@ end
221221```
222222
223223Kopiere das einmal in ein Arbeitsfenster und klicke den
224- Ausführen-Button. Klick' in noch ein paarmal. Hör' dir diese Kakophonie
224+ Ausführen-Button. Klick' in noch ein paarmal. Hör' Dir diese Kakophonie
225225mehrerer Amen Breaks an, die ryhtmisch nicht unbedingt passend
226- zueinander ablaufen. Ok, jetzt kannst du auf Stopp klicken.
226+ zueinander ablaufen. Ok, jetzt kannst Du auf Stopp klicken.
227227
228- Dieses Verhalten konnten wir schon woanders sehen - wenn du den
228+ Dieses Verhalten konnten wir schon woanders sehen - wenn Du den
229229Ausführen-Button klickst, legen sich die neuen Klänge über die schon
230- laufenden. Wenn eine Schleife abläuft, und du den Ausführen-Button
231- dreimal klickst, bekommst du drei Ebenen mit Schleifen, die simultan
230+ laufenden. Wenn eine Schleife abläuft, und Du den Ausführen-Button
231+ dreimal klickst, bekommst Du drei Ebenen mit Schleifen, die simultan
232232ablaufen.
233233
234234Mit benannten Treads ist das jedoch anders:
@@ -243,28 +243,28 @@ end
243243```
244244
245245Versuche mit diesem Code den Ausführen-Button mehrmals zu klicken. Du
246- wirst immer nur eine Amen Break-Schleife hören. Das kannst du auch im
246+ wirst immer nur eine Amen Break-Schleife hören. Das kannst Du auch im
247247Protokoll sehen:
248248
249249```
250250==> Skipping thread creation: thread with name :amen already exists.
251251```
252252
253- Sonic Pi sagt dir , dass ein Thread mit dem Namen ` :amen ` bereits läuft
254- und es deshalb keinen neuen erzeugt .
253+ Sonic Pi sagt Dir , dass ein Thread mit dem Namen ` :amen ` bereits läuft
254+ und es deshalb keinen neuen startet .
255255
256- Vielleicht erscheint dir dieses Verhalten im Moment noch nicht sinnvoll
256+ Vielleicht erscheint Dir dieses Verhalten im Moment noch nicht sinnvoll
257257- aber es wird sehr nützlich sein, wenn wir ins Live-Coding
258258einsteigen...
259259
260- [ ^ 1 ] : Im Deutschen bedeutet * thread* * Kette* , * Faden* oder * Strang* .
261- Der * Thread* ist jedoch für Programmiersprachen eine so typische Idee,
262- dass eine Übersetzung nur insoweit Sinn macht, dass du dir die Idee,
263- die hinter diesem Begriff steht, besser merken kannst. Weil niemand
264- beim Programmieren über eine Kette oder einen Faden spricht, werden wir
265- hier nur den englischen Begriff benutzen.
266-
267- [ ^ 2 ] : * Scope* bedeutet ins Deutsche übersetzt soviel wie
268- * Geltungsbereich* . Für die Zukunft ist es aber ganz gut, sich den
269- englischen Begriff zu merken, da auch dieser im Programmierbereich
270- häufig vorkommt.
260+ [ ^ 1 ] : Im Deutschen bedeutet * thread* * Kette* , * Faden* oder * Strang* .
261+ Der * Thread* ist jedoch für Programmiersprachen eine so typische
262+ Idee, dass eine Übersetzung nur insoweit Sinn macht, dass Du Dir
263+ die Idee, die hinter diesem Begriff steht, besser merken kannst.
264+ Weil niemand beim Programmieren über eine Kette oder einen Faden
265+ spricht, werden wir hier nur den englischen Begriff benutzen.
266+
267+ [ ^ 2 ] : * Scope* bedeutet ins Deutsche übersetzt soviel wie
268+ * Geltungsbereich* . Für die Zukunft ist es aber ganz gut, sich den
269+ englischen Begriff zu merken, da auch dieser im Programmierbereich
270+ häufig vorkommt.
0 commit comments