From d5170e8cd387f16c97a506b18dbe75ba1828c7e9 Mon Sep 17 00:00:00 2001
From: Sacha Chua <sacha@sachachua.com>
Date: Tue, 23 Nov 2021 23:04:18 -0500
Subject: Add ALSA notes

---
 playbook.md | 43 +++++++++++++++++++++++++++++++++++++------
 1 file changed, 37 insertions(+), 6 deletions(-)

diff --git a/playbook.md b/playbook.md
index 6b16988a..d4f8439b 100644
--- a/playbook.md
+++ b/playbook.md
@@ -33,6 +33,7 @@
         -   [live0 can't handle the load or is close to network transfer limit](#network)
 -   [Before the conference](#before)
     -   [Help speakers with tech checks](#tech-checks)
+    -   [Experiment with setup to allow MPV / BBB sound isolation](#org76b68a3)
 
 <!-- This file was automatically generated from playbook.org. Instead of editing the .md, please edit the .org and republish. Thanks! -->
 
@@ -213,19 +214,20 @@
 -   HOST: Display getting-ready message
 -   STREAM: Set up BBB view in organizer room to have HOST's webcam maximized
 -   STREAM: Start streaming from OBS to local Icecast, relay to live0 icecast
--   CHECK: Confirm that the stream is live at <https://live.emacsconf.org/main.webm>
+-   HOST: Confirm that the stream is live at <https://live.emacsconf.org/main.webm>
 -   STREAM: Update the status page to say that the stream is live
 -   CHECK: Start low-resolution stream, confirm at <https://live.emacsconf.org/main-480p.webm>
     Call this on live0 with $CONF480PASS as the first parameter. The Icecast configuration is on `live0` at `/etc/icecast2/icecast.xml`.
     
         PASS=$1
         while true; do ffmpeg -loglevel 24 -f webm -reconnect_at_eof 1 -reconnect_streamed 1  -re -i http://localhost:8000/main.webm -vf scale=854:480 -f webm -c:a copy -b:v 500k -maxrate 1M -bufsize 1M  -content_type video/webm -c:v libvpx icecast://ec2020main480pmu:$PASS@localhost:8000/main-480p.webm; done
--   CHECK: Start Youtube stream. Call this with $YOUTUBE1PASS, $YOUTUBE2PASS, or $TOOBNIX as the parameter
+-   CHECK: Start Youtube and Toobnix streams. Call this with $YOUTUBE1PASS, $YOUTUBE2PASS, or $TOOBNIX as the parameter
     
         MOUNT=$1
         while true; do ffmpeg -loglevel 24 -i http://localhost:8000/main.webm -cluster_size_limit 2M -cluster_time_limit 5100 -b:v 1M -crf 30 -g 125 -deadline good -threads 4 -vcodec libx264 -acodec libmp3lame -f flv $MOUNT; done
--   CHECK: Verify the alternate streams and the load on live0.
--   CHECK: Verify with #emacsconf that the stream is active
+-   CHECK: Verify YouTube and Toobnix streams and the CPU load on live0.
+-   HOST: Verify with #emacsconf that the stream is active.
+-   CHECK: Start alternate stream on second laptop. Point to main stream for now.
 
 
 <a id="talk"></a>
@@ -329,7 +331,8 @@ Exception: [CHECK is unavailable](#check-gone)
     -   Mark it as public.
     -   Add it to the EmacsConf 2021 playlist.
 -   [? live sections ]
-    -   CHECK does a rough-cut of the recording from ${dump} to get the last X minutes or by time range
+    -   CHECK does a rough-cut of the recording from ${dump} to get the last X minutes or by time range. There's about a 1-2 minute delay.
+        Ex: `(kill-new (conf-dump-get "alt" "10:24" "10:30" "qa_"))`
     -   When there's an opportunity to do so:
         -   CHECK finetunes the rough-cut recording (trim start and end) and posts it to:
             -   media.emacsconf.org/2021
@@ -345,6 +348,7 @@ Exceptions:
 -   [Speaker has not checked in](#missing)
 
 -   [? live]
+    -   CHECK-alternate joins the BBB room.
     -   HOST joins the BBB room
     -   HOST starts recording in BBB or confirms that it's already recording
     -   STREAM joins meeting and gives go-ahead
@@ -356,7 +360,7 @@ Exceptions:
         -   HOST adds note to IRC/Etherpad that speakers can answer in any order, skip questions, answer afterwards, etc.
     -   [? Q&A needs to be wrapped up]
         -   HOST writes in Etherpad/IRC or nudges speaker verbally.
-    -   CHECK notes the time that the live Q&A finished.
+    -   CHECK notes the time that the live Q&A finished and switches back to the main stream on CHECK-alternate.
 -   [? IRC/pad]
     -   HOST and STREAM switch to organizer BBB meeting (room S)
     -   HOST describes Q&A method and shows it on the screen
@@ -592,3 +596,30 @@ Exceptions:
 -   Encourage webcam for Q&A, although make it clear that it's totally optional
 -   Possible picture-in-picture approach to maximize screen real estate
 
+
+<a id="org76b68a3"></a>
+
+## Experiment with setup to allow MPV / BBB sound isolation
+
+Set MIC and OUTPUT appropriately.
+
+    MIC=alsa_input.usb-046d_0819_A68D6BE0-02.mono-fallback
+    OUTPUT=alsa_output.pci-0000_00_1b.0.analog-stereo
+    if [ "$1" == "-u" ]; then
+      pactl unload-module module-loopback
+      pactl unload-module module-null-sink
+    else
+      pacmd load-module module-null-sink sink_name=recording sink_properties=device.description=recording channels=2
+      pacmd load-module module-null-sink sink_name=mpv sink_properties=device.description=mpv
+      pacmd load-module module-loopback source=$MIC sink=recording
+      pacmd load-module module-loopback source=mpv.monitor sink=recording
+      pacmd load-module module-loopback source=recording.monitor sink=$OUTPUT
+    fi
+
+You can probably then use `pavucontrol` (choose All Streams instead of
+Applications on the Playback tab) or something like the following to
+redirect the mpv output to the mpv sink.
+
+    pacmd list-sink-inputs  # notice the
+    pacmd move-sink-input 1 mpv
+
-- 
cgit v1.2.3