GrandMA3 Plugin ile Dinamik Sequence Yönetimi

GrandMA3 plugin sistemi kullanarak sequence'larınızı programatik olarak nasıl dinamik şekilde yöneteceğinizi öğrenin.

GrandMA3 Plugin ile Dinamik Sequence Yönetimi

GrandMA3'ün güçlü plugin altyapısı, Lua programlama dili sayesinde show dosyanızdaki sequence'ları çalışma anında okuyup değiştirmenize olanak tanır. Manuel müdahale gerektiren tekrarlayan görevleri otomatize etmek ve karmaşık cue akışlarını dinamik olarak yönetmek artık mümkün.

Plugin Ortamını Hazırlama

Başlamadan önce GrandMA3 yazılımında bir Lua plugin dosyası oluşturmanız gerekir. Menu > Plugins yolunu izleyerek yeni bir plugin ekleyin ve aşağıdaki temel yapıyı kullanın:

local function main() -- kodunuz buraya end return main

Plugin fonksiyonunuz her çağrıldığında main() bloğu çalışır. Bu yapıyı doğru kurmazsanız plugin çalışmaz veya hata verir.

Sequence Objelerine Erişmek

GrandMA3 plugin API'sinde sequence'lara erişmek için DataPool üzerinden navigate etmeniz gerekir. Bir sequence'ı isme göre bulmak için şu yöntemi kullanabilirsiniz:

local seq = DataPool().Sequences["MySequence"]

Index numarasıyla da erişebilirsiniz:

local seq = DataPool().Sequences[1]

İpucu: Sequence isimlerini show dosyanızda tutarlı tutun. Plugin'ler isme göre referans verdiğinde, isim değişikliği scriptin çalışmamasına neden olabilir.

Dinamik Cue Yönetimi

Bir sequence'ın cue'larına erişip üzerinde işlem yapmak için aşağıdaki yapıyı kullanabilirsiniz. Örneğin tüm cue'ları listeleyip belirli bir cue'nun adını değiştirmek:

local seq = DataPool().Sequences["MainShow"] if seq then for i = 1, seq.CueList.Count do local cue = seq.CueList[i] Printf("%s: %s", i, cue.Name) end end

Bu döngü, sequence içindeki her cue'yu sırayla okur ve konsol komut satırına yazdırır. Printf() fonksiyonu GrandMA3 plugin ortamında debug için temel araçtır.

Sequence'ı Programatik Olarak Tetikleme

Plugin içinden doğrudan konsol komutlarını çalıştırmak için Cmd() fonksiyonu kullanılır. Bu sayede sequence başlatma, durdurma ve cue atlamaları programatik olarak gerçekleştirilebilir:

  • Cmd("Go+ Sequence 1") — Sequence'ı ileri alır
  • Cmd("Go- Sequence 1") — Sequence'ı geri alır
  • Cmd("Goto Sequence 1 Cue 5") — Doğrudan belirli cue'ya atlar
  • Cmd("Off Sequence 1") — Sequence'ı kapatır

Pratik Kullanım: Rastgele Cue Seçimi

Aşağıdaki örnek, bir sequence içinden rastgele bir cue seçip oraya atlayan basit ama etkili bir plugin yapısını gösterir:

local function main() local seq = DataPool().Sequences["AmbientLoop"] if seq then local count = seq.CueList.Count local randomCue = math.random(1, count) Cmd("Goto Sequence \"AmbientLoop\" Cue " .. randomCue) end end return main

Bu yaklaşım özellikle ambient aydınlatma senaryolarında, konser aralarında veya loop tabanlı gösterilerde sahneye canlılık katmak için kullanışlıdır.

Senkronizasyon ve Zamanlama

Plugin'lerin cue geçişleriyle senkron çalışması için coroutine yapısından veya GrandMA3'ün yerleşik WaitTime() fonksiyonundan yararlanabilirsiniz:

  1. Plugin'i bir executor butonuna atayın
  2. WaitTime(saniye) ile bekleme süreleri ekleyin
  3. Döngüsel görevler için while true do yapısını dikkatli kullanın, mutlaka çıkış koşulu ekleyin
Dikkat: Sonsuz döngüler GrandMA3 konsolunu dondurabilir. Her while döngüsüne mutlaka bir WaitTime() çağrısı ekleyin; aksi hâlde konsol yanıt vermez hale gelebilir.