GrandMA2'de Koşullu (If/Else) Macro Yazımı

GrandMA2 konsolunda If/Else yapısını kullanarak akıllı, koşula bağlı macrolar nasıl yazılır öğrenin.

GrandMA2'de Koşullu Macro Mantığı

GrandMA2'nin macro sistemi, yalnızca komut sıralı çalıştırmakla kalmaz; aynı zamanda koşullu dallanma (if/else) mantığıyla çok daha akıllı otomasyonlar kurmanıza izin verir. Bu sayede bir macro, mevcut durumu okuyarak farklı aksiyonlar alabilir.

GrandMA2'de standart bir programlama dilindeki gibi doğrudan if anahtar kelimesi yoktur. Bunun yerine If komutu ve Go+/Go- kombinasyonuyla koşullu dallanma simüle edilir. Kritik nokta şudur: macro satırları numaralandırılır ve bu numaralar üzerinden atlama (jump) yapılır.

Temel If/Else Yapısı

GrandMA2 macro editöründe koşullu yapı kurmak için If komutu şu şekilde çalışır:

If [koşul] Go [satır numarası]

Koşul doğruysa belirtilen satıra atlar, yanlışsa bir sonraki satırdan devam eder. Bu davranışı kullanarak klasik if/else akışı şöyle kurulur:

  1. Koşulu kontrol eden If satırı yaz
  2. Koşul yanlışsa çalışacak komutları (else bloğu) hemen altına ekle
  3. Else bloğunun sonuna Go [if bloğu sonrasına] koy
  4. Koşul doğruysa çalışacak komutları (if bloğu) ekle

Pratik Bir Örnek: Sahne Durumuna Göre Tepki

Örneğin, Executor 1 aktifse farklı, pasifse farklı bir sequence tetiklemek istiyorsunuz. Macro şöyle görünür:

  • Satır 1: If On Exec 1 1 Go 4
  • Satır 2: Go+ Seq 5 (Executor kapalıysa bu çalışır)
  • Satır 3: Go 6 (if bloğunu atla)
  • Satır 4: Go+ Seq 10 (Executor açıksa bu çalışır)
  • Satır 5: (macro sonu veya devam)
İpucu: Satır numaraları macro editöründe solda görünür. Yeni satır eklediğinizde numaralar otomatik kayar; bu yüzden Jump/Go hedeflerini her düzenlemeden sonra kontrol edin.

Kullanılabilecek Koşul İfadeleri

GrandMA2'de If komutunun ardından kullanabileceğiniz bazı koşul türleri şunlardır:

  • On / Off: Bir executor veya cue'nun aktif olup olmadığını kontrol eder — If On Exec 1 5
  • Active: Bir fixture grubunun sahne üzerinde aktif output verip vermediğini kontrol eder
  • Equal / NotEqual: Değer karşılaştırması yapar — If Equal [değişken] [sayı]
  • UserVar karşılaştırması: UserVar ile sakladığınız değerleri koşul olarak kullanabilirsiniz

UserVar ile Gelişmiş Koşul Mantığı

Daha karmaşık senaryolarda UserVar değişkenleri koşul mantığını güçlendirir. Önce bir değişkene değer atayın, ardından o değeri sorgulayın:

Store UserVar "SahneAktif" 1

Daha sonra macro içinde:

If Equal UserVar "SahneAktif" 1 Go 8

Bu yöntem, birden fazla macro arasında durum paylaşımı yapmanıza da olanak tanır; adeta basit bir durum makinesi (state machine) kurmuş olursunuz.

Dikkat: Go komutu macro'yu tamamen o satıra yönlendirirken, GoBack önceki konuma döner. Sonsuz döngü oluşturmamak için her dallanma yoluna bir çıkış noktası koymayı unutmayın.

Yaygın Hatalar ve Çözümleri

  • Yanlış satır numarası: Satır ekleyip silerken Go hedefleri kayabilir. Her düzenlemede numaraları doğrulayın.
  • Koşul her zaman true dönüyor: Executor numarası veya Page numarasının doğru girildiğinden emin olun.
  • Macro sonlanmıyor: En son satıra açık bir Exit veya doğal son noktası ekleyin; aksi hâlde macro beklenmedik satırlara atlayabilir.