1 introduction

As part of trying to reduce the Portland scene's bus number in regards to our streaming setup I've recorded notes here as best I can. The dream is to have a pretty foolproof setup that anyone mildly technically competent could apply to their scene's cab. People can and should provide suggestions and corrections so our community can better thrive. As a general policy I won't use a comment system on this site because static hosting is awesome and also because echo-chamber.js makes an excellent point. Feel free to contact me via email, Twitter, or carrier pigeon for any improvements we can make here.

2 changelog

2.0.1 <2018-03-26 Mon>

Add changelog. Add webcam freeze troubleshooting fix. Add customids so the export has fixed links.

3 challonge integration

Need access to Matt Wire's github repo that has a Rails server.

Currently this repo isn't public.

3.1 workarounds

Changes to the Challonge setup screws up the integration with the Rails server. The Rails server at that point can't be used (or maybe the data would need to be wiped). At that point, the server is basically useless to us (and we shouldn't try troubleshooting the server during a streaming run if possible). Instead there are text files which override the blue score, blue name, gold score, and gold name. These appear to be sources in OBS. I haven't verified this yet.

4 video flow

There is a 4 port splitter in cab. Two go to the two monitors. The overhead monitor takes another slot, and the projector takes the final.

This is how our specific setup looks at PDX. Our stream box is the computer running OBS.

Sorry, your browser does not support SVG.

5 audio flow

Audio runs a weird loop. The mics wire into a mixer that runs to another mixer. It's necessary for the headphones to get both the output of the computer and the sidetone of the mics themselves. Sidetone is useful so speakers get a sense that the system is picking up their voice, and also gives them a sense of how loud they are being picked up.

Sorry, your browser does not support SVG.

This setup also provides lots of knobs to turn in terms of making sure the announcers can turn up their own voices and also turn up the input of what they are hearing from the game. This is done individually per the mixer and amp knobs available per input/output (mixer and amp, respectively). Turn the computer's audio up to 100% and announcers can turn down as needed.

6 pdx setup

This portion is specifically for the Portland setup at Ground Kontrol.

6.1 facilities

Generally we need:

  • A folding table
  • A rug to cover the cables that run between the cabs and the table
  • A power strip for all of the hardware
  • A laptop with Thunderbolt support (moderately recent Macs have one or two).

Thunderbolt ports are physically compatible with Mini Display. Thunderbolt ports can accept a Mini Display port, but it doesn't go the other way around.

A nice to have is the Thunderbolt display. It's a monitor that connections via - wait for it - Thunderbolt. The display has a webcam, and is a rather large screen that the commentators can easily share. It also leaves the computer free for doing score management, enqueuing commercials or transitions, and managing other parts of the production. Right now the Thunderbolt Display is on loan from Day Logan.

6.2 hardware

6.2.1 video

HDMI is provided as an input source via a computer's Thunderbolt port (I need to check, but I'm pretty sure it's not mini display port). This runs from the video splitter to the laptop.

hdmi-to-thunderbolt-input-01.jpg

When the device is working, you'll see a white light near the Thunderbolt connection.

hdmi-to-thunderbolt-input-activated-01.jpg

6.2.2 audio

Here's the amp as labeled in the diagram above:

audio-4-channel-amp-01.jpg

We could use an image that's in focus…

The 4 channel mixer:

audio-4-channel-mixer-01.jpg

These devices appear to be very similar, but they are very different. Basically the mixer combines a series of inputs into a single output, and the amp splits a single input into a series of outputs.

The mic mixer:

audio-mic-mixer-01.jpg

The mics connect directly to this.

6.2.3 all together now

pdx-working-setup-01.jpg

pdx-working-setup-02.jpg

6.2.4 anti trip trick

Ground Kontrol has seats that have these glowing strips on their corners and sides.

anti-cable-snag-trick-01.jpg

These strips slide up a little bit. There's a small channel between the strip and the side of the seats. You can stuff some of the cables you need to run (such as the cables for the webcams) into this channel. Here we've stuffed the cables in there as best we can with the strip still up.

anti-cable-snag-trick-03.jpg

Once the cables are in place, we can slide the strip back down, and it will hold the cables in place well enough to prevent feet from kicking the cables out or other snares from occurring. Here's the closed version with cables inserted:

anti-cable-snag-trick-04.jpg

6.3 software

[[]]

6.3.1 challonge

The URL we use is in the format kqpdx<MMDDYY>, where MM is the number of the month, DD the day of the month, and YY is the last two digits of the year. If today's date is <2017-11-30 Thu>, the URL will be kqpdx113017.

challonge-name-01.png

Here's a list of things to clicky or type:

  • Game: killer queen
  • Single Stage Tournament
  • Double Elimination
  • 1-2 Matches
  • Provide a list of participants
  • Save and Continue

Example:

challonge-setup-01.png

6.3.2 kq-tournament

  1. installation

    Much of this is covered in the repo's README.md. This assumes running on MacOS or Linux. Windows is probably doable, but that's beyond the scope of this document short of someone else's contribution.

    All of the instructions below assume you're running out of a terminal. On MacOS, you can run Terminal.app for this.

    Your environment needs the following:

    • rbenv or rvm so you can get on Ruby 2.2.3.
    • Postgres 9.4.5.0 (greater will probably work, but the 9 is likely important.
    • The bundler gem installed globally.
    • git
    • A Github account for cloning the repository.
    • Your public ssh key uploaded to github so you can clone the repository.

    TODO: Open source the repository. Matt Wire has generously agreed to do this, but it needs a little cleanup.

    Clone the repository with git, and then cd into it.

    git clone git@github.com:boxofmattwire/kq-tournament.git
    cd kq-tournament
    

    Here's an example database.yml. This should go in config/database.yml. Note that username and password is left out. You can add these in if you have accounts setup on your PostgreSQL server. The stock setup from Homebrew allows local connections with no credentials.

    development:
      adapter: postgresql
      database: kqt_dev
      pool: 5
      timeout: 5000
      encoding: utf8
    
    test:
      adapter: postgresql
      database: kqt_test
      pool: 5
      timeout: 5000
      encoding: utf8
    

    This creates the file for you:

    echo "
    development:
      adapter: postgresql
      database: kqt_dev
      pool: 5
      timeout: 5000
      encoding: utf8
    
    test:
      adapter: postgresql
      database: kqt_test
      pool: 5
      timeout: 5000
      encoding: utf8
    " > config/database.yml
    

    Install all of the gems the repo uses.

    bundle install
    

    Assuming a Homebrew installed postgres, the database server is started like so:

    pg_ctl -D /usr/local/var/postgres start
    

    It can be shut down with:

    pg_ctl -D /usr/local/var/postgres stop
    

    Create the initial database and its tables.

    bundle exec rake db:create db:migrate
    
  2. running

    Once you have everything setup and the database server is running:

    bundle exec rails server
    
  3. stopping

    Hold Ctrl and press C. This will return you to your normal shell prompt.

    Then shut down the database server:

    pg_ctl -D /usr/local/var/postgres stop
    
  4. operating

6.3.3 OBS

OBS (pronounced "awbz", short for Open Broadcaster Software) is what we use to do streaming. Setting up streaming to Twitch is pretty simple with OBS. All that's required is an API Key from Ground Kontrol. The API key is secret so it shouldn't be published anywhere. This means you have to talk to staff or ownership at Ground Kontrol in order to get it.

We still need to get a list of contacts that can provide the key.

  1. overlays
    1. chat
    2. video sources

      I noticed my laptop struggling with the video sources when pulling in max resolution. I switched them to 320x200 (or close to that), and it seems to work much better. I suspect this is a throughput issue with 4 video sources coming in to one little laptop. The cameras aren't really that high res and the area of the screen they are displayed in is very small. There was no noticeable loss in quality when switching to the lower res.

7 troubleshooting

7.1 The USB webcam freezes after transmitting for a little bit

We've found unplugging from the computer's end doesn't tend to fix it, but unplugging the USB cable from the webcam's side seems to fix it.

7.2 If the input is not recognized on the computer's end

The known recipe (not fool proof, but most of the work):

  1. Reboot the cabs with the computer's input (HDMI capture box).
  2. Reintroduce other slots (monitors x2 and the projector).