Címke: teszt

  • Broadcast Core manuális indítása és tesztelése

    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"}