GrandMA3'te OSC Mesajlarını Plugin ile İşleme
GrandMA3 ortamında Lua tabanlı plugin yazarak OSC mesajlarını nasıl alacağınızı ve işleyeceğinizi adım adım öğrenin.
OSC Nedir ve GrandMA3'te Neden Kullanılır?
OSC (Open Sound Control), ağ üzerinden cihazlar arasında gerçek zamanlı veri iletişimi sağlayan açık bir protokoldür. Müzik yazılımları, sensörler, tablet uygulamaları ve interaktif sistemler gibi harici kaynakların GrandMA3 konsolunuzu kontrol etmesi gerektiğinde OSC devreye girer. Bir tiyatro gösterisinde sahne yönetmeninin iPad'inden ışık değiştirmesi ya da bir müzik yazılımının BPM değerini konsolunuza göndermesi bunun tipik örnekleridir.
GrandMA3'te OSC Alımını Aktif Etmek
Plugin yazmadan önce konsolun OSC dinlemeye hazır olması gerekir. Menu > Setup > Network > OSC yolunu izleyerek OSC ayarlarına ulaşın. Burada gelen bağlantı için bir UDP port numarası tanımlayın; yaygın tercih 8000 portudur. Aynı zamanda konsolun IP adresini not alın; gönderici cihazın bu adrese mesaj yönlendirmesi gerekecektir.
Plugin Yapısını Kurmak
GrandMA3 pluginleri Lua 5.3 ile yazılır. Yeni bir plugin oluşturmak için Menu > Plugins bölümüne gidin ve boş bir plugin nesnesi ekleyin. Editörü açtığınızda temel iskelet şu şekilde görünür:
function Main(display_handle, argument)— pluginin giriş noktasıreturnile plugin sonlandırılır- OSC dinleme döngüsü bu fonksiyon içinde kurulur
OSC Mesajlarını Dinlemek
GrandMA3, OSC mesajlarını yakalamak için built-in OSC fonksiyonları sunar. Aşağıdaki örnek, belirli bir OSC adresini dinleyip gelen değeri işler:
local osc = require("osc") satırıyla OSC kütüphanesini içe aktarın. Ardından bir dinleyici kaydı oluşturun:
osc.subscribe("/fixtures/intensity", callbackFunction)— belirtilen adrese gelen mesajları yakalar- Callback fonksiyonu
addressveargumentsparametrelerini alır arguments[1]ile ilk değere,arguments[2]ile ikinci değere erişilir
İpucu: OSC adreslerinde joker karakter kullanabilirsiniz. /fixtures/* gibi bir pattern, o kök altındaki tüm mesajları yakalar. Bu, çok sayıda fixture'ı tek bir callback ile yönetmenizi sağlar.Gelen Değeri Konsola Uygulamak
Callback içinde gelen OSC değerini alıp bir fixture'ın dimmer değerine yazmak için Lua API fonksiyonlarını kullanırsınız. Örnek bir callback şöyle çalışır:
- Gelen
floatdeğeri0.0–1.0aralığından0–100yüzde değerine dönüştürün SetFaderValue()veyaExecutorFader()fonksiyonuyla ilgili executor'a yazın- Konsolun tepki vermesi için
coroutine.yield()ile döngüye kısa bir bekleme ekleyin
Değer dönüşümü için tipik formül: local dmxVal = math.floor(oscValue * 100)
Hata Ayıklama İpuçları
Plugin geliştirirken System Monitor penceresi en iyi dostunuzdur. OSC mesajının gerçekten konsolda alınıp alınmadığını kontrol etmek için Printf("Gelen değer: " .. tostring(value)) satırlarını callback içine ekleyin. Mesajlar görünmüyorsa önce ağ bağlantısını, ardından port numarasını ve son olarak gönderici cihazın hedef IP'sini doğrulayın.
Dikkat: Plugin sürekli çalışan bir döngü içeriyorsa mutlaka bir çıkış koşulu tanımlayın. Aksi takdirde konsol arayüzü yanıt vermez hale gelebilir. ShouldHalt() fonksiyonunu döngü koşulunuzda kullanmak bu sorunu önler.