#!/bin/zsh # Record audio directly to OGG timestamp=$(date +%F_%R) basename="$1_$timestamp" if [[ -z $2 ]]; then quality=0 ; else quality=$2 ; fi record_cmd="arecord" record_opts="-c 2 -f dat -M -q" encode_cmd="oggenc" encode_opts="-q $quality -Q" esufx="ogg" start_mixer='echo Unmute mixer && amixer sset Mic,0 unmute 100% | grep -i playback' stop_mixer='echo Mute mixer && amixer sset Mic,0 mute | grep -i playback' if [[ -e $basename.$esufx ]]; then print "File $basename.$esufx exists, aborting!" exit 1 else eval $start_mixer echo "Recording started, saving to '$basename.$esufx'." trap "" INT # abort gracefully with Ctrl-C eval "$record_cmd $record_opts | $encode_cmd $encode_opts - -o $basename.$esufx" eval $stop_mixer echo "Recording stopped!" fi