A fejlesztés korai szakaszában a már működő SuperCollider – JACK – Darkice szolgáltatás-együttes indítása és tesztelése. Az indítási folyamat lépéseinek sorrendjét tartani kell. Amíg a SuperCollider nem bootolt be, addig a JACK nem tud hozzá csatlakozni. A JACK fogja a SuperCollider által lejátszott audio fájlt a Darkice-nak biztosítani.
A Darkice szerver indítása nem szükséges, mert szolgáltatásként elindul a szerverrel együtt. Az mtm nevű felhasználóhoz kapcsolt szolgáltatás a megfelelő jogosultságokkal. A konfigurációs fájl is az mtm felhasználó home könyvtárában található. Az mtm felhasználó tudja is indítani a Darkice szolgáltatást.
service darkice stat | stop | status
Minden parancs az mtm felhasználónévvel bejelentkezve adható ki!
1. SuperCollider indítása
bash:
sclang
2. SuperCollider szerver bootolása
supercollider:
s.boot;
3. JACK szolgáltatás indítása
Mivel az SuperCollider nem lép ki promptba az sclang-ból, ezért ezt egy másik terminálablakban kell végrehajtani.
A JACK szolgáltatáshoz ismerni kell a SuperCollider audio out csatornájának azonosítóját (portját). Ez viszont minden Darkice indításkor megváltozhat.
A JACK indításához írt bash script paramétereként kell megadni az SC audio out csatorna azonosítóját, de ha nem ismered, akkor csak paraméterként indítsd el a bash scriptet, és a hibaüzenetek közt kiírja azt is, hogy milyen azonosítóval érhető el az out csatona.
A parancsot az mtm felhasználó home könyvtárában kell kiadni.
bash:
./jack.sh <audio out azonosítója>
A SuperCollider innentől kell, hogy tudjon hangot kiadni az IceCast2 szerver felé. Ha tesztelésre van szükség, akkor az sclang-ban kiadható egy parancs, mely egy 440Hz-es hangot küld, 30%-os hangerővel, sztereó csatornán keresztül a JACK felé.
supercollider:
{ SinOsc.ar(440, 0, 0.3).dup }.play;
Böngészőben megnyitható a következő címen a stream:
Web:
http://192.168.66.12:8000/mtm.mp3
Az sclang-ban megállítható a teszthang a következő parancsokkal:
supercollider:
s.freeAll;
4. A SuperCollider script betöltése sclangban.
supercollider:
"/home/mtm/html/mtm.project/systems/broadcast/core/scd/scplay3.1.scd".load;
5. OCS vezérlő betöltése – Node.JS script WebSocketServer
A script könyvtára: /home/mtm/html/mtm.project/systems/broadcast/core/ocs
Script: wss_osc.js
Ennek indítása a előtt meg kell győződni arról, hogy a scriptben lévő portok megfelelően vannak beállítva. Az OSC parancsokat az SuperCollider egy meghatározott porton fogadja. Hogy melyik porton az lellenőrizhető az sclang-ban kiadott paranccsal:
supercollider:
NetAddr.langPort
wss_osc.js
remoteAddress: "127.0.0.1",
remotePort: 57122 // SC alapértelmezett OSC portja
A remotePort értéke egyenlő kell, hogy legyen az sclang-ban kapott értékkel.
Ha rendben van a következő paranccsal indítható a wss_osc.js
bash:
pm2 start wss_osc.js --name osc-controller
OSC WSS port: 8080
Ebben a könyvtárban az ./start_osc.sh bash script is ezt a parancsot adja ki.
6. OSC vezérlő tesztelése
Ubuntu Server terminálablakából a wscat segítéségvel. A wscat alkalmas a WebSocket szerverkkel kommunikálni, így JSON objektumokat küldhetünk az OSC vezérlőnek úgy, ahogyan a SuperCollid script várja. A wscat a Node.JS része, így npm használatával telepíthető, ha még nem lenne elérhető. Érdemes globális telepítést indítani, hogy bármelyik virtuális környezetben elérhető legyen.
Telepítése:
bash:
npm install -g wscat
A -g opció jelenti a globális telepítést.
A wscat indítása:
bash:
wscat -c ws://127.0.0.1:8080
Példa a JSON objektumokban küldhető parancsokra:
wscat:
{"command": "setFile", "filePath": "/mnt/ramdrive/temp/001.wav", "bufferName": "p1"}
{"command": "setFile", "filePath": "/mnt/ramdrive/temp/020.wav", "bufferName": "p2"}
{"command": "setFile", "filePath": "/mnt/ramdrive/temp/018.wav", "bufferName": "p3"}
{"command": "play", "bufferName": "p1"}
{"command": "play", "bufferName": "p2"}
{"command": "play", "bufferName": "p3"}
{"command": "stop", "fadeTime": 2.0, "bufferName": "p1"}
{"command": "stop", "fadeTime": 7.0, "bufferName": "p2"}
{"command": "stop", "fadeTime": 7.0, "bufferName": "p3"}
