VSK VIRTUAL STUDIO KIT

Pilot web i panele

Otwórz http://<maszyna>:8090/remote z dowolnego telefonu, tabletu czy laptopa w studyjnej sieci LAN (wpisz http:// jawnie; pod samym korzeniem nie ma strony). Strona jest serwowana z Resources/WebRemote.html wtyczki przy każdym żądaniu - edytowalna na gorąco, bez rekompilacji.

Panele i moduły

Panel (board) to zakładka; moduł to karta na jego 4-kolumnowej kanwie (szerokość 1-4). Moduły trzymają dokładnie tę pozycję, którą im nadasz (zaakceptowane w sierpniu 2026): puste miejsce jest trwałe - usunięcie albo zwężenie karty zostawia wolne komórki dokładnie tam, gdzie były - i nic się nie przesuwa, dopóki sam tego nie przesuniesz. Tablety i telefony układają moduły w kolejności czytania (edycja kanwy to koncept na szerokość desktopu), a wnętrza modułów przestawiają się dotykowo według szerokości karty - karta na pełną szerokość nigdy nie wystaje poza mały wyświetlacz. Domyślny panel Studio jest syntetyzowany - pierwsza edycja go materializuje, a usunięcie przywraca fabryczny. Biblioteka modułów (16): Health · Mikser audio · Sceny · Presety 1-16 · Kamery + Go Live · Ruchy kamery (ARM A/B) · Transport (w tym BOUNCE, świecący z żywego odczytu stanu reżysera) · Nagrywanie · Wyjście SDI · Tempo i prędkość · Triggery show (Blueprint) · TV / router ekranów · Banki cięć (6-slotowe banki na ekran z miniaturami-plakatami i bursztynowym pierścieniem on-air - dotknięcie odpala <Ekran>.Cut.N, OFF ma blokadę) · Półka Quick Media · Kontrolki własne · Etykieta sekcji.

Edycja odbywa się na samej stronie (przebudowana i zaakceptowana w sierpniu 2026): ✎ Edit → dodawaj zakładki i moduły. Przeciągaj moduł za jego tytuł (ikona ✥ pojawia się po najechaniu; na dotyku przyciśnij i przeciągnij tytuł): upuszczony na inną kartę - obie zamieniają się miejscami; upuszczony na puste miejsce - karta przenosi się tam, a obszar węższy od karty też ją przyjmuje, zwężając ją do wolnego pasma (zielony podgląd pokazuje docelowy rozmiar). Przeciągnij prawy dolny ◢ karty, by zmienić rozmiar - skacze na żywo od 1 kolumny do krawędzi siatki albo najbliższej zajętej komórki; sąsiedzi nigdy się nie ruszają. Kreskowane komórki-widma znaczą każde wolne pole: dotknij, by wstawić tam moduł, albo najpierw przeciągnij ◢ samego widma, by poszerzyć przyszły slot - nowy moduł wyląduje w tej szerokości. Wstawianie otwiera galerię modułów - każdy moduł z mini-makietą i jednym zdaniem opisu, w oknie skalującym się do ekranu (bez paska przewijania na dużych monitorach, pionowy układ na telefonach). na nagłówku każdego modułu minimalizuje go do samego nagłówka, zachowując jego komórkę - działa też poza trybem edycji jako szybkie porządki w trakcie show i zapisuje się z panelem. ⧉ Duplikuj kopiuje cały bieżący panel jako „<Nazwa> 2”. ✎ na karcie zmienia nazwę, 🗑 usuwa (miejsce zostaje wolne) → SAVE BOARDS. Panele zapisują się po stronie projektu i podróżują w plikach show. Długie przytrzymanie przycisku-triggera kopiuje jego URL dla Stream Decka.

Kontrolki typowane

Nowość z sierpnia 2026: moduł kontrolek własnych mówi pełną rodziną typów szyny - obok trigger/przełącznik/suwak są kontrolki tekstowe, całkowite (integer), wektorowe (X/Y/Z) i kolorów. Kontrolka tekstowa celująca w LowerThird.Headline zapisuje dokładnie tę wartość, którą Blueprint czyta przez Get VSK Text - z telefonu. Wartości trwają na szynie i podróżują w .vskshow; pola tekstowe zatwierdzają się Enterem/utratą fokusu, a odpytywanie stanu nigdy nie nadpisuje pola, w którym właśnie piszesz; kolory pozostają spójne w sRGB między przeglądarkowym pickerem a Blueprintami. Kanały transformacji celowo zostają w panelu VSK Control edytora.

Moduł audio

Na pasek: fader · MUTE · SOLO · AFV · gain · delay, a do tego (sierpień 2026) selektor routingu kanałów Ch (Stereo / L→oba / P→oba / suma mono - rozprowadź monofoniczny mikrofon kamery na oba uszy) oraz rozdzielone mierniki L/P na każdym pasku i masterze. Mierniki pokazują finalny poziom po całym DSP, z tego samego źródła co mierniki miksera w edytorze - telefon i panel zawsze się zgadzają.

Moduł ruchów kamery

ARM A · ARM B · OFF · GO LIVE. Przyciski ARM świecą się na podstawie żywego odczytu stanu uzbrojenia reżysera, nie echa kliknięcia - rozbrojenie po stronie Blueprintów (PLAY, zmiana presetu, przywołanie sceny) gasi je na stronie w jednym cyklu odpytywania i każde urządzenie pokazuje tę samą prawdę.

Przyciski z blokadą

Kontrolki destrukcyjne są dwudotykowe (sierpień 2026): pierwsze dotknięcie uzbraja przycisk - czerwony, pulsujący, TAP TO CONFIRM - a drugie w ciągu 3 s wykonuje akcję; dotknięcie gdziekolwiek indziej (albo odczekanie) rozbraja po cichu, a uzbrojony może być tylko jeden przycisk na całej stronie. Blokada domyślna: REC ■ (tylko podczas nagrywania), OUT ■ (tylko gdy wyjście jest live), OFF ruchów kamery i triggery gaszące ekrany. Własne kontrolki trigger/przełącznik mają w trybie edycji pole Guard, zapisywane z panelem.

Blokada na dzień show i bezpieczeństwo - odznacz VSK Project ▸ Pilot web ▸ Zezwól na edycję paneli z przeglądarek przed show. Pilot nie ma uwierzytelniania - trzymaj studyjną sieć LAN prywatną i nie wystawiaj portu na świat.

Opóźnienia i utrata połączenia

Komendy docierają w ≈25 ms (jeden POST po LAN + klatka); wskaźniki odpytują 4 Hz, mierniki audio 10 Hz. Jeśli 2 kolejne odpytania stanu zawiodą (≈½ s - zerwane Wi-Fi, zamknięty edytor), pełnoekranowa nakładka CONNECTION LOST - controls disabled blokuje wszystkie dotknięcia i odlicza sekundy od ostatniego kontaktu; pierwsze udane odpytanie natychmiast ją zdejmuje. Mierniki audio zerują się na czas utraty łącza, więc zamrożone słupki nigdy nie udają żywego sygnału.

API HTTP

Wszystko, co robi strona, to zwykły HTTP na tym samym porcie - do użycia z Bitfocus Companion, skryptów, czegokolwiek, co umie POST:

TrasaMetodaDziałanie
/remoteGETStrona paneli sterowania
/api/stateGETPełny stan UI w JSON (tally, presety, sceny, TV, lista NDI, wartości typowane, stan uzbrojenia, banki cięć banks, bounce…)
/api/trigger?name=Cam.2POSTWystrzel dowolny trigger szyny
/api/logical?name=X&v=1 · /api/scalar?name=X&v=0.5POSTUstaw wartości szyny
/api/text?name=X&v=… · /api/integer?name=X&v=… · /api/vector?name=X&x=&y=&z= · /api/color?name=X&v=RRGGBBPOSTUstaw typowane wartości szyny (sierpień 2026)
/api/tv?name=Wall&source=SDI:2POSTRoutuj ekran (opcjonalnie &fade=)
/api/boardsGET / POSTOdczyt / zapis układów paneli
/api/audio/levelsGETPoziomy mierników na żywo - finalne pary [L, P] po DSP na pasek + master
/api/audio?src=Cam1&volume=…&ch=… · /api/audio/add?device=… · /api/audio/remove?src=…POSTSterowanie mikserem (w tym routing kanałów ch=)
/api/upload?name=x.pngPOSTWgraj media na półkę Quick Media
/media/thumb?name=clip.mp4GETMiniatura-plakat pliku z półki (ścieżka sanityzowana; zasila moduł banków cięć)
Pułapka - serwer HTTP silnika UE odrzuca POST bez ciała: wyślij jakiekolwiek ciało, by był nagłówek Content-Length (curl -X POST -d "x" "http://host:8090/api/trigger?name=Play").