GrandMA2'de Zamanlayıcı Plugin Yazımı
GrandMA2 üzerinde Lua diliyle zamanlayıcı (timer) plugin geliştirmeyi adım adım öğrenin; temel fonksiyonlar ve pratik örneklerle.
GrandMA2'de Zamanlayıcı Plugin Yazımı
GrandMA2, sahne aydınlatmasında otomasyon ve özel kontrol ihtiyaçları için Lua tabanlı plugin sistemi sunar. Bu sistem sayesinde belirli aralıklarla çalışan zamanlayıcılar oluşturmak, gösterim sırasında tekrarlayan görevleri otomatikleştirmek mümkündür. Bir sayım geri sayacı, periyodik fixture reset komutu veya zaman bazlı sahne geçişi; hepsinin temeli aynı yapıya dayanır.
Lua'da Zamanlayıcı Mantığı
GrandMA2 plugin ortamında gerçek anlamda arka planda çalışan bir thread yoktur. Bunun yerine coroutine yapısı ve coroutine.yield() komutuyla bekleme simüle edilir. Plugin her çalıştırıldığında Lua yorumlayıcısı kodu baştan sona işler; bu nedenle döngüsel zamanlayıcılar için coroutine kullanmak zorunludur.
Temel Plugin İskeleti
Aşağıda zamanlayıcı mantığını kuracağımız temel yapı yer almaktadır:
local function timer(display_handle, argument) local co = coroutine.create(function() while true do -- Yapılacak işlem buraya Echo("Zamanlayıcı tetiklendi") coroutine.yield(5) -- 5 saniye bekle end end) while coroutine.status(co) ~= "dead" do local ok, delay = coroutine.resume(co) if ok and delay then coroutine.yield(delay) end end end return timer
Önemli Not: coroutine.yield() fonksiyonuna geçilen sayı, saniye cinsinden bekleme süresini ifade eder. GrandMA2, bu değeri otomatik olarak yorumlar.Pratik Örnek: Geri Sayım Sayacı
Aşağıdaki plugin, belirlenen saniyeden başlayarak sıfıra kadar sayan ve her adımda ekrana yazan bir geri sayım zamanlayıcısı oluşturur:
local function timer(display_handle, argument) local sure = tonumber(argument) or 10 local co = coroutine.create(function() for i = sure, 0, -1 do Echo("Kalan sure: " .. i .. " saniye") if i == 0 then Echo("SURE DOLDU!") end coroutine.yield(1) end end) while coroutine.status(co) ~= "dead" do local ok, delay = coroutine.resume(co) if ok and delay then coroutine.yield(delay) end end end return timer
Bu plugini çalıştırırken argüman olarak süreyi girebilirsiniz. Örneğin 30 yazarsanız 30 saniyelik geri sayım başlar.
Plugin'i GrandMA2'ye Yüklemek
- GrandMA2 menüsünden Menu > Plugin ekranını açın.
- New butonuna tıklayarak yeni bir plugin oluşturun.
- Plugin adını ve argüman tipini (varsa) tanımlayın.
- Lua kodunuzu editöre yapıştırın.
- Save ile kaydedin, ardından Run ile test edin.
Gelişmiş Kullanım: Fixture Komutu Entegrasyonu
Zamanlayıcıları yalnızca ekran çıktısıyla sınırlı tutmak zorunda değilsiniz. Cmd() fonksiyonuyla herhangi bir GrandMA2 komutunu zamanlayıcı içinden çalıştırabilirsiniz:
Cmd("Go+ Cue 1 Executor 1")
Bu satırı döngünüzün içine ekleyerek belirli aralıklarla otomatik cue geçişi sağlayabilirsiniz. Özellikle interaktif kurulum testleri veya demo modları için bu yaklaşım oldukça kullanışlıdır.
Dikkat Edilmesi Gereken Noktalar
- Zamanlayıcı çalışırken plugin penceresini kapatmak döngüyü sonlandırır.
- Çok kısa aralıklar (0.1 saniyenin altı) konsolda performans sorununa yol açabilir.
Echo()çıktıları Plugin Output penceresinden takip edilebilir.- Argümanları her zaman
tonumber()ile doğrulayın; aksi hâlde nil değeri hataya neden olur.