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:
- Koşulu kontrol eden
Ifsatırı yaz - Koşul yanlışsa çalışacak komutları (else bloğu) hemen altına ekle
- Else bloğunun sonuna
Go [if bloğu sonrasına]koy - 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ı:
UserVarile 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" 1Daha sonra macro içinde:
If Equal UserVar "SahneAktif" 1 Go 8Bu 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:Gokomutu 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
Exitveya doğal son noktası ekleyin; aksi hâlde macro beklenmedik satırlara atlayabilir.