#!/bin/bash
# mpvkaraoke: reproductor de karaoke alternativo, sin python.
# CDG -> mpv (decodifica CD+G via ffmpeg) + su audio pareado (mp3/ogg/wav)
# KAR/MID -> timidity con interfaz ncurses (muestra la letra) dentro de xterm
# rungame.sh lo invoca como: mpvkaraoke [opciones] "<archivo>"
# La tecla ESC sale del reproductor, igual que en los demas emuladores.
file="${@: -1}"
if [ $# -gt 1 ]; then
	opts=("${@:1:$#-1}")
else
	opts=()
fi
ext="${file##*.}"
ext="${ext,,}"
base="${file%.*}"

#bindings de mpv: ESC = salir (por defecto ESC solo saca del fullscreen)
mpvconf="$HOME/.armanager/mpvkaraoke.input.conf"
if [ ! -f "$mpvconf" ]; then
	mkdir -p "$HOME/.armanager"
	echo "ESC quit" > "$mpvconf"
fi

case "$ext" in
	cdg)
		audio=""
		for e in mp3 ogg wav MP3 OGG WAV; do
			if [ -f "$base.$e" ]; then
				audio="$base.$e"
				break
			fi
		done
		if [ -n "$audio" ]; then
			exec mpv --fs --input-conf="$mpvconf" "${opts[@]}" --audio-file="$audio" "$file"
		else
			exec mpv --fs --input-conf="$mpvconf" "${opts[@]}" "$file"
		fi
		;;
	kar|mid)
		#timidity sale con "q": el xterm traduce ESC a "q" para tener la misma salida
		exec xterm -maximized -xrm 'XTerm*VT100.translations: #override <Key>Escape: string("q")' -e timidity -in "${opts[@]}" "$file"
		;;
	*)
		exec mpv --fs --input-conf="$mpvconf" "${opts[@]}" "$file"
		;;
esac
