A cikkben leírjuk, hogyan tudsz felparaméterezni egy szűz MIDI vezérlőt az OBS használatára.
Aki már ismeri az XML fájlok csodálatos világát, annak az alábbi 2 link szinte elég is ahhoz, hogy elkészítse a sémát. Az XSD egy leíró, amely meghatározza az XML fájl formáját, lehetséges elemeit és attribútumait.
Az alábbi fájlok adhatnak támpontot a sémák készítésekor:
Minta XML: sample.hu.xml
XSD: ObsMidiRemote_1.xsd
AKAI APC MINI séma fájl
TFStreamBox séma fájl
Szükségünk lesz a gombok címeire, illetve a visszajelzéshez a ledek címeire is. Egy MIDI eszköznél ez egy szám 0-127 -ig, illetve még társulhat hozzá egy csatorna érték 0-16 -ig de ez nem feltétlenül szükséges. Az általunk használt MIDI eszköz az AKAI APC MINI -hez például a neten elérhető egy ilyen leírás:
Látható, hogy minden gombnak van egy értéke, ez a cím. Amikor a gombot lenyomjuk akkor küld egy üzenetet a számítógépnek, amiben szerepel a gomblenyomás ténye, illetve az, hogy melyik gombot nyomtuk le. Ahhoz, hogy hozzá tudjuk rendelni a gomblenyomáshoz funkciót ezeket az érékeket kell ismernünk.
Ha nem találtál ilyen információkat akkor sincs baj, csak egy kicsit tovább fog tartani:
Telepítsd fel a MidiOx nevű programot. Nyisd meg vele a MIDI eszközödet és kezd el szépen egyesével megnyomni és felengedni az összes olyan gombot, amit használni szeretnél az OBS-nél. Valami hasonlót kell látnod:
A pirossal bekeretezett rész egy billentyű lenyomása és felengedése (Note On / Note Off).
A DATA1 a gomb címe, a DATA2 pedig az értéke. Látható még a csatorna, illetve a parancs(event) hex megfelelője a státusz oszlop alatt.
A következőkben megcímezzük a bal felső gombot aminek a címe az 56, vagyis HEX formában a 0x38.
Az alábbi kóddal a stream elindításához / megállításához fogjuk kötni az előbb megtalált gombot. (56 => 0x38)
Minden adatot HEX formában adunk meg.
//Egy MIDI-gomb OBS-funkcióhoz való társítása
<Item bind="stream" type="single">
<Input type="toggle" cmd="0x90" data1="0x38" data2="0x7F" />
</Item>
Az Input elemmel tudjuk a gombot figyeltetni. Itt meg kell adni a gomb típusát (type=on|off|toggle), a parancsot amit az eszköz küld amikor lenyomjuk a gombot.
toggle=Váltógomb, egy gombbal lehet indítani és leállítani a rákötött funkciót.
on=ha lenyomjuk a gombot akkor csak bekapcsolni lehet vele az adott funkciót
off=csak kikapcsolni lehet vele az adott funkciót. Fel lehet venni több Input elemet is, ha pld 2 gombbal szeretnénk vezérelni. Egyik bekapcsol a másik pedig kikapcsol.
A cmd attribútumba kell eltárolni a parancsot amit az eszköz küld. Jelen esetben ez a NoteOn parancs ami 0x90-nek felel meg.
A data2 attribútumba kell eltárolni az eszköztől jövő data2 értéket, ez NoteOn esetén általában 127, azaz 0x7F, NoteOff esetén pedig 0. Ha -1 et adunk át a data2 értéknek, akkor pedig minden data2 értékre végrehajtja a parancsot, itt most a stream indítást/leállítást.
//Egy MIDI-gomb OBS-funkcióhoz való társítása és a LED kivezérlés
<Item bind="stream" type="single">
<Input cmd="0x90" data1="0x38" data2="0x7F" type="toggle" />
<Output type="on" cmd="0x90" data1="0x38" data2="0x01"/>
<Output type="off" cmd="0x80" data1="0x38" data2="0x00"/>
<Output type="active" cmd="0x90" data1="0x38" data2="0x02"/>
</Item>
3 Output típusú elemmel egészítjük ki a minta kódunkat. Az Output elemekkel tudjuk beállítani, hogy a funkció melyik állapotában milyen színű legyen a ledünk.
A type attribútummal lehet megadni az állapotot, ezért is van több Output elem. A type lehet on|off|active|starting|stopping|muted, ezek az OBS-funkciókkal változhatnak. Pld.: a stream indításánál/leállításánál a type elem nem vehet fel muted értéket, azt kizárólag az audio elemeknél lehet használni.
Az Output elemnek van még cmd paramétere, itt a parancsot kell küldeni. A legtöbb esetben ez ugyan az a parancs amit az Input-nál vettünk fel, azaz a NoteOn.
A Data1 paraméter itt is a cím, de itt a led címe. Általában a gombnak ugyan az a címe, mint a világító lednek. Ha ettől eltérő azt a MIDI eszköz specifikációjában találhatjátok meg. A Data2 paraméter pedig változó érték. Az AKAI APC MINI esetében ezzel a színt és az esetleges villogás lehet beállítani. Míg 0=kikapcsolva, úgy 1=zöld 2=sárga 3=piros színeknek felelnek meg. az 5,6,7-es értékek pedig ugyan ezen színek villogó változata.
Az első Output sorral meghatározzuk a gombunk színét a bekapcsolt állapot, azaz type=on esetén. Itt a bekapcsolt állapot nem a streamelést jelzi, hanem azt, hogy a gomb használható, de az OBS nem streamel.
A második sorral meghatározzuk, hogy milyen színe legyen a gombnak, ha nem elérhető az adott gomb, azaz ki van kapcsolva.
A harmadik sor pedig az aktív, azaz a streamelés állapotát jelzi.
//Több MIDI gomb jelenetekhez csatolása
<Item bind="scene" type="range" from-index="0" to-index="4" from-address="56" to-address="0" step="8">
<Input type="on" cmd="0x90" data1="%ADDRESS" data2="0x7F" />
<Output type="on" cmd="0x90" data1="%ADDRESS" data2="0x01"/>
<Output type="off" cmd="0x80" data1="%ADDRESS8" data2="0x00"/>
<Output type="active" cmd="0x90" data1="%ADDRESS" data2="0x02"/>
</Item>
Ezzel az Item szekcióval megcímzünk 5 gombot, ami az OBS-ben az első 5 jelenetet tudja majd aktiválni. Az első jelenet az 56-os gomb lesz, a második a 48-as, a harmadik a 40-es és így tovább. Ezzel az APC MINI első oszlopának egy részét címezzük meg.
Látható, hogy az Item type attribútuma "range" értékett kapott; ezzel lehet beállítani, hogy egyszerre több gombot címezzünk.
A from-index és a to-index az elemek OBS-ben lévő azonosítója, ezek mindig 0-tól indulnak. Annyi elem lehetséges, amennyit az OBS-ben fel tudunk venni, ennek a száma ismeretlen. (Pld.: a jelenetek esetén, fel tudunk venni csak 1 jelenetet, de akár 10-et is)
A from-address az eszközön lévő gomb címe, a számolás innét indul és a to-address -ig tart. A step pedig a lépést határozza meg, ebben az esetben minden ciklusban 8-at lépünk. Így tudunk egy körben megcímezni matematikailag nem egymás után következő gombokat.
Az Itemen belül ugyanúgy az Input és Output elemeket használjuk, annyi különbséggel, hogy a címeket a Data1 attribútumba a %ADDRESS kóddal helyettesítjük be.
A "range" típus használható még az alábbi OBS funkciókhoz: scene, scene-item, pscene, pscene-item, audio-item, volume-item, transitions
Az Item bind paramétere tartalmazza a kívánt OBS funkciót, ezek az alábbiak lehetnek:
(@obsmode paraméter mutatja, hogy melyik OBS módban érhető el (0=Bármelyik, 1=Normál mód, 2=Stúdió mód)
Funkció (bind) | Leírás |
scene | @obsmode=1/2 Jelenet aktiválása |
scene-item | @obsmode=1 Jeleneten belüli források megjelenítése/elrejtése @obsmode=2 Csak sátusz kijelzés |
pscene | @obsmode=2 Előnézeti jelenet kiválasztása |
pscene-item | @obsmode=2 Aktív előnézeti-jeleneten belüli források megjelenítése/elrejtése |
transitions | Áttűnés típusok, típus aktiválása |
audio-item | Hang forrás-elem némítása/engedélyezése |
audio-volume | Hang forrás-elem hangerejének beállítása |
stream | Stream indítása/leállítása |
record | Felvétel indítása/leállítása |
replay-buffer | Visszajátszás tároló indítás/leállítás |
replay-buffer-save | Visszajátszás tároló mentése |
connection-status | OBS és OBSMidiRemote közötti kapcsolat állapota (csak kijelzés) |
reload-obs-data | Minden adat újratöltése az OBS-ből (csak gomb, nincs ledes állapota) |
reload-sheme | Sémafájl újratöltése |
mode | Stúdió mód be vagy kikapcsolása |
UPDATE: SLOBS esetén nem használható a stúdió mód váltás, illetve az @obsmode paraméter. Csak a kimeneti jeleneteket lehet vele váltani.
Az XSD fájl és a példa fájlok tartalmaznak minden lehetőséget.
Az Item elemeken használható az obsmode attribútum, ami meghatározza, hogy csak az OBS adott módjában menjenek (0=Minden mód, 1=Normál mód, 2=Stúdió mód)
Ezen felül amit itt nem említettünk külön az a Map elemen belüli Modifier szekció. Lehetőség van módosító gombok felvételére.
Egy módosító gombbal más funkció adható egy már korábban paraméterezett gombnak. Pontosan úgy működik, mint a SHIFT a billentyűzeteden.
A Modifier elembe fel lehet venni egy vagy több módosító gombot, a struktúra megegyezik a bemutatott Item elemekkel.
Az Item elemeken felvehető a modifier attribútum, amellyel meghatározható, hogy mely módosító használatakor aktiválódjon az adott elem. (-1=Bármelyik módosító, nincs rá hatással a módosítógomb lenyomás, 0=Akkor aktív ha nincs lenyomva módosító, 1>= A módosító azonosítója 1 az első 2 a második stb...)