GrandMA3 Lua Plugin API'sine Giriş: Temel Kavramlar

GrandMA3'ün güçlü Lua eklenti sistemiyle kendi araçlarınızı nasıl geliştireceğinizi adım adım öğrenin.

GrandMA3 Lua Plugin API Nedir?

GrandMA3, sahne aydınlatma konsollarının en gelişmiş yazılımlarından biri olmasının yanı sıra, kullanıcıların kendi araçlarını yazmasına olanak tanıyan güçlü bir Lua tabanlı plugin sistemi sunar. Bu sistem sayesinde tekrarlayan görevleri otomatikleştirebilir, özel kullanıcı arayüzleri oluşturabilir ve konsol ile doğrudan iletişim kurabilirsiniz.

Lua, hafif ve öğrenmesi kolay bir betik dilidir. GrandMA3'ün plugin API'si bu dili temel alarak size konsolun iç yapısına erişim sağlar: fixture verileri, gruplar, sekanslar, makrolar ve daha fazlası doğrudan Lua kodu üzerinden yönetilebilir.

Plugin Ortamını Hazırlamak

GrandMA3'te yeni bir plugin oluşturmak için önce Plugin Pool'a gitmeniz gerekir. Menu > Plugins yolunu izleyerek plugin havuzuna ulaşabilirsiniz. Buradan Add butonuyla yeni bir plugin nesnesi oluşturun ve içine bir Script ekleyin.

Her plugin en az bir main() fonksiyonu içermelidir. Konsol bu fonksiyonu çalıştırmayı tetiklediğinde Lua motoru devreye girer.

local function main()
  Printf("Merhaba, GrandMA3!")
end

return main
İpucu: Printf() fonksiyonu çıktıyı sistem komut satırına yazar. Geliştirme sürecinde hata ayıklamak için oldukça kullanışlıdır.

Temel API Fonksiyonları

GrandMA3 Lua API'si onlarca yerleşik fonksiyon sunar. En sık kullanılan kategoriler şunlardır:

Veri Okuma

  • GetVar("variableName") — Konsol değişkenlerini okur
  • DataPool() — Aktif data pool nesnesine erişim sağlar
  • Root() — Show dosyasının kök nesnesine ulaşır

Komut Çalıştırma

  • Cmd("Go+ Seq 1") — Herhangi bir konsol komutunu string olarak çalıştırır
  • Execute() — Daha karmaşık komut dizileri için kullanılır

Kullanıcı Etkileşimi

  • ErrPrintf() — Hata mesajı gösterir
  • WaitForInput() — Kullanıcıdan onay bekler

İlk Gerçek Plugin: Fixture Sayacı

Aşağıdaki örnek, sahnedeki toplam fixture sayısını ekrana yazdıran basit bir plugin göstermektedir:

local function main()
  local fixturePool = Root().ShowData.DataPools.Default.Fixtures
  local count = fixturePool.ElementCount
  Printf("Toplam fixture sayisi: " .. tostring(count))
end

return main

Bu örnekte Root() ile show dosyasının en üst nesnesine iniyoruz, ardından varsayılan data pool içindeki Fixtures nesnesine ulaşarak ElementCount özelliğini okuyoruz.

Plugin Geliştirirken Dikkat Edilmesi Gerekenler

  1. Hata yakalama kullanın: pcall() ile fonksiyonlarınızı sarmalayın; beklenmedik hatalar konsolun donmasına yol açabilir.
  2. Sürüm uyumluluğunu kontrol edin: GrandMA3 yazılım güncellemeleri API davranışını değiştirebilir, release notları takip edin.
  3. Performansa dikkat edin: Show sırasında çalışan pluginler döngüye girirse lighting engine'i etkileyebilir.
  4. Yedek alın: Plugin geliştirme yaparken show dosyanızın yedeğini düzenli olarak kaydedin.
Önemli Not: GrandMA3 Lua ortamı standart Lua 5.3 kütüphanelerinin tamamını desteklemez. io ve os gibi modüller güvenlik nedeniyle kısıtlıdır; dosya işlemleri için konsolun kendi API fonksiyonlarını kullanmanız gerekir.

Plugin API'si, GrandMA3'ü sadece bir konsol olmaktan çıkarıp programlanabilir bir otomasyon platformuna dönüştürür. Temel fonksiyonları kavradıktan sonra makro yönetimi, dinamik grup oluşturma ve hatta özel kullanıcı panelleri geliştirmek mümkün hale gelir.