Streaming Setup

I’ve been asked a few times about my streaming setup, so I figured I’d document it a bit. As an overview, I stream Mac OS on a 2013 iMac with a Intel Core i5-4570 3.20GHz processor and 16GB of RAM. I use OBS Studio to stream. My timers run in LiveSplit inside a Windows 7 VM via VMWare Fusion with Unity. I have an Magewell USB Capture HDMI+ for HDMI capture. I utilize a FrameMeister Mini XRGB to upscale S-Video, Composite, and Component and convert them to HDMI. The FrameMeister, as well as the stock HDMI consoles, connect to a a Monoprice HDMI Switch, which then connects to the Magewell, with passthrough to my Asus VG248QE, which I play off of.  For my microphone, I use an M-Audio M-TRACK II USB audio interface, an Audio-Technica AT-2020 cardioid condenser microphone, and ATH-M30X studio monitors. I use Rogue Amoeba’s Loopback to process audio into OBS-capturable sources.

My consoles and their associated capture methods are as follows:

  • NES (NES-001 “Frontloader”) – Stock system, composite output upscaled by Framemeister and captured via Magewell
  • SNES (SNS-101 “Mini”) – Modified by Voultar to output YPrPb via HD Retrovision cables, upscaled by Framemeister and captured via Magewell
  • Nintendo 64 (NUS-001) – Stock system, S-Video upscaled by Framemeister and captured via Magewell
  • Gamecube (DOL-001) – Stock system, HDMI output via ZeldaXPro GCN Plug’n’Play 3.0 to Framemeister (passthrough) and captured via Magewell
    • This also includes the Gameboy Player for Game Boy, Game Boy Color, and Game Boy Advance games
  • Wii (RVL-001) – Stock system, Wii2HDMI adapter outputs 480p HDMI to Framemeister (passthrough only) and captured by Magewell
  • Wii U (WUP-101(02)) – Stock system, HDMI captured by Magewell
  • Switch (HAC-001) – Stock system, HDMI captured by Magewell
  • NES Classic (CLV-001) – Stock hardware, modified firmware to allow more games, HDMI captured by Magewell
  • SNES Classic (CLV-301) – Stock hardware, modified firmware to allow more games, HDMI captured by Magewell

The setup looks a bit like this:

Logically, it looks like this:

The M-Audio MTRACK II audio interface allows for a studio microphone to be plugged in. For most streamers, a simpler setup such as a Blue Yeti, but since I also record music, the full audio interface is a requirement.  I use input 2 for the AT-2020 microphone, and input 1 for line-in audio such as music from my iPhone, or my guitar during music streams. It allows me to mix what I hear in my ear, blending the input from the mic and/or phone with the audio from the capture card, or removing the capture card audio altogether if all I want is music.


OBS Setup

I’ve gone through extensive lengths to be able to stream via MacOS. The biggest challenges have been:

  1. Getting HDMI capture for all consoles – This required obtaining a Framemeister which can upscale composite, s-video, and component sources, as well as having 2 HDMI passthroughs. It also required getting a MacOS capable capture card, for which I chose the Magewell.
  2. Getting a split timer to work – LiveSplit is the best choice for splits, bar none. Unfortunately, at this time, it runs in Windows. I wasn’t successful getting it to run via Wine, so I chose to utilize VMware Fusion to run LiveSplit in Unity, which I can then window capture in OBS. I use a bare Win7 VM with nothing else installed, assigned 4GB RAM, and installed LiveSplit and some fonts.

In OBS, I start with a canvas size of 1280×720 for everything I stream. The TV I play on is 720p, so that is what I capture in. For retro gaming, I prefer 4:3 aspect ratio, so I utilize the left-most 320 horizontal pixels for splits/camera/chat/etc., and the right-most 960 horizontal pixels for game feed, allowing for a 960×720 (4:3) feed.

For my modern scenes (Wii U, Switch), it is fairly no-frills: add the Magewell as a video capture device, capturing at 720p. It will be 1280×720 natively, I position that at 0,0, and that provides the video. I use Loopback to grab the audio from the Magewell to present to OBS, so I add my Magewell loopback device as an audio source.

For my Retro scenes, I prefer to overlay my side elements (Livesplit, etc.) over a background. So I start by choosing a background, cropping it to 320×720, and inserting it at 0,0 on the canvas (Edit Transform can be used for precise positioning). I have a selection of backgrounds I use, so I hide them all and unhide the one I wish to use for this particular stream. I then place my side elements where I want them to be, and use Color Key to key out (think “greenscreen”) a specific color, to allow my splits, chat, and input display to “float” over the background. Once everything is in place where I want it, I lock the element in OBS so I don’t accidentally drag/resize it. Once the sidebar is done, I bring in my capture.

For HDMI capture of Retro systems, first I configure my Framemeister to properly rescale the 240p signal to 720p. I utilize FirebrandX profiles to configure the Framemeister. Once I have the proper picture from the Framemeister passed through to my Magewell, I simply add it as a video capture device in OBS. I apply a crop filter to eliminate the extra pixels on the side (the height should be a perfect 720 from the Framemeister), and rescale to 960×720. I then use Edit Transform to place it at 320,0 exactly and confirm the element size is still 960×720. I again use Loopback to capture the Magewell audio.  I prefer to listen to game audio through headphones, so Magewell also passes audio through to my headphones. The output looks like this: