GrandMA3 Lua Plugin API'sine Giriş: Temel Kavramlar

GrandMA3'ün güçlü Lua plugin API'sini keşfedin: ilk plugin'inizi yazın, temel fonksiyonları öğrenin ve show dosyanızı otomatikleştirin.

GrandMA3 Lua Plugin API Nedir?

GrandMA3, kullanıcıların kendi özel araçlarını geliştirmesine 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 show dosyanızı programatik olarak yönetebilirsiniz. Lua, hafif ve öğrenmesi kolay bir betik dili olduğundan sahne aydınlatma profesyonelleri için ideal bir seçimdir.

İlk Plugin'inizi Oluşturmak

GrandMA3'te bir plugin oluşturmak için önce Plugin havuzuna gitmeniz gerekir. Menu > Plugins yolunu izleyerek plugin editörünü açabilirsiniz. Yeni bir plugin ekledikten sonra içine Lua kodu yazmaya başlayabilirsiniz.

Her plugin en az bir Entry Point fonksiyonu içermelidir. Bu fonksiyon, plugin çalıştırıldığında ilk tetiklenen kod bloğudur:

local function main() Echo("Merhaba MA3!") end return main

Bu basit örnek, GrandMA3'ün sistem mesaj alanına bir metin yazdırır. Echo() fonksiyonu, geliştirme sürecinde hata ayıklamak için en sık kullanılan araçlardan biridir.

Temel API Fonksiyonları

Veri Okuma ve Yazma

GrandMA3 Lua API'sinin belkemiğini GetVar() ve SetVar() fonksiyonları oluşturur. Ancak show verilerine erişmek için asıl güç Root() ve DataPool() nesnelerinde gizlidir:

  • Root(): Show dosyasının en üst düzey nesnesine erişim sağlar
  • DataPool(): Aktif data pool'una ulaşmayı sağlar
  • SelectionFirst(): Seçili olan ilk fixture'ı döndürür
  • Cmd(): MA komut satırına komut gönderir

Komut Satırı ile Entegrasyon

Plugin içinden doğrudan MA komutları çalıştırmak için Cmd() fonksiyonu kullanılır. Bu sayede herhangi bir konsol komutunu Lua kodunuzdan tetikleyebilirsiniz:

Cmd("Store Cue 1.5 /merge")
İpucu: Cmd() fonksiyonu asenkron çalışır. Bir komutun tamamlanmasını beklemek istiyorsanız, sonraki satıra küçük bir bekleme süresi eklemek veya callback yapısı kullanmak gerekebilir.

Nesne Hiyerarşisinde Gezinmek

GrandMA3'ün veri yapısı bir ağaç hiyerarşisi şeklinde organize edilmiştir. Plugin API üzerinden bu hiyerarşide dolaşmak için Children() ve Parent() metodları kullanılır:

  1. Root() ile show nesnesine ulaşın
  2. Children() ile alt nesneleri listeleyin
  3. ObjectName veya index ile hedef nesneyi seçin
  4. GetProperty() ile nesne özelliklerini okuyun

Fixture Bilgilerine Erişim

Seçili fixture'ların bilgilerine ulaşmak için tipik bir kullanım şu şekildedir:

local sel = SelectionFirst() if sel ~= nil then Echo(sel.name) end

Hata Yönetimi ve İyi Pratikler

Plugin geliştirirken karşılaşılan en yaygın sorun, nil değer kontrollerinin atlanmasıdır. Bir nesneye erişmeden önce her zaman nil kontrolü yapın. Bunun yanı sıra:

  • Plugin kodunuzu modüler fonksiyonlara bölün
  • Uzun döngülerde coroutine yapısı kullanarak konsolu dondurmaktan kaçının
  • Geliştirme aşamasında Echo() ile adım adım loglama yapın
  • Plugin versiyonlarını show dosyasına kaydetmeden önce yedek alın
Önemli Not: GrandMA3 yazılım güncellemelerinde API fonksiyonları değişebilir. Plugin'lerinizi her büyük yazılım güncellemesinin ardından test etmeyi alışkanlık haline getirin.