# درس Strudel الأول: أول لوب لك

> تعلّم كود الموسيقى في Strudel من الصفر: شغّل لوب طبول، اكتب نوتات وكوردات، اختر الأصوات، اضبط السرعة وأضف المؤثرات. كل مثال يشتغل مثل ما هو.

كل لحن في Shawarma هو كود Strudel: لغة تسوّي فيها موسيقى بكتابة أنماط قصيرة. تكتب سطر، يشتغل في لوب، وتغيّره وهو شغّال. هذا الدرس يمشي معك من صوت طبل واحد إلى لحن قصير فيه طبول وباص وكوردات. كل مثال هنا يشتغل في Shawarma مثل ما هو.

## الدورات: كيف يحسب الكود الوقت

الموسيقى مبنية من **دورات**. الدورة لفّة وحدة من اللوب، والنمط يملأ دورة وحدة إلا إذا قلت له غير كذا. الدورة تطول ثانيتين بشكل افتراضي. إذا عددت أربع ضربات في الدورة، يصير عندك 120 ضربة في الدقيقة (BPM).

هذي الفكرة الوحيدة اللي لازم تمسكها: كل ما زادت الخطوات في النمط، قصرت كل خطوة، لأنها كلها تتقاسم نفس الدورة.

## أول لوب لك

`s` تشغّل الأصوات بأسمائها. `bd` طبل باص (كيك) و `sd` سنير:

```
s("bd sd")
```

[افتح في Shawarma](https://shawarma.studio/open?snippet=first)

خطوتين، فكل صوت ياخذ نص الدورة: كيك، سنير، كيك، سنير.

زِد خطوات وتصير أقصر. `hh` هاي هات مقفول:

```
s("bd hh sd hh")
```

[افتح في Shawarma](https://shawarma.studio/open?snippet=firstFour)

النص اللي بين علامات التنصيص اسمه **mini-notation** (الترميز المصغّر). هو لغة صغيرة للإيقاع، وأغلب الموسيقى تصير داخل هذي العلامات.

## السكتات والتكرار والمجموعات

`~` سكتة: الخطوة موجودة بس ساكتة.

```
s("bd ~ sd ~")
```

[افتح في Shawarma](https://shawarma.studio/open?snippet=rests)

`*` تكرر الخطوة داخل مساحتها. `bd*2` تشغّل كيكين مكان الكيك الواحد:

```
s("bd*2 sd bd sd")
```

[افتح في Shawarma](https://shawarma.studio/open?snippet=repeat)

الأقواس المربعة تضغط كذا خطوة في خطوة وحدة. هنا الخطوة الثانية والرابعة انقسمت كل وحدة إلى قسمين. `oh` هاي هات مفتوح:

```
s("bd [sd sd] hh [hh oh]")
```

[افتح في Shawarma](https://shawarma.studio/open?snippet=brackets)

الأقواس الزاوية تشغّل عنصر واحد في كل دورة، بالدور. هذا يشغّل سنير في الدورة الأولى وتصفيقة (`cp`) في اللي بعدها:

```
s("bd <sd cp> bd <sd [cp cp]>")
```

[افتح في Shawarma](https://shawarma.studio/open?snippet=alternate)

## الطبقات

الفاصلة داخل علامات التنصيص تشغّل الأنماط مع بعض في نفس الوقت. ثلاث طبقات: كيك على كل ضربة، هاي هات بين الضربات، وسنير على الضربة الثانية والرابعة.

```
s("bd*4, [~ hh]*4, ~ sd ~ sd")
```

[افتح في Shawarma](https://shawarma.studio/open?snippet=layers)

نفس الشي بـ `stack`، اللي تخلّي كل طبقة في سطرها. أسهل في القراءة لما تطول الطبقات، وتقدر تعطي كل وحدة مؤثراتها الخاصة.

```
stack(
  s("bd*4"),
  s("[~ hh]*4"),
  s("~ sd ~ sd"),
)
```

[افتح في Shawarma](https://shawarma.studio/open?snippet=stack)

## النوتات والكوردات

`note` تشغّل النوتات. اكتب اسم النوتة، وبعدها `#` أو `b` إذا تبغى، ثم الأوكتاف: `c4` هي دو الوسطى، و `c3` الدو اللي تحتها. `.s("piano")` تختار الآلة؛ بدونها تسمع سينث بسيط بموجة مثلثية.

```
note("c3 e3 g3 b3").s("piano")
```

[افتح في Shawarma](https://shawarma.studio/open?snippet=notes)

كورد دو ماجور سابع، نوتة نوتة.

الأرقام تشتغل بعد. هي أرقام نوتات MIDI، و 60 هو دو الوسطى:

```
note("48 52 55 59").s("piano")
```

[افتح في Shawarma](https://shawarma.studio/open?snippet=midi)

حط النوتات داخل أقواس وبينها فواصل عشان تعزف كورد. وداخل الأقواس الزاوية، يجيك كورد واحد في كل دورة:

```
note("<[c3,e3,g3] [a2,c3,e3] [f2,a2,c3] [g2,b2,d3]>").s("piano")
```

[افتح في Shawarma](https://shawarma.studio/open?snippet=chords)

C ثم A مينور ثم F ثم G: كورد واحد في كل دورة.

## السلالم

مع `n` و `scale` تكتب درجات السلّم بدل أسماء النوتات. `0` أول نوتة في السلّم، و `2` الثالثة، و `4` الخامسة. أي درجة تبقى داخل السلّم، فصعب تعزف نوتة غلط.

```
n("0 2 4 <6 7>").scale("C4:minor").s("piano")
```

[افتح في Shawarma](https://shawarma.studio/open?snippet=scale)

آخر خطوة تتبادل بين الدرجة السابعة والأوكتاف.

اسم السلّم يجي بعد النوتة الأساسية والأوكتاف وبعد نقطتين: `C4:major`، `A3:minor`، `D4:dorian`، `E3:phrygian`، `G4:pentatonic`.

## اختيار الأصوات

فيه كم سينث جاهز: `sawtooth` و `square` و `triangle` و `sine`. هذا يشغّل نفس خط الباص على كل واحد منها بالدور:

```
note("c2 c3 eb2 g2").s("<sawtooth square triangle sine>")
```

[افتح في Shawarma](https://shawarma.studio/open?snippet=synths)

الآلات اللي اسمها `gm_…` تسجيلات General MIDI: جيتارات، وتريات، أورغن، نحاسيات وغيرها ([الدليل المختصر](https://shawarma.studio/ar/learn/cheat-sheet#sounds) يذكر بعضها).

```
note("d4 f4 a4 c5").s("gm_acoustic_guitar_nylon")
```

[افتح في Shawarma](https://shawarma.studio/open?snippet=instruments)

أغلب أصوات الطبول لها كذا تسجيل. الرقم بعد النقطتين يختار واحد منها، والعدّ يبدأ من 0:

```
s("hh hh:1 hh:2 hh:1")
```

[افتح في Shawarma](https://shawarma.studio/open?snippet=sampleIndex)

## السرعة

`setcpm` تضبط السرعة بعدد الدورات في الدقيقة. مع أربع ضربات في الدورة، اقسم الـ BPM اللي تبغاه على 4. تقدر تكتب العملية وتخلّي الكود يحسبها:

```
setcpm(124/4) // 124 BPM, four beats to a cycle

s("bd*4, [~ hh]*4")
```

[افتح في Shawarma](https://shawarma.studio/open?snippet=tempo)

## المؤثرات

الدوال اللي بعد النقطة تغيّر صوت النمط، وتقدر تسلسل منها قد ما تبغى. `lpf` فلتر يقص الحدّة (كل ما صغر الرقم صار الصوت أغمق)، و `gain` مستوى الصوت، و `room` صدى القاعة (ريفيرب).

```
note("c2 c2 eb2 g1").s("sawtooth")
  .lpf(600)
  .gain(.6)
  .room(.4)
```

[افتح في Shawarma](https://shawarma.studio/open?snippet=effects)

المؤثر يقدر ياخذ نمط بعد. هنا الهاي هات ياخذ نمط مستوى صوت: عالي، واطي، متوسط، واطي، يتكرر مرتين في الدورة، وهذا يخلّي صف الهاي هات المستقيم يتمايل:

```
s("hh*8").gain("[.9 .4 .6 .4]*2")
```

[افتح في Shawarma](https://shawarma.studio/open?snippet=patternEffect)

## الحركة والتغيير

`sine` قيمة تطلع وتنزل بنعومة. `range` تحدد قد إيش تتحرك، و `slow(8)` تخلّي الحركة الوحدة تاخذ ثمان دورات. لما تستخدمها على الفلتر، تفتح الصوت وتقفله مع الوقت:

```
note("c2*8").s("sawtooth").lpf(sine.range(300, 2000).slow(8))
```

[افتح في Shawarma](https://shawarma.studio/open?snippet=signal)

`lastOf` تغيّر كل دورة رابعة (أو أي رقم تعطيها)، وهذي طريقة سريعة تجيب فيها «فِل» في آخر الجملة:

```
s("bd ~ sd ~").lastOf(4, x => x.fast(2))
```

[افتح في Shawarma](https://shawarma.studio/open?snippet=lastOf)

ثلاث مازورات عادية، وبعدها وحدة تنعزف بضعف السرعة.

## نجمعها مع بعض

سمِّ كل جزء بـ `const`، وبعدين حطها فوق بعض. كذا مرتبة أغلب الألحان في Shawarma، عشان تلقى الجزء وتغيّره.

```
setcpm(30) // 120 BPM

const drums = s("bd*4, [~ cp]*2, [~ hh]*4").gain(.8)
const bass = note("<[c2*4] [a1*4] [f1*4] [g1*4]>").s("sawtooth").lpf(600).gain(.5)
const keys = note("<[c4,e4,g4] [c4,e4,a4] [c4,f4,a4] [b3,d4,g4]>")
  .s("piano").struct("~ x ~ x").gain(.5)

stack(drums, bass, keys)
```

[افتح في Shawarma](https://shawarma.studio/open?snippet=together)

طبول، ونوتة باص على كل ضربة، وكوردات بيانو بين الضربات.

من هنا، جرّب تغيّر شي واحد كل مرة: نوتة في الباص، الرقم في `lpf`، خطوة في الطبول. [دليل أنماط الطبول](https://shawarma.studio/ar/learn/drum-patterns) يتعمق أكثر في الإيقاع، و [الألحان النموذجية](https://shawarma.studio/ar/learn/examples) تعرض قطع أطول فيها مقدمة ومقاطع مبنية بـ `arrange`.

## جرّبه في Shawarma

Shawarma محرر موسيقى كل لحن فيه كود. لحنك يشتغل ويعيد نفسه؛ اطلب من المساعد تغيير بكلام عادي، اسمعه، واحتفظ فيه بس إذا عجبك. أو عدّل الكود بنفسك، مثل ما في هذا الدليل. المحرر مجاني، مع 5 ردود من المساعد للتجربة؛ وPro يبدأ بـ7 أيام مجانًا.

[ابدأ مجانًا مع Google](https://shawarma.studio/auth/google?return=%2Far) [شوف الأسعار](https://shawarma.studio/ar/pricing)

---

الصفحة: https://shawarma.studio/ar/learn/tutorial
