commit aa1d9eb8b7e68f0a75c162e0a6b359741053ecca Author: Théophile Clet Date: Thu Apr 16 21:38:49 2020 +0200 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ff813b9 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +_book/* diff --git a/GLOSSARY.md b/GLOSSARY.md new file mode 100644 index 0000000..8538878 --- /dev/null +++ b/GLOSSARY.md @@ -0,0 +1,2 @@ +## DAW +Your audio software (Ablton Live, Cubase, Logic, Reaper, Bitwig...). More preciselly, a digital audio workstation (DAW) is an electronic device or application software used for recording, editing and producing audio files. *[Source](https://en.wikipedia.org/wiki/Digital_audio_workstation)* diff --git a/README.md b/README.md new file mode 100644 index 0000000..4861fef --- /dev/null +++ b/README.md @@ -0,0 +1,28 @@ +# A guide to live stream musical performances from home + +This guide is intended for people wanting to live stream a musical performance from home. It provides informations for most kind of setups, from purely acoustic performances to more complex cases implying a DAW, an external sound card with connected instruments and mics. + +It focuses mainly on audio configuration as it might be the most tricky part depending on your setup, although it also includes walkthroughs for all the steps from installing a streaming software to actually start streaming. + +## Prerequisites + +- Knowing what you want to play and the involved equipment +- A computer running **Windows** or **macOS**[^1] +- A bit of free time to read this guide carefully + +We will use [OBS Studio](https://obsproject.com/) as our streaming software but you are not required to know how to use it. + +## How to use this guide? +Start by.. + +Then... + +And voilà. + +## Why I wrote this guide? +It began during the COVID-19 lockdown. During this period we saw many initiatives (online festivals, groups, personal projects) aiming to live stream artists and musicians performing from their home. +I got somehow involved in some of these projects and saw the lack of information regarding the audio configuration, which can differ A LOT depending on the musical project itself. So I tried to find a solution for most cases and sorting everything properly allowing people to find which case fit their needs and how to do it. + +--- + +[^1]Sorry dear Linux user, I have no specific instructions for you, but you might still find this guide useful! diff --git a/SUMMARY.md b/SUMMARY.md new file mode 100644 index 0000000..68ff7db --- /dev/null +++ b/SUMMARY.md @@ -0,0 +1,16 @@ +# Summary + +* [Introduction](README.md) +* [1. Which audio setup do I use?](setup/README.md) + * [Acoustic/mic-captured performance](setup/acoustic.md) + * [DAW without external audio interface](setup/acoustic.md) + * [DAW with an external audio interface](setup/acoustic.md) +* [2. A super fast introduction to OBS](obs.md) +* [3. Video configuration](video.md) +* [4. Audio configuration](audio/README.md) + * [Case 1: OBS + Mic/Aux Source](audio/micaux.md) + * [Case 2: OBS + Desktop Audio Source](audio/desktopaudio.md) + * [Case 3: OBS + ReaStream VST (Windows only)](audio/reastream.md) + * [Case 4: OBS + OBS-ASIO (Windows only)](audio/obsasio.md) + * [Case 5: OBS + OBS-ASIO + ASIO mixer (Windows only)](audio/asiomixer.md) + * [Case 6: OBS + BlackHole (macOS only)](audio/blackhole.md) diff --git a/audio/README.md b/audio/README.md new file mode 100644 index 0000000..a6e9d01 --- /dev/null +++ b/audio/README.md @@ -0,0 +1,10 @@ +# 4. Audio configuration + +**Please read carefully [1. Which audio setup do I use?](./setup/README.md) to know which of the following case(s) will match your setup.** + +- [Case 1: OBS + Mic/Aux source](micaux.md) +- [Case 2: OBS + Desktop Audio Source](desktopaudio.md) +- [Case 3: OBS + ReaStream VST (Windows only)](reastream.md) +- [Case 4: OBS + OBS-ASIO (Windows only)](obsasio.md) +- [Case 5: OBS + OBS-ASIO + ASIO mixer (Windows only)](asiomixer.md) +- [Case 6: OBS + BlackHole (macOS only)](blackhole.md) diff --git a/audio/asiomixer.md b/audio/asiomixer.md new file mode 100644 index 0000000..70068e3 --- /dev/null +++ b/audio/asiomixer.md @@ -0,0 +1,12 @@ +# Case 5: OBS + OBS-ASIO + ASIO mixer (Windows only) + +You are in Case 5 if: +> You are desperate. + +This is by far the hardest case of all, but also the most documented online. I honestly could not make one of the following solutions work properly. It always resulted in unplayable latency or audio crackles. I think it should work as expected (with very few extra latency) if you use an external sound card as an output only (your performance does not require external microphone or instruments), as you can see in some tutorials on Youtube, but otherwise it just did not worked for me. As I consider ReaStream (see Case 3) as a way more effective solution for now, I will simply list different solutions I found and I will let you look by yourself for some proper tutorials online. + +- [VoiceMeeter Banana](https://download.vb-audio.com/Download_CABLE/VoicemeeterProSetup.exe) (free) is maybe the most user friendly and most documented solution. +- [Asio Link Pro](https://give.academy/posts/2018/03/02/AsioLinkPro/) (free) should be the most powerful and flexible solution, bu also the hardest to set up (thanks to a 20 years old GUI). [For the record](https://give.academy/posts/2018/03/02/AsioLinkPro/), it's an old piece of software which you had to pay for. The developer passed away a few years ago so nobody could buy it anymore. In 2019 his nephew decided to create a "legit" crack allowing anyone to use Asio Link Pro for free. +- [Jack Audio](https://jackaudio.org/downloads/) should be actually simpler to configure even though it does not provide a GUI (graphical user interface). All is done with command lines, but you need very few to get your setup working properly. + +If all these solutions seem too hard to get through, just go with Case 3. diff --git a/audio/blackhole.md b/audio/blackhole.md new file mode 100644 index 0000000..0fa045e --- /dev/null +++ b/audio/blackhole.md @@ -0,0 +1,25 @@ +# Case 6: OBS + BlackHole (macOS only) + +You are in Case 6 if: +> You use macOS and an audio software, and maybe an external sound card with no built-in loopback feature. + +BlackHole is the new "virtual audio device for macOS" replacement for SoundFlower. It works the same but is likely more stable and still in development. If you still want SoundFlower, look [here](https://github.com/mattingalls/Soundflower), then instructions are the same than for BlackHole. + +1. Download and install BlackHole following [official instructions](https://github.com/ExistentialAudio/BlackHole/wiki/Installation) (easy) + +2. Then open "Audio Midi Setup" app located in Applications/Utility. Once opened, click "Window" in the menu bar, then "Show audio devices". + +3. Click the "+" in the bottom left, then "Add a multi-output device" + +4. Click on the multi-output device you just created, then, depending on your case: + - If you uses no external sound card, tick the "Use" box for **each** of the following devices: + - "BlackHole" (will be sent to OBS) + - The built-in output you will hear you back through. + - If you uses an external sound card, select it in the "Master device" (or "Main device") field at the top of the window, then tick the "Use" box for the following devices: + - "BlackHole" (will be sent to OBS) + - The desired device you will hear you back through (should be your external sound card) + - Even if you don't use it, tick your computer built-in output (normally not necessary but it's a workaround to face some issues, as stated [here](https://github.com/ExistentialAudio/BlackHole/wiki/Multi-Output-Device)). + +5. In your audio software, select the Multi-output device you just created as your audio output. +6. In OBS, open the Preferences/Settings, panel, go to the Audio tab, and select BlackHole as your Desktop Audio device. Click OK. +7. You should then see the corresponding VU-meter in the Audio mixer reacting to the audio sent by your audio software. You're done! Ready for part 3. diff --git a/audio/desktopaudio.md b/audio/desktopaudio.md new file mode 100644 index 0000000..b1e5ed7 --- /dev/null +++ b/audio/desktopaudio.md @@ -0,0 +1,16 @@ +# Case 2: OBS + Desktop Audio source + +You are into Case 2 if: +> You use Windows with an audio software and MME/DirectX drivers, with or without external sound card. + +It is as simple as case 1 but with a little variation. + +1. Open your audio software, make it play some sounds, and remember the audio output it's using + +2. Open OBS and go to its Preferences (Settings panel), then into the Audio tab. + +3. In the Devices / Desktop Audio drop-down list select the same output as your audio software. + +4. Click OK then in the OBS audio mixer you should see the VU-meter of the "Desktop Audio" source moving relatively to the sound your audio software is outputting. Sometimes it seems a big buggy and you need to click the gear ⚙️ of the Desktop Audio source, click Properties, then re-select the same output you just selected in the previous step. You can also try restarting OBS (don't worry, it will automatically save your session). + +5. Awesome, you are now ready to go to part 3! diff --git a/audio/micaux.md b/audio/micaux.md new file mode 100644 index 0000000..d66b84c --- /dev/null +++ b/audio/micaux.md @@ -0,0 +1,30 @@ +# Case 1: OBS + Mic/Aux Source + +You are into Case 1 if: +> - You just want to you a mic to capture you performance +> - You use a USB mic, a built-in mic, the webcam's built-in mic or the line input of your computer. +> - Your mic is connected to an external sound card +> - You use macOS +> - You use Windows and the MME/DirextX drivers for your sound card +> - You use macOS with an audio software and +> - An external sound card with multiple initialization from multiple applications and a built-in loop-back feature +> - An external sound card compatible with multiple initialization from multiple application, and enough available outputs and inputs +> - Two external sound cards +> - You use Windows with an audio software and +> - a secondary external sound card with MME/DirectX drivers as a looback input, or +> - an external sound card with ASIO drivers and you loop your audio back into your built-in computer line-input. + +If your whole audio come from a microphone, it may be already +automatically selected as Mic/Aux source in the audio mixer. + +If not, you should be able to select it or any appropriate (non ASIO) +audio input into OBS Preferences \> "Audio" tab \> "Mic/auxiliary Audio" +drop-down list. + +You can also click the gear near-by the Mic/Aux source in the Audio +Mixer, then click properties and select your correct or audio input in +the "Device" drop-down list. + +You should then see the Mix/Aux VU-meter reacting to the captured audio. +If so your audio is properly configured, good! You are now ready for +part 3. diff --git a/audio/obsasio.md b/audio/obsasio.md new file mode 100644 index 0000000..38dbfec --- /dev/null +++ b/audio/obsasio.md @@ -0,0 +1,23 @@ +# Case 4: OBS + OBS-ASIO (Windows only) + +You are in case 4 if: +> You uses Windows with ASIO drivers, whether using or not an audio software and/or an external sound card. + +1. Check the version of OBS you are using: in OBS, click "Help" in the menu bar, then "About. The version number is just below the "OBS Studio" label. + +2. Close OBS, then download [OBS-ASIO](https://github.com/Andersama/obs-asio). Here are the direct download link depending on your OBS Studio version: [25.x.x](https://github.com/Andersama/obs-asio/releases/download/v2.0.2/obs-asio-installer_2.0.2.exe) and above (preferred), [24.x.x](https://github.com/Andersama/obs-asio/releases/download/2.0.0/obs-asio-installer_2.0.0_obs24.exe) or [23.x.x](https://github.com/Andersama/obs-asio/releases/download/2.0.0/obs-asio-installer_2.0.0_obs23.exe). + +3. Then install the plugin. + +4. Re-open OBS. + +5. Click the "+" in the Sources window, and select "ASIO" to create a new ASIO source. Give it the name you want and click OK. + +6. In the appearing window, choose your ASIO device: + - If you use an external sound card with a built-in loopback feature or if you physically hard-wired an audio input of your external sound car back into one of its inputs, then choose this external sound cards driver + - If you use two external sound cards, choose the secondary sound cards driver (the one in which you looped back your primary external sound cards output) + - If you created a virtual ASIO input device using VoiceMeeter Banana, Asio Link Pro or Jack Audio, ReaRoute, choose the corresponding ASIO driver. + +7. Choose "Stereo" in the Format field +8. In OBS Channels 1 and 2 (stands for left and right channels), select the appropriate ASIO inputs you looped your audio back into. +9. Click OK then in the OBS Audio Mixer you should see the VU-meter of the created ASIO source moving relatively to the sound your audio software is outputting. If so, you are good to go to part 3! diff --git a/audio/reastream.md b/audio/reastream.md new file mode 100644 index 0000000..bbfbed1 --- /dev/null +++ b/audio/reastream.md @@ -0,0 +1,44 @@ +# Case 3: OBS + ReaStream VST (Windows only) + +You are into Case 3 if: +> You use Windows with an audio software and ASIO drivers, with or without external sound card. + +This case work for any kind of ASIO driver, regardless the use of an external sound card or not. + +1. ReaStream is included in a suite of free plugins called ReaPlugs VST FX Suite you can download [here](https://www.reaper.fm/reaplugs/). Choose the 32bit or 64bit version depending on your audio software (Ableton Live 10 is 64bit only, other might depend). + +2. Run the installer. In the "Choose Components" screen, you only need ReaStream (stereo) but you can select other plugins if you want to try them. + +3. In the "Destination Folder", make sure you are using one of the [following](https://github.com/obsproject/obs-studio/wiki/Filters-Guide#vst-plugin) (see list below), otherwise the VST wont be available in OBS. Click Install and you're done. If you usually use a custom folder for your VSTs, just re-install ReaStream to your custom folder once you got it installed in one recognized by OBS: + - C:/Program Files/Steinberg/VstPlugins/ + - C:/Program Files/Common Files/Steinberg/Shared Components/ + - C:/Program Files/Common Files/VST2 + - C:/Program Files/Common Files/VSTPlugins/ + - C:/Program Files/VSTPlugins/ + +4. Open your audio software and add the "reastream-standalone" VST plugin on your master track. You should see a firewall alert saying that the plugin want to access your network. Just allow it on both private and public networks, just in case, and click OK. Now on the plug-ins interface, select "Send audio/MIDI" then choose/type "\*local broadcast" (without quotation marks) in the IP field. + +5. Open OBS, click the "+" in the Sources window and select "Audio **input** capture". Give it any name you want, and click OK. + +6. As Device, choose an audio input you are NOT using. We actually don't care of the audio input itself, as we want the audio coming from the VST we will add in the next steps. So just use an unused audio input. If you can only select some used inputs (such as your default microphone), then is is still OK, we will figure it out later. Click OK. + +7. Now right click on your newly created audio input capture source, and select "Filters". + +8. If you had no unused audio input available, you want to turn down the volume of your used audio input without turning down the volume of the OBS audio source itself. To do so, add two "Gain" Filters and set them to -30dB. + +9. Ad a new audio filter by clicking the +, and select "VST 2.x Plug-in". Give it the name you want and click OK. + +10. In the VST 2.x Plug-in drop-down list, select "reastream-standalone", then click "Open Plug-in Interface". Windows should prompt you again the firewall security message. Just allow everything one more time. + +11. Make sure the Identifier is the same as the one you set in Ableton ("default" by default), and you're done. + +12. Now if you play some sound in your audio software you should get it into your OBS audio input capture device. If so, you're good to go to part 3. If not, see below for some troubleshooting. + +What to do if ReaStream in OBS do not receive sound from my audio software? + +- Make sure you are using the same sample rate (44.1Khz or 48KHz) in your audio software and OBS (Settings \> Audio tab) +- Right click the Audio input capture, open "Properties" then select another input device. For some reasons, it might not work with some devices (especially the "Default" one). +- In ReaStream in your audio software, replace "\* local broadcast" by "127.0.0.1". It is a special IP address saying "this very own computer". +- Try changing to another identifier in both OBS and your audio software. Sometimes, just clicking in the Identifier field and hitting "Enter" can re-instanciate the plugin an make it work. + +What to do you it seem like there is some latency between the received audio in OBS and the captured video? Just check the "**delay between your video and audio**" point in the "Troubleshooting audio issues" part below. diff --git a/obs.md b/obs.md new file mode 100644 index 0000000..b8f2c56 --- /dev/null +++ b/obs.md @@ -0,0 +1 @@ +# A super fast introduction to OBS diff --git a/setup/README.md b/setup/README.md new file mode 100644 index 0000000..df04c4e --- /dev/null +++ b/setup/README.md @@ -0,0 +1,6 @@ +# Which audio setup do I use? + +First you need to determine the kind of audio setup you are using. This will lead you to the appropriate instructions to prepare your live stream. + +I identified three kinds of setup: +- [My performance is purely acoustic and/or I just need one mic to capture it](acoustic.md) diff --git a/setup/acoustic.md b/setup/acoustic.md new file mode 100644 index 0000000..2ffd5c8 --- /dev/null +++ b/setup/acoustic.md @@ -0,0 +1,17 @@ +#My performance is purely acoustic and/or I just need one mic to capture it + +Using your **computer with [OBS](https://obsproject.com/download)**, a free and open-source software available for Windows macOS and Linux. This is the way to go you you have a microphone that requires to be connected to your computer. It can be the built-in microphone of your webcam, an external microphone you plug into the mic in, or a USB microphone, or even an XLR microphone connected to your external sound card. + +- If you use the **built-in mic of your computer** or your **webcam**, the + **build-in mic input** of your computer or an **USB microphone**, refer + to [Case 1: OBS + Mic/Aux source]() +- If you have to **plug your microphone into your external audio interface**: + + - **macOS user**: refer to [Case 1: OBS + Mic/Aux source]() + + - **Windows user**: + + - External sound card with **MME/DirectX drivers**: [Case 2: + OBS + Desktop Audio source] + - External sound card with **ASIO drivers**: [Case 4: OBS + + OBS-ASIO]() diff --git a/video.md b/video.md new file mode 100644 index 0000000..f7474d5 --- /dev/null +++ b/video.md @@ -0,0 +1 @@ +# Video configuration