GrandMA2 Plugin ile Harici Cihaz Entegrasyonu
GrandMA2 plugin sistemi kullanarak MIDI, OSC ve seri port üzerinden harici cihazları konsolunuza nasıl bağlayacağınızı öğrenin.
GrandMA2 Plugin Sistemi Nedir?
GrandMA2, Lua tabanlı bir plugin motoru sunar. Bu motor sayesinde konsolun iç işlevlerine erişebilir, harici cihazlarla iki yönlü iletişim kurabilirsiniz. Harici cihaz entegrasyonu; MIDI kontrolörler, OSC uyumlu uygulamalar, DMX-in cihazları ve seri port üzerinden haberleşen sistemler için plugin katmanını kullanır.
Entegrasyon Yöntemleri
1. MIDI Üzerinden Entegrasyon
GrandMA2, gelen MIDI mesajlarını plugin içinde yakalayabilir. Bunun için önce konsolun MIDI In ayarını etkinleştirmeniz gerekir:
- Menu > Preferences > MIDI yolunu izleyin.
- MIDI In portunu aktif edin.
- Plugin içinde
gma.midi.note_onvegma.midi.note_offcallback fonksiyonlarını tanımlayın.
Örnek bir MIDI Note On dinleyicisi şu şekilde görünür:
function gma.midi.note_on(pitch, velocity) gma.cmd("Go+ Cue " .. pitch) end
İpucu: MIDI kanalını plugin içinde filtreleyin; aksi hâlde tüm kanallardan gelen mesajlar işlenir ve beklenmedik tetiklemeler oluşabilir.
2. OSC ile Çift Yönlü İletişim
Open Sound Control (OSC), tablet uygulamaları ve DAW yazılımlarıyla entegrasyon için yaygın bir tercih. GrandMA2 plugin'i UDP soket katmanı üzerinden OSC paketleri alıp gönderebilir.
- Hedef IP ve port bilgilerini plugin başında sabit değişken olarak tanımlayın.
gma.network.udpsend(ip, port, data)fonksiyonuyla OSC mesajı gönderin.- Gelen paketler için
gma.network.udpreceive(port)ile dinleme döngüsü kurun.
TouchOSC veya Lemur gibi uygulamalarla fader hareketlerini GrandMA2 executor'larına bağlamak bu yöntemle dakikalar içinde mümkün olur.
3. Seri Port (RS-232 / RS-485) Entegrasyonu
Sahne makineleri, vinç sistemleri veya eski protokol kullanan DMX konvertörler genellikle seri port üzerinden haberleşir. GrandMA2 plugin motoru gma.serial kütüphanesini kullanarak bu cihazlarla doğrudan iletişim kurabilir.
- Seri portu
gma.serial.open(port, baudrate)ile açın. - Veri göndermek için
gma.serial.write(data)kullanın. - Dönen veriyi
gma.serial.read()ile okuyun ve parse edin.
Önemli: Seri port işlemleri bloklayıcı olabilir. Plugin döngünüzde zaman aşımı (timeout) değeri mutlaka belirleyin; aksi hâlde konsol yanıt vermez hâle gelebilir.
Plugin Yapısının Temelleri
Her entegrasyon plugin'i aynı temel yapıyı paylaşır:
- return {} bloğu ile plugin meta verisi tanımlanır.
- main() fonksiyonu plugin başladığında çalışır.
- Döngüsel işlemler için
gma.sleep(ms)ile bekleme eklenir. - Hata yönetimi için
pcall()Lua fonksiyonu kullanılır.
Gerçek Dünya Senaryosu: Tiyatro Otomasyonu
Bir tiyatro sahnesinde vinç sistemi, bir seri port arayüzü üzerinden pozisyon verisi yayınlıyor olsun. Yazdığınız plugin bu veriyi okuyarak sahnedeki aktörün konumuna göre follow spot cue'larını otomatik tetikleyebilir. Seri porttan okunan koordinat değeri belirli bir eşiği geçtiğinde gma.cmd("Go Cue 15") çağrısı yapılır; ışık otomatik olarak hareket eder.
Bu tür entegrasyonlar, operatör müdahalesini azaltır ve tekrarlanabilir gösterilerde tutarlılığı artırır. Plugin geliştirirken her zaman hata loglama mekanizması ekleyin; gma.echo() fonksiyonu bu iş için biçilmiş kaftandır.