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
end

Bu 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)
end

TextInput() 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.

  1. Nesneye erişmeden önce nil kontrolü yapın.
  2. Komutları pcall() ile sararak hataları yakalayın.
  3. Geliştirme sırasında Plugin Console penceresini açık tutun; Echo() ile debug mesajları gönderin.