GrandMA3 Plugin ile Dinamik Sequence Yönetimi
GrandMA3 plugin geliştirme ortamında Lua kullanarak sequence'ları dinamik olarak nasıl yöneteceğinizi öğrenin.
GrandMA3 Plugin ile Dinamik Sequence Yönetimi
GrandMA3'ün plugin sistemi, sahne aydınlatma profesyonellerine konsol üzerinde özelleştirilmiş otomasyon araçları geliştirme imkânı tanır. Lua tabanlı plugin yapısı sayesinde sequence'ları programatik olarak oluşturabilir, düzenleyebilir ve tetikleyebilirsiniz. Bu yaklaşım, büyük prodüksiyonlarda tekrar eden görevleri otomatize etmek için güçlü bir çözüm sunar.
Plugin Ortamını Hazırlamak
GrandMA3 üzerinde plugin geliştirmeye başlamak için önce Plugin Editörü'nü açmanız gerekir. Menu > Plugins > Plugin Editor yolunu izleyerek editöre ulaşabilirsiniz. Yeni bir plugin oluşturup dosya adını tanımladıktan sonra Lua kodunuzu yazmaya başlayabilirsiniz.
Her plugin, en az bir Main() fonksiyonu içermelidir. GrandMA3, plugini çalıştırdığında bu fonksiyonu giriş noktası olarak kullanır.
Sequence Nesnesine Erişim
Dinamik yönetimin temel adımı, mevcut sequence nesnelerine doğru şekilde erişmektir. GrandMA3 plugin API'si bu iş için DataPool() ve GetObjectByPath() fonksiyonlarını sunar.
local seq = DataPool().Sequences["Sequence 1"]Bu satır, veri havuzundan Sequence 1 adlı nesneyi doğrudan çeker. Sequence adını dinamik olarak değiştirmek isterseniz bir değişken üzerinden erişim sağlamanız yeterlidir.
Sequence'ı Programatik Olarak Başlatmak ve Durdurmak
Sequence kontrolü için en sık kullanılan yöntem, konsol komutlarını plugin içinden çalıştırmaktır. Cmd() fonksiyonu bu işi üstlenir.
- Sequence başlatmak:
Cmd("Go+ Sequence 1") - Sequence durdurmak:
Cmd("Off Sequence 1") - Belirli cue'ya atlamak:
Cmd("Goto Sequence 1 Cue 3") - Tempo ayarlamak:
Cmd("Assign Sequence 1 /Rate=120")
İpucu: Cmd() fonksiyonu GrandMA3'ün komut satırıyla birebir aynı syntaxı kullanır. Konsol komut geçmişinden doğrudan kopyalayabilirsiniz.Döngü ile Çoklu Sequence Yönetimi
Büyük gösterilerde onlarca sequence'ı tek bir plugin üzerinden kontrol etmek mümkündür. Aşağıdaki örnek, belirli bir isimlendirme kuralına göre tüm sequence'ları kapatır.
local function Main()
local pool = DataPool().Sequences
for i = 1, pool.Count do
local s = pool[i]
if s and s.Name:find("ACT1_") then
Cmd("Off Sequence " .. s.Name)
end
end
endBu yaklaşımda isimlendirme kuralları kritik önem taşır. Sequence adlarına ACT1_, ACT2_ gibi ön ekler eklemek, plugin'in doğru nesneleri hedeflemesini kolaylaştırır.
Kullanıcıdan Girdi Almak
Dinamik yönetimi bir adım ileri taşımak için popup dialog kullanarak kullanıcıdan gerçek zamanlı girdi alabilirsiniz.
local input = TextInput("Sequence adını girin:")
if input then
Cmd("Go+ Sequence " .. input)
endTextInput() fonksiyonu konsolda küçük bir giriş penceresi açar. Operatörün sahne sırasında hızlıca sequence adı yazmasına olanak tanır.
Hata Yönetimi ve Güvenli Kodlama
Plugin'lerinizde sequence nesnesinin var olup olmadığını her zaman kontrol edin. Aksi hâlde konsol hata verir ve plugin çalışmayı durdurabilir.
- Nesneye erişmeden önce
nilkontrolü yapın. - Komutları
pcall()ile sararak hataları yakalayın. - Geliştirme sırasında Plugin Console penceresini açık tutun;
Echo()ile debug mesajları gönderin.