GrandMA3 Plugin ile Phaser Kontrolü: Lua Kodlarıyla Otomatik Efekt Yönetimi

GrandMA3'te Lua tabanlı plugin yazarak phaser efektlerini dinamik olarak nasıl kontrol edeceğinizi adım adım öğrenin.

GrandMA3'te Plugin ile Phaser Kontrolü

GrandMA3'ün en güçlü özelliklerinden biri, Lua programlama dili ile yazılan plugin sistemidir. Bu sistem sayesinde phaser efektlerini manuel müdahale olmadan dinamik biçimde yönetebilir, show esnasında tekrar eden görevleri otomatize edebilirsiniz.

Phaser Nedir, Neden Plugin ile Kontrol Edilmeli?

Phaser, GrandMA3'ün efekt motorunun temelidir. Klasik efekt motorunun yerini alan bu yapı; step'ler, segment'ler ve form eğrileri üzerine kurulu çalışır. Karmaşık bir gösteride onlarca fixture için phaser parametrelerini anlık değiştirmek zahmetli olabilir. Bir plugin yazarak bu değişiklikleri tek komutla veya otomatik tetikleyicilerle uygulayabilirsiniz.

Plugin Ortamını Hazırlamak

GrandMA3'te yeni bir plugin oluşturmak için sırasıyla şu adımları izleyin:

  1. Menu > Plugin havuzunu açın.
  2. Boş bir slot'a tıklayıp New Plugin seçeneğini seçin.
  3. Plugin'e anlamlı bir isim verin, örneğin PhaserController.
  4. Plugin editörünü açmak için üzerine çift tıklayın.
İpucu: Plugin'lerinizi ayrı bir show dosyasında geliştirip test edin. Canlı show dosyanıza taşımadan önce davranışlarını tam olarak doğrulayın.

Temel Plugin Yapısı

GrandMA3 pluginleri Entry Point adı verilen bir fonksiyon ile başlar. Aşağıda minimalist bir phaser kontrol plugin'inin iskelet yapısı yer almaktadır:

local function main() local seq = DataPool().Sequences["MySequence"] if seq == nil then return end local cue = seq.Cues[1] -- Phaser rate değerini değiştir cue.PhaserRate = 2.0 end return main

Bu örnekte DataPool().Sequences ile show içindeki sequence'a erişilmekte, ardından ilgili cue'nun PhaserRate parametresi güncellenmektedir.

Phaser Parametrelerini Dinamik Olarak Değiştirmek

Plugin üzerinden kontrol edebileceğiniz başlıca phaser parametreleri şunlardır:

  • PhaserRate: Efektin hız çarpanı (BPM tabanlı veya saniye bazlı)
  • PhaserPhase: Fixture'lar arasındaki faz farkı (0-360 derece)
  • PhaserOffset: Efektin başlangıç noktası
  • PhaserSize: Efektin genlik değeri

Bu parametreleri bir UserVar veya executor fader değeriyle ilişkilendirerek gerçek zamanlı kontrol sağlayabilirsiniz. Örneğin bir fader'ın pozisyonunu okuyup bunu PhaserRate'e aktarmak mümkündür:

local faderVal = GetFader(1, 1) -- Executor 1, Fader 1 cue.PhaserRate = faderVal * 4.0 -- 0-4 BPM aralığı

Plugin'i Tetiklemek

Yazdığınız plugin'i birkaç farklı yöntemle çalıştırabilirsiniz:

  • Manuel çalıştırma: Plugin havuzundan doğrudan Run butonuna basmak
  • Macro üzerinden: Plugin "PhaserController" komutuyla bir macro'ya bağlamak
  • Executor butonu: Plugin'i bir executor'a assign ederek fiziksel butonla tetiklemek
  • Timecode: Timecode event'lerine bağlayarak müzikle senkronize çalıştırmak

Hata Ayıklama ve Loglama

Plugin geliştirirken System Monitor ekranını açık tutun. Lua hatalarını ve print çıktılarını buradan takip edebilirsiniz. Kodunuza print("PhaserRate guncellendi: " .. tostring(cue.PhaserRate)) gibi satırlar ekleyerek değişkenlerin doğru değerleri taşıyıp taşımadığını anlık izleyebilirsiniz.

Önemli Not: GrandMA3 yazılım güncellemeleriyle birlikte Lua API'sinde değişiklikler yaşanabilir. Plugin'lerinizi her büyük versiyon güncellemesinden sonra test etmeyi alışkanlık haline getirin.