nerdletter-cypher/scripts/nerdletter_numbers_station_poacher3.sh

56 lines
2.2 KiB
Bash
Raw Normal View History

#!/bin/bash
# NERDLETTER NUMBERS STATION — SIMPLE & RELIABLE SEQUENCE
# Poacher intro first → Voice → Static continuous underneath
MESSAGE="$1"
PAGE="$2"
EPISODE="${3:-01}"
OUTFILE="nerdletter_secret_${EPISODE}_page${PAGE}.mp4"
echo "=== NERDLETTER SECRET TRANSMISSION #${EPISODE} ==="
# 1. Spaced letters + text
SPACED=$(echo "$MESSAGE" | sed 's/\([A-Z]\)/\1 /g' | sed 's/ / /g')
TEXT_TO_SPEAK="NERDLETTER SECRET MESSAGE ${EPISODE}. USE DAY BOOK PAGE ${PAGE}. ${SPACED}"
echo "$TEXT_TO_SPEAK" | espeak-ng -ven+f3 -s82 -k50 -a 200 -w voice.wav --punct="" 2>/dev/null
# 2. Make sure assets exist
if [ ! -f poacher_intro.wav ]; then
echo "❌ Missing poacher_intro.wav — add a 12-15 second clip"
exit 1
fi
if [ ! -f static.wav ]; then
echo "Generating static..."
ffmpeg -f lavfi -i "anoisesrc=d=40:c=0.25" -af "highpass=f=2800,lowpass=f=8500,volume=0.22" -t 40 static.wav -y 2>/dev/null
fi
# 3. Simple sequential mix: Poacher → Voice, with static under both
ffmpeg -i poacher_intro.wav -i voice.wav -i static.wav \
-filter_complex "
[0:a]volume=0.72[poach];
[1:a]volume=1.05[voice];
[2:a]volume=0.25[stat];
[poach][stat]amix=duration=first[a1];
[voice][stat]amix=duration=first[a2];
[a1][a2]concat=v=0:a=1[out]
" -map "[out]" -c:a pcm_s16le -y final_audio.wav 2>/dev/null
# 4. Video
DURATION=32
ffmpeg -f lavfi -i color=black:s=1280x720:d=$DURATION -c:v libx264 -t $DURATION -pix_fmt yuv420p temp_bg.mp4 -y
ffmpeg -i temp_bg.mp4 -i final_audio.wav \
-vf "drawtext=font='Courier':fontsize=50:fontcolor=green@0.95:text='NERDLETTER SECRET TRANSMISSION #${EPISODE}':x=(w-text_w)/2:y=80, \
drawtext=font='Courier':fontsize=36:fontcolor=green@0.85:text='USE DAY BOOK PAGE ${PAGE}':x=(w-text_w)/2:y=170, \
drawtext=font='Courier':fontsize=44:fontcolor=lime@0.95:text='${MESSAGE}':x=(w-text_w)/2:y=270:box=1:boxcolor=black@0.75:boxborderw=15, \
drawtext=font='Courier':fontsize=30:fontcolor=green@0.75:text='DESTROY PAGE AFTER USE — SUBSCRIBERS ONLY':x=(w-text_w)/2:y=640" \
-c:v libx264 -c:a aac -shortest "$OUTFILE" -y
# Cleanup
rm -f voice.wav final_audio.wav temp_bg.mp4
echo "✅ Done! → ${OUTFILE}"
echo "Sequence: Poacher tune → Voice announcement, static throughout"