GrandMA2'de Koşullu Macro Yazımı: If/Else Kullanımı
GrandMA2 konsolunda If/Else mantığıyla dinamik ve akıllı macrolar yazarak show kontrolünüzü bir üst seviyeye taşıyın.
GrandMA2 Macro'larında Koşullu Mantık
GrandMA2'nin macro sistemi, yalnızca komut sıralamasından ibaret değildir. If/Else yapısı sayesinde macrolarınıza karar mekanizmaları ekleyebilir, belirli koşullar sağlandığında farklı komutlar çalıştırabilirsiniz. Bu özellik özellikle show otomasyonu ve operatör hatasını minimize etmek için son derece güçlü bir araçtır.
Temel If/Else Sözdizimi
GrandMA2 macro editöründe koşullu ifadeler If komutuyla başlar. Genel yapı şu şekildedir:
If [koşul] Then [komut1] Else [komut2]Bu yapı tek bir macro satırına yazılabildiği gibi, daha okunabilir olması için birden fazla satıra da bölünebilir. Satırları böldüğünüzde Goto ve Label komutlarıyla akışı yönetmeniz gerekir.
Pratik Bir Örnek: Executor Durumunu Kontrol Etmek
Diyelim ki bir executor'ın çalışıp çalışmadığını kontrol edip buna göre farklı bir aksiyon almak istiyorsunuz. Aşağıdaki macro bunu gerçekleştirir:
- Macro satır 1:
If (Get "Page1.Exec201.IsActive") = 1 - Macro satır 2:
Goto Label 20 - Macro satır 3:
On Executor 201 Page 1 - Macro satır 4:
Goto Label 99 - Macro satır 5:
Label 20 - Macro satır 6:
Off Executor 201 Page 1 - Macro satır 7:
Label 99
Bu yapıda executor aktifse Label 20'ye atlayarak kapatır; değilse açar. Böylece tek bir macro butonu toggle (aç/kapa) işlevi görür.
Koşullarda Kullanılabilecek Değişkenler
GrandMA2'de If koşullarında sıklıkla kullanılan değer kaynakları şunlardır:
- Get komutu ile executor, fader veya buton değerleri
- UserVar ve GlobalVar ile tanımladığınız özel değişkenler
- Sayısal karşılaştırmalar:
=,<,>,<=,>=
UserVar ile Koşul Kullanımı
Özel bir sayaç veya durum bayrağı tutmak için UserVar tanımlayabilirsiniz:
Store UserVar "showState" = 0Daha sonra bu değişkeni bir koşulda şu şekilde kullanırsınız:
If (UserVar "showState") = 0İpucu: UserVar değerleri konsol kapatılınca sıfırlanır. Show boyunca kalıcı bir durum takibi yapmanız gerekiyorsa GlobalVar kullanın veya değeri bir plugin içinde saklayın.
Çoklu Koşul: And / Or Kullanımı
GrandMA2 makrolarında birden fazla koşulu aynı anda değerlendirmek için And ve Or operatörleri kullanılır:
If ((UserVar "sceneMode") = 1) And ((Get "Page1.Exec201.IsActive") = 1)Bu satır, hem sceneMode değişkeni 1'e eşitse hem de Exec201 aktifse koşulu doğru kabul eder. Karmaşık show senaryolarında bu tür çok katmanlı kontroller büyük esneklik sağlar.
Dikkat Edilmesi Gereken Noktalar
- If satırının sonunda noktalı virgül veya fazladan boşluk bırakmak parse hatasına yol açabilir.
- Label numaraları aynı macro içinde benzersiz olmalıdır.
- Koşullu macro'ları test ederken Command Line penceresini açık tutun; hata mesajları buraya düşer.
- Büyük ve karmaşık makrolarda her bloğu yorum satırı ile belgelemeniz ileride yapacağınız düzenlemeleri kolaylaştırır.